- 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