2009-05-31 9 views
15

Me pregunto acerca del soporte actual que hay en Ruby para las tecnologías de web semántica. ¿Hay buenas opciones de RDF? Parece que las últimas encuestas realizadas fueron alrededor de 2007 (http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/). Los envoltorios RDF de Redland son la mejor forma de obtener soporte RDF; todos los otros proyectos mencionados en ese artículo antiguo parecen no ser compatibles o no se admiten. ¿Ruby es quizás una mala elección si se quiere seguir proyectos pertenecientes a la web semántica?El estado de RDF en Ruby

Respuesta

12

Hola, Iaalto, soy el autor del artículo de la encuesta que usted mencionó. He estado pensando en hacer una nueva encuesta.

Un poco ha cambiado desde que hice la encuesta original, pero no mucho. Aquí hay un par de cosas a considerar:

  1. ActiveRDF parece haber seguido el camino de ser una biblioteca específica de JRuby. Varios de sus adaptadores son solo para bibliotecas de Java. No necesariamente es un problema, sino algo a tener en cuenta.
  2. Reddy solo tiene un gráfico basado en la memoria. Nuevamente, no necesariamente es un problema. No descartaría a Reddy por eso (optimización prematura), pero tampoco soñaría con almacenar miles de millones de triples.
  3. Recientemente encontré un nuevo conjunto de enlaces de Ruby para Redland llamado RedLeaf. No estoy seguro de qué tan maduro es, pero parece que Michael ha estado trabajando en ello durante aproximadamente un año. No había oído hablar de él hasta hace poco porque no está conectado a la red (ningún proyecto RubyForge o GitHub).
  4. Creé un proyecto en GitHub llamado RubyRDF (github.com/pjstadig/rubyrdf/tree/master). No tiene mucha documentación, pero es principalmente funcional. Tiene un adaptador compatible con Sesame con soporte para transacciones. Todavía tengo algunas ideas para la dirección futura, y para que sea más completo, pero no hay mucho ímpetu para trabajar en ello. Agradecería cualquier contribución.

En pocas palabras: Si JRuby no es un problema para usted, y luego ir con ActiveRDF, es la más completa y madura. Si el gráfico basado en memoria no es un problema, entonces el siguiente más maduro es probablemente Reddy.

+0

Esa es una gran información. Gracias pjstadig! – Daniel

4

Soy el autor de Redland pero no uso Ruby. Las fijaciones de rubí probablemente todavía funcionen (pasaron las pruebas unitarias en el último lanzamiento) pero probablemente necesiten algo de amor para cualquier cambio más reciente en el lenguaje de rubí.

usuarios Ruby puro creo que han intentado Active RDF que es más reciente que las otras cosas que usted sugiere, pero se centró en los carriles.

De lo contrario, sugieren que se pida en el canal de Web Semántica Grupo de Interés IRC - #swig en irc.freenode.net

Editar: También hay Reddy http://github.com/tommorris/reddy/tree/master y otros códigos rubí RDF en github si miras a tu alrededor.

+0

Muchas gracias por la entrada dajobe, muy apreciado! – Daniel

6

Personalmente yo fuimos para RDF.rb como su sitio web tenía documentación bien, y era fácil para empezar con el uso de los tutoriales de blog.

ActiveRDF parece un proyecto más grande, pero su wiki está caído (en realidad, la página principal se vincula a una copia del wiki en archive.com) y todo el ejemplo habla de consultas SPARQL.

Aquí está un ejemplo sencillo de tres operaciones de búsqueda, disculpas por la sintaxis tonto como esto era mi primer guión 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 

Por desgracia, al igual que muchas dependencias Ruby y Python, esto también necesita algunos binarios para ser capaz de leer la tortuga o RDF/XML. "aptitude install raptor-utils" se encargó de eso, sin embargo.

+1

RDF.rb se puede usar como rubí puro, sin binarios. rdf/raptor, por supuesto, usa los enlaces de raptor, pero hay muchos lectores y escritores que se implementan en ruby ​​puro (aunque mejoran si nokogiri está disponible). –

0

hay una biblioteca de Ruby Sésamo: http://github.com/tillsc/ruby-sesame

sésamo es uno de los dos marcos RDF más populares para Java. Nosotros (Ontotext) desarrollamos un motor de inferencia de triple almacenamiento + incorporado llamado OWLIM. Proporcionamos una versión gratuita llamada SwiftOWLIM.

Algunos de nuestros usuarios lo utilizan con Ruby a través de la biblioteca anterior de Ruby Sesame.

7

acabo redactó un new survey article on Ruby and RDF. Algunos de mis conclusiones son:

  • Hay una gran cantidad de actividad que rodea RDF.rb, con más de una veintena de adaptadores de base de datos, plugins serialización/deserialización, y las interfaces con otras bibliotecas. La mayoría de los mapeadores de objetos recientes se han construido encima de RDF.rb, también.
  • La popular biblioteca Redland RDF tiene Ruby bindings, y se mantiene activamente.
  • ActiveRDF fue el mapeador de objetos de primera calidad para RDF, pero ya no parece que se mantenga activamente.
  • El único mapeador de objetos activo reciente en este momento parece ser Spira.
  • Ninguno de los correlacionadores de objetos se está aprovechando de ActiveModel todavía. Esto sería realmente astuto, ya que proporcionaría una integración mucho más profunda entre RDF y Rails.

También hay algunos comentarios de seguimiento interesantes de los autores de RDF.rb y Spira. Ben Lavender, en particular, ha pensado mucho sobre cómo sanely map RDF onto Ruby objects.