时间推理(Temporal)是CEP中特有的条件判断(LHS)。本文介绍13种时间推理运算符及其DRL表示。
CEP中的事件(Event)具有两个与时间相关的属性。一个是timestamp,标记事件发生的时间;另一个是duration,标记事件持续的时间间隔。
由这两个时间属性,还可以计算出事件结束的事件。
时间推理(Temporal)是CEP中特有的条件判断(LHS),其判断的要素正是基于事件的上述时间属性。
Allen在《An Interval-based Representation of Temporal Knowledge》中描述了13种时间推理的运算符。
下面用DRL语言介绍这13种运算符。其中,运算符的参数格式均为[#d][#h][#m][#s][#[ms]]
。比如3m30s
、4m
等。
After 和 Before(之前和之后)
1 2 3 4 5
| // x∈[a,b]时,满足以下条件 //A发生在B之前 $eventA : EventA( this before[a,b]$eventB ) //B发生在A之后 $eventB : EventB( this after[a,b]$eventA )
|
- 如果没有给出参数,则a=1ms, b=+∞
- 如果只给出一个参数a,则b=+∞
Coincides(同时发生)
1 2 3
| // x∈[0,a],且y∈[0,b]时,满足以下条件 $eventA : EventA( this coincides[a,b]$eventB ) $eventB : EventB( this coincides[a,b]$eventA )
|
- 如果只给出一个参数a,则b=a
- 如果不给出参数,则a=0,b=0
During 和 Includes(包含)
1 2 3 4 5
| // x∈[a,b],且y∈[c,d]时,满足以下条件 //A在B期间发生 $eventA : EventA( this during[a,b,c,d]$eventB ) //B包含A $eventB : EventB( this includes[a,b,c,d]$eventA )
|
- 如果只给出二个参数a,b,则c=a,d=b
- 如果只给出一个参数b,则a=0,c=0,d=b
- 如果不给出参数,则a=0,b=+∞, c=0,d=+∞
Finishes 和 Finished by(同时结束)
1 2 3 4 5
| // x∈[0,a]时,满足以下条件 //A在B之后开始,和B同时结束 $eventA : EventA( this finishes[a]$eventB ) //B在A之前开始,和B同时结束 $eventB : EventB( this finishedby[a]$eventA )
|
Meets 和 Met by(相邻)
1 2 3 4 5
| // x∈[0,a]时,满足以下条件 //A结束时B开始 $eventA : EventA( this meets[a]$eventB ) //A结束时B开始 $eventB : EventB( this metby[a]$eventA )
|
Overlaps 和 Overlappd by(相交)
1 2 3 4 5
| // x∈[a,b]时,满足以下条件 //A在B之前开始,在B之后结束 $eventA : EventA( this overlaps[a,b]$eventB ) //B在A之后开始,在A之前结束 $eventB : EventB( this overlappedby[a,b]$eventA )
|
- 如果只给出一个参数b,则a=0
- 如果不给出参数,则a=0,b=0
Starts 和 Started by(同时开始)
1 2 3 4 5
| // x∈[0,a]时,满足以下条件 //A和B同时开始,A先结束 $eventA : EventA( this starts[a]$eventB ) //B和A同时开始,B后结束 $eventB : EventB( this startedby[a]$eventA )
|