Map Select

It is often required that objects be examined individually –say, find all TimePeriods where there is more than ten days range on the FinishDate. The objects can’t be examined en masse, they need to be individually checked, in the manner of a nested SQL Select.

We will sometimes need to handle a set of individual objects. The SELECT operator will perform this function. Connected into a map, it receives one or more sets of objects. When it has sets on each input, it takes single objects from each of those sets and inserts them in the parameters of a nested map. It runs the map. If an inconsistency occurs, and its control is True, that set of objects (an interpretation) is not possible. It runs through all possible interpretations (which means the total number has to be small), then returns the pruned sets along their incoming links.

A simple example with only one input. Its textual representation would be similar to

SELECT TimePeriod WHERE HIGHEST(FinishDate.Value#) – LOWEST(FinishDate.Value#) > 10

select.jpg (154035 bytes)

The initial links are Match, to obtain the FinishDate and then its DateTime value, turning into Push links when a numeric value is available – the Matcher does not follow the path of the Push, instead checking whether an inconsistency has occurred after the Push.

For multiple input sets, the structure changes to

select3.jpg (96937 bytes)

The SELECT operator organises the running of the interpretations and the return of sets.

SELECT with a single connection onto the head of an ObjectGroup acts as though it is connected to the members of the group.

Map Functions