- From: Polleres, Axel <axel.polleres@siemens.com>
- Date: Mon, 1 Oct 2012 13:17:12 +0200
- To: "Olivier.Corby@sophia.inria.fr" <Olivier.Corby@sophia.inria.fr>, "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
Dear Olivier, Thanks for joining the discussion! The test cases were created under the understanding that bnodes are scoped over the whole request (cf. clarifying rewording in Update and draft response to RV-10) [1,2]. If there's no agreement here, then we have to change the definitions in Update, and apparently, implementations which passs the Suggested test cases would need to be changed. As for your suggested additional case, I think this is a tricky one: > INSERT { GRAPH :g1 { _:b :p :o } } WHERE {}; INSERT { > GRAPH :g2 { _:b :p :o } } WHERE {} According to my reading of our definitions, this depends on whether we view the two empty mappings returned by the two WHERE clauses as identical or Different, since the skolem function sk in http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml#def_datasetQuadPattern is unique to the request and the mapping (this behaviour is analogous to CONSTRUCT) There is IMO room for both interpretations: 1) if we view the same mappings for two where clauses as identical, then > INSERT { GRAPH :g1 { _:b :p :o } } WHERE {}; INSERT { > GRAPH :g2 { _:b :p :o } } WHERE {} Would behave the same as insert-data-same-bnode2.ru, since mu_WHERE1=mu_WHERE2={} ------------------------------------------------ 2) if we view mappings from different WHERE clauses as different, it would also probably makse sense as demonstrated by the following case. Consider the GS that consists of the Default graph :s :p :o . :s :q :r. and an empty set of named graphs. And the following variation of our example: > INSERT { GRAPH :g1 { _:b :p :o } } WHERE { ?X :p :o }; > INSERT { GRAPH :g2 { _:b :p :o } } WHERE { ?X :q :r } Both WHERE clauses return identical mappings mu_WHERE1=mu_WHERE2=( ?X -> :s ), stemming from different triples, though, so IMO it would be arguably ok to return different bnodes for the first and the second. ------------------------------------------------ How do current implementations treat this? I am afraid we need to reach agreement on these cases, before we can proceed: * If we go for 1) then we would be ok with our current wording: "Here, skì(TriplesTemplate) stands for replacing any blank nodes occurring in the TriplesTemplate with a new blank node unique to the current update request and ì, and different from any blank nodes used in DS or in GS." * If we go for 2), I would suggest to amend: "Here, skì(TriplesTemplate) stands for replacing any blank nodes occurring in the TriplesTemplate with a new blank node unique to the current update request and ì, and different from any blank nodes used in DS or in GS. Note that two solution mappings ì1 and ì2, stemming from two different WHERE clauses within the same request are viewed as different with regards to sk, even if they agree on domain and variable assignments" Axel 1. http://lists.w3.org/Archives/Public/public-rdf-dawg/2012JulSep/0231.html 2. http://www.w3.org/2009/sparql/wiki/CommentResponse:RV-10 > -----Original Message----- > From: Olivier Corby [mailto:Olivier.Corby@sophia.inria.fr] > Sent: Montag, 01. Oktober 2012 10:16 > To: public-rdf-dawg@w3.org > Subject: Re: 2 New INSERT DATA test cases (was: Test case > proposal in the context of RV-10: insert-data-same-bnode) > > On 09/25/2012 10:40 PM, Polleres, Axel wrote: > > Note that I added another variant of that test case for > approval now which uses two INSERT DATAs in one request, i.e. > > > > ... > > > > 2) > > > > > http://www.w3.org/2009/sparql/docs/tests/data-sparql11/basic-update/in > > sert-data-same-bnode2.ru > > shall test the behavior of > > INSERT DATA { GRAPH :g1 { _:b :p :o } } ; > > INSERT DATA { GRAPH :g2 { _:b :p :o } } > > > I think it is questionable whether the query inserts the same > blank node in the two insert data. > The reason is that if you split the query into two insert > data that are executed separately, different blank nodes > will be generated. Hence for compositionality of the ";" > operation, it may be interesting that the behaviour be the > same in the two cases. > > In addition, the (similar) query below inserts different blank nodes. > > INSERT { GRAPH :g1 { _:b :p :o } } WHERE {}; INSERT { > GRAPH :g2 { _:b :p :o } } WHERE {} > > > Olivier > > > >
Received on Monday, 1 October 2012 11:17:40 UTC