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

一种基于最小属性割的分布式SPARQL查询优化方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:湖南大学

摘要:本发明公开了一种基于最小属性割的分布式SPARQL查询优化方法,属于分布式系统领域,其包含步骤:1读取原始RDF数据图,保存边属性集合L;2计算每个边属性的弱连通分量及相应的代价;3尽可能多地选择内部属性,得到数据图的粗化图;4对粗化图进行顶点划分,并且反粗化处理,得到最终分区;5将SPARQL查询分解成一组可独立执行的子查询;6各个分区内并行执行分解后的子查询,获得匹配结果。本发明扩展了分布式RDF系统中可独立执行的查询类型,减少分区间的连接,降低数据通信时间,提升查询效率。

主权项:1.一种基于最小属性割的分布式SPARQL查询优化方法,其特征在于,包含如下步骤:1读取原始RDF数据图,保存边属性集合L;2计算每个边属性的弱连通分量及相应的代价;步骤具体包含:S2.1:遍历集合L中每个属性p,对属性p分别执行步骤S2.2~S2.4;S2.2:为属性p初始化一个并查集DS{p};在并查集中,每个节点u对应着一棵树,并且含有三个属性值u{p}.parent,u{p}.rank和u{p}.size;其中,u{p}.parent是u在DS{p}中的根节点,初始值为u本身;u{p}.rank是u节点到根节点的高度值,初始值为0;u{p}.size是树中根顶点的数量,初始值为1;S2.3:对于RDF图中的边对应的树可以合并,即包含u和u′的弱连通分量可以合并;在合并过程中,rank更小的树的根顶点指向rank更大的树的根顶点;当所有属性为p的边被处理完之后,如果属性p的诱导子图G[{p}]中两个顶点在同一个弱连通分量中,则这两个顶点在并查集DS{p}中也处于同一棵树;这里,所谓弱连通分量是指在有向图中通过视边为无向边后能够形成的连通区域;S2.4:以RDF数据图中u{p}.size最大值作为属性p被选为为内部属性的代价,这个就是u{p}.size就是属性p的诱导子图G[{p}]里面最大的弱连通分量的大小;3尽可能多地选择内部属性,得到数据图的粗化图;步骤具体包含:S3.1:将内部属性集合Lin初始化为空;S3.2:判断属性集合L是否为空,若集合L为空,则结束迭代进入S3.9;否则,分别执行步骤S3.3~S.3.8,继续下一轮迭代;S3.3:最小代价mincost设置为无穷大,最优属性popt设置为空;S3.4:遍历属性集合L,对属性p分别执行步骤S3.5、S3.6;S3.5:计算WCCG[Lin∪{p}],也就是Lin∪{p}中属性的诱导子图G[Lin∪{p}]的弱连通分量集合;为了提高弱连通分量的计算效率,使用并查集数据结构进行优化;初始时,将并查集DSLin∪{p}设置成DSLin;对于DS{p}中的顶点u,可以通过递归方式获取到DS{p}对应树的根顶点uRoot;之后,在DSLin∪{p}中分别获取到u和uRoot的根顶点,如果u和uRoot的根顶点不一样,则合并对应的树;S3.6:如果costLin∪{p}小于1+ε×|V|k,并且同也小于mincost,则将CostLin∪{p}赋值给mincost、p赋值给popt,之后转入步骤S3.4;否则,mincost和popt保持不变,直接转入步骤S3.4;S3.7:如果经过步骤S3.4~S3.6之后,最优属性popt依旧为空,则结束步骤S3,转入步骤S4;否则,转入步骤S3.8;S3.8:从属性集合L中删除属性popt,然后将popt添加到内部属性集合Lin,之后转入步骤S3.2继续选择内部属性;S3.9:针对上述求得的节点集合Lin,我们进一步构建其对应的诱导子图G[{Lin}],并在此基础上进行一种特定的图粗化处理;具体而言,我们首先识别G[{Lin}]中的所有弱连通分量,随后将这些弱连通分量各自视为一个单一的超点即,将每个弱连通分量内的所有节点合并为一个更高级别的节点;接下来,如果原图中任意两个弱连通分量之间存在至少一条边,则在它们所对应的超点之间连接一条超边;通过这一系列操作,我们成功地将原图转化为一个粗化图,其中节点和边的数量显著减少,但保留了原图中关于弱连通分量之间连接关系的重要信息;4对粗化图进行顶点划分,并且反粗化处理,得到最终分区;步骤具体包含:S4.1:将粗化图中超点内部的顶点数量作为超点的权重,从而对粗化图使用带权的哈希划分,确保最终数据分区的顶点数量不超过1+ε×|V|k;S4.2:将步骤S4.1中划分到同一个分区的超点集合反粗化成最终的一个分区,即将超点集合中包含的原始数据点划分为原始数据图中的一个分区;5将SPARQL查询分解成一组可独立执行的子查询;步骤具体包含:S5.1:初始化一个空集合Q,该集合用于存储分解后的子查询;S5.2:删除SPARQL查询中边属性为变量或跨越属性的边,得到一组弱连通分量{q'1,q'2,...,q'y},这里设对于v1点所在的查询为qv1;S5.3:遍历SPARQL查询中边属性为变量或跨越属性的边对该边执行步骤S5.4~S5.5;S5.4:如果v1和v2属于同一个子查询,则在它们所在的子查询中添加边之后转入步骤S5.3继续新一轮迭代;否则,转入步骤S5.5;S5.5:如果|qv1|小于等于|qv2|,则将边添加到qv2中,否则添加到qv1中,即将边添加到v1和v2所属子查询中顶点较多的子查询内;之后,转入步骤S5.3继续新一轮迭代;S5.6:遍历WCCs中的子查询q,如果q中的顶点数量大于1,则将q加入到集合Q中;此处,不考虑顶点数量为1的查询是因为:此类查询只含有一个查询点,匹配结果数量较多且无意义,并且其它查询会包含该查询点;6各个分区内并行执行分解后的子查询,获得匹配结果;步骤具体包含:S6.1:分布式RDF系统的主节点将分解后的子查询广播给所有从节点,当从节点接收到子查询后,分区内部开始并行地执行子图匹配,获得中间匹配结果;S6.2:对各个节点中的中间匹配结果进行分区间连接,获得最终的匹配结果,并将结果汇集到主节点中。

全文数据:

权利要求:

百度查询: 湖南大学 一种基于最小属性割的分布式SPARQL查询优化方法

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