Processing SPARQL queries over distributed RDF graphs-part1

本文由学者Peng Peng, Lei Zou, M. Tamer Özsu, Lei Chen & Dongyan Zhao于2016/01/04在《The VLDB Journal 》联合发表

本文提出在分布式环境下使用SPARQL查询处理大型RDF图上,采用“部分评估和组装”框架。应答SPARQL查询Q=在RDF图G上找到查询图Q的子图匹配。基于分布图上子图匹配,可在RDF图G的每个片段中引入局部部分匹配作为部分应答。装配分两种:集中式和分布式

RDF=<subject, property, object>,三元组以成对形式或与属性值相关联的实体联系。RDF可表示为图,主语和谓语是点,谓语是边。基于分区的概念将RDF图G划分为一组子图,并将SPARQL查询Q分解为子查询,然后子查询分区数据,利用分布式提高处理速度和可扩展性。一种替代策略,该策略仅基于分区数据图而不分解查询。该方法基于“部分求值和组装”框架,使用图划分算法将RDF图划分为顶点不相交的片段,将交叉片段在源片段和目标片段中复制。每个站点接收完整的SPARQL查询Q,并在提供数据并行计算的本地RDF图片段上执行。优点:最小化中间结果中涉及的顶点数和边数。部分评估策略的基本思想如下:给定函数f(s,d),其中s是已知输入和d是可调谐输入,f计算仅依赖于s的部分生成部分应答。

内部匹配:一些SPARQL查询匹配包含在一个片段中, 这些内部匹配可通过每个站点的集中技术在局部找到。
交叉匹配: 分布式环境中找到跨越多个片段的子图匹配。

框架中两个重要问题

  • 给定查询图Q(局部部分匹配),计算每个站点的部分评估结果即交叉匹配和片段之间的重叠部分。
  • 两种不同的策略:集中式,所有本地部分匹配项都发送到单个站点;分布式, 局部部分匹配在多个站点并行装配。

解决方案的好处

  • 不依赖于任何特定分区策略,在现有的基于分区的方法中,查询处理始终取决于特定RDF图分区策略。
  • 与其他基于分区方案相比,保证在转换结果顶点时获得中间结果,并降低成本。

现有云平台处理大型RDF数据集,遵循MapReduce范式,云平台提供高可扩展性和容错能力。基于分区将RDF图G划分为多个碎片,并分别放置在不同/并行/分布式系统。每个主机托管某种形式的集中式RDF存储。在图分区中,将RDF图G划分为n个片段,并通过包含边界顶点的N跳邻点扩展每个片段。根据分区策略,与每个分解后的子查询对应的图直径不应大于N,允许子查询处理每个局部站点。联合SPARQL查询系统:在多个SPARQL站点运行SPARQL查询,典型就是链接数据,其中不同RDF存储库相互连接,提供虚拟集成的分布式数据库。

部分评估
对分布式XML树和图的查询进行评估。部分评估用于分布式XML上的某些XPath查询,将XPath查询序列化为子查询向量,并通过在XML树上使用自上而下或自下而上的遍历,找到每个站点上所有子查询的部分结果。最后,所有部分结果都在服务器站点上组合形成最终结果。RDF数据和SPARQL查询是图不是树。SPARQL查询基于同态,不是图模拟。同态定义一个“函数”,模拟定义一个关系允许“一对多”映射,但函数不允许。图同态是经典的NP-complete,而图模拟具有多项式时间算法(O((| V(G)| + | V(Q)|)(| E(G)| + | E(Q)|) )),其中| V(G)| (| V(Q)|)和| E(G)| (| E(Q)|)为RDF数据图G(或查询图Q)中的顶点数和边数。

基本图模式(BGP)查询

SPARQL匹配
在这里插入图片描述
反序列化SPARQL匹配,SPARQLQ匹配定义了图同态,每个片段都位于一个位置。不同的分布式RDF系统使用不同的顶点不相交分割算法,顶点不相交的分区可确保片段间没有重叠的顶点。为了保证数据的完整性和一致性,需存储一些交叉边的副本。

利用部分评估和装配应答分布式RDF图G的SPARQL查询。每个站点Si都将片段Fi看作已知输入s,将其他片段看作尚不用输入。在执行模型中,每个站点Si接收完整查询图Q。在部分评估阶段,在每个站点Si上,在Fi中找到Q的所有局部部分匹配。任何交叉匹配和片段Fi之间的重叠部分必须是Fi中的局部部分匹配。在分布式/并行中,局部部分匹配在多个站点上并行组合,分三步:

  • 初始化:输入SPARQL查询Q并将其发送到S中的每个站点。

  • 部分评估:每个Si都找到片段Fi上Q的局部匹配,在每个站点并行执行此步骤。

  • 装配:装配所有局部匹配项以计算完整的交叉匹配项,系统可以使用集中式或分布式装配方法找到交叉匹配。

局部匹配
每个站点都接收完整的查询图Q。为了回答查询Q,每个站点都基于已知输入计算局部匹配。局部匹配PMi=部分匹配阶段交叉匹配M和片段Fi间的重叠部分。M可能存在或不存在取决于尚未提供的输入。仅基于已知输入,我们无法判断M是否存在,本地局部匹配的定义如下:
在这里插入图片描述
具体情况此处省略,上述定义的局部匹配是一个完整SPARQL匹配的子集,查询Q的某些顶点在局部匹配中不匹配,则允许它们匹配特殊值NULL。局部部分匹配是未知交叉匹配和片段的重叠部分,所以一定存在交叉边缘。

在这里插入图片描述
片段Fi中的局部部分匹配表示为PMji,其中j区分同一片段中不同的局部部分匹配。 在序列化向量中,所有扩展顶点下会有划线 。正确性命题的说明省略。

计算局部匹配
给定SPARQL查询Q和片段Fi,部分评估是在Fi中找到所有局部部分匹配。匹配过程要确定将Q的顶点与Fi的顶点相关联的函数f。 匹配表示为(v,u)对(v∈q和u∈Fi) 。(v,u)对表示查询Q的顶点v与片段Fi的顶点u的匹配。顶点对(v,u)的集合构成定义6中所指的函数f。函数f是一组顶点对,从空集开始。后续在每个步骤中引入一个偶数顶点对(v,u)扩展当前函数f,其中顶点v的候选顶点是u。根据条件满足程度进行下一步,但在每个步骤,会将新候选顶点对添加到现有函数f形成新函数。可任意定义查询顶点的选择顺序。gStore采用“子图匹配”回答SPARQL查询,gStore采用状态转换查找SPARQL匹配项。

未完待续,接下篇

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值