- From: Andy Seaborne <andy@apache.org>
- Date: Thu, 14 Jul 2016 19:08:16 +0100
- To: public-sparql-exists@w3.org
On 14/07/16 17:33, Peter F. Patel-Schneider wrote: > Let's try to keep issues clean. > > Issue-3 is about how blank nodes work when they are substituted. When to > substitute is a different matter. > > peter +1 I picked the example to be issue-3 only Daniel : for the numbering: https://w3c.github.io/sparql-exists/docs/sparql-exists.html Issue-2 : variable only locations. Issue-4 : scope related Andy > > > On 07/14/2016 08:25 AM, Daniel Hernández wrote: >> Hi all, >> >> With the same data that Andy proposed, another query is: >> >> Query 2: >> --------------------- >> PREFIX : <http://example/> >> >> SELECT * { >> ?s :p ?o >> FILTER EXISTS { SELECT ?p { ?s ?p 1 } } >> } >> >> In this case ?s is not in-scope on the inner graph pattern. However, Virtuoso >> and rdf4j >> assume that ?s in the outer and inner graph patterns are correlated. That is, >> the result is >> >> Outcome 1: >> ----------------- >> | s | p | o | >> ================= >> | _:s1 | :p | 1 | >> ----------------- >> >> I think that substituting a variable that occurs in a basic graph pattern has >> some problems >> that are originated by the two roles that it has. First, it has the role of >> naming a value from >> the data. Second, it has the role of using a value from the current solution >> mapping. >> >> In the report (http://arxiv.org/abs/1606.01441) we normalize a query before >> applying >> substitution: >> >> Query 3: >> --------------------- >> PREFIX : <http://example/> >> >> SELECT * { >> ?s :p ?o >> FILTER EXISTS { SELECT ?p { ?z ?p 1 FILTER (!(bound(?z) && bound(?s)) || ?z >> = ?s) } } >> } >> >> After the normalization, the inner graph pattern is equivalent with the >> previous one, but >> the variable ?s does not occur in a basic graph pattern, so it only has the >> role of using values. >> In this case substitution is safe respect to the issue of blank nodes. >> >> Daniel >> >> >> >
Received on Thursday, 14 July 2016 18:08:47 UTC