基于稀疏矩阵的RDF数据存储和查询方法与流程

文档序号:16855574发布日期:2019-02-12 23:14阅读:219来源:国知局
本发明涉及数据库引擎的数据存储和查询处理领域。具体来说,设计了一种基于稀疏矩阵的存储模式来存储大量rdf数据,设计了一个基于稀疏矩阵乘法的join运算执行rdf数据的查询。
背景技术
::资源描述框架(resourcedescriptionframework,rdf)是一种非常流行的数据模型,以三元组(subject,predicate,object)的形式来表示web上的信息。一个rdf数据集也可以被描述为一个有向标签图,一个三元组就表示一条边,subject和object表示两个顶点,predicate表示这条边的标签。sparql(sparqlprotocolandrdfquerylanguage)是万维网联盟(worldwidewebconsortium,w3c)推荐的标准的rdf图数据查询语言。来自于真实世界中的大规模rdf数据,比如dbpedia(一个很特殊的语义网应用范例)和yago(一个链接数据库)数据,它们却存在着一种重要的数据特性---“稀疏性”。rdf数据的稀疏性意味着rdf图中每个顶点的邻接点只占据整个图中顶点的很小一部分。事实上,rdf数据的稀疏性无处不在。比如在现实生活中的社会活动关系情境中,人与人之间具有不同的社会活动关系,而且在这些社会活动关系中还包含着很多复杂的实体类型数据,比如地点关联,人物关系,涉及的时间点等等。任何两个实体都可以通过某些关系进行联系在一起。我们通过数据之间的关联也能够反映出人类社会活动的变化关系,比如某地区外来人口数的变化、交通道路使用量、假期旅游地等等都可以通过人类社会关系进行分析。但是,人类整体社会活动关系又具有局部紧密且全局稀疏的特性,比如说,a地区(比如,陕西省)内部的任何实体之间的关系就比较紧密,但是相比a地区和b地区(比如,陕西省和天津市)两个地区之间却只有少量的关联连接。所以,整体就人类社会活动关系而言,现实中的实体之间呈现出局部紧密的情况。例如图1,在dbpedia数据中(总共42966066个节点),有超过99.41%的节点的最大的度(出度和入度)为43;在yago数据中(总共38734252个节点),超过95.17%的节点的最大的度为39。sparql构建于基本图模式(basicgraphpattern,bgp)和sparql代数运算之上,join操作是sparql查询评估的核心操作,因为bgp就是三元组模式的join。而且在rdf图中,两个顶点的连结可以通过相邻矩阵的乘积来计算。通过对真实人类社会活动关系的rdf数据进行分析,我们发明了一种基于稀疏矩阵的存储模式进行高效存储数据,又发明了一种基于稀疏矩阵的join算法对数据进行高效查询。也就是说,基于稀疏矩阵的join算法用来查询具有“稀疏性”特征的rdf数据。因而,寻找一种可以充分考虑并利用数据稀疏性来高效存储和查询人类社会活动关系中的rdf数据的解决方案,是一个很有意义的课题。与本发明最相似的现有技术实现方案:现有的用于评估rdf数据的sparql查询的方法可以分为两类:基于关系的系统和基于图形的系统。基于关系的系统使用关系方法来存储和索引rdf数据。比如jena、oracle、sesame、3store和sor,这些系统使用一个具有3列的大表来维护所有三元组,分别对应于subject、predicate和object。然后将sparql查询转换为sql查询,并通过表的多个自连接进行查询。最近提出了许多基于图的方法来存储图模型的rdf三元组,如gstore,diplodocus[rdf],turbohom++和amber。这些基于图的方法通常将sparql查询处理视为子图匹配,这有助于保留和查询语义信息。gstore将所有谓词和谓词值映射为二进制位串,然后将其组织为一个vs*-tree树。由于vs*-tree树的每一层都是整个rdf图的总结,因此gstore可以有效地处理sparql查询。diplodocus[rdf]以混合存储方式开始,为了查找分子簇以及通过聚类相关数据帮助提升查询速度,首先考虑rdf数据的图结构和数据分析的要求。turbohom++通过将rdf图转换为普通数据图来开发turboiso,而amber将rdf数据和sparql查询表示为多图。现有技术的缺点:现有的对rdf数据的查询方法在一定程度上确实提高了查询评估的性能。然而,他们在处理来自真实世界的大规模rdf数据方面的改进仍然有限,原因是它们在存储数据时没有解决真实数据带来的稀疏性而造成存储数据时浪费大量空间。而且在基于关系的系统中大量的自连接会导致长时间的响应时间,这是系统的潜在瓶颈。由于缺乏并行性,所有上述系统在预处理时在计算上都很昂贵。另外,具有耗时遍历的查询方法会增加运行时间开销。由此,我们需要这样一个基于稀疏矩阵的rdf查询处理方法,既能够高效存储大量rdf数据,又能够快速进行查询处理。技术实现要素:为克服现有技术的不足,本发明解决了真实社会活动关系数据的稀疏性,提出一种基于稀疏矩阵的数据存储模式和基于稀疏矩阵的join查询算法。本发明设计的存储模式,能够充分利用真实人类社会活动关系数据的特点,将局部紧密的实体关系进行存储,这样不仅高效紧凑的存储了原始数据,而且还缩小了查询数据集的范围,更提高了查询效率。本发明的存储模式能够节省大量存储空间,将数据表示为稀疏矩阵并仅在rdf图中维护实际关系的方式进行处理。本发明的查询算法是在基于稀疏存储模式之上的矩阵乘法来进行join运算,能够显著提升查询效率。为此,本发明采取的技术方案是,基于稀疏矩阵的rdf数据存储和查询方法,步骤如下:步骤一:将原始rdf数据的字符串类型哈希编码成整数类型;步骤二:对编码后的rdf数据构建rdf立方体rdfcube;步骤三:通过建立谓词索引,采用一系列稀疏矩阵的形式来存储rdfcube;步骤四:解析并优化sparql查询语句得到最优的查询计划;步骤五:基于稀疏矩阵的join查询执行,结果输出。步骤四具体地:对于给定的一个rdf数据的sparql查询语句,将其解析成一个查询图,然后再根据查询图中每条边的统计数据进行排序,在保证边与边连接的情况下重构查询执行计划。步骤四进一步具体地:输入的是一个sparql查询语句,其形式是一个l=(e1,e2,...,en),包含这个查询语句的所有边,首先初始化一个记为n的点集合来记录选取的边的点,并且按照l中所有的边的统计数据对l进行排序;然后在排序后的查询语句l中选取第一条边加入q中,并将所选取的边的点加入n中,并更新l;只要l不为空,依次循环的从l中选取一条统计数小并且和之前已选边有关联的边加入q中,所选边的点∈n并将该所选边的点加入到n中,更新l;最终得到的查询计划q即为最优查询计划。步骤五具体地:通过步骤四得到给定的优化后的查询计划,对查询计划中的每一个稀疏矩阵依次执行基于稀疏矩阵的join算法得到最终的查询结果,其中,每两个稀疏矩阵具体执行的是smjoin算法。步骤五进一步具体地:算法1是对于给定的优化后的计划中的每个稀疏矩阵进行join算法运算处理,输出最终查询结果;算法2是给定两个稀疏矩阵执行核心smjoin算法;对于算法1,输入的是给定的一个经过优化后的查询计划q,先从优化后的查询计划q中取出第一个记为rt稀疏矩阵并更新q,然后依次从q中取出下一个记为sptable稀疏矩阵,两个稀疏矩阵rt和sptable进行smjoin操作,并更新结果至rt,重复的从q中选取下一个稀疏矩阵进行smjoin操作直至q为空,最终的查询结果即为rt;对于算法2,smjoin描述的是算法1中给定的两个稀疏矩阵a和b进行join操作,首先遍历矩阵a的每个非零行,然后对矩阵a中的每个非零行中的每个非零项,从矩阵b中找到与其匹配的非零项,如果满足条件就将其匹配后的结果输出至结果矩阵rt中,最终输出join操作的结果矩阵即为rt。本发明的特点及有益效果是:本发明针对大规模真实人类社会活动关系的rdf图数据,利用数据的稀疏性提出了一种基于稀疏矩阵的数据存储模式和基于稀疏矩阵的join查询算法,解决了在存储数据时没有解决真实数据带来的稀疏性而造成存储数据时浪费大量空间的问题,通过解决rdf数据的稀疏特性以达到对大规模rdf数据的高效存储和高效查询。在保证算法正确性的同时,通过优化策略来减少查询响应时间。从该发明的实验结果来看,如图6所示,针对各种类型的社会活动关系查询语句,我们的方法对rdf图数据的查询效率明显比现有查询系统(gstore和rdf-3x)更好。附图说明:图1是本发明对真实社会关系资源rdf数据的稀疏性分析。a是dbpediadataset,b是yagodataset。图2是本发明基于稀疏矩阵的rdf查询处理的整体框架。其中包括存储模块,查询优化模块和查询执行模块。图3是本发明的基于稀疏矩阵的存储模块。图4是本发明的查询优化模块的举例。图5是本发明在不同规模的合成数据集watdiv上进行了查询实验。awatdiv:f雪花型查询,bwatdiv:l线型查询;cwatdiv:s星型查询,dwatdiv:c复杂型查询。图6是本发明在真实社会关系数据集dbpdedia和yago上进行了查询实验。a是yagodataset,b是dbpediadataset。具体实施方式本发明是针对真实社会活动关系数据的局部紧密且整体稀疏的特性而提出的一种基于稀疏矩阵的数据存储模式和基于稀疏矩阵的join查询方法。步骤一:将原始rdf数据的字符串类型哈希编码成整数类型;步骤二:对编码后的rdf数据构建rdfcube(rdf立方体);步骤三:通过建立谓词索引,采用一系列稀疏矩阵的形式来存储rdfcube;步骤四:解析并优化sparql查询语句得到最优的查询计划;步骤五:基于稀疏矩阵的join查询执行,结果输出;整体框架图如图2所示,总共有三个模块:存储模块:包括步骤一、步骤二和步骤三,存储模式是基于稀疏矩阵的形式来存储rdf数据,如图3所示,首先将rdf图数据进行哈希编码,紧接着构建rdf立方体,再通过建立谓词索引来进行稀疏矩阵形式的存储;查询优化模块:包括步骤四,对于一个要进行查询的sparql查询语句,为了得到高效的查询反应结果,需要根据存储模式和查询算法对其进行优化以得到最优的查询计划。我们的优化方案是减少查询过程中产生的所有的中间结果大小,如图4所示,根据查询图的边的大小进行排序,重构查询计划使得中间结果最小,如算法3所示;查询执行:包括步骤五,设计的基于稀疏矩阵乘法的join算法,如算法1和算法2所示,输入一个优化后的查询计划,经过smjoin算法得到最终查询结果;下面结合附图对本发明作进一步详细说明。参见图1,本发明对rdf真实数据的稀疏性分析,在dbpedia数据中(总共42966066个节点),有超过99.41%的节点的最大的度(出度和入度)为43;在yago数据中(总共38734252个节点),超过95.17%的节点的最大的度为39。很明显,在真实世界的rdf数据中,绝大多数的点只和极小一部分的点相关联,整体呈现局部紧凑全局稀疏的特性。参见图2,本发明基于稀疏矩阵的rdf查询处理的整体框架。其中包括存储模块,查询优化模块和查询执行模块。存储模块充分考虑了rdf数据的稀疏性,提出了一种基于稀疏矩阵的数据存储模式;查询优化模块是在保证正确结果的前提下的优化策略,为的是减少查询响应时间;查询执行模块是本发明对rdf数据的查询方法,提出了一种基于稀疏矩阵乘法的join算法。其中,算法1是对于给定的优化后的计划中的每个稀疏矩阵进行join算法运算处理,输出最终查询结果。算法2是给定两个稀疏矩阵执行核心smjoin算法。算法1:查询执行输入:给定的优化后的查询计划q输出:查询结果矩阵表rt对于算法1,描述的是一个包含多个稀疏矩阵进行smjoin操作的sparql查询。输入的是给定的一个经过优化后的查询计划q,先从优化后的查询计划q中取出第一个稀疏矩阵(记为rt)并更新q,然后依次从q中取出下一个稀疏矩阵(记为sptable),两个稀疏矩阵rt和sptable进行smjoin操作,并更新结果至rt,重复的从q中选取下一个稀疏矩阵进行smjoin操作直至q为空。最终的查询结果即为rt。算法2:具体的两个稀疏矩阵执行smjoin算法smjoin(a,b)输入:给定选取的两个稀疏矩阵a和b输出:结果矩阵rt对于算法2,smjoin描述的是算法1中给定的两个稀疏矩阵a和b进行join操作。首先遍历矩阵a的每个非零行,然后对矩阵a中的每个非零行中的每个非零项,从矩阵b中找到与其匹配的非零项,如果满足条件就将其匹配后的结果输出至结果矩阵rt中。最终输出join操作的结果矩阵即为rt。参见图3,本发明的基于稀疏矩阵的存储模块,包括步骤一、步骤二和步骤三,本发明的存储模式是基于稀疏矩阵的形式来存储rdf数据,首先将rdf图数据进行哈希编码,将原始rdf数据的字符串类型编码成整型数串;紧接着对编码后的rdf数据构建一个rdf立方体;最后再通过建立谓词索引来进行稀疏矩阵形式的存储,每一个谓词代表一个稀疏矩阵表,每个表只存储与之相关联的点;参见图4,本发明的查询优化模块的举例,优化方案是减少整体查询过程中产生的中间结果大小。给定一个rdf数据的sparql查询语句,将其解析成一个查询图,然后再根据查询图中每条边的统计数据进行排序,在保证边与边连接的情况下重构查询执行计划。具体查询计划生成算法如算法3所示。算法3:查询计划生成输入:sparql语句所有的边list:l=(e1,e2,…,en)输出:优化后的查询计划q对于算法3,描述的是对一个sparql查询语句进行优化,最终生成最优的查询计划。输入的是一个sparql查询语句,其形式是一个l=(e1,e2,...,en),包含这个查询语句的所有边。首先初始化一个点集合(记为n)来记录选取的边的点,并且按照l中所有的边的统计数据对l进行排序;然后在排序后的查询语句l中选取第一条边加入q中,并将所选取的边的点加入n中,并更新l。只要l不为空,依次循环的从l中选取一条统计数小并且和之前已选边有关联的边(所选边的点∈n)加入q中,并将该所选边的点加入到n中,更新l。这样既保证了有序选取,也保证了每条边与之前的边有关联。最终得到的查询计划q即为最优查询计划。参见下表本发明的实验环境的数据详细参数:#dataset#triples#(s∩o)#pwatdiv100m1089977141025094786watdiv200m2197838422029648386watdiv300m3298274773022181286watdiv400m4394337654004042086watdiv500m5492461414977143386yago2007376553873425246dbpedia120978080429660664282本发明在不同规模的社会关系合成数据集watdiv和两个rdf真实数据集dbpedia和yago上进行查询处理实验。其中,合成数据集watdiv的数据集规模是1亿,2亿,3亿,4亿和5亿左右;dbpedia数据的三元组数量是120978080条,谓词是4282个,主语和宾语的数量有42966066个;yago数据的三元组数量是200737655条,谓词是46个,主语和宾语的数量有38734252个。下面介绍图6的实验环境,本实验使用的机器平台的系统内存是72gb,cpu参数是intel(r)xeon(r)e5-2603v4@1.70ghz。实验比较的查询系统是目前流行的rdf-3x和gstore。参见图5,本发明和其他系统在不同规模的合成数据集watdiv上进行了查询实验比较。对于watdiv数据的查询,我们将其分类成四种查询类型(雪花型:f,线型:l,星型:s和复杂性:c)进行查询分类比较。其中,对于gstore查询方法,查询数据规模只能达到3亿左右。由此实验结果可以看出,对于不同规模的合成数据集,本发明的查询反应时间实验结果在不同类型查询的情况下都明显低于rdf-3x和gstore。参见图6,本发明和其他系统对于真实rdf数据的查询处理的实验效果比较。由图可见,本发明的查询反应时间都明显低于rdf-3x和gstore的查询处理时间。不管是合成数据还是真实数据,本发明针对各种社会关系的查询语句都能够显著的提升查询效率。本发明充分利用了真实社会活动关系数据中的局部关系紧密的特性将数据进行稀疏矩阵模式存储,显著的提升了存储效率,而且缩小了查询的关系范围,加速了查询响应时间。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1