RDF存储查询技术

来源:互联网 发布:2017流行语言网络语言 编辑:程序博客网 时间:2024/05/20 14:44
        随着互联网的飞速发展,大量的RDF数据在互联网上被发布,对于大规模RDF数据管理与查询已经变成了 一个非常具有挑战性的问题。很多公司以及高校开发了许多关于针对RDF的管理工具[1],例如Oracle的 OracleRDF,惠普公司的Jena2[2]以及德国MPI提出的RDF-3X[3]等,在这些管理工具中,资源的查询成为 了其中的一个重要的组成部分。目前,海量RDF数据的查询和存储技术主要有三种:一种是将三元组数据
映射成关系数据库中的表结构,利用现有的数据库管理和查询工具来进行RDF的查询检索;第二种是基于 三元组形式的查询存储,直接根据主谓宾三元组构建索引;还有一种是基于图模型的方式,因为RDF本身
就是基于图结构,因此可以利用图数据库的各种操作来完成对RDF数据的检索。
1.基于关系数据库的技术
      从关系数据的产生至今,经过大量研究人员的共同努力,关系数据库目前已经具有了成熟、高校的数据库管理查询技术。由于RDF数据的特性,人们很容易在RDF数据和关系数据库之间建立映射,因此有大量的研究工作尝试着把RDF三元组映射到关系数据库中,然后利用关系数据库技术来进行RDF存储查询。
(1)三元组表:根据RDF的表示形式,人们能想到的最直观的方式,就是以<s,p,o>三元组的形式方式直接将RDF数据存储到关系数据库中,利用关系数据库的查询技术进行检索,例如3-Store[1]。虽然这种方式非常利于实现,但是缺点也显而易见,将所有的数据组织成一个巨大的表面临的将是查询效率低下的问题,因为每一个查询都有可能面临大量的自连接操作。
(2)属性表:属性表的工作方式是按照属性,将所有的数据进行分类,具有相同属性的三元组被存储在一个表中。基于这种存储方式,在进行查询的时候,主语之间的自连接操作将被大量的避免,查询效率将得到显著的提高。这种方法最著名的当属惠普公司的Jena2[2]。这种方式的局限性在于在实际的查询过程中往往会涉及到多个属性表,需要多张属性之间进行相关的操作。另一个问题是对于属性进行分类,具有相同属性的实体的内容不尽相同,可能会造成大量的空值问题。
(3)垂直存储:垂直存储是指按照谓词对RDF三元组进行划分,具有相同谓词的数据被存储在一个表中,并且可以直接将谓词作为表名。直接把谓词当做表名的优点只需要存储s,o两列即可,并且按照主语进行排序。这种方式的优点在于可以快速的定位到主语,很方便进行主语的查询操作。垂直存储的缺点在于,对表的划分使得在查询的过程中,增加了表操作的运算数。同时,对于数据的更新将涉及到多个表,增加了数据更新的难度。
2.基于基本三元组的查询技术
       基于基本三元组的方式是指对RDF三元组不进行任何的拆分操作,通常是将RDF三元组直接构建成B+树或者Hash等索引结构,在此索引的基础上直接进行RDF数据的查询。由于RDF数据通常包含大量的文字信息,所以在构建索引之前,通常都会将三元组进行编码,建立从数字编码到文字信息之间的映射,根据编码建立索引。这种方式相当于直接把三元组的信息存储在了索引中,根据编码信息即可映射到相应的资
