一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式知识图谱查询方法、装置及存储介质与流程

2022-03-09 04:07:53 来源:中国专利 TAG:

分布式知识图谱查询方法、装置及存储介质
【技术领域】
1.本技术属于查询领域,特别涉及一种分布式知识图谱查询方法、装置及存储介质。


背景技术:

2.知识图谱的查询需求有重要的现实意义,现有的知识检索方式重点在根据关键字的查询,而关键字的查询往往缺失了语义中重要的结构信息,如查找“家乡在福建并在湖南工作的人员”以关键字的形式则为“家乡”,“福建”,“湖南”,“工作”,“人员”等作为查询;其中不同关键字之间的关系丢失引入了不可避免的歧义,例如上述关键字集也能理解为“家乡在湖南并在福建工作的人员”,造成了实际的错误。知识图谱的查询不仅关注关键字内容,也关注不同关键字之间的逻辑关联和交互。
3.随着大数据时代的不断发展,现实需要处理的知识数据规模庞大,单机的模式难以处理大规模知识图谱数据的查询,因此需要分布式的集群来提高处理能力。已有的方法核心均是通过将大规模的图数据分割成多份,每份分布到不同机器处理,最后合并结果。这些方式的问题在于两点,

知识图谱合并结果庞大,远远超过最终结果本身,分布式合并阶段将带来大量的数据传递开销;

并行仅局限在各个机器之间,而在合并阶段并没有实现良好的并行。


技术实现要素:

