Состояние 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 ответов

Решение

Привет, Яалто, я автор упомянутой вами обзорной статьи. Я думал о проведении нового опроса.

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

  1. ActiveRDF, похоже, пошел путем создания библиотеки, специфичной для JRuby. Некоторые из их адаптеров предназначены только для библиотек Java. Не обязательно проблема, но кое-что, чтобы знать.
  2. Reddy имеет только граф на основе памяти. Опять же, не обязательно проблема. Я не стал бы сбрасывать со счетов Редди (преждевременная оптимизация), но я также не мечтал бы хранить миллиарды троек.
  3. Недавно я нашел новый набор привязок Ruby для Redland под названием RedLeaf. Не уверен, насколько он взрослый, но похоже, что Майкл работал над ним около года. Я не слышал об этом до недавнего времени, потому что это вне сети (нет проекта RubyForge или GitHub).
  4. Я создал проект на 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-код, если вы посмотрите вокруг.

Проверьте RDF.rb http://rdf.rubyforge.org/

У 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.

Другие вопросы по тегам