源。我们可以利用现有的成熟的索引构建和查询技术来完成相应的存储查询。RDF-3X[3]是目前效率最高的RDF查询引擎,它采用整数编码的方式将三元组编码成整数序列,然后压缩存储在由B+数建立的索引中,并且采用全索引策略,按照s,p,o所有的排列方式进行索引,以此来提高查询效率。另外一个基于基本三元组的系统是RDF Cube[4]。与RDF-3X不同,它将RDF三元组通过哈希函数映射在一个三维的cube中。由于索引结构直接存储三元组,以上两种方法都具有较高的查询性能。但是缺点也是显而易见的,就是这是一种典型的以空间换取时间的策略,这种方式通常需要大量的存储空间。
3.基于图的查询技术
      将RDF三元组的主语和宾语看做图中的顶点,谓语看做边,RDF数据可以以图的形式来进行刻画描述。因此,可以将在 RDF数据上的查询可以看做是大图上的子图匹配问题。RDF数据以图的形式存储,是一个大的图数据库。通过分析用户的查询语句,构建查询图,对于在用户在RDF数据上的查询就可以看作是查询图在大图数据库上的子图匹配。典型的方法有NeMa[5], SLQ[6], gStore[7]等。
      Nema[5]是一种基于顶点相似性的子图匹配算法,不考虑查询图和数据库图的结构相似性。本文的出发点是,好的结果不一定要严格结构匹配于查询图,例如图1-1所示,虽然得到的top-1匹配结果和查询图结构不匹配,但那确是最好的结果,满足查询图所表达的语义信息。文章定义了一个子图匹配代价函数,定义了目标图中的顶点的邻居向量每一个顶点的匹配代价定义为顶点匹配标签的匹配代价和邻居向量的匹配代价的线性组合,通过启发式搜索算法查找出最小代价的子图匹配。

                                                1-1查询图与查询结果
       文献[6]中指出,给定一个查询,一个好的图查询系统应该支持多种转换(同义词、缩略词、简写等等),并且能够对给出的结果进行排序。文中提出了一种新型的查询框架SLQ来方便用户的查询,解决的问题可以概括为:给定一个查询图Q以及数据库图G,找出图数据库中所有由Q经过转换函数可以转换到的图。方法分为线下操作和线上操作。线下定义了度量函数,包括节点匹配代价边匹配代价以及匹配函数,为了得到好的匹配函数的参数,以冷启动的方式来生成查询训练集。因为图查询是NP-Hard问题,所以线上阶段给出了两个启发式搜索算法,定义并实现了数据库图的一个概要图,在概要图上进行查询,并且根据匹配分数进行排序。
       文献[7]提出了gStore来存储和查询RDF数据。对于RDF图G,首先通过编码的方法,根据节点和他邻居节点的相关信息,将每个节点编码成一个二进制子串,从而得到一个标签图G*。针对每一个SPARQL查询,采用同样的方法,把查询图Q转换成查询图Q*,可以证明Q*在G*上的匹配是Q在G上匹配的超集。这样就把RDF查询转换成了大图上的子图匹配问题。gStore提出了一种新型的索引策略VS-tree来完成匹配过程,并且提出了VS-query来削减查询空间,并且增加查询速度。基于图模型的查询技术的优点在于比较直观,现有的图处理技术相对成熟,可以很好地利用现有的图技术来完成查询过程。利用图模型来存储查询RDF数据同样具有一定的局限性:第一,RDF图的边是具有标签的,有可能会成为查询目标;第二,传统的图算法具有较高的时间复杂性,大图上的子图匹配问题被证明是NP-Hard问题,通常需要进行大量的剪枝操作,以此来提高查询的效率。
参考文献:
[1]Harris S,Gibbins N.3-store:Efficient bulk RDF storage[M]. Island: CEUR-WS Press,2003,2(3),1-15.
[2]Carroll JJ Dickinson I, Dollin C.etc.Jena2:Implementing the semantic Web recommendations[M]. New York:ACM Press,2004,74-83.
[3]Neumann T, Weikum G.RDF-3X: A risc-style engine for RDF[C].VLDB,2008,1(1):647-659.
[4]Matono A, Pahlevi SM. RDFCube: A P2P-based three-dimensional index for structural joins on distributed triple stores[C]. Trondheim, Seoul:SpringerVerlag,2007,323-330. 
[5]A. Khan. Y. Wu, C. C. Aggarwal .etc.NeMa: fast graph search with label similarity[C]. VLDB,2013,6(3),181-192.
[6]S.Yang,Y.Wu. H Sun,X Yan.etc.Schemaless and Structureless Graph Querying[C]. VLDB,2014,7(7):565-576.
[7]Lei Zou, Jinghui Mo Lei Chen.etc.gStore: Answering SPARQL Queries via Subgraph Matching[C]. PVLDB ,2011,4(8): 482-493.
0 0