- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Mon, 28 May 2012 09:11:33 +0100
- To: public-rdf-dawg@w3.org
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.html
>>
>>
>>
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/insert-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 08:12:04 UTC