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 cant 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
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
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.