大规模语义数据路径查询的方法

文档序号:6355737阅读:312来源:国知局
专利名称:大规模语义数据路径查询的方法
技术领域
本发明涉及基于MapReduce编程框架地图的路径搜索技术领域,尤其涉及了一种 大规模语义数据路径查询的方法。
背景技术
海量数据是互联网发展的必然结果,而大规模的将现有数据语义化则是信息时代 的必然需求。现在已经有不少较大的语义数据云,提供大量的语义化的数据及其应用服务。关联关系则是语义网的核心。那么,查询得到语义关联关系则是语义网应用领域 的一个非常重要的工作,特别是医学、生物领域。数据查询是利用现有数据进行开发利用的 一个不可避免的步骤。现在的查询语言只做到一般规模数据的普通查询和路径查询,其中,路径查询只 能得到处于整个路径链上的起点和终点的本体,没有给出这条路径具体是什么,即这两个 本体是通过怎样的属性链一步步连接起来的。随着语义数据的增加,处理大规模语义数据的方法也需要解决。MapReduce作为一 种高效地并行处理大规模数据的编程框架在很多领域上都获得了应用。

发明内容
本发明针对现有技术中的路径查询只能得到处于整个路径链上的起点和终点的 本体,无法看到整个具体路径的缺点,提供了一种采用了 MapReduce的编程模型,不同于现 有的路径查询,只返回该路径上的起点和终点两个端点;而是返回该路径上的所有点,并且 按一定的规则排序,方便用户看到整个路径,了解这些点是怎么连接起来的大规模语义数 据路径查询的方法。为了解决上述技术问题,本发明通过下述技术方案得以解决大规模语义数据路径查询的方法,包括下列步骤步骤A 需要定制查询路径的模式a 查询路径的语法查询路径表达式为基于本体的属性而非字符的正则表达式, 该路径表达式基本能够满足查询需求;b 路径评估路径按照难易程度分为以下两种简单路径路径表达式只包含连接(sequence)、取反(reverse)和{η},即路径长 度固定;复杂路径路径表达式中包含*,?,{},即该路径的长度可变;步骤B 分析路径表达式,将路径表达式进行拆分所述的简单路径需要将路径表达式分成几个更简单的表达式,然后将其join(求 交),连接起来,过程中需要迭代,如果其中间结果不满足路径条件,不作为最终结果;所述的复杂路径需要迭代,输出相应的结果;步骤C =MapReduce工作步骤
c 准备工作将原路径表达式和分析好的路径表达式链记录;链记录记录原路径 表达式和分析好的路径表达式,分析好的路径表达式,类似于一个状态转移图,用于后面判 断路径是否符合原路径表达式。d =MapReduce的Mapper读入数据,其中以语义数据三元组中的Ob ject (宾语)和 Subject (主语)作为<key,value〉中的key,以其关联关系的属性链及宾语作为value,分 发数据;Mapper是MapReduce编程框架中的映射函数。e Reducer (MapReduce中的化简函数)接收数据后,根据拆分好的路径,对数 据进行join操作,得到根据路径连接起来的本体链;join操作有两个本体实例,当第 一个的Object和第二个本体的Subject相同,则这两个本体可以做一个连接操作。如 alice friend bob, bob friend Lily.那么就有 Alice: friend bob: friend Lily。f:重复步骤d和e,直到不会在产生新的根据路径连接起来的本体链,有区别的是 在迭代的过程中,要将拆分好的路径链按照最初的路径表达式再一步步连接起来,恢复成 原来的路径或与之等价的路径;本体链Alice:knowsBob:knows Lily, Alice认识Bob,Bob 认识Lily就构成一个本体链,即由一串有关联关系组成的本体。g:根据路径,输出结果。作为优选,所述的步骤d中的MapReduce的Mapper读入数据过程中,若读入的三 元组数据〈subject,property,object>中的property在查询的路径表达式中有取反操作, 则要新加一组三元组数据〈object,"property, subject),即将原来的三元组的主语和宾语 交换,同时对property (属性)取反。方法中涉及到相关的名词解释路径表达式——正则表达式、元字符在计算机科学中,正则表达式就是用某种模式去匹配一类字符串的一个公式,一 个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器 或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程 序设计语言都支持利用正则表达式进行字符串操作。元字符,是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前 导字符(即位于元字符前面的字符)在目标对象中的出现模式。语义数据模型——本体、属性本体模型更像是一种类和对象的模型。数据模型在这里被表达为类及其属性,而 数据则表达为本体实例。编程模型-MapReduceMapReduce是用于大规模数据集(大于1TB)的并行计算。实现是指定一个Map (映 射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce (化简)函数,用 来保证所有映射的键值对中的每一个共享相同的键组。包括以下两部分a)映射(Map)对一些独立元素组成的概念上的列表(例如,一个测试成绩的列 表)的每一个元素进行指定的操作。b)化简(Reduce)对一个列表的元素进行适当的合并。本发明由于采用了以上技术方案,具有显著的技术效果1、本方法采用了 MapReduce的编程模型,可以处理海量数据,从返回结果上,不仅告诉用户,位于路径两端的两个本体是什么,更关键的是关心了具体这两个本体是怎么连 接起来的,让用户清晰的看到这条链上的所有有关联的本体;2、给出了路径查询结果的一个排序,能让用户更方便快捷的看到想要的第一结


