- From: james anderson <james@dydra.com>
- Date: Sun, 2 Apr 2017 18:23:37 +0000
- To: public-sparql-exists@w3.org
good evening; > On 2017-04-02, at 20:05, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote: > > > > On 04/02/2017 11:01 AM, james anderson wrote: >> good evening; >> >>> On 2017-04-02, at 19:37, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote: >>> >>> […] >>>> >>>>> >>>>> So you do not agree, for example, that that it is problematic that according >>>>> to the SPARQL specification that the running the query >>>>> >>>>> SELECT ?x WHERE { >>>>> ?x :p :d . >>>>> FILTER EXISTS { ?x :q :b . } } >>>>> >>>>> against the graph >>>>> >>>>> _:c :p :d . >>>>> :e :q :b . >>>>> >>>>> produces a result set containing a query solution that maps ?x to _:c? >>>>> >>>>> peter >>>> >>>> it would be problematic were the recommendation to require an implementation to produce that result. >>>> the recommendation does not require that. >>>> i do understand that various interpretations of the recommendation lead one to believe that it implies that result. >>>> those interpretations are flawed. >>>> >>>> best regards, from berlin, >>>> >>>> >>>> >>>> --- >>>> james anderson | james@dydra.com | http://dydra.com >>> >>> Are you saying that the SPARQL specification at >>> https://www.w3.org/TR/sparql11-query/ does not require this result? My >>> understanding is that it does. >> >> we have been in disagreement on the conclusion, that the recommendation requires this interpretation, since the point when that example was put forward. >> >>> >>> >>> My understanding is that, assuming that joins of empty BGPs are removed >>> everywhere, the SPARQL specification translates the above query into >>> >>> Project( ToList(Filter( exists ( BGP(?x :q :b) ) , BGP(?x :p :d) ) ) , >>> { ?x } ) >>> >>> This expression is evaluated on the graph by first evaluating BGP(?x :p :d), >>> resulting in the singleton multiset of solutions {{ {(?x,_:c)} }}. Then the >>> exists substitution is performed for the solution {(?x,_:c)}, resulting in >>> BGP(_:c :q :b), whose subsequent evalution results in the multiset of >>> solutions {{ {} }}, i.e., a multiset containing the empty solution. >>> >>> Because the result is not the empty multiset, the filter does not filter out >>> the solution {(?x,_:c)}. So the result of the Filter expression is the >>> singleton multiset of solutions {{ {(?x,_:c)} }}, and then the result of the >>> entire query is the unordered list of solutions [ {(?x,_:c)} ]. >>> >>> What is wrong with this analysis? >> >> your interpretation employs blank nodes in a manner which makes no sense. >> >> best regards, from berlin. >> --- >> james anderson | james@dydra.com | http://dydra.com > > I don't understand. How does making sense enter into the picture at all here? > > All I am doing is following through the definition of SPARQL from > https://www.w3.org/TR/sparql11-query/. Are you saying that I am doing > something that is not sanctioned by this definition? If so, where have I gone > wrong? you misconstrue the notion of “substitution”. --- james anderson | james@dydra.com | http://dydra.com
Received on Sunday, 2 April 2017 18:24:12 UTC