- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Fri, 06 Nov 2009 19:29:46 +0000
- To: Steve Harris <steve.harris@garlik.com>
- CC: public-rdf-dawg@w3.org
On 06/11/2009 17:55, Steve Harris wrote: > On 6 Nov 2009, at 10:26, Andy Seaborne wrote: >> Consider: >> >> DELETE { ?x :p ?o } >> DELETE { ?x :p ?o } WHERE { ?x :p o . FILTER(?o = <doesnotexist> } >> >> which might arise from either using DELETE for INSERT by mistake the >> second time or other bad editting > > I don't quite follow this example. The point is made better below. It shows that it's easy to make mistakes - the accidently change to two operations, rather than one, results in a less constrained DELETE with potentially dangerous effects. rm -rf *.rdf and rm -rf * .rdf are rather different. > >> Assuming the INSERT is optional as well, which I think is the intent, >> we have to be a bit careful about creating traps for the unwary: >> >> And DELETE without WHERE is potentially ambiguous as a grammar and >> certainly optically: >> >> DELETE >> INSERT >> WHERE >> >> Is that one request >> DELETE-INSERT-WHERE >> or two >> DELETE >> INSERT-WHERE > > I think we agreed that there would be some separator (from memory ';') > to avoid that kind of problem, though I don't think we discussed the > DELETE { ... } syntax explicitly. Isn't this going to lead to potentially easy mistakes to make? Omitting the ";" isn't necessarily a syntax error - it's a different but valid set of requests. Like queries, the whole DELETE-INSERT-WHERE operation is often multiline so using small details like an odd ";" are easy to miss. And we alreayd have {} for some grouping. On 06/11/2009 17:55, Steve Harris wrote: > >> What about missing the template out instead: >> >> DELETE WHERE {?x :p ?o } > > If we're going to support this kind of syntax abbreviation, then this > looks better to me. I'm warming to it. Messy grammar for all the cases that can and can't be written, but that's a do-once thing and I think it makes for good readability. > > I've had several bad experiences with SQL and typing: > DELETE FROM table<enter> > when I was just thinking what I would type next and pressed enter > reflexively. I'm happy to chalk it up to incompetence on my part, but I > think we can do better than SQL in this area. Yes - it's a bit too easy. I've done the "rm -rf *" thing as well :-( Andy > > - Steve > >> 2009/11/6 Kjetil Kjernsmo <kjetil@kjernsmo.net>: >>> On Friday 6. November 2009 02:30:37 Axel Polleres wrote: >>>> We didn't consider this particularly, >>> >>> OK! >>> >>>> but having the >>>> WHERE part optional for a DELETE in that sense you propose >>>> doesn't seem problematic to me, at first sight. >>> >>> Yeah, it breaks the earlier assumption that all variables needs to be >>> bound >>> in the WHERE clause, but since the value in this case will not be >>> returned, >>> it will simply be deleted, I think it looks like a nice way to resolve >>> ISSUE-48. >>> >>> Cheers, >>> >>> Kjetil >>> -- >>> Kjetil Kjernsmo >>> kjetil@kjernsmo.net >>> http://www.kjetil.kjernsmo.net/ >>> >>> >>> ______________________________________________________________________ >>> This email has been scanned by the MessageLabs Email Security System. >>> For more information please visit http://www.messagelabs.com/email >>> ______________________________________________________________________ >>> >> >
Received on Friday, 6 November 2009 19:30:27 UTC