- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Thu, 15 Oct 2009 18:20:20 +0000
- To: Steve Harris <steve.harris@garlik.com>, "public-rdf-dawg@w3.org Group" <public-rdf-dawg@w3.org>
> -----Original Message-----
> From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-request@w3.org]
> On Behalf Of Steve Harris
> Sent: 15 October 2009 17:28
> To: public-rdf-dawg@w3.org Group
> Subject: Questions about Update 1.1
>
> I've been noodling on update today, and I have a couple of questions
> for people who've already implemented it:
>
> 1) If you have DELETE { <a> <b> ?z . <c> <d> ?z } what does that mean?
> The grammar allows it, but maybe it shouldn't? It could imply DELETE
> { <a> <b> ?z . <c> <d> ?z } WHERE { <a> <b> ?z . <c> <d> ?z }, but it
> should be explicit what happens somewhere.
The fact WHERE is optional is probably a historical mistake - when DELETE DATA didn't exist, it was not needed if the template was all ground triples.
I like the idea of it as a shorthand for
DELETE { <a> <b> ?z . <c> <d> ?z } WHERE { <a> <b> ?z . <c> <d> ?z }
for just DELETE.
INSERT { <a> <b> ?z . <c> <d> ?z }
seems meaningless but an easy mistake to make.
> 2) Can you delete bNodes with DATA? DELETE DATA { <a> <b> _:z }
> doesn't really make much sense. Some stores (including Jena and
> 4store) allow you to quote bNodes like DELETE DATA { <a> <b> <_:z> }
> but that's non-standard.
Yes - this is more of a problem now we have update and not just query.
We could document the <_:...> usage.
> Without DATA you can do something like:
> DELETE { <a> <b> ?z . <c> <d> ?z }
> WHERE { <a> <b> ?z . <c> <d> ?z . FILTER(isBNODE(?z)) }
> but that's really inconvenient, and will be hard to optimise if you
> want to delete large chunks of data.
>
> - Steve
Andy
Received on Thursday, 15 October 2009 18:37:15 UTC