W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2012

Re: another update test added (was: RE: Questions on grammar restrictions on Blank Node reuse across...)

From: Andy Seaborne <andy.seaborne@epimorphics.com>
Date: Mon, 28 May 2012 14:27:08 +0100
Message-ID: <4FC37D2C.7040706@epimorphics.com>
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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:48 GMT