vlambda博客
学习文章列表

论文导读 | 基于双向图模拟的图数据库查询处理

SPARQL语言是W3C推荐的对RDF数据(ResourceDefinition Framework,资源描述框架)进行查询的语言。SPARQL查询的基本模式可以转换为一个查询图,在 RDF 数据组成的图数据库上进行图同态(graph-homomorphic)查询来得到查询结果。这类模式被称为基础图模式(Basic Graph Pattern, BGP),其为三元组的集合,不包含更复杂的语法。然而,图同态查询自身是一个 NP-hard 的问题,具有较高的复杂度。本文尝试使用双向图模拟,一种要求更加宽松且多项式时间可解的图模式匹配问题,来根据SPAQL查询对图数据库进行提前剪枝以缩小搜索空间,加快查询处理速度。

论文导读 | 基于双向图模拟的图数据库查询处理

论文导读 | 基于双向图模拟的图数据库查询处理

图表1基础图模式示例


双向图模型

双向图模拟是在2012年VLDB论文《Capturing Topology in Graph PatternMatching》[1]中提出的,是对之前存在的图模拟(GraphSimulation)问题的进一步改进,在 RDF 数据集上,其定义如下:

双向图模拟:给定两个图论文导读 | 基于双向图模拟的图数据库查询处理其中论文导读 | 基于双向图模拟的图数据库查询处理为点集合,Σ 为边标签集合,论文导读 | 基于双向图模拟的图数据库查询处理为带标签的边集合,且 (v,a,w) 表示从点 v 到点w 标签为 a 的边。定义二元关系论文导读 | 基于双向图模拟的图数据库查询处理, 则 S 为论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理之间的双向图模拟,当且仅当对于所有论文导读 | 基于双向图模拟的图数据库查询处理:

1.    若论文导读 | 基于双向图模拟的图数据库查询处理, 则存在论文导读 | 基于双向图模拟的图数据库查询处理使得论文导读 | 基于双向图模拟的图数据库查询处理, 且论文导读 | 基于双向图模拟的图数据库查询处理

2.    若论文导读 | 基于双向图模拟的图数据库查询处理, 则存在论文导读 | 基于双向图模拟的图数据库查询处理使得论文导读 | 基于双向图模拟的图数据库查询处理, 且论文导读 | 基于双向图模拟的图数据库查询处理

我们称之为 论文导读 | 基于双向图模拟的图数据库查询处理 双向模拟 论文导读 | 基于双向图模拟的图数据库查询处理 。简单来说,我们要求论文导读 | 基于双向图模拟的图数据库查询处理中每一个参与模拟的点都保留了模式图论文导读 | 基于双向图模拟的图数据库查询处理中相应点的前驱和后继语义。相比子图同态或者同构,双向模拟允许模式图论文导读 | 基于双向图模拟的图数据库查询处理中的点到数据图论文导读 | 基于双向图模拟的图数据库查询处理中的点为一对多映射,也就是说,我们最终得到的是论文导读 | 基于双向图模拟的图数据库查询处理中每一个点v在论文导读 | 基于双向图模拟的图数据库查询处理中的模拟点集合 论文导读 | 基于双向图模拟的图数据库查询处理 ,其中可能包含多个不同的点。此外我们只要求保留前驱和后继的语义关系,但不要求保留论文导读 | 基于双向图模拟的图数据库查询处理的拓扑结构,这使得双向图模拟得到的论文导读 | 基于双向图模拟的图数据库查询处理中的模拟点集合是子图同态或者同构能够得到的匹配点集合的超集。例如下图,p4 在双向图模拟的语义下可以作为 v 或者 w 的模拟点,但是在子图同态或者同构中则不能作为匹配。

论文导读 | 基于双向图模拟的图数据库查询处理

图表2双向图模拟示例

双向图模拟算法

本文提出了基于不等式系统(SOI,System ofinequalities)的求解双向图模拟的算法。该算法基于以下观察:

给定两个图论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理二元关系, 若 S 为论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理之间的双向图模拟,且论文导读 | 基于双向图模拟的图数据库查询处理,则

