Re: Review of SPARQL 1.1. Update editors' draft

On 16/05/2010 2:53 AM, Lee Feigenbaum wrote:
> * 4.1.3/4.1.4/4.1.5. I think this might be clearer if 4.1.3 made DELETE
> and INSERT optional, and then 4.1.4 and 4.1.5 _only_ presented and
> talked about the shortcut forms.

I suggest that DELETE WHERE is treated separately as well.

In design, DELETE WHERE is like DELETE DATA except it allows variables 
and treats bNodes as wildcards.

It has a special syntax: the doc currently says:

[ WITH <uri> ]
DELETE [ { modify_template [ modify_template ]* } ]
[ USING [NAMED] <uri> ]*
WHERE GroupGraphPattern


1/ DELETE WHERE takes a template for the WHERE part, not a general 

Only the text spells this out:

If the template for modification is not present, then the 
GroupGraphPattern in the WHERE clause is also treated as the template 
for deletion. If this shortened form is used, then the GroupGraphPattern 
must be simple enough to also form a valid template for deletion.

I suggest that the grammar part be right as part of making DELETE WHERE 
it's own section.


template ::= { modify_template [ modify_template ]* }

2/ Does DELETE WHERE allow USING? I don't think it should and I'm not 
sure what it means if it does.

USING only applies to pattern matching but in DELETE WHERE the template 
pattern performs two functions, matching and removal.

3/ WITH and DELETE WHERE is unnecessary. GRAPH in the template pattern 
has the same effect and is clearer.

4/ Blank nodes

The pattern in WHERE is matched against the graph store analogously to 
SPARQL - Query. The resulting variable bindings are used to instantiate 
the triple patterns in the DELETE template analogously to CONSTRUCT.
but aren't blank nodes in template supposed to be wildcards?

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

Revision 1.37 log says "Added comment allowing anonymous blank nodes in 
short-form delete"

but I can't find any text any more.


I noticed:

"If the GroupGraphPattern specifies a GRAPH then this will be the graph 
affected.  Otherwise, the operation will be applied to the graph 
specified in the WITH clause, if one was specified, or the default graph 

Not quite -

A/ Isn't this about the modify_template, not the GroupGraphPattern? 
It's the template that controls describing the triples to delete.

B/ what about:

    ?s :p ?o .
    GRAPH <g> { ?s :q ?z }

both the default graph and graph <g> are affected, not just <g> as the 
text implies.  The first part is affected by WITH.

C/ There may be 2 or more GRAPH in the pattern.


Received on Tuesday, 18 May 2010 10:51:28 UTC