2009-05-31 14 views
15

Zastanawiam się nad aktualnym wsparciem dla Ruby dla technologii semantycznych. Czy są dostępne dobre opcje RDF? Wygląda na to, że ostatnie badania wykonano około 2007 (http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/). Okładki RDF Redland to najlepszy sposób na wsparcie RDF - wszystkie inne projekty wspomniane w tym starzejącym się artykule wydają się być nieobsługiwane lub odrzucane. Czy Ruby może być złym wyborem, jeśli chce realizować projekty związane z siecią semantyczną?Stan RDF w Ruby

Odpowiedz

12

Hej, Iaalto, jestem autorem artykułu z ankiety, o którym Pan wspomniał. Myślałem o zrobieniu nowej ankiety.

Trochę się zmieniło od czasu, gdy wykonałem oryginalną ankietę, ale niewiele. Oto kilka rzeczy do rozważenia:

  1. ActiveRDF wydaje poszły trasy bycia JRuby specyficzny biblioteki. Niektóre z nich są przeznaczone tylko dla bibliotek Java. Niekoniecznie problem, ale coś, o czym trzeba pamiętać.
  2. Reddy ma tylko wykres oparty na pamięci. Ponownie, niekoniecznie problem. Nie zdyskontowałbym za to Reddy'ego (przedwczesna optymalizacja), ale nie chciałbym też marzyć o przechowywaniu miliardów trójek.
  3. Niedawno znalazłem nowy zestaw Rubinowych wiązań dla Redland o nazwie RedLeaf. Nie jestem pewien jak dojrzały, ale wygląda na to, że Michael pracował nad tym przez około rok. Nie słyszałem o tym do niedawna, ponieważ jest on poza siecią (bez projektu RubyForge lub GitHub).
  4. Stworzyłem projekt na GitHub pod nazwą RubyRDF (github.com/pjstadig/rubyrdf/tree/master). Nie ma tony dokumentacji, ale jest w większości funkcjonalny. Ma adapter kompatybilny z Sesame z obsługą transakcji. Nadal mam kilka pomysłów na przyszłość i sprawienie, że będzie on pełniejszy, ale nie będę miał do nadruku. Z zadowoleniem przyjmuję wszelkie uwagi.

Konkluzja: Jeśli JRuby nie jest to problem dla ciebie, a następnie przejść z ActiveRDF, że jest to najbardziej kompletny i starsze. Jeśli wykres oparty na pamięci nie jest problemem, to następnym najbardziej dojrzałym jest prawdopodobnie Reddy.

+0

To świetne informacje. Dzięki pjstadig! – Daniel

4

Jestem autorem Redland, ale nie używam Rubiego. Wiązania rubinowe prawdopodobnie nadal działają (przeszły testy jednostkowe w ostatnim wydaniu), ale prawdopodobnie potrzebują odrobiny miłości dla wszelkich nowszych zmian w języku ruby.

Użytkownicy czystej Ruby, myślę, że wypróbowali Active RDF, który jest nowszy od innych rzeczy, które sugerujesz, ale koncentruje się na Railsach.

przeciwnym razie proponuję prosząc na kanale IRC Grupa Semantic Web Odsetki - #swig na irc.freenode.net

Edycja: Istnieje również Reddy http://github.com/tommorris/reddy/tree/master i inny kod rubin RDF na github jeśli rozejrzeć.

+0

Dziękuję bardzo za sygnał wejściowy, bardzo docenione! – Daniel

6

Osobiście poszedłem do RDF.rb jak ich stronie internetowej miał OK dokumentację, i łatwo było zacząć z wykorzystaniem samouczki blogu.

ActiveRDF wydaje się być większym projektem - ale ich wiki jest wyłączone (w rzeczywistości strona główna łączy się z kopią wiki na archive.com) - a cały przykład mówi o zapytaniach SPARQL.

Oto prosty potrójny przykład odnośnika, przeprosiny dla składni głupie jak to był mój pierwszy skrypt 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 

Niestety, podobnie jak wielu Ruby i Python zależności, to również potrzebne pewne pliki binarne, aby móc czytać Żółwia lub RDF/XML. "aptitude install raptor-utils" jednak to załatwiło.

+1

RDF.rb może być używany jako pure-ruby, bez plików binarnych. rdf/raptor używa oczywiście wiązań raptor, ale jest wielu czytelników i pisarzy, którzy są zaimplementowani w czystym ruby ​​(choć lepiej, jeśli nokogiri jest dostępny). –

0

Jest biblioteka Ruby Sesame: http://github.com/tillsc/ruby-sesame

Sezam jest jednym z dwóch najbardziej popularnych ram RDF dla Javy. My (Ontotext) opracowujemy potrójne miejsce przechowywania + wbudowany mechanizm wnioskowania o nazwie OWLIM. Oferujemy bezpłatną wersję o nazwie SwiftOWLIM.

Niektórzy nasi użytkownicy używają go z Ruby w powyższej bibliotece Ruby Sesame.

7

Właśnie napisał do góry new survey article on Ruby and RDF. Niektóre z wniosków są:

  • Istnieje ogromna ilość aktywności otaczającej RDF.rb ponad wynikiem adapterów baz danych, wtyczek serializacji/deserializacji i interfejsy do innych bibliotek. Większość ostatnich obiektów mapujących została również zbudowana na RDF.rb.
  • Popularna biblioteka RDF Redland ma Ruby bindings i jest aktywnie utrzymywana.
  • ActiveRDF był prekursorem programów obiektowych dla RDF, ale nie wydaje się już aktywnie utrzymywany.
  • Jedynym aktualnym aktywnym programem odwzorowującym obiekty w danym momencie jest Spira.
  • Żaden z obiektów odwzorowujących obiekty nie korzysta jeszcze z ActiveModel. Byłoby to naprawdę sprytne, ponieważ zapewniłoby znacznie głębszą integrację między RDF i Rails.

Istnieje również kilka interesujących komentarzy od autorów RDF.rb i Spira. W szczególności Ben Lavender dużo myślał o tym, jak sanely map RDF onto Ruby objects.