欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2015109558215
申请人: 陕西师范大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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的数据存储。

2.根据权利要求1所述的面向RDF的数据存储方法,其特征在于:所述步骤(1.2)谓词转化为列下标的方法为:(1.2.1)用谓词映射算法计算列下标,谓词映射算法的公式为:式中h1,h2…hj对应为j个hash函数,i为列下标;

(1.2.2)当j个hash函数计算完成仍然没有找到空闲的下标时,则开辟新的一行,将该数据存到h1计算的下标中去。

3.一种与权利要求1所述的RDF数据存储方法匹配的RDF数据查询方法,其特征在于由以下步骤组成:(a.1)变量的提取与转化

将SPARQL查询语句中的三元组基本图模式进行分解,并确定查询语句中的变量个数为count,对查询语句中的URI和字面量分别参照存储方法中的步骤(2)中的映射方式将其转化为64位二进制数据,对所包含的变量进行-1到-count的赋值;

(a.2)基本查询图模式的转化

根据步骤(a.1)中的三元组基本图模式分解结果,将每个基本图模式转化为三元组查询节点结构,其中三元组查询节点结构为:三元组查询节点结构

{

  节点的Id;

  subject的Id;

  predicate的Id;

  object的Id;

  存储方式的标识;

}

存储方式的标识选择RDF数据存储方法中步骤(3)的第一次存储或第二次存储;

对URI和字面量,subject、predicate、object的Id分别为64位二进制数据;对变量,subject、predicate、object的Id对应为所赋的值;

(a.3)查询连接操作的表示

根据步骤(a.1)中基本图模式中所分解的三元组相互进行比较,对存在相同变量的三元组,以步骤(a.2)结构中的节点Id为唯一标识符建立连接关系,并将连接关系转化为连接操作边结构,其中连接操作边结构为:连接操作边结构

{

  起始三元组的节点的Id,

  终止三元组的节点的Id,

共同变量的Id

};

(a.4)计算每个查询的查询代价

根据步骤(a.2)中得到的三元组查询节点结构,对步骤(a.3)中得到的连接操作边结构按照代价算法分别进行代价分析,得到连接操作边结构的代价值为c,代价算法的公式为:TMC(t,m,S)→c

其中:t为需要查询的三元组;m为RDF数据存储方法的步骤(3)中第一次存储或第二次存储;S为分析表;

(a.5)查询计划的生成

将步骤(a.4)中获得的所有连接操作边结构的代价值c进行由小到大排序,得到按代价值排序的节点序列,选取序列中c值最小的节点为开始节点,依次选取序列中的下一个节点,若节点中的变量未查询,则进行连接查询,直至所有节点中的变量都完成查询,即实现语句的查询。

4.根据权利要求3的RDF数据查询方法,其特征在于所述步骤(a.5)之后还包括步骤(a.6)建立缓存机制,具体为:对用户输入的查询语句根据步骤(a.2)中得到的三元组查询节点结构的集合进行hash操作,得到hash函数的结果值,若缓存列表中存在该值,则直接取出缓存结果反馈给用户;

否则,则重复步骤(a.3)到(a.5),将所得结果存入硬盘中、对应地址标识和hash函数的结果值存入缓存列表中。