CN114564571B - 一种图数据查询方法和系统 - Google Patents
一种图数据查询方法和系统 Download PDFInfo
- Publication number
- CN114564571B CN114564571B CN202210418826.4A CN202210418826A CN114564571B CN 114564571 B CN114564571 B CN 114564571B CN 202210418826 A CN202210418826 A CN 202210418826A CN 114564571 B CN114564571 B CN 114564571B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- node
- edge
- graph
- 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.)
- Active
Links
Images
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/33—Querying
- G06F16/332—Query formulation
-
- 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
- G06F16/367—Ontology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种图数据查询方法和系统。其中,所述图数据被拆分为多个子图数据并分布式存储在多个计算单元处,该方法包括:获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边;基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段;将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
Description
技术领域
本说明书涉及计算机技术领域,特别涉及一种图数据查询方法和系统。
背景技术
知识图谱有着复杂的结构、多样化的属性类型以及多层面的学习任务,充分利用知识图谱可以更好的解决各种应用问题。在知识图谱规模较大时,往往需要多个计算单元(设备)共同完成基于知识图谱的业务应用,例如,根据已有的图谱数据进行图特征挖掘。当多个节点共同完成任务时各个节点通常需要进行消息往来,当消息规模过大时可能会出现计算延迟甚至计算失败的情况。
因此,本说明书提出一种图数据查询方法和系统,以解决在节点间传输消息规模过大带来的计算受限的问题。
发明内容
本说明书实施例的一个方面提供一种图数据查询方法。所述图数据被拆分为多个子图数据并分布式存储在多个计算单元处,该方法包括:获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边;基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段;将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
本说明书实施例的另一个方面提供一种图数据查询系统。所述图数据被拆分为多个子图数据并分布式存储在多个计算单元处,该系统包括:查询条件获取模块,用于获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边;查询数据结构确定模块,用于基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段;实例数据获取模块,用于将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
本说明书实施例的另一个方面提供一种图数据查询装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现图数据查询方法。
本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行图数据查询方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书的一些实施例所示的图数据查询的应用场景的示例性示意图;
图2是根据本说明书一些实施例所示的查询图和数据图的示例性示意图;
图3是根据本说明书一些实施例所示的子图压缩的示例性示意图;
图4是根据本说明书一些实施例所示的图数据查询方法的示例性流程图;
图5是根据本说明书一些实施例所示的查询图数据的示例性示意图;
图6是根据本说明书一些实施例所示的查询数据结构的示例性示意图;
图7是根据本说明书一些实施例所示的计算单元补充查询数据结构中实例数据的示例性流程图;
图8是根据本说明书一些实施例所示的拆分查询数据结构的示例性示意图;
图9是根据本说明书另一些实施例所示的补充实例数据的示例性流程图;
图10是根据本说明书另一些实施例所示的补充实例数据的示例性流程图;
图11是根据本说明书一些实施例所示的图数据查询系统的示例性模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
知识图谱是一种揭示实体(或称为对象)之间关系的语义网络。图谱中的节点表示实体。节点可以有多种类型,称作节点类型,用于指示各类实体。图谱中的边表示关系,边也可以有多种类型,称作边类型,用于指示各类关系。实体可以指现实世界中的事物,例如,人、地名、概念、药物、公司等等。关系可用于表达不同实体之间的联系,例如,张三和李四是“朋友”、社交账号与移动终端具有登录关系等等。
知识图谱可以是有向图或无向图,即,知识图谱中的边可以是有向的,也可以是无向的。有向的边可以是单向的,也可以是双向的,以指示关系的方向性。当知识图谱为无向图时,边可以表示关系不具有方向性或关系是双向的(如“朋友”关系)。指向一个节点的边可称作该节点的入边,从一个节点指出(即指向其它节点)的边可称作该节点的出边。
知识图谱的实例可称作数据图(或称为图数据,在不引起混淆的情况下,数据图也可以称为知识图谱),数据图包含具体的知识数据(也可以称为实例数据,包括节点实例数据和边实例数据),每条知识可表示为三元组,该三元组包含两个实体及其关系。例如,在社交网络图谱中,既可以有“人”的实体,如张三和李四,也可以有“公司”的实体,如A公司和B公司。人和人之间的关系可以是“朋友”或“同事”,人与公司之间的关系可以是“现任职于”或“曾任职于”。关系/边可以具有方向性,例如,“朋友”关系可以是双向的,“现任职于”或“曾任职于”的关系可以是单向的。
用于构建知识图谱的知识数据可以来源于各种业务,这些数据有着业务来源广泛、关系复杂、数据量巨大的特点,构建得到的知识图谱有着较为丰富的信息。基于知识图谱的数据查询有着许多应用,如搜索、推荐、智能问答以及图特征挖掘等。在图特征挖掘场景中,在知识图谱构建过程中由于构建图谱的信息不准确可能会使得构建得到的图谱并不完整,为了解决其不完整性,往往需要根据当前已有图谱数据挖掘出图特征,再根据特征通过训练补正图谱。图谱特征挖掘根据实际需求不同以及图谱构建的约束不同,会有不同的特征需求。
在一些实施例中,为了使用图数据,首先需要进行图查询,从中提取部分相关子图数据处理。例如,有的场景需要找出指定子图形状,有的场景需要找出指定路径等。找出特定的子图结构可以用于辅助判断是否有违规或违法行为,比如,通过子图结构可以找出一个用户A转钱到另外一个用户B,用户B转账到用户C,用户C又转账到用户A的情况,该闭环情况下可能存在洗钱行为。找出指定路径可以用于金融风控,比如,通过指定一个庄家和赌徒,找出他们之间的所有路径,该路径上的节点可能就存在赌博APP、支付账户等,这些信息可以用于辅助风控。
知识图谱的图数据是一种图结构,为了满足相关场景的应用需求(如前述查询需求),通常可以通过图查询技术来完成特定图关系(如查询图)的查找。查询图从知识图谱本体定义数据(schema)层面定义了需要查找实例数据的节点、边以及彼此间的连接关系。查询图可以与用户的查询请求对应,能够反映用户输入的查询条件。通过查询图查找的核心问题是判断图数据(如数据图)中是否包含满足查询图所描述的节点、边及其连接关系的子图,因此也称作子图匹配问题。
如前所述,在一些应用场景下知识图谱的数据规模往往是巨大的。因此,基于知识图谱的数据规模,可以将知识图谱单机存储或分布式存储,相应的,基于知识图谱的数据查询可分为单机和分布式两种方式。单机可以是指从一个计算设备中进行查询,分布式可以是指需要从多个计算设备中进行查询。
例如,在图规模较小场景下(例如,点边个数小于100万、500万、1000万)可以在单个计算设备上完成图数据的存储和计算,但随着图规模的上升,单机无法支撑如此大的图规模,此时则会将图拆分成为若干个部分,放置在不同计算单元中进行加速计算。当从单机扩展成为分布式系统时,计算单元之间的交互成为了一种必然,图规模越大,挖掘时产生的消息量的规模越大,当消息量过多超过计算单元的内存上限时,很有可能会造成计算任务的失败。其中,消息可以是指的各个机器节点之间的通信数据。
在一些实施例中,针对消息量过大而可能造成计算任务失败的问题,可以考虑对产生的消息进行压缩,以减小各个节点间的通信消息量。一种消息压缩方式为基于节点的压缩方式,另一种方式为集合式的压缩方式。
参见图2,图2是根据本说明书一些实施例所示的查询图(p,pattern graph)和数据图(D,data graph)的示例性示意图。查询图p中的节点和边应当看成是知识图谱本体定义数据(schema)层面中的节点定义和边定义,或者可以看作是节点字段和边字段。数据图D中的节点和边应当看成是节点定义和边定义下的实例。作为示例,u1为“用户”节点,v1为“张三”这一具体的用户。
在一些实施例中,可以基于节点的压缩方式对分布式查询过程中,计算单元之间的消息进行压缩。基于节点的压缩方式主要原则的只记录节点数据,省去边数据。使用查询图P进行查询从数据图D中查询的数据使用基于节点的压缩方式进行压缩后可以如以下表格进行表示。
查询时,计算单元基于查询图中的节点,在本地子图数据中依次遍历与查询图中某节点对应的实例数据,并填入表格下方。例如,u1节点对应的实例数据为v1,u2节点对应的实例数据为v2,u3节点对应的实例数据为v3。以查询图中的u4节点为例,u4与u1、u2、u3都有边,因此计算单元在本地的图数据中查找到与v1、v2、v3都有边的实例数据有v4、v5、v6,因此可以确定u4节点对应的实例数据包括v4、v5、v6。按照该方式对查询图中的节点进行遍历,即可查询到满足该查询图的实例数据同时实现了对消息的压缩。该种压缩方式其压缩率较高,可以大幅度地减小消息量,但是其压缩后的消息中仅携带有点的信息,未包含边的信息,无法应对需要边特征的场景。
参见图3,图3是根据本说明书一些实施例所示的子图压缩的示例性示意图。该消息压缩方式主要考虑的是将查询结果按照集合的方式进行排布,以对查询结果中的冗余信息进行压缩。如图3左侧示出了查询得到的3条路径,通过压缩,只保留了一份B节点的数据。可以看出,这样的压缩方式可以缩减冗余数据带来的内存消耗,具有重复信息只出现一次和依然带有结构(边信息)的特点。
集合式的压缩方式相较于基于节点的压缩方式,减少了冗余的信息表达,以及带有完整的点图结构信息,可以应对不同的场景。然而,由于其涵盖了全量的信息,导致其压缩率并不高,在大规模或超大规模场景下节点的性能(例如,内存、存储性能)依然是计算的瓶颈。
有鉴于此,需要提供一种自适应消息压缩的图数据查询方法,旨在解决受限于机器存储容量以及计算性能,对于规模较大的图,需要进行分布式查询,并由于图查询过程中消息规模多大而导致的计算失败问题。需要说明的是,以上例子仅出于示例的目的,并不旨在对本说明书所披露的技术方案的应用场景进行限定,以下通过对附图的描述详细阐述本说明书披露的技术方案。
图1是根据本说明书的一些实施例所示的图数据查询的应用场景的示例性示意图。
如图1所示,场景100可以包括处理设备110和多个计算设备120。在一些实施例中,每个计算设备120可以称作一个计算单元。
处理设备110可以包括各类具有信息收发功能的计算设备,如智能电话、膝上型计算机、台式计算机、服务器等。在一些实施例中,服务器可以是独立的服务器或者服务器组,该服务器组可以是集中式的或者分布式的。在一些实施例中,服务器可以是区域的或者远程的。在一些实施例中,服务器可在云平台上执行。例如,该云平台可包括私有云、公共云、混合云、社区云、分散式云、内部云等中的一种或其任意组合。
在一些实施例中,在一些实施例中,图数据可以被拆分为多个子图数据并分布式存储在多个计算单元处。例如,处理设备110可以将图数据拆分成多个子图,将这些子图划分发给多个计算设备120存储,以供查询。在一些实施例中,处理设备110也可以对划分的子图分成若干分组,并将这些分组后的子图分发给多个计算设备120。例如,参见图5,图5是根据本说明书一些实施例所示的查询图数据的示例性示意图。其中,510、520、530分别表示对图数据进行拆分后得到的多个子图数据。计算单元1、计算单元2、计算单元3分别表示存储对应子图数据的设备,该设备可以作为本说明书一些实施例所披露的流程步骤的执行主体。在一些实施例中,图数据可以基于边切分的方式拆成多个子图数据,然后分发给多个计算设备分别存储。其中,边切分的方式是指将图数据中的节点分为若干组,且每组中包含其节点之间的边。不难理解,这样拆分后,部分边会在不同节点上同时存储,或称为边冗余存储。
图数据拆分可以一定程度上解决单机资源受限的问题,即提高了可计算图数据的规模。
计算设备120也可以包括各类具有信息收发功能的计算设备,如智能电话、膝上型计算机、台式计算机、服务器等。多个计算设备之间可以通过网络,例如,有线网络或无线网络进行通信,在相互之间进行信息的接收与发送。在一些实施例中,每个计算设备120可以接收用户输入的查询条件,并基于查询条件确定查询数据结构,以及将查询数据结构在一个以上计算单元中流转,以便各计算单元补充查询数据结构中的字段所对应的实例数据。在一些实施例中,接收用户输入的查询条件的计算单元可以作为起始节点,相应地,最后将查询数据结构中的字段对应的实例数据补充完整的计算单元可以作为终止节点,终止节点可以返回查询结果。查询结果可以是指包含了目标节点和/或目标边的相关实例数据的查询数据结构。
在一些实施例中,用户输入的查询条件可以由处理设备110接收,并将查询条件分发给多个计算设备120。需要说明的是,图1中的虚线框表示处理设备110非必须,处理设备110可以作为中心服务器辅助各计算设备120执行本说明书一些实施例所披露的方法,处理设备110也可以省去,其执行的一个或多个功能也可以由某计算设备120执行。本说明书实施例对此不作限定。
图4是根据本说明书一些实施例所示的图数据查询方法的示例性流程图。在一些实施例中,流程400可以由处理设备或计算单元(例如,中心服务器或起始节点的实例数据所在的计算单元)执行。例如,流程400可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程400。流程400可以包括以下操作。
步骤402,获取用户输入的查询条件。
在一些实施例中,查询条件可以用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边。
查询图是一种包含节点和边的图结构。通过查询图可以从数据图中获取其节点和边对应的实例数据。例如,参见图2,图2中的P(pattern graph)所对应的图结构为查询图,图中的u1-u4为查询图中的节点,连接各个节点的为边。
数据图(也可称为图数据)也是一种包含节点和边的图结构。例如,图2中的D(datagraph)所对应的图结构为数据图,图中的v1-v8为数据图中的节点,连接各个节点的为边。数据图中的每一个节点和边都是一个实例数据。
查询图中的节点可以是对数据图中相应的节点的实例数据的定义或概念或名称,边也可以是对数据图中相应的边实例数据的定义或概念或名称。例如,仍以图2中的查询图P和数据图D为例,P图中的u1可以表示用户,u3可以表示商家,u1与u3之间的边表示交易,在数据图D中,与u1对应的是实例数据v1表示张三,v3表示XXX店铺,v1与v3之间的边可以表示张三在XXX店铺进行了消费。又例如,u4可以表示账号,u1与u4之间的边表示持有关系,则数据图D中v4表示某个具体的账号(比如,123456789),v1与v4之间的边表示账号123456789属于张三。
在一些实施例中,在查询条件中,可以以字段的形式来描述查询图。例如,在查询条件中可以包括查询图定义字段。示例性地,以下文实施例所示的例子来说明查询条件。
假设用户需要查找使用了相同主演的两个导演。则在用户输入的查询条件中可以定义多个节点,比如,A、B、C、D、E,以及相应的边,比如,C——>A、D——>B、C——>E、D——>E,在查询条件中可以用字段的形式描述查询图。示例性地,查询图可以被描述为:
GraphStructure{
A、B[FilmDirector] //定义了A、B两个导演
C、D[Film]//定义了C、D两部电影
E[FilmStar] //E是电影明星
C——>A[directFilm] asF1//C的导演是A
D——>B[directFilm] asF2//D的导演是B
C——>E[starOffilm] asF3//C的主演是E
D——>E[starOffilm] asF4//D的导演也是E
}
其中,“//”后的文字为对字段的描述,并不用于对查询图进行定义后约束查询条件。
同样地,在查询条件中也可以用字段的形式来指定需要返回实例数据的目标节点和/或目标边。示例性地,该字段可表示为:
Action{
get(A.name,B.name,F1.name) //获取A和B两个导演的名字,以及边F1的名字。
在一些实施例中,查询条件中还可以包括过滤规则,例如,在上述例子中,查询条件中还可以包括规则字段。示例性地,该字段可以表示为:
Rule{
R1:A.ID<B.ID //当图结构是对称的时,通过该规则可以避免返回两条相同的数据
}
在一些实施例中,计算单元可以通过输入接口接收用户输入的查询条件。在一些实施例中,计算单元也可以通过从存储设备、数据库读取等方式获取得到用户输入的查询条件。
在一些实施例中,用户可以通过文字输入、语音输入等方式输入查询条件。
需要说明的是,以上例子仅出于示例的目的,并不旨在对用户输入的查询条件的形式进行限定,例如,用户也可以以图结构的形式输入查询条件,在图结构中对目标节点和/或目标边添加标记的方式,指定需要返回其对应的实例数据。在一些实施例中,当用户输入为图结构形式时,可以将图结构形式的查询条件转换为字段形式的查询条件,以便于计算单元处理。
另外为了便于理解与说明,在后文实施例中,将以查询图为A-B-C,图数据如图5中510-530(拆分后)所示为例,其中,510中的a可以表示节点A的实例数据,520中的b1-bn可以表示节点B的实例数据,530中的c1-cm可以表示节点C的实例数据,连接各个实例数据的线条表示边。基于该示例进行说明的图数据查询方法可以作为图数据查询的基本查询方式,对于复杂结构的查询图或图数据,例如,图2所示例的复杂图结构的查询,可以将其分解为多个基本查询,按照本说明书实施例所披露的技术方案的方式执行。
步骤404,基于所述查询条件,确定查询数据结构。
查询数据结构可以是用来记录查询得到的实例数据的一种数据结构。例如,表格。
在一些实施例中,查询数据结构可以为二维数据表,其中列对应节点字段和边字段,行用于记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。示例性地,二维数据表形式的查询数据结构可以如图6所示,图6是根据本说明书一些实施例所示的查询数据结构的示例性示意图。其中,空白的查询数据结构可以如610所示,表格中每一列对应一个节点字段或一个边字段,例如,A集合、B集合、A-B边等。从表格中的第二行开始(或看作是有实例数据的第一行,为了简洁,图6中仅示例出了一行,但是应当理解,表格可以具有多行)每一行用于记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。在一些实施例中,也可以约定将每一行实例数据看作是一个单独的查询数据结构。
在一些实施例中,查询数据结构中的节点字段和边字段分别具有记录标识。记录标识可以是预先设定的某个符号、数字、字母、特殊符号(比如!、#、¥等)等。代位标识可以是一个指定的标识符号,用于代替实例数据。代位标识可以用区别于记录标识的符号、数字、字母、特殊符号进行表示,例如,可以使用[]+节点本体定义数据的某个字母或数字等,例如,[A]、[B]等。代位标识可以用于代替与查询图相关但不需要返回的实例数据。
在一些实施例中,目标节点字段(目标节点对应的字段)对应的记录标识以及目标边字段(目标边对应的字段)对应的记录标识指示需要补充实例数据,其余节点字段(非目标节点对应的字段)对应的记录标识和其余边字段(非目标边对应的字段)对应的记录标识指示需要补充实例数据的代位标识。示例性地,沿用上述示例,假设查询图为A-B-C,指定需要返回实例数据的节点为A、C节点,需要返回实例数据的边为B-C边。此时,根据查询条件确定的具有记录标识的查询数据结构可以如图6的620所示。其中,需要返回实例数据的记录标识可以表示为[set],不要返回实例数据的记录标识表示为[one]或者[NA]。需要说明的是,在一些实施例中,可以用[one]表示不需要返回实例数据的节点,用[NA]表示不需要返回实例数据的边,在另一些实施例中,也可以用[NA]表示不需要返回实例数据的节点,用[one]表示不需要返回实例数据的边。
查询图关系可以是指查询图中的节点以及各个节点之间所具有的连接关系。例如,在A-B-C的查询图中,有A、B、C三个节点,并且A、B节点和B、C节点之间具有边(A-B、B-C)。满足查询图关系则可以理解为节点字段或边字段对应的实例数据以及实例数据间的关系,应当能够与该查询图中的节点或节点间的关系匹配,例如,A节点具有实例数据a,B节点具有实例数据b1、b2、b3、b4,其中实例数据a仅与b1、b2、b3具有边,因此,满足A-B查询图关系的实例数据仅包括a、b1、b2、b3,以及它们之间的边。
在一些实施例中,处理设备可以基于查询条件中的查询图以及用户指定的需要返回实例数据的目标节点和/或目标边生成查询数据结构。在一些实施例中,处理设备也可以从其他设备处获得已生成的查询数据结构。
步骤406,将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据。
流转可以是指在各计算单元之间传输,例如,将查询数据结构从图5中的计算单元1发送至计算单元2。当查询数据结构到达某一计算单元时,该计算单元可以根据查询数据结构中的记录标识补充字段对应的实例数据或实例数据的代位标识。
结合图5和图6进行说明,基于查询条件确定的查询数据结构可以如图6的620所示,计算单元可以根据查询数据结构中的记录标识补充对应的实例数据或实例数据的代位标识。其中,实例数据的代位标识的数据量小于实例数据。例如,代位标识仅为一个符号,其数据量为1,将明显小于多个实例数据的数据量。
以图5中的计算单元1执行流程400的步骤为例,计算单元1中存储有A节点对应的实例数据a。当查询数据结构流转至计算单元1时,计算单元1可以根据查询数据结构中对应的A字段下的记录标识进行实例数据的补充。例如,620中A节点字段下的记录标识为[set],则计算单元1可以获取的A节点的实例数据,例如,510中的实例数据a。
当A计算单元1将其存储的图数据中与查询数据结构中的各字段所对应的实例数据补充完之后,可以将查询数据结构发送至下一计算单元。在本实施例中,计算单元1补充完实例数据后的查询数据结构可以如510-1所示(为了简洁,620所示的查询数据结构中的记录标识并未在510-1中体现出来),其中,A集合字段下已补充相应的实例数据a,其他字段,比如,B字段、C字段下由于计算单元1并未存储相应的数据,所以这些字段下可以表示为空,用符号[]表示。对于A-B边所对应的实例数据,由于边为冗余存储,既可以在A节点的实例数据所对应的存储单元处进行补充,也可以在B节点的实例数据所对应的存储单元处进行补充,在本说明书实施例中,通过作为入边的节点(例如,A-B中的A节点)实例数据所在的计算单元进行补充,当然,也可以由作为出边的节点(例如,A-B中的B节点)实例数据所在的计算单元。此处,A-B边集合下和B-C边集合下的实例数据为空集,在510-1中以[]进行表示。之后,计算单元1可以将查询数据结构510-1发送至下一计算单元,例如,计算单元2。
获取边实例数据的更多说明可以参见图7的步骤706的描述,此处不再赘述。
在一些实施例中,计算单元在根据记录标识补充实例数据或实例数据的代位标识至查询数据结构中时,可以同时确定其对应的节点路由,并将节点路由一并发送至下一计算单元。关于节点路由以及如何将查询数据结构在各计算单元之间流转的更多说明可以参见图7步骤714的相关描述,此处不再赘述。
计算单元2在接收到查询数据结构510-1之后,可以进一步地根据如620所示的查询数据结构中的记录标识继续获取实例数据。需要说明的是,记录标识可以随着查询数据结构510-1发送至计算单元2,(例如,将记录标识与实例数据同时记录在同一查询数据结构中)也可以单独发送至计算单元2,本实施例对此不作限定。
计算单元2可以根据查询数据结构620中所示例的记录标识从本地存储的实例数据中获取相应的实例数据或实例数据的代位标识。在620中,B节点字段下的记录标识为[one]或者[B],其指示并不需要获取B节点对应的实例数据,因此,计算单元2可以将B节点所对应的实例数据的代位标识补充至查询数据结构510-1中,进一步地,A-B边字段下的记录标识为[NA],其也指示不需要获取相应的边数据,因此,计算单元2可以将A-B边所对应的实例数据的代位标识补充至查询数据结构510-1中,例如,以[NA]作为边的代位标识。补充完之后,可以得到查询数据结构520-1,并在同时获取B节点所对应的节点路由,然后根据节点路由将查询数据结构520-1发送给计算单元3。
计算单元3在接收到查询数据结构520-1后,计算单元3根据查询数据结构620中所示例的记录标识可以得知,需要返回实例数据的节点包括C节点,需要返回实例数据的边包括了B-C边,则计算单元3可以从本地存储的实例数据中获取C节点所对应的满足查询图关系的节点实例数据和B-C边对应的满足查询图关系的边实例数据,并添加至查询数据结构,得到包含所述目标节点和/或目标边的相关实例数据的查询数据结构。最终的查询数据结构如530-1所示。
在本说明书一些实施例中,通过用户输入的查询条件确定查询数据结构,并通过在一个以上计算单元中流转以对查询数据结构中的实例数据进行补充,由于在补充实例数据时,仅会对用户指定的需要返回的目标节点和/或目标边的实例数据进行补充,其他不关心的节点和边的实例数据用代位标识进行表示,代位标识的数据量小于实例数据的数据量,从而达到对查询所产生的消息量进行压缩的目的,有效地避免了出现由于消息量过大而带来的计算失败的问题,同时满足用户的查询要求。
以图5为例,查询图为A-B-C,目标节点为A,目标边为B-C。若按照集合式压缩方式(假设不存在冗余信息,也相当于不对消息进行压缩)则在计算单元1时,一共有1个实例数据a,则产生的消息量为1(为方便示例,不妨假设一个节点实例数据的消息量、一条边的实例数据的消息量以及一个实例数据的代位标识的消息量均为1);由于存在n个实例数据b与实例数据a具有边,因此计算单元1会分别针对每个实例数据b发送一份查询数据表格,计算单元1到计算单元2的消息量为n×1=n;在计算单元1将查询数据表格发送给计算单元2后,计算单元2查询到n个实例数据b,并分别填写到对应的查询数据表格中;由于每个实例数据b分别有实例数据c1~cm存在边连接,因此计算单元2又会分别针对实例数据c发送一份查询数据表格,计算单元2到计算单元3的消息量为m×n×2,其中2为一份查询数据表格的消息量;计算单元2之后将查询数据表格发送至计算单元3,计算单元3将实例数据c分别填写到对应的查询数据表格中,查询完成。此时,为了传输查询数据表格,总的消息量即为n+2n*m,其中,乘积项n*m会造成消息的指数增长。而采用本说明书实施例所披露的技术方案,由于在计算单元2处,B节点对应的实例数据用其对应的代位标识进行表示,而代位标识的数据量为1,则为了传输数据查询表格总的消息量为1+1+m,相比之下消息量得到了极大的压缩。其中,第一个1表示实例数据a的消息量,第二个1表示节点B的代位标识的消息量,m表示m条B-C的边实例数据的消息量。
图7是根据本说明书一些实施例所示的计算单元补充查询数据结构中实例数据的示例性流程图。在一些实施例中,流程700可以由处理设备或计算单元(例如,查询图中起始节点的实例数据所在的计算单元)执行。例如,流程700可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程700。流程700可以包括以下操作。
在一些实施例中,为了将查询数据结构在一个以上计算单元中流转,可以通过查询图中起始节点的实例数据所在的计算单元执行以下步骤,以对对查询数据结构中各字段下的实例数据进行补充。
在一些实施例中,起始节点可以根据出边确定,例如,当一个节点只有出边时,可以将该节点确定为起始节点。在一些实施例中,也可以根据查询图的语义指定起始节点,例如,查询图是想查询某产品用户的社会关系,那么该某产品用户可以确定为起始节点。
步骤702,获取查询数据结构。
在一些实施例中,起始节点所在的计算单元(在本说明书后文实施例中用第一计算单元表示)可以根据用户输入的查询条件确定查询数据结构。例如,第一计算单元可以遍历查询图,每一个节点和每一条边对应一个字段,并根据查询条件中指定的需要返回实例数据的目标边和/或目标节点确定各字段对应的记录标识,得到查询数据结构。
在一些实施例中,第一计算单元也可以从其他设备,例如,中心服务器获取得到查询数据结构。查询数据结构由中心服务器根据用户输入的查询条件确定。
步骤704,在本地子图数据中确定起始节点对应的节点实例数据。
子图数据可以是指从知识图谱对应的图数据中拆分出来的部分图数据。
在一些实施例中,计算单元通过查询数据结构中起始节点所对应的节点字段,从本地子图数据中确定其对应的节点实例数据。例如,计算单元可以通过数据查询的方式从其本地的子图数据中确定与起始节点对应的节点实例数据。以图5所示的查询图A-B-C为例,计算单元可以在本地的子图数据中确定与起始节点A对应的节点实例数据a。
步骤706,基于所述查询数据结构中的边字段,确定各节点实例数据的边实例数据,使得边实例数据对应的边字段包含在所述查询数据结构中。
仍以图5所示的查询图A-B-C为例,查询数据结构中的边字段包括了A-B字段、B-C字段,根据A-B边字段,可以确定节点实例数据a的边实例数据。假设在计算单元本地的子图数据中,节点实例数据a的边包括a-b1、a-b2、……、a-bn、a-d1、a-d2、……、a-dl,由于查询数据结构只包含A-B边字段,因此计算单元只考虑a-b1、a-b2、……、a-bn。
在一些实施例中,各计算单元在存储节点和/或边的实例数据时,可以对边实例数据冗余存储,例如,对于A-B边的实例数据,既可以在A节点的实例数据所在的计算单元处存储,也可以在B节点的实例数据所在的计算单元处存储。但是在获取边实例数据时,可以通过入边进行获取,例如,A节点所对应的实例数据所在的计算单元,可以获取A-B边对应的实例数据,B节点所对应的实例数据所在的计算单元可以对A-B边对应的实例数据不作处理,反之亦然。
步骤708,基于所述边实例数据确定是否对所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。
同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识,是指查询数据结构中同一行记录的实例数据应当满足查询图关系。这里以图2所示的图数据为例,当u1包含v1,u2包含v2,u3包含v3时,满足查询图p的节点u4的实例数据可以包括v4、v5、v6,因此,(v1)、(v2)、(v3)、(v4、v5、v6)组成满足查询图p所限定的关系,可以存储在同一行;当u1包含v1,u2包含v2,u3包含v4时,满足查询图p的节点u4的实例数据包括v3、v5(其余节点实例数据均未同时与v1、v4、v2连接),因此,(v1)、(v2)、(v4)、(v3、v5)可以存储在同一行。
为了确保同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识,需要对查询数据结构进行行拆分。在一些实施例中,第一计算单元可以基于边的实例数据中的非本地节点确定是否对查询数据结构进行拆分。
第一计算单元可以对于步骤704得到的每个节点实例数据,确定其边实例数据中的非本地节点实例数据标识的集合。节点实例数据的标识可以用各种形式进行表示,例如,字符、符号、数字等。在本说明书实施例中,用a表示A节点所对应的实例数据的标识,用b1、b2等表示B节点所对应的实例数据的标识。
对于起始节点对应的节点实例数据的边实例数据,沿用上述示例,即A-B边的实例数据,其另一个节点不在第一计算节点本地。例如,a-b1、a-b2、……、a-bn,其中的b1、b2、……、bn即为非本地节点实例数据。
第一计算单元可以在当各节点实例数据的非本地节点实例数据标识的集合不相同时,将所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。
这里对图5所示的例子进行一些改变,以说明拆分原则。假如第一计算节点中存在节点实例数据a1和a2,其中a1存在边a1-b1、a1-b2,a2存在边a2-b1、a2-b2,此时可以将(a1、a2)、(b1、b2)存储在一行,如图8中的查询数据结构810;如果a1存在边a1-b1、a1-b2,a2存在边a2-b1、a2-b3,此时节点实例数据a1、a2对应的非本地节点实例数据标识的集合分别为{b1,b2}和{b1,b3},两个集合不同,因此需要进行拆分。
在一些实施例中,第一计算单元可以将所述查询数据结构按行进行拆分得到两个以上查询数据结构,使得具有相同非本地节点实例数据标识的集合的节点实例数据及其边实例数据对应同一个查询数据结构。续前例,如果a1存在边a1-b1、a1-b2,a2存在边a2-b1、a2-b3,则可以用图8所示的查询数据结构820来记录(a1)、(b1、b2),另一查询数据结构830来(a1)、(b1、b3),进而可以继续满足前述要求。
步骤710,当记录标识指示需要补充实例数据时,基于具有边实例数据的所述节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识。
在查询数据结构拆分好以后,第一计算单元则可根据记录标识补充相应的实例数据了。当需要补充实例数据时,为了满足前述要求,对于步骤704得到的没有边数据的节点实例数据是不会被记录在查询数据结构中。这里对图5所示的例子再次进行一些改变,以说明节点实例数据的补充原则。假如第一计算节点中存在节点实例数据a和a’,其中a存在边a1-b1、a1-b2,a’没有边,此时不会在查询数据结构中存储节点实例数据a’,而只会记录节点实例数据a。应当理解,节点的实例数据可以包括该实例数据的各种属性或特征,在一些实施例中,可以根据用户指定的实例数据从该节点的各类属性中选取部分或全部,并记录在查询数据结构中。
步骤712,当记录标识指示需要补充实例数据时,基于边实例数据补充各查询数据结构中对应边字段下的实例数据,否则在该边字段下补充其实例数据的代位标识。
例如,A-B边的记录标识指示并不需要补充实例数据,则第一计算单元在该字段下补充其实例数据的代位标识,比如,[NA]。按照图5的示例,补充实例数据后的查询数据结构可以如510-1所示。
在一些实施例中,当查询数据结构中使用代位标识记录某边的实例数据时,为了保证后续的计算单元能获取满足查询图关系的其他实例数据,需要针对每一查询数据结构生成对应的节点路由。因此,流程700还可以包括步骤714。
步骤714,根据所述边实例数据确定下一计算单元以及各查询数据结构的节点路由。
节点路由可以包括对应于其查询数据结构的所述各边实例数据包含的非本地节点的实例数据标识。例如,第一计算单元会针对查询数据结构510-1生成其对应的节点路由,节点路由中包括非本地节点实例数据b1、b2、b3、…、bn的标识。应当理解,节点实例数据的标识相对于节点实例数据的数据量是很小的,因此采样这样的方式传输数据,依然能有效压缩消息量。
步骤716,将查询数据结构及其节点路由发送到所述下一计算单元。
在一些实施中,第一计算单元可以将查询数据结构及其节点路由通过网络发送到下一计算单元。以图5为例,下一计算单元可以是某一个中间节点,如B节点,对应的实例数据所在的第二计算单元。
图9是根据本说明书另一些实施例所示的补充实例数据的示例性流程图。在一些实施例中,流程900可以由处理设备或计算单元(例如,查询图中某一中间节点的实例数据所在的计算单元)执行。例如,流程900可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程900。流程900可以包括以下操作。
在一些实施例中,为了将所述查询数据结构在一个以上计算单元中流转,可以通过查询图中某一中间节点的实例数据所在的计算单元(在本实施后文中用第二计算单元代替)执行以下步骤,以对查询数据结构各字段下对应的实例数据或实例数据的代位标识进行补充。
步骤902,获取查询数据结构及其对应的节点路由。
在一些实施中,第二计算单元可以从起始节点对应的实例数据所在的计算单元或某一其他中间节点对应的实例数据所在的计算单元处接收查询数据结构及其对应的节点路由。节点路由可以包括其对应的查询数据结构中当前计算单元(例如,该中间节点所对应的计算单元)需要在本地子图数据查询的节点实例数据标识。
关于查询数据结构以及节点路由的更多说明可以参见图7各步骤的相关描述,此处不再赘述。
步骤904,基于所述节点路由,在本地子图数据中确定各节点实例数据标识对应的节点实例数据。
在一些实施例中,第二计算单元在接收到上一计算单元(例如,第一计算单元)根据节点路由发送过来的查询数据结构和节点路由后,可以根据节点路由中所包含的各节点实例数据标识,从本地图数据中获取其对应的节点实例数据。
步骤906,基于所述查询数据结构中的边字段,确定各节点实例数据的边实例数据,使得边实例数据对应的边字段包含在所述查询数据结构中。
例如,第二计算单元可以根据查询数据结构中的A-B或B-C字段,相应地确定B节点下的边实例数据,例如,b1-c1边等。对于B节点与除C节点以外的边,第二计算单元则不会关注。
步骤908,基于所述边实例数据确定是否对所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。
与步骤708类似。这里依然通过对图5的示例进行一些变化进行说明。假设,b1与c1、c2有边的关系,b2与c1、c2、c4有边的关系,此时,b1和b2的非本地节点集合并不相同(b1的非本地节点集合为c1、c2,b2的非本地节点集合为c1、c2和c4),那么b1、b1-c1、b1-c2和b2、b2-c1、b2-c2、b2-c4就不在同一个满足查询图关系的数据图里,也就是说,查询图会对应有多个子图数据,此时,就需要对查询数据结构进行拆分,以使得各查询数据结构能够与查询图对应的多个数据图像分别对应。因此,此时可以对查询数据结构做进一步拆分,以存储满足查询图关系的不同子图数据。
步骤910,当记录标识指示需要补充实例数据时,基于具有边实例数据的节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识。
步骤912,当记录标识指示需要补充实例数据时,基于边实例数据补充各查询数据结构中对应边字段下的实例数据,否则在该边字段下补充其实例数据的代位标识。
步骤914,根据所述边实例数据确定下一计算单元以及各查询数据结构的节点路由。
步骤916,将查询数据结构及其节点路由发送到所述下一计算单元。
在一些实施例中,第二计算单元将查询数据结构及其节点路由发送到的下一计算单元可以是下一个中间节点对应的实例数据所在的计算单元,也可以是终止节点对应的实例数据所在的计算单元,如第三计算单元。
关于步骤908至步骤916的更多说明,可以参见图7的步骤708至716的相关描述,此处不再赘述。示例性地,第二计算单元补充完实例数据后的查询数据结构可以如图5的520-1所示。
图10是根据本说明书另一些实施例所示的补充实例数据的示例性流程图。在一些实施例中,流程1000可以由处理设备或计算单元(例如,终止节点的实例数据所在的计算单元)执行。例如,流程1000可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程1000。流程1000可以包括以下操作。
在一些实施中,为了将所述查询数据结构在一个以上计算单元中流转,还可以通过查询图中终止节点的实例数据所在的计算单元执行以下步骤,以对查询数据结构中各字段所对应的实例数据进行补充。
终止节点可以根据入边确定,例如,当一个节点只有入边时,可以将该节点确定为终止节点。在一些实施例中,也可以根据查询图的语义指定终止节点,例如,如AàBàC中的节点C。
步骤1002,获取查询数据结构及其对应的节点路由。
节点路由包括其对应的查询数据结构中当前计算单元需要在本地子图数据查询的节点实例数据标识。
步骤1004,基于所述节点路由,在本地子图数据中确定各节点实例数据标识对应的节点实例数据。
步骤1006,当记录标识指示需要补充实例数据时,基于所述节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识。
在一些实施例中,当终止节点对应的实例数据所在的计算单元补充完实例数据后,意味着查询完成,即可得到包含用户查询条件中指定的目标节点和/或目标边的实例数据的查询数据结构,进一步可以将该查询数据结构返回给用户,或返回给作为中心服务器的处理设备。示例性地,补充完实例数据后的查询数据结构可以如图5的530-1所示。
关于步骤1002至1004的更多说明可以参见图7或图9的相关描述,此处不再赘述。
应当注意的是,上述有关各流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图11是根据本说明书一些实施例所示的图数据查询系统的示例性模块图。如图11所示,该系统可以包括查询条件获取模块1110、查询数据结构确定模块1120和实例数据获取模块1130。
查询条件获取模块1110可以用于获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边。
查询数据结构确定模块1120可以用于基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段
和实例数据获取模块1130可以用于将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
关于以上所示的系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图1至图9的相关说明。
应当理解,图11所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于图数据查询系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,查询条件获取模块1110、查询数据结构确定模块1120和实例数据获取模块1130可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)用户可以根据实际的业务需求,指定需要返回的数据,实现对消息形式的自定义;(2)计算单元可以根据用户输入的查询条件,将用户描述的查询需求动态的转化为不同形式的查询数据结构,并且根据用户的需求动态的补充实例数据,在满足不同业务应用场景的情况下,自适应的压缩消息量,提高图计算效率。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (10)
1.一种图数据查询方法,所述图数据被拆分为多个子图数据并分布式存储在多个计算单元处,所述方法包括:
获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边;
基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段,所述节点字段和所述边字段分别具有记录标识,其中,目标节点字段对应的记录标识以及目标边字段对应的记录标识指示需要补充实例数据,其余节点字段对应的记录标识和边字段对应的记录标识指示需要补充实例数据的代位标识;
将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
2.根据权利要求1所述的方法,所述查询数据结构为二维数据表,其中列对应节点字段和边字段,行用于记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。
3.根据权利要求1所述的方法,子图数据包括图数据中的部分节点的实例数据以及所述部分节点对应的边的实例数据。
4.根据权利要求3所述的方法,为了将所述查询数据结构在一个以上计算单元中流转,包括通过查询图中起始节点的实例数据所在的计算单元:
获取查询数据结构;
在本地子图数据中确定起始节点对应的节点实例数据;
基于所述查询数据结构中的边字段,确定各节点实例数据的边实例数据,使得所述边实例数据对应的边字段包含在所述查询数据结构中;
基于所述边实例数据确定是否对所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识;
当记录标识指示需要补充实例数据时,基于具有所述边实例数据的节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识;
当记录标识指示需要补充实例数据时,基于所述边实例数据补充各查询数据结构中对应边字段下的实例数据,否则在该边字段下补充其实例数据的代位标识;
根据所述边实例数据确定下一计算单元以及各查询数据结构的节点路由,其中,节点路由包括对应于其查询数据结构的各所述边实例数据包含的非本地节点的实例数据标识;
将查询数据结构及其节点路由发送到所述下一计算单元。
5.根据权利要求3所述的方法,为了将所述查询数据结构在一个以上计算单元中流转,包括通过查询图中某一中间节点的实例数据所在的计算单元:
获取查询数据结构及其对应的节点路由;所述节点路由包括其对应的查询数据结构中,当前计算单元需要在本地子图数据查询的节点实例数据标识;
基于所述节点路由,在本地子图数据中确定各节点实例数据标识对应的节点实例数据;
基于所述查询数据结构中的边字段,确定各节点实例数据的边实例数据,使得所述边实例数据对应的边字段包含在所述查询数据结构中;
基于所述边实例数据确定是否对所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识;
当记录标识指示需要补充实例数据时,基于具有所述边实例数据的节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识;
当记录标识指示需要补充实例数据时,基于所述边实例数据补充各查询数据结构中对应边字段下的实例数据,否则在该边字段下补充其实例数据的代位标识;
根据所述边实例数据确定下一计算单元以及各查询数据结构的节点路由,其中,节点路由包括其查询数据结构对应的各所述边实例数据包含的非本地节点的实例数据标识;
将查询数据结构及其节点路由发送到所述下一计算单元。
6.根据权利要求4或5所述的方法,所述基于所述边实例数据确定是否对所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识,包括:
对于每个所述节点实例数据,确定其边实例数据中的非本地节点实例数据标识的集合;
当各所述节点实例数据对应的非本地节点实例数据标识的集合不相同时,将所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识。
7.根据权利要求6所述的方法,所述将所述查询数据结构按行进行拆分得到两个以上查询数据结构,以使得同一查询数据结构中的行记录满足查询图关系的节点字段和边字段的实例数据和/或实例数据的代位标识,包括:
将所述查询数据结构按行进行拆分得到两个以上查询数据结构,使得具有相同非本地节点实例数据标识的集合的节点实例数据及其边实例数据对应同一个查询数据结构。
8.根据权利要求3所述的方法,为了将所述查询数据结构在一个以上计算单元中流转,包括通过查询图中终止节点的实例数据所在的计算单元:
获取查询数据结构及其对应的节点路由;所述节点路由包括其对应的查询数据结构中,当前计算单元需要在本地子图数据查询的节点实例数据标识;
基于所述节点路由,在本地子图数据中确定各节点实例数据标识对应的节点实例数据;
当记录标识指示需要补充实例数据时,基于所述节点实例数据补充各查询数据结构中对应节点字段下的实例数据,否则在该节点字段下补充其实例数据的代位标识。
9.一种图数据查询系统,所述图数据被拆分为多个子图数据并分布式存储在多个计算单元处,所述系统包括:
查询条件获取模块,用于获取用户输入的查询条件;其中,所述查询条件用于描述查询图、以及指定查询图中需要返回实例数据的目标节点和/或目标边;
查询数据结构确定模块,用于基于所述查询条件,确定查询数据结构;所述查询数据结构包括查询图中节点和边分别对应的节点字段和边字段,所述节点字段和所述边字段分别具有记录标识,其中,目标节点字段对应的记录标识以及目标边字段对应的记录标识指示需要补充实例数据,其余节点字段对应的记录标识和边字段对应的记录标识指示需要补充实例数据的代位标识;
实例数据获取模块,用于将所述查询数据结构在一个以上计算单元中流转,以便计算单元补充字段对应的实例数据或实例数据的代位标识,进而使得查询数据结构中包含所述目标节点和/或目标边的相关实例数据;其中,实例数据的代位标识的数据量小于实例数据。
10.一种图数据查询装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1-8任一项所述的图数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210418826.4A CN114564571B (zh) | 2022-04-21 | 2022-04-21 | 一种图数据查询方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210418826.4A CN114564571B (zh) | 2022-04-21 | 2022-04-21 | 一种图数据查询方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114564571A CN114564571A (zh) | 2022-05-31 |
CN114564571B true CN114564571B (zh) | 2022-07-29 |
Family
ID=81721300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210418826.4A Active CN114564571B (zh) | 2022-04-21 | 2022-04-21 | 一种图数据查询方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114564571B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113128231B (zh) * | 2021-04-25 | 2024-09-24 | 深圳市慧择时代科技有限公司 | 一种数据质检方法、装置、存储介质和电子设备 |
CN117290560B (zh) * | 2023-11-23 | 2024-02-23 | 支付宝(杭州)信息技术有限公司 | 图计算任务中获取图数据的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157943A (zh) * | 2021-04-15 | 2021-07-23 | 辽宁大学 | 面向大规模金融知识图谱的分布式存储及可视化查询处理方法 |
CN113792159A (zh) * | 2021-09-16 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 一种知识图谱数据融合方法和系统 |
WO2022041226A1 (zh) * | 2020-08-31 | 2022-03-03 | 西门子(中国)有限公司 | 一种基于知识图谱的数据融合方法、装置及电子设备 |
CA3130236A1 (en) * | 2020-09-09 | 2022-03-09 | Royal Bank Of Canada | Web services for data aggregation and application for path traversal in knowledge graphs |
CN114218400A (zh) * | 2021-12-13 | 2022-03-22 | 上海交通大学 | 基于语义的数据湖查询系统及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9053210B2 (en) * | 2012-12-14 | 2015-06-09 | Microsoft Technology Licensing, Llc | Graph query processing using plurality of engines |
CN103279546B (zh) * | 2013-05-13 | 2017-03-01 | 清华大学 | 图数据查询方法 |
US10901999B2 (en) * | 2017-10-23 | 2021-01-26 | International Business Machines Corporation | Graph-based searching for data stream |
US11675785B2 (en) * | 2020-01-31 | 2023-06-13 | Oracle International Corporation | Dynamic asynchronous traversals for distributed graph queries |
CN113553477B (zh) * | 2020-04-23 | 2024-06-25 | 阿里巴巴集团控股有限公司 | 一种图的拆分方法和装置 |
CN111651641B (zh) * | 2020-05-29 | 2023-08-29 | 全球能源互联网研究院有限公司 | 一种图查询方法、装置及存储介质 |
CN114003775A (zh) * | 2021-10-29 | 2022-02-01 | 支付宝(杭州)信息技术有限公司 | 图数据处理、查询方法及其系统 |
-
2022
- 2022-04-21 CN CN202210418826.4A patent/CN114564571B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022041226A1 (zh) * | 2020-08-31 | 2022-03-03 | 西门子(中国)有限公司 | 一种基于知识图谱的数据融合方法、装置及电子设备 |
CA3130236A1 (en) * | 2020-09-09 | 2022-03-09 | Royal Bank Of Canada | Web services for data aggregation and application for path traversal in knowledge graphs |
CN113157943A (zh) * | 2021-04-15 | 2021-07-23 | 辽宁大学 | 面向大规模金融知识图谱的分布式存储及可视化查询处理方法 |
CN113792159A (zh) * | 2021-09-16 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 一种知识图谱数据融合方法和系统 |
CN114218400A (zh) * | 2021-12-13 | 2022-03-22 | 上海交通大学 | 基于语义的数据湖查询系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114564571A (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114564571B (zh) | 一种图数据查询方法和系统 | |
CN109739939A (zh) | 知识图谱的数据融合方法和装置 | |
CN107515878B (zh) | 一种数据索引的管理方法及装置 | |
US20120158791A1 (en) | Feature vector construction | |
CN111046237B (zh) | 用户行为数据处理方法、装置、电子设备及可读介质 | |
Gong et al. | Keywords‐driven web APIs group recommendation for automatic app service creation process | |
CN114428692B (zh) | 数据发送、数据接收方法、装置、计算机设备和存储介质 | |
CN112364102A (zh) | 一种基于区块链的大数据交易方法、装置、介质及设备 | |
Li et al. | An online and scalable model for generalized sparse nonnegative matrix factorization in industrial applications on multi-GPU | |
CN112084781A (zh) | 一种标准术语确定方法、装置及存储介质 | |
Sigley et al. | Governing the digital economy: An exploration of blockchains with Chinese characteristics | |
CN111444309B (zh) | 用于对图进行学习的系统 | |
Srivastava et al. | Scope of cloud computing in business: A compendious and methodical analysis of trends in publications and patents | |
Lee et al. | The identification of new service opportunities: a case-based morphological analysis | |
CN113011911A (zh) | 基于人工智能的数据预测方法、装置、介质及电子设备 | |
CN107679097A (zh) | 一种分布式数据处理方法、系统和存储介质 | |
Al Nuaimi et al. | Blockchain implementation framework for tracing the dairy supply chain | |
CN111191050A (zh) | 知识图谱本体模型构建的方法和装置 | |
CN113630476B (zh) | 应用于计算机集群的通信方法及通信装置 | |
CN109756556A (zh) | 一种一站式云服务生态系统 | |
CN115168609A (zh) | 一种文本匹配方法、装置、计算机设备和存储介质 | |
US8019814B2 (en) | Service for standardization of resource metadata models via social networking—arriving at an agreed upon (standard) resource meta-model via social consensus | |
CN114493850A (zh) | 基于人工智能的在线公证方法、系统及存储介质 | |
Du et al. | Multi-strategy web service discovery for smart government | |
Cheng et al. | An efficient service discovery algorithm for counting bloom filter-based service registry |
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 |