- From: Simon K Johnston <skjohn@us.ibm.com>
- Date: Mon, 20 Jul 2009 21:33:48 -0400
- To: public-rdf-dawg@w3.org
- Message-ID: <OFF46555B3.A34FDAF9-ON852575FA.00020120-852575FA.0008967A@us.ibm.com>
Below are my comments on the UPDATE submission ( http://www.w3.org/Submission/2008/SUBM-SPARQL-Update-20080715/). In general I think the submission is in good shape, and I did review some of the recent comments (from Axel, Andy and Luke) and feel that the discussion around the submission is also heading in the right direction. Specific comments follow. 1.1 Scope and Limitations I would like to see something specifically added on the transaction discussion, to the effect that the language does not prescribe any transaction model and no guarantees are provided or implied by this specification (allowing implementers to add transactions to their products as a value-add if they wish). 2 Examples It feels as if an example showing LOAD would be valuable, as noted in some of the comments we expect LOAD to be a key feature in bulk insert scenarios and introducing it early makes it feel a peer to the other more common actions. My fear is that leaving it out of this introductory section makes it feel second-class. As per the comment from Axel in his review I think the addition of a MOVE would be valuable. For people used to SQL the notion of doing an INSERT and DELETE feels natural, but the main reason for that is that they can wrap the two actions in a single transaction. As noted above we've taken transactions away from the language and so providing an action that an implementer can optimize for atomicity seems valuable. The provision of MOVE would, for example, allow a store backed by and RDBMS to wrap the underlying SQL actions in a transaction so that the MOVE is atomic, whereas an INSERT followed by DELETE could not guarantee an atomic operation. 4.1 Graph Update I was at first tempted to agree with Axel on the separation of INSERT DATA and INSERT INTO, but Andy's comments on the ability for processors to deal with INSERT DATA in a streaming fashion seemed a reasonable argument. I certainly don't think the requirement to support the two forms is an onerous one for implementers, and if it allows them to perform additional optimization it seems an acceptable "overhead". On graph existence, we have different wording in different subsections: 4.1.3 - "If the operation is on a graph that does not exist, an error is generated" 4.1.4 - " The graph URI, if present, must be a valid named graph in the Graph Store" 4.1.5 - " The graph URI, if present, must be a valid named graph in the Graph Store" , also, 4.2.1 "service generates an error if the graph referred by the URI already exists" 4.2.2 "service, by default, is expected to generate an error if the specified named graph does not exist" 4.1.1, 4.1.2, 4.1.6 and 4.1.7 say nothing about this. It seems to me that either a paragraph be added in 4.1/4.2 to cover all cases or consistent wording be used in all the subsections. 4.1.7 CLEAR In regard to the statement: "This operation does not remove the graph from the Graph Store." I would like to see some clarification on the meaning here, how would the fact that the graph still exists affect other operations, queries, etc. 5 Security Issues It seems that this is really out-of-band for this specification; again if we look at SQL or XQuery, an implementer may have a store that has security constraints and the failure cases are signalled by the API as error conditions. In the update protocol we can be clear about the error reporting cases, in this specification we are not defining the API and so it feels out of scope. Also, any attempt to get into any details may end up prescribing the security model itself which is definitely out of scope. Thanks, Simon K. Johnston (skjohn@us.ibm.com) - STSM, Jazz Foundation Services Mobile: +1 (919) 200-9973 Office: +1 (919) 595-0786 (tie-line: 268-6838) Blog: http://www.ibm.com/developerworks/blogs/page/johnston
Received on Tuesday, 21 July 2009 01:34:34 UTC