Re: Confusing SPARQL/Update request

On 29 Oct 2009, at 09:52, Seaborne, Andy wrote:

> From a recent user report: [1]
>
> This update request
>
>  DELETE FROM  <example:store> { ?s ?p ?o } WHERE { ?s ?p ?o }
>
> does not clear the graph <example:store>  as might be expected from  
> the DELETE syntax. The pattern matches against the default graph,  
> not the named graph in the FROM clause but the syntax is confusingto  
> the point of leading the application writer astray.

Ouch, that is confusing.

It might be another case where the GRAPH syntax is clearer:

DELETE { GRAPH <example:store> { ?s ?p ?o } } WHERE { ?s ?p ?o }

which would have the same meaning, but is clearer in my opinion.

> This would also matter for a shorthand version:
>
>  DELETE FROM <example:store> { ?s ?p ?o }
>
> What's the implicit WHERE clause here?  Use of GRAPH in the template  
> might be a bit less confusing but I don't think it is sufficiently so.

I think it is at least better:

DELETE { GRAPH <example:store> { ?s ?p ?o } } WHERE { GRAPH  
<example:store> { ?s ?p ?o } }
DELETE { ?s ?p ?o } WHERE { GRAPH <example:store> { ?s ?p ?o } }
DELETE { GRAPH <example:store> { ?s ?p ?o } } WHERE { ?s ?p ?o }

just because the scoping of GRAPH is explicit c.f. FROM.

- Steve

-- 
Steve Harris, CTO, Garlik Limited
2 Sheen Road, Richmond, TW9 1AE, UK
+44(0)20 8973 2465  http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10  
9AD

Received on Thursday, 29 October 2009 17:37:40 UTC