- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Mon, 28 May 2012 14:27:08 +0100
- To: public-rdf-dawg@w3.org
On 28/05/12 13:36, Polleres, Axel wrote:
>> What do the definitions say?
>
> The current definitions that affect this behavior are
> 1) Dataset-UNION (df. http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml#def_datasetUnion )
> which does NOT standardize apart blank nodes
> and
> 2) Dataset( QuadPattern, P, DS, GS ) (cf. http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml#def_datasetPattern)
> which explicitly says that the scoping graph SG used for BGP matching is equal to the active graph, i.e., blank nodes from the active graph are preserved in solutions.
>
> "Historically" when we did that, it was because we wanted to preserve bnodes in updates on the same graph.
>
> I.e., on
>
> GS = {}
> <g1> { _:b :p :o }
>
> a request such as:
>
> update3 =
> INSERT { GRAPH<g1> { ?S :q :o } }
> INSERT { GRAPH<g1> { ?S :p :o } }
>
> should result in
>
> GS' = {}
> <g1> { _:b :p :o ; :q :o }
>
> instead of
>
> GS'' = {}
> <g1> { _:b :p :o . _:c :q :o }
>
> We didn't make any special assumptions about moving bnodes *across* graphs in the definitions for Dataset-UNION, and Dataset(),
> that is, in this sense I understand these definitions such that the result of update1 and update 2 (from the previous mails
> should be equivalent. Anything else, it seems to me, would need a modification of the Update semantics definitions.
>
> Now, there is some room probably of what we consider "equivalent" for datasets... and that might have to do with
> implementations... As Greg put it, he said that update1 would be idempotent, but he would return
> different bnode-ids, on update1, that was
>
> GS'''' = {}
> <g1> { _:b :p :o }
> <g2> { _:c :p :o }
>
>
> Question to greg here: is this because bnode-labels in greg's implementations are graph-specific? If so, and if these label
> renamings across graphs are round-trippable, then update 2 should probably also be idempotent, i.e. still the result would be
>
> GS'''' = {}
> <g1> { _:b :p :o }
> <g2> { _:c :p :o }
>
> Is that so?
No (I hope).
Greg - can you confirm that the problem is the way the results are
specified, not test per se:
mf:result [
ut:graphData [ ut:graph <insert-05-g1-pre.ttl> ;
rdfs:label "http://example.org/g1" ] ;
ut:graphData [ ut:graph <c> ;
rdfs:label "http://example.org/g2" ] ;
] ;
means read the file insert-05-g1-pre.ttl a second and third time, the
first being in the mf:action.
So it generates different blanks nodes each time it's read, hence no
shared bank node *in creating the results* -- nothing to do with the
operation.
Hence either specify results in TriG/N_quads (but these are
under-defined in this area) or make a conclusion that records the
intended result and test for that (my long update request suggestion).
Andy
>
> best,
> Axel (unfortunately probably not be able to dial in tomorrow being at ESWC)
> ________________________________________
> From: Andy Seaborne [andy.seaborne@epimorphics.com]
> Sent: Monday, May 28, 2012 11:47 AM
> To: Polleres, Axel
> Cc: public-rdf-dawg@w3.org; Gregory Williams
> Subject: Re: another update test added (was: RE: Questions on grammar restrictions on Blank Node reuse across...)
>
> On 28/05/12 10:16, Polleres, Axel wrote:
>> Dear all,
>>
>> I am a bit unsure/worried in the sense of what happens if I think this further...
>>
>> Take this simple modification:
>>
>> update2 = INSERT { GRAPH<g2> { ?S ?P ?O } }
>> WHERE { GRAPH<g1> {?S ?P ?O } } ;
>> INSERT { GRAPH<g1> { ?S ?P ?O } }
>> WHERE { GRAPH<g2> {?S ?P ?O } }
>>
>> Note now the second update copies back data from g2 to g1 instead of repeating the first update...
>> Would this second operation still be idempotent or not?
>>
>
> What do the definitions say?
>
> Andy
>
>> Best,
>> Axel
>>
>>
>>
>
Received on Monday, 28 May 2012 13:27:42 UTC