W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2012

Fix to the rq25 spec for BIND

From: Andy Seaborne <andy.seaborne@epimorphics.com>
Date: Fri, 24 Aug 2012 11:47:06 +0100
Message-ID: <50375BAA.8040507@epimorphics.com>
To: SPARQL Working Group <public-rdf-dawg@w3.org>
This completes ACTION-673.

The design has been reverted to that of 1LC and 2LC

1/ Informative text changed.
2/ Variable Scope section has a paragraph specifically on BIND
3/ Algebra translation translation reverts to previous text (and special 
on BIND removed)

No execution tests are invalidated.

Reverting the scope rules affects syntax tests:
     syntax-BINDscope7.rq
     syntax-BINDscope8.rq
which are now bad syntax.


A few notes about the BIND fix:

This is illegal under both designs:

SELECT *
{
    ?s ?p ?o
    BIND("foo" AS ?o)
}

This is illegal on the reverted design:

SELECT * {
     ?s ?p ?o
     OPTIONAL{?s ?p2 ?o2}
     BIND(5 AS ?o2)
}


And note adding {} (which are not a subquery with project) does not make 
any difference:

SELECT *
{
    { ?s ?p ?o }
    BIND("foo" AS ?o)	# Bad
}

because it is still a previous element of a group so the accumulated 
scope of that element shows up in the group BIND is in - i.e. it 
includes all of { ?s ?p ?o }

which makes sense because we want BIND to apply a previous element like:

SELECT * {
    { ?s ?p ?o } UNION {?s ?p2 ?o2}
    BIND(5 AS ?o)       # Bad
   }


Legal: masked

SELECT *
{
    { SELECT ?s { ?s ?p ?o } }
    BIND("foo" AS ?o)	# GOOD
}

Legal: scope rules do not extend outwards of {} in which BIND is used.

SELECT *
{
    { ?s ?p ?o }
    UNION
    { BIND("foo" AS ?o) }	# GOOD
}
Received on Friday, 24 August 2012 10:47:34 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:49 GMT