4.本技术提供一种分布式知识图谱查询方法、装置及存储介质,通过bfs的访问模式让第二设备充分并行联接同时第一设备进行全局联接,使得联接过程足够充分,从而使得能够在存在通信延迟开销的情况下仍然保持足够高的查询效率。
5.本技术第一方面提供了一种分布式知识图谱查询方法,包括:
6.第一设备获取用户输入的目标查询语句;
7.所述第一设备对所述目标查询语句进行处理,得到目标查询图;
8.所述第一设备对所述目标查询图进行线性分割,以得到n个查询子树,其中,n为大于或等于2的整数;
9.所述第一设备将所述n个查询子树分配至多个第二设备,以使得第二设备根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集,并根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集,且将所述第一候选结果集与所述匹配候选结果集进行匹配,以得到配对结果,且返回所述配对结果,其中,所述第二设备为所述多个第二设备中的任一第二设备,所述目标查询子树为分配至所述第二设备的查询子树;
10.所述第一设备将所述多个第二设备中每个第二设备所对应的配对结果进行合并联接,得到最终结果集。
11.本技术第二方面提供了一种分布式知识图谱查询方法,包括:
12.第二设备接收第一设备分配的目标查询子树,所述目标查询子树为所述第一设备
对目标查询图进行线性分割得到的n个查询子树中的任一查询子树,所述目标查询图为所述第一设备获取到用户所输入的目标查询语句进行处理得到的,其中,n为大于或等于2的整数;
13.所述第二设备根据所述目标查询子树从数据库中进行检索过滤,以得到目标候选结果集;
14.所述第二设备根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集;
15.所述第二设备将所述目标候选结果集与所述匹配候选结果集进行匹配,以得到配对结果;
16.所述第二设备将所述配对结果发送至所述第一设备,以使得所述第一设备将从所述多个第二设备获取的配对结果进行合并联接,得到最终结果集。
17.本技术第三方面提供了一种设备,所述设备为第一设备,包括:
18.接收单元,用于获取用户输入的目标查询语句;
19.处理单元,用于对所述目标查询语句进行处理,得到目标查询图;
20.分割单元,用于对所述目标查询图进行线性分割,以得到n个查询子树,其中,n为大于或等于2的整数;
21.分配单元,用于将所述n个查询子树分配至多个第二设备,以使得第二设备根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集,并根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集,且将所述第一候选结果集与所述匹配候选结果集进行匹配,以得到配对结果,且返回所述配对结果,其中,所述第二设备为所述多个第二设备中的任一第二设备,所述目标查询子树为分配至所述第二设备的查询子树;
22.合并单元,用于将所述多个第二设备中每个第二设备所对应的配对结果进行合并联接,得到最终结果集。
23.本技术第四方面提供了一种设备,所述设备为第二设备,包括:
24.接收单元,用于接收第一设备分配的目标查询子树,所述目标查询子树为所述第一设备对目标查询图进行线性分割得到的n个查询子树中的任一查询子树,所述目标查询图为所述第一设备获取到用户所输入的目标查询语句进行处理得到的,其中,n为大于或等于2的整数;
25.检索单元,用于根据所述目标查询子树从数据库中进行检索过滤,以得到目标候选结果集;
26.获取单元,用于根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集;
27.匹配单元,用于将所述目标候选结果集与所述匹配候选结果集进行匹配,以得到配对结果;
28.发送单元,用于将所述配对结果发送至所述第一设备,以使得所述第一设备将从所述多个第二设备获取的配对结果进行合并联接,得到最终结果集。
29.本技术实施例第五方面提供了一种计算机设备,其包括至少一个连接的处理器、存储器和收发器,其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中
的程序代码来执行上述任一方面所述的分布式知识图谱查询方法的步骤。
30.本技术实施例第四方面提供了一种计算机存储介质,其包括指令,当其在计算机上运行时,使得计算机执行上述任一方面所述的分布式知识图谱查询方法的步骤。
31.相对于相关技术,本技术提供的实施例中,通过bfs的访问模式让第二设备充分并行联接同时第一设备进行全局联接,使得联接过程足够充分,从而使得能够在存在通信延迟开销的情况下仍然保持足够高的查询效率。
【附图说明】
32.图1为本技术实施例提供的rdf数据的示意图;
33.图2为本技术实施例提供的查询子图的示意图;
34.图3为本技术实施例提供的分布式知识图谱查询方法的实施例示意图;
35.图4为本技术实施例提供的id分配的mapreduce流程示意图;
36.图5为本技术实施例提供的生成顶点基础编码的流程示意图;
37.图6为本技术实施例提供的一步邻居环境特征示意图;
38.图7为本技术实施例提供的二步邻居环境特征示意图;
39.图8为本技术实施例提供的分布式层级聚类构建位图树的示意图;
40.图9为本技术实施例提供的分布式知识图谱查询方法的一个流程示意图;
41.图10为本技术实施例提供的分布式知识图谱查询方法的另一流程示意图;
42.图11为本技术实施提供的分布式知识图谱查询方法的另一流程示意图;
43.图12为本技术实施例提供的分布式知识图谱查询方法的另一流程示意图;
44.图13为本技术实施例提供的第一设备的虚拟结构示意图;
45.图14为本技术实施例提供的第二设备的虚拟结构示意图;
46.图15为本技术实施例提供的服务器的硬件结构示意图。
【具体实施方式】
47.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。
48.随着互联网的发展,海量的数据急速涌现,纷繁复杂。在这种背景下,一种能够更加灵活地表达大量复杂数据的模型—资源描述框架(resource description framework,rdf),应运而生。rdf数据模型由w3c提出,它提供了一个统一的标准来表示事物,即使用三元组集合的方式来描述web上的资源以及资源之间的关系。而三元组是知识图谱中知识表示的基本单位,一条条知识又组成了知识图谱,其以图谱的方式驱动知识的管理,实现知识数据建模、存储和查询挖掘。随后,w3c又定义了针对rdf数据集的sparql查询语言,进一步检索和操作以rdf格式存储的数据。
49.近年来,在rdf上的各种查询系统层出不穷,如gstore,sw-store,rdf-3x等,但随着rdf的数据日趋增大,现有的许多面向rdf数据的sparql查询系统大都只是单机的算法,在面对更大规模的rdf数据时,这些算法不可避免地存在着时间效率过低、空间扩展能力较差等方面的问题。
50.有鉴于此,本技术提供了一种分布式知识图谱查询方法及相关设备,融合拓扑结
构,符合匹配的顶点,其近邻拓扑必须完全覆盖查询拓扑,因此在查询点编码中融入拓扑编码,进而可以在进行知识图谱查询时,可以能够更高效地过滤不符合结果的候选解,减少待合并结果规模,降低计算和通信代价。
51.下面对本技术涉及的名词和概念进行解释,具体如下:
52.rdf通常被称为一种“语言”,但更准确地说,它是一种数据模型,由w3c作为语义网运动的组成部分而推出。rdf由一系列陈述,即:主语、谓语和宾语组成,其中主语是实体或类别,谓语是对应的实体或类别的属性,宾语可以是实体或类别,也可以是字符串。如此,rdf数据即为一系列三元组组成的数据。rdf数据也可以通过图结构组织,若将陈述中的实体视为顶点,属性视为连接两个顶点的有向边(本技术对于宾语是字符串的情况称之为对应实体的literal边),则rdf数据集也就变成了有向图,即可以如图1中所示的rdf数据图,其中,101沈某某、102湖南、103张某某、104作家以及105城市为顶点,101沈某某与102湖南之间的属性即为出生地,101沈某某与104作家之间的属性即为职业,表示的意思即为“沈某某出生地为湖南,职业为作家”。
53.sparql,sparql protocol and rdf query language的简称,是w3c的rdf数据工作组设计的一种查询语言和协议,用于rdf数据的查询。它是一种类似结构化查询语言(structured query language,sql)的查询语句,包含四种查询格式,即:select(返回匹配查询模式的变量值)、construct(返回一个rdf图)、ask(查询是否有匹配模式的结果)以及describe(返回一个描述匹配的资源的rdf图)。其中,sparql查询可以转化为子图查询,从而增强对数据需求的表达能力,假设查询需求为:“在国务院工作并且家乡在安徽的博士有哪些?”已有的查询理解方式往往只是从查询中抽取关键字来进行,而子图的方式则更为精准,如图2所示,201即为“在国务院工作并且家乡在安徽的博士有哪些?”,所对应的sparql查询语句,202为该sparql查询语句所对应的saprql查询图,该查询图能够理解查询的目标是一个顶点,顶点有三条关联的边,分别是对“国务院”的就职关系,对“安徽”的家乡定位关系以及对“博士学位”的学历关系。
54.分布式处理包括两个部分:离线部分和在线部分,其中,离线部分根据hadoop上的mapreduce计算框架分布式地构建索引,并存储在分布式索引hbase中;在线部分通过c的并行库信息传递接口(message passing interface,mpi),并行访问hbase进行候选过滤以及并行合并。
55.hadoop是apache的一个开源分布式计算框架,它以简单的计算模型进行大规模数据的集群计算,hadoop是建立在分布式文件系统hdfs之上的,它的数据管理都是通过hdfs这个分布式文件系统进行,非常适合大规模数据集上的应用。mapreduce将运行于大规模集群上的复杂的并行计算过程高度抽象到了两个函数:map和reuduce,并采用“分而治之”的策略。
56.hbase是apache的开源分布式数据库系统,是一个在hdfs上开发的面向列的分布式数据库系统,以key-value的形式组织读写,适用于实时地随机读写超大规模数据集。hbase具有良好的可伸缩性,其自底向上进行构建,能够通过增加节点达到空间的线性扩展,而且在廉价的硬件上能够良好地管理超大规模的稀疏表。
57.mpi是一个信息传递应用程序接口,包括协议和语义说明,可以指明其如何在各种实现中发挥其特性,mpi的目标是高性能、大规模性和可移植性。鉴于mpi的消息通信的程序
框架,mpi除了初始化和结束的配置函数,最核心的函数就是发送(mpi_send)和接收(mpi_recv)两个函数,这两个函数还有四种不同的模式以针对不同的应用情况优化,使之能满足绝大部分的并行需求又给以开发者非常灵活的选择。
58.请参阅图3,图3为本技术实施例提供的分布式知识图谱查询方法的一个实施例示意图,其中,第一设备301在接收到用户输入的sparql查询语句302之后,对sparql查询语句302进行处理,得到对应的查询图,并对查询图进行线性分割,得到多个查询子图,之后将多个查询子图分配至第二设备303,第二设备303通过对自身载入的部分查询子图从开源分布式数据库系统304进行检索得到候选结果集,第二设备303通过bfs的访问顺序针对访问查询图的边进行联接得到一步联接结果,并把一步联接结果发送到第一设备301,第一设备301在一步联接结果上进行全局的联接,得到最终结果集305,并将最终结果集305反馈给用户。
59.需要说明的是,本技术中针对分布式知识图谱查询方法包括两个模块,离线模块和在线模块。离线模块涉及索引的构建,包括点边信息的编码、近邻拓扑的编码,以及基于hadoop的mapreduce计算对全局编码集的层级聚类构建形成编码bitset树结构的索引;在线模块,第一设备根据用户的查询语句,将查询语句对应的位图树分配至第二设备,第二设备根据分配的位图树从数据库中进行查询过滤,并返回查询结果,第一设备将查询结果展示给用户进行查看,其中,该第一设备为分布式架构中的主节点,该第二设备为分布式架构中的从节点。
60.首先对离线模块中点边信息的编码、近邻拓扑的编码进行说明,具体如下:
61.步骤a1、获取待编码的rdf数据集;
62.步骤a2、对rdf数据集进行去重,得到目标rdf数据集。
63.本实施例中,第一设备可以通过hadoop的mapreduce的排序能力先对待编码的rdf数据集进行去重,当然也还可以采用其他的方式对待构建的结果集进行去重,具体不做限定,只要能将待构建的结果进行去重即可。
64.步骤a3、通过mapreduce对目标rdf数据集中的每个rdf数据进行处理,得到每个rdf数据所对应的实体、边以及图标识id。
65.本实施例中,第一设备针对rdf数据集的图id分配的mapreduce job主要由两阶段完成,即map阶段和reduce阶段。下面结合如图4,以subject对象为例进行说明,首先读取输入的rdf数据集401(此处以subject为例进行说明),然后启动mapreduce job,接着进入map阶段:第一设备将待处理rdf数据集分割成多个片段402(如图2中的split0、split1以及split2),并将多个片段402分配给多个map task403,分割的数量与map task的数量相对应,图4中以分割成3个片段为例进行说明,每个片段分配一个map task,之后每次调用map函数将得到0或多个《subid,subject》形式的中间结果404,如图4所示,每个map task对分配至自身的片段进行处理,得到各自的中间结果;之后进入sort阶段405,读取map阶段产生的中间结果并进行排序以将同一subid的《subid,subject》对合并成一个subid与相对应subject列表,即《subid,subject list》;之后进入reduce阶段,reduce阶段每个reduce task406将得到多个《subid,subject list》数据,之后单个reduce task针对每份《subid,subject list》数据调用reduce函数,在reduce函数中将得到0或多个《subid,subject》407对进行输出作为结果,最终每个reduce task的所有输出,即实体和边及相应的id都将保存
在hbase中。
66.步骤a4、对每个rdf数据所对应的实体进行编码,得到每个rdf数据所对应的初始基础编码。
67.本实施例中,rdf三元组对应的边以predict标记,权值通过predict编码一一映射到一个定长的bitset,作为边的初始基础编码,具体采用bkdr字符串哈希函数进行编码。
68.由于一对实体之间可能存在于多个rdf三元组,彼此之间的predict各不相同,因此在对目标实体(目标实体为每个rdf数据所对应的实体中的任一实体)进行编码时将目标实体所对应的subject(主体)到object(客体)的多条边的基础编码相或作为最终的subject到object的边基础编码,进而将目标实体的所有相邻边的边基础编码和与该目标实体所对应的邻居节点的字符串的字符串编码的bitset进行相或,相或之后得到的bitset作为目标实体的初始基础编码。
69.由于三元组的基础编码计算是完全独立的,因此本技术中采用的mapreduce的计算框架非常适合处理在三元组的基础上构建对应实体的基础编码的计算。如图5所示,通过分割rdf数据集并对每条三元组编码进行对应的初始基础编码,然后再将同一实体的基础编码聚集到reduce节点进行或操作,得到实体的最终的初始基础编码。
70.步骤a5、根据每个rdf数据所对应的边以及每个rdf数据所对应实体的初始基础编码确定每个rdf数据的近邻拓扑编码。
71.本实施例中,每个rdf数据所对应的实体的近邻拓扑编码由两段组成:一步拓扑段和二步拓扑段,下面分别对一步拓扑段和二步拓扑段进行说明:
72.一步拓扑段记录顶点(也即是实体)一步邻居环境特征分布(特征中任意非中心顶点到中心顶点的最长简单路径长度为1的特征,即可由图6中的9种拓扑结构衍生出的标签拓扑结构,衍生指给各顶点加标签)。一步邻居环境特征的频率可以用顶点的出、入以及双邻居中顶点标签的频率表示,因此不用存储邻居顶点标签的组合及频率而可以直接存储邻居顶点标签及频率。从顶点入、出以及双邻居中所有顶点标签中选取出现频率最高的k_1step种标签,对这些标签和对应频率进行编码得到一步拓扑段:用in_cnt(out_cnt,bi_cnt)表示进行编码的顶点标签中入邻居(出邻居、双邻居)的标签数目,labelidi表示标签标识,cnti表示频率,则编码为in_cnt《labelidi,cnti》

