- 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