当前位置: 首页 > 专利查询>北京大学专利>正文

基于SPARQL查询语言的多查询方法和装置制造方法及图纸

技术编号:19903619 阅读:36 留言:0更新日期:2018-12-26 02:58
本申请属于数据库技术领域,具体涉及一种基于SPARQL查询语言的多查询方法和装置。该方法通过获取包括至少两个查询的批量查询簇,当批量查询簇中各查询的查询语言均为SPARQL查询语言时,获取该批量查询簇中任两个以上查询的公共查询三元组模式集,对于每个公共查询三元组模式集,获取该批量查询簇的求值代价,对求值代价最小时对应的公共查询三元组模式集进行求值得到第一求值结果,对每个查询未被包括在该公共查询三元组模式集中的三元组模式进行求值得到该查询的第二求值结果,基于第一求值结果和第二求值结果得到该查询的最终求值结果,可以充分利用各查询之间的结构相似性获取各查询的求值结果,从而减少对多个查询进行求值所用的时间。

【技术实现步骤摘要】
基于SPARQL查询语言的多查询方法和装置
本申请属于数据库
,具体涉及一种基于SPARQL查询语言的多查询方法和装置。
技术介绍
自从知识图谱的概念被Google提出并被用于为用户提供具有完整知识体系的搜索结果后,各式各样的知识库层出不穷,例如基于社区构建的Freebase等。这些知识库都可以提供半结构化的RDF(ResourceDescriptionFramework,资源描述框架)数据格式版本。SPARQL(SPARQLProtocolandRDFQueryLanguage,SPARQL协议和RDF查询语言)查询语言采用类似SQL(StructuredQueryLanguage,结构化查询语言)查询的方式定义查询模式,支持精确检索知识库中用户指定的任意部分数据,是标准的知识库查询语言。在具体应用中,查询引擎可能会在短时间内接收到大量密集的查询请求,对于同时到达的批量查询,现有技术中的查询引擎往往是将该批量查询进行排列后逐个对查询进行求值,忽略了批量查询间可能存在的显著结构重合,不能将查询间可能存在的公共查询模式集的求值结果作为中间结果进行有效利用,从而难以提高查询引擎的查询效率。
技术实现思路
有鉴于此,本申请实施例提供了一种基于SPARQL查询语言的多查询方法和装置,以减少对多查询进行求值所用的时间,提高查询引擎的求值效率。其技术方案如下:第一方面,提供了一种基于SPARQL查询语言的多查询方法,该方法包括:获取包括至少两个查询的批量查询簇,该批量查询簇中每个查询的查询语言均为SPARQL查询语言;对于每个批量查询簇,获取批量查询簇中任两个以上查询的公共查询三元组模式集,公共查询三元组模式集包括对应的任两个以上查询中可通过列更名操作取得相同求值结果的三元组模式;对于每个公共查询三元组模式集,获取批量查询簇的求值代价;对求值代价最小时对应的第一公共查询三元组模式集进行求值,得到第一求值结果;对每个查询未被包括在第一公共查询三元组模式集中的三元组模式进行求值,得到该查询的第二求值结果;对于每个查询,基于第一求值结果和该查询的第二求值结果,得到该查询的最终求值结果。在一种可能的实现方式中,获取包括至少两个查询的批量查询簇包括:获取包括至少两个查询的批量查询;当批量查询只包括两个查询时,将该两个查询作为批量查询簇;当批量查询包括三个以上查询时,将该三个以上查询作为批量查询簇,或者使用层次聚类方法对批量查询进行聚类划分,得到至少一个批量查询簇,每个批量查询簇包括批量查询中的至少两个查询。在一种可能的实现方式中,该方法还包括:对批量查询中未被任一批量查询簇包括的查询进行求值,得到批量查询中未被任一批量查询簇包括的查询的求值结果。在一种可能的实现方式中,获取批量查询簇中任两个以上查询的公共查询三元组模式集包括:获取批量查询簇中任两个查询的三元组模式序列二元组,三元组模式序列二元组包括两条等价的三元组模式序列,其中一条三元组模式序列包括来自一个查询中的一条或多条三元组模式,另一条三元组模式序列包括来自另一个查询中的一条或多条三元组模式,两条等价的三元组模式序列包括的三元组模式数量相等且一一对应等价,两条等价的三元组模式序列所包括的三元组模式上的变量映射函数为一一映射关系;将三元组模式序列二元组进行扩展,得到三元组模式序列多元组;将一个或多个三元组模式序列多元组作为批量查询簇的公共查询三元组模式集。在一种可能的实现方式中,将三元组模式序列二元组进行扩展,得到三元组模式序列多元组包括:遍历批量查询簇中每两个查询,得到每两个查询的三元组模式序列二元组;设批量查询簇中查询的数量为k,对于2<n≤k的数量n,遍历批量查询簇中的每n个查询,通过对两个或两个以上的三元组模式序列m元组求交集得到每n个查询的三元组模式序列n元组,1<m<n,两个或两个以上的三元组模式序列m元组对应的查询的并集与三元组模式序列n元组对应的n个查询相同。在一种可能的实现方式中,通过对两个或两个以上的三元组模式序列m元组求交集得到每n个查询的三元组模式序列n元组包括:获取两个或两个以上的三元组模式序列m元组中三元组模式序列所包括的三元组模式的交集;当该交集不为空集时,将两个或两个以上的三元组模式序列m元组的三元组模式序列中不被该交集所包括的三元组模式进行删除,生成n个查询的三元组模式序列n元组。在一种可能的实现方式中,对于每个公共查询三元组模式集,获取批量查询簇的求值代价包括:对于每个公共查询三元组模式集,根据下式获取批量查询簇的求值代价:costT′=min({sel(t)|t∈Sj})×|Sj|,和上式中,QB表示批量查询簇,T′表示QB上的公共查询三元组模式集,Qi表示查询Qi上存在T′的子集,Qi∈QB,Qm表示查询Qm上不存在T′的子集,Qm∈QB,costT′表示对T′进行求值的求值代价,Sj表示T′所包括的三元组模式序列,t表示Sj所包括的三元组模式,sel(t)表示t的选择度,|Sj|表示Sj所包括的t的数量,Q′i表示Qi中未被包括在T′的子集中的三元组模式,表示对Q′i进行求值的求值代价,|Q′i|表示Qi中未被包括在T′的子集中的三元组模式的数量,表示对Qm进行求值的求值代价,|Qm|表示Qm所包括的三元组模式的数量,表示对于公共查询三元组模式集T′,对QB进行求值的求值代价。在一种可能的实现方式中,对每个查询未被包括在第一公共查询三元组模式集中的三元组模式进行求值,得到该查询的第二求值结果包括:设置第一公共查询三元组模式集所包括的三元组模式与未被包括在第一公共查询三元组模式集中的三元组模式的公共变量候选列表;根据已获得的第一求值结果,获取未被包括在第一公共查询三元组模式集中的三元组模式上的位于候选列表中的变量的值。在一种可能的实现方式中,对于每个查询,基于第一求值结果和该查询的第二求值结果,得到该查询的最终求值结果包括:当该查询所包括的三元组模式未完全被第一公共查询三元组模式集所覆盖时,将第一求值结果经变量变换后和与该查询对应的第二求值结果进行连接,得到该查询的最终求值结果;当该查询所包括的三元组模式都被第一公共查询三元组模式集所覆盖时,将第一求值结果进行变量变换,得到该查询的最终求值结果;当该查询所包括的三元组模式全都不被第一公共查询三元组模式集所覆盖时,根据该查询对应的第二求值结果得到该查询的最终求值结果。第二方面,提供了一种基于SPARQL查询语言的多查询装置,该装置包括:第一获取模块,用于获取包括至少两个查询的批量查询簇,批量查询簇中每个查询的查询语言均为SPARQL查询语言;第二获取模块,用于对于每个批量查询簇,获取批量查询簇中任两个以上查询的公共查询三元组模式集,公共查询三元组模式集包括对应的任两个以上查询中可通过列更名操作取得相同求值结果的三元组模式;第三获取模块,用于对于每个公共查询三元组模式集,获取批量查询簇的求值代价;第一求值模块,用于对求值代价最小时对应的第一公共查询三元组模式集进行求值,得到第一求值结果;第二求值模块,用于对每个查询未被包括在第一公共查询三元组模式集中的三元组模式进行求值,得到该查询的第二求值结果;处理模块,用于对于每个查询,基于第一求值结果和该查询的第二求值结果,得到本文档来自技高网...

