**Defined in ontology: Frame-ontology****Source pathname: /tmp_mnt/vol/q/htw/cms/ontolingua/examples/ontolingua/../../all-ontologies/ontolingua/frame-ontology.lisp****Also defined in:**Interface-ontology

**Arity:**2**Definition-Sort-Index@Interface-Ontology:***100***Documentation:**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 tuple

*<d1*d2 ...dn r> in 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.

### Notes:

**See-Also:**slot-value-type

**Domain:**Relation**Instance-Of:**- Binary-Relation, Binary-Relation, Relation, Relation, Relation ...
**Inverse:**Range-Of**Range:**Class

(=> (Range ?Relation ?Type) (Subclass-Of (Exact-Range ?Relation) ?Type))

(<=> (Range ?Relation ?Type) (And (Relation ?Relation) (Class ?Type) (Subclass-Of (Exact-Range ?Relation) ?Type)))

(Relation ?Relation)

**Range:**Integer

**Range:**Class

**Range:**Integer

**Range:**Nonnegative-Integer

**Range:**Nonnegative-Integer

**Range:**Class-Partition