An instance-set is an ordered collection of instances. Each instance-set member is an instance of a set of classes, called class restrictions, defined by the user. The class restrictions can be different for each instance-set member. The query functions use instance-set templates to generate instance-sets. An instance-set template is a set of instance-set member variables and their associated class restrictions. Instance-set member variables reference the corresponding members in each instance-set which matches a template. Variables may be used to specify the classes for the instance-set template, but if the constant names of the classes are specified, the classes must already be defined. Module specifiers may be included with the class names; the classes need not be in scope of the current module.
Syntax
<instance-set-template> ::= (<instance-set-member-template>+) <instance-set-member-template> ::= (<instance-set-member-variable> <class-restrictions>) <instance-set-member-variable> ::= <single-field-variable> <class-restrictions> ::= <class-name-expression>+
Example
One instance-set template might be the ordered pairs of boys or men and girls or women.
((?man-or-boy BOY MAN) (?woman-or-girl GIRL WOMAN))
This instance-set template could have been written equivalently:
((?man-or-boy MALE) (?woman-or-girl FEMALE))
Instance-set member variables (e.g. ?man-or-boy) are bound to instance-names.