- From: Polleres, Axel <axel.polleres@siemens.com>
- Date: Mon, 28 May 2012 11:16:20 +0200
- To: Andy Seaborne <andy.seaborne@epimorphics.com>, "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
- CC: Gregory Williams <greg@evilfunhouse.com>
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?
Best,
Axel
--
Dr. Axel Polleres
Siemens AG Österreich
Corporate Technology Central Eastern Europe Research & Technologies
CT T CEE
Tel.: +43 (0) 51707-36983
Mobile: +43 (0) 664 88550859
Fax: +43 (0) 51707-56682 mailto:axel.polleres@siemens.com
> -----Original Message-----
> From: Andy Seaborne [mailto:andy.seaborne@epimorphics.com]
> Sent: Monday, 28 May 2012 11:12 AM
> To: public-rdf-dawg@w3.org
> Subject: Re: another update test added (was: RE: Questions on
> grammar restrictions on Blank Node reuse across...)
>
>
>
> On 26/05/12 16:01, Gregory Williams wrote:
> > On May 26, 2012, at 3:28 AM, Axel Polleres wrote:
> >
> >> As per
> >>
> >>
> http://lists.w3.org/Archives/Public/public-rdf-dawg/2012AprJun/0165.h
> >> tml
> >>
> >>
> >>
> I added the test case corresponding to this one:
> >>
> >>>> 2) Do we agree that the semantics of
> >>>>
> >>>> update1 = INSERT { GRAPH<g2> { ?S ?P ?O } } WHERE {
> >>>> GRAPH<g1> {?S ?P ?O } } ; INSERT { GRAPH<g2> { ?S ?P ?O }
> >>>> } WHERE { GRAPH<g1> {?S ?P ?O } }
> >>>>
> >>>> should be GS''
> >>
> >> now under:
> >>
> >>
> http://www.w3.org/2009/sparql/docs/tests/data-sparql11/basic-update/i
> >> nsert-05.ru
> >>
> >>
> >>
> (since I have no implementation at hand to run it at the
> moment, I'd appreciate feedback in case there's any issues)
> >
> > Do you think there's an automated way to test this? I ran
> the new test
> > against my engine, and it failed. Here's why:
> >
> > mf:result [ ut:graphData [ ut:graph<insert-05-g1-pre.ttl> ;
> > rdfs:label "http://example.org/g1" ] ; ut:graphData [
> > ut:graph<insert-05-g1-pre.ttl> ; rdfs:label "http://example.org/g2"
> > ] ; ] ;
> >
> > When my test harness parses insert-05-g1-pre.ttl into the
> two graphs,
> > the bnode will be parsed twice, in two different contexts, yielding
> > two different internal blank node labels (do we agree that
> this is the
> > expected behavior?). And so instead of comparing my actual results
> > against
> >
> > GS'' = {} <g1> { _:b :p :o } <g2> { _:b :p :o }
> >
> > I end up comparing against something new:
> >
> > GS'''' = {} <g1> { _:b :p :o } <g2> { _:c :p :o }
> >
> > Which still succeeds at testing for the operation being idempotent,
> > but has different bnodes in the two graphs.
> >
> > I'm not sure how to make this succeed except by manually
> "fixing" my
> > test results before submitting them (which I really don't
> want to do).
> >
>
> Agreed.
>
> A way to test this is to add:
>
> prefix : <http://example.org/>
> INSERT { GRAPH :g2 { ?S ?P ?O } }
> WHERE { GRAPH :g1 { ?S ?P ?O } } ;
>
> INSERT { GRAPH :g2 { ?S ?P ?O } }
> WHERE { GRAPH :g1 { ?S ?P ?O } } ;
>
> INSERT { :s :triplesInG2 ?count }
> WHERE
> {
> { SELECT (count(*) As ?count)
> {
> GRAPH :g2 { ?S ?P ?O }
> }
> }
> } ;
>
> INSERT { :s :matchesG1G2 ?count }
> WHERE
> {
> { SELECT (count(*) As ?count)
> {
> GRAPH :g2 { ?S ?P ?O }
> GRAPH :g1 { ?S ?P ?O } # Checks sharing.
> }
> }
> } ;
>
>
> DROP :g1 ;
> DROP :g2 ;
>
> and check the default graph for counts of 1 and 1.
>
>
>
>
> > .greg
> >
> >
>
>
Received on Monday, 28 May 2012 09:17:02 UTC