我在读Composite event specification in active databases: Model and implementation。其中描述了一种指定复合事件的方式,与正则表达式类似。让我来解释一下基本知识:有事件历史记录。这些是原始事件集合,每个事件都有一个唯一的时间戳(所以人们可以将它们看作序列,但可以对它们使用集合操作)。并有事件表达式。这些是从历史到历史的功能。适用于h
()的表达式E
是h
的子集,其中满足E
。例如,原始表达式a
匹配a:
a[a, b, a, c, b] = a, a
(时间戳隐式)。“相对+”运算符有什么好处?
存在此运算符relative(E, F)
,其定义如此: 令E_i[h]
为中的第i个事件发生;通过删除时间戳小于或等于E_i[h]
的时间戳的所有事件发生,从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
(第二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)
如何从刚刚E
relative+(E)
有什么不同?我的理解是,relative(E, E)[h]
总是会成为一个子集,因此他们的工会只是要等于。