(in-package "ONTOLINGUA-USER")
(define-ontology ranges (frame-ontology)
"This ontology defines a generic ontology of ranges."
:maturity :moderate
:generality :moderate
:issues ("Parts of this were snipped out of the jat-generic ontology."))
(in-ontology 'ranges)
(define-class INTEGER-RANGE (?class)
"An integer range is a class of integers specified by lower
and upper bounds. Instances of an integer-range are integers."
:iff-def (and (class ?class)
(subclass-of ?class integer)
(= (value-cardinality ?class I-LOWER-BOUND) 1)
(= (value-cardinality ?class I-UPPER-BOUND) 1)
(forall ?i (=> (instance-of ?i ?class)
(and (=< (i-lower-bound ?class) ?i)
(=< ?i (i-upper-bound ?class)))))))
(define-function I-LOWER-BOUND (?range) :-> ?integer
"(I-LOWER-BOUND r) denotes the integer lower bound of range r."
:def (and (integer-range ?range)
(integer ?integer)))
(define-function I-UPPER-BOUND (?range) :-> ?integer
"(I-UPPER-BOUND r) denotes the integer upper bound of range r."
:def (and (integer-range ?range)
(integer ?integer)))
(define-class REAL-RANGE (?class)
"An real range is a class of real numbers specified by lower
and upper bounds. Instances of an real-range are real numbers."
:iff-def (and (class ?class)
(subclass-of ?class real-number)
(= (value-cardinality ?class R-LOWER-BOUND) 1)
(= (value-cardinality ?class R-UPPER-BOUND) 1)
(forall ?i (=> (instance-of ?i ?class)
(and (=< (r-lower-bound ?class) ?i)
(=< ?i (r-upper-bound ?class)))))))
(define-function R-LOWER-BOUND (?range) :-> ?real
"(R-LOWER-BOUND r) denotes the real lower bound of range r."
:def (and (real-range ?range)
(real-number ?real)))
(define-function R-UPPER-BOUND (?range) :-> ?real
"(R-UPPER-BOUND r) denotes the real upper bound of range r."
:def (and (real-range ?range)
(real-number ?real)))