一种基于本体语义信息的本体查询引擎优化系统的制作方法

文档序号:6522067阅读:167来源:国知局
一种基于本体语义信息的本体查询引擎优化系统的制作方法
【专利摘要】一种基于本体语义信息的本体查询引擎优化系统,包含查询语句预处理模块:将查询语句转化成析取范式表示形式;对查询语句的查询变量及查询原子进行分类,并分化出针对术语集的查询语句;调用查询引擎将原本的查询语句转化成对应的一系列断言块查询语句;查询语句推导模块:对断言块查询语句,将其查询原子和知识库中的术语集结合形成一个暂时的知识库,通过推理机将新形成的知识库所包含的隐藏信息推导出来;查询语句优化模块:根据推导出的隐藏信息通过相关规则,对原查询语句进行优化,在断言块上查找结果并与术语集上的结果结合得到最终结果。本发明达到缩短查询时间的效果,可广泛应用于目前的语义网开发工具,起到优化其查询引擎的作用。
【专利说明】一种基于本体语义信息的本体查询引擎优化系统【技术领域】
[0001]本发明提出一种基于本体语义信息的本体查询语言查询引擎优化系统,属于语义网语义查询领域。
【背景技术】
[0002]近年来随着语义网的快速发展,语义本体数据量越来越大,已经有许多用来开发语义网程序的工具,其中查询引擎是开发工具的重要组成部分,然而这些开发工具的查询引擎在处理大数据的查询上性能一般。本发明则是开发一种基于其上的系统达到优化查询的效果。
[0003]目前,对语义查询优化技术主要分为两个方面:一种是对本体文件如资源描述框架(RDF)或网络本体语言(OWL)文档建立有效的索引机制;另一种是对本体查询语言的优化。本发明属于后一种。目前关于第二种方法的技术主要是对RDF的基本图模式进行优化,通过对本体查询语句中三元组顺序进行调整达到优化查询时间的目的。然而该方法不适用与本目的。与其他技术不同的是,本发明侧重于通过本体中的语义信息对查询语句进行优化,充分发挥语义网的特点,由于对数据存储结构没有要求,可以广泛应用于现有开发工具的查询引擎起到优化查询的效果。

【发明内容】

