Состояние RDF в рубине
Меня интересует текущая поддержка технологий семантической сети в Ruby. Есть ли хорошие варианты RDF? Похоже, что последние проведенные опросы были примерно в 2007 году ( http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/). Является ли оболочка RDF Redland лучшим способом поддержки RDF - все другие проекты, упомянутые в этой статье, похоже, не поддерживаются или отбрасываются. Является ли Ruby плохим выбором для реализации проектов, относящихся к семантической сети?
7 ответов
Привет, Яалто, я автор упомянутой вами обзорной статьи. Я думал о проведении нового опроса.
Немного изменилось с тех пор, как я сделал оригинальный опрос, но не сильно. Вот несколько вещей для рассмотрения:
- ActiveRDF, похоже, пошел путем создания библиотеки, специфичной для JRuby. Некоторые из их адаптеров предназначены только для библиотек Java. Не обязательно проблема, но кое-что, чтобы знать.
- Reddy имеет только граф на основе памяти. Опять же, не обязательно проблема. Я не стал бы сбрасывать со счетов Редди (преждевременная оптимизация), но я также не мечтал бы хранить миллиарды троек.
- Недавно я нашел новый набор привязок Ruby для Redland под названием RedLeaf. Не уверен, насколько он взрослый, но похоже, что Майкл работал над ним около года. Я не слышал об этом до недавнего времени, потому что это вне сети (нет проекта RubyForge или GitHub).
- Я создал проект на GitHub под названием RubyRDF (github.com/pjstadig/rubyrdf/tree/master). У него нет тонны документации, но он в основном функционален. Он имеет совместимый с Sesame адаптер с поддержкой транзакций. У меня все еще есть некоторые идеи относительно будущего направления, и сделать его более полным, но не так много стимулов для работы над ним. Я приветствовал бы любой вклад.
Итог: если JRuby не проблема для вас, тогда используйте ActiveRDF, он является наиболее полным и зрелым. Если график, основанный на памяти, не является проблемой, то следующим наиболее зрелым, вероятно, является Редди.
Лично я пошел на RDF.rb, поскольку на их веб-сайте была нормальная документация, и было легко начать пользоваться учебниками блога.
ActiveRDF кажется большим проектом - но их вики не работает (на самом деле главная страница ссылается на копию вики на archive.com) - и все примеры говорят о запросах SPARQL.
Вот простой пример тройного поиска, извинения за глупый синтаксис, так как это был мой первый скрипт на Ruby:
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".
Я только что написал новую обзорную статью о Ruby и RDF. Некоторые из моих выводов:
- RDF.rb обладает огромной активностью, с более чем десятком адаптеров баз данных, плагинов сериализации / десериализации и интерфейсов с другими библиотеками. Большинство недавних объектных картографов также были построены поверх RDF.rb.
- У популярной библиотеки Redland RDF есть привязки Ruby, и она активно поддерживается.
- ActiveRDF был лучшим картографом объектов для RDF, но он больше не поддерживается.
- Похоже, что на данный момент единственным активным картостроителем объектов является Spira.
- Ни один из сопоставителей объектов еще не использует ActiveModel. Это будет очень удобно, потому что это обеспечит гораздо более глубокую интеграцию между RDF и Rails.
Есть также несколько интересных последующих комментариев от авторов RDF.rb и Spira. Бен Лавендер, в частности, много думал о том, как разумно отобразить RDF на объекты Ruby.
Я автор Redland, но я сам не пользуюсь Ruby. Привязки ruby, вероятно, все еще работают (они прошли модульные тесты в последнем выпуске), но, вероятно, нуждаются в некоторой любви к любым новым изменениям языка ruby.
Чистые пользователи Ruby, я думаю, попробовали Active RDF, который является более новым, чем другие, которые вы предлагаете, но сфокусирован на Rails.
В противном случае я предлагаю задать вопрос на IRC-канале группы интересов Semantic Web - #swig на irc.freenode.net
Редактировать: На github есть также Reddy http://github.com/tommorris/reddy/tree/master и другой ruby-rdf-код, если вы посмотрите вокруг.
У AllegroGraph (RDF DB) есть клиент Ruby - https://github.com/phifty/agraph
Существует библиотека Ruby Sesame: http://github.com/tillsc/ruby-sesame
Sesame - одна из двух самых популярных сред RDF для Java. Мы (Ontotext) разрабатываем механизм тройного хранения + встроенный вывод, который называется OWLIM. Мы предоставляем бесплатную версию под названием SwiftOWLIM.
Некоторые из наших пользователей используют его с Ruby через вышеуказанную библиотеку Ruby Sesame.