CN107247738A - 一种基于spark的大规模知识图谱语义查询方法 - Google Patents
一种基于spark的大规模知识图谱语义查询方法 Download PDFInfo
- Publication number
- CN107247738A CN107247738A CN201710326554.4A CN201710326554A CN107247738A CN 107247738 A CN107247738 A CN 107247738A CN 201710326554 A CN201710326554 A CN 201710326554A CN 107247738 A CN107247738 A CN 107247738A
- Authority
- CN
- China
- Prior art keywords
- concordance list
- spark
- relation
- triple
- classification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于spark大规模知识图谱语义查询方法,包括:(1)将每一个三元组中的实体、关系分别替换成为相应的id;(2)基于类别与关系构建分层的子图索引,并将其存储于hdfs文件中;(3)将sparql查询所涉及到的操作通过spark操作元语进行翻译;(4)根据每个三元组模式的特征分配不同的得分函数,确定sparql查询中每个三元组模式的执行顺序;(5)根据三元组模式的执行顺序、spark操作元语执行查询与链接,并将其链接结果通过映射表进行解析后返回。本发明支持海量语义数据的高效查询,具有很强的扩展性,对基于大规模语义数据的查询应用具有很好的实用价值。
Description
技术领域
本发明涉及计算机存储查询技术,具体涉及一种基于spark的大规模 知识图谱语义查询方法。
背景技术
随着语义Web的快速发展,语义数据量呈现爆炸性增长,大量的以 RDF格式的语义数据被学术界与工业界的研究人员所发布。例如google 的知识图谱就有超过6亿个实体和200亿条事实(2012年),wikidata项目 也包含了超过2000万千万个page,每个page包含大量的三元组事实, YAGO和DBPedia也包含了超过亿条记录,开放关联数据(Linked OpenData,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存储查询benchmark LUBM来生成 大规模的语义数据;然后,部署一个预处理器,分配独特的id给所有实体 和关系,构建相应的映射表;最后,根据映射表,将遍历数据集中的每一 个三元组中的实体、关系替换为相应的id,得到新三元组;本步骤这样做 不仅可以大大减少分布式存储数据量,还可以有效地提高后期分布式查询 join的效率。
S02,在spark上,基于类别对象与关系对象构建分层的子图索引,并 将该子图索引存储于hdfs文件中。
本步骤具体为:
首先,遍历所有的新三元组数据,得到所有的类别和关系,并为每一 个类别、关系构建一个索引表,分别称为类别索引表和关系索引表,且该 类别索引表和关系索引表组成第一层索引表;表1所示的是以Benchmark 数据集LUBM为例建立的第一层索引表;
表1
然后,基于类别索引表、关系索引表的链接操作构建类别-关系索引 表和关系-类别索引表,并将该类别-关系索引表和关系-类别索引表组成第 二层索引表,如表2所示;
表2
接下来,基于类别-关系索引表和关系-类别索引表的链接操作构建类 别-关系-类别表,将其作为第三层索引表,如表3所示。
表3
最后,将第一层索引表、第二层索引表以及第三次索引表以文件的形 式存储在hdfs分布式文件系统中,文件名和索引表名称一致。
S03,将sparql查询所涉及到的操作通过spark操作元语进行翻译。
本步骤中,设计了几个对应的操作元语,包括:Generate(生成一个 分布式内存对象)、Filter(根据查询条件过滤相关数据)、Prepartition(采 用预分区的方法存储索引)以及Join(将两个分布式内存对象进行连接操 作)。
S04,解析sparql查询语句,根据每个三元组模式的特征分配不同的 得分函数,以确定sparql查询中每个三元组模式的执行顺序。
本步骤中,采用的是基于贪婪算法的查询算法以确定sparql每个查询 模式的执行顺序,具体说来,根据每个查询模式的限制性强度来分配不同 的得分函数,如果模式的限制性越强,也就是说这个模式对应的查询结果 越小,分配越高的得分,以便这些查询能够优先被处理,这将会大大减少 中间结果的生成,提高查询效率。
具体的分配原则为:
查询模式仅包含一个变量,得分为5;
查询模式包含一个变量且主语和谓语的类型确定,得分为4;
查询模式包含一个变量且主语和谓语的类型不确定,得分为3;
查询模式包含两个变量,得分为2。
S05,根据三元组模式的执行顺序、spark操作元语执行sparql查询与 链接,返回最后链接结果。
S05的过程如图2所示,具体为:
(a)启动spark进程,通过generate元语初始化一个分布式内存抽象 块;
(b)判断当前未被选择的查询三元组模式池是否为空,若是,执行 步骤(e),若否,执行步骤(c);
(c)在当前未被选择的查询三元组模式池中选择当前得分最高的三 元组模式,按照三元组模式的类型选择相应的filter函数,并执行过滤操 作,得出该三元组模式的查询结果,并将该三元组模式标记为已选择;
(d)将当前查询结果和上一次查询结果进行join操作,并跳转执行 步骤(b);
(e)将上一次的链接结果作为最后链接结果返回。
S06,将返回的最后链接结果通过映射表进行解析,将解析后的结果 作为查询执行结果。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详 细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制 本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等, 均应包含在本发明的保护范围之内。
Claims (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的大规模知识图谱语义查询方法,其特征在于,所述操作元语包括:transformation元语和action元语。
4.如权利要求3所述的基于spark的大规模知识图谱语义查询方法,其特征在于,所述transformation元语包括:
Generate元语:生成一个分布式内存对象;
filter元语:根据查询条件过滤相关数据;
prepartition元语:采用预分区的方法存储索引;以及
join元语:将两个分布式内存对象进行连接操作。
5.如权利要求1所述的基于spark的大规模知识图谱语义查询方法,其特征在于,所述根据每个三元组模式的特征分配不同的得分函数的分配原则为:
三元组模式仅包含一个变量,得分为5;
三元组模式包含一个变量且主语和谓语的类型确定,得分为4;
三元组模式包含一个变量且主语和谓语的类型不确定,得分为3;
三元组模式包含两个变量,得分为2。
6.如权利要求1所述的基于spark的大规模知识图谱语义查询方法,其特征在于,所述步骤(5)的具体步骤为:
(a)启动spark进程,通过generate元语初始化一个分布式内存抽象块;
(b)判断当前未被选择的查询三元组模式池是否为空,若是,执行步骤(e),若否,执行步骤(c);
(c)在当前未被选择的查询三元组模式池中选择当前得分最高的三元组模式,按照三元组模式的类型选择相应的索引表,并执行翻译操作,得出该三元组模式的查询结果,并将该三元组模式标记为已选择;
(d)将当前查询结果和上一次查询结果进行join操作,并跳转执行步骤(b);
(e)将上一次的链接结果作为最后链接结果返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710326554.4A CN107247738B (zh) | 2017-05-10 | 2017-05-10 | 一种基于spark的大规模知识图谱语义查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710326554.4A CN107247738B (zh) | 2017-05-10 | 2017-05-10 | 一种基于spark的大规模知识图谱语义查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107247738A true CN107247738A (zh) | 2017-10-13 |
CN107247738B CN107247738B (zh) | 2019-09-06 |
Family
ID=60017033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710326554.4A Active CN107247738B (zh) | 2017-05-10 | 2017-05-10 | 一种基于spark的大规模知识图谱语义查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107247738B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659292A (zh) * | 2019-09-21 | 2020-01-07 | 北京海致星图科技有限公司 | 一种基于Spark和Ignite的分布式实时图构建和查询的方法及系统 |
CN110909111A (zh) * | 2019-10-16 | 2020-03-24 | 天津大学 | 基于知识图谱rdf数据特征的分布式存储与索引方法 |
CN110990426A (zh) * | 2019-12-05 | 2020-04-10 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN111639082A (zh) * | 2020-06-08 | 2020-09-08 | 成都信息工程大学 | 基于Ceph的十亿级节点规模知识图谱的对象存储管理方法及系统 |
CN112732933A (zh) * | 2021-01-08 | 2021-04-30 | 中国电子科技集团公司第二十八研究所 | 一种海量知识图谱分布式管理与查询方法 |
CN113157947A (zh) * | 2021-05-20 | 2021-07-23 | 中国工商银行股份有限公司 | 知识图谱的构建方法、工具、装置和服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402599A (zh) * | 2011-11-17 | 2012-04-04 | 天津大学 | 大规模语义知识库的动态维护系统 |
CN105868313A (zh) * | 2016-03-25 | 2016-08-17 | 浙江大学 | 一种基于模板匹配技术的知识图谱问答系统及方法 |
-
2017
- 2017-05-10 CN CN201710326554.4A patent/CN107247738B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402599A (zh) * | 2011-11-17 | 2012-04-04 | 天津大学 | 大规模语义知识库的动态维护系统 |
CN105868313A (zh) * | 2016-03-25 | 2016-08-17 | 浙江大学 | 一种基于模板匹配技术的知识图谱问答系统及方法 |
Non-Patent Citations (1)
Title |
---|
陈恒: "一种基于Spark的大规模语义数据分布式推理框架", 《计算机科学》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659292A (zh) * | 2019-09-21 | 2020-01-07 | 北京海致星图科技有限公司 | 一种基于Spark和Ignite的分布式实时图构建和查询的方法及系统 |
CN110909111A (zh) * | 2019-10-16 | 2020-03-24 | 天津大学 | 基于知识图谱rdf数据特征的分布式存储与索引方法 |
CN110909111B (zh) * | 2019-10-16 | 2023-07-14 | 天津大学 | 基于知识图谱rdf数据特征的分布式存储与索引方法 |
CN110990426A (zh) * | 2019-12-05 | 2020-04-10 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN110990426B (zh) * | 2019-12-05 | 2022-10-14 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN111639082A (zh) * | 2020-06-08 | 2020-09-08 | 成都信息工程大学 | 基于Ceph的十亿级节点规模知识图谱的对象存储管理方法及系统 |
CN111639082B (zh) * | 2020-06-08 | 2022-12-23 | 成都信息工程大学 | 基于Ceph的十亿级节点规模知识图谱的对象存储管理方法及系统 |
CN112732933A (zh) * | 2021-01-08 | 2021-04-30 | 中国电子科技集团公司第二十八研究所 | 一种海量知识图谱分布式管理与查询方法 |
CN113157947A (zh) * | 2021-05-20 | 2021-07-23 | 中国工商银行股份有限公司 | 知识图谱的构建方法、工具、装置和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN107247738B (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247738A (zh) | 一种基于spark的大规模知识图谱语义查询方法 | |
CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
Zhang et al. | EAGRE: Towards scalable I/O efficient SPARQL query evaluation on the cloud | |
Wang et al. | Efficient subgraph matching on large RDF graphs using MapReduce | |
CN103310011A (zh) | 集群数据库系统环境下的数据查询解析方法 | |
CN105955999B (zh) | 一种大规模RDF图的ThetaJoin查询处理方法 | |
CN104462351B (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
CN103678550B (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN104408159A (zh) | 一种数据关联、加载、查询方法及装置 | |
US20120254189A1 (en) | Multilevel indexing system | |
CN104142968A (zh) | 一种基于solr技术的分布式搜索方法及系统 | |
CN109325029A (zh) | 基于稀疏矩阵的rdf数据存储和查询方法 | |
CN108009270A (zh) | 一种基于分布式内存计算的文本检索方法 | |
CN103605750B (zh) | 一种快速的分布式数据分页方法 | |
Sarlis et al. | Datix: A system for scalable network analytics | |
CN109739882A (zh) | 一种基于Presto和Elasticsearch的大数据查询优化方法 | |
CN108228654A (zh) | 一种大数据分布式存储方法和系统 | |
Doulkeridis et al. | On saying" enough already!" in mapreduce | |
Ravindra et al. | Efficient processing of RDF graph pattern matching on MapReduce platforms | |
CN108319604A (zh) | 一种hive中大小表关联的优化方法 | |
US20210034649A1 (en) | Phrase Indexing | |
Rohde et al. | Optimizing federated queries based on the physical design of a data lake | |
Oh et al. | Job-optimized map-side join processing using mapreduce and hbase with abstract RDF data | |
Shen et al. | A graph-based RDF triple store |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |