FW: Further comment on SPARQL 1.1 Test Cases

Hi all,

as per Rob's edit suggestions below...

1)
--------------------------
 Variables in QuadDatas are disallowed in INSERT DATA requests
 (see Note 8 in the grammar). That is, the INSERT DATA statement
 only allows to insert ground triples. Blank nodes in QuadData
 are assumed to be disjoint from the blank nodes in the Graph Store,
 i.e., will be inserted with "fresh"  blank nodes.
--------------------------


I'm happy with that one, however I think there is a misunderstanding
in the second editorial suggestion that Rob makes...

> Per Note 10 in the grammar blank node identifiers may be reused across graph blocks in QuadData but
> users should note that distinct fresh blank nodes will be generated for each usage in each block.

... I'd be happier with the following version (editing Note 10. in the Grammar: http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#sparqlGrammar)

2)
--------------------------
s/
A blank label can be used in only a single basic graph pattern in a query. This only applies to patterns, not to QuadData./
A blank label can be used in only a single basic graph pattern in a query. This only applies to graph patterns in the where clause, not to QuadPattern nor QuadData./
--------------------------

Note particularly, that Rob's suggestion
"users should note that distinct fresh blank nodes will be generated for each usage in each block."
seems to disagree with what we had discussed in thread
thread [1].

i.e. in Rob's example

Assume that G1 and g2 are both empty
then

INSERT DATA {
              GRAPH<g1> { _:b1 :p :o }
              GRAPH<g2> { _:b1 :p :o }
            }

should (following similar arguments as in thread [1])
behave equivalent to

INSERT DATA {
              GRAPH<g1> { _:b1 :p :o }
              GRAPH<g2> { _:b1 :p :o }
            }
; INSERT { GRAPH <g2> { ?S ?P ?O } }
       WHERE { GRAPH <g1> {?S ?P ?O } }

i.e. the subsequent "copying" of g1 to g2 is redundant, because the
same bnode is to be inserted in both g1 and g2. Note that according to  http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml#def_datasetQuadPattern
blank nodes in different QuadPatterns are *not* mapped to different blank nodes.

Summarizing, unless anybody disagrees, I suggest the following:

 * adapt editorial suggestion 1) as above in Update
 * amend remark 10 in http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#sparqlGrammar
   as suggested above in 2)
 * Reply to Rob that shared blank nodes across QuadPatterns within the same insert are allowed and
   behave as per test case basic-update/manifest#insert-05a
 * Optionally, we could add a variant of basic-update/manifest#insert-05a to the test
   suite that explicitly covers Rob's example.

Best,
Axel


1. http://lists.w3.org/Archives/Public/public-rdf-dawg/2012AprJun/0163.html









________________________________

From: Rob Vesse [mailto:rvesse@dotnetrdf.org]
Sent: Mittwoch, 19. September 2012 20:03
To: Polleres, Axel
Cc: public-rdf-dawg-comments@w3.org
Subject: Re: Further comment on SPARQL 1.1 Test Cases


Yes of course you can forward to the list, I will CC this to the list myself

Rob

From: "Polleres, Axel" <axel.polleres@siemens.com>
Date: Wednesday, September 19, 2012 4:39 AM
To: Rob Vesse <rvesse@dotnetrdf.org>
Subject: RE: Further comment on SPARQL 1.1 Test Cases



        Hi Rob,

        I realiszed that I sent this to you only offlist. Hope it is ok for you if I fwd your suggestions with the WG list?

        thanks,
        Axel


