- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Tue, 23 Mar 2010 10:13:21 +0000
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
I've updated the grammar to cover aggregates. It still needs tidying to make it more regular. 1/ datasets in update Lee - I haven't included anything for datasets in update yet. I don't understand the relationship of WITH and FROM/FROM NAMED (probably not a syntax issue per se but if I'm unclear I'm probably not going to get the syntax style right). "FROM" makes sense as a work for query and DELETE as information or triples is taken from the data but with INSERT, FROM seems odd. For now, I've not added anything and will do so when the design is fleshed out. 2/ DELETE template not like CONSTRUCT templates We decided: [[ RESOLVED: Blank nodes in DELETE templates act as "wild cards", effectively as variables bound to all RDF terms; the same blank node cannot be used in the WHERE clause and the template, or in multiple BGPs, SteveH, dcharbon2, LeeF abstaining ]] and the update doc says [[ It should be noted that labeled blank nodes cannot be used in the shortened form, as this would lead to an equivalent long-form expression where a blank node in the deletion template is reused in the GroupGraphPattern of the WHERE clause. ]] The phrase "same blank node" is the confusion. DELETE WHERE { :x :p _:b ; ?y :q _:b } One way of thinking about this is that this is the same as: DELETE { :x :p _:b ; ?y :q _:b } WHERE { :x :p _:b ; ?y :q _:b } another is DELETE { :x :p _:c ; ?y :q _:c } WHERE { :x :p _:b ; ?y :q _:b } relabelling the bnode reference in the template. But CONSTRUCT allows (the "no repeat" rule applies to queries pattern across BGPs not to the template): CONSTRUCT { :x :p _:b ; ?y :q _:b } WHERE { :x :p _:b ; ?y :q _:b } and a new bnode must be generated each time the template is generated anyway. To me, it makes more sense to make DELETE similar to CONSTRUCT in this respect. From a grammar point-of-view, this restriction would take a deep chnage because there is one blank node rule: BlankNode ::= BLANK_NODE_LABEL | ANON for all templates and BGPs and it's embedded deep in the Turtle-ish triple patterns abbreviations. It also means we now have yet another template form. Andy
Received on Tuesday, 23 March 2010 10:14:20 UTC