- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Wed, 08 Jun 2005 13:24:08 +0100
- To: Geoff Chappell <geoff@sover.net>
- CC: public-rdf-dawg-comments@w3.org
Geoff Chappell wrote:
> OK, the first is the test OPTIONAL-FILTER.
>
> In addition to the results given for the test, I also get:
>
> title="Title 1", price=unbound
>
> I get to this from this transformation:
>
> ?book dc:title ?title .
> OPTIONAL
> { ?book x:price ?price .
> FILTER ?price < 15 .
> } .
> }
>
> or
> A OPTIONAL (B AND C)
> or
> (A AND (B AND C)) or (A AND NOT(B AND C))
> or
> (A AND B AND C) or (A AND NOT B) or (A AND NOT C)
>
>
> the result comes from the last term (A AND NOT C) or
>
> {?book dc:title ?title } NOT FILTER ?price < 15
Geoff,
I agree with the rewriting in logical terms but I think it needs to take into
account when variables are being bound.
OPTIONAL
{ ?book x:price ?price .
FILTER ?price < 15 .
} .
means that the FILTER is applied when "?book x:price ?price" matches. When
rewriting, that additional piece of information needs to be catered for as well.
I think this is covered by requiring S, a group solution, to be a solution of
the OPTIONAL within the group.
One way is that the evaluation of FILTER ?price < 15 needs to be something like:
{?book dc:title ?title } FILTER( bound(?price) && ?price < 15 )
to reflect the other rewrites.
Andy
>
> I believe the transformations are valid given the current definitions of
> various flavors of graph pattern solutions.
>
> My take is that to get the result specified by the test, FILTERs would have
> to be treated as inseparable from the graphs they are constraining -- i.e.
> they couldn't be stand-alone graph patterns but would have to always be
> paired with a graph. That would seem to imply that the FILTER keyword
> doesn't just introduce a filter pattern but is an operator of sorts that
> isn't a synonym for AND (so NOT(A FILTER B) != NOT A or NOT B.)
>
> I think that might be the intent of FILTER patterns, but it's doesn't appear
> to be currently supported by the syntax:
>
> """[23] GraphPatternNotTriples ::= OptionalGraphPattern |
> UnionGraphPattern | GroupGraphPattern | GraphGraphPattern | Constraint"""
>
> i.e. a Constraint is treated as a stand alone pattern...
>
> or the semantics:
>
> """Definition: Graph Pattern
>
> A Graph Pattern is one of:
>
> Basic Graph Pattern
> Group Pattern
> Optional Graph Pattern
> Union Graph Pattern
> RDF Dataset Graph Pattern
> Value Constraints"""
>
> And
>
> """Definition: Group Graph Pattern
>
> A group graph pattern GP is a set of graph patterns, GPi.
>
> A solution of Group Graph Pattern GP on graph G is any solution S such that,
> for every element GPi of GP, S is a solution of GPi."""
>
> i.e. this says that a solution of a group pattern must be a solution of GP0
> AND GP1 AND....
>
> Hope that makes some sense.
>
> Best,
>
> Geoff
>
Received on Wednesday, 8 June 2005 12:24:40 UTC