- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Fri, 08 Jan 2010 18:28:10 +0000
- To: Paul Gearon <gearon@ieee.org>
- CC: Steve Harris <steve.harris@garlik.com>, SPARQL Working Group <public-rdf-dawg@w3.org>
On 08/01/2010 4:16 PM, Paul Gearon wrote: > Fri, Jan 8, 2010 at 11:04 AM, Steve Harris<steve.harris@garlik.com> wrote: > <snip/> >> Well, I'd have thought the common case was a single operation in a request, >> so: >> >> WITH<uri> >> DELETE { ?x :p ?v } >> INSERT { ?x :q 234 } >> WHERE { ?x :q 123 } >> >> That mean less characters are used on average, if you care about that sort >> of thing. And if you want two operations: >> >> WITH<uri> >> DELETE { ?x :p ?v } >> ; >> INSERT { ?x :q 234 } >> WHERE { ?x :q 123 } >> >> That seems visually like two statements to me. Some SQL systems use ; to >> separate statements too, and it's familiar to programmers of C-derived >> languages. >> >> - Steve > > Makes sense. So do we tack a [ ';' ] to the end of the expression? > > Paul Not overloading DELETE would work now we have not got a short-form of INSERT and the multiple use of DELETE and INSERT with one WHERE. I suggest: REMOVE { ?x :p ?v } for the short form of delete. So now the keyword DELETE is only used with required WHERE giving a grammar of: DELETE {} (INSERT {} )? WHERE {} INSERT {} WHERE {} REMOVE {} ----- Another way to proceed is to put the WHERE pattern first because the keyword introduces the operator. There is a similarity with the some programming language features so USING is a possible choice: USING { pattern } DELETE {} INSERT {} And the grammar is USING { pattern } ( DELETE {} (INSERT {} )? | INSERT {} ) where () are EBNF grammar brackets, not SPARQL update tokens. Separating the DELETE from it's pattern by a INSERT is not now possible. For completeness, if WITH were a scoped form, USING could be as well for style consistency. USING { pattern } { DELETE {} INSERT {} } ----- Overall, I prefer both the use of REMOVE and of the first USING example. Andy
Received on Friday, 8 January 2010 18:28:29 UTC