当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于spark的大规模知识图谱语义查询方法技术

技术编号:16379726 阅读:523 留言:0更新日期:2017-10-15 13:43
本发明专利技术公开了一种基于spark大规模知识图谱语义查询方法,包括:(1)将每一个三元组中的实体、关系分别替换成为相应的id;(2)基于类别与关系构建分层的子图索引,并将其存储于hdfs文件中;(3)将sparql查询所涉及到的操作通过spark操作元语进行翻译;(4)根据每个三元组模式的特征分配不同的得分函数,确定sparql查询中每个三元组模式的执行顺序;(5)根据三元组模式的执行顺序、spark操作元语执行查询与链接,并将其链接结果通过映射表进行解析后返回。本发明专利技术支持海量语义数据的高效查询,具有很强的扩展性,对基于大规模语义数据的查询应用具有很好的实用价值。

A semantic query method for large scale knowledge mapping based on spark

The invention discloses a query method, spark based on semantic knowledge map scale includes: (1) each three tuple entity, respectively replaces the corresponding ID; (2) subgraph index categories and related constructs based on the hierarchical, and stored in the HDFS file (3); the SPARQL query is involved in the operation of operation by spark yuan language translation; (4) according to the characteristics of each of the three tuple pattern distribution of different scoring functions, determine the order of execution of each SPARQL query in three tuple model; (5) according to the three tuple model execution sequence, spark operation primitives execute queries and links, and link it results through the analysis on the mapping table after return. The invention supports efficient query of massive semantic data, has strong expansibility, and has good practical value for query application based on large-scale semantic data.

