SPARUL
SPARUL, or SPARQL/Update, is a declarative data manipulation language that is an extension to the SPARQL query language standard. SPARUL provides the ability to insert, delete and update RDF data held within a triple store or quad store. SPARUL was originally written by Hewlett-Packard and has been used as the foundation for the current W3C Proposed Recommendation entitled SPARQL 1.1 Update.
Contents |
Examples
Adding some triples to a graph. The snippet describes two RDF triples to be inserted into the default graph of the RDF store.
PREFIX dc: <http://purl.org/dc/elements/1.1/> INSERT DATA { <http://example/book3> dc:title "A new book" ; dc:creator "A.N.Other" . }
This SPARQL/Update request contains a triple to be deleted and a triple to be added (used here to correct a book title). The requested change happens in the named graph identified by the URI http://example/bookStore.
PREFIX dc: <http://purl.org/dc/elements/1.1/> DELETE DATA FROM <http://example/bookStore> { <http://example/book3> dc:title "Fundamentals of Compiler Desing" } INSERT DATA INTO <http://example/bookStore> { <http://example/book3> dc:title "Fundamentals of Compiler Design" }
The example below has a request to delete all records of old books (with date before year 2000)
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> DELETE { ?book ?p ?v } WHERE { ?book dc:DATE ?DATE . FILTER ( ?DATE < "2000-01-01T00:00:00"^^xsd:dateTime ) ?book ?p ?v }
This snippet copies records from one named graph to another named graph based on a pattern.
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> INSERT INTO <http://example/bookStore2> { ?book ?p ?v } WHERE { GRAPH <http://example/bookStore> { ?book dc:DATE ?DATE . FILTER ( ?DATE < "2000-01-01T00:00:00"^^xsd:dateTime ) ?book ?p ?v } }
An example to move records from one named graph to another named graph based on a pattern.
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> INSERT INTO <http://example/bookStore2> { ?book ?p ?v } WHERE { GRAPH <http://example/bookStore> { ?book dc:DATE ?DATE . FILTER ( ?DATE < "2000-01-01T00:00:00"^^xsd:dateTime ) ?book ?p ?v } } DELETE FROM <http://example/bookStore> { ?book ?p ?v } WHERE { GRAPH <http://example/bookStore> { ?book dc:DATE ?DATE . FILTER ( ?DATE < "2000-01-01T00:00:00"^^xsd:dateTime ) ?book ?p ?v } }
SPARQL/Update implementations
- Meronymy SPARQL Database Server supports SPARQL/Update 1.1.
- Jena
- OpenLink Virtuoso Universal Server
- ARC supports LOAD, INSERT and DELETE, but not MODIFY.
- StrixDB supports SPARQL/Update 1.0.
- 4store
- AllegroGraph
- ARQ
- Ontotext OWLIM
- OntoBroker
- D2R Server
- Dydra
- Redland / Redstore
- Oracle DB Enterprise Ed.
- Parliament
Clients supporting SPARUL
External links
- SPARQL/Update W3C Member Submission
- SPARQL 1.1 Update Proposed Recommendation from W3C SPARQL Working Group
- EditingData wiki page - summary (maintained by Tim Berners-Lee) of ways to edit linked data
