- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sat, 26 Nov 2016 13:36:07 -0800
- To: Andy Seaborne <andy@apache.org>, public-sparql-exists@w3.org
Yes, I forgot about the phantom empty BGPs in the algebra. My mistake.
That addresses one or two of the cases, but not, I think, all the MINUS ones.
I'll update my message.
What about { SELECT ?x WHERE { } }? Isn't that translated as follows?
Translate( { SELECT ?x WHERE { } } )
Join( Z, Translate( SELECT ?x WHERE { } ) )
Join( Z, ToMultiSet( ... ) )
ToMultiSet( ... )
Also, is every case of OPTIONAL going to work out in Proposal B?
peter
On 11/26/2016 12:07 PM, Andy Seaborne wrote:
>
>
> On 26/11/16 18:47, Peter F. Patel-Schneider wrote:
>> I have added a new test and shown what I think the results for several
>> setups are are on some data. The "Expected" results are what I think should
>> be expected from the fixed definition of SPARQL that the group is supposed
>> to produce.
>>
>> Graph
>> :s :p :v .
>> :t :r :w .
>>
>>
>> SELECT ?x WHERE {
>> ?x :p :v .
>> FILTER ( EXISTS {
>> FILTER ( ?x = :s ) )
>> } )
>> }
>>
>> Specification { { (x,:s) } }
>> Proposal A { { (x,:s) } }
>> Proposal B { }
>> Expected { { (x,:s) } }
> Proposal B gets { { (x,:s) } }
>
> There is a empty BGP that the FILTER ( ?x = :s ) applies to which is no
> removed by simplification so it injects ?x. Filter in the algebra always
> filters the results of a pattern.
>
> (prefix ((: <http://example/>))
> (project (?x)
> (filter (exists
> (filter (= ?x :s)
> (bgp empty)))
> (bgp (triple ?x :p :v)))))
>
> My prototype gets:
>
> ------
> | x |
> ======
> | :s |
> ------
>
>
> Andy
>
> (PS This may become a duplicate - I sent a copy from the wrong address a few
> mins ago)
>
Received on Saturday, 26 November 2016 21:36:41 UTC