论文部分内容阅读
随着语义网技术的快速发展和信息抽取技术的不断进步,对应生成RDF数据的速度也变得越来越快,常见的RDF数据集中包含的三元组条数已达到亿级的数量单位。面对如此规模的RDF数据,如何高效存储和检索这些数据成为亟待解决的问题。如果继续采用传统的方式集中管理大规模RDF数据集则不可避免地会出现局限性的问题,而现存的很多分布式管理方案为了提高查询效率又浪费了过多的存储空间,并且存在不能满足推理查询的问题。所以如何高效存储和检索大规模RDF数据是值得研究的方向。 针对当前存储和检索RDF数据存在的各种不足,本论文首先设计并实现了一种基于HBase的RDF数据与本体数据进行编码后存储的方案;然后设计并实现了SPARQL解析器和针对本论文存储模型的查询算法;最后通过详细的实验过程验证了本论文所提出方案的有效性和正确性。具体包含的研究内容如下: (1)提出了对RDF数据进行MMH编码的方案。经分析发现在RDF数据集中有很多字符串是重复出现的,所以在对比几种Hash算法之后选择了Murmur Hash算法对RDF数据中字符串进行编码,编码之后能够有效减少存储空间。 (2)设计并实现了基于HBase的RDF数据存储方案。首先解析出本体文件中类和属性之间的关系并将其存储到HBase对应的表中,目的是为了保存RDF数据之间隐含的关系,保证存储数据的完整性;结合RDF数据自身存储与查询的特点,在设计过程中充分结合HBase的特点设计出用两张表存储RDF数据的方案,在保证RDF数据查询效率的基础上,尽量减少存储空间。 (3)设计并实现了SPARQL解析器和针对本论文存储模型的查询算法。实现了SPARQL解析器对查询语句进行预处理的操作,完成推理过程保障结果数据的完整性;设计与实现了RDF三元组查询时八种不同形式的TriplePattern查询算法和基于贪心策略的BGP推理查询算法,贪心选择执行代价最小的中间结果集优先合并来缩减Spark连接操作时间,提高查询效率。 (4)实验验证本论文所提出的存储和查询方案的有效性与正确性,并与其他方案进行对比实验分析。针对本论文所提出的RDF数据存储和查询方案,利用六种不同规模的LUBM数据集和八种不同的SPARQL查询语句详细测试数据存储空间、加载时间和查询时间。并且与其他管理RDF数据的方案进行对比实验,最终得出本论文所提方案有效且正确的结论。