买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于谓语组合的SPARQL查询优化方法、系统、存储介质及设备_华南师范大学_202010049093.2 

申请/专利权人:华南师范大学

申请日:2020-01-16

公开(公告)日:2023-01-31

公开(公告)号:CN111241127B

主分类号:G06F16/242

分类号:G06F16/242;G06F16/2453

优先权:

专利状态码:有效-授权

法律状态:2023.01.31#授权;2020.06.30#实质审查的生效;2020.06.05#公开

摘要:本发明公开了一种基于谓语组合的SPARQL查询优化方法、系统、存储介质及设备,方法包括:构建RDF数据索引;生成谓语组合,谓语组合中的每一个元素都包含一组标签,并且统计每个谓语组合的实体个数;获取用户提交的SPARQL查询,并且转换为SPARQL查询图;获取查询图中所有满足两个及以上三元组模式的公共顶点,并使用广度遍历算法把查询图转换成一棵树;然后使用基于成本的算法选择成本最低的树为初步查询树;重排初步查询树中每个非叶子节点到孩子节点的三元组模式的顺序,生成最终的查询顺序;然后使用两步剪枝进行SPARQL查询。本发明可以有效减少SPARQL查询过程中产生的大量冗余中间结果,提高查询效率。

主权项:1.基于谓语组合的SPARQL查询优化方法,其特征在于,包括下述步骤:构建RDF数据索引,根据三元组的主语S、谓语P、宾语O,分别生成SPO、OPS、PS和PO四种索引,所述三元组中的主语和宾语称为实体;生成谓语组合,谓语组合中的每一个元素都包含一组标签,并且统计每个谓语组合的实体个数;获取用户提交的SPARQL查询,并且把SPARQL查询转换为SPARQL查询图;获取查询图中所有满足两个及以上三元组模式的公共顶点,对每一个公共顶点使用广度遍历算法,把SPARQL查询图转换成一棵树,就能得到一组树;使用基于成本的算法选择这组树中成本最低的树,称这棵树为初步查询树,根节点为探索起始点;所述使用基于成本的算法选择这组树中成本最低的树的步骤具体为:如果这组树中只有一棵树,那么直接选择这棵树为成本最低的树;否则,需要从这组树中选择成本最低的树;首先需要获取每一棵树的成本,假设QP为某个顶点使用广度遍历算法生成的树;假设QP中每一个非叶子节点与孩子节点的三元组模式为一个星型子查询,这个星型子查询的中心点为相应的非叶子节点,SQ={sq1,…,sqn}为QP的所有星型子查询的一个集合,其中n1,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=noc1;假设wsqfather为当前星型子查询的父亲星型子查询的成本;假设pftoc为当前星型子查询与父亲星型子查询连接的三元组模式的边,通过PO与PS可以获取到父亲节点实体和当前节点实体的个数,分别表示为nof和noc;假设WSQ中的第i个星型子查询的成本为wsqi,那么wsqi=wsqfather*nofoc*nocioc,其中1i=n;假设W为当前初步查询树的成本,那么;其次,计算出这组树中每一棵树的成本,选择成本最低的树,并称这棵树为初步查询树,初步查询树的根节点为探索起始点;定义初步查询树中每个非叶子节点与孩子节点的三元组模式为星型子查询,使用基于选择度算法重排每个星型子查询的三元组模式顺序,生成最终的查询顺序;所述使用基于选择度算法重排初步查询树中每个星型子查询的三元组模式的顺序,生成最终的查询顺序的步骤具体为:假如sqk为初步查询树的一个星型子查询,Tp={tp1,..,tpj}为sqk所包含的三元组模式;使用selectivitytpi表示tpi的选择度,其中i=j;如果tpi中的孩子节点为常量时,则可以使用常量加上谓语,通过SPO或者OPS索引获取到中心点的实体个数;如果tpi的孩子节点为变量时,则可以使用谓语,通过PO或者PS索引获取到中心点的实体个数;把中心点的实体个数称为tpi的选择度;使用Tp的选择度,按照从小到大的顺序重新排序Tp的顺序;当所有的星型子查询的三元组模式按照选择度重新排序好后,称这个树为最终查询树;把最终查询树和剩余约束边加在一起,就是最终的三元组模式的查询顺序;根据生成的三元组模式的查询顺序,使用两步剪枝进行查询处理,从而获取SPARQL查询的结果;所述根据生成的三元组模式的查询顺序,使用两步剪枝进行查询处理,从而获取SPARQL查询的结果的步骤中,具体为:把每个非叶子节点与孩子节点的三元组模式当作一个星型子查询,表示为SQ={sq1,…,sqn},其中这个非叶子节点也称为这个星型子查询的中心点Vcenter,每个星型子查询也包含一组三元组模式Tp={tp1,…,tpn};假设sq1是包含根节点的星型子查询;首先,是向下剪枝,先处理sq1,通过tp1来获取Vcenter的实体,如果tp1的孩子节点是常量值,则使用这个常量值与tp1的谓语,通过SPO或者OPS索引来获取到Vcenter的实体值,表示为Sbound;否则,通过PO或者PS索引来获取Vcenter的实体值;如果包含根节点的星型子查询的三元组模式的个数大于1,那么继续遍历{tp2,…,tpn},剪枝掉Sbound中不满足{tp2,…,tpn}的实体;假设Nchild是任意一个星型子查询中的一个非叶子节点;对于任意星型子查询剪枝完成后,需要把非叶子节点Nchild的所有实体与星型子查询中心点为Nchild的三元组模式依次进行遍历;其次是回溯剪枝,当任意一个星型子查询的孩子节点全部为叶子节点,或者星型子查询的实体为空时,需要把查询结果发送给父亲星型子查询;假设任意一个星型子查询的中心点的实体为Sbound,接收到的孩子星型子查询的中心点实体为Sboundchild,需要把Sbound中与Sboundchild没有关系的实体删除掉;如果这个星型子查询不包含根节点,则需要继续把实体Sbound发送给本身的父亲星型子查询;依次回溯剪枝,直到星型子查询包含根节点为止;如果这个SPARQL查询的剩余约束边不为空,还需要继续遍历剩余约束边;通过上述的两步剪枝就能获取到最终的查询结果。

全文数据:

权利要求:

百度查询: 华南师范大学 基于谓语组合的SPARQL查询优化方法、系统、存储介质及设备

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。