2012-07-11 65 views
0

我在读Composite event specification in active databases: Model and implementation。其中描述了一种指定复合事件的方式,与正则表达式类似。让我来解释一下基本知识:有事件历史记录。这些是原始事件集合,每个事件都有一个唯一的时间戳(所以人们可以将它们看作序列,但可以对它们使用集合操作)。并有事件表达式。这些是从历史到历史的功能。适用于h(​​)的表达式Eh的子集,其中满足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)是事件发生在hF纳假设历史立即开始按照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)

如何从刚刚Erelative+(E)有什么不同?我的理解是,relative(E, E)[h]总是会成为​​一个子集,因此他们的工会只是要等于​​。

回答

1

我想通了。要查看​​和relative+(E)[h]结果之间的差异,E需要的东西不仅仅是一个基本表达式匹配某种类型的所有事件更加复杂。例如:假设我们有一个事件表达式first,它始终与历史记录中的第一个事件相匹配。然后first[h]当然是h的第一要素,而relative+(first)[h]h本身,因为它是第一h,那么第一个第一h后,等