RANGE is short for ``range restriction.'' Specifying a RANGE restriction of a relation is a way to constrain the class of objects which participate as the last argument to the relation. For any tuplein the relation, if class T is a RANGE restriction of the relation, r must be an instance of T. RANGE restrictions are very helpful in maintaining ontologies. One can think of a range restriction as a type constraint on the value of a function or range of a relation. Representation systems can use these specifications to classify terms and check integrity constraints. If the restriction on the range of the relation is not captured by a named class, one can use specify the constraint with a predicate that defines the class implicitly, coerced into a class. For example, (kappa (?x) (and (prime ?x) (< ?x 100)))
denotes the class of prime numbers under 100. It is consistent to specify more than one RANGE restriction for a relation, as long as they all include the EXACT-RANGE of the relation. Note that range restriction is true regardless of what the restricted relation is applied to. For class-specific range constraints, use slot-value-type.
(<=> (Range ?Relation ?Type)
(And (Relation ?Relation)
(Class ?Type)
(Subclass-Of (Exact-Range ?Relation) ?Type)))
(Range Instance-Of Class)
(Range All-Instances Set)
(Range Subclass-Of Class)
(Range Subrelation-Of Relation)
(Range Arity Integer)
(Range Exact-Domain Relation)
(Range Exact-Range Class)
(Range Composition-Of List)
(Range Compose Binary-Relation)
(Range Alias Relation)
(Range Domain Class)
(=> (Range $X $Y) (Class $Y))
(=> (Range $X $Y) (Relation $X))
(<=> (Range ?Relation ?Type)
(And (Relation ?Relation)
(Class ?Type)
(Subclass-Of (Exact-Range ?Relation) ?Type)))
(<=> (Range-Of $Arg1 $Arg2) (Range $Arg2 $Arg1))
(Inverse Range-Of Range)
(Range Relation-Universe Class)
(Range Subclass-Partition Class-Partition)
(Range Documentation String)
(Range Related-Axioms Sentence)