CN102291440A - 一种云环境下规则优化方法及装置 - Google Patents
一种云环境下规则优化方法及装置 Download PDFInfo
- Publication number
- CN102291440A CN102291440A CN2011102132270A CN201110213227A CN102291440A CN 102291440 A CN102291440 A CN 102291440A CN 2011102132270 A CN2011102132270 A CN 2011102132270A CN 201110213227 A CN201110213227 A CN 201110213227A CN 102291440 A CN102291440 A CN 102291440A
- Authority
- CN
- China
- Prior art keywords
- rule
- node
- cloud environment
- regular
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种云环境下规则优化方法及装置。该优化方法包括:步骤1,用户在云环境下设置规则,规则包括条件部分和动作部分;步骤2,收集用户设置的规则并生成规则集合;步骤3,合并基于同一数据表的规则。本发明实现了一个包含云用户设置规则、海量规则生成、基于同一数据表的规则合并、基于规则条件等价合并的优化及其基于规则模块等价替换的优化的云环境下的海量规则优化方案,实现了对云环境下海量规则的优化,从而更好地为用户提供服务。
Description
技术领域
本发明涉及海量规则处理领域,尤其涉及一种云环境下规则优化方法及装置。
背景技术
云环境下海量规则处理是将海量的由云用户设置的规则进行处理,以提高处理速度。近年来,随着科学技术的发展,各个领域可用的数据量迅速增长,云环境下商业系统将处理千万级甚至上亿条用户设置的各种规则。未来的国家安全预警系统、国家主动式电子政务系统以及交通预警系统等等,每天要处理用户设置的海量级的规则。随着这些海量规则的出现,处理如此庞大的海量规则网已经显得越来越力不从心。云环境下的海量规则由于计算量巨大,若不进行优化将给处理机带来巨大的负载。如何将庞大的云环境下云用户设置的海量规则进行有效优化是一个迫切需要解决的问题。对海量规则,通过对这些海量规则进行优化是进行大规模规则计算的有效方法。但是这种理论仍然没有一套完整的理论框架,因此研究云环境下海量规则的优化显得尤为重要。
发明内容
针对现有技术中存在的上述问题,本发明提供了一种云环境下规则优化方法及装置。
本发明提供了一种云环境下规则优化方法,包括:
步骤1,用户在云环境下设置规则,规则包括条件部分和动作部分;
步骤2,收集用户设置的规则并生成规则集合;
步骤3,合并基于同一数据表的规则。
在一个示例中,条件部分和动作部分分别用规则节点表示;条件部分使用的节点包括规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点以及规则笛卡尔积节点;规则节点表示,动作部分使用的节点包括动作规则节点。
在一个示例中,还包括步骤4,对等价的规则的条件部分进行合并。
在一个示例中,还包括步骤5,对等价的规则模块进行替换。
在一个示例中,步骤3包括:
步骤31,提取规则的条件部分的数据源;
步骤32,若数据源只属于数据库中唯一的数据库表,则从该唯一的数据库表中引出一带箭头的有向线,有向线的箭尾端为数据表,有向线的箭头端指向该规则的规则条件部分的第一个节点;若数据源属于数据库中的多个数据库表,则从相应的这些数据库表中分别引出一带箭头的有向线,有向线的箭尾端为相应的数据表,有向线的箭头端指向该规则的规则条件部分的第一个节点。
在一个示例中,步骤4包括:
步骤41,提取规则的条件部分使用的规则节点;
步骤42,找出相同的规则节点并合并为一个节点。
在一个示例中,步骤5包括:
步骤51,找出等价的规则模块;
步骤52,计算每种规则模块的代价;
步骤53,用代价小的规则模块替换代价高的等价规则模块。
在一个示例中,步骤51中,通过下述公式找出等价的规则模块:
σθ1∧θ2(C)=σθ1(σθ2(C));
σθ(C1∪C2)=σθ(C1)∪σθ(C2);
σθ(C1∩C2)=σθ(C1)∩σθ(C2);
σθ1(σθ2(C))=σθ2(σθ1(C));
C1∪C2=C2∪C1;
C1∩C2=C2∩C1;
(C1∪C2)∪C3=C1∪(C2∪C3);
(C1∩C2)∩C3=C1∩(C2∩C3);
C,C1,C2或C3为规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点以及规则笛卡尔积节点中的任一节点。
本发明提供了一种云环境下规则优化装置,包括规则,云环境,规则收集单元以及同一数据表规则合并单元;规则包括条件部分和动作部分;
规则由云环境下的用户设置;
规则收集单元,用于收集用户设置的规则并生成规则集合;
同一数据表规则合并单元,用于合并基于同一数据表的规则。
在一个示例中,还包括等价规则条件合并单元和/或等价模块替换单元;规则条件合并单元用于对等价的规则条件进行合并;等价模块替换单元,用于对等价的规则模块进行替换。
本发明实现了一个包含云用户设置规则、海量规则生成、基于同一数据表的规则合并、基于规则条件等价合并的优化及其基于规则模块等价替换的优化的云环境下的海量规则优化方案,实现了对云环境下海量规则的优化,从而更好地为用户提供服务。
附图说明
下面结合附图来对本发明作进一步详细说明,其中:
图1为本发明的一种云环境下海量规则优化方法体系架构框图;
图2为本发明的同一数据表的规则合并示例图;
图3为本发明的基于规则条件等价合并的优化示例图;
图4为本发明的规则模块等价替换示例图。
具体实施方式
本发明提供一种云环境下海量规则优化方法,可以实现对海量规则的有效优化,从而更好地服务于用户。
本发明为了将规则能够图形化表示,引入了规则节点的概念,规则的条件部分和动作部分都以相应的规则节点来表示。图中用圆圈表示。规则条件部分的节点有:规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点,规则笛卡尔积节点。规则动作部分的节点有:规则动作节点。
本发明专利中的对规则进行合并及其优化中所涉及到的节点可能包含规则条件部分的所有可能的规则节点,即:规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点,规则笛卡尔积节点。
下面分别介绍各种节点的含义。
(1)规则选择节点
规则选择节点,它表示一个选择关系。选择又称为限制(Restriction),它是在关系表中选取符合条件的元组。是从行的角度进行的运算。如“果粒橙”价格小于6元/瓶,一室一厅房子出租价格小于1200元/月,这些都属于一个选择关系。
(2)规则联合节点
规则联合节点,它表示一个并的关系。规则联合节点,又称为规则“或”节点。它是指从两个或者多个对象集合中,将只要满足其中任一条件的集合进行的运算,而不需要任何条件约束。R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。如“百事可乐”价格小于2.8元/瓶,或者“可口可乐”价格小于2.8元/瓶时的关系记录的一个联合。
(3)规则交集节点
规则交集节点,它表示一个交的关系。规则交集节点,又称为规则“交”节点。它是指从两个或者多个对象集合中,将满足其中所有条件的集合进行的一种交的运算。设关系R和关系S具有相同的关系模式,关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S。
(4)规则连接节点
规则连接节点,它表示一个连接关系。规则连接节点就是从一个或者多个对象集合中,将满足连接条件的对象集合进行连接的一种运算(自然连接是指对象集合与自己本身进行自然连接)。连接也称为θ连接,它是从两个关系的笛卡尔积中选取属性间满足给定条件的元组。
(5)规则否定节点
规则否定节点,它表示一个否定的关系。它是那些不满足某一条件的节点集合。
(6)规则笛卡尔积节点
规则笛卡尔积节点可以描述为:给定一组域D1,D2,...,Dn。D1,D2,...,Dn的笛卡尔积为:D1×D2×...×Dn={(d1,d2,...,dn)|di∈Di,i=1,2,...,n}所有域的所有取值的一个组合。
(7)规则动作节点
规则动作节点,它表示当规则的条件满足时,所触发的动作。如:当规则设定人学生刘冰的微积分成绩一旦已经出来(成绩>0,假设成绩老师在没有登录时都默认为0分。一旦监测到成绩>0,表示成绩已经被老师输入到成绩系统中),则立即将规则设定人学生刘冰的微积分成绩第一时间发短消息给刘冰本人。
本发明提供的一种云环境下海量规则优化方法,包括:
1)云环境下众多云用户设置规则;
2)众多云用户设置的规则集合到一起会形成海量的规则集合;
3)针对云环境下同一数据表的所有规则均合并到一起;
4)将规则条件相同的所有规则进行合并优化;
5)将所有规则模块等价的规则模块进行替换,将处理代价小的规则模块替换掉处理代价大的规则模块。
下面结合附图对本发明进行详细说明。
如图1所示,本发明为一种云环境下海量规则优化方法,本实施例为所有能够在云环境下由用户自己设置规则的规则处理系统,本发明包括:
1)云用户设置规则。规则是指由云环境下众多云用户设置的规则,而不是由系统管理员设置的规则。现有的很多规则系统都是由系统管理员来进行设置规则,而本发明的规则由用户来自己设置,更具有语义性。
2)海量规则集生成。众多云用户设置的规则集合到一起会形成海量的规则集合。云环境下,只要是云的用户,都可以在云系统中设置自己的规则,假设在云环境下的某个电子商务系统中,该系统的用户有1000万人,假设平均每个用户在该系统中自己设置100条规则,那么总共就会有10亿条的海量规则,会形成一个巨大的规则集合库。
3)基于同一数据表的规则合并,如图2所示。将针对云环境下同一数据表的所有规则均合并到一起。在云环境下的规则系统中,规则系统的数据库有很多数据表(Table),而针对每个数据表(Table)均被云用户设置了海量的规则,这样首先可以以数据表(Table)为基础,将每个数据表(Table)下面的所有规则进行一个合并。
基于同一数据表的规则合并方法具体包括:
步骤1):提取规则条件部分的数据源;
步骤2):若数据源只属于某数据库中唯一的数据库表(假设为Table1),执行步骤3);
步骤3):则从该唯一的数据库表1中引出一带箭头的有向线,线的箭尾端为数据表1,箭头端指向该规则的规则条件部分的第一个节点;
步骤4):若数据源只属于某数据库中的多个数据库表(假设为Table1,Table2等),执行步骤5);
步骤5):则从相应的这些数据库表(假设为Table1,Table2等)中分别引出一带箭头的有向线,线的箭尾端为相应的数据表,箭头端指向该规则的规则条件部分的第一个节点;
步骤6):重复步骤1)-5),直到将所有的规则全部完成该种类型的合并。
例1展示了一个具体的基于同一数据表的规则合并示例。
例1:同一数据表的规则合并示例
在该示例中有两条规则R1,R2。
规则1:(在图2中用R1表示)
如果
账号=100008(条件在图2中用C1表示)
那么
执行A1动作
规则2:(在图2中用R2表示)
如果
存款余额>5,0000(条件在图2中用C2表示)
那么
执行A2动作
上面两条规则R1和R2有一个共同特点,这两条规则都是针对同一个数据表“银行客户表”设置的规则,故直接通过图2描述的方式将这两条规则进行合并,结果如图2的右边部分。
4)基于规则条件等价合并的优化,如图3所示。将规则条件相同的所有规则进行合并优化。主要原因是很多规则它们有重复的条件节点,这样在进行优化时候,可以直接将这些重复的条件的节点合并为一个节点,提高处理机处理效率。
基于规则条件等价合并的优化方法包括:
步骤1):提取所有的规则条件部分的节点。这些节点包含:规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点,规则笛卡尔积节点。假设共有C1,C2,......Cn个节点;
步骤2):从C1,C2,......Cn个节点中找出相同的节点,假设C1=Ck=Cp;
步骤3):将这些相同的节点进行合并,如:将C1=Ck=Cp这三个节点合并成为一个节点。
步骤4):重复步骤3),将所有相同的节点均完成合并。
例2展示了一个具体的基于规则条件等价合并的优化示例。
例2:基于规则条件等价合并的优化示例
在该示例中有两条规则R1,R2。
规则1:(在图3中用R1表示)
如果
账户=“沪市”(条件在图3中用C1表示)
并且
行业=“电力”(条件在图3中用C2表示)
那么
执行A1动作
规则2:(在图3中用R2表示)
如果
账户=“沪市”(条件在图3中用C3表示)
并且
行业=“化工”(条件在图3中用C2表示)
那么
执行A2动作
上面两条规则R1和R2中都有两个条件,但是这两条规则中有一个条件是同样的,即:C1=C3,它们同为(账户=“沪市”),故直接通过图3描述的方式将这两条规则的条件相同部分进行一个等价合并,结果如图3的右边部分。
5)基于规则模块等价替换的优化,如图4所示。将所有规则模块等价的规则模块进行替换,将处理代价小的规则模块替换掉处理代价大的规则模块。主要原因是因为很多规则模块它们的功能上是完全等价的,但是它们由处理机处理时候所耗费处理机的代价可能不一样。如:假设按照模块1,由处理机来执行所需要的时间为20秒;而按照模块2,同样的这台处理机来执行时间只需要10秒。假设模块1和模块2完成的功能完全等价的话,那么可以用模块2等价替换掉模块1,提高处理机的处理效率。
基于规则模块等价替换的优化方法如下:
步骤1):遍历所有的如下类型的规则模块(共有22种类型,其中每个等式的左边和右边分别代表一种类型)。具体的等价公式如下:
1、σθ1∧θ2(C)=σθ1(σθ2(C));
2、σθ(C1∪C2)=σθ(C1)∪σθ(C2);
3、σθ(C1∩C2)=σθ(C1)∩σθ(C2);
5、σθ1(σθ2(C))=σθ2(σθ1(C));
8、C1∪C2=C2∪C1;
9、C1∩C2=C2∩C1;
10、(C1∪C2)∪C3=C1∪(C2∪C3);
11、(C1∩C2)∩C3=C1∩(C2∩C3)。
步骤2):计算每种规则模块的代价,即处理机处理该模块所需要耗费的代价。
步骤3):根据步骤1)中所描述的11种等价规则替换原则,将代价小的规则模块替换掉代价大的规则模块。
步骤4):重复步骤3),直到所有的规则模块全部替换完成。
例3展示了一个具体的基于规则模块等价替换的优化示例。
例3:基于规则模块等价替换的优化示例
在该示例中有两条规则R1,R2。
规则1:(在图4中用R1表示)
如果
厂商=“一汽”(条件在图4中用C1表示)
并且
价格>15,0000(条件在图4中用C2表示)
那么
执行A1动作
规则2:(在图4中用R2表示)
如果
价格>15,0000(条件在图4中用C2表示)
并且
厂商=“一汽”(条件在图4中用C1表示)
那么
执行A2动作。
上面两条规则R1和R2中都有两个条件,并且这两条规则中两个条件都是同样的,只是条件的位置发生了变化,根据交换律:
C1∩C2=C2∩C1,它们是等价的。
故直接通过图4描述的方式可以将这两个等价规则模块进行一个等价替换,结果如图4的右边部分。
以上所述仅为本发明的优选实施方式,但本发明保护范围并不局限于此。任何本领域的技术人员在本发明公开的技术范围内,均可对其进行适当的改变或变化,而这种改变或变化都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种云环境下规则优化方法,其特征在于,包括:
步骤1,用户在云环境下设置规则,规则包括条件部分和动作部分;
步骤2,收集用户设置的规则并生成规则集合;
步骤3,合并基于同一数据表的规则。
2.如权利要求1所述的云环境下规则优化方法,其特征在于,条件部分和动作部分分别用规则节点表示;条件部分使用的节点包括规则选择节点,规则交节点,规则联合节点,规则联合节点,规则否定节点以及规则笛卡尔积节点;动作部分使用的节点包括动作规则节点。
3.如权利要求2所述的云环境下规则优化方法,其特征在于,还包括步骤4,对等价的规则的条件部分进行合并。
4.如权利要求1或2所述的云环境下规则优化方法,其特征在于,还包括步骤5,对等价的规则模块进行替换。
5.如权利要求1所述的云环境下规则优化方法,其特征在于,步骤3包括:
步骤31,提取规则的条件部分的数据源;
步骤32,若数据源只属于数据库中唯一的数据库表,则从该唯一的数据库表中引出一带箭头的有向线,有向线的箭尾端为数据表,有向线的箭头端指向该规则的规则条件部分的第一个节点;若数据源属于数据库中的多个数据库表,则从相应的这些数据库表中分别引出一带箭头的有向线,有向线的箭尾端为相应的数据表,有向线的箭头端指向该规则的规则条件部分的第一个节点。
6.如权利要求3所述的云环境下规则优化方法,其特征在于,步骤4包括:
步骤41,提取规则的条件部分使用的规则节点;
步骤42,找出相同的规则节点并合并为一个节点。
7.如权利要求4所述的云环境下规则优化方法,其特征在于,步骤5包括:
步骤51,找出等价的规则模块;
步骤52,计算每种规则模块的代价;
步骤53,用代价小的规则模块替换代价高的等价规则模块。
9.一种云环境下规则优化装置,其特征在于,包括规则,云环境,规则收集单元以及同一数据表规则合并单元;规则包括条件部分和动作部分;
规则由云环境下的用户设置;
规则收集单元,用于收集用户设置的规则并生成规则集合;
同一数据表规则合并单元,用于合并基于同一数据表的规则。
10.如权利要求6所述的云环境下规则优化装置,其特征在于,还包括等价规则条件合并单元和/或等价模块替换单元;规则条件合并单元用于对等价的规则条件进行合并;等价模块替换单元,用于对等价的规则模块进行替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102132270A CN102291440A (zh) | 2011-07-28 | 2011-07-28 | 一种云环境下规则优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102132270A CN102291440A (zh) | 2011-07-28 | 2011-07-28 | 一种云环境下规则优化方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102291440A true CN102291440A (zh) | 2011-12-21 |
Family
ID=45337542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102132270A Pending CN102291440A (zh) | 2011-07-28 | 2011-07-28 | 一种云环境下规则优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102291440A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488537A (zh) * | 2012-06-14 | 2014-01-01 | 中国移动通信集团湖南有限公司 | 一种数据抽取、转换和加载etl的执行方法及装置 |
CN104243487A (zh) * | 2014-09-28 | 2014-12-24 | 网神信息技术(北京)股份有限公司 | 安全网关的规则匹配方法和装置 |
CN106230791A (zh) * | 2016-07-20 | 2016-12-14 | 杭州迪普科技有限公司 | 一种单业务多策略快速匹配的方法和装置 |
CN106716420A (zh) * | 2016-11-16 | 2017-05-24 | 深圳达闼科技控股有限公司 | 消息匹配方法、消息匹配装置及计算机程序产品、电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955912A (zh) * | 2006-10-13 | 2007-05-02 | 清华大学 | 海量存储系统中的资源分配方法 |
CN101159603A (zh) * | 2007-10-30 | 2008-04-09 | 中兴通讯股份有限公司 | 一种无线网络海量数据存储方法 |
-
2011
- 2011-07-28 CN CN2011102132270A patent/CN102291440A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955912A (zh) * | 2006-10-13 | 2007-05-02 | 清华大学 | 海量存储系统中的资源分配方法 |
CN101159603A (zh) * | 2007-10-30 | 2008-04-09 | 中兴通讯股份有限公司 | 一种无线网络海量数据存储方法 |
Non-Patent Citations (2)
Title |
---|
ABRAHAM SILBERSCHATZ等: "《Database System Concepts Sixth Edition》", 1 January 2010 * |
张桂刚: "海量规则网维护及其优化方法", 《计算机应用》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488537A (zh) * | 2012-06-14 | 2014-01-01 | 中国移动通信集团湖南有限公司 | 一种数据抽取、转换和加载etl的执行方法及装置 |
CN103488537B (zh) * | 2012-06-14 | 2017-02-01 | 中国移动通信集团湖南有限公司 | 一种数据抽取、转换和加载etl的执行方法及装置 |
CN104243487A (zh) * | 2014-09-28 | 2014-12-24 | 网神信息技术(北京)股份有限公司 | 安全网关的规则匹配方法和装置 |
CN106230791A (zh) * | 2016-07-20 | 2016-12-14 | 杭州迪普科技有限公司 | 一种单业务多策略快速匹配的方法和装置 |
US10491636B2 (en) | 2016-07-20 | 2019-11-26 | Hangzhou Dptech Technologies Co., Ltd. | Managing security policy |
CN106716420A (zh) * | 2016-11-16 | 2017-05-24 | 深圳达闼科技控股有限公司 | 消息匹配方法、消息匹配装置及计算机程序产品、电子设备 |
WO2018090253A1 (zh) * | 2016-11-16 | 2018-05-24 | 深圳达闼科技控股有限公司 | 消息匹配方法、消息匹配装置及计算机程序产品、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260474B (zh) | 一种基于信息交互网络的微博用户影响力计算方法 | |
JP5560367B2 (ja) | ネットワーク内の友人の動的情報を管理するための方法、システムおよびサーバ | |
CN107102941A (zh) | 一种测试用例的生成方法及装置 | |
CN102915373A (zh) | 一种数据存储方法和装置 | |
Prathap | The zynergy‐index and the formula for the h‐index | |
Li et al. | Modeling and performance analysis of information diffusion under information overload in Facebook‐like social networks | |
CN103177076A (zh) | 一种基于定点网站的舆情监测系统及方法 | |
CN103279478A (zh) | 一种基于分布式互信息文档特征提取方法 | |
JP6553816B2 (ja) | ユーザデータ共有方法及び装置 | |
Huang et al. | Signed bipartite graph neural networks | |
CN104394149B (zh) | 一种基于并行分布式架构的复杂事件处理的方法 | |
CN102291440A (zh) | 一种云环境下规则优化方法及装置 | |
Zhao et al. | Identifying influential spreaders in interconnected networks | |
Li et al. | Meet the truth: Leverage objective facts and subjective views for interpretable rumor detection | |
CN110555172A (zh) | 用户关系挖掘方法及装置、电子设备和存储介质 | |
CN103618733A (zh) | 一种应用于移动互联网的数据过滤系统及方法 | |
CN106294676B (zh) | 一种电子商务政务系统的数据检索方法 | |
CN103744918A (zh) | 基于垂直领域的微博搜索排序方法及系统 | |
CN106095757A (zh) | 一种文本负向情感识别与自动化情感抚慰方法与系统 | |
Aroba et al. | Meta analysis of heuristic approaches for optimizing node localization and energy efficiency in wireless sensor networks | |
CN105117466A (zh) | 一种互联网信息筛选系统及方法 | |
CN110335641B (zh) | 一种四个体组合亲缘关系鉴定方法及装置 | |
CN103279472B (zh) | 一种社交网络高影响力信息的提取方法 | |
CN102724290B (zh) | 一种获取目标客户群的方法、设备及系统 | |
CN104331490B (zh) | 网络数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20111221 |