- From: Paul Gearon <pgearon@revelytix.com>
- Date: Sun, 22 May 2011 22:28:29 -0400
- To: Gregory Williams <greg@evilfunhouse.com>
- Cc: Lee Feigenbaum <lee@thefigtrees.net>, SPARQL Working Group <public-rdf-dawg@w3.org>
I have not implemented this myself yet, however, I agree with Greg's assessment. His interpretation is exactly what I expect. Regards, Paul Gearon On Sun, May 22, 2011 at 3:16 PM, Gregory Williams <greg@evilfunhouse.com> wrote: > On May 22, 2011, at 2:59 PM, Lee Feigenbaum wrote: > >> On 5/22/2011 2:52 PM, Gregory Williams wrote: >>> On May 22, 2011, at 6:14 AM, Andy Seaborne wrote: >>> >>>> Rob Vesse has found a problem with the bindings test suite. The results for bindings07 are wrong. There was an optimizer bug in ARQ: and the tests didn't get run with the simple engine [*]. >>>> >>>> Andy >>>> >>>> [*] Run arq.qtest with "--engine=ref" to run the simple, not optimization, no smarts query execution engine. Does not scale - very simply executes each algebra operation and materialises all intermediate results. >>> >>> Good catch! It seems my implementation has a bug too (in the join ordering of the BINDINGS clause with the rest of the query). >> >> Could one of you please post or commit the proper results and we can re-approve it on Tuesday? > > I'd be more comfortable with Andy doing it (being closer to the Query document), but here's my understanding: > > The query has a graph pattern with an optional at the 'top level': > > SELECT ?s ?o1 ?o2 { > ?s ?p1 ?o1 > OPTIONAL { ?s foaf:knows ?o2 } > } BINDINGS ?o2 { > (:b) > } > > The default graph contains: > > :a foaf:name "Alan" . > :a foaf:mbox "alan@example.org" . > :b foaf:name "Bob" . > :b foaf:mbox "bob@example.org" . > :c foaf:name "Alice" . > :c foaf:mbox "alice@example.org" . > :a foaf:knows :b . > :b foaf:knows :c . > > The results for just the graph pattern are: > > ?s, ?o1, ?o2 > ------------ > :a, "Alan", :b > :a "alan@example.org", :b > :a :b, :b > :b "Bob", :c > :b "bob@example.org", :c > :b :c, :c > :c "Alice" > :c "alice@example.org" > > Briefly: > > * Three results have ?o2=:b > * Three have ?o2=:c > * Two have ?o2 unbound. > > Now, applying the join for the BINDINGS where ?o2 is bound to :b, the first three results successfully join (:b = :b), the second three don't join (:c != :b), and the last two join because ?o2 isn't bound yet. > > I believe the results for this query *should* be: > > ?s, ?o1, ?o2 > ------------ > :a, :b, :b > :a, "alan@example.org", :b > :a, "Alan", :b > :c, "alice@example.org", :b > :c, "Alice", :b > > The current results file checked in to CVS additionally has: > > ?s, ?o1, ?o2 > ------------ > :b, :c, :b > :b, "bob@example.org", :b > > So, to summarize, I think these two results should be removed and the remaining results represent the expected correct results. > > Andy, did I get that right? > > .greg > > >
Received on Monday, 23 May 2011 02:28:58 UTC