【技术实现步骤摘要】
一种基于spark的大规模知识图谱语义查询方法
本专利技术涉及计算机存储查询技术,具体涉及一种基于spark的大规模知识图谱语义查询方法。
技术介绍
随着语义Web的快速发展,语义数据量呈现爆炸性增长,大量的以RDF格式的语义数据被学术界与工业界的研究人员所发布。例如google的知识图谱就有超过6亿个实体和200亿条事实(2012年),wikidata项目也包含了超过2000万千万个page,每个page包含大量的三元组事实,YAGO和DBPedia也包含了超过亿条记录,开放关联数据(LinkedOpenData,LOD)项目更是发布了超过2700个数据源,包含总共超过1300亿的RDF三元组(2016年)。如何在大规模RDF知识图谱上有效地存储查询是众多研究者面临的棘手问题,而这也一直被认为是制约语义Web相关技术发展的瓶颈。sparql查询语言是W3C标准的RDF查询语言,它由多个查询模式组成,每一个查询模式也是一个三元组,包含了若干变量。传统的基于RDF的存储查询引擎通过构建主谓宾的排列索引取得查询性能的提升,但同时这也会耗用大量的存储空间,并且大部分的这些引擎都是基于单机的,可扩展性较差,仅适合于小规模RDF数据的存储查询,面对当前海量的语义数据,存在计算性能和可扩展性不足等问题。已有的少量分布式处理引擎如hadoopRDF,虽然借助于分布式平台部分解决了可扩展性问题,但由于sparql查询的迭代执行特点,其性能仍然收到很大约束,不能满足大规模语义数据查询的实时性要求,因此其实用性收到很大制约,迫切需要一个面对海量语义数据的高性能存储查询引擎来改变这种困境。
技术实现思路
有鉴于此,本专利技术提供了一种基于spark的大规模知识图谱语义查询方法。相比其他方法,本专利技术实现了通过构造合适的索引策略和引入分布式内存的迭代查询优化方法取得了性能的提升,具备很强的实用价值,可以对大规模知识图谱进行有效的查询。一种基于spark的大规模知识图谱语义查询方法,包括以下步骤:(1)将数据中的每一个实体和关系分配一个单独的id,构建相应的映射表;然后根据映射表将遍历数据集中的每一个三元组中的实体、关系分别替换成为相应的id,形成新三元组;(2)在spark上,基于类别对象与关系对象构建分层的子图索引,并将该子图索引存储于hdfs文件中;(3)将sparql查询所涉及到的操作通过spark操作元语进行翻译;(4)解析sparql查询语句,根据每个三元组模式的特征分配不同的得分函数,确定sparql查询中每个三元组模式的执行顺序;(5)根据三元组模式的执行顺序、spark操作元语执行sparql查询与链接,返回最后链接结果;(6)将返回的最后链接结果通过映射表进行解析,将解析后的结果作为查询执行结果。步骤(1)中,新三元组中的实体与关系都替换成了自己对应的id,这样不仅可以大大减少分布式存储数据量,还可以有效地提高后期分布式查询join的效率。所述步骤(2)的具体步骤为:首先,分别为每一个类别对象和关系对象构建一个索引表,得到类别索引表和关系索引表,且该类别索引表和关系索引表组成第一层索引表;然后,基于类别索引表、关系索引表的链接操作构建类别-关系索引表和关系-类别索引表,并将该类别-关系索引表和关系-类别索引表组成第二层索引表;接下来,基于类别-关系索引表和关系-类别索引表的链接操作构建类别-关系-类别表,将其作为第三层索引表;最后,将第一层索引表、第二层索引表以及第三次索引表以文件的形式存储在hdfs分布式文件系统中,文件名和索引表名称一致。本专利技术方法扩展了传统的垂直分区方法,构建基于类别对象和关系对象的分层子图索引,可以以较少的索引存储代价保证索引的高效性,保证查询执行的实时性。步骤(3)中,将sparql查询操作翻译为spark操作元语,这种操作元语包括:transformation元语和action元语;其中,transformation元语包括:Generate元语:生成一个分布式内存对象;filter元语:根据查询条件过滤相关数据;prepartition元语:采用预分区的方法存储索引;以及join元语:将两个分布式内存对象进行连接操作;在执行sparql查询的时候会用到以上两种元语。步骤(4)中,所述根据每个三元组模式的特征分配不同的得分函数的分配原则为:三元组模式仅包含一个变量,得分为5;三元组模式包含一个变量且主语和谓语的类型确定,得分为4;三元组模式包含一个变量且主语和谓语的类型不确定,得分为3;三元组模式包含两个变量,得分为2。所述步骤(5)的具体步骤为:(a)启动spark进程,通过generate元语初始化一个分布式内存抽象块;(b)判断当前未被选择的查询三元组模式池是否为空,若是,执行步骤(e),若否,执行步骤(c);(c)在当前未被选择的查询三元组模式池中选择当前得分最高的三元组模式,按照三元组模式的类型选择相应的索引表,并执行翻译操作,得出该三元组模式的查询结果,并将该三元组模式标记为已选择;(d)将当前查询结果和上一次查询结果进行join操作,并跳转执行步骤(b);(e)将上一次的链接结果作为最后链接结果返回。步骤(c)中,所述的三元组模式的类型是指sparql查询的类型。传统的语义存储查询方法都是针对单机的,无法扩展和应用到目前大规模的语义数据中去;而本专利技术基于spark的分布式语义查询方法利用了分布式内存优势,同时通过设计合理的索引策略可以有效处理大规模的语义数据,具体优势体现如下:(1)本专利技术设计了分层的子图索引方法,大大减少了索引的存储大小,同时保证了查询执行的高效性。(2)本专利技术采用了一种基于查询模式选择性的策略优化了查询时的执行策略,可以大大降低中间结果的生成量,同时通过分布式内存的迭代连接大大降低了io操作,有效提高了存储查询处理速度。(3)本专利技术采用了spark进行sparql查询的解析优化,提出了sparql查询的翻译解析方法,可以利用分布式内存的优势大大加快语义查询的效率。附图说明图1是本专利技术基于spark的大规模知识图谱语义查询方法的流程图;图2是本专利技术分布式迭代查询的流程图。具体实施方式为了更为具体地描述本专利技术,下面结合附图及具体实施方式对本专利技术的技术方案进行详细说明。如图1所示,本实施例基于基于spark的大规模知识图谱语义查询方法包括以下:S01,将数据集中的每一个三元组中的实体、关系分别替换成为相应的id,形成新三元组。本步骤具体为:通过标准的RDF存储查询benchmarkLUBM来生成大规模的语义数据;然后,部署一个预处理器,分配独特的id给所有实体和关系,构建相应的映射表;最后,根据映射表,将遍历数据集中的每一个三元组中的实体、关系替换为相应的id,得到新三元组;本步骤这样做不仅可以大大减少分布式存储数据量,还可以有效地提高后期分布式查询join的效率。S02,在spark上,基于类别对象与关系对象构建分层的子图索引,并将该子图索引存储于hdfs文件中。本步骤具体为:首先,遍历所有的新三元组数据,得到所有的类别和关系,并为每一个类别、关系构建一个索引表,分别称为类别索引表和关系索引表,且该类别索引表和关系索引表组成第一层索引表;表1所示的是本文档来自技高网
...
一种基于spark的大规模知识图谱语义查询方法

