- From: Lee Feigenbaum <feigenbl@us.ibm.com>
- Date: Mon, 18 Sep 2006 12:40:34 -0400
- To: public-rdf-dawg-request@w3.org, RDF Data Access Working Group <public-rdf-dawg@w3.org>
- Message-ID: <OFF523D536.BDF55645-ON852571ED.005B5509-852571ED.005B9F1B@us.ibm.com>
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)) . } ==> {} -- 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)) . } ==> {} -- 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} -- 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} -- 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} Lee
Received on Monday, 18 September 2006 16:40:43 UTC