一种RDF的数据存储方法和查询方法技术

技术编号:14861741 阅读:53 留言:0更新日期:2017-03-19 14:45
本发明专利技术涉及一种RDF的数据存储方法和查询方法,其是通过设计面向实体的RDF数据的存储结构和存储映射,将RDF数据的URI和字面量转化为64位二进制数据后按照设计的存储结构进行存储,在查询方法中对SPARQL查询语句进行解析和转化,将SPARQL语句中的多个每个查询三元组根据对整个数据集的分析结果和各个查询间的连接关系,估算单个询代价,最终生成最小代价查询流程,本发明专利技术可以极大的提升数据间比较的速度以及降低存储空间,相比传统的直接将SPARQL转化为SQL进行查询,大幅度提升查询效率,可用于Web数据管理、Web语义检索等领域。

【技术实现步骤摘要】

本专利技术属于Web数据管理
,具体涉及一种降低RDF数据的存储空间、提高SPARQL的查询效率的RDF的数据存储方法和查询方法
技术介绍
RDF(resourcedescriptionframework)是由WWW提出的对万维网(WorldWideWeb)上信息进行描述的一个框架,它为Web上的各种应用提供信息描述规范。RDF用主语S(Subject)、谓词P(Predicate)、宾语O(Object)的三元组形式来描述Web上的资源。其中,主语一般用统一资源标识符URI(UniformResourceIdentifiers)表示Web上的信息实体(或者概念),谓词描述实体所具有的相关属性,宾语为对应的属性值。这样的表述方式使得RDF可以用来表示Web上的任何被标识的信息,并且使得它可以在应用程序之间交换而不丧失语义信息。因此,RDF成为语义数据描述的标准,被广泛应用于元数据的描述、本体及语义网中。随着语义网数据的不断增多,构造高效的存储和查询这些语义网数据的系统成为语义网应用得到普及的一个非常重要的方面,而RDF作为语义网数据的描述基础,因此研究RDF数据的高效存储和查询成为了语义网研究的热点。目前RDF数据的存储方式和优化方式主要有三种。第一种,基于关系数据库的存储方式由于RDF数据可以看成<Subject,Predicate,Object>三元组的集合,因此最自然的方式是使用三元组表来直接存储这些数据。因此许多基于关系数据库的RDF数据存储系统直接使用关系数据库,设计三元组表或者类似的方式来存储RDF数据。该方法的步骤包含:(1)将RDF数据解析成三元组;(2)对三元组中的URI通过MD5(MessageDigestAlgorithm5)哈希进行编码,并截取MD5哈希的前64位作为资源的标识符;(3)在关系型数据库中使用一张3列的表对数据进行存储,并建立相关索引。但是,该方法在进行SPARQL查询时,需要将SPARQL查询语言转化为结构化查询语言SQL进行查询,需要多层的转换操作。由于RDF数据和关系数据有很大的不同,将RDF数据存储在关系数据库表中时,需要进行表间的映射操作。因此降低了存储利用率和查询的效率。第二种,基于本地二进制文件的存储方式RDF文档是能够以一定的格式存储到文件中的,在语义网中,大量的RDF文档就以RDF/XML的形式存在。RDF数据和关系数据在结构上有很大的区别,其描述语法比关系数据库复杂的多,但是使用RDF描述资源是具有较大的灵活性。基于硬盘文件存储RDF文档可以达到更好的存储效率,同时可以保证快速的响应查询,目前已有一些基于硬盘的存储结构的系统设计,这些系统往往借助于数据库普遍釆用的B树、B+树和Hash表技术。但是,基于文件的存储方式开发成本相对较高,并且由于RDF只是基本的语义网数据描述基础,还有如果需要在基本存储结构上支持对数据进行查询推理那就还需要做大量的工作。第三种,基于内存的存储方式随着硬件技术的不断发展,内存也越来越便宜,内存容量也越来越大,构建基于内存的RDF数据存储系统也成为近年来研究的热点。首先内存能够提供相当快的访问速度,可以对数据进行实时的操作,节省磁盘的I/O开销,如果在内存中设计一个存储结构良好的RDF存储系统,可以进一步的提高查询和分析的效率。但是,该方式不适合大规模的RDF数据存储,且目前的方案BRAHMS、BitMat等都不支持SPARQL的直接查询。可见基于内存的RDF存储结构仍然处于不断的研究和完善阶段。
技术实现思路
本专利技术的目的在于克服上述已有技术的不足,提出一种针对RDF学习资源提供一种数据间比较速度快并且降低存储空间的RDF数据存储方法。本专利技术还提供了一种与上述存储方法匹配并且能够快速查询的RDF数据查询方法,从而提高RDF学习资源的检索效率。为了实现上述目的,本专利技术采用的技术方案是:本专利技术RDF数据的存储方法由以下步骤组成:(1)设计面向实体的RDF数据的存储结构(1.1)采用面向实体的方式,将数据存到关系型数据库n行的k列中,其中k为RDF数据中所有主语的谓词数量的平均值,n为所有主语需要的行数line的和,当单个主语的谓词数量sum≤k时,则所需行数line=1;当sum>k时,则进行多行存储,则所需行数line=(sum/k)+1;(1.2)确定k值以后,根据谓词映射算法,将谓词转为列下标,得到一个n行k列的表结构;其中步骤(1.2)的谓词转化为列下标的具体方法为:(1.2.1)用谓词映射算法计算列下标,谓词映射算法的公式为:h1⊕h2...⊕hj(uri)=i,i∈[0,k]]]>式中h1,h2…hj对应为j个hash函数,i为列下标;(1.2.2)当j个hash函数计算完成仍然没有找到空闲的下标时,则开辟新的一行,将该数据存到h1计算的下标中去。(2)设计用于RDF数据的存储映射采用hash算法将RDF数据的URI和字面量分别转化为64位二进制数据,URI取hash算法的高64位,字面量取hash算法的低64位,将转换的二进制数据存储到hash索引表中并对hash索引表中的行进行升序排列,以便查找时通过二分查找算法快速进行映射与转化;(3)RDF数据存储将RDF数据按照步骤(2)的方法进行映射与转换之后,第一次存储到步骤(1)的表结构中,对存储到表结构中数据进行分析,创建分析表S,记录每个Subject和Object包含的三元组个数以及出现频率最高的20个URI和频率最高的20个字面量对应的频率,再按照步骤(1)的表结构,将Object作为存储实体,对存储到表结构中的数据经过步骤(2)的映射与转换之后再进行第二次存储,即完成RDF的数据存储。一种与上述的RDF数据存储方法匹配的RDF数据查询方法,其是由以下步骤组成:(a.1)变量的提取与转化将SPARQL查询语句中的三元组基本图模式进行分解,并确定查询语句中的变量个数为count,对查询语句中的URI和字面量分别参照存储方法中的步骤(2)中的映射方式将其转化为64位二进制数据,对所包含的变量进行-1到-count的赋值;(a.2)基本查询图模式的转化根据步骤(a.1)中的三元组基本图模式分解结果,将每个基本图模式转化为三元组查询节点结构,其中三元组查询节点结构为:本文档来自技高网
...

