- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Tue, 21 Aug 2012 09:23:49 -0400
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
I support the below proposal, with a couple of questions:
1. Are there any test cases that would be affected?
2. Do we know if this change would satisfy the commenters?
thanks,
Lee
On 8/21/2012 7:45 AM, Andy Seaborne wrote:
> This is a brief summary of the BIND comment from Holger and Jeremy.
>
> {
> GRAPH ?g { ?s ?p ?o }
> BIND(?o+1 AS ?o1)
> }
>
> In Query/3LC, BIND operates on the proceeding basic graph pattern, and
> there is always a BGP, although sometimes it's empty (and invisible in
> the syntax).
>
> This design means the introduced variable is minimally constrained by
> scope rules because the resulting expression is joined with the
> overall group elements. The scope restriction of the applies only to
> the BGP.
>
> This use of ?o1 is OK:
>
> {
> ?s :p ?o1
> GRAPH ?g { ?s ?p ?o }
> BIND(?o+1 AS ?o1)
> }
>
> But there is an impact on the expression side of BIND - the scope of
> the ?o is reduced to the BGP as well. So it is undef in the example.
> The ?o is the GRAPH is not available until after the BIND is calculated.
>
> In 1LC and 2LC BIND was translated to the algebra in the group pattern
> processing:
>
> If E is of the form BIND(expr AS var)
> G := Extend(G, var, expr)
> End
>
> making the restriction scope of the var the whole of the preceding
> group up to that point and the same scope for the expression. The new
> var and the expression scope will be the same in any design.
>
> Filters still apply to the group but otherwise this is like writing a
> sub-SELECT (if we allowed * to be used like this:)
>
> {
> { SELECT * BIND(?o+1 AS ?o1)
> {
> ?s :p ?o1
> GRAPH ?g { ?s ?p ?o }
> }
> }
> }
>
> In 3LC, it is handled before that where BGPs and property paths are
> sorted out.
>
> Proposal:
>
> Restore the approach of the formal section of 1LC and 2LC.
> Clarify in the description section.
>
> Andy
>
> .
>
Received on Tuesday, 21 August 2012 13:24:33 UTC