Вопрос

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top