- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Mon, 19 Apr 2010 09:19:00 +0100
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
In SPARQL 1.0 the following query is illegal because the label "a" is used twice in different BGPs. PREFIX : <http://example/> SELECT * { _:a :p ?x . OPTIONAL { _:a :w ?y } } We have a choice in SPARQL 1.1 Query as to whether this scoping rule applies to the query or the SELECT statement. In SPARQL 1.1, we now have nested SELECTs. It is convenient to be able to paste one SELECT, having got it working, into another query. Having to check labels stops a simple cut&paste of we decide the scope is the query. PREFIX : <http://example/> SELECT * { _:a :p ?x . { SELECT * { _:a :p ?y } } } I suggest that we clarify blank node scoping rule to apply to one SELECT statement, not the whole query, making the SPARQL 1.1 query above legal. Analogous things happen with unprojected variables: PREFIX : <http://example/> SELECT * { :a :p ?x . { SELECT (COUNT(*) AS ?C) { :a :q ?x } } } The two ?x are unrelated - they never meet at an operation that causes a join over them. CONSTRUCTs already allow labels to be used twice. CONSTRUCT { _:a :p ?x } WHERE { _:a :q ?x } Andy
Received on Monday, 19 April 2010 08:19:33 UTC