论文导读 | 基于双向图模拟的图数据库查询处理
论文导读 | 基于双向图模拟的图数据库查询处理  表示 v’ 的一跳后继集合, 论文导读 | 基于双向图模拟的图数据库查询处理 表示 w’ 的一跳前驱集合。也就是说,v 的模拟点一定在w 的模拟点的前驱集合中,而 w 的模拟点一定在 v 的模拟点的后继集合中。根据双向图模拟的定义不难得出该结论。
接下来,作者们将该观察转换为了多项式。他们将 论文导读 | 基于双向图模拟的图数据库查询处理  表示为一个 论文导读 | 基于双向图模拟的图数据库查询处理 维的 bit向量,其中第 i 个 bit 为 1,则表示论文导读 | 基于双向图模拟的图数据库查询处理中的第 i 个点在 v 的模拟点集合 论文导读 | 基于双向图模拟的图数据库查询处理 中。对于 论文导读 | 基于双向图模拟的图数据库查询处理 论文导读 | 基于双向图模拟的图数据库查询处理 ,则表示为向量与矩阵相乘。本文用 论文导读 | 基于双向图模拟的图数据库查询处理 分别表示一个图 G 在边标签 a 上的前向和后向邻接矩阵。在 论文导读 | 基于双向图模拟的图数据库查询处理 的第 i 行第 j 列为 1,则表示图中存在边 论文导读 | 基于双向图模拟的图数据库查询处理 。在 论文导读 | 基于双向图模拟的图数据库查询处理 的第 i 行第 j 列为 1,则表示图中存在边,则:
论文导读 | 基于双向图模拟的图数据库查询处理
其中 论文导读 | 基于双向图模拟的图数据库查询处理 表示bit矩阵乘法。因此,上述观察可以转换为不等式:
论文导读 | 基于双向图模拟的图数据库查询处理
进一步地,任何一个模式图都可以转换为一个 SOI ℇ=(Var,Eq),其中 Var 为变量集合,每一个变量都是一个 bit 向量,而 Eq 则为不等式集合。模式图中的每一个点 v 都对应 SOI 中的一个变量 v,而每一条边则根据上述规则转换为两个不等式。下面为一个模式图和它转换出的 SOI的示例:

论文导读 | 基于双向图模拟的图数据库查询处理

论文导读 | 基于双向图模拟的图数据库查询处理

图表3模式图转为 SOI 示例

求解表示模式图论文导读 | 基于双向图模拟的图数据库查询处理和数据图论文导读 | 基于双向图模拟的图数据库查询处理之间的双向模拟关系 S 的SOI 的方法如下:

1.    我们初始化二元关系论文导读 | 基于双向图模拟的图数据库查询处理,即每一个变量都为一个全 1 的bit 向量,并将所有不等式设置为不稳定。

2.    用论文导读 | 基于双向图模拟的图数据库查询处理表示当前关系,如果存在一个不稳定的不等式论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理表示论文导读 | 基于双向图模拟的图数据库查询处理或者论文导读 | 基于双向图模拟的图数据库查询处理),则检查该不等式是否满足,如果满足,则将其设为稳定并继续。如果不满足,则令论文导读 | 基于双向图模拟的图数据库查询处理, 更新论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理

论文导读 | 基于双向图模拟的图数据库查询处理
将该不等式设置为稳定,其他所有不等式设置为不稳定并继续步骤2,直到不存在不稳定的不等式
我们可以进一步对于初始化方法进行优化,对于变量 v,我们将其初始化为:
论文导读 | 基于双向图模拟的图数据库查询处理
其中 论文导读 | 基于双向图模拟的图数据库查询处理 表示 论文导读 | 基于双向图模拟的图数据库查询处理 中所有标签为 a 的边的源点的集合,而 论文导读 | 基于双向图模拟的图数据库查询处理 表示论文导读 | 基于双向图模拟的图数据库查询处理中所有标签为 a 的边的目的点的集合。
使用该方法求解双向图模拟问题的复杂度为 论文导读 | 基于双向图模拟的图数据库查询处理

在SPARQL查询中应用双向图模拟

BGP:对于符合基础图模式的 SPARQL 查询,我们可以将其直接转换为一个模式图,由于SPARQL查询结果一定是双向图模拟结果的子集,因此我们可以先用双向图模拟的方法进行剪枝,在得到的结果集合中再进行 SPARQL查询。

UNION:一些 SPARQL 查询中会包含 UNION 语句,论文导读 | 基于双向图模拟的图数据库查询处理表示对论文导读 | 基于双向图模拟的图数据库查询处理两个 SPARQL 查询取并集。对于这种情况,我们只需要将论文导读 | 基于双向图模拟的图数据库查询处理分别转换为模式图并进行双向图模拟,将得到的结果集取并集,L 的查询结果集合便包含在该并集中,我们可以在其中进行进一步查询。

