[xquery-talk] Need some theory help
Florent Georges
lists at fgeorges.org
Mon Sep 8 15:08:53 PDT 2008
Michael Kay wrote:
Hi Michael,
> Given general expressions E,F,G, I believe it is true that
> the following two expressions are equivalent:
> E/F union E/G <=> E/(F union G)
> (That is, union distributes through "/")
> But this is not true for "except".
> $a/descendant::*/child::b except $a/descendant::*/(child::c/child::b)
> is not the same as
> a/descendant::*/(child::b except child::c/child::b)
> (easily seen because child::c/child::b will not select any
> nodes that are selected by child::b).
I am not really a theoretician, but I feel this problem is
related to the descendant axis rather than the set operations
(union, except...)
Intuitively, I would say that "E//F x E//G" (for some
operator x) is not the same as "E//(F x G)" because in the
later "F x G" is 'anchored' at particular nodes, where in the
former two sequences are built then the operator is applied.
For the union, I guess this leads into the same result
(intuitively again), but it doesn't with the difference (the
except operator.)
Maybe using only a subset of axises to try to prove your
assertions could help find the way?
Regards,
--drkm
More information about the talk
mailing list