【技术实现步骤摘要】
基于谓语组合的SPARQL查询优化方法、系统、存储介质及设备
本专利技术属于计算机查询优化的
,具体涉及一种基于谓语组合的SPARQL查询优化方法、系统、存储介质及设备。
技术介绍
资源描述框架(ResourceDescriptionFramework,RDF)是一种流行的模型,已广泛用于表示网络资源信息。一个RDF数据集由一组三元组{主语,谓语,宾语}组成。因为RDF具有灵活的结构和可以使用纯文本形式或者图形形式来表达事物,所以许多组织和机构已经使用RDF来发布它们的数据。例如,许多大型的公共知识库YAGO和Bio2Rdf,已经包含数十亿个三元组。SPARQL是W3C推荐的一种用于RDF数据检索的标准查询语言。每个SPARQL查询都包含一组三元组模式,与RDF的三元组有所不同,三元组模式的主语、谓语和宾语可以是常量,也可以是变量。目前许多系统使用基于关系型的方法来存储RDF数据,把SPARQL查询分为两个步骤:扫描与联接。通过把SPARQL查询拆分成一组三元组模式,接着对每个三元组模式分别地去扫描RDF数据以生成绑定值表。然后把绑定值进行联接操作,去掉冗余的中间结果,生成最终的查询结果。随着RDF数据集的快速增大,扫描结果也随之增大,就会在联接操作的时候产生更多的冗余中间结果。因此,如何减少SPARQL查询的冗余中间结果是当前的主要挑战。为了减少冗余中间结果,当前的研究主要通过以下方法来解决:优化SPARQL三元组模式的顺序;使用基于图探索的方法来减少基于联接操作所造成的大量冗余中间结果。对于 ...
【技术保护点】
1.基于谓语组合的SPARQL查询优化方法,其特征在于,包括下述步骤:/n构建RDF数据索引,根据三元组的主语s、谓语p、宾语o,分别生成spo、ops、ps和po四种索引,所述三元组中的主语和宾语称为实体;/n生成谓语组合,谓语组合中的每一个元素都包含一组标签,并且统计每个谓语组合的实体个数;/n获取用户提交的SPARQL查询,并且把SPARQL查询转换为SPARQL查询图;/n获取查询图中所有满足两个及以上三元组模式的公共顶点,对每一个公共顶点使用广度遍历算法,把SPARQL查询图转换成一棵树,就能得到一组树;/n使用基于成本的算法选择这组树中成本最低的树,称这棵树为初步查询树,根节点为探索起始点;/n定义初步查询树中每个非叶子节点与孩子节点的三元组模式为星型子查询,使用基于选择度算法重排每个星型子查询的三元组模式顺序,生成最终的查询顺序;/n根据生成的三元组模式的查询顺序,使用两步剪枝进行查询处理,从而获取SPARQL查询的结果。/n
【技术特征摘要】
1.基于谓语组合的SPARQL查询优化方法,其特征在于,包括下述步骤:
构建RDF数据索引,根据三元组的主语s、谓语p、宾语o,分别生成spo、ops、ps和po四种索引,所述三元组中的主语和宾语称为实体;
生成谓语组合,谓语组合中的每一个元素都包含一组标签,并且统计每个谓语组合的实体个数;
获取用户提交的SPARQL查询,并且把SPARQL查询转换为SPARQL查询图;
获取查询图中所有满足两个及以上三元组模式的公共顶点,对每一个公共顶点使用广度遍历算法,把SPARQL查询图转换成一棵树,就能得到一组树;
使用基于成本的算法选择这组树中成本最低的树,称这棵树为初步查询树,根节点为探索起始点;
定义初步查询树中每个非叶子节点与孩子节点的三元组模式为星型子查询,使用基于选择度算法重排每个星型子查询的三元组模式顺序,生成最终的查询顺序;
根据生成的三元组模式的查询顺序,使用两步剪枝进行查询处理,从而获取SPARQL查询的结果。
2.根据权利要求1所述基于谓语组合的SPARQL查询优化方法,其特征在于,对于spo索引,通过主语加上谓语获取到一组实体和这组实体的个数;
对于ops索引,通过宾语加上谓语获取到一组实体和这组实体的个数;
对于ps索引,通过谓语获取到一组实体和这组实体的个数;
对于po索引,通过谓语获取到一组实体和这组实体的个数。
3.根据权利要求1所述基于谓语组合的SPARQL查询优化方法,其特征在于,所述生成谓语组合,并且统计每个谓语组合的实体个数的步骤,具体为:
为RDF数据集中的每一个非type的谓语生成两个标签,这两个标签包含一个共同的谓语,同时分别包含主语方向和宾语方向;
对于谓语为type的情况,把type加上宾语当作谓语,同时加上主语方法,生成一个标签;
使用这些标签生成所有的组合,称为谓语组合,统计每一种谓语组合的实体个数,并且去掉实体个数为0的谓语组合。
4.根据权利要求1所述基于谓语组合的SPARQL查询优化方法,其特征在于,所述获取查询图中所有满足两个及以上三元组模式的公共顶点,对每一个公共顶点使用广度遍历算法,把SPARQL查询图转换成一棵树,就能得到一组树的步骤中,还包括:
如果SPARQL查询图存在回环,每一棵树都有一些没有被遍历过的边,称没有被遍历过的边为剩余约束边。
5.根据权利要求1所述基于谓语组合的SPARQL查询优化方法,其特征在于,所述使用基于成本的算法选择这组树中成本最低的树的步骤具体为:
如果这组树中只有一棵树,那么直接选择这棵树为成本最低的树;否则,需要从这组树中选择成本最低的树;首先需要获取每一棵树的成本,假设QP为某个顶点使用广度遍历算法生成的树;假设QP中每一个非叶子节点与孩子节点的三元组模式为一个星型子查询,这个星型子查询的中心点为相应的非叶子节点,SQ={sq1,…,sqn}为QP的所有星型子查询的一个集合,其中n>1,sq1为包含根节点的星型子查询;假设PNSQ={nsq1,…,nsqn}为SQ中每一个星型子查询通过谓语组合获取的中心点的实体个数;假设NSQB={sqb1,…,sqbn}为通过常量孩子获取到的中心点的实体个数;假设sqk是SQ中的第k个星型子查询,其中k<=n;假设sqk的常量孩子节点为Svb={vb1,…,vbh},其中h<=n;如果Svb为空集,那么sqbk等于nsqk;否则,sqbk等于Svb中每个元素与相应的谓语获取中心点的实体个数的最小值;假设每个星型子查询的中心点的实体个数为NOC={noc1,…,nocn},NOC中的每个元素nock=min{nsqk,sqbk},其中k<=n;假设WSQ={wqs1,…,wsqn}为每个星型子查询的成本,其中wsq1=nonc1;假设wsqfather为当前星型子查询的父亲星型子查询的成本;假设pftoc为当前星型子查询与父亲星型子查询连接的三元组模式的边,通过PO与PS可以获取到父亲节点实体和当前节点实体的个数,分别表示为nof和noc;假设WSQ中的第i个星型子查询的成本为wsqi,那么wsqi=wsqfather*(nof/noc)*(noci/noc),其中1<i<=n;假设W为当前初步查询树的成本,那么其次,计算出这组树中每一棵树的成本,选择成本最低的树,并称这棵树为初步查询树,初步查询树的根节点为探索起始点。
6.根据权利要求1所述基于谓语组合的SPARQ...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。