我正在阅读活动数据库中的复合事件规范:模型和实现。其中描述了一种指定复合事件的方法,类似于正则表达式。让我解释一下基础知识:有事件历史。这些是一组原始事件,每个事件都有一个唯一的时间戳(因此可以将它们视为序列,但可以对它们使用集合操作)。还有事件表达式。这些是从历史到历史的功能。E
应用于h
( E[h]
)的表达式是满足h
where的子集。E
例如,原始表达式a
匹配 a's:
a[a, b, a, c, b] = a, a
(timestamps implicit)。
有这个操作符relative(E, F)
,它是这样定义的: 设E_i[h]
第 i 个事件发生在E[h]
; 通过删除时间戳小于或等于 的时间戳的所有事件发生h_i
来获得let 。然后。不太正式的是,假设历史在某个事件发生后立即开始,那么事件发生在哪里是满意的。例如(第二个 b,因为它前面有一个 a)。h
E_i[h]
relative(E, F)[h] = union over all i:s F[h_i]
relative(E, F)
h
F
h
E
relative(a, b)[b, c, a, c, b] = b
现在,有relative+(E)
一个我不明白的运营商。它定义为:
relative_1(E) = E
relative_i(E) = relative(relative_i-1(E), E)
relative+(E) = union over all positive i:s relative_i(E)
与relative+(E)
just 有何不同E
?我理解它的方式relative(E, E)[h]
始终是 的子集E[h]
,因此它们的并集将等于E[h]
。