W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > October to December 2006

Re: test cases for FILTER scope and order, take 2

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Tue, 24 Oct 2006 10:36:04 +0100
Message-ID: <453DDE84.7010405@hp.com>
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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:27 GMT