We turn now to the properties of references when dealing with feature values that are sets.

For instance, since a feature like `brothers` has as value a set of
descriptions, we can ask: What is the meaning of a reference like `
(>> wife brothers of Jane)`? Intuitively, it should be understood as
referring to the sisters-in-law of `Jane`. In
Example 2.8 sisters-in-law and brothers-in-law are defined
in this way for `person`s. Since the brothers of `Jane` are (the
set of) `Adam` and `Arthur`, now the question is the meaning of

(>> wife of <Set of Adam Arthur>). The element-wise definition of reference over sets indicates that this reference is the set of references

`(>> wife of Adam)`

and
`(>> wife of Arthur)`

--that is to say the set of
This element-wise definition of reference is equivalent to the *
function mapping* construct in Lisp. For instance, given a list of men
`l` and a `wife` function, then the second-order function `map` in
Lisp can perform a map `(map (function wife) l)`

that returns
the list of wives of `l`. Notice however that Noos supports
sets--which are unordered and do not allow duplications--instead of
lists.

It is also important to notice that reference over sets produces *flat
sets*. That is to say, the result of a reference over a set is a set
containing all the results but *not* a set of sets of results. Lets
us take an extension of Example 2.8
where `Linda` has brothers `Clement` and `Charles`, and
`Lucy` has brothers `David` and `Douglas`. In this situation
the query

would yield the result

which is the set of objects obeying the constraint of being brothers of the
wives of the brothers of `Jane`. Notice, in particular, that Noos will
*not* return as result from a reference over a set something like

[*Impossibility warning* ]

which is a set of sets of objects. Noos semantics deals with
sets of objects, *S*,but not with the powerset . Intuitively, a
Noos user can conceive of references over sets as performing the *
union* of the sets resulting from the element-wise references.

At the beginning of Section2.2 we saw that feature values
may be sets of objects denoted by named references. In a similar manner we
may have a set as feature value defined by several path references,as
shown in the following example defining `uncles` and `aunts`.

Again, the `uncles` (or `aunts`) of a person is just a flat set--the union of the
results of both relative path references--and not a set with two elements
which are the sets resulting of each relative path reference. Intuitively,
the uncles of a person are those persons that are brothers either of the
father or of the mother. We can view this as constraints--uncles are those
persons obeying one of the two constraints--or as the union of the sets
of persons satisfying each path reference.

Thu Jan 23 11:36:28 MET 1997