out_cnt《labelidi,cnti》

bi_cnt《labelidi,cnti》


73.二步拓扑段记录顶点二步邻居环境特征分布(特征中存在非中心顶点到中心顶点的简单路径长度为2的特征,即可由图7中的24种拓扑结构衍生出的标签拓扑结构)。定义特征中的二路径如下:若特征中仅存在一条从中心顶点出发且长度为2的简单路径,则二路径即这条路径;若特征中存在多于一条这种路径,此时该特征中必然有且只有两条这种简单路径,在图2中表现为从中心顶点出发分别沿顺时针和沿逆时针的两条,定义二路径为沿逆时针的那条,则特征种类编码kind_code编码方式如下:对于某二步邻居环境特征,用code表示其去除顶点标签后的拓扑结构在图2中的编号,labelid1表示二路径的第一个非中心顶点的顶点标签标识,labelid2表示二路径第二个非中心顶点的标签标识,则其种类编码kind_code为《code,labelid1,labelid2》。从顶点的所有二步邻居环境特征中选取出现频率最高的k_2step种特征,对这些特征和对应频率进行编码得到二步拓扑段:用kind_codei表示特征种类编码,cnti表示频率,则编码为《kind_codei,cnti》


74.由此,可以得到每个结果所对应的实体的基础编码以及每个结果所对应的实体的近邻拓扑编码。
75.下面基于hadoop的mapreduce计算对全局编码集的层级聚类构建形成编码bitset树结构的索引进行说明。
76.相较于目前的自顶向下通过分类构建bitset-tree的位图树构建算法,由于组织结构的原因很难对其进行分布式构建,因而在数据量比较大的时候,单机情况下构建bitset-tree将在空间上面临挑战,而本技术提出的分布式构建bitset-tree的算法通过对初始基础编码先进行canopy聚类确定初始簇中心值,再通过k-means聚类将每一聚类得到的簇中心作为当前簇的父节点,进而实现自底向上地构建bitset-tree,如图8所示,本技术中关于位图树构建算法的核心在于通过mapreduce实现初始基础编码的canopy聚类和k-means聚类,将更相近的初始基础编码聚在一起,具体如下:
77.步骤b1、对每个rdf数据所对应的实体进行聚类,以得到目标rdf数据集所对应的位图树bitset-tree。
78.下面对如何通过聚类的方式构建目标rdf数据集所对应的bitset-tree进行说明:
79.步骤b11、将随机从目标rdf数据集所对应的实体中选取的k个实体确定为初始簇中心。
80.本实施例中,分布式构建bitset-tree的算法以entity为顶点,entity对应的初始基础编码之间的海明距离为两个顶点之间的距离。下面对k的值的选取进行说明:
81.按顶点集的大小n以及将要构建的bitset-tree的每个节点的最大子节点数m来定义k值:k=[n/m]。初始的k个点通过canopy聚类进行选取。
[0082]
步骤b12、根据k个实体中每个实体的初始基础编码以及每个实体的近邻拓扑编码对bitset-tree的第i层进行聚类,得到ki个簇中心,该bitset-tree包括l层,l为大于或等于2的整数,i为大于或等于0的整数,且i小于l。
[0083]
步骤b13、将ki个中心确定所述第i层的图顶点;
[0084]
步骤b14、根据随机从第i层中选取k(i 1)个顶点中每个顶点所对应实体的初始基础编码以及每个顶点所对应实体的近邻拓扑编码进行聚类,以得到所述bitset-tree的第i 1层的k(i 1)个簇中心。
[0085]
步骤b15、将bitset-tree的每一层中顶点所对应的簇所有的初始基础编码进行或操作,以得到所述bitset-tree的每一层中顶点所对应的最终基础编码。
[0086]
本实施例中,假设最终建的bitset-tree有的层数为l,标记最底层为第0层,最顶层为第l-1层,则一共要执行(l-1)次k-means算法,第i次聚类得到的ki个中心将成为第i层的所有顶点,亦即为第i 1次聚类的输入顶点。在从第i层往第i 1层构建时,先预先从第i层的顶点中随机找到k(i 1)个顶点,然后通过多次迭代得到最终的k(i 1)个中心,作为第i 1层的所有顶点。
[0087]
在每次聚类过程中,每个map task将输入的顶点匹配与该输入顶点的距离最近的中心(两个顶点之间的距离为通过计算两个顶点的基础编码之间的海明距离得到),以中心为key,当前输入顶点为value输出,进而将对应相同中心的顶点聚集到同一个reduce形成一个聚类簇,在聚类簇中找出新的中心。新的中心将有一个新的基础编码,即当前簇的所有的初始基础编码进行或操作得到的最终基础编码。
[0088]
需要说明的是,尽管每个聚类簇的大小并不好控制,但是bitset-tree的每个节点出于查询效率的原因其大小有一定的限制,所以当reduce聚出的簇超过一定的大小时,可以通过层次聚类将其分割,由于层次聚类的簇个数以及单个簇的大小上限很好控制,因而能很好地解决k-means簇大小不好控制的问题。最终层次聚类的结果将分布式存储于hbase中。
[0089]
步骤b2、分布式构建所述目标结果集中每个结果所对应的索引。
[0090]
本实施例中,边表的构建在算法索引部分中的过滤以及查询部分的联接起着至关重要的作用,对于hbase的读取效率也非常关键。由于hbase的每次读取缓存的都是数据表中一整行的数据,根据这一特点点,索引部分的边表结构设计为一系列的《entity,outedgelist,inedgelist》的行的集合,outedgelist边列表对应entity的出边列表,inedgelist变列表对应entity的入边列表,并存储相应边的最终基础编码。
[0091]
边表的构建只需要通过一个mapreduce job,对于出边而言只需要以六元组的subid为key,对应的objid和当前六元组编码得到的边的最终基础编码组成的pair作为value,即将所有的entity(实体)的出边聚集到同一reduce节点,入边同理。除最底层之外的边表的构建依赖于bitset-tree中节点的上下位关系,如果bitset-tree中第0层的某两个节点有边,则两个节点的父节点之间也添上对应的权重,具体的实现是在map task时,除了输出当前entity的出边和入边,还输出当前entity对应的父节点的出边和入边,而且所有输出pair都标记上对应的层次,如此便在reduce task得到bitset-tree每个层次上的所有的entity的出边和入边。在reduce节点将entity关联的出边集合以及入边集合中相同的边进行相或之后按上述边表的hbase存储结构载入到hbase中。
[0092]
下面从第一设备的角度对分布式知识图谱查询方法的在线模块进行说明,请结合参阅图9,图9为本技术实施例提供的分布式知识图谱查询方法的一个流程示意图,包括:
[0093]
901、第一设备获取用户输入的目标查询语句。
[0094]
本实施例中,第一设备可以获取用户输入的目标查询语句,具体的用户可以根据自身需求在第一设备所对应的显示界面中输入目标查询语句,之后第一设备可以接收到该查询语句,例如用户的查询需求为“在国务院工作并且家乡在安徽的博士有哪些?”,那么该目标对应的sparql查询语句即为:
[0095]
?x1《education background》“doctor”[0096]
?x1《work unit》《the central committee and state council》
[0097]
?x1《hometown》《anhui province》
[0098]
902、第一设备对目标查询语句进行处理,得到目标查询图。
[0099]
本实施例中,第一设备在接收到用户输入的目标查询语句之后,可以对目标查询语句进行处理,以得到目标查询语句所对应的目标查询图,也即第一设备接收到用户输入的目标查询语句之后,可以首先将该目标查询语句转换成sparql查询语句,之后通过位图的形式对该sparql查询语句进行组织并编码,得到目标查询图。下面进行具体说明:
[0100]
所述第一设备对所述目标查询语句进行处理,得到目标查询图包括:
[0101]
所述第一设备通过mapreduce对所述目标查询语句进行处理,得到所述目标查询语句所对应的实体以及边;
[0102]
所述第一设备对所述目标查询语句所对应的实体进行编码,得到所述目标查询语
句所对应实体的初始基础编码;
[0103]
所述第一设备根据所述目标查询语句所对应的边确定所述目标查询语句所对应实体的近邻拓扑编码;
[0104]
所述第一设备根据所述初始基础编码以及所述近邻拓扑编码构建所述目标查询图。
[0105]
需要说明的是,针对目标查询语句的处理得到目标查询图的方式与离线模块的类似,上述已经进行了详细说明,具体此处不再赘述。
[0106]
903、第一设备对目标查询图进行线性分割,得到n个查询子树。
[0107]
904、第一设备将n个查询子树分配至多个第二设备,以使得第二设备根据目标查询子树进行检索过滤,以得到目标候选结果集,并根据目标候选结果集从第一设备所对应的多个第二设备中获取对应的匹配候选结果集,且将第一候选结果集与匹配候选结果集进行匹配,以得到配对结果,返回配对结果。
[0108]
本实施例中,在查询处理之初,第一设备按照一定的分配策略将目标查询图bitset-tree分配至多个第二设备,假如所建立的bitset-tree包含10棵子树,现有5个第二设备作为分布式集群中的第二设备,那么每个第二设备将会被分配两棵子树进行消息传递函数库的标准规范(massage passing interface,mpi)并行处理,得到候选结果集,并根据候选结果集确定配对结果,最终返回配对结果,从而在查询处理部分候选结果集的检索能快速并行进行。查询算法对任务的拆解是树分支的分配,进一步说明了本技术中sparql查询是负载均衡的,并且拥有良好的可扩展性。
[0109]
需要说明的是,出于空间扩展,每个第二设备只载入一定比例的bitset-tree,进而需要对bitset-tree进行线性分割,本技术中是通过分割bitset-tree的某一层的所有节点,分割得到的子集及其以之为根的所有子树将作为bitset-tree分割的一部分,其中所有子树将在分割之后平均载入各个第二设备的内存。分割层的节点数要比第二设备数多,这能保证充分利用计算资源,而且需要是满足这一条件的所有层中的最高层,如此则能使得索引的子树越高,剪枝效果越好,进而能有更好的检索过滤效果。预先载入的数据除了bitset-tree的子树,还载入当前第二设备内跟载入的子树中所有节点关联的一步邻居,用来对候选结果集进行预先过滤,预先过滤在检索之后,shuffle之前。在分割完bitset-tree之后,每个第二设备将与分割给自己的bitset-tree的子树中的节点相关联的边都一同载入。
[0110]
905、第一设备将多个第二设备中每个第二设备所对应的配对结果进行合并联接,得到最终结果集。
[0111]
本实施例中,第一设备将每个设备所对应的配对结果进行合并联接,得到最终结果集。第一设备合并联接每个第二设备所对应的候选结果集主要实现了两个维度的并行处理:一是集群中不同机器间的通讯是并行联接的,通过广度优先搜索(breath first search,bfs)的访问结构实现;二是各个第二设备进行一步联接,同时第一设备接收第二设备发来的一步联接结果并进行全局的合并联接,得到最终结果集,这两个维度的并行处理很大程度上提高了处理时间。
[0112]
需要说明的是,第二设备选用bfs的访问主要是因为bfs的访问结构下,同一顶点的所有的出边能并行处理,当前访问第二设备向所有访问的邻居节点发送自身的候选结果
集,所有的邻居接收之后将并行地进行一步联接,即将两个候选变量的候选结果集进行配对,以判断是否存在边,且边基础编码能够覆盖目标查询图的两顶点之间的边基础编码,配不上的候选结果则被过滤。
[0113]
mpi框架下所有第二设备运行的代码都是一致的,所有的第二设备都会运行bfs,但只有与当前访问到的边相关联的第二设备会进行相应的发送接收以及一步联接。而在一步联接之后的全局的联接将由第一设备进行处理,即每个第二设备将各自的一步联接结果发送给第一设备,由第一设备来保存中间结果,既能够减少联接中间结果在各个第二设备之间进行多次传送的通信开销,也能使得第二设备在bfs中进行一步联接的同时,第一设备进行全局的联接从而并行执行并提高时间效率,最终的查询结果由第一设备反馈给用户。
[0114]
在bfs过程中,当某个第二设备访问到某条查询图的边时,如果当前边的出点和入点对应的候选结果集均不在本地,则该第二设备不进行任何与其它第二设备的通信,这段代码的执行时间几乎可以忽略,故可以认为每个第二设备会足够快地运行到访问某条跟自身有关的边的处理中,因此除了同一访问点的所有边的处理是并行的之外,bfs中没有相关联顶点的边也是并行处理的,因而整体的查询并行是非常充分的。如图10所示,第二设备进行一步联接时,第一设备也会同时进行一步联接结果的整合,而且在第二设备之间的一步联接里,x1的三条出边是并行的,而且第二设备5也会以几乎忽略的时间代价执行到处理跟它有关的边:(x2,x5),由此,并行性是足够高的,进而可以提高查询的效率,减少查询时间。
[0115]
综上所述,本技术提供的实施例中,通过bfs的访问模式让第二设备充分并行联接同时第一设备进行全局联接,使得联接过程足够充分,从而使得能够在存在通信延迟开销的情况下仍然保持足够高的查询效率。
[0116]
请参阅图11,图11为本技术实施例提供的分布式知识图谱查询方法的另一流程示意图,包括:
[0117]
1101、第二设备接收第一设备分配的目标查询子树。
[0118]
本实施例中,当用户有查询需求时,可以在第一设备所对应的显示界面进行输入查询需求,第一设备在接收到查询需求之后,可以将该查询需求所对应的目标查询语句进行处理,得到目标查询图,并对目标查询图进行线性分割,得到n个查询子树,其中,n为大于或等于2的整数,并将目标查询子树分配至第二设备。
[0119]
需要说明的是,上述步骤901至步骤903中已经对构建目标查询图以及线性分割进行详细说明,具体此处不在赘述。
[0120]
1102、第二设备根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集。
[0121]
本实施例中,第二设备在接收到第二设备分配的目标查询子树之后,可以根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集。也即第二设备将数据库中与第一候选变量不匹配的节点邻居进行过滤,得到初始候选结果集,第一候选变量为所述目标查询子树中任一层所对应的候选变量;之后若初始候选结果集所对应的候选变量中存在literal边所对应的第二候选变量时,则第二设备根据literal边对初始候选结果集进行过滤,得到目标候选结果集。下面进行具体说明:
[0122]
第二设备在对目标查询子树进行检索时,每检索到新的一层时,可以通过当前层中的候选节点的一步邻居进行过滤,过滤的对象是节点邻居中没有符合当前层所对应的候
选变量的所有节点(具体的是根据各个节点的最终基础编码进行匹配进行的),比如x1和x2是查询子数中的两个含有边的候选变量,两者在进行编码之后都有自身相应的最终基础编码,对于x1的某个候选节点node1,如果node1的所有邻居中并没有一个邻居的最终基础编码能够覆盖x2的基础编码,则node1显然不会符合最终的结果集,故将其过滤;重复执行,最终得到初始候选结果集;
[0123]
第二设备在检索到目标查询子树的最底层时将得到每个候选变量的候选结果集,并且这些候选变量的候选结果集都已经过了一步邻居的过滤。之后,第二设备还将对初始候选结果集进一步过滤,即literal过滤。查询子树中的边不只有变量之间的边,也还有literal边(该literal边指的是边的一端是字符串的情况),此时,第二设备只需要检查每个候选变量是否存在对应的literal边就能在满足候选变量的边约束的情况下满足literal边的约束。如果literal边对应的是一个实体,则查询出对应实体的id并在候选点中寻找是否存在对应的一步邻居正是该实体,若literal边对应的是一个字符串,则将该literal边编码成一条边的基础编码,寻找候选点边中是否存在覆盖该最终基础编码的边,如果上述对应的边在候选点中都不存在,则也过滤该候选点,最终得到目标候选结果集。
[0124]
需要说明的是,此部分称为literal过滤,显然literal过滤时是各第二设备并行进行的。一步邻居的过滤满足了候选变量之间的约束,literal过滤则满足了查询图中对候选变量的literal边的要求。而整体的基础编码匹配的过滤则是通过基础编码索引为最终的联接进行充分的过滤。
[0125]
1103、第二设备根据目标候选结果集从第一设备所对应的多个第二设备中获取对应的匹配候选结果集。
[0126]
本实施例中,第二设备在得到目标候选结果集之后,可以将目标候选结果集所对应的第一候选变量分布发送至第一设备,以使得第一设备返回多个第二设备中除第二设备之外的其他第二设备的候选结果集所对应的第二候选变量分布,并根据该第二候选变量分布确定与目标候选结果集所对应的候选变量相同的候选变量所处的节点,并从该节点获取该候选变量的候选结果,进而得到匹配候选结果集。
[0127]
需要说明的是,在检索过滤之后第一设备所对应的多个第二设备的状态是每个第二设备可能包含多个候选变量的候选结果集,每个候选变量的候选结果集可能分布在多个第二设备,而这种状态下进行联接将带来很大的通信开销,因为同一条边的端点可能分布在多个第二设备上,则联接阶段第一设备在处理某条边时将出现多源往多目标发送候选结果集,这将是很大的通信开销,因此,第二设备在检索过滤之后将进行shuffle过程,即将相同候选变量的候选结果集聚集到同一第二设备中,将不同的候选变量的候选结果集聚集到不同的第二设备上。如此在联接阶段对于一对相连的候选变量而言,只需要传输一次候选结果集即可。shuffle的过程主要分两部分,第一部分所有的第二设备告诉第一设备自身含有哪些候选变量的候选结果集,第一设备收集了全局的候选结果集分布后将候选结果集分布反馈给所有第二设备,mpi对这种操作有专门的函数即mpi_gather和mpi_bcast,并且在效率上有优化。第二部分所有的节点根据自身的候选结果集情况发送或接收候选结果集,最终完成shuffle,得到目标候选结果集。
[0128]
1104、第二设备将目标候选结果集与匹配候选结果集进行匹配,以确定配对结果。
[0129]
本实施例中,第二设备在从其他第二设备确定与目标候选结果集所对应的候选变
量中相同的变量,并获取对应的匹配候选结果集之后,可以将目标候选结果集与匹配候选结果集进行匹配,得到配对结果。也即第二设备将两个候选变量(分别从目标候选结果集和匹配候选结果集中获取的相同的候选变量的候选结果集)的候选结果集进行配对:是否存在边并且边基础编码能够覆盖查询图的两点之间的边的基础编码(因为predict的基础编码映射是一一对应的,所以边的覆盖能保证存在相应的查询图的边),配不上的候选点则被过滤,保留的即为配对结果。
[0130]
1105、第二设备将配对结果发送至第一设备,以使得第一设备将从多个第二设备接收到的配对结果进行合并联接,得到最终结果集。
[0131]
上述步骤905中已经对合并联接进行详细说明,具体此处不在赘述。
[0132]
综上所述,可以看出,本技术提供的实施例中,通过bfs的访问模式让第二设备充分并行联接同时第一设备进行全局联接,使得联接过程足够充分,从而使得能够在存在通信延迟开销的情况下仍然保持足够高的查询效率。
[0133]
上面分别从第一设备和第二设备的角度对分布式知识图谱查询方法进行说明,下面从第一设备和第二设备交互的角度对分布式知识图谱查询方法进行说明。
[0134]
请参阅图12,图12为本技术实施例提供的分布式知识图谱查询方法的另一流程示意图,包括:
[0135]
1201、第一设备获取用户输入的目标查询语句。
[0136]
1202、第一设备对目标查询语句进行处理,得到目标查询图。
[0137]
1203、第一设备对目标查询图进行线性分割,以得到n个查询子树。
[0138]
1204、第一设备将n个查询子树分配至多个第二设备。
[0139]
需要说明的是,步骤1201至步骤1204与图9中的步骤901至步骤904类似,上述图9中已经进行了详细说明,具体此处不在赘述。
[0140]
1205、第二设备根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集。
[0141]
1206、第二设备根据目标候选结果集从第一设备所对应的多个第二设备中获取对应的匹配候选结果集。
[0142]
1207、第二设备将目标候选结果集与匹配候选结果集进行匹配,以确定配对结果。
[0143]
1208、第二设备将配对结果发送至第一设备。
[0144]
需要说明的是,步骤1205至步骤1208与图10中的步骤1002至步骤1005类似,上述图10中已经进行了详细说明,具体此处不在赘述。
[0145]
1209、第一设备将多个第二设备中每个第二设备所对应的配对结果进行合并联接,得到最终结果集。
[0146]
步骤1209与图9中的步骤905类似,上述图9中已经进行了详细说明,具体此处不在赘述。
[0147]
综上所述,本技术提供的实施例中,通过bfs的访问模式让第二设备充分并行联接同时第一设备进行全局联接,使得联接过程足够充分,从而使得能够在存在通信延迟开销的情况下仍然保持足够高的查询效率。
[0148]
上面从分布式知识图谱查询方法对本技术进行说明,下面从第一设备和第二设备的角度对本技术进行说明。
[0149]
请参阅图13,图13为本技术实施例提供的第一设备的虚拟结构示意图,该第一设备1300包括:
[0150]
接收单元1301,用于获取用户输入的目标查询语句;
[0151]
处理单元1302,用于对所述目标查询语句进行处理,得到目标查询图;
[0152]
分割单元1303,用于对所述目标查询图进行线性分割,以得到n个查询子树,其中,n为大于或等于2的整数;
[0153]
分配单元1304,用于将所述n个查询子树分配至多个第二设备,以使得第二设备根据目标查询子树从数据库中进行检索过滤,以得到目标候选结果集,并根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集,且将所述第一候选结果集与所述匹配候选结果集进行匹配,以得到配对结果,且返回所述配对结果,其中,所述第二设备为所述多个第二设备中的任一第二设备,所述目标查询子树为分配至所述第二设备的查询子树;
[0154]
合并单元1305,用于将所述多个第二设备中每个第二设备所对应的配对结果进行合并联接,得到最终结果集。
[0155]
一种可能的设计中,所述处理单元1302具体用于:
[0156]
通过mapreduce对所述目标查询语句进行处理,得到所述目标查询语句所对应的实体以及边;
[0157]
对所述目标查询语句所对应的实体进行编码,得到所述目标查询语句所对应实体的初始基础编码;
[0158]
所述第一设备根据所述目标查询语句所对应的边确定所述目标查询语句所对应实体的近邻拓扑编码;
[0159]
根据所述初始基础编码以及所述近邻拓扑编码构建所述目标查询图。
[0160]
一种可能的设计中,所述处理单元1302根据所述初始基础编码以及所述近邻拓扑编码构建所述目标查询图包括:
[0161]
步骤1、所述第一设备将随机从所述目标查询语句所对应实体中选取的k个实体确定为初始簇中心,其中,k为大于或等于2的整数;
[0162]
步骤2、所述第一设备根据所述k个实体中每个实体的初始基础编码以及所述每个实体的近邻拓扑编码对第i层进行聚类,得到ki个簇中心,其中,i为大于或等于1的整数,且i小于所述目标查询图的层数;
[0163]
步骤3、所述第一设备将所述ki个中心确定所述第i层的图顶点;
[0164]
步骤4、所述第一设备根据随机从所述第i层中选取的k(i 1)个顶点中每个顶点所对应实体的初始基础编码以及所述每个顶点所对应实体的近邻拓扑编码进行聚类,以得到所述目标查询图的第i 1层的k(i 1)个簇中心;
[0165]
步骤5、所述第一设备将所述k(i 1)个簇中心确定为所述第i 1层的图顶点;
[0166]
重复执行步骤4和步骤5,直至确定出所述目标查询图中所有层的图顶点为止。
[0167]
一种可能的设计中,所述处理单元1302还用于:
[0168]
所述第一设备获取目标顶点所对应实体的初始基础编码,所述目标顶点为目标层中的任一簇,所述目标层为所述目标查询图中的任一层;
[0169]
所述第一设备对所述目标顶点所对应实体的初始基础编码进行或操作,以得到所
述目标顶点的最终基础编码。
[0170]
一种可能的设计中,所述处理单元1302还用于:
[0171]
所述第一设备获取rdf数据集;
[0172]
所述第一设备对所述rdf数据集进行去重,得到目标rdf数据集。
[0173]
所述第一设备通过mapreduce对所述目标rdf数据集中每个rdf数据进行处理,得到所述每个rdf数据所对应的实体、边以及图标识;
[0174]
所述第一设备对所述每个rdf数据所对应的实体进行编码,得到所述每个rdf数据所对应实体的初始基础编码;
[0175]
所述第一设备根据所述每个rdf数据所对应的边以及所述每个rdf数据所对应实体的初始基础编码确定所述每个rdf数据的近邻拓扑编码;
[0176]
所述第一设备根据所述每个rdf数据所对应实体的基础编码以及所述每个rdf数据所对应实体的近邻拓扑编码进行聚类,以构建所述每个rdf数据所对应的位图树;
[0177]
所述第一设备分布式构建所述每个rdf数据所对应实体所对应的索引;
[0178]
所述第一设备将所述索引、所述位图树以及所述图标识进行关联存储。
[0179]
请参阅图14,图14为本技术实施例提供的第二设备的虚拟结构示意图,该第二设备1400包括:
[0180]
接收单元1401,用于接收第一设备分配的目标查询子树,所述目标查询子树为所述第一设备对目标查询图进行线性分割得到的n个查询子树中的任一查询子树,所述目标查询图为所述第一设备获取到用户所输入的目标查询语句进行处理得到的,其中,n为大于或等于2的整数;
[0181]
检索单元1402,用于根据所述目标查询子树从数据库中进行检索过滤,以得到目标候选结果集;
[0182]
获取单元1403,用于根据所述目标候选结果集从所述第一设备所对应的多个第二设备中获取对应的匹配候选结果集;
[0183]
匹配单元1404,用于将所述目标候选结果集与所述匹配候选结果集进行匹配,以得到配对结果;
[0184]
发送单元1405,用于将所述配对结果发送至所述第一设备,以使得所述第一设备将从所述多个第二设备获取的配对结果进行合并联接,得到最终结果集。
[0185]
一种可能的设计中,所述检索单元1402具体用于:
[0186]
所述第二设备将所述数据库中与第一候选变量不匹配的节点邻居进行过滤,得到初始候选结果集,所述第一候选变量为所述目标查询子树中任一层所对应的候选变量;
[0187]
若所述初始候选结果集所对应的候选变量中存在literal边所对应的第二候选变量时,则所述第二设备根据所述literal边对所述初始候选结果集进行过滤,得到目标候选结果集。
[0188]
图15为本技术服务器的结构示意图,如图15所示,本实施例的服务器1500包括至少一个处理器1501,至少一个网络接口1504或者其他用户接口1503,存储器1505,和至少一个通信总线1502。该服务器1500可选的包含用户接口1503,包括显示器,键盘或者点击设备。存储器1505可能包含高速ram存储器,也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1505存储执行指令,当服务器1500运
行时,处理器1501与存储器1505之间通信,处理器1501调用存储器1505中存储的指令,以执行上述分布式知识图谱查询方法。操作系统1506,包含各种程序,用于实现各种基础业务以及处理根据硬件的任务。
[0189]
本技术实施例提供的服务器,可以执行上述的分布式知识图谱查询方法的实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0190]
本技术实施例还提供一种计算机可读介质,包含计算机执行指令,计算机执行指令能够使服务器执行上述实施例描述的分布式知识图谱查询方法,其实现原理和技术效果类似,此处不再赘述。
[0191]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0192]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献