Querying RDF Data Using A Multigraph-based Approach

本文由学者Vijay Ingalalli、Dino Ienco和Pascal Poncelet于2016年3月在EDBT共同发表的会议论文,原文下载链接文末自取

主要概括:RDF是知识概念描述的标准, SPARQL是查询RDF数据的语言,可在Web级整合RDF管理引擎处理复杂的查询大小和结构。本文提出AMBER(用于基于属性多重图的RDF查询),优化复杂查询的计算,AMBER利用子图匹配技术解决SPARQL查询问题。

RDF数据可提高各种用途的广泛应用程序的健壮性和性能,目前RDF查询有两个新挑战:首先,自动生成的查询无法限制结构复杂度和大小;其次,由检索系统(或任何其他应用程序)生成的查询必须高效在合理的时间内应答。本文的AMBER是一个基于图的RDF引擎,涉及两步:离线阶段,将RDF数据转换进入多图并建立索引,然后在线阶段(提出了解决SPARQL查询)。具体方法:首先,将RDF数据表示为多图,其中主语/宾语构成顶点,并且多边(谓语)可出现在相同顶点对之间。然后,从多图访问信息建立新索引。最后,将 SPARQL查询表示为多图,将SPARQL查询问题简化为子图同态问题。针对子图同态问题,AMBER利用查询多图的结构特性,提出特定索引。

RDF=主语S+谓语P+宾语O。RDF三元组可采用任何两种形式; IRI(国际资源标识符)或文字。IRI与前缀一起,文字以反逗号书写。虽然主语S和谓语P是IRI,但宾语O是IRI或文字。RDF数据也可表示为有向图,其中三元组<S,P,O>,则主语S和宾语O为顶点,谓语P形成从S到O有向边。为突出IRI和文字的区别,对前者使用标准矩形和圆弧,而对后者使用斜角和边(没有箭头)。

为了将RDF三元组转换为数据多图G,设置四个协议:将主语S作为一个顶点;谓语P当作边;当宾语是IRI时,才将其视为顶点。当宾语是文字时,组合宾语和相应的谓语P,形成<P,O>并将其赋值为主语的属性。每个顶点在属性集合中赋空值,还需要维护三个不同字典,它们的元素是一对“键”和“值”,以及一个映射函数。在所有三个字典中,以“键”表示的RDF实体被映射到对应的“值”,可以是顶点/边/属性标识符。因此,通过使用映射功能Mv、Me和Ma分别用于顶点,边和属性映射,得到一个有向的、顶点属性数据多图G,其定义如下:
在这里插入图片描述
总结:RDF三元组转换成数据多图G,通过使用映射函数获得其中元素。

使用“ SELECT / WHERE”选项处理SPARQL查询,谓语实例化为IRI。SELECT子句标识显示的变量在查询结果中,而WHERE子句提供三重模式匹配RDF数据。

通过查找未知变量?X的解决方案来解决SPARQL查询的问题,这些未知变量可与RDF数据实体绑定,以便重新指定SPARQL查询中提供的关系(谓语)。在这项工作中,利用转换后的数据多图G和查询多图Q,将 SPARQL查询问题简化为子多图同态问题。将RDF数据转换为数据多图G,将SPARQL查询转换为查询多图。一个顶点有属性、有向多重图的同态定义如下:
在这里插入图片描述
通过找到G中所有与Q同构的子多图,可列举所有在G中可能的同构Q嵌入。

AMBER的两个不同阶段

  • 脱机阶段:将RDF数据转换为多图G,然后构建索引捕获G中的必要信息;
  • 在线阶段:将SPARQL查询转换为多图Q,利用子图匹配技术和己建立的索引,得到Q在G中的同态匹配。

给定 SPARQL查询的表示多图Q, AMBER将查询顶点U分解为一组核心顶点Uc和卫星顶点Us。如果顶点的度大于1,则顶点u∈U是核心顶点,另一方面,度为1的顶点u是卫星顶点。一旦分解,将在仅由核心顶点构成的查询结构上运行子多图匹配,同时还会处理(如果有)连接正在处理核心顶点的卫星顶点。随着匹配,处理整个查询图Q找到G中的同态嵌入。

对数据多图G建立三个不同索引:

  • 在ai ∈ A,利用一个反向表存储每个属性的数据顶点集

  • 一个可靠的索引S存储所有数据顶点V的特征

  • 一个可靠的索引N集存储每个数据顶点v∈V的邻点信息

上述所有三个索引结构可整合为I:= {A,S,N}。在查询匹配过程(在线)中,访问这些索引获得候选内容,以便获得查询顶点u。

顶点属性集合由A = {a0, . . . , an},其中对数据顶点v∈V可能有A的子集分配给它。通过创建一个反向表构建顶点属性索引, 其中,特定属性ai具有其出现的所有数据顶点的列表。 给定一个具有顶点属性u的查询顶点u.A⊆A,访问索引结构A获取一组具有ai的数据顶点。然后,找到具有整个属性集u.A的公共数据顶点集。

索引S从数据顶点捕获边类型信息,为了理解索引模式引入了顶点签名,顶点v∈V定义顶点签名,封装了相关的边信息:
在这里插入图片描述
通过裁剪G中每个顶点的顶点签名所提供的信息构造索引S。