________________________________

                From: Rob Vesse [mailto:rvesse@dotnetrdf.org]
                Sent: Dienstag, 18. September 2012 18:05
                To: Polleres, Axel
                Subject: Re: Further comment on SPARQL 1.1 Test Cases


                Hi Axel

                Perhaps if the group were to amending the following text from 3.1.1 INSERT DATA

                Variables in QuadDatas are disallowed in INSERT DATA requests (see Notes 8 in the grammar <http://www.w3.org/TR/sparql11-query/#sparqlGrammar> ). That is, the INSERT DATA statement only allows to insert ground triples. Blank nodes in QuadDatas are assumed to be disjoint from the blank nodes in the Graph Store, i.e., will be inserted with "fresh" blank nodes.


                And add additional text something like the following:


                Per Note 10 in the grammar blank node identifiers may be reused across graph blocks in QuadData but users should note that distinct fresh blank nodes will be generated for each usage in each block.


                That's a little clunky but I'm sure the WG can come up with something a little more flowing that gets the clarification across, it's primarily just a case of referring back to that note in the main query document.


                Thanks,

                Rob

                                From: "Polleres, Axel" <axel.polleres@siemens.com>
                Date: Tuesday, September 18, 2012 7:48 AM
                To: Rob Vesse <rvesse@dotnetrdf.org>
                Subject: RE: Further comment on SPARQL 1.1 Test Cases



                        Hi Rob,

                        Would you have a specific editorial suggestion for a respective explaining text which we could add to the Update document?

                        Thanks,
                        Axel



________________________________

                                From: Rob Vesse [mailto:rvesse@dotnetrdf.org]
                                Sent: Freitag, 14. September 2012 17:46
                                To: Polleres, Axel; public-rdf-dawg-comments@w3.org
                                Subject: Re: Further comment on SPARQL 1.1 Test Cases


                                Hi Axel

                                Yes this answers my specific question but I still think it may be worth the group adding some clarifying text to the specification to make the distinction clear

                                Rob

                                                                From: "Polleres, Axel" <axel.polleres@siemens.com>
                                Date: Thursday, September 13, 2012 11:01 PM
                                To: Rob Vesse <rvesse@dotnetrdf.org>, "public-rdf-dawg-comments@w3.org" <public-rdf-dawg-comments@w3.org>
                                Subject: RE: Further comment on SPARQL 1.1 Test Cases



                                        Hi Rob,

                                        (note that this is not a formal reply, but just quickly:)

                                        > 2 - The restriction does not apply to updates

                                        holds.

                                        SPARQL1.0 forbade (and SPARQL1.1 still forbids this blank nodes to be shared across BGPs, cf.
                                        http://www.w3.org/TR/sparql11-query/#grammarBNodeLabels

                                        The group didn't see a reason to put this restriction on QuadPatterns in the head of DELETE/INSERT statements in Update (which are different from BGPs in the WHERE clause).

                                        Hope this clarifies matters, pleases let us know if this answers your request or whether you still expect a formal group reply,

                                        Axel





________________________________

                                        From: Rob Vesse [mailto:rvesse@dotnetrdf.org]
                                        Sent: Freitag, 14. September 2012 01:39
                                        To: public-rdf-dawg-comments@w3.org
                                        Subject: Further comment on SPARQL 1.1 Test Cases


                                        I am working towards getting dotNetRDF back to as close to 100% compliance with the current state of the SPARQL 1.1 Query and Update specifications as possible and have run into one test case which is confusing to me because it seems as odd with SPARQL 1.0 behavior.

                                        This is syntax-update-53.ru:


                                        PREFIX : <http://www.example.org/>
                                        INSERT DATA {
                                                      GRAPH<g1> { _:b1 :p :o }
                                                      GRAPH<g2> { _:b1 :p :o }
                                                    }
                                        Currently my implementation rejects this on the grounds that the same blank node is reused in different graph patterns.  It was my understanding that the 1.0 specification forbade this and there are in fact a selection of 1.0 tests that specifically check that a parser rejects such queries.
                                        So I assume one of three things must be true:
                                        1 - This restriction has been removed in SPARQL 1.1 (if so where does the spec state this?)
                                        2 - The restriction does not apply to updates
                                        3 - The test case is incorrect
                                        I would appreciate some feedback on this specific test case but also that the working group would please make sure the test suite is all up to date and accurate (sorry to complain yet about this yet again but it really makes it hard to check an implementation if you have to check for each failing test whether the test case is actually correct)
                                        Rob

Received on Thursday, 20 September 2012 06:49:59 UTC