【技术保护点】
一种RDF数据存储方法,其特征在于由以下步骤组成:(1)设计面向实体的RDF数据的存储结构(1.1)采用面向实体的方式,将数据存到关系型数据库n行的k列中,其中k为RDF数据中所有主语的谓词数量的平均值,n为所有主语需要的行数line的和,当单个主语的谓词数量sum≤k时,则所需行数line=1;当sum>k时,则进行多行存储,则所需行数line=(sum/k)+1;(1.2)确定k值以后,根据谓词映射算法,将谓词转为列下标,得到一个n行k列的表结构;(2)设计用于RDF数据的存储映射采用hash算法将RDF数据的URI和字面量分别转化为64位二进制数据,URI取hash算法的高64位,字面量取hash算法的低64位,将转换的二进制数据存储到hash索引表中并对hash索引表中的行进行升序排列,以便查找时通过二分查找算法快速进行映射与转化;(3)RDF数据存储将RDF数据按照步骤(2)的方法进行映射与转换之后,第一次存储到步骤(1)的表结构中,对存储到表结构中数据进行分析,创建分析表S,记录每个Subject和Object包含的三元组个数以及出现频率最高的20个URI和频率最高的20个字面量对应的频率,再按照步骤(1)的表结构,将Object作为存储实体,对存储到表结构中的数据经过步骤(2)的映射与转换之后再进行第二次存储,即完成RDF的数据存储。...

【技术特征摘要】
1.一种RDF数据存储方法,其特征在于由以下步骤组成:
(1)设计面向实体的RDF数据的存储结构
(1.1)采用面向实体的方式,将数据存到关系型数据库n行的k列中,其
中k为RDF数据中所有主语的谓词数量的平均值,n为所有主语需要的行数line
的和,当单个主语的谓词数量sum≤k时,则所需行数line=1;当sum>k时,
则进行多行存储,则所需行数line=(sum/k)+1;
(1.2)确定k值以后,根据谓词映射算法,将谓词转为列下标,得到一个n
行k列的表结构;
(2)设计用于RDF数据的存储映射
采用hash算法将RDF数据的URI和字面量分别转化为64位二进制数据,
URI取hash算法的高64位,字面量取hash算法的低64位,将转换的二进制
数据存储到hash索引表中并对hash索引表中的行进行升序排列,以便查找时
通过二分查找算法快速进行映射与转化;
(3)RDF数据存储
将RDF数据按照步骤(2)的方法进行映射与转换之后,第一次存储到步
骤(1)的表结构中,对存储到表结构中数据进行分析,创建分析表S,记录每
个Subject和Object包含的三元组个数以及出现频率最高的20个URI和频率最
高的20个字面量对应的频率,再按照步骤(1)的表结构,将Object作为存储
实体,对存储到表结构中的数据经过步骤(2)的映射与转换之后再进行第二次
存储,即...

【专利技术属性】
技术研发人员:袁柳张鸿洋翟梅
申请(专利权)人:陕西师范大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1