W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2010

Fwd: Update Syntax

From: Paul Gearon <gearon@ieee.org>
Date: Wed, 28 Apr 2010 11:04:16 -0400
Message-ID: <p2pa25ac1f1004280804lb0856657g7cbd3498afe66c23@mail.gmail.com>
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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:42 GMT