顶点签名索引
对于每个顶点v,可通过利用以下特征提取一组特征相应的顶点签名。这些特征构成概要,这是近似捕获顶点签名信息的代理表示。顶点v的要点包含一组特征F, 其数值由顶点签名σv计算。提出四个不同的特征:f1-顶点签名中集合的最大基数; f2-顶点签名中唯一维度; f3- 边缘类型的最小索引值; f4-边缘类型的最大索引值。对于f3和f4,边缘类型的索引值按字母表的顺序。为所有数据顶点计算概要后,构造一R树存储所有概要, 这个R树构成顶点签名索引S。|F|字段的概要在R树中形成叶,后续如何利用R树获得备选解需结合原文示意图,此处省略内容。

顶点邻域索引
顶点邻居索引N表示数据多图G的拓扑。索引N由每个数据顶点v∈V构建的邻域树组成。由于G是有向多重图,且每个顶点v∈V同时具有输入边和输出边,所以为输入边和输出边构造两个独立的指标结构N+和N-,以构成结构N。要了解索引,需结合原文给出的示意图,此处省略这部分内容。为了构造有效树结构,还提出了结构Ordered Trie与反向列表(OTIL)。

查询匹配过程
为了遵循提出的查询匹配,将核心顶点和卫星顶点的概念形式化。给定查询图Q,将一组查询顶点U分解成一组核心顶点Uc和一组卫星顶点Us。 形式上当查询图的程度∆(Q)>1时,Uc={u|u,U∧deg(U)>1};当∆(Q)为1时,即当查询图是顶点或多边时, 随机选择一个查询顶点作为核心顶点,因此|Uc|=1。 其余的顶点归类为卫星顶点,其度是1。 形式上Us = {U \ Uc},其中每一个u ∈ Us,deg(U)=1。

本文的 AMBER-Algo仅在Uc跨越的查询上执行递归子多图匹配,如图:在这里插入图片描述
由于整个卫星顶点集Us连接到核心顶点跨越的查询,AMBER-Algo对核心顶点集合执行子多重图匹配时,处理卫星顶点。在递归中,如果当前核心顶点有与其相连的卫星顶点,该算法会直接检索这些卫星顶点的可能匹配列表,并将它们包含在当前部分解。每次算法执行带有解决方案的递归分支时,解决方案不仅包含属于Uc的每个查询顶点的匹配数据顶点Vc,还包含一组属于Us的每个査询顶点的匹配数据顶点Vs。每找到一个解,不仅可生成一个,而且可通过解决方案中匹配元素的笛卡儿乘积生成一组嵌入值。由于查找 SPARQL解决方案等同查找查询多重图的同态嵌入,因此同态匹配允许不同的查询顶点匹配相同的数据顶点。与子多图同构不同的是子多图同态中无内射约束。因此,在递归匹配中,不用检查潜在数据顶点是否与之前匹配的查询顶点匹配。而处理卫星顶点时,可独立地为每个卫星顶点查找匹配,而无需检查重复的数据顶点。

顶点级处理
为了处理任意查询顶点,过程PROCESSVERTER算法如下:
在这里插入图片描述
此算法只有当顶点u至少有一组顶点属性或与之相关的任何IRI时调用。PROCESSVERTER返回一组与u匹配的数据顶点CandAttu;如果CandAttu为空,查询顶点u在V中无匹配。

处理卫星顶点
对处理连接到核心顶点uc∈Uc的一组卫星顶点Usat⊆Us,这种情况导致在SPARQL查询中经常出现星型结构,如图所示:
在这里插入图片描述
对查询图中的星型结构,如果为核心顶点uc提供候选解决方案,则可以独立处理每个卫星顶点。给定一个核心顶点Uc,首先使用索引S找到一组候选解Canduc,然后,对于每个候选解vc∈Canduc,算法2中所有连接到uc的卫星顶点Usat的解决通过MATCHSATVERTICES返回。 第1行中定义解决方案元组Msat,存储整个卫星顶点Usat集合的候选解决。
在这里插入图片描述
任意查询处理
算法3是处理任意查询的通用过程:
在这里插入图片描述
对任意查询Q,定义两个不同顶点类型:一组核心顶点Uc和一组卫星顶点Us。下面是对算法3的简要概述:(第1行)中QUERYDECOMPOSE,通过将查询顶点U分解为Uc和Us,如图:
在这里插入图片描述
为处理任意查询多图,在核心顶点Uc⊆U上执行递归子多图匹配;在递归中,会处理连接到特定核心顶点的卫星顶点。由于递归是在核心顶点集上执行,所以使用用于排序查询顶点的试探法。查询顶点的排序是子图匹配算法的关键之一。在任何子图匹配算法中,通过探索数据图所跨越的解空间,得到查询子图的嵌入。由于在匹配中会出现空间大小问题,所以VERTEXORDERING(第2行)使用两个排序函数。第一个排序函数r1依赖于连接到核心顶点的卫星顶点数,查询顶点以按值递减排序。第二个排序函数r2依赖于查询顶点的关联边数。(第3行)选择集合Uordc中的第一个顶点作为初始顶点uinit,并按顺序选择后续查询顶点。初始查询顶点CandInit的候选解由QUERYSYNINDEX(第4行)返回,该过程受uinit的结构属性(邻域结构)约束。 通过查询初始查询顶点uinit的索引S,得到与uinit相关的结构匹配的候选解CandInit ∈ V。(第5行)再调用PROCESSVERTEX,根据顶点属性和IRI信息获取候选解,然后只保留公共候选。需先阐述(第6-7行)解决的处理方式及如何处理每种解决查询顶点。对初始顶点CandInit的所有候选解,执行递归以获得同态嵌入(第8-19行)。递归的详细内容,请自行阅读论文理解。

余下的内容为实验评估,不再赘述。

原文链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值