BIND semantics (2)

This is a formal last call comment on
http://www.w3.org/TR/2012/WD-sparql11-query-20120724/
following on from my colleague's comment
http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2012Aug/0014.html

Do the following sections of the specification contradict each other?

A) http://www.w3.org/TR/2012/WD-sparql11-query-20120724/#selectExpressions
"The rules of assignment in SELECT expression are the same as for 
assignment in BIND."

B) 
http://www.w3.org/TR/2012/WD-sparql11-query-20120724/#sparqlTranslateBindAssignments

C) 
http://www.w3.org/TR/2012/WD-sparql11-query-20120724/#sparqlSelectExpressions

[Aside: the text in (A) articulates my understanding of the outcome of 
the Santa Clara face 2 face, where this topic was discussed]

If they do, then a normative correction is required - please make such a 
correction to also satisfy Holger and his comment:
http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2012Aug/0014.html

If they do not, then please articulate which of the following queries 
select different results,
this follow Holger's comment and your text (A).
I do not fully understand the text in either (B) or (C) and would 
appreciate a small amount of guidance as to how I am misconstruing there 
to be a contradiction in your text.

Please note that Holger suggested I was misunderstanding how the text of 
http://www.w3.org/TR/2012/WD-sparql11-query-20120724/#bind
" Use of BIND ends the preceding basic graph pattern" to example (a) 
below. To clarify my understanding, I provide a parse tree, according to 
your grammar, below. Reviewing the earlier last call draft I find my 
reading much more compelling than alternatives, and note that at best 
this appears to me to be an unintended and undocumented normative change 
between
http://www.w3.org/TR/2011/WD-sparql11-query-20110512/
(particularly
http://www.w3.org/TR/2011/WD-sparql11-query-20110512/#sparqlTranslateGraphPatterns
)
and
http://www.w3.org/TR/2012/WD-sparql11-query-20120724/


a)

PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT (?x ?y)
WHERE {
   GRAPH <http://example.org> {
          ?x rdfs:label ?label .
   }
   BIND (?label AS ?y) .
}


b)

PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT (?x ?y)
WHERE {
   GRAPH <http://example.org> {
          ?x rdfs:label ?label .
          BIND (?label AS ?y) .
   }
}

c)
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT (?x ?y)
WHERE {
   SELECT (?label AS ?y)
   WHERE {
      GRAPH <http://example.org> {
          ?x rdfs:label ?label .
      }
   }
}

d)
  PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT (?x ?y)
WHERE {
   GRAPH <http://example.org> {
       SELECT (?label AS ?y)
       WHERE {
          ?x rdfs:label ?label .
       }
   }
}

thanks

Jeremy Carroll, on behalf of TopQuadrant, Inc.

Appendix:

Query[
   Prologue[
'PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>'
]
  SelectQuery[
   SelectClause[
SELECT (?x ?y)
]
   WhereClause[
    'WHERE'
   GroupGraphPattern[
      '{'
     GroupGraphPatternSub[
      GraphPatternNotTriples[
       GraphGraphPattern[
        'GRAPH <http://example.org> {
          ?x rdfs:label ?label .
        }'
       ]
      ]
      GraphPatternNotTriples[
       Bind[
        'BIND (?label AS ?y)
       ]
      ]
      '.'
    '}'
   ]
]

Received on Tuesday, 14 August 2012 05:24:58 UTC