- From: Andy Seaborne <andy@apache.org>
- Date: Mon, 28 Nov 2016 14:45:04 +0000
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>, public-sparql-exists@w3.org
On 26/11/16 21:36, Peter F. Patel-Schneider wrote: > 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( ... ) ToMultiSet of a empty BGP which is included in the injection. > > Also, is every case of OPTIONAL going to work out in Proposal B? Should do - including doubly nested optionals. Andy > > 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 Monday, 28 November 2016 14:45:39 UTC