- From: Polleres, Axel <axel.polleres@siemens.com>
- Date: Thu, 24 May 2012 15:32:51 +0200
- To: Andy Seaborne <andy.seaborne@epimorphics.com>, "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
Thanks for the quick response. I can live without the restriction for
QuadData, i.e. allowing them to share bnodes (in fact, after re-thinking
it makes things easier and is consistent with the behaviour outlined in
the update1 example that graphs in the graph store can share bnodes.)...
So we're in agreement. :-)
As for the steps to proceed:
> * Add the example of update1 from above to the update test cases, with outcome GS''.
>
> Not necessary but if you want to fine. I think examples of corner cases are unhelpful -
> concentrate on the important parts, examples do not cover everything.
Yes, I prefer to add that example, since I think it's rather clarifying intended behaviour than being a corner case only. Plus, despite I agree that we can't possivbly cover everyrging, I think we should strive for coverage wherever we are aware of.
> > * Depending on 1) add
> > INSERT DATA { GRAPH<g1> { _:b1 :p :o} GRAPH<g2> {
> _:b1 :p :o} }
> > as either a negative or positive syntax test, plus add
> some clarifying
> > remark on reuse of bnodes across QuadPatterns in the Update doc.
>
> Positive test.
Fine with me.
> > * Add the restriction on blank node label usages across BGPs
> > (and QuadPatterns? Depending on 1)) also to the grammar
> restrictions
> > in query, i.e. at
> > http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#sparqlGrammar
>
> No.
I assume the "No" is for the QuadPAtterns part... May I still suggest
as small editorial fix to explicitly add the restriction on blank node
label usages across BGPs in the numbered list in Section 19.8, i.e.
add something like:
<li>The same BLANK_NODE_LABEL must not appear in different GroupGraphPatterns
within the same query</li>
just in order to have *all* grammar restrictions in one place?
Any other opinions on any of the points above?
Cheers,
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: Thursday, 24 May 2012 3:04 PM
> To: public-rdf-dawg@w3.org
> Subject: Re: Questions on grammar restrictions on Blank Node
> reuse across patterns and a more fundamental question on
> Update semantics for confirmation (was: Re:Draft response KK-15)
>
>
>
> On 24/05/12 13:20, Polleres, Axel wrote:
> > Now for the question that came to my mind in relation to
> the response
> > to comment KK-15. Sorry it's a bit lengthy...
> >
> > In SPARQL 1.1 Query, we say in several places that blank
> node labels
> > may only be used in a single graph pattern in the query
> pattern, e.g.
> > http://www.w3.org/TR/sparql11-query/#bgpBNodeLabels
> > http://www.w3.org/TR/sparql11-query/#grammarBNodeLabels
> >
> > The situation is not so clear for me in QuadPatterns in constructs.
> > My understanding would be, that the restriction on not allowing
> > reuse of blank node labels should also hold across different
> > QuadPatterns as it is across basic grap patterns.
> >
> > i.e. for instance
> >
> > INSERT DATA { GRAPH<g1> { _:b1 :p :o} GRAPH<g2> { _:b2 :p :o} }
> >
> > would be ok, but
> >
> > INSERT DATA { GRAPH<g1> { _:b1 :p :o} GRAPH<g2> { _:b1 :p :o} }
> >
> > wouldn't, but I am not entirely sure.
> > Do we *need* to restrict this?
> > Do we *want* to restrict this?
>
> No and no. Where "we" = "I"
>
> This should be legal - it is inserting a share bNode which we allow
>
> INSERT DATA does not take a quad *pattern* -- it's quad data.
>
> > My guts feeling is that
> >
> > INSERT DATA { GRAPH<g1> { _:b1 :p :o} GRAPH<g2> { _:b1 :p :o} }
> >
> > looks weird and shouldn't be allowed. On the other hand, it
> doesn't seem to do harm either, since there is seemingly no
> correlation between even same-labelled blank nodes across
> graphs... i.e. it wouldn't be the "same" blank node, on the
> other hand it would seem more clear cut to forbid it, even
> with this understanding in mind, to be non-confusing for users.
>
> Allow.
>
> > However, even if we disallow that, I am afraid it doesn't
> end here, so please *read on*:
> >
> > In our current semantics, the statement that "there is no
> correlation between even same-labelled blank nodes across
> graphs" is - as I understand it - not quite true, see next:
> >
>
> Where is that quoted text?
>
> I can't find "correlated" in SPARQL Update or SPARQL Query.
>
>
> > The following example explains what makes my head spin now...
> > Take:
> >
> > Let your dataset consist of an empty default graph and two
> named graphs g1, g2 as follows:
> > GS = {}
> > <g1> { _:b :p :o }
> > <g2> {}
> >
> > Now, let's write:
> >
> > INSERT { GRAPH<g2> { ?S ?P ?O } }
> > WHERE { GRAPH<g1> {?S ?P ?O } }
> >
> > which would result in the following:
> >
> > GS' = {}
> > <g1> { _:b :p :o }
> > <g2> { _:b :p :o }
> >
> > Now, however, what does a subsequent second repitition of
> >
> > INSERT { GRAPH<g2> { ?S ?P ?O } }
> > WHERE { GRAPH<g1> {?S ?P ?O } }
> >
> > result into?
>
> No change - the real and actual bnode is the same. Shared
> bNodes (which are essential for subgraphs).
>
> > According to the current semantics definition, my understanding it
> > that this still results in:
> >
> > GS'' = {}
> > <g1> { _:b :p :o }
> > <g2> { _:b :p :o }
>
> Good.
>
> Bnodes are real objects you can manipulate. They have an
> internal unique identifier. All this _:a business is merely
> a label in a file and systems produce an internal identifier
> for them (even the ones that claim otherwise have a pointer
> to a datastructure so that is the internal name).
>
> > Now, while this is against the possible intuition mentioned
> above that
> > there is no correlation between even same-labelled blank
> nodes across
> > graphs, it confirms the intuition that copying the same graph to
> > itself is an idempotent operation, which - within a
> graphstore would
> > IMO makes sense. What do the current implementations do with this?
> >
> > The alternative would be that the result of two subsequent
> > applications of this update would be:
> >
> > GS''' = {}
> > <g1> { _:b :p :o }
> > <g2> { _:b1 :p :o , _:b2 :p :o }
>
> -1
>
> >
> > But note that this would need, I am afraid, a significant change in
> > the update document. I do rather *not* intend to make any
> changes in
> > the semantics at this point, but would prefer to make clear/confirm
> > that the intended outcome is GS''.
> > Particularly, as saind above, I think that the semantics should be
> > GS'' in order to make copying a graph on itself twice idempotent.
>
> Yes (although the reason is deeper than just idempotency).
>
> >
> > Still, I want to ask for clarification to the group on the
> following two things:
> >
> > 1) Do we want to forbid "sharing bnodes across" across
> QuadPatterns in INSERT and INSERT
> > DATA?
>
> I don't want to forbid it.
>
> >
> > 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'' (and not GS''')?
>
> Yes
>
> >
> > If we agree, I suggest to add the following points to proceed:
> >
> > * Depending on 1) add
> > INSERT DATA { GRAPH<g1> { _:b1 :p :o} GRAPH<g2> {
> _:b1 :p :o} }
> > as either a negative or positive syntax test, plus add
> some clarifying
> > remark on reuse of bnodes across QuadPatterns in the Update doc.
>
> Positive test.
>
> > * Add the restriction on blank node label usages across BGPs
> > (and QuadPatterns? Depending on 1)) also to the grammar
> restrictions
> > in query, i.e. at
> > http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#sparqlGrammar
>
> No.
>
> > * Add the example of update1 from above to the update test
> cases, with outcome GS''.
>
> Not necessary but if you want to fine. I think examples of
> corner cases are unhelpful - concentrate on the important
> parts, examples do not cover everything.
>
> > (Note that I still need to re-check the current test cases whether
> > something similar is covered already, if someone can point me,
> > thanks!)
> >
> >
> > 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
>
>
Received on Thursday, 24 May 2012 13:33:26 UTC