In some applications it might be interesting to state that assertions are valid only within a certain time interval. This is not possible with standard description logic systems. There are several research resuls available on qualitative temporal reasoning in the context of description logics. RacerPro can support qualitative temporal reasonsing as part of the nRQL system (compare the section on RCC substrates in the User’s Guide). In addition, in some cases, quantitative information about time intervals might be available and could be relevant for query answering. RacerPro now also supports Abox query answering w.r.t. assertions that are associated with specifications for time intervals. The following example shows the main idea.
(in-knowledge-base traffic-analysis)
(define-primitive-role r :inverse r) (implies car vehicle) (implies volkswagen car) (instance vw1 volkswagen) (instance vw2 volkswagen) (instance ralf pedestrian) (related vw2 vw1 r) (define-event-assertion ((move vw1) 7 80)) (define-event-assertion ((move vw2) 3 70)) (define-event-assertion ((move ralf) 3 70)) (define-event-assertion ((approach vw1 vw2) 10 30)) (define-event-assertion ((behind vw1 vw2) 10 30)) (define-event-assertion ((beside vw1 vw2) 30 40)) (define-event-assertion ((in-front-of vw1 vw2) 40 80)) (define-event-assertion ((recede vw1 vw2) 40 60)) (define-event-rule ((overtake ?obj1 ?obj2) ?t1 ?t2) ((?obj1 car) ?t0 ?tn) ((?obj1 ?obj2 r) ?t0 ?tn) ((move ?obj1) ?t0 ?t2) ((move ?obj2) ?t1 ?t2) ((approach ?obj1 ?obj2) ?t1 ?t3) ((behind ?obj1 ?obj2) ?t1 ?t3) ((beside ?obj1 ?obj2) ?t3 ?t4) ((in-front-of ?obj1 ?obj2) ?t4 ?t2) ((recede ?obj1 ?obj2) ?t4 ?t2)) |
The following query check whether there exists an overtake event hidden in the Abox and the event assertions.
(timenet-retrieve ((overtake ?obj1 ?obj2) ?t1 ?t2))
|
The query returns a set of binding for variables if an event can be detected (and nil otherwise). For time variables an interval for the lower-bound and upper-bound are returned. Thus, the overtake event start at time unit 10 at the earliest and 29 at the latest. It ends at time unit 29 at the earliest and 60 at the latest. In a future version of RacerPro, redundant binding specifications will be removed.
(((?obj1 vw1) (?obj2 vw2) (?t1 (10 29)) (?t2 (41 60)))
((?obj1 vw1) (?obj2 vw2) (?t1 (10 29)) (?t2 (41 60)))) |
Note that the example involves reasoning. The fact that vw1 is a car is only implicitly stated. In addition, temporal constraint have to be checked for the time intervals.
In the previous queries, variables are used. However, one might very well use constants in event queries as shown in the following example.
(timenet-retrieve ((overtake ?obj1 vw2) ?t1 ?t2))
|
Now, only bindings for the variable ?obj1 are returned.
(((?obj1 vw1) (?t1 (10 29)) (?t2 (41 60)))
((?obj1 vw1) (?t1 (10 29)) (?t2 (41 60)))) |
In a future version, a forward-chaining application of event rules will be supported, so there is no need to repeatedly cycle through all known events using respective queries. Racer Systems offers consulting for industrial partners who need event recognition w.r.t. expressive background ontologies.