(In-Package :hpkb)
(In-Language :hpkb-with-kif-3.0)
(Define-kb
reusable-time (Hpkb-Upper-Level-Kernel-Latest Physical-Quantities Kif-Numbers))
(In-kb reusable-time)
;;; augmentation of Time-Interval from hpkb upper level
;;;
;;; Time-Point
;;;
(define-okbc-frame Time-Point
:frame-type :class
:template-facets
((Location-Of (:maximum-cardinality 1))
(Year-Of (:maximum-cardinality 1))
(Month-Of (:maximum-cardinality 1))
(Day-Of (:maximum-cardinality 1))
(Week-Day-Of (:maximum-cardinality 1))
(Hour-Of (:maximum-cardinality 1))
(Minute-Of (:maximum-cardinality 1))
(Second-Of (:maximum-cardinality 1))
(Granularity-Of (:maximum-cardinality 1))))
(Define-Okbc-Frame Location-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Quantity)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation "This time quantity locates this time point on the time line,
and can be used to determine relations between two time points.
Year-Of, Month-Of, Day-Of, Week-Day-Of, Hour-Of, Minute-Of and Second-Of
are the seven slots defined for convenience.
The seven slot values can be derived from the Location-Of slot value.
point zero is assumed to be midnight Jan 1, 1900.")))
(Define-Okbc-Frame Year-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Integer)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation "year expressed in A.D.")))
(Define-Okbc-Frame Month-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Calendar-Month-Type)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation "")))
(Define-Okbc-Frame Day-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Calendar-Day-Type)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation "")))
(Define-Okbc-Frame Week-Day-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Calendar-Week-Day-Type)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation ""))
:Sentences (=> (and (Time-Point ?p)
(Week-Day-Of ?p ?w))
(= (Week-Day-Number-Of ?w) (+ 1 (Mod (LINLT (Magnitude (Location-Of ?p) Day-Unit)) 7)))))
(Define-Okbc-Frame Hour-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Integer)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation ""))
:Sentences (=> (Time-Point ?p)
(= (Hour-Of ?p) (Mod (LINLT (Magnitude (Location-Of ?p) Hour-Unit)) 24))))
(Define-Okbc-Frame Minute-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Integer)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation ""))
:Sentences (=> (Time-Point ?p)
(= (Minute-Of ?p) (Mod (LINLT (Magnitude (Location-Of ?p) Minute-Unit)) 60))))
(Define-Okbc-Frame Second-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Integer)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation ""))
:Sentences (=> (Time-Point ?p)
(= (Second-Of ?p) (Mod (LINLT (Magnitude (Location-Of ?p) Second-Unit)) 60))))
(assertion ( => ( and (Time-Point ?p)
(Location-Of ?p ?l))
( YMD (LINLT (Magnitude ?l Day-Unit)) (Year-Of ?p) (Month-Number-Of (Month-Of ?p)) (Day-Number-Of (Day-Of ?p)))))
(Define-Okbc-Frame YMD
:Frame-Type :individual
:Direct-Types (Relation)
:Own-Slots ((relation-arity 4))
:Documentation "this relation maps the number of days from zero point to the Y, M, D of the particular day."
:Sentences (=> (YMD ?n ?y ?m ?d)
(and (Integer ?n)
(Integer ?y)
(Integer ?m)
(Integer ?d))))
(Define-Okbc-Frame Granularity-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Granularity)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation "")))
;;;
;;; Granulairity
;;;
(define-okbc-frame Time-Granularity
:frame-type :class
:direct-superclasses (Thing)
:template-facets
((Time-Unit-Of (:maximum-cardinality 1))))
(Define-Okbc-Frame Time-Unit-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Unit)
(Relation-Arity 2)
(Domain Time-Granularity)
(Documentation "")))
(define-okbc-frame Time-Unit
:frame-type :class
:direct-superclasses (Unit-Of-Measure))
(assertion (and (instance-of Year-Unit Time-Unit)
(instance-of Month-Unit Time-Unit)
(instance-of Day-Unit Time-Unit)
(instance-of Hour-Unit Time-Unit)
(instance-of Minute-Unit Time-Unit)
(instance-of Second-Unit Time-Unit)))
(assertion (and (instance-of Year-Granularity Time-Granularity)
(Time-Unit-Of Year-Granularity Year-Unit)))
(assertion (and (instance-of Month-Granularity Time-Granularity)
(Time-Unit-Of Month-Granularity Month-Unit)))
(assertion (and (instance-of Day-Granularity Time-Granularity)
(Time-Unit-Of Day-Granularity Day-Unit)))
(assertion (and (instance-of Hour-Granularity Time-Granularity)
(Time-Unit-Of Hour-Granularity Hour-Unit)))
(assertion (and (instance-of Minute-Granularity Time-Granularity)
(Time-Unit-Of Minute-Granularity Minute-Unit)))
(assertion (and (instance-of Second-Granularity Time-Granularity)
(Time-Unit-Of Second-Granularity Second-Unit)))
(assertion (instance-of Infinitely-Fine-Granularity Time-Granularity))
;;;
;;; Equal, Before and After for Time-Points
;;;
(Define-Okbc-Frame Before
:Direct-Types (Binary-Relation)
:sentences (=>(and (Time-Point ?i) (Time-Point ?j))
(<=> (Before ?i ?j)
(or
(and (Granularity-Of ?i Infinitely-Fine-Granularity)
(Granularity-Of ?j Infinitely-Fine-Granularity)
(<(Location-Of ?i) (Location-Of ?j)))
(and (Granularity-Of ?i Infinitely-Fine-Granularity)
(Granularity-Of ?j ?gran-j)
(<(Location-Of ?i) (The-Quantity (LINLT (Magnitude (Location-Of ?j)(Time-Unit-Of ?gran-j)))(Time-Unit-Of ?gran-j))))
(and (Granularity-Of ?i gran-i)
(Granularity-Of ?j Infinitely-Fine-Granularity)
(<(The-Quantity (SILT (Magnitude
(Location-Of ?i) (Time-Unit-Of ?gran-i))) (Time-Unit-Of ?gran-i)) (Location-Of ?j)))
(and (Granularity-Of ?i ?gran-i)
(Granularity-Of ?j ?gran-j)
(< (The-Quantity (SILT (Magnitude (Location-Of ?i) (Time-Unit-Of ?gran-i))) (Time-Unit-Of ?gran-i))
(The-Quantity (LINLT (Magnitude (Location-Of ?j)(Time-Unit-Of ?gran-j)))(Time-Unit-Of ?gran-j)))))))
)
(Define-Okbc-Frame After
:Direct-Types (Binary-Relation)
:sentences ( =>(and (Time-Point ?i) (Time-Point ?j))
(<=> (After ?i ?j) (Before ?j ?i))))
(Define-Okbc-Frame Equal-Point
:Direct-Types (Binary-Relation)
:sentences
(=>(and (Time-Point ?i) (Time-Point ?j))
(<=> (Equal-Point ?i ?j)
(or
(and (Granularity-Of ?i Infinitely-Fine-Granularity)
(Granularity-Of ?j Infinitely-Fine-Granularity)
(=(Location-Of ?i) (Location-Of ?j)))
(and (Granularity-Of ?i ?gran)
(Granularity-Of ?j ?gran)
(= (LINLT (Magnitude (Location-Of ?i)
(Time-Unit-Of ?gran)))
(LINLT (Magnitude (Location-Of ?j)
(Time-Unit-Of ?gran)))))))))
;;;
;;; Time-Interval
;;;
(define-okbc-frame Time-Interval
:frame-type :class
:template-facets
((Starting-Point (:maximum-cardinality 1))
(Ending-Point (:maximum-cardinality 1))
(Duration (:maximum-cardinality 1)))
:documentation "Time-Interval can be discontinous, but must contain more
than one time point"
:sentences (=> (Time-Interval ?i)
( and (Before (Starting-Point ?i) (Ending-Point ?i))
(=> (Time-Point ?p)
(and (=> (Before ?p (Starting-Point ?i))
(not (Point-In-Interval ?p ?i)))
(=> (Before (Ending-Point ?i) ?p)
(not (Point-In-Interval ?p ?i))))))))
(Define-Okbc-Frame Starting-Point
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Point)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (=>(and (Time-Point ?s) (Time-Interval ?i))
(<=> (Starting-Point ?i ?s)
(and (not (exists ?j
(and (Time-Point ?j)
(Before ?j ?s)
(Point-In-Interval ?j ?i))))
(forall ?p
(=> (not (exists ?k
(and (Time-Point ?k)
(Before ?k ?p)
(Point-In-Interval ?k ?i))))
(or (Equal-Point ?p ?s)
(Before ?p ?s))))))))
(Define-Okbc-Frame Ending-Point
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Point)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (=>(and (Time-Point ?s) (Time-Interval ?i))
(<=> (Ending-Point ?i ?s)
(and (not (exists ?j
(and (Time-Point ?j)
(After ?j ?s)
(Point-In-Interval ?j ?i))))
(forall ?p
(=> (not (exists ?k
(and (Time-Point ?k)
(After ?k ?p)
(Point-In-Interval ?k ?i))))
(or (Equal-Point ?p ?s)
(After ?p ?s))))))))
(Define-Okbc-Frame Duration
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Quantity)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation "")))
(Define-Okbc-Frame In-Year
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Integer)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation "(In-Year ?X 1999) means at least one point in
interval ?X is in year 1999"))
:sentences (<=> (In-Year ?i ?y)
(exists ?p (and (Point-In-Interval ?p ?i)
(Year-Of ?p ?y)))))
(define-okbc-frame Convex-Time-Interval
:frame-type :class
:direct-superclasses (Time-Interval)
:documentation "Convex-Time-Interval must be connected"
:sentences (<=> (Convex-Time-Interval ?i)
( => ( and (Time-Point ?p)
(Before (Starting-Point ?i) ?p)
(Before ?p (Ending-Point ?i)))
(Point-In-Interval ?p ?i))))
(define-okbc-frame Convex-Time-Interval-Type
:frame-type :class
:direct-superclasses (Thing)
:documentation ""
:sentences (<=> (Instance-Of ?i Convex-Time-Interval-Type)
(Subclass-Of ?i Convex-Time-Interval)))
(define-okbc-frame Non-Convex-Time-Interval
:frame-type :class
:direct-superclasses (Time-Interval)
:documentation "Non-Convex-Time-Interval must not be connected"
:sentences (<=> (Non-Convex-Time-Interval ?i)
( exists ?p
( and (Time-Point ?p)
(Before (Starting-Point ?i) ?p)
(Before ?p (Ending-Point ?i))
(Point-In-Interval ?p ?i)))))
(assertion (Partition Time-Interval (setof Convex-Time-Interval Non-Convex-Time-Interval)))
(define-okbc-frame Characteristic-Time-Interval-Of
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Convex-Time-Interval-Type)
(Relation-Arity 2)
(Domain Regular-Non-Convex-Time-Interval)
(Documentation "")))
(define-okbc-frame Regular-Non-Convex-Time-Interval
:frame-type :class
:direct-superclasses (Non-Convex-Time-Interval)
:documentation "Regular-Non-Convex-Time-Interval is every wednesday, every day at 10
am, etc."
:sentences ((=> (and (Regular-Non-Convex-Time-Interval ?r)
(Characteristic-Time-Interval-Of ?r ?c))
(and (=> (and (holds ?c ?i)
(not (After (Starting-Point ?r) (Starting-Point ?i)))
(not (Before (Ending-Point ?r) (Ending-Point ?i))))
(Interval-In-Interval ?i ?r))))
(=> (and (Regular-Non-Convex-Time-Interval ?r)
(Point-In-Interval ?p ?r))
(exists (?c ?i)
(and (Characteristic-Time-Interval-Of ?r ?c)
(holds ?c ?i)
(Point-In-Interval ?p ?i))))) )
;;;
;;; Thirteen Relations of Time-Intervals
;;;
(Define-Okbc-Frame Precedes
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Precedes ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Ending-Point ?i) (Starting-Point ?j)))))
(Define-Okbc-Frame Precedes-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Precedes-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Ending-Point ?i) (Starting-Point ?j)))))
(Define-Okbc-Frame Meets
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Meets ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Ending-Point ?i) (Starting-Point ?j)))))
(Define-Okbc-Frame Meets-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Meets-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Ending-Point ?i) (Starting-Point ?j)))))
(Define-Okbc-Frame Overlaps
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Overlaps ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Starting-Point ?j))
(Before (Starting-Point ?j) (Ending-Point ?i))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame Overlaps-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Overlaps-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Starting-Point ?j))
(Before (Starting-Point ?j) (Ending-Point ?i))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame Costarts
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Costarts ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Starting-Point ?i) (Starting-Point ?j))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame Costarts-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Costarts-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Starting-Point ?i) (Starting-Point ?j))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame During
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (During ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(After (Starting-Point ?i) (Starting-Point ?j))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame During-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (During-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(After (Starting-Point ?i) (Starting-Point ?j))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame Cofinishes
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Cofinishes ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(After (Starting-Point ?i) (Starting-Point ?j))
(Equal-Point (Ending-Point ?i) (Ending-Point ?j)))))
(Define-Okbc-Frame Cofinishes-Inverse
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Cofinishes-Inverse ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(After (Starting-Point ?i) (Starting-Point ?j))
(Equal-Point (Ending-Point ?i) (Ending-Point ?j)))))
;;; this is an augmentation of the relation in upper level
(Define-Okbc-Frame temporal-bounds-identical
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (temporal-bounds-identical ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Starting-Point ?i) (Starting-Point ?j))
(Equal-Point (Ending-Point ?i) (Ending-Point ?j)))))
;;;
;;; Definition of the relations in upper level
;;;
(Define-Okbc-Frame Starts-After-Ending-Of
:Frame-Type :Slot
:Sentences (<=> (Starts-After-Ending-Of ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Ending-Point ?i) (Starting-Point ?j))))
:Documentation " (<=> (Precedes-Inverse ?i ?j)
(Starts-After-Ending-Of ?i ?j))")
(Define-Okbc-Frame Starts-After-Starting-Of
:Frame-Type :Slot
:Sentences (<=> (Starts-After-Starting-Of ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Starting-Point ?j))))
:Documentation "(<=> (or (Precedes-Inverse ?i ?j)
(Meets-Inverse ?i ?j)
(Overlap-Inverse ?i ?j)
(During ?i ?j)
(Cofinishes ?i ?j))
(Starts-After-Starting-Of ?i ?j))")
(Define-Okbc-Frame Starts-During
:Frame-Type :Slot
:Sentences (<=> (Starts-During ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Starting-Point ?j))
(Before (Starting-Point ?j) (Ending-Point ?i))))
:Documentation "(<=> (or (Overlap-Inverse ?i ?j)
(During ?i ?j)
(Cofinishes ?i ?j))
(Starts-During ?i ?j))")
(Define-Okbc-Frame Ends-After-Starting-Of
:Frame-Type :Slot
:Sentences (<=> (Ends-After-Starting-Of ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Ending-Point ?j))))
:Documentation "(<=> (or (Precedes-Inverse ?i ?j)
(Meets-Inverse ?i ?j)
(Overlap ?i ?j)
(Overlap-Inverse ?i ?j)
(During ?i ?j)
(During-Inverse ?i ?j)
(Costarts ?i ?j)
(Costarts-Inverse ?i ?j)
(temporal-bounds-identical ?i ?j)
(Cofinishes ?i ?j)
(Cofinishes-Inverse ?i ?j))
(Ends-After-Starting-Of ?i ?j))")
(Define-Okbc-Frame Ends-After-Ending-Of
:Frame-Type :Slot
:Sentences (<=> (Ends-After-Ending-Of ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Ending-Point ?i) (Ending-Point ?j))))
:Documentation "(<=> (or (Precedes-Inverse ?i ?j)
(Meets-Inverse ?i ?j)
(Overlap-Inverse ?i ?j)
(During-Inverse ?i ?j)
(Costarts-Inverse ?i ?j))
(Ends-After-Ending-Of ?i ?j))")
(Define-Okbc-Frame Ends-During
:Frame-Type :Slot
:Sentences (<=> (Ends-During ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Ending-Point ?j))
(Before (Ending-Point ?j) (Ending-Point ?i))))
:Documentation "(<=> (or (Overlap ?i ?j)
(During ?i ?j)
(Costarts ?i ?j))
(Ends-During ?i ?j))")
(Define-Okbc-Frame Overlaps-Start
:Frame-Type :Slot
:Sentences (<=> (Overlaps-Start ?i ?j)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Before (Starting-Point ?i) (Starting-Point ?j))
(Before (Starting-Point ?j) (Ending-Point ?i))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
:Documentation "(<=> (Overlaps ?i ?j)
(Overlaps-Start ?i ?j))")
(Define-Okbc-Frame simultaneous-with
:Frame-Type :Slot
:sentences ( =>(and (Time-Point ?i) (Time-Point ?j))
(<=> (simultaneous-with ?i ?j)
(Equal-Point ?i ?j)))
:Documentation "(<=> (Equal-Point ?i ?j)
(simultaneous-with ?i ?j))")
;;; temporally-xxxx deals with discontinuous time intervals and
;;; has domain and range of temporal thing.
;;; temporally-disjoint,
(Define-Okbc-Frame temporally-disjoint
:Frame-Type :Slot
:Sentences (<=> (temporally-disjoint ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(=> (Point-In-Interval ?p ?i)
(not (Point-In-Interval ?p ?j)))
(=> (Point-In-Interval ?p ?j)
(not (Point-In-Interval ?p ?i))))))
(assertion ( => (or (Precedes ?i ?j)
(Precedes-Inverse ?i ?j)
(Meets-OpenClosed ?i ?j)
(Meets-2Open ?i ?j)
(Meets-OpenClosed ?j ?i)
(Meets-2Open ?j ?i))
(temporally-disjoint ?i ?j)))
;;; temporally-intersects,
(Define-Okbc-Frame temporally-intersects
:Frame-Type :Slot
:Sentences (<=> (temporally-intersects ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(exists ?p (and (Point-In-Interval ?p ?i)
(Point-In-Interval ?p ?j))))))
(assertion ( <= (and (not (Precedes ?i ?j))
(not (Precedes-Inverse ?i ?j)))
(temporally-intersects ?i ?j)))
;;; temporally-cooriginating is similar to costarts, but can be discontinuous
(Define-Okbc-Frame temportally-cooriginating
:Frame-Type :Slot
:Sentences (<=> (temporally-cooriginating ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Starting-Point ?i) (Starting-Point ?j)))))
(assertion ( => (Costarts ?i ?j)
(temportally-cooriginating ?i ?j)))
;;; temporally-coterminal,
;;;(Temporally-Coterminal ?X ?Y) means the Ending-Point of ?X is the
;;; same as the Ending-Point of ?Y. This implies that ?X and ?Y overlap, in
;;; at least one point
(Define-Okbc-Frame temportally-coterminal
:Frame-Type :Slot
:Sentences (<=> (temporally-coterminal ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Equal-Point (Ending-Point ?i) (Ending-Point ?j)))))
(assertion ( => (Cofinishes ?i ?j)
(temportally-coterminal ?i ?j)))
;;; temporally-subsumes
(Define-Okbc-Frame temporally-subsumes
:Frame-Type :Slot
:Sentences (<=> (temporally-subsumes ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(=> (Point-In-Interval ?p ?i)
(Point-In-Interval ?p ?j)))))
(assertion ( <= (or (temporal-bounds-identical ?i ?j)
(Costarts-Inverse ?i ?j)
(Cofinishes-Inverse ?i ?j)
(During-Inverse ?i ?j))
(temporally-subsumes ?i ?j)))
;;;
;;; temporal-bounds-contain require non zero length period between two
;;; starting points and ending points, but still discontinuous.
(Define-Okbc-Frame temporal-bounds-contain
:Frame-Type :Slot
:Sentences (<=> (temporal-bounds-contain ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(After (Starting-Point ?i) (Starting-Point ?j))
(Before (Ending-Point ?i) (Ending-Point ?j)))))
(assertion ( <=> (During-Inverse ?i ?j)
(temporal-bounds-contain ?i ?j)))
;;; temporal-bounds-intersect,
;;; (Temporal-Bounds-Intersect ?X ?Y) means that the closed solid time interval ;;; between from the start of ?X to the end of ?X,
;;; inclusive, intersects the solid time interval from the start of ?Y and the
;;; end of ?Y, inclusive.
(Define-Okbc-Frame temporal-bounds-intersect
:Frame-Type :Slot
:Sentences (<=> (temporal-bounds-intersect ?j ?i)
(and (Time-Interval ?i)
(Time-Interval ?j)
(not (Before (Ending-Point ?i) (Starting-Point ?j)))
(not (Before (Ending-Point ?j) (Starting-Point ?i)))))
:Documentation "(<=> (and (not (Precedes ?i ?j))
(not (Precedes-Inverse ?i ?j)))
(temporally-intersects ?i ?j))")
;;; temporal-bounds-cooriginating,
;;; temporal-bounds-coterminal
;;; in James' file, not found in ontolingua
;;;
;;; Relation between Time-Point and Time-Interval
;;;
;;; the sentences would not be true with discontinuous time intervals!!!
(Define-Okbc-Frame Point-In-Interval
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Point)
(Documentation ""))
:sentences ((=> (and (Time-Point ?p)
(Solid-Time-Interval ?i)
(Before (Starting-Point ?i) ?p)
(Before ?p (Ending-Point ?i)))
(Point-In-Interval ?p ?i))
(=> (Point-In-Interval ?p ?i)
(and (or (Before (Starting-Point ?i) ?p)
(Equal-Point (Starting-Point ?i) ?p))
(or (Before ?p (Ending-Point ?i))
(Equal-Point (Ending-Point ?i) ?p))))))
(Define-Okbc-Frame Interval-In-Interval
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:sentences (=> (and (Time-Interval ?i)
(Time-Interval ?j)
(Interval-In-Interval ?i ?j))
(=> (Point-In-Interval ?p ?i)
(Point-In-Interval ?p ?j))))
;;;
;;; Subclasses of Time-Interval
;;;
(define-okbc-frame Time-Interval-Left-Open
:frame-type :class
:direct-superclasses (Time-Interval)
:sentences (<=> (Time-Interval-Left-Open ?i)
(not (Point-In-Interval (Starting-Point ?i) ?i))))
(define-okbc-frame Time-Interval-Left-Closed
:frame-type :class
:direct-superclasses (Time-Interval)
:sentences (<=> (Time-Interval-Left-Closed ?i)
(Point-In-Interval (Starting-Point ?i) ?i)))
(define-okbc-frame Time-Interval-Right-Open
:frame-type :class
:direct-superclasses (Time-Interval)
:sentences (<=> (Time-Interval-Right-Open ?i)
(not (Point-In-Interval (Ending-Point ?i) ?i))))
(define-okbc-frame Time-Interval-Right-Closed
:frame-type :class
:direct-superclasses (Time-Interval)
:sentences (<=> (Time-Interval-Right-Closed ?i)
(Point-In-Interval (Ending-Point ?i) ?i)))
(define-okbc-frame Time-Interval-Closed
:frame-type :class
:direct-superclasses (Time-Interval-Left-Closed Time-Interval-Right-Closed)
:sentences (<=> (Time-Interval-Closed ?i)
(and (Point-In-Interval (Ending-Point ?i) ?i)
(Point-In-Interval (Starting-Point ?i) ?i))))
(define-okbc-frame Time-Interval-Open
:frame-type :class
:direct-superclasses (Time-Interval-Left-Open Time-Interval-Right-Open)
:sentences (<=> (Time-Interval-Open ?i)
(and (not (Point-In-Interval (Ending-Point ?i) ?i))
(not (Point-In-Interval (Starting-Point ?i) ?i)))))
(assertion (Partition Time-Interval (setof Time-Interval-Left-Open Time-Interval-Left-Closed)))
(assertion (Partition Time-Interval (setof Time-Interval-Right-Open Time-Interval-Right-Closed)))
;;;
;;; Calendar day, month
;;;
(define-okbc-frame Calendar-Day
:frame-type :class
:direct-superclasses (Time-Interval)
:template-facets
((Month-Of-Interval (:maximum-cardinality 1))
(Day-Of-Interval (:maximum-cardinality 1)))
:sentences (=> (Calendar-Day ?c)
(and (Starting-Point ?c ?s)
(Ending-Point ?c ?e)
(Year-Of ?s ?y)
(Year-Of ?e ?y)
(Month-Of ?s ?m)
(Month-Of ?e ?m)
(Day-Of ?s ?d)
(Day-Of ?e ?d)
(Magnitude (Duration ?c) Hour-Unit 24))))
(define-okbc-frame Calendar-Day-1
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-2
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-3
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-4
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-5
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-6
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-7
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-8
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-9
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-10
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-11
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-12
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-13
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-14
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-15
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-16
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-17
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-18
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-19
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-20
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-21
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-22
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-23
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-24
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-25
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-26
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-27
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-28
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-29
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-30
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-31
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Sunday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Monday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Tuesday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Wednesday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Thursday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Friday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Saturday
:frame-type :class
:direct-superclasses (Calendar-Day))
(define-okbc-frame Calendar-Day-Type
:frame-type :class)
(assertion (and (instance-of Calendar-Day-1 Calendar-Day-Type)
(instance-of Calendar-Day-2 Calendar-Day-Type)
(instance-of Calendar-Day-3 Calendar-Day-Type)
(instance-of Calendar-Day-4 Calendar-Day-Type)
(instance-of Calendar-Day-5 Calendar-Day-Type)
(instance-of Calendar-Day-6 Calendar-Day-Type)
(instance-of Calendar-Day-7 Calendar-Day-Type)
(instance-of Calendar-Day-8 Calendar-Day-Type)
(instance-of Calendar-Day-9 Calendar-Day-Type)
(instance-of Calendar-Day-10 Calendar-Day-Type)
(instance-of Calendar-Day-11 Calendar-Day-Type)
(instance-of Calendar-Day-12 Calendar-Day-Type)
(instance-of Calendar-Day-13 Calendar-Day-Type)
(instance-of Calendar-Day-14 Calendar-Day-Type)
(instance-of Calendar-Day-15 Calendar-Day-Type)
(instance-of Calendar-Day-16 Calendar-Day-Type)
(instance-of Calendar-Day-17 Calendar-Day-Type)
(instance-of Calendar-Day-18 Calendar-Day-Type)
(instance-of Calendar-Day-19 Calendar-Day-Type)
(instance-of Calendar-Day-20 Calendar-Day-Type)
(instance-of Calendar-Day-21 Calendar-Day-Type)
(instance-of Calendar-Day-22 Calendar-Day-Type)
(instance-of Calendar-Day-23 Calendar-Day-Type)
(instance-of Calendar-Day-24 Calendar-Day-Type)
(instance-of Calendar-Day-25 Calendar-Day-Type)
(instance-of Calendar-Day-26 Calendar-Day-Type)
(instance-of Calendar-Day-27 Calendar-Day-Type)
(instance-of Calendar-Day-28 Calendar-Day-Type)
(instance-of Calendar-Day-29 Calendar-Day-Type)
(instance-of Calendar-Day-30 Calendar-Day-Type)
(instance-of Calendar-Day-31 Calendar-Day-Type)))
(assertion (and (Day-Number-of Calendar-Day-1 1)
(Day-Number-of Calendar-Day-2 2)
(Day-Number-of Calendar-Day-3 3)
(Day-Number-of Calendar-Day-4 4)
(Day-Number-of Calendar-Day-5 5)
(Day-Number-of Calendar-Day-6 6)
(Day-Number-of Calendar-Day-7 7)
(Day-Number-of Calendar-Day-8 8)
(Day-Number-of Calendar-Day-9 9)
(Day-Number-of Calendar-Day-10 10)
(Day-Number-of Calendar-Day-11 11)
(Day-Number-of Calendar-Day-12 12)
(Day-Number-of Calendar-Day-13 13)
(Day-Number-of Calendar-Day-14 14)
(Day-Number-of Calendar-Day-15 15)
(Day-Number-of Calendar-Day-16 16)
(Day-Number-of Calendar-Day-17 17)
(Day-Number-of Calendar-Day-18 18)
(Day-Number-of Calendar-Day-19 19)
(Day-Number-of Calendar-Day-20 20)
(Day-Number-of Calendar-Day-21 21)
(Day-Number-of Calendar-Day-22 22)
(Day-Number-of Calendar-Day-23 23)
(Day-Number-of Calendar-Day-24 24)
(Day-Number-of Calendar-Day-25 25)
(Day-Number-of Calendar-Day-26 26)
(Day-Number-of Calendar-Day-27 27)
(Day-Number-of Calendar-Day-28 28)
(Day-Number-of Calendar-Day-29 29)
(Day-Number-of Calendar-Day-30 30)
(Day-Number-of Calendar-Day-31 31)))
(define-okbc-frame Calendar-Week-Day-Type
:frame-type :class)
(assertion (and (instance-of Calendar-Sunday Calendar-Week-Day-Type)
(instance-of Calendar-Monday Calendar-Week-Day-Type)
(instance-of Calendar-Tuesday Calendar-Week-Day-Type)
(instance-of Calendar-Wednesday Calendar-Week-Day-Type)
(instance-of Calendar-Thursday Calendar-Week-Day-Type)
(instance-of Calendar-Friday Calendar-Week-Day-Type)
(instance-of Calendar-Saturday Calendar-Week-Day-Type)))
(assertion (and (Week-Day-Number-of Calendar-Sunday 1)
(Week-Day-Number-of Calendar-Monday 2)
(Week-Day-Number-of Calendar-Tuesday 3)
(Week-Day-Number-of Calendar-Wednesday 4)
(Week-Day-Number-of Calendar-Thursday 5)
(Week-Day-Number-of Calendar-Friday 6)
(Week-Day-Number-of Calendar-Saturday 7)))
(define-okbc-frame Calendar-Month
:frame-type :class
:direct-superclasses (Convex-Time-Interval)
:sentences (=> (Calendar-Month ?c)
(and (Starting-Point ?c ?s)
(Ending-Point ?c ?e)
(Year-Of ?s ?y)
(Year-Of ?e ?y)
(Month-Of ?s ?m)
(Month-Of ?e ?m)
(Magnitude (Duration ?c) Day-Unit (Month-Length ?m)) )))
(define-okbc-frame Calendar-Month-Type
:frame-type :class
:sentences (=> (subclass-of ?m Calendar-Month)
(instance-of ?m Calendar-Month-Type)))
(define-okbc-frame Calendar-January
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-February
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-March
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-April
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-May
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-June
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-July
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-August
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-September
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-October
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-November
:frame-type :class
:direct-superclasses (Calendar-Month))
(define-okbc-frame Calendar-December
:frame-type :class
:direct-superclasses (Calendar-Month))
(assertion ( and (Month-Length Calendar-January 31)
(Month-Length Calendar-February 29)
(Month-Length Calendar-March 31)
(Month-Length Calendar-April 30)
(Month-Length Calendar-May 31)
(Month-Length Calendar-June 30)
(Month-Length Calendar-July 31)
(Month-Length Calendar-August 31)
(Month-Length Calendar-September 30)
(Month-Length Calendar-October 31)
(Month-Length Calendar-November 30)
(Month-Length Calendar-December 31)))
(assertion ( and (Month-Number-Of Calendar-January 1)
(Month-Number-Of Calendar-February 2)
(Month-Number-Of Calendar-March 3)
(Month-Number-Of Calendar-April 4)
(Month-Number-Of Calendar-May 5)
(Month-Number-Of Calendar-June 6)
(Month-Number-Of Calendar-July 7)
(Month-Number-Of Calendar-August 8)
(Month-Number-Of Calendar-September 9)
(Month-Number-Of Calendar-October 10)
(Month-Number-Of Calendar-November 11)
(Month-Number-Of Calendar-December 12)))
;;;
;;; Three cases of Meets
;;;
(Define-Okbc-Frame Meets-2Closed
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Meets-2Closed ?i ?j)
(and (Time-Interval-Right-Closed ?i)
(Time-Interval-Left-Closed ?j)
(Meets ?i ?j))))
(Define-Okbc-Frame Meets-2Open
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Meets-2Open ?i ?j)
(and (Time-Interval-Right-Open ?i)
(Time-Interval-Left-Open ?j)
(Meets ?i ?j))))
(Define-Okbc-Frame Meets-OpenClosed
:Frame-Type :Slot
:Direct-Types (Binary-Relation Relation Slot)
:Own-Slots ((Range Time-Interval)
(Relation-Arity 2)
(Domain Time-Interval)
(Documentation ""))
:Sentences (<=> (Meets-OpenClosed ?i ?j)
(and (or (and (Time-Interval-Right-Open ?i)
(Time-Interval-Left-Open ?j))
(and (Time-Interval-Right-Open ?i)
(Time-Interval-Left-Open ?j)))
(Meets ?i ?j))))
;;;
;;; plus
;;;
(Define-Okbc-Frame Plus
:Frame-Type :individual
:Direct-Types (Relation)
:Own-Slots ((relation-arity 3))
:Sentences (<=> (Plus ?i ?j ?k)
(and (Time-Interval ?i)
(Time-Interval ?j)
(Time-Interval ?k)
(Time-Point ?p)
(<=>(or (Point-In-Interval ?p ?i)
(Point-In-Interval ?p ?j))
(Point-In-Interval ?p ?k)))))
;;;
;;; infinity
;;;
(assertion (and (Time-Point Infinite-Past)
(=> (Time-Point ?p) (not (Before ?p Infinite-Past)))))
(assertion (and (Time-Point Infinite-Future)
(=> (Time-Point ?p) (not (After ?p Infinite-Future)))))
;;;
;;; density
;;;
(assertion (=> (and (Time-Point ?i)
(Time-Point ?j)
(Before ?i ?j))
(exists ?k (and (Before ?i ?k) (Before ?k ?j)))))