我在讀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]
總是會成爲一個子集,因此他們的工會只是要等於。