Состояние RDF в Ruby [закрыто]
Вопрос
Меня интересует текущая поддержка семантических веб-технологий в Ruby.Есть ли хорошие варианты RDF?Кажется, последние опросы проводились примерно в 2007 году ( http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/ ).Является ли RDF-оболочка Redland лучшим способом получить поддержку RDF? Все остальные проекты, упомянутые в этой устаревшей статье, похоже, не поддерживаются или прекращены.Является ли Ruby плохим выбором для реализации проектов, связанных с семантической сетью?
Решение
Привет, Яалто, я автор упомянутой тобой обзорной статьи.Я подумывал о проведении нового опроса.
Немного изменилось с тех пор, как я проводил первоначальный опрос, но не сильно.Вот несколько вещей, которые следует учитывать:
- ActiveRDF, похоже, пошел по пути создания библиотеки, специфичной для JRuby.Некоторые из их адаптеров предназначены только для библиотек Java.Это не обязательно проблема, но о чем следует знать.
- У Reddy есть только график, основанный на памяти.Опять же, это не обязательно проблема.Я бы не стал сбрасывать со счетов Reddy из-за этого (преждевременная оптимизация), но я бы и не мечтал хранить миллиарды троек.
- Недавно я нашел новый набор привязок Ruby для Redland под названием РедЛиф.Не уверен, насколько он зрелый, но похоже, что Майкл работал над ним около года.До недавнего времени я не слышал о нем, потому что он автономен (нет проектов RubyForge или GitHub).
- Я создал проект на GitHub под названием RubyRDF (github.com/pjstadig/rubyrdf/tree/master).У него нет тонны документации, но он в основном функционален.Он имеет адаптер, совместимый с Sesame, с поддержкой транзакций.У меня все еще есть некоторые идеи относительно будущего направления и улучшения его функциональности, но у меня нет особого стимула работать над этим.Я буду рад любым вкладам.
Нижняя граница: Если JRuby для вас не проблема, используйте ActiveRDF, он наиболее полный и зрелый.Если граф, основанный на памяти, не является проблемой, то следующим по зрелости, вероятно, является Reddy.
Другие советы
Я только что написал новая обзорная статья о Ruby и RDF.Некоторые из моих выводов:
- Вокруг очень много активности РДФ.рб, с более чем множеством адаптеров баз данных, плагинами сериализации/десериализации и интерфейсами к другим библиотекам.Большинство последних средств отображения объектов также были созданы на базе RDF.rb.
- Популярная библиотека Redland RDF имеет Рубиновые привязки, и он активно поддерживается.
- АктивРДФ был первым средством отображения объектов для RDF, но, похоже, он больше не поддерживается активно.
- На данный момент единственным активным сопоставителем объектов является Спира.
- Ни один из картографов объектов не использует преимущества АктивМодель еще.Это было бы очень здорово, поскольку обеспечило бы гораздо более глубокую интеграцию между RDF и Rails.
Есть также несколько интересных последующих комментариев от авторов RDF.rb и Spira.Бен Лавендер, в частности, много думал о том, как разумно сопоставлять RDF с объектами Ruby.
Лично я пошел за РДФ.рб поскольку на их веб-сайте была хорошая документация, и было легко начать работу с обучающими материалами в блоге.
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.Привязки Ruby, вероятно, все еще работают (они прошли модульные тесты в последнем выпуске), но, вероятно, нуждаются в некоторой любви к любым новым изменениям языка Ruby.
Пользователи чистого Ruby, я думаю, пробовали Активный РДФ который является более поздним, чем другие вещи, которые вы предлагаете, но ориентированы на Rails.
В противном случае я предлагаю задать вопрос на IRC-канале Semantic Web Interest Group — #swig на irc.freenode.net.
Редактировать: Еще есть Редди http://github.com/tommorris/reddy/tree/master и другой код Ruby RDF на GitHub, если вы посмотрите вокруг.
Посмотрите 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.