- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Tue, 24 Oct 2006 10:36:04 +0100
- To: Lee Feigenbaum <feigenbl@us.ibm.com>
- CC: RDF Data Access Working Group <public-rdf-dawg@w3.org>
Lee Feigenbaum wrote:
>
> I'm resending my initial message. My thanks to Andy for pointing out
> that my original test cases weren't really testing anything. I've
> changed since then to using !bound(?x) as my FILTER of choice -- by my
> thinking, in this case, if FILTER does not share the same scope with the
> matching triple pattern, than bound(?x) will evaluate to false and
> !bound(?x) will evaluate to true, meaning that the query will have one
> solution. In the cases where FILTER does share the same scope with the
> matching triple pattern, then !bound(?x) should evaluate to false,
> thereby eliminating any solutions from the query.
>
> I've checked in the updated tests. I think the two FILTER order tests
> are OK as is, so they remain unchanged.
>
> The rest of this message is the same as the original, except that I've
> fixed the queries.
>
> Andy or anyone else, please let me know if you think that this is still
> foobar. Sorry for the hiccup.
>
> Lee
>
> __________________
>
>
> Hi DAWGers,
>
> I've cheked into CVS six test cases for the scope and order of FILTER
> clauses as per this (unresolved) email thread:
> http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JulSep/0186.html
>
> What I've checked in (results-wise) is my *personal* thought on what the
> behavior of FILTER is. My original message points out that the current
> spec. is underspecified, so these test cases are not based on it. I'd
> welcome discussion on what the results of these tests should be, and
> hopefully from there we can determine an overall design and from there
> we can fashion spec text.
>
> The tests are described in this test manifest:
> http://www.w3.org/2001/sw/DataAccess/tests/data/Filter/manifest.n3
>
> I'm summarizing them here:
>
> -- data --
>
> @prefix ex: <http://example.org/>
> ex:s ex:p 1.
>
> -- FILTER scope test cases --
>
> -- dawg-filter-scope-001--
>
> Opinion: A FILTER appearing in the same FilteredBasicGraphPattern (a
> sibling in the query tree) as a triple pattern matching the graph should
> constrain bindings arising from that triple pattern.
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> ex:s ex:p ?x .
> FILTER(!bound(?x)) .
> }
>
> ==> {}
Passed.
>
>
> -- dawg-filter-scope-002
>
> Opinion: A FILTER appearing in the same (inntermost) Group (an uncle in
> the query tree) as a triple pattern matching the graph should constrain
> bindings arising from that triple pattern.
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> { ex:s ex:p ?x }
> FILTER(!bound(?x)) .
> }
>
> ==> {}
>
Passed.
>
> -- dawg-filter-scope-003
>
> Opinion: Bindings introduced by a matching triple pattern which appears
> in a BGP which is a sibling of a Group in which a FILTER appears is
> unconstrained by that FILTER. (In this relationship, the FILTER is a
> nephew of the triple pattern in the query tree.)
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> ex:s ex:p ?x .
> { FILTER(!bound(?x)) }
> }
>
> ==> {?x/1}
This isn't so much scope as about the algebra.
This looks correct if we had bottom-up evaluation of the SPARQL algebra.
If we change to bottom-up evaluation, this test does capture what I would expect.
Currently, ARQ fails this because the whole of the current solution being
processed is available across the group and it's subelements (declarative
semantics).
>
>
> -- dawg-filter-scope-004
>
> Opinion: Bindings introduced by a matching triple pattern which appears
> in a BGP in a sibling Group of a Group in which a FILTER appears is
> unconstrained by that FILTER. (In this relationship, the FILTER is a
> cousin of the triple pattern in the query tree.)
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> { ex:s ex:p ?x } .
> { FILTER(!bound(?x)) } .
> }
>
> ==> {?x/1}
>
>
>
> -- FILTER order test cases --
>
> --dawg-filter-order-001
>
> Opinion: The order in which a FILTER appears vis a vis triple patterns
> in the same FilteredBasicGraphPattern does not matter.
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> ex:s ex:p ?x .
> FILTER(?x=1) .
> }
>
> => {?x/1}
>
Passed.
>
> -- dawg-filter-order-002
>
> Opinion: The order in which a FILTER appears vis a vis triple patterns
> in the same FilteredBasicGraphPattern does not matter.
>
> PREFIX ex: <http://example.org/>
> SELECT ?x
> {
> FILTER(?x=1) .
> ex:s ex:p ?x .
> }
>
> ==> {?x/1}
ARQ fails this tests because it leaves FILTER in place. This would pass if
ARQ were applying FILTERs to the end of groups conceptually.
Andy
>
>
> Lee
>
Received on Tuesday, 24 October 2006 09:36:45 UTC