Re: Review of "SPARQL 1.1 Update"

On 8 Jan 2010, at 15:35, Paul Gearon wrote:

> On Fri, Jan 8, 2010 at 5:55 AM, Steve Harris  
> <steve.harris@garlik.com> wrote:
>> On 7 Jan 2010, at 18:35, Paul Gearon wrote:
>> ...
>>>>
>>>> 2/ Ambiguity.
>>>> This sequence of tokens:
>>>>
>>>> WITH <uri>
>>>> DELETE { ?x :p ?v }
>>>> INSERT { ?x :q ?v }
>>>> WHERE { ?x :q 123 }
>>>>
>>>> can be parsed at least 2 different ways:
>>>>
>>>> As two operations:
>>>> WITH <uri>
>>>> DELETE { ?x :p ?v }
>>>> # No WHERE
>>>> # followed by a separate operation
>>>> # No WITH
>>>> INSERT { ?x :q ?v }
>>>> WHERE { ?x :q 123 }
>>>>
>>>> or as
>>>> # All one operation
>>>> WITH <uri>
>>>> DELETE { ?x :p ?v }
>>>> INSERT { ?x :q ?v }
>>>> WHERE { ?x :q 123 }
>>>> # WITH and WHERE included
>>>
>>> The use of semicolon to join these was discussed in the past. That
>>> would seem to me to be the most sensible approach. I've put it in  
>>> for
>>> now, but would appreciate comment.
>>
>>
>> Semicolon to separate, surely? Or maybe I'm completely  
>> misunderstanding
>> what's going on.
>
> That's what had been discussed initially. But then I learnt that
> everything had initially been designed to be separable without an
> explicit separator character. The only case (that I know of) where
> this breaks down, is Andy's example above. Surely it makes more sense
> to join this one case to together than it does to separate everything
> else?

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

-- 
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 Friday, 8 January 2010 16:04:45 UTC