- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Tue, 21 Aug 2012 17:24:33 +0100
- To: public-rdf-dawg@w3.org
(Answered during the call - here for the record)
On 21/08/12 14:23, Lee Feigenbaum wrote:
> I support the below proposal, with a couple of questions:
>
> 1. Are there any test cases that would be affected?
No
(Post-telecon - I reran the SPARQL test suite with a changed translation
step and no tests started failing because of it)
>
> 2. Do we know if this change would satisfy the commenters?
I believe so.
Andy
>
> 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 16:25:01 UTC