【技术保护点】
一种基于spark的大规模知识图谱语义查询方法,包括以下步骤:(1)将数据中的每一个实体和关系分配一个单独的id,构建相应的映射表;然后根据映射表将遍历数据集中的每一个三元组中的实体、关系分别替换成为相应的id,形成新三元组;(2)在spark上,基于类别对象与关系对象构建分层的子图索引,并将该子图索引存储于hdfs文件中;(3)将sparql查询所涉及到的操作通过spark操作元语进行翻译;(4)解析sparql查询语句,根据每个三元组模式的特征分配不同的得分函数,确定sparql查询中每个三元组模式的执行顺序;(5)根据三元组模式的执行顺序、spark操作元语执行sparql查询与链接,返回最后链接结果;(6)将返回的最后链接结果通过映射表进行解析,将解析后的结果作为查询执行结果。

【技术特征摘要】
1.一种基于spark的大规模知识图谱语义查询方法,包括以下步骤:(1)将数据中的每一个实体和关系分配一个单独的id,构建相应的映射表;然后根据映射表将遍历数据集中的每一个三元组中的实体、关系分别替换成为相应的id,形成新三元组;(2)在spark上,基于类别对象与关系对象构建分层的子图索引,并将该子图索引存储于hdfs文件中;(3)将sparql查询所涉及到的操作通过spark操作元语进行翻译;(4)解析sparql查询语句,根据每个三元组模式的特征分配不同的得分函数,确定sparql查询中每个三元组模式的执行顺序;(5)根据三元组模式的执行顺序、spark操作元语执行sparql查询与链接,返回最后链接结果;(6)将返回的最后链接结果通过映射表进行解析,将解析后的结果作为查询执行结果。2.如权利要求1所述的基于spark的大规模知识图谱语义查询方法,其特征在于,所述的步骤(2)的具体步骤为:首先,分别为每一个类别对象和关系对象构建一个索引表,得到类别索引表和关系索引表,且该类别索引表和关系索引表组成第一层索引表;然后,基于类别索引表、关系索引表的链接操作构建类别-关系索引表和关系-类别索引表,并将该类别-关系索引表和关系-类别索引表组成第二层索引表;接下来,基于类别-关系索引表和关系-类别索引表的链接操作构建类别-关系-类别表,将其作为第三层索引表;最后,将第一层索引表、第二层索引表以及第三次索引表以文件的形式存储在hdfs分布式文件系统中,文件名和索引表名称一致。3.如权利要求1所述的基于spark的大...

【专利技术属性】
技术研发人员:陈华钧陈曦张宁豫吴朝晖
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

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

1