- 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