- From: Paul Gearon <gearon@ieee.org>
- Date: Wed, 28 Apr 2010 11:04:16 -0400
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
Initially sent to Andy, but the whole list should see this as well... This is not formal, but here is the update syntax as it stands, along with examples. I don't expect it to be completely correct, but hopefully it is close. Regards, Paul Gearon --- Insert data --- 'INSERT DATA {' graph_triples '}' graph_triples :: = TriplesBlock | 'GRAPH <' graph_uri '> {' TriplesBlock '}' Eg: PREFIX dc: <http://purl.org/dc/elements/1.1/> INSERT DATA { <http://example/book3> dc:title "A new book" ; dc:creator "A.N.Other" . } --- Delete data --- 'DELETE DATA {' graph_triples '}' Eg: PREFIX dc: <http://purl.org/dc/elements/1.1/> DELETE DATA { <http://example/bookx> dc:title "David Copperfield" ; dc:creator "Edmund Wells" . } // Before semicolons were chosen to separate operations, // the following was a valid example. I don't think that it // is still valid without a semicolon. and a repeated PREFIX. PREFIX dc: <http://purl.org/dc/elements/1.1/> DELETE DATA { GRAPH <http://example/bookStore> { <http://example/book3> dc:title "Fundamentals of Compiler Desing" } } INSERT DATA { GRAPH <http://example/bookStore> { <http://example/book3> dc:title "Fundamentals of Compiler Design" } } --- Delete/Insert --- [ 'WITH <' uri '>' ] 'DELETE {' modify_template [ modify_template ]* '}' 'INSERT {' modify_template [ modify_template ]* '}' [ 'USING <' uri '>' ]* [ 'USING NAMED <' uri '>' ]* [ 'WHERE' ] GroupGraphPattern modify_template :: = ConstructTriples | graph_template graph_template ::= 'GRAPH' VarOrIRIRef '{' ConstructTriples '}' Eg: PREFIX foaf: <http://xmlns.com/foaf/0.1/> WITH <http://example/addresses> DELETE { ?person foaf:firstName 'Bill' } INSERT { ?person foaf:firstName 'William' } WHERE { ?person a foaf:Person . ?person foaf:firstName 'Bill' } --- Delete --- [ 'WITH <' uri '>' ] 'DELETE' [ '{' modify_template [ modify_template ]* '}' ] 'WHERE' GroupGraphPattern Eg: 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-2:00"^^xsd:dateTime ) ?book ?p ?v } Eg2: PREFIX foaf: <http://xmlns.com/foaf/0.1/> WITH <http://example/addresses> DELETE WHERE { ?person foaf:firstName 'Fred'; ?property ?value } --- Insert --- [ 'WITH <' uri '>' ] 'INSERT {' modify_template [ modify_template ]* '}' 'WHERE' GroupGraphPattern Eg: PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> INSERT { GRAPH <http://example/bookStore2> { ?book ?p ?v } } WHERE { GRAPH <http://example/bookStore> { ?book dc:date ?date . FILTER ( ?date < "2000-01-01T00:00:00-2:00"^^xsd:dateTime ) ?book ?p ?v } } Eg2: // The following was also valid before the semicolon decision // I'm pretty sure that we now need a semicolon and a repeated // set of prefixes. PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX dcmitype: <http://purl.org/dc/dcmitype/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> INSERT { GRAPH <http://example/bookStore2> { ?book ?p ?v } } WHERE { GRAPH <http://example/bookStore> { ?book dc:date ?date . FILTER ( ?date < "2000-01-01T00:00:00-2:00"^^xsd:dateTime ) ?book ?p ?v } } WITH <http://example/bookStore> DELETE { ?book ?p ?v } WHERE { ?book dc:date ?date ; dc:type dcmitype:PhysicalObject . FILTER ( ?date < "2000-01-01T00:00:00-2:00"^^xsd:dateTime ) ?book ?p ?v } --- Load --- 'LOAD <' documentURI '>' [ 'INTO <' uri '>' ] Eg: LOAD <http://example.com/data/graph.rdf> INTO <http://service.com/graph> --- Clear --- 'CLEAR' [ 'GRAPH <' uri '>' ] Eg: CLEAR GRAPH <http://service.com/graph> --- Create --- 'CREATE' [ 'SILENT' ] 'GRAPH <' uri '>' Eg: CREATE <http://service.com/graph> --- Drop --- 'DROP' [ 'SILENT' ] 'GRAPH <' uri '>' Eg: DROP SILENT <http://service.com/graph> Regards, Paul Gearon
Received on Wednesday, 28 April 2010 15:04:53 UTC