图1是本发明的流程示意图。
具体实施例方式下面结合附图1与实施例对本发明作进一步详细描述实施例1大规模语义数据路径查询的方法,如图1所示,包括下列步骤步骤A 需要定制查询路径的模式a 查询路径的语法查询路径表达式为基于本体的属性而非字符的正则表达式, 该路径表达式基本能够满足查询需求;b 路径评估路径按照难易程度分为以下两种简单路径路径表达式只包含连接(sequence)、取反(reverse)和{η},即路径长 度固定;复杂路径路径表达式中包含*,?,{},即该路径的长度可变;步骤B 分析路径表达式,将路径表达式进行拆分所述的简单路径需要将路径表达式分成几个更简单的表达式,然后将其join (求 交),连接起来,过程中需要迭代,如果其中间结果不满足路径条件,不作为最终结果;所述的复杂路径需要多次迭代,输出相应的结果;步骤C =MapReduce工作步骤c 准备工作将原路径表达式和分析好的路径表达式链记录;链记录记录原路径 表达式和分析好的路径表达式,分析好的路径表达式,类似于一个状态转移图,用于后面判 断路径是否符合原路径表达式。d =MapReduce的Mapper读入数据,其中以语义数据三元组中的Ob ject (宾语)和 Subject (主语)作为<key,value〉中的key,以其关联关系的属性链及宾语作为value,分 发数据;Mapper是MapReduce编程框架中的映射函数。e Reducer (MapReduce中的化简函数)接收数据后,根据拆分好的路径,对数 据进行join操作,得到根据路径连接起来的本体链;join操作有两个本体实例,当第 一个的Object和第二个本体的Subject相同,则这两个本体可以做一个连接操作。如 alice friend bob, bob friend Lily.那么就有 Alice: friend bob: friend Lily。f:重复步骤d和e,直到不会在产生新的根据路径连接起来的本体链,有区别的是 在迭代的过程中,要将拆分好的路径链按照最初的路径表达式再一步步连接起来,恢复成 原来的路径或与之等价的路径;本体链Alice:knowsBob:knows Lily, Alice认识Bob,Bob 认识Lily就构成一个本体链,即由一串有关联关系组成的本体。g:根据路径,输出结果。
所述步骤d中的MapReduce的Mapper读入数据过程中,若读入的三元组数据 〈subject,property,object〉中的property在查询的路径表达式中有取反操作,则要新加 一组三元组数据〈object,"property, subject),即将原来的三元组的主语和宾语交换,同 时对property (属性)取反。本发明具体实施过程如下定义一个属性叫friend,alice:friend bob表示alice是bob的朋友。如果我们 要找到alice的所有朋友,和她的朋友的朋友,即她的朋友圈,那么我们的路径表达式应该 是alicMfriend+ X,其中? χ就是我们所要找的人,当我们把数据按照〈key value〉分 发出去。原输入数据alicefriend bob ;alicefriend Lucy ;bobfriend Lily ; bobfriend torn ;分发数据<(alice,bob), ( friend bob)>, < (alice, Lucy), (: friend Lucy)>,
<(bob,Lily),(: friend, Lily) >,< (bob, torn),(: friend, torn)〉·其中前两个即 < (alice, bob), (: friend bob) >,< (alice, Lucy), (: friend Lucy)> 被分至Ij一个 Reducer,后两个
<(bob, Lily), (: friend, Lily) >, < (bob, torn), (: friend,torn) > 被分到一个 Reducer。这两 个Reducer分别得到aliCe的朋友,和bob的朋友。然后将结果迭代,重新分发,分到同一 个Reducer,通过key 值查找进行 jion操作,得到 < (alice,bob), ( friend bob) >,< (alice, Lily),(: friend,bob ;: friend,Lily)>,< (alice,Lucy),(:friend Lucy)>,<(alice,torn), (friend bob - friend torn) >。从而我们得到alice的朋友及朋友的朋友,bob,Lily,Lucy, torn,并且知道她们是通过什么人联系起来的。本发明由于采用了 MapReduce的编程模型,可以处理海量数据,从返回结果上,不 仅告诉用户,位于路径两端的两个本体是什么,更关键的是关心了具体这两个本体是怎么 连接起来的,让用户清晰的看到这条链上的所有有关联的本体;给出了路径查询结果的一 个排序,能让用户更方便快捷的看到想要的第一结果。总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等 变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.大规模语义数据路径查询的方法,其特征在于,包括下列步骤 步骤A 需要定制查询路径的模式a 查询路径的语法查询路径表达式为基于本体的属性而非字符的正则表达式,该路 径表达式基本能够满足查询需求;b 路径评估路径按照难易程度分为以下两种简单路径路径表达式只包含连接(sequence)、取反(reverse)和{η},即路径长度固定;复杂路径路径表达式中包含*,?,{},即该路径的长度可变; 步骤B 分析路径表达式,将路径表达式进行拆分所述的简单路径需要将路径表达式分成几个更简单的表达式,然后将其join (求交), 连接起来,过程中需要迭代,如果其中间结果不满足路径条件,不作为最终结果; 所述的复杂路径需要迭代,输出相应的结果; 步骤C =MapReduce工作步骤c 准备工作将原路径表达式和分析好的路径表达式链记录;d =MapReduce的Mapper读入数据,其中以语义数据三元组中的Ob ject (宾语)和 Subject (主语)作为<key,value〉中的key,以其关联关系的属性链及宾语作为value,分 发数据;e -Reducer接收数据后,根据拆分好的路径,对数据进行join操作,得到根据路径连接 起来的本体链;f 重复步骤d和e,直到不会在产生新的根据路径连接起来的本体链,有区别的是在迭 代的过程中,要将拆分好的路径链按照最初的路径表达式再一步步连接起来,恢复成原来 的路径或与之等价的路径; g:根据路径,输出结果。
2.根据权利要求1所述的大规模语义数据路径查询的方法,其特征在于所述的 步骤d中的MapReduce的Mapper读入数据过程中,若读入的三元组数据〈subject, property, object〉中的property在查询的路径表达式中有取反操作,则要新加一组三 元组数据〈object,"property, subject),即将原来的三元组的主语和宾语交换,同时对 property (属性)取反。
全文摘要
本发明涉及基于MapReduce编程框架地图的路径搜索技术领域,公开了一种大规模语义数据路径查询的方法,本发明通过基于MapReduce的编程框架,采用流行的图的路径查询排序的算法,完成大规模语义数据的关系路径的查询。本发明有效地实现了语义数据关系路径在数量级很大的情况下,路径查询也能很快进行,从返回结果上,不仅告诉用户,位于路径两端的两个本体是什么,更关键的是关心了具体这两个本体是怎么连接起来的,让用户清晰的看到这条链上的所有有关联的本体。
文档编号G06F17/30GK102129457SQ201110056579
公开日2011年7月20日 申请日期2011年3月9日 优先权日2011年3月9日
发明者吴朝晖, 梁欣颖, 陈华钧 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1