2011-06-20 22 views
8

Estoy experimentando con Sesame y Virtuoso Triplestores. En el Momento, uso la API de Sesame Java para agregar Datos RDF a ambos Triplestores.Actualizar RDF en Triplestore

Mis datos RDF representa cosas diferentes, como datos de vídeo, datos del usuario, etc. En el momento en que puede agregar un RDF de un vídeo (título, descripción, ubicación, etc.) a la triplestore

Pero ¿cómo puedo actualizar una RDF en la tienda?

Por ejemplo, si uso la interfaz REST de sésamo y realizo una solicitud PUT con el RDF actualizado, todo en la tienda se elimina primero.

Cuando uso la POST con los datos actualizados (por ejemplo, el título del video ha cambiado), se almacenan ambos títulos (antiguo y nuevo).

¿Cómo trabajas con triplestores? Quizás extraño aquí algo esencial.


EDIT:

que uso ahora Contexto de sésamo y gráficos en Virtuoso para cada entrada RDF. De esta manera, para la actualización, puedo borrar el contexto primero y agregarlo nuevamente. Como uso la API de Sesame para ambas Triplestores (aún no sabemos cuál vamos a usar), el código se ve exactamente igual.

ValueFactory f = rep.getValueFactory(); 
URI uri = f.createURI(urn); 
con.clear(uri); 
con.add(reader,this.baseURI, RDFFormat.RDFXML,uri); 

gracias por la ayuda

+0

Nota la documentación del proveedor de virtuoso sésamo proporciona ejemplos sobre la adición de Datos RDF a la del Tienda cuádruple: http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSesame2Provider – hwilliams

+0

@hwilliams. Sí, lo usé. Pero aún no sé cómo actualizar un RDF en la tienda con la API. – superbly

+0

Virtuoso tiene una operación de "modificación" de SPARUL que con una operación de inserción e inserción incorporada realiza el equivalente de una operación de actualización SQL como se detalla en http://docs.openlinksw.com/virtuoso/sparqlextensions.html#rdfsparulexamples13 – hwilliams

Respuesta

4

supongo que está trabajando con SPARQL. Si no lo hace, entonces probablemente debería :-)

Muchas tiendas triples admiten SPARQL Update, un lenguaje para modificar las tripletas RDF en una tienda SPARQL. Es como SQL INSERT, UPDATE, DELETE y así sucesivamente. No estoy seguro de si Sesame lo admite aún: SPARQL Update sigue siendo una especificación muy nueva que aún no está completamente finalizada.

Otra cosa útil a tener en cuenta, especialmente si desea trabajar de forma RESTful, es Named Graphs. Esto permite administrar triples en diferentes gráficos, para que pueda mantener los datos separados. Podría, por ejemplo, mantener las tripletas de cada video en un gráfico con nombre separado, y luego actualizar solo ese gráfico con nombre en una solicitud PUT. Todavía puede usar SPARQL para consultar todo el almacén en todos los Gráficos con nombre. De nuevo, no estoy del todo seguro de si la API REST de Sesame proporciona acceso a los Gráficos con nombre. (Estoy bastante seguro de que la API de Java lo hace, creo que lo llaman algo diferente aunque Contextos.?)

+0

gracias por su respuesta . Aún estoy averiguando cuál es la mejor manera para mí. SPARQL Tengo que usar de todos modos más adelante. Así que lo intento. – superbly

+0

Sí Sesame llama contextos de gráficos nombrados – RobV

+0

Gracias de nuevo por esta respuesta. No sabía que puedo usar contexto o gráfico para cada entrada de PDF. Esto fue muy útil. – superbly

2

Así que tomar su ejemplo concreto de un título suponiendo que tiene el RDF original de este modo:

:something :title "Original Title" . 

Y desea cambiarlo a ser algo así como:

:something :title "Updated Title" . 

el uso de sésamo POSTAL sólo añade información nueva a un gráfico llamado (en la terminología contexto de sésamo), importante es no elimina ninguna información existente.

En términos RDF estos dos triples representan hechos diferentes.Sésamo (o cualquier otra tienda triple) no sabe que el segundo triple debería reemplazar al primero. Esto es bastante diferente del modelo SQL/relacional tradicional al que podría estar acostumbrado donde se actualizaría una propiedad, RDF no tiene una noción adecuada de esto ya que no puede modificar un triple como tal. Puede agregar nuevos triples o eliminar los triples existentes.

Para obtener el comportamiento de actualización que desea, debe eliminar el triple anterior (la API REST de Sesame admite HTTP DELETE para esto) y luego agregar el nuevo triple que lo reemplaza (utilice la operación POST de Sesame como lo hace actualmente).

Lo mismo se aplicará a prácticamente cualquier tienda triple que utilice. Si como cyrgi sugiere que utilice un almacén de apoyo SPARQL actualización a continuación, puede emitir el siguiente (se supone que utiliza gráficos con nombre) a la actualización de punto final:

DELETE DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Original Title" . } 
}; 
INSERT DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Updated Title" . } 
}