- From: Fred Zemke <fred.zemke@oracle.com>
- Date: Fri, 09 Jun 2006 00:10:45 +0000
- To: public-rdf-dawg@w3.org
6. Matching alternatives
Second sentence says "If more than one of the alternatives
matches, all the possible pattern solutions will be found."
Does this mean that if a solution is a solution of both
patterns, then the solution occurs twice in the solution sequence?
There are no examples of solutions with multiple cardinality.
Such examples would be helpful.
6.2 Union matching - formal definition
The definition is unclear about whether there are any constraints
on the value of a solution on a variable that
appears in one pattern but not in the other. Example: what is
the result of
SELECT ?x ?y WHERE { FILTER (?x = ?x) } UNION { FILTER (?y = ?y) }
Suppose there is only one RDF term in the graph, <http:a>.
There are all together four partial functions from the
set of variables in the query {?x, ?y} and the set of RDF terms,
namely:
S1 (?x) = <http:a>, S1(?y) = <http:a>
S2 (?x) = <http:a>, S2(?y) undefined
S3 (?x) undefined, S3 (?y) = <http:a>
S4 (?x) undefined, S4 undefined
I believe that the desired set of solutions is {S2, S3},
i.e., S1 is not a solution of this query. However, arguably,
S1 is a solution of FILTER (?x = ?x), and therefore belongs in
the result set according to the definition as written.
My proposed fix is: let P be pattern1 UNION pattern2.
Then S is a solution of P if either of the following is true:
1. S is a solution of pattern1 and S is undefined on every
variable that is contained in pattern2 but not in pattern1; or
2. S is a solution of pattern2 and S is undefined on every
variable that is contained in pattern1 but not in pattern2.
6.2 Union matching - formal definition
The definition is unclear about duplicates. If s is a solution
of GP1 and S is a solution of GP2, does the solution sequence
contain a copy of S for each of GP1 and GP2? I believe the
answer should be that duplicates are maintained because they
might be meaningful to the user; if the user wishes to eliminate
duplicates, the user can specify DISTINCT. In that case, the
definition proposed in a separate comment needs to be rewritten
because it would eliminate duplicates. I think the best
approach would be to recognize that the UNION operator is
constructing a solution sequence from the solution sequences of
each operand. The proposed rewording is then:
Let P be pattern1 UNION pattern2. Let V1 be the set of variables
that appear in pattern1 and let V2 be the set of variables that
appear in pattern2. S = (S1, S2, ... Sn) be a sequence of all
partial functions on V1 that are solutions of pattern1. Let
T = (T1, T2, ... Tm) be a sequence of all
partial functions on V2 that are solutions of pattern2.
Then a solution sequence of P is any permutation of the sequence
(S1, ..., Sn, T1, ..., Tm).
(Note: This definition involves a trick concerning partial
functions. For example, each Si is a partial function on V1,
therefore it is a partial function on the set of all variables
in P that happens to be undefined on the variables that belong
only to V2.)
Fred
Received on Friday, 9 June 2006 05:40:11 UTC