- From: Olivier Corby <Olivier.Corby@sophia.inria.fr>
- Date: Mon, 14 Nov 2011 17:38:55 +0100
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
Hi, Here is my review of SPARQL 1.1 Update (action 555) http://www.w3.org/2009/sparql/docs/update-1.1/ version of 2011-11-08 Best regards, Olivier _________________ W3C Working Draft 12 May 2011 -> To be changed The end date of the Last Call review period is 29 July 2011. -> To be changed 2 The Graph Store Unless overridden (for instance, by the SPARQL protocol), **then** the unnamed graph for the store will be the default graph for any operations on that store. -> Unless overridden (for instance, by the SPARQL protocol), the unnamed graph for the store will be the default graph for any operations on that store. (remove "then") -- Comment: graph store should be written Graph Store in a consistent way. In the simple case, where there is one unnamed graph -> In the simple case where there is one unnamed graph (remove ",") 3.1 Graph Update The INSERT DATA operation adds some triples, given inline in the request, into a graph. This will create the destination graph if it does not exist. -> The INSERT DATA operation adds some triples, given inline in the request, into a graph. This **should** create the destination graph if it does not exist. 3.1.2 DELETE DATA QuadDatas that contains variables or blank nodes is disallowed -> QuadData that contains variables or blank nodes is disallowed Blank nodes are not permitted in the QuadData, as these cannot match any existing data. -> Blank nodes are not permitted in the QuadData, as these **do not** match any existing data. Example 3: Removing undesired triples from a graph -> Example 3: Removing triples from a graph Example 4: The query replaces an occurrence of "Desing" by "Design" but the Data before does not contain an occurrence of "Desing". So the example is misleading (although not false). 3.1.3 DELETE/INSERT The bindings for each solution are then substituted into the DELETE template to remove triples, and then in the INSERT template to create new triples. -> Explain what happens if a variable in the template has no value in a solution: this is processed as in construct-where ... If no data is to be inserted, then no graph will be created, even if applying the operation to a different dataset would result in data being inserted. -> This sentence is not clear. -- Question: INSERT WHERE: what happens if INSERT has two graph patterns that insert the same blank node in two different graphs: INSERT { graph <g1> {?x ?p ?v} graph <g2> {?x ?p ?v} } WHERE { ?x ?p ?v filter (isBlank(?v)) } Example 11: This example request removes both statements naming some resource "Fred" in the graph http://example.com/names, and also statements about that resource from the graph http://example/addresses (assuming that **any subject** in the graph http://example.com/names has corresponding triples in the graph http://example/addresses). -> This example request removes both statements naming some resource "Fred" in the graph http://example.com/names, and also statements about that resource from the graph http://example/addresses (assuming that **some of these resources** in the graph http://example.com/names have corresponding triples in the graph http://example/addresses). Example 11: Data after: # Graph: http://example.com/names This triple should be removed: <http://example/fred> foaf:givenName "Fred" . 3.1.4 LOAD The load operation is designed for RDF 1.0 where there is no syntax for named graphs. In the future, what will happen if the RDF document loaded from the URI contains named graph(s) ? In this case, load may not modify the default graph, and it may conflict with the "into graph" clause. Also, there is no indication of the format supported by LOAD: RDF/XML ? Turtle ? ... Note: For services which form the default graph from the unions of other graphs then CLEAR DEFAULT may have further implications which we leave unspecified here. -> Note: For services which form the default graph from the **union** of other graphs, CLEAR DEFAULT may have further implications which we leave unspecified here. (and replace "then" by ",") 3.2 Graph Management support persistent empty named graphs -> the term "persistent" is used nowhere else in the document, it is not defined. 3.2 Graph Management # The ADD operation reproduces all data in one graph into another. -> # The ADD operation reproduces all data **from** one graph into another. 3.2.3 COPY Notation '' below is not clear: ( GRAPH IRIref_to | '') Example 12: Data before: # Graph http://example.org/named -> should be in bold font -> prefix foaf: is missing Note that the original content in http://example.org/named is lost by a COPY operation. -> The "COPY" keyword is in capital with a size greater than other keywords in the doc. 3.2.4 MOVE Notation '' below is not clear: ( GRAPH IRIref_to | '') As for COPY, if the destination graph does not exist, it will be created. By default, the service is expected to return failure if the input graph does not exist. -> "is expected" is ambiguous, prefer the service should or must Example 13: Note that the original content in http://example.org/named is lost by a MOVE operation. -> The "MOVE" keyword is in unusual king size capital. 3.2.5 ADD Notation '' below is not clear: ( GRAPH IRIref_to | '') By default, the service **is expected to** return failure -> must or should Example 14: Data before: # Graph http://example.org/named -> sould be in bold 4 SPARQL Update Formal Model Definition: Graph Store each named slot is pair of a graph -> each named slot is **a** pair of a graph 4.2 Auxiliary Definitions The Dataset-MERGE definition is currently not needed, we might drop it in the final recommendation. -> Drop this ? 4.2.1 Dataset-MERGE Gj for iri = iri'j such that irij in graphNames(DS') \ graphNames(DS) -> Gj for iri = iri'j such that iri'j in graphNames(DS') \ graphNames(DS) (replace irij by iri'j) 4.2.2 Dataset-UNION Definition: Dataset-UNION The Dataset-UNION between DS and **Ds'** is defined as follows: -> replace Ds' by DS' # Gj for iri = iri'j such that **irij** in graphNames(DS') \ graphNames(DS) -> replace irij by iri'j 4.2.4 Dataset( QuadPattern, mu, DS, GS ) Add something like: We need to distinguish DS and GS because, among others, in case of USING [NAMED] clauses, DS and GS may differ. Let mu be a solution mapping, DS={DG} union {(irii, Gi) | 1 <= i <= n} be and RDF Dataset and GS be the current state of the graph store. -> Let mu be a solution mapping, DS={DG} union {(irii, Gi) | 1 <= i <= n} be **an** RDF Dataset and GS be the current state of the graph store. valid RDF triples -> Give a reference to define what is a valid RDF triple 4.2.5 Dataset( QuadPattern, P, DS, GS ) Dataset(QuadPattern, P, DS, GS ) = Dataset-UNION( { Dataset(QuadPattern, mu) | mu in eval'(DS(DG),P) ) -> Dataset-UNION( { Dataset(QuadPattern, mu, **DS, DG**) | mu in eval'(DS(DG),P) **}** ) Data before: # Default graph @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:b a foaf:Person . :s a foaf:Person . prefix ":" is undefined 4.3.5 Clear Operation and OpCleardef for clearing all graphs including the default graph. -> and OpClear**all** for clearing all graphs including the default graph. 4.4.2 DropOperation OpDropnamedfor dropping -> OpDropnamed for dropping 4.5 Mapping Update Requests to the Formal Model Table 1: Mapping from Update Requests to Update Operations CLEAR (SILENT)? DEFAULT OpCleardef(GS, IRIref) CLEAR (SILENT)? NAMED OpClearnamed(GS, IRIref) CLEAR (SILENT)? ALL OpClearall(GS, IRIref) DROP (SILENT)? DEFAULT OpDropdef(GS, IRIref) DROP (SILENT)? NAMED OpDropnamed(GS, IRIref) DROP (SILENT)? ALL OpDropall(GS, IRIref) should be: CLEAR (SILENT)? DEFAULT OpCleardef(GS) CLEAR (SILENT)? NAMED OpClearnamed(GS) CLEAR (SILENT)? ALL OpClearall(GS) DROP (SILENT)? DEFAULT OpDropdef(GS) DROP (SILENT)? NAMED OpDropnamed(GS) DROP (SILENT)? ALL OpDropall(GS) B Internet Media Type, File Extension and Macintosh File Type sparql update -> SPARQL Update (twice)
Received on Monday, 14 November 2011 16:39:28 UTC