- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Thu, 10 Mar 2011 16:48:22 +0000
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
==== SPARQL Update (part 2) This completes my review. Covers section 4 onwards but also .. === 3.1.1 INSERT DATA [**] """ INSERT DATA { graph_triples } Graph triples are defined as: graph_triples ::= TriplesBlock | GRAPH <uri> { TriplesBlock } """ This disallows: INSERT DATA { :s :p :o . GRAPH :g { :s1 :p1 :o } } INSERT DATA { GRAPH :g2 {:s :p :o } . GRAPH :g { :s1 :p1 :o } } Is there a reason for this? The grammar allows it. Its seems unnecessary to force the application to separate out the triples. This is repeated: = 3.1.2 DELETE DATA = 3.1.3 DELETE/INSERT modify_template ::= ConstructTriples | graph_template = 3.1.4 DELETE = 3.1.5 INSERT == Section 4: [**] I suggest a section on how certain forms map to other forms, then must define the fundamental forms. Rewrites for ADD, COPY, MOVE (some text exists elsewhere but should be in the formal section) DELETE WHERE, DELETE {} WHERE, INSERT {} WHERE Maybe CLEAR as well. then define DELETE{}INSERT{}WHERE{}, LOAD, CREATE, DROP, INSERT DATA, DELETE DATA. Something on WITH and USING to formalise them as syntactic features. There is material elsewhere but I feel the formal section should be self-contained able to cover all SPARQL Update. [**] Need an account of how the syntax maps to the operations. It's fairly obvious but probably should be said. == 4.1.1 Graph Store [] s/associated to/associated with/ [*] Say the IRIi are distinct. [] It says: "1 <= i <= n" but nothing about n == 4.1.2 Update Operation The "t+1" notation isn't used anywhere. As the state of a store only depends on the previous state and the operation and not t-2, it's not necessary. Is this definition used anywhere? I could immediately see that it's needed and wondered if it is historical now. == 4.2 Auxiliary Definitions == 4.2.1 Dataset-UNION [*] An RDF dataset is a set { DG, (<u_i>, G_i)} -- write it same as query has it, not "DG' union {(iri'j, G'j) | 1 <= j <= m})" [**] Not merge - this must be a union. not rename blank nodes apart. Otherwise one operation followed by another will not update the same bNode. And datseta-diff is not going to work. == 4.2.2 Dataset-DIFF [*] dataset comment as dataset-union. [**] Its says "merge" (bullet 3). Should be set-difference or minus. [] G_j should be G sub j. == 4.3.1 Insert Data Operation """ graph_triples, i.e. either a dataset consisting of a single named graph and an empty default graph """ [**] As we have defined dataset-union, I think this should be dataset union, nor limited to one graph. See also the graph_triples issue above. == 4.3.2 Delete Data Operation [**] graph_triples == 4.3.3 Delete Insert Operation """ Triples are identified as they match a particular Group Graph Pattern P. """ [**] The triples here are the ones to be deleted or inserted - they are not identified by matching - there is a template stage in between. [**] Define modify_template sub DEL and modify_template sub INS [**] Dataset(modify_template, P) Write this out formally: Dataset(modify_template, P) = { instantiate(modify_template) | μ a solution of P } instantiate(modify_template) = .... These are superseded if there is an abbreviated forms section: == 4.3.4 Delete Operation == 4.3.5 Insert Operation == 4.3.6 Delete Where Operation == 4.3.7 Insert Where Operation [**] What's this used with? "Insert Where ... are *deleted* from the Graph Store" == 4.4.1 Create Operation [*] Either something on what happens about empty graphs or, in the section intro, say the definitions assume we can have empty graphs. the latter is probably better. == 5 Conformance [*] remove / update name to "RDF Dataset HTTP Protocol"
Received on Thursday, 10 March 2011 16:49:00 UTC