Состояние 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, если вы посмотрите вокруг.
Ответ 5
Проверьте RDF.rb http://rdf.rubyforge.org/
Ответ 6
AllegroGraph (RDF DB) имеет клиента Ruby - https://github.com/phifty/agraph
Ответ 7
Существует библиотека Ruby Sesame: http://github.com/tillsc/ruby-sesame
Sesame - одна из двух самых популярных фреймворков RDF для Java. Мы (Ontotext) разрабатываем трехъядерный накопитель + встроенный механизм вывода, называемый OWLIM. Мы предоставляем бесплатную версию под названием SwiftOWLIM.
Некоторые из наших пользователей используют его с Ruby через вышеупомянутую библиотеку Ruby Sesame.