一种rdf的数据存储方法和查询方法

文档序号:9865605阅读:718来源:国知局
一种rdf的数据存储方法和查询方法
【技术领域】
[0001] 本发明属于Web数据管理技术领域,具体设及一种降低RDF数据的存储空间、提高 SPAR化的查询效率的RDF的数据存储方法和查询方法。
【背景技术】
[0002] RDF(resou;rce description framework)是由WWW提出的对万维网(World Wide Web)上信息进行描述的一个框架,它为Web上的各种应用提供信息描述规范。RDF用主语S (Subject)、谓词P(Predicate)、宾语O(Object)的Ξ元组形式来描述Web上的资源。其中,主 语一般用统一资源标识符URI(Uniform Resource Identifiers)表示Web上的信息实体(或 者概念),谓词描述实体所具有的相关属性,宾语为对应的属性值。运样的表述方式使得RDF 可W用来表示Web上的任--何被标识的信息,并且使得它可W在应用程序之间交换而不丧 失语义信息。因此,RDF成为语义数据描述的标准,被广泛应用于元数据的描述、本体及语义 网中。随着语义网数据的不断增多,构造高效的存储和查询运些语义网数据的系统成为语 义网应用得到普及的一个非常重要的方面,而RDF作为语义网数据的描述基础,因此研究 RDF数据的高效存储和查询成为了语义网研究的热点。目前RDF数据的存储方式和优化方式 主要有Ξ种。
[0003] 第一种,基于关系数据库的存储方式
[0004] 由于畑F数据可W看成〈Subject predicate,Ob ject〉S元组的集合,因此最自然 的方式是使用Ξ元组表来直接存储运些数据。因此许多基于关系数据库的RDF数据存储系 统直接使用关系数据库,设计Ξ元组表或者类似的方式来存储RDF数据。该方法的步骤包 含:(1)将RDF数据解析成Ξ元组;(2)对Ξ元组中的URI通过MD5(Message Digest Algorithm 5)哈希进行编码,并截取MD5哈希的前64位作为资源的标识符;(3)在关系型数 据库中使用一张3列的表对数据进行存储,并建立相关索引。但是,该方法在进行SPARQL查 询时,需要将SPAR化查询语言转化为结构化查询语言SQL进行查询,需要多层的转换操作。 由于RDF数据和关系数据有很大的不同,将RDF数据存储在关系数据库表中时,需要进行表 间的映射操作。因此降低了存储利用率和查询的效率。
[0005] 第二种,基于本地二进制文件的存储方式
[0006] RDF文档是能够W-定的格式存储到文件中的,在语义网中,大量的RDF文档就W RDF/XML的形式存在。RDF数据和关系数据在结构上有很大的区别,其描述语法比关系数据 库复杂的多,但是使用RDF描述资源是具有较大的灵活性。基于硬盘文件存储RDF文档可W 达到更好的存储效率,同时可W保证快速的响应查询,目前已有一些基于硬盘的存储结构 的系统设计,运些系统往往借助于数据库普遍采用的財对、B+树和化sh表技术。但是,基于文 件的存储方式开发成本相对较高,并且由于RDF只是基本的语义网数据描述基础,还有如果 需要在基本存储结构上支持对数据进行查询推理那就还需要做大量的工作。
[0007] 第Ξ种,基于内存的存储方式
[000引随着硬件技术的不断发展,内存也越来越便宜,内存容量也越来越大,构建基于内 存的RDF数据存储系统也成为近年来研究的热点。首先内存能够提供相当快的访问速度,可 W对数据进行实时的操作,节省磁盘的I/O开销,如果在内存中设计一个存储结构良好的 RDF存储系统,可W进一步的提高查询和分析的效率。但是,该方式不适合大规模的RDF数据 存储,且目前的方案BRA歷S、BitMat等都不支持SPAR化的直接查询。可见基于内存的畑F存 储结构仍然处于不断的研究和完善阶段。

【发明内容】

[0009] 本发明的目的在于克服上述已有技术的不足,提出一种针对RDF学习资源提供一 种数据间比较速度快并且降低存储空间的RDF数据存储方法。
[0010] 本发明还提供了一种与上述存储方法匹配并且能够快速查询的RDF数据查询方 法,从而提高RDF学习资源的检索效率。
[0011] 为了实现上述目的,本发明采用的技术方案是:
[0012] 本发明RDF数据的存储方法由W下步骤组成:
[OOU] (1)设计面向实体的畑F数据的存储结构
[0014] (1.1)采用面向实体的方式,将数据存到关系型数据库η行的k列中,其中k为RDF数 据中所有主语的谓词数量的平均值,η为所有主语需要的行数line的和,当单个主语的谓词 数量sum非时,则所需行数line = l;当sum〉k时,则进行多行存储,则所需行数line=(sum/ k)+l;
[0015] (1.2)确定k值W后,根据谓词映射算法,将谓词转为列下标,得到一个η行k列的表 结构;
[0016] 其中步骤(1.2)的谓词转化为列下标的具体方法为:
[0017] (1.2.1)用谓词映射算法计算列下标,谓词映射算法的公式为:
[001 引知 ? /]2... ? /z/'("r/)二 /,/ e [0,足;
[0019] 式中hi,h2...h拥应为j个]lash函数,i为列下标;
[0020] (1.2.2)当j个hash函数计算完成仍然没有找到空闲的下标时,则开辟新的一行, 将该数据存到hi计算的下标中去。
[0021] (2)设计用于RDF数据的存储映射
[0022] 采用hash算法将畑F数据的UR巧日字面量分别转化为64位二进制数据,URI取hash 算法的高64位,字面量取hash算法的低64位,将转换的二进制数据存储到hash索引表中并 对hash索引表中的行进行升序排列,W便查找时通过二分查找算法快速进行映射与转化;
[0023] (3)RDF数据存储
[0024] 将RDF数据按照步骤(2)的方法进行映射与转换之后,第一次存储到步骤(1)的表 结构中,对存储到表结构中数据进行分析,创建分析表S,记录每个Subject和Object包含的 Ξ元组个数W及出现频率最高的20个URI和频率最高的20个字面量对应的频率,再按照步 骤(1)的表结构,将Object作为存储实体,对存储到表结构中的数据经过步骤(2)的映射与 转换之后再进行第二次存储,即完成RDF的数据存储。
[0025] -种与上述的畑F数据存储方法匹配的畑F数据查询方法,其是由W下步骤组成:
[0026] (a. 1)变量的提取与转化
[0027] 将SPAR化查询语句中的Ξ元组基本图模式进行分解,并确定查询语句中的变量个 数为count,对查询语句中的URI和字面量分别参照存储方法中的步骤(2)中的映射方式将 其转化为64位二进制数据,对所包含的变量进行-1到-count的赋值;
[002引(a.2)基本查询图模式的转化
[0029] 根据步骤(a. 1)中的Ξ元组基本图模式分解结果,将每个基本图模式转化为Ξ元 组查询节点结构,其中Ξ元组查询节点结构为:
[0030] Ξ元组查询节点结构
[0031] {
[0032] 节点的Id;
[0033] subject的Id;
[0034] predicate的Id;
[00;35] object 的 Id;
[0036] 存储方式的标识;
[0037] }
[0038] 存储方式的标识选择RDF数据存储方法中步骤(3)的第一次存储或第二次存储;
[0039] 对URI和字面量,sub ject、predicate、object的Id分别为64位二进制数据;对变 量,subject、predicate、object 的 Id 对应为所赋的值;
[0040] (a. 3)查询连接操作的表示
[0041] 根据步骤(a. 1)中基本图模式中所分解的Ξ元组相互进行比较,对存在相同变量 的Ξ元组,W步骤(a. 2)结构中的节点Id为唯一标识符建立连接关系,并将连接关系转化为 连接操作边结构,其中连接操作边结构为:
[0042] 连接操作边结构
[0043] {
[0044] 起始Ξ元组的节点的Id,
[0045] 终止Ξ元组的节点的Id,
[0046] 共同变量的Id
[0047] };
[004引 (a. 4)计算每个查询的查询代价
[0049] 根据步骤(a. 2)中得到的Ξ元组查询节点结构,对步骤(a.3)中得到的连接操作边 结构按照代价算法分别进行代价分析,得到连接操作边结构的代价值为C,代价算法的公式 为:
[0050] TMC(t,m,S)^c
[0051] 其中:t为需要查询的Ξ元组;m为RDF数据存储方法的步骤(3)中第一次存储或第 二次存储;S为分析表;
[0化2] (a. 5)查询计划的生成
[0053] 将步骤(a.4)中获得的所有连接操作边结构的代价值C进行由小到大排序,得到按 代价值排序的节点序列,选取序列中C值最小的节点为开始节点,依次选取序列中的下一个 节点,若节点中的变量未查询,则进行连接查询,直至所有节点中的变量都完成查询,即实 现语句的查询。
[0054] 上述步骤(a. 5)之后还包括步骤(a.6)建立缓存机制,具体为:对用户输入的查询 语句根据步骤(a. 2)中得到的Ξ元组查询节点结构的集合进行hash操作,得到hash函数的 结果值,若缓存列表中存在该值,则直
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1