W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > October to December 2009

Re: Confusing SPARQL/Update request

From: Steve Harris <steve.harris@garlik.com>
Date: Thu, 29 Oct 2009 13:37:04 -0400
Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
Message-Id: <FBB8C9C9-7CA1-406A-8E35-0DF72731CA38@garlik.com>
To: "Seaborne, Andy" <andy.seaborne@hp.com>
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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:40 GMT