一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于有序事件列表的复杂事件匹配方法、装置及存储介质

2022-06-11 09:22:53 来源:中国专利 TAG:


1.本技术涉及信息处理技术领域,尤其涉及一种基于有序事件列表的复杂事件匹配方法、装置及存储介质。


背景技术:

2.随着信息技术的迅猛发展,各类信息系统产生的数据呈指数增长,大规模的数据分析处理在各行各业都得到了广泛的应用。目前存在的复杂事件处理方法大致可以分为三类:基于自动机模型、基于逻辑模型和基于树型模型。但这些方法都存在着一定的局限性,处理方式复杂,容易产生大量的中间结果,处理效率低。


技术实现要素:

3.本技术提供了一种基于有序事件列表的复杂事件匹配方法、装置存储介质,以解决计算机在复杂事件处理方面存在的处理方式复杂,容易产生大量的中间结果,处理效率低的问题。
4.一种基于有序事件列表的复杂事件匹配方法,包括:
5.预设查询模式以及给定事件流;其中,
6.所述查询模式包括:目标序列,属性约束条件,事件窗口大小,输出表达形式;
7.利用所述查询模式对事件流中的事件实例进行初步过滤,将符合所述查询模式中的事件类型以及满足属性约束条件的事件实例进行缓存得到相对应的有序事件列表缓冲区;
8.在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作,得到复杂事件的候选序列结果;
9.对所述复杂事件候选序列进行验证,得到并输出复杂事件结果。
10.优选地,利用所述查询模式对事件流中的事件实例进行初步过滤步骤中,还包括:
11.根据所述目标序列对所述事件流中的事件进行分类,确定相关事件的类型;
12.根据所述属性约束条件对每一种类型的所述相关事件进行筛选,以及将具有相同类型的相关事件缓存到同一个缓冲区进行缓存,即,得到有序事件列表,其中,
13.所述属性约束条件包括:常量约束以及关联约束;即,在初步过滤时利用所述常量约束条件对每一种类的所述相关事件进行筛选。
14.优选地,在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作步骤中,还包括:
15.根据所述目标序列形式,确定初始事件序列;
16.在所述初始事件的缓冲区内获取初始事件实例;
17.通过利用所述事件窗口大小给定的时间范围内,对发生在所述初始事件实例后的其他类型事件进行筛选,得到后续发生事件实例;
18.将所述初始事件实例与符合条件的后续发生事件实例创建为复杂事件候选序列,
得到多个所述复杂事件候选序列,即,复杂事件候选序列。
19.优选地,在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作步骤中,还包括:
20.对所述后续发生事件实例是否满足所述时间窗口约束进行验证;
21.根据所述事件窗口大小,计算得到后续发生事件实例的发生时间范围;
22.在所述时间范围内,对在初始事件后发生的其他类型事件的事件实例进行验证;
23.若存在满足所述时间窗口的后续事件实例,则将所述事件实例添加为一个新的复杂事件候选序列。
24.优选地,还包括:判断当前事件实例类型是否为最后一个事件类型;
25.若是,当前获得的复杂事件序列中的任意一个复杂事件序列都表示一个满足约束的复杂事件候选序列结果;
26.若否,则利用递归调用,直到对最后一个事件类型处理完毕。
27.优选地,对所述复杂事件候选序列进行验证的步骤包括:
28.利用所述属性约束条件中的关联约束对所述复杂事件候选序列中的各组候选结果进行验证,筛选过滤后,获得满足所述关联约束的复杂事件候选序列;即,得到符合查询模式中所有约束的复杂事件结果;
29.将所述复杂事件结果按照所述输出表达形式进行输出。
30.一种基于有序事件列表的复杂事件匹配装置,包括:
31.事件缓存模块,用于利用所述查询模式对事件流中的事件实例进行初步过滤,将符合所述查询模式中的事件类型以及满足属性约束条件的事件实例进行缓存得到相对应的有序事件列表缓冲区;
32.查询过滤模块,用于在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作,得到复杂事件的候选序列结果;
33.属性验证模块,用于对所述复杂事件候选序列进行验证,得到并输出复杂事件。
34.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述的基于有序事件列表的复杂事件匹配方法步骤。
35.本技术提供了一种基于有序事件列表的复杂事件匹配方法、装置及储存介质,通过将筛选后的事件缓存到缓冲区,然后利用不同约束分别对有序事件列表中的事件进行递归,在缓存的过程中,过滤掉不相关的事件类型的事件和不满足常量约束的事件实例,来减少不必要的中间结果的产生,提高处理效率。
36.其次在有序事件列表上对事件实例执行查询过滤操作,给出了一种基于递归遍历的算法,通过确定初始事件实例,再监测其他后续事件缓冲区上可以组成复杂事件的事件实例。由于构成复杂事件候选序列的事件实例会存在多个,每个事件实例需利用缓存区判断是否真实存在,而基于递归的方法依次在其它事件有序缓冲区中校验剩余的事件实例,可以更好的确定监测事件的起点和范围,降低工作成本。
附图说明
37.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还
可以根据这些附图获得其他的附图。
38.图1为基于有序事件列表的复杂事件匹配方法的流程图;
39.图2为复杂事件匹配方法框架图;
40.图3为股票交易数据进行事件缓存过程示意图;
41.图4为在有序事件列表上执行过滤筛选示例图;
42.图5为复杂事件候选序列属性验证过程示意图;
43.图6为目标序列包含否定操作的事件缓冲过程示意图;
44.图7为目标序列包含否定操作的在有序事件列表上执行过滤筛选示例图;
45.图8为目标序列包含否定操作的复杂事件候选序列属性验证过程示意图;
46.图9为目标序列包含闭包操作的在有序事件列表上执行过滤筛选示例图;
47.图10为目标序列包含闭包操作的复杂事件候选序列属性验证过程示意图。
48.具体实施方式
49.下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本技术相一致的所有实施方式。仅是与权利要求书中所详述的、本技术的一些方面相一致的系统和方法的示例。
50.本技术提供的技术方案中,提供了一种基于有序事件列表的复杂事件匹配方法,请参见图1,包括:
51.s1:预设查询模式以及给定事件流;
52.其中,所述查询模式包括:目标序列,属性约束条件,事件窗口大小,输出表达形式;
53.预设查询模式的目的在于,在对事件流中的事件实例进行初步过滤时需要确定查询的模式,即,查询事件的类型。为后续缓存步骤提供先决条件。
54.s2:利用所述查询模式对事件流中的事件实例进行初步过滤,将符合所述查询模式中的事件类型以及满足属性约束条件的事件实例进行缓存得到相对应的有序事件列表缓冲区;
55.进一步地,利用所述查询模式对事件流中的事件实例进行初步过滤步骤中,还包括:
56.s21:根据所述目标序列对所述事件流中的事件进行分类,确定相关事件的类型;
57.s22:根据所述属性约束条件对每一种类型的所述相关事件进行筛选,以及将具有相同类型的相关事件缓存到同一个缓冲区进行缓存,即,得到有序事件列表,其中,所述属性约束条件包括:常量约束以及关联约束;即,在初步过滤时利用所述常量约束条件对每一种类的所述相关事件进行筛选。
58.在此步骤中,将事件流上的事件实例按照查询模式中的目标序列的形式可以确定相关类型,然后利用常量约束对事件流中的事件进行筛选并缓存。例如,给定一个复杂事件查询模式,假设其目标序列形式为(e1,e2,

,eh),为目标序列中每个元素ei对应的事件类型创建相应的缓冲区以及缓冲筛选器,即,常量约束,进而利用筛选器将事件流上的事件实
例缓存到相应的有序缓冲区i(ei)当中。
59.在实际应用中,用户查询想在众多繁杂的交易数据当中找到想要的交易记录,从而分析股票交易数据,例如图2所示的复杂事件匹配框图;
60.我们给定的查询模式为q1,q1的顺序模式为:
61.q1:pattern a;b;c
62.where
ꢀꢀꢀ
a.price》1000;
63.and
ꢀꢀꢀꢀꢀꢀꢀ
a.price》(1 y%)*b.price;
64.and
ꢀꢀꢀꢀꢀꢀꢀ
a.price《(1-z%)*c.price;
65.within
ꢀꢀꢀꢀꢀ
10min
66.return
ꢀꢀꢀꢀ
a,b,c
67.将图2看做是股票交易数据,通过对事件流上来临的数据执行步骤s21,对事件实例初步的过滤并检查常量约束条件,将满足的事件实例缓存到相应的有序事件列表当中。查询模式q1中包含的目标序列为(a;b;c)。根据该目标序列分别为a、b、c三种事件类型创建缓冲筛选器,如图3所示,由于q1中常量约束a.price》1000,将该条件则被添加到a事件类型的筛选器中。经过该三个筛选器得到相对应的有序事件列表,即缓冲区,分别为i(a)、i(b)与i(c)。i(a)中存储了事件类型为a的且交易价格属性大于1000的事件实例(如a1,a2,a3等,a4由于交易价格属性不满足筛选条件,未被加入缓冲区中),i(b)与i(c)则分别存储了类型为b与c的事件实例,最终事件流中相关的事件实例存到如图3所示的缓存区当中。
68.进一步地,在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作步骤中:包括:
69.s31:根据所述目标序列形式,确定初始事件;
70.s32:在所述初始事件的缓冲区内获取初始事件实例;
71.s33:通过利用所述事件窗口大小给定的时间范围内,对发生在所述初始事件实例后的其他类型事件进行筛选,得到后续发生事件实例;
72.s34:将所述初始事件实例与符合条件的后续发生事件实例创建为复杂事件候选序列,得到多个所述复杂事件候选序列,即,复杂事件候选序列。
73.经过事件缓存处理后,处理系统将得到有序事件列表,即事件实例缓冲区。查询过滤的作用为在事件实例缓冲区上找到满足查询模式中目标序列子句约束与时间戳窗口子句约束的事件实例。
74.在上述步骤中,需要说明的是,由于候选序列需满足查询模式中目标序列形式,因此可以通过查询模式的目标序列来确定起始事件e0,并且在该事件对应的缓冲区i(e0)上获取初始事件实例。此时,这些初始事件实例仅是可能存在的候选序列的第一个事件实例,即候选序列的初始事件实例。对于一个初始事件实例ei,当且仅当在剩余的其他类型的有序缓冲区中存在满足时间窗口范围内的事件实例,使得它们能构成的集合满足查询模式目标序列,那么以此ei作为起始的这个事件实例组合则是一个复杂事件候选序列。
75.在本技术提供的技术方案中,针对在对发生在所述初始事件实例后的其他类型事件进行筛选步骤中,还包括:
76.s35:对所述后续发生事件实例是否满足所述时间窗口约束进行验证;
77.具体步骤为:
78.s351:根据所述事件窗口大小,计算得到后续发生事件实例的发生时间范围;
79.s352:在所述时间范围内,对在初始事件后发生的其他类型事件的事件实例进行验证;
80.s353:若存在满足所述时间窗口的后续事件实例,则将所述事件实例添加为一个新的复杂事件候选序列。
81.在此步骤中,需要说明的是,在其它事件有序缓冲区中的验证都可以归结为:在一个时间戳允许范围内,判断缓冲区上是否有对应的事件实例存在。由于构成候选序列的事件实例会存在多个,每个事件实例需利用缓存区判断是否真实存在,本文提出基于递归的方法依次校验剩余的事件实例。
82.在事件缓冲区上校验满足条件的事件实例的思路为:通过查询模式中时间戳窗口子句中的时间窗口大小tw,即,事件窗口大小,来计算出事件实例发生的时间戳范围[t
x
,ty],然后在对应事件缓冲区当中判断[t
x
,ty]时间戳范围内是否存在事件实例。如果构成候选序列的事件实例均存在,则找到的事件实例可以组合为一个复杂事件实例候选序列,并且创建一个相应集合ei.sr来存储当前匹配到的结果子集。
[0083]
进一步地,还包括:
[0084]
s36:判断当前事件实例类型是否为最后一个事件类型;
[0085]
若是,当前获得的复杂事件序列中的任意一个复杂事件序列都表示一个满足约束的复杂事件候选结果;若否,则利用递归调用,直到对最后一个事件类型处理完毕。
[0086]
需要说明的是,则判断当前处理的ei是否为查询模式目标序列中最后一个事件类型。如ei为最后一个事件类型,则当前获得的ej.sr中任意一个序列集合都表示一个满足约束的候选序列,并将其返回;如不是,则算法进行递归调用,直到最后一个事件类型处理完毕。
[0087]
在实际应用中,请再次参见图2,图3,事件缓存得到的查询模式的起始事件类型a缓冲区中的起始事件实例如图3中为a1:2,将该事件实例放到相应的集合中存储,如上图4中ea.sr所示。计算其允许后续事件实例时间戳范围为[2,12],在后续b事件类型的缓冲区中能匹配到b1:3,b2:8和b3:9三个b类型的事件实例,因此会创建三个新的序列组合存储到集合中,如图4中eb.sr所示。相同的,再由当前组合b事件实例的时间戳计算出允许其后续c事件实例的时间戳范围,如图中a1:2,b1:3允许后续时间戳范围为[3,12],那么在c事件类型的有序缓冲区当中可以验证到c1:6和c2:10两个事件实例,并且创建新的序列组合存储到如图4中的ec.sr中。同理b2:8和b3:9也都能匹配到c2:10这个事件实例。判断c事件类型为查询模式中最后一个事件类型时,将当前存储的事件实例集合即复杂事件候选序列输出,如图4中右侧四个候选序列结果。
[0088]
在本技术提供的技术方案中,还包括:按照所述目标序列的形式,为所述目标序列中的每一个事件类型建立缓冲筛选器,所述关联约束作为所述缓冲筛选器的筛选条件。
[0089]
需要说明的是,在查询模式中where子句的约束条件可以分为两大类,一类是事件实例属性与常量间的比较条件,本文称为常量约束;另一类是不同事件实例之间的属性比较,称为关联约束。
[0090]
事实上常量约束仅仅作用于单一的事件类型,事件缓冲筛选器也是作用于单一的事件类型。因此,本发明将常量约束的校验放到事件缓存步骤相应的缓冲筛选器中。这种方
式会预先筛选掉事件流上不满足这些常量约束的事件实例进入到缓冲区当中,减少了事件缓存与查询过滤步骤产生的中间结果,从而提升查询处理效率。
[0091]
在本技术提供的技术方案中,还包括:
[0092]
s4:对所述复杂事件候选序列进行验证的步骤为:
[0093]
利用所述属性约束条件中的关联约束对所述复杂事件候选序列中的各组候选结果进行验证,筛选过滤后,获得满足所述关联约束的复杂事件候选序列;即,得到符合查询模式中所有约束的复杂事件结果;
[0094]
将所述复杂事件结果按照所述输出表达形式进行输出。
[0095]
需要说明的是,针对查询过滤产生的复杂事件候选序列,结果验证步骤则需要在其上添加筛选器,将筛选条件设置为查询模式中的关联约束。复杂事件候选序列通过带有关联约束的筛选器,筛选器检查其上的属性是否均满足设定的关联约束条件,不满足关联约束的候选序列会被筛除掉,满足的即为正确的复杂事件结果输出。
[0096]
在实际应用中,请再次以图2,图3查询事件为例,针对如图4查询过滤产生的复杂事件候选序列,得到的部分复杂事件候选序列如图5中所示,再针对这些复杂事件候选序列添加查询模式中的关联约束作为验证条件,即a.price》(1 y%)*b.price和a.price《(1-z%)*c.price(假设y为44,z为49)。图5中虚线部分的《a1,b2,c3》这一候选序列的a1:2的交易价格虽然低于c3:10的49%跌幅,但是它并不高于b2:8的44%涨幅,所以它并不是正确的复杂事件结果。最终,得到的四个复杂事件候选序列中有三个复杂事件作为结果被输出。
[0097]
需要说明的是,ei的序列操作类型分为多种,在一些实施例中,当ei的序列操作类型为否定操作时,其处理方法不同于顺序操作与闭包操作。由于复杂事件序列不能包含否定操作下的事件实例,目标序列无法跨过否定操作的事件实例。基于该性质,利用出现在时间戳范围内的实例的时间戳,来更新当前部分匹配集合的终止时间,从而保证匹配得到的目标序列所在时间戳范围不会包含否定的事件实例。
[0098]
在实际应用中,再次以用户查询想在众多繁杂的交易数据当中找到想要的交易记录为例,我们给定的查询模式为q2,q2的顺序模式为:
[0099]
q2:pattern a;!b;c
[0100]
where
ꢀꢀꢀꢀꢀ
a.price》1000;
[0101]
and
ꢀꢀꢀꢀꢀꢀꢀ
b.price《800;
[0102]
and
ꢀꢀꢀꢀꢀꢀꢀ
a.price《c.price;
[0103]
within
ꢀꢀꢀꢀ
10mi;
[0104]
return
ꢀꢀꢀꢀ
a,c
[0105]
将图2看做是股票交易数据,通过对事件流上来临的数据执行步骤s21,对事件实例初步的过滤并检查常量约束条件,将满足的事件实例缓存到相应的有序事件列表当中。查询模式q2中包含的目标序列为(a;!b;c)。根据该目标序列分别为a、b、c三种事件类型创建缓冲筛选器,如图6所示。由于q2中有常量约束a.price》1000,该条件则被添加到a事件类型的筛选器中,约束b.price《800,该条件则被添加到b事件类型的筛选器中。经过该三个筛选器得到相对应的有序事件列表,即缓冲区,分别为i(a)、i(b)与i(c)。i(a)中存储了事件类型为a的且交易价格属性大于1000的事件实例(如a1,a2,a3等,a4由于交易价格属性不满足筛选条件,未被加入缓冲区中),i(b)中存储了事件类型为b的且交易价格属性小于800的
事件实例(如b1,b2),最终事件流中相关的事件实例存到如图6所示的缓存区当中。
[0106]
事件缓存得到的查询模式的起始事件类型a缓冲区中的起始事件实例如图6中的a1:2,将该事件实例放到相应的集合中存储,如上图7中ea.sr所示。由于b事件类型是否定操作,即不允许在该复杂事件中有交易价格小于800的b类股票事件出现,因此当在i(b)缓存中检索到b1:3时,计算其允许后续事件实例c的时间戳范围应更新为[2,3],在i(c)中无满足的事件实例。则结束以a1:2为起点的复杂事件匹配,继续到下一个a2:5为起始事件实例的复杂事件匹配。同理可知,计算其允许后续事件实例c的时间戳范围应更新为[5,8],那么在c事件类型的有序缓冲区当中可以验证到c2:6事件实例,并且创建新的序列组合存储到如图7的ec.sr中。判断c事件类型为查询模式中最后一个事件类型时,将当前存储的事件实例集合即复杂事件候选序列输出,如图7中候选序列结果。
[0107]
针对如图7查询过滤产生的复杂事件候选序列,得到的部分复杂事件候选序列如图8中所示,再针对这些复杂事件候选序列添加查询模式中的关联约束作为验证条件,即a.price《c.price,图8中的结果满足这一关联约束,所以《a2,c2》是一个复杂事件结果。
[0108]
在另一些实施例中,当ei的序列操作类型为闭包操作时,需先获取闭包参数k值。然后设置一个临时变量count,用于对满足时间戳范围的事件实例进行计数。同理,算法需在i(ei)上找到满足时间戳范围的事件实例。不同于处理顺序操作,仅当实例的个数大于了闭包参数值k时,才创建新的集合,用于表示新的部分匹配序列。
[0109]
在实际应用中,以用户查询想在众多繁杂的交易数据当中找到想要的交易记录为例,我们给定的查询模式为q3,q3的顺序模式为:
[0110]
q3:pattern a;b2;c
[0111]
where
ꢀꢀꢀꢀꢀ
a.price》1000;
[0112]
and
ꢀꢀꢀꢀꢀꢀꢀꢀ
b.price《c.price;
[0113]
within
ꢀꢀꢀꢀꢀ
10min;
[0114]
return
ꢀꢀꢀꢀ
a,sum(b),c
[0115]
将图2看做是股票交易数据,通过对事件流上来临的数据执行步骤s21,对事件实例初步的过滤并检查常量约束条件,将满足的事件实例缓存到相应的有序事件列表当中。查询模式q3中包含的目标序列为(a;b2;c)。根据该目标序列分别为a、b、c三种事件类型创建缓冲筛选器,如图3所示。由于q3中有常量约束a.price》1000,该条件则被添加到a事件类型的筛选器中。经过该三个筛选器得到相对应的有序事件列表,即缓冲区,分别为i(a)、i(b)与i(c)。i(a)中存储了事件类型为a的且交易价格属性大于1000的事件实例(如a1,a2,a3等,a4由于交易价格属性不满足筛选条件,未被加入缓冲区中),i(b)与i(c)则分别存储了类型为b与c的事件实例,最终事件流中相关的事件实例存到如图3所示的缓存区当中。
[0116]
事件缓存得到的查询模式的起始事件类型a缓冲区中的起始事件实例如图3为a1:2,将该事件实例放到相应的集合中存储,如图9中ea.sr所示。计算其允许后续事件实例时间戳范围为[2,12],由于b事件类型是闭包操作,即在时间戳允许范围内有2个b类股票事件实例出现,因此当在i(b)缓存中检索到如图9中eb.sr所示的《a1,(b1,b2)》和《a1,(b2,b3)》两个结果。计算《a1,(b1,b2)》其允许后续事件实例c的时间戳范围应更新为[8,12],在i(c)中可以验证到c3:10事件实例,并且创建新的序列组合存储到如图9的ec.sr中。计算《a1,(b2,b3)》其允许后续事件实例c的时间戳范围应更新为[,12],在i(c)中可以验证到c3:10事件实例,
并且创建新的序列组合存储到如图9的ec.sr中。判断c事件类型为查询模式中最后一个事件类型时,将当前存储的事件实例集合即复杂事件候选序列输出,如图9中右侧两个个候选序列结果。
[0117]
针对如图9查询过滤产生的复杂事件候选序列,得到的部分复杂事件候选序列如图10中所示,再针对这些复杂事件候选序列添加查询模式中的关联约束作为验证条件,即b.price《c.price,图10中的结果均满足这一关联约束,所以《a1,(b1,b2),c3》和《a1,(b2,b3),c3》均是复杂事件结果。
[0118]
在本技术提供的技术方案中,还提供了一种基于有序事件的复杂事件匹配装置以及存储介质,包括:
[0119]
事件缓存模块,用于利用所述查询模式对事件流中的事件实例进行初步过滤,将符合所述查询模式中的事件类型以及满足属性约束条件的事件实例进行缓存得到相对应的有序事件列表缓冲区;
[0120]
查询过滤模块,用于在所述有序事件列表缓冲区上,执行满足所述查询模式的匹配操作,得到复杂事件的候选序列结果;
[0121]
属性验证模块,用于对所述复杂事件候选序列进行验证,得到并输出复杂事件。
[0122]
以及一种计算机程序被处理器执行时实现所述的基于有序事件列表的复杂事件匹配方法步骤。
[0123]
本技术提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本技术总的构思下的几个示例,并不构成本技术保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本技术方案所扩展出的任何其他实施方式都属于本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献