# [xquery-talk] Need some theory help

David Carlisle davidc at nag.co.uk
Mon Sep 8 14:19:31 PDT 2008

```> (b) What about "intersect": does it distribute or not?

I think not, for the same reason that except does not.

\$a/descendant::*/child::b intersect \$a/descendant::*/(child::c/child::b)

is

\$a/descendant::*/(child::c/child::b)

but

a/descendant::*/(child::b intersect child::c/child::b)

is empty, because

> (easily seen because child::c/child::b will not select any nodes that are
> selected by child::b).

> (a) How would you prove that "union" distributes through "/" and "except"
> does not? (Assuming my conjecture is correct, of course)

something along the lines of semantics of

E/F is Union{f(e) | e in E} where you think of F as a function from a single
item e in E to a node set so
E/F union E/G is Union{f(e) | e in E} union Union{g(e) | e in E}
wheras
E/(F union G) is Union{fug(e) | e in E}
where fug is the function from a node to a node set defined by
fug(e) = f(e) union g(e).

then some general mutterings about union distributing over union.

(this is using xpath 1 node set terminology, but xpath2 sequence +
implied removal of duplicates for path operators is supposed to model
set semantics here.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is