Re: WITH <x> -> INSERT|DELETE... USING *NAMED* <x>

On 26/11/11 18:03, Lee Feigenbaum wrote:
> On 11/26/2011 12:44 PM, Andy Seaborne wrote:
>> (not replying the the editorial nit)
>>
>> On 26/11/11 15:12, Eric Prud'hommeaux wrote:
>>> http://www.w3.org/2009/sparql/docs/update-1.1/#deleteInsert
>>>
>>> [[
>>> WITH<g1> INSERT { x y z } DELETE { a b c } WHERE { ... }
>>>
>>> Is considered equivalent to:
>>>
>>> INSERT { GRAPH<g1> { x y z } } DELETE { GRAPH<g1> { a b c } }
>>> USING<g1> WHERE { ... }
>>> ]]
>>>
>>> should that be "USING NAMED<g1>" ?
>>> ^^^^^
>>
>> No, oddly.
>>
>> USING <g1> means use <g1> for the default graph of WHERE {...}. So there
>> is an RDF dataset of with the default graph and no named graphs.
>
> Right. Andy, do you remember the motivation for this?
>
> Seems like an equally valid design would be for it to stand for
> USING <g1>
> USING NAMED <g1>
>
> so that you'd have the graph available in both parts of the dataset.
>
> (I have no strong feeling & not looking to change things for change's
> sake, just don't recall the original motivation.)
>
> Lee

My recollection is that it handles the occurrence of GRAPH <g1> and 
GRAPH ?var in the WHERE part better.

The idea of WITH is to target the pattern at a different graph, hence 
modifying the templates with GRAPH <g1> { } and making the default graph 
<g1>, not use a named graph.

Unretargetted, old WHERE { GRAPH <g1> {} } (no <g1> in the dataset) 
didn't match, and this equivalence preserves that corner case.

A certain amount of thinking backwards here - Paul?

	Andy

>
>>
>> This way, if GRAPH ?var is used in the pattern, GRAPH ?var never matches
>> (no named graphs).
>>
>> WHERE { ... GRAPH ?var { ... } ... }
>>
>> and
>>
>> WHERE { ... GRAPH <g1> { ... } ... }
>>
>> do not match.
>>
>>
>> Writing GRAPH <g1> works for the INSERT {} and DELETE {} parts because
>> there it's a template.
>>
>> Graph <g1> need not exist before the operation.
>>
>> Andy
>>
>>
>>
>>
>>
>>
>>
>>
>

Received on Saturday, 26 November 2011 18:40:03 UTC