- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Thu, 16 Jun 2005 12:15:33 +0100
- To: Dan Connolly <connolly@w3.org>
- CC: RDF Data Access Working Group <public-rdf-dawg@w3.org>
Dan Connolly wrote: > Picking up a thread from weeks ago... > > On Thu, 2005-05-19 at 11:43 +0100, Seaborne, Andy wrote: > [... see www-archive for the rest...] > >>>Suggest rather adding >>>Constraint Pattern above and: >>> >>>Definition: Value Constraint >>> >>>A Value Constraint is a boolean-valued expression of variables >>>and RDF Terms. >>> >>>Definition: Constraint Pattern >>> >>>A Constraint Pattern is a pair of a Value Constraint >>>and a Graph Pattern. S is a solution for a Constraint >>>Pattern (C, GP) iff C(S) is true and S is a solution for GP. >> >>Hmm ... thinks ... >> >>How about defining a value constraint C as accepting S if C(S) is true? > > > I was thinking that constraints worked kinda like GRAPH > in the abstract syntax: there's a whole tree of pattern-foo > below them; all that gets evaluated, and for any solutions that > make it out of there, they get checked against the constraint. > > But re-reading your message about the abstract syntax > in sparqlx.rnc ... > http://lists.w3.org/Archives/Public/public-rdf-dawg/2005JanMar/0473.html > > I see a possibility that constraints are always leaves > in the abstract syntax, i.e. they never dominate another > graph pattern. I guess I can see how that works. > Can you confirm that this is what you've got in mind? Constraints are "matched" (a bad word) like any pattern - with the solution needing to make the thing thing true. For patterns that means "match", coming down to the basic graph pattern being a subgraph of the target graph. For constraints, it comes down to evaluating the expression and seeing if it evaluates to (Effective Boolean Value) true. EBV: http://www.w3.org/2001/sw/DataAccess/rq23/#ebv Constraints can't have other pattern inside/below them. They are expressions in the structure of F&O. But constriants do occur in groups along side the other patterns. In a group, all the group elements have to "pass" a solution for the groiup to match a solution. Andy > > > >>---- >>Definition: Value Constraint >> >>A Value Constraint is a boolean-valued expression of variables >>and RDF Terms. >> >>For constriant C, a solution S matches C is C(S) is true. >>---- >> >>The problem is that we have used the term "matches" - a solution causes a >>pattern to match and it's a bit odd using "match" but using the same work seems >>better. >> >>Tieing to a pattern does not work out completely: >> >>Example 1: >> >>SELECT WHERE >>{ >> ?x rdf:type :foo >> :y :q ?v >> { ?x :p ?v } UNION { FILTER ?v < 3 } >>} >> >>either the triple { ?x :p ?v } is in the graph or the filter is true. >> >>Example 2: >> >>SELECT * WHERE { >> { ?x :p ?v } >> { FILTER ?v < 3 } >>} >> >>where the FILTER is in a group of one, no pattern in the group. >> >>Otherwise, it might be better to have a grammar to require FILTER to be >>associated with a pattern of some kind. Something like: >> >> pattern constraint* >> >>[unchecked if that grammar change works] >> >>but now we have order in the query and this is syntactically illegal: >> >>SELECT * WHERE { >> FILTER ?v < 3 >> ?x :p ?v >>} >> >>and the UNION example also fails. >> >>Our filters are not quite general patterns: >> 1/ Evaluation is according to XPath/XQuery F&O rules >> 2/ May be n-ary >> >>you don't write binary operators as >> (?x 3) math:lessMath ?result >>which is what it woudl be for the generalization to n-ary >> >>Constraints may be implemented as graph patterns - but they may not. > > [...] >
Received on Thursday, 16 June 2005 11:15:42 UTC