[0004]本发明技术解决问题:克服现有技术的不足,提供一种基于本体语义信息的本体查询引擎优化系统,涉及利用本体中的语义信息对本体查询语言语句进行优化,使得查询语句得到了简化,提高了用户查询的效率。
[0005]本发明技术解决方案:一种基于本体语义信息的本体查询引擎优化系统,包括:查询语句预处理模块、查询语句推导模块和查询语句优化模块;其中:
[0006]查询语句预处理模块:将查`询语句分解成一系列简单合取查询,即将查询语句转化成析取范式,之后只需要对每个合取查询语句进行查询,查询结果是每个合取查询结果的并集;针对单个合取查询,将其中的查询变量分为术语集变量和断言块变量两类,将查询原子也分成两大类,即断言块原子和术语集原子;将术语集原子单独提出来,组成只涉及术语集信息的查询语句,调用查询引擎,在术语集上查询,将查询结果依次替代查询语句中的术语集变量,形成一系列只涉及断言块信息的查询语句;所述术语集变量表示该变量出现在RDF,三元组中概念和属性的位置,断言块变量则是出现在实例的位置,所述RDF是资源描述框架,一种用于描述Web资源的标记语言,术语集原子则是涉及术语集信息的查询原子,其他则是断言块原子;
[0007]查询语句推导模块:针对单个断言块查询语句,将每个查询原子转化成相应的断言块断言,每个变量变为断言块中的一个实例,与术语集组成新的知识库;针对新的知识库,使用本体推理机对其进行推理,本体推理机利用本中的语义信息进行推理,得出知识库中隐含的信息,包括判断知识库的一致性,根据相关规则得出隐含的三元组关系,通过本体语义信息推导出一系列隐含信息;
[0008]查询语句优化模块:根据推导出的隐含信息对原查询语句进行优化,得到更为简洁的查询语句;将断言块查询语句调用查询引擎在断言块得到结果并与术语集上的查询结果相结合,即可得到原查询语句的结果。 [0009]所述查询语句优化模块中,根据推导出的隐含信息对原查询语句进行优化,得到更为简洁的查询语句具体实现如下:
[0010](I)如果推理得出知识库不一致,则说明查询语句有问题,得不到查询结果,此时查询结果无意义,所以不需要优化;
[0011](2)针对推导出的三元组谓词位置为0Wl:SameAS,即个体等价关系,表示两个个体相同的三元组,如果主语和宾语都为变量,则将两个变量合并成一个变量,如果有一个常量和一个变量则该常量即是该变量查询的值;
[0012](3)针对推导出的三元组谓词位置为rdf:type的三元组,其中主语位置为变量,宾语位置为概念,则根据宾语位置概念定义,如有owliequiventClass属性,即类等价关系,表示两个类相同,则替换对应查询原子。切记替换的查询原子中不能包含其他变量;
[0013](4)如若查询原子包含(?x, rdf: type, C1), (?x, rdf: type, C2),即个体类型的
声明三元组,表示?x为Cl类的个体,同时也是C2类的个体,且C1 [ C,则可消去(?x, rdf: type, C2),通过子属性消去方法类似;
[0014](5)如若查询原子包含(?x, rdf: type, C1), (?x, p, o),且(p, rdfs: domain, C1),即定义域声明三元组,表示属性P的定义域是Cl,则可消去(?x, rdf:type, C1)。
[0015](6)通过以上步骤,可以得到更为简化的查询语句。
[0016]所述查询语句预处理模块中将术语集原子单独提出来,组成只涉及术语集信息的查询语句时,如果查询语句中只有一个术语集原子(?x, subClassOf, ?y),即子类型三元组,表示?x是?y的子类,则在术语集中找到所有满足条件的个体,并用这些概念替代原有查询语句中的?x和?y ;如果只有一个术语集查询原子(?x,subClassOf, y),其中y为常量,而?x又不是查询语句所要知道的值Xn中的一个,本来?x的查询值应为y的所有子类,此种情况?x可只用I代替形成一条查询语句。
[0017]所述查询语句推导模块中将查询原子转化成断言块断言时,如(?x, rdf: type, Person),即个体类型声明的三元组,表示?x为Person类的个体,则将生成一个实例名为?x的Person,即人的本体代表人这个概念类。
[0018]本发明与现有技术相比的优点在于:
[0019](I)本发明通过利用术语集中的语义信息,达到优化查询语句的效果,提高了用户查询的效率。
[0020](2)本发明在处理术语集一般,而断言块数据量很大时,由于优化过程只调用了术语集信息,消耗不大,故通过优化可以减少大量在断言块上的查询时间,而现实中的知识库大部分属于这种情况,进一步提高了用户查询的效率。
[0021](3)本发明的系统可与现有查询引擎相结合,应用于语义网的实际开发,提高了应用范围。
【专利附图】

【附图说明】[0022]图1为本发明系统框架图;
[0023]图2为本发明实现流程图;
[0024]图3为查询引擎实现流程图。
【具体实施方式】
[0025]如图1、2所示,本发明一种基于本体语义信息的本体查询引擎优化系统中,RDF采用(主语谓语宾语)三元组结构组织数据,知识库包含断言块和术语集两部分,术语集是描述领域概念和相关属性的集合,断言块是描述类和相关属性实例的集合。简单合取查询其形如q(Xi,..., xn) ^ a1;..., am ;xn是查询语句的变量,am是关于约束查询的RDF三元组断言称为查询原子(query atom), Xn也是am中的元素,在三元组中以?加一个单词表示如?x,其他am中的常量以普通单词表示,优化的具体步骤如下:
[0026]查询语句预处理模块:
[0027]步骤一:将查询语句分解成一系列简单合取查询,即将查询语句转化成析取范式,之后只需要对每个合取查询语句进行查询,查询结果是每个合取查询结果的并集;
[0028]步骤二:针对单个合取查询,将其中的查询变量\分为两类,术语集变量和断言块变量,接着将查询原子am也分成两大类,断言块原子和术语集原子;
[0029]步骤三:将术语集原子单独提出来,组成只涉及术语集信息的查询语句,调用查询引擎,在术语集上查询,将查询结果依次替代查询语句中的术语集变量,这样形成了一系列只涉及断言块信息的查询语句;
[0030]查询语句推导模块:`[0031]步骤四:针对单个断言块查询语句,将每个查询原子转化成相应的断言块断言,每个变量变为断言块中的一个实例,与术语集组成新的知识库;
[0032]步骤五:针对新的知识库,使用本体推理机对其进行推理,本体推理机可以利用本中的语义信息进行推理,得出知识库中隐含的信息,包括判断知识库的一致性,根据相关规则得出隐含的三元组关系等。这样通过本体语义信息推导出一系列隐含信息;
[0033]查询语句优化模块:
[0034]步骤六:根据推导出的隐含信息对原查询语句进行优化,得到更为简洁的查询语句;
[0035]步骤七:将断言块查询语句调用查询引擎在断言块得到结果并与步骤三关于术语集的查询结果相结合,即可得到原查询语句的结果。
[0036]其中,在步骤二中术语集变量表示该变量出现在RDF三元组中概念和属性的位置,断言块变量则是出现在实例的位置,术语集原子则是涉及术语集信息的查询原子如(?x, subClassOf, ?y),其他则是断言块原子,具体区分方法已经有相关研究。
[0037]其中,在步骤三中将术语集原子组成关于术语集信息的查询语句,如查询语句中只有一个术语集原子(?x,subClassOf, ?y),则在术语集中找到所有满足条件的个体,并用这些概念替代原有查询语句中的?X和?y。如果只有一个术语集查询原子(?x, subClassOf, y),其中y为常量,而?x又不是查询语句所要知道的值Xn中的一个,本来?x的查询值应为I的所有子类,此种情况?x可只用y代替形成一条查询语句。
[0038]其中,在步骤四中将查询原子转化成断言块断言,如(?x, rdf: type, Person),则将生成一个实例名为?X的Person类。
[0039]其中,在步骤五、六中,通过现有推理机可对新的知识库进行推理,得到隐含信息,然后按以下顺序处理:
[0040](I)如果推理得出知识库不一致,则说明查询语句有问题,得不到查询结果。
[0041](2)针对推导出的三元组谓词位置为owl:sameAs的三元组,如果主语和宾语都为变量,则将两个变量合并成一个变量,如果有一个常量和一个变量则该常量即是该变量查询的值。
[0042](3)针对推导出的三元组谓词位置为rdf:type的三元组,其中主语位置为变量,宾语位置为概念,则根据宾语位置概念定义,如有owl: equiventClass属性,则替换对应查询原子。切记替换的查询原子中不能包含其他变量。
[0043](4)如若查询原子包含(?x, rdf: type, C1), (?x, rdf: type, C2),且 C1 (6= C2,贝 Ij可消去(?x, rdf: type, C2)。通过子属性消去方法类似。
[0044](5)如若查询原子包含(?x, rdf: type, C1), (?x, p, o),且(p, rdfs: domain, C1) , JjllJ可消去(?x, rdf: type, C1)。
[0045]上述5条规则,规则1-3是本发明独创的规则,规则4和5是结合其他技术所应用在本系统内,实际开发系统还可添加其他规则。通过以上5条规则的处理可使得查询语句得到简化。
[0046]如图3所示,查询引擎的具体实现过程。
[0047]( I)查询语句语法解析:对查询语句进行词法分析和语法分析,判断该查询语句是否符合语法规则。
[0048](2)图模式提取:从查询语句中分析出图模式(可用三元组表达),即待匹配子图模板,用于表达查询意图。
[0049](3)图模式匹配:将图模式与数据集进行匹配找到查询结果。
[0050](4)查询结果反馈:按照查询语句的设定反馈查询结果。
[0051]下面结合具体的实例进一步对本发明进行详细说明,具体步骤如下:
[0052]1、数据准备
[0053]首先需要准备一些数据用来验证系统效果,LUBM是测试本体查询语言性能的基准,包含大学本体元数据Univ — Bench,对于测试数据集,LUBM提供数据产生器UBA用于产生基于Univ - Bench本体的测试数据。使用UBA产生3个不同大小的数据集,其三元组数、实例个数、占用空间(MB)分别为 Lubml (82415,20659,8)、Lubm2 (516116,129533,50)、Lubm3(1052895,263427,102)。
[0054]2、系统开发
[0055]开发出了一个与Jena相结合的查询引擎优化系统,Jena是面向语义网的应用开发工具,提供针对语义本体的查询功能,其查询引擎未考虑从语义层面进行优化,故可利用本系统进行优化,首先使用Jena针对上面3个数据分别执行10个查询语句,得出平均查询时间。接着将本系统与Jena查询引擎进行结合,以其中一条查询语句具体说明优化步骤,查询语句为:找出每个实验室领导,以及他工作的实验室聘请的员工。表示为如下:
[0056]q (x, y) — (?x, rdf: type, ?c).[0057](?c, rdfs: subclassof, person).(?x, ishaedof, ?z)[0058].(?x, workat, ?o).(?o, hasamember, ?y)
[0059]其中q (x,y)表示该查询语句所需要找寻的值为变量X和变量y,分别代表实验室领导,和实验室员工。一后的一串三元组则是用来约束变量X和变量y的,注意的是在查询元子中,变量钱都加上了?作为区分。
[0060](I)该查询语句已经是合取查询,不用处理。
[0061](2)查询变量中,?c是术语集变量,其余变量是断言块变量,(?c, rdfs: subclassof, person)是术语集原子,其余是断言块原子。
[0062](3)将(?c, rdfs: subclassof, person)调用Jena查询引擎在术语集上查询,得出person类的所有子类,由于符合步骤三所提及的特殊情况,?c可仅仅用person替代。
[0063](4)得到一条只涉及断言块信息的查询语句q’如下:
[0064]q,(x, y) — (?x, rdf: type, person).[0065](?x, isheadof, ?z).(?x, workat, ?o).[0066](?o, hasamember, ?y)
[0067]通过该查询语句,生成断言块信息包含(?x, rdf: type, person)等三元组,此时?变成了实例名的一部分而不是表示变量,与术语集结合组成新的知识库。
[0068](5)通过推理可得出,(?x, rdf: type, chair), (?z, owl: sameAs, ?o)等隐藏信息。
[0069](6)根据(?x, rdf: type, chair)中 chair 概念的中 owl: equiventClass 属性,其等价于person类和isheadof的交集,可用其替代查询原子(?x, rdf: type, person)和(?x, isheadof, ?z),根据第五步得到的隐藏信息(?z, owl: sameAs, ?o),可将?z和?o合为一个变量,再而通过(isheadof, rdf: sub`Porperty, workat)可消去(?x, workat, ?o)通过上述步骤简化后的查询语句为:
[0070]q,(x, y) — (?x, rdf: type, chair).[0071].(?x, islead, ?o).(?o, hasamember, ?y)
[0072]然后在Jena上执行该查询语句即可得到相同结果。
[0073]3、结果对比
[0074]优化前和优化后的查询时间以及优化所耗时间可见下表:
[0075]
时间(s) Lumbl Lumb2 Lumb3
优化前 08 5?220
优化时间~05 050.15
优化后 02Tl14
[0076]通过上表可知,使用了发明的系统后,针对越大的数据量,Jena的平均查询时间减少更多,而优化所耗的时间是不变的,故随着数据量变大,优化效果更明显。这也验证了本发明适用于查询断言块数据量很大的知识库。当然,本发明系统还可应用与其他开发工具的查询引擎如Sesame的优化。
[0077]本发明未详细阐述部分属于本领域公知技术。
[0078]以上实施例仅用以说明而非限制本发明的技术方案,不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。本发明未详细描述的部分属于本领域公知技术。
【权利要求】
1.一种基于本体语义信息的本体查询引擎优化系统,其特征在于包括:查询语句预处理模块、查询语句推导模块和查询语句优化模块;其中: 查询语句预处理模块:将查询语句分解成一系列简单合取查询,即将查询语句转化成析取范式,之后只需要对每个合取查询语句进行查询,查询结果是每个合取查询结果的并集;针对单个合取查询,将其中的查询变量分为术语集变量和断言块变量两类,将查询原子也分成两大类,即断言块原子和术语集原子;将术语集原子单独提出来,组成只涉及术语集信息的查询语句,调用查询引擎,在术语集上查询,将查询结果依次替代查询语句中的术语集变量,形成一系列只涉及断言块信息的查询语句;所述术语集变量表示该变量出现在RDF三元组中概念和属性的位置,断言块变量则是出现在实例的位置,所述RDF是资源描述框架,一种用于描述Web资源的标记语言,术语集原子则是涉及术语集信息的查询原子,其他则是断言块原子; 查询语句推导模块:针对单个断言块查询语句,将每个查询原子转化成相应的断言块断言,每个变量变为断言块中的一个实例,与术语集组成新的知识库;针对新的知识库,使用本体推理机对其进行推理,本体推理机利用本中的语义信息进行推理,得出知识库中隐含的信息,包括判断知识库的一致性,根据相关规则得出隐含的三元组关系,通过本体语义信息推导出一系列隐含信息; 查询语句优化模块:根据推导出的隐含信息对原查询语句进行优化,得到更为简洁的查询语句;将断言块查询语句调用查询引擎在断言块得到结果并与术语集上的查询结果相结合,即可得到原查询语句的结果。
2.根据权利要求1所述的基于本体语义信息的本体查询引擎优化系统,其特征在于:所述查询语句优化模块中,根据推导出的隐含信息对原查询语句进行优化,得到更为简洁的查询语句具体实现如下: (1)如果推理得出知识库不一致,则说明查询语句有问题,得不到查询结果,此时查询结果无意义,不需要优化; (2)针对推导出的三元组谓词位置为owlisameAs,即个体等价关系,表示两个个体相同的三元组,如果主语和宾语都为变量,则将两个变量合并成一个变量,如果有一个常量和一个变量则该常量即是该变量查询的值; (3)针对推导出的三元组谓词位置为rdf:type的三元组,其中主语位置为变量,宾语位置为概念,则根据宾语位置概念定义,如有owl:equiventClass属性,即类等价关系,表示两个类相同,则替换对应查询原子,替换的查询原子中不能包含其他变量; (4)如若查询原子包含两个个体类型声明的三元组,分别表示?x为C1类的个体,同时也是C2类的个体,其中?x代表查询语句中的变量,C1X2为知识库中的概念类,且C1 (=C2,则可消去,如果有两个属性P1和P2满足子属性关系,也可以采用类似的方法消去其中一个三元组; (5)如若查询原子包含两个三元组分别表示?x为C1类的个体,?x通过属性p与其他个体关联,其中?x代表查询语句中的变量,C1为知识库中的概念类,p为知识库中的属性,且属性P的定义域是C1,则可消去表示?x为C1类的个体的三元组; (6)通过以上步骤,得到更为简化的查询语句。
3. 根据权利要求1所述的基于本体语义信息的本体查询引擎优化系统,其特征在于:所述查询语句预处理模块中将术语集原子单独提出来,组成只涉及术语集信息的查询语句时,如果查询语句中只有一个子类型三元组术语集原子,表示?x是?y的子类,其中?x、?y代表查询语句中的变量,则在术语集中找到所有满足条件的个体,并用这些概念替代原有查询语句中的?1和?y ;如果只有一个子类型三元组术语集查询原子,表示?x是7的子类,其中?x代表查询语句中的变量,y为常量,代表知识库中的某个本体概念。而?X又不是查询语句所要知道的值Xn中的一个,Xn为查询语句需要获得结果的变量序列,本来?x的查询值应为I的所有子类,此种情况?x可只用I代替形成一条查询语句。
4.根据权利要求1所述的基于本体语义信息的本体查询引擎优化系统,其特征在于:所述查询语句推导模块中将查询原子转化成断言块断言时,如个体类型声明的三元组,表示?X为Person类的个体,其中?x代表查询语句中的变量,Person为知识库中表示人这个概念的本体,则将生成一个实例名为?x的Person类的个体。
【文档编号】G06F17/30GK103617265SQ201310641921
【公开日】2014年3月5日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】欧阳元新, 李日藩, 盛浩, 熊璋 申请人:北京航空航天大学深圳研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1