AND: 论文导读 | 基于双向图模拟的图数据库查询处理表示对论文导读 | 基于双向图模拟的图数据库查询处理两个 SPARQL 查询在公共变量上取交集。对于该语句,我们需要将论文导读 | 基于双向图模拟的图数据库查询处理转换出的 SOI 聚合起来。若论文导读 | 基于双向图模拟的图数据库查询处理产生的 SOI 为论文导读 | 基于双向图模拟的图数据库查询处理,论文导读 | 基于双向图模拟的图数据库查询处理产生的 SOI 为论文导读 | 基于双向图模拟的图数据库查询处理, 则求解论文导读 | 基于双向图模拟的图数据库查询处理得到的结果集中便包含了 L 的解,可以在其中进行进一步的查询。

OPTIONAL:OPTIONAL 语句略为复杂,论文导读 | 基于双向图模拟的图数据库查询处理表示论文导读 | 基于双向图模拟的图数据库查询处理必需满足,而论文导读 | 基于双向图模拟的图数据库查询处理则以满足论文导读 | 基于双向图模拟的图数据库查询处理的变量为基础进行进一步搜索,若存在则在结果中报告。例如下列 SPARQL 意为 “找到执导过至少一部电影的导演,如果该导演有合作者,则也找出来”。

论文导读 | 基于双向图模拟的图数据库查询处理
图表4 OPTIONAL 语句示例
我们假设论文导读 | 基于双向图模拟的图数据库查询处理产生的 SOI 为 论文导读 | 基于双向图模拟的图数据库查询处理 , 论文导读 | 基于双向图模拟的图数据库查询处理 产生的 SOI 为 论文导读 | 基于双向图模拟的图数据库查询处理 , 我们定义 函数mand(),表示变量必需满足的出现,例如上图示 表示变量必需满足的出现,例如上图示例中,”?director directed ?movie” 中的 ?director 便为必需满足的出现。”?director workded_with ?coworker” 中的 ?director则不是。更具体的来说: 
1.mand(L)=vars(L), vars(L) 表示 L 中的所有变量。 
2.mand(论文导读 | 基于双向图模拟的图数据库查询处理 AND 论文导读 | 基于双向图模拟的图数据库查询处理)=mand(论文导读 | 基于双向图模拟的图数据库查询处理)∩ mand(论文导读 | 基于双向图模拟的图数据库查询处理). 
3.mand(论文导读 | 基于双向图模拟的图数据库查询处理 OPTIONAL 论文导读 | 基于双向图模拟的图数据库查询处理)=mand(论文导读 | 基于双向图模拟的图数据库查询处理
我们对于所有 论文导读 | 基于双向图模拟的图数据库查询处理 定义重命名函数 论文导读 | 基于双向图模拟的图数据库查询处理 SOI 论文导读 | 基于双向图模拟的图数据库查询处理  可以应用于 论文导读 | 基于双向图模拟的图数据库查询处理 的求解,其中 论文导读 | 基于双向图模拟的图数据库查询处理
也就是约束所有论文导读 | 基于双向图模拟的图数据库查询处理中重命名产生的变量的匹配结果必须是论文导读 | 基于双向图模拟的图数据库查询处理中原变量的匹配结果的子集。ℇ 的求解结果包含了 L 的解。例如,上图中的 SPARQL 语句转换为的 SOI 如下所示:

论文导读 | 基于双向图模拟的图数据库查询处理

图表5求解 OPTIONAL 语句的SOI 示例

实验结果

实验使用的数据集包括两个:

DBpedia 数据集[2],包含751,603,507 条三元组,216,132,665个点和65430条谓词(边标签)。

LUBM(LehighUniversity Benchmark)数据集[3],包含1,38,692,508条三元组,328,620,750个点和18个谓词(边标签)。

实验使用的查询集则分为三组, 论文导读 | 基于双向图模拟的图数据库查询处理为来自论文[4]的DBpedia查询集,论文导读 | 基于双向图模拟的图数据库查询处理 为来自论文[5]的DBpedia查询集,论文导读 | 基于双向图模拟的图数据库查询处理为来自论文[4]的LUBM查询集。

作者首先将本文提出的双向图模拟求解算法和 Ma et al.[1]设计的算法进行了对比,对论文导读 | 基于双向图模拟的图数据库查询处理产生的模式图在数据图上的求解时间如下图所示,可以发现该算法在执行速度上相比已有算法具有优势。

论文导读 | 基于双向图模拟的图数据库查询处理

图表6双向图模拟求解时间对比

然后,作者对双向图模拟的剪枝效果进行了测试,结果如下图所示。其中第二列表示SPARQL查询结果的数目,第三列为查询结果相关的三元组的数目,第四列为双向图模拟所需的时间,第五列为双向图模拟剪枝后剩余的三元组数目。可以看到,在DBpedia的查询中(论文导读 | 基于双向图模拟的图数据库查询处理论文导读 | 基于双向图模拟的图数据库查询处理),双向图模拟具有较高的剪枝效果,而在 LUBM的查询(论文导读 | 基于双向图模拟的图数据库查询处理)中则较差。这是由于 LUBM数据集的谓词种类少,每一个谓词的筛选能力较低,使得剪枝的效果不强。

论文导读 | 基于双向图模拟的图数据库查询处理

图表7双向图模拟剪枝效果
最后,作者在两个RDF数据库,RDFox[6]和 Virtuoso[7]上测试了双向图模拟剪枝的效果,结果如下图所示。作者对比了数据库在原数据集上执行查询的时间,数据库在双向图模拟剪枝后的数据集上执行查询的时间,以及双向图模拟时间与数据库在剪枝后数据集上的查询时间之和。可以看出,剪枝对于数据库的查询具有较为明显的加速效果,但是把双向图模拟的剪枝时间考虑进来之后,在RDFox 中,32个查询中有15个查询得到了速度提升,而在 Virtuoso中,32个查询中只有3个查询得到了提升。作者们将此问题归咎于双向图模拟的执行算法需要进一步优化。此外,他们认为这也表明了部分查询是适合使用双向图模拟剪枝的,并特别指出在查询中间结果较大的SPARQL查询中,双向图模拟剪枝具有较好的优化效果。在其他查询上,是否适合使用双向图模拟则需要进一步研究。
论文导读 | 基于双向图模拟的图数据库查询处理
图表8双向图模拟应用于 RDFox 的效果

论文导读 | 基于双向图模拟的图数据库查询处理

图表9双向图模拟应用于Virtuoso 的效果

总结


本文将双向图模拟技术应用到了 SPARQL查询优化上。实验表明,在部分 SPARQL查询中,双向图模拟起到了较好的优化作用。但是实验结果也表明出,双向图模拟的高效执行策略还需要进一步演技,此外,双向图模拟适合于什么类型的查询也需要进一步的探究。




参考文献

[1]      Ma,S., Cao, Y., Fan, W., Huai,J., & Wo, T. (2011). Capturing Topology in Graph Pattern Matching. Proceedingsof the VLDB Endowment, 5(4).
[2]      Auer, S., Bizer, C., Kobilarov,G., Lehmann, J., Cyganiak, R., & Ives, Z. (2007). Dbpedia: A nucleus for aweb of open data. In The semantic web (pp. 722-735). Springer, Berlin,Heidelberg.
[3]      Guo, Y., Pan, Z., & Heflin,J. (2005). LUBM: A benchmark for OWL knowledge base systems. Journal of WebSemantics, 3(2-3), 158-182.
[4]      Atre, M. (2015, May). Left bitright: For SPARQL join queries with OPTIONAL patterns (left-outer-joins). In Proceedingsof the 2015 ACM SIGMOD international conference on management of data (pp.1793-1808).
[5]      Morsey, M., Lehmann, J., Auer,S., & Ngomo, A. C. N. (2011, October). DBpedia SPARQL benchmark–performanceassessment with real queries on real data. In International semantic webconference (pp. 454-469). Springer, Berlin, Heidelberg.
[6]      Nenov, Y., Piro, R., Motik, B.,Horrocks, I., Wu, Z., & Banerjee, J. (2015, October). RDFox: Ahighly-scalable RDF store. In International Semantic Web Conference (pp.3-20). Springer, Cham.
[7]      Erling, O., & Mikhailov, I.(2009). RDF Support in the Virtuoso DBMS. In Networked Knowledge-NetworkedMedia (pp. 7-24). Springer, Berlin, Heidelberg.
 
 

论文导读 | 基于双向图模拟的图数据库查询处理