【技术保护点】
1.一种基于SPARQL查询语言的多查询方法,其特征在于,所述方法应用在查询引擎上,所述方法包括:获取包括至少两个查询的批量查询簇,所述批量查询簇中每个查询的查询语言均为SPARQL查询语言;对于每个所述批量查询簇,获取所述批量查询簇中任两个以上查询的公共查询三元组模式集,所述公共查询三元组模式集包括对应的所述任两个以上查询中可通过列更名操作取得相同求值结果的三元组模式;对于每个所述公共查询三元组模式集,获取所述批量查询簇的求值代价;对所述求值代价最小时对应的第一公共查询三元组模式集进行求值,得到第一求值结果;对每个查询未被包括在所述第一公共查询三元组模式集中的三元组模式进行求值,得到所述查询的第二求值结果;对于每个查询,基于所述第一求值结果和所述查询的第二求值结果,得到所述查询的最终求值结果。

【技术特征摘要】
1.一种基于SPARQL查询语言的多查询方法,其特征在于,所述方法应用在查询引擎上,所述方法包括:获取包括至少两个查询的批量查询簇,所述批量查询簇中每个查询的查询语言均为SPARQL查询语言;对于每个所述批量查询簇,获取所述批量查询簇中任两个以上查询的公共查询三元组模式集,所述公共查询三元组模式集包括对应的所述任两个以上查询中可通过列更名操作取得相同求值结果的三元组模式;对于每个所述公共查询三元组模式集,获取所述批量查询簇的求值代价;对所述求值代价最小时对应的第一公共查询三元组模式集进行求值,得到第一求值结果;对每个查询未被包括在所述第一公共查询三元组模式集中的三元组模式进行求值,得到所述查询的第二求值结果;对于每个查询,基于所述第一求值结果和所述查询的第二求值结果,得到所述查询的最终求值结果。2.根据权利要求1所述的基于SPARQL查询语言的多查询方法,其特征在于,所述获取包括至少两个查询的批量查询簇包括:获取包括至少两个查询的批量查询;当所述批量查询只包括两个查询时,将所述两个查询作为所述批量查询簇;当所述批量查询包括三个以上查询时,将所述三个以上查询作为所述批量查询簇,或者使用层次聚类方法对所述批量查询进行聚类划分,得到至少一个所述批量查询簇,每个所述批量查询簇包括所述批量查询中的至少两个查询。3.根据权利要求2所述的基于SPARQL查询语言的多查询方法,其特征在于,所述方法还包括:对所述批量查询中未被任一所述批量查询簇包括的查询进行求值,得到所述批量查询中未被任一所述批量查询簇包括的查询的求值结果。4.根据权利要求1所述的基于SPARQL查询语言的多查询方法,其特征在于,所述获取所述批量查询簇中任两个以上查询的公共查询三元组模式集包括:获取所述批量查询簇中任两个查询的三元组模式序列二元组,所述三元组模式序列二元组包括两条等价的三元组模式序列,其中一条三元组模式序列包括来自一个查询中的一条或多条三元组模式,另一条三元组模式序列包括来自另一个查询中的一条或多条三元组模式,所述两条等价的三元组模式序列包括的三元组模式数量相等且一一对应等价,所述两条等价的三元组模式序列所包括的三元组模式上的变量映射函数为一一映射关系;将所述三元组模式序列二元组进行扩展,得到三元组模式序列多元组;将一个或多个所述三元组模式序列多元组作为所述批量查询簇的公共查询三元组模式集。5.根据权利要求4所述的基于SPARQL查询语言的多查询方法,其特征在于,所述将所述三元组模式序列二元组进行扩展,得到三元组模式序列多元组包括:遍历所述批量查询簇中每两个查询,得到所述每两个查询的三元组模式序列二元组;设所述批量查询簇中查询的数量为k,对于2<n≤k的数量n,遍历所述批量查询簇中的每n个查询,通过对两个或两个以上的三元组模式序列m元组求交集得到每n个查询的三元组模式序列n元组,1<m<n,所述两个或两个以上的三元组模式序列m元组对应的查询的并集与所述三元组模式序列n元组对应的n个查询相同。6.根据权利要求5所述的基于SPARQL查询语言的多查询方法,其特征在于,所述通过对两个或两个以上的三元组模式序列m元组求交集得到每n个查询的三元组模式序列n元组包括:获取所述两个或两个以上的三元组模式序列m元组中三元组模式序列所包括的三元组模式的交集;当所述交集不为空集时,将所述两个或两个以上的三元组模式序...

【专利技术属性】
技术研发人员:陈佳琪邹磊
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1