Состояние RDF в Ruby

Мне интересно, какая текущая поддержка существует в Ruby для семантических веб-технологий. Есть ли хорошие варианты RDF? Похоже, что последние опросы были проведены около 2007 года (http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/). Является ли Redland RDF wrappers лучшим способом для поддержки RDF - все другие проекты, упомянутые в этой стареющей статье, кажутся неподдерживаемыми или отброшенными. Возможно ли, что Ruby - плохой выбор, если он будет заниматься проектами, относящимися к семантической сети?

Ответы

Ответ 1

Эй, Яалто, я автор статьи, которую вы упомянули. Я думал о проведении нового опроса.

Немного изменилось с тех пор, как я сделал оригинальный опрос, но не так много. Вот несколько вещей, которые следует учитывать:

  • ActiveRDF, похоже, пошел по пути к конкретной библиотеке JRuby. Некоторые из их адаптеров предназначены для Java-библиотек. Не обязательно проблема, но что-то, о чем нужно знать.
  • У Reddy только граф с памятью. Опять же, не обязательно проблема. Я бы не преминул Reddy за это (преждевременная оптимизация), но я также не мечтал бы хранить миллиарды троек.
  • Недавно я нашел новый набор привязок Ruby для Redland, называемый RedLeaf. Не уверен, насколько это зрело, но похоже, что Майкл работал над ним около года. Я не слышал об этом до недавнего времени, потому что он вне сети (без проекта RubyForge или GitHub).
  • Я создал проект на GitHub под названием RubyRDF (github.com/pjstadig/rubyrdf/tree/master). В нем нет тонны документации, но она в основном функциональна. Он имеет адаптер, совместимый с Sesame, с поддержкой транзакций. У меня все еще есть идеи для будущего направления, и сделать его более функциональным, но не очень толстым, чтобы работать над ним. Я бы приветствовал любые вклады.

Нижняя строка: Если JRuby для вас не проблема, перейдите в ActiveRDF, это самый полный и зрелый. Если граф, основанный на памяти, не является проблемой, то следующим наиболее зрелым, вероятно, является Reddy.

Ответ 2

Я только что написал статью новую обзорную статью о Ruby и RDF. Некоторые из моих выводов:

  • Там огромное количество операций, связанных с RDF.rb, с большим количеством адаптеров баз данных, плагинов сериализации/десериализации и интерфейсов с другими библиотеки. Большинство последних объектных карт были созданы поверх RDF.rb тоже.
  • В популярной библиотеке RDF Redland есть Ruby bindings, и она активно поддерживается.
  • ActiveRDF был предишером для сопоставления объектов для RDF, но он больше не поддерживается активно.
  • Единственным недавним активным объектом mapper на данный момент является Spira.
  • Ни один из объектных карт не использует ActiveModel. Это было бы очень гладко, потому что это обеспечило бы гораздо более глубокую интеграцию между RDF и Rails.

Есть также некоторые интересные последующие комментарии авторов RDF.rb и Spira. В частности, Бен Лавендер много думал о том, как санировать карту RDF на объекты Ruby.

Ответ 3

Лично я пошел на RDF.rb, так как их веб-сайт имел документацию ОК, и было легко начать с использования учебников для блога.

ActiveRDF выглядит как более крупный проект, но их вики не работают (на самом деле главная страница ссылается на копию вики на archive.com) - и весь пример говорит о запросах SPARQL.

Вот простой пример тройного поиска, извинения за глупый синтаксис, поскольку это был мой первый Ruby script:

require 'rubygems'
require 'rdf'
require 'rdf/raptor'

scufl2 = RDF::Vocabulary.new("http://ns.taverna.org.uk/2010/scufl2/ontology/")
dc = RDF::Vocabulary.new("http://purl.org/dc/elements/1.1/")

graph = RDF::Graph.load("../resources/workflows/example.ttl")
graph.query([nil, scufl2.workflow, nil]) do |bundle,p,workflow|
  graph.query([workflow, scufl2.name, nil]) do |wf,p,workflow_name|
    # Should just be one
    print workflow_name
  end
end

К сожалению, как и многие зависимости от Ruby и Python, для чтения Turtle или RDF/XML необходимы некоторые бинарные файлы. "aptitude install raptor-utils" позаботился об этом.

Ответ 4

Я автор Redland, но я сам не использую Ruby. Рубиновые привязки, вероятно, все еще работают (они прошли модульные тесты в последнем выпуске), но, вероятно, нуждаются в некоторой любви к новым изменениям рубинового языка.

Пользователи Pure Ruby, я думаю, попробовали Active RDF, который более поздний, чем другие вещи, которые вы предлагаете, но сфокусирован на Rails.

В противном случае я предлагаю просить IRC-канал Semantic Web Interest Group - #swig на irc.freenode.net

Изменить: Там также Reddy http://github.com/tommorris/reddy/tree/master и другой код ruby ​​rdf на github, если вы посмотрите вокруг.

Ответ 7

Существует библиотека Ruby Sesame: http://github.com/tillsc/ruby-sesame

Sesame - одна из двух самых популярных фреймворков RDF для Java. Мы (Ontotext) разрабатываем трехъядерный накопитель + встроенный механизм вывода, называемый OWLIM. Мы предоставляем бесплатную версию под названием SwiftOWLIM.

Некоторые из наших пользователей используют его с Ruby через вышеупомянутую библиотеку Ruby Sesame.