CN110209885B - 一种图查询方法及*** - Google Patents

一种图查询方法及*** Download PDF

Info

Publication number
CN110209885B
CN110209885B CN201810385839.XA CN201810385839A CN110209885B CN 110209885 B CN110209885 B CN 110209885B CN 201810385839 A CN201810385839 A CN 201810385839A CN 110209885 B CN110209885 B CN 110209885B
Authority
CN
China
Prior art keywords
query
nodes
node
edges
expansion
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
Application number
CN201810385839.XA
Other languages
English (en)
Other versions
CN110209885A (zh
Inventor
张少愚
陈云云
黄楠驹
朱辉云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810385839.XA priority Critical patent/CN110209885B/zh
Publication of CN110209885A publication Critical patent/CN110209885A/zh
Application granted granted Critical
Publication of CN110209885B publication Critical patent/CN110209885B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种图查询方法及***,所述图的直接节点和边都是以键值对的形式存储,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示,所述方法包括:获取待查询的初始直接节点;获取扩展深度和扩展条件;若扩展深度等于1,则根据所述初始直接节点获取可扩展边;若扩展深度大于1,则循环查询直至达到所述扩展深度。本发明自定义了以图的形式进行数据的存储以及查询的方法,从而实现了大量复杂、互连接、低结构化的数据的快速查询,查询效率高,灵活性好,具备较好的应用前景。

Description

一种图查询方法及***
技术领域
本发明涉及数据处理领域,尤其涉及一种图查询方法及***。
背景技术
在一些场景中,需要处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询,若使用传统的关系数据库进行管理,对于这类数据的查询会导致大量的表连接,从而导致性能问题,而且在设计使用上也不方便。
发明内容
为了解决上述技术问题,本发明提出了一种图查询方法及***。本发明具体是以如下技术方案实现的:
第一方面,一种图查询方法,所述图的直接节点和边都是以键值对的形式存储,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示,所述方法包括:
获取待查询的初始直接节点;
获取扩展深度和扩展条件;
若扩展深度等于1,则根据所述初始直接节点获取可扩展边;
若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
第二方面,一种图查询***,包括:
图形数据库,用于以键值对的形式存储所述图的直接节点和边,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示;
查询服务器,用于进行图查询,所述查询服务器包括:
初始直接节点查询模块,用于获取待查询的初始直接节点;
扩展要素获取模块,用于获取扩展深度和扩展条件;
查询模块,用于若扩展深度等于1,则根据所述初始直接节点获取可扩展边;若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
本发明提供了一种图查询方法及***,本发明自定义了以图的形式进行数据的存储以及查询的方法,从而实现了大量复杂、互连接、低结构化的数据的快速查询,查询效率高,灵活性好,具备较好的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的图查询方法实施环境示意图;
图2是本发明实施例提供的图查询方法流程图;
图3是本发明实施例提供的以图的形式示出的一个查询结果集合示意图;
图4是本发明实施例提供的以邻接表的形式对应存储的查询结果集合示意图;
图5是本发明实施例提供的获取待查询的初始直接节点之前相关流程的方法流程图;
图6是本发明实施例提供的一种图查询***框图;
图7是本发明实施例提供的查询服务器框图;
图8是本发明实施例提供的查询模块框图;
图9是本发明实施例提供的服务器结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
通常,在图形数据库(Graph Database)中,图形(Graph)中的顶点(Vertex)所代表的实体(Object)可为:人、物、客观存在的物体、抽象存在的事件、表格、任务等,图形(Graph)中的边(Edge)所代表的关系可为:依赖关系、社会关系等。图形(Graph)中的每个顶点具备顶点属性(Vertex Property),图形(Graph)中的每条边也具备边属性(EdgeProperty)。图形数据库可被应用于构建社交网络、公共交通网络、地图及网络拓谱等。
图形数据库应用图形理论存储对象之间的关系信息,相对于关系数据库,图形数据库更善于处理大量复杂、互连接、低结构化的数据。因此,图形数据库适合用于社交网络,推荐***等专注于构建关系图谱的***。在安全领域也有广泛的应用,可以用于对黑产团伙进行聚类挖掘,以及生成用户的安全画像。基于此,本发明实施例提供一种能够应用图形数据库的图查询方法及***,其可以广泛应用于安全、金融及社交等领域,方便快速地对用户信息进行挖掘,达到打击罪犯,保护用户的信息安全等效果。
参见图1,为本发明实施例提供的图查询方法实施环境示意图。该实施环境包括:请求数据查询的设备101、查询服务器102、图形数据库103和语言解析引擎104。
其中,查询服务器102为某个执行查询服务的服务器或服务器集群。另外,该数据查询的设备102,用于与请求数据查询的设备101、图形数据库103和语言解析引擎104结合来为用户提供图数据查询的服务。
请求数据查询的设备101用于获取查询指令,从而生成数据查询请求的设备,所述请求数据查询的设备101可以是服务器、智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。
图形数据库103用于存储数据,所述数据之间的关系可以通过图进行描述。具体地,所述图形数据库103可以为NoSQL数据库。NoSQL是非关系型的数据库,NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理***的统称。NoSQL用于超大规模数据的存储,例如谷歌或Facebook每天为他们的用户收集万亿比特的数据。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT***;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定键,比较容易映射复杂值的环境。
语言解析引擎104用于将请求数据查询的设备101发出的查询请求进行解析,并将解析结果传输至数据查询的设备102,以便于数据查询的设备102根据所述解析结果在图形数据库103中执行查询,并最终得到查询结果。
具体地,所述语言解析引擎104可以包括词法分析器和语法分析器。比如所述词法分析器可以选用Flex,所述语法分析器可以选用Bison。Flex是一个生成词法分析器的工具,它可以利用正则表达式来生成匹配相应字符串的C语言代码,其语法格式基本和Lex相同,适用于linux***。FLEX的输入文件称为LEX源文件,它内含正规表达式和对相应模式处理的C语言代码。LEX源文件的扩展名习惯上用.l表示。FLEX通过对源文件的扫描自动生成相应的词法分析函数int yylex(),并将之输出到名规定为lex.yy.c的文件中。使用时,可将其改名为lexyy.c。该文件即为LEX的输出文件或输出的词法分析器。也可将int yylex()加入自已的工程文件中使用。Bison是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作***。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新近版本中,Bison增加了对GLR语法分析算法的支持。Bison基本兼容Yacc,并做了一些改进。它一般与flex一起使用。
上述请求数据查询的设备101、数据查询的设备102、图形数据库103和语言解析引擎104之间可以通过无线网络或者有线网络进行通信。
本发明实施例提供一种图查询方法,所述图查询方法所应用的图形数据库具备下述的存储结构:所述图形数据库中图的直接节点和边都是以键值对的形式存储,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示。
具体地,对于直接节点,其键可以是QQ号,手机号或者ip地址等。与键对应的值可以是所述直接节点的各种属性信息的集合,所述集合中包括根据所述直接节点可扩展的边的信息。在一个可行的实施方式中,所述集合可以以链表形式存储。举例来说,如果键是QQ号,其属性可能包括活跃天数、常用登陆地点和好友等等。
对于边,其键可以被表示为边的两个相关节点的一个组合,如uin_手机号、uin_uin、手机号_设备ID等等,与键对应的值是边的各种属性信息的集合。以uin_手机号为例,其属性可能包括绑定手机的时间、天数等。
在确定上述存储结构的前提下,请参见图2,所述图查询方法包括:
S101.获取待查询的初始直接节点,并将所述初始直接节点纳入查询结果集合。
S102.获取扩展深度和扩展条件。
S103.若扩展深度等于1,则根据所述初始直接节点获取可扩展边。
S104若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次所述查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
具体地,在所述查询结果集合中只有一个初始直接节点时并且扩展深度等于1的场景下,步骤S103中执行下述查询步骤:
查询所述初始直接节点的所有属性信息,所述属性信息包括根据所述初始直接节点得到的可扩展边的信息;
根据所述扩展条件从所述属性信息中获取可扩展边;并将获取结果纳入所述查询结果集合。
进一步地,还包括从所述查询结果集合中的可扩展边中得到可扩展边的相关节点,查询所述相关节点的属性信息。
具体地,在所述查询结果集合中只有一个初始直接节点并且扩展深度大于1的场景下,步骤S104中执行下述查询步骤为:
(1)获取上一次查询过程中新增的可扩展边。
(2)根据上一次查询过程中获取到的可扩展边得到相关节点集合。
具体地,每个可扩展边可以得到两个相关节点。
(3)将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
相关节点本身又可以作为直接节点,即能够用于查询其对应的可扩展边。
在本发明一个可行的实施方式中,步骤S104的具体执行方法为:对每个节点按照宽度优先搜索算法执行查询请求,待全部查询请求返回后,再进行下一次查询。
在本发明一个另可行的实施方式中,步骤S104的具体执行方法为:对两个已知的节点同时执行宽度优先搜索查询得到以图形式表示的两个查询结果,记录两幅图的交点集合,在查询结束之后,从所述交点集合进行回溯,找出回溯过程中经过的所有点和边。
随着查询的深入,循环得到可扩展边的同时,也得到可扩展边对应的相关节点,因此,查询结果包括了节点和边的信息。在查询过程中实时将获取到的节点和可扩展边纳入查询结果集合,还可以进一步获取所述查询结果集合中目标节点的属性信息,所述目标节点包括所述查询结果集合中已有的节点和可扩展边对应的相关节点。
具体地,所述查询结果集合可以使用邻接表进行存储。即所述查询结果集合中的节点以节点数组的形式存储,所述节点数组中的每个节点以链表的形式记录所述节点相关的边。具体地,所述链表中记录有与当前节点构成边的节点在节点数组的下标。请参考图3,其以图的形式示出了一个查询结果集合,请参考图4,其示出了以邻接表的形式对应存储的查询结果集合。以V0为例,其与V1、V2、V3构成V0相关的边,V1在节点数组对应下标1,V2在节点数组对应下标2,V3在节点数组对应下标3。在V0所对应的链表中,可以通过记录与V0构成边的节点的下标来表示V0相关的边,因此,在V0所对应的的链表中,记录了1、2、3,从而可以表示边V0——V1、边V0——V2、边V0——V3
为了提升查询的准确度,本发明实施例进一步提供了两种过滤方法。这两种过滤方法可以单独或组合使用。
在一个可行的实施例中,在步骤S104的每一次查询之后,都可以对查询结果进行过滤,所述过滤的对象可以包括步骤(2)得到的相关节点集合和/或步骤(3)得到的可扩展边。
在另一个可行的实施例中,在步骤S104执行完全部的查询之后,可以对整体的查询结果进行过滤。
举例而言,若希望查询qq123456相关的手机号所有属性信息,并以uin(qq号)和手机号的关联的得分大于90为过滤条件,则查询过程基本概述如下:
(1)以uin(123456)为初始直接节点,查询其属性,获得可扩展边;可扩展边的三个相关节点的关联的手机号码(a,b,c)
(2)对可扩展边123456_a,123456_b,123456_c,查询边的属性信息,选出相关度大于90的边(123456_a,123456_b)。
(3)以手机号为a和b的节点为目标节点,查询其属性信息。
在本发明的另一个实施例中在所述获取待查询的初始直接节点之前,如图5所示,还包括:
S10.获取查询指令,所述查询指令以图查询语句字符串的形式表示。
所述查询指令包括节点查询指令、扩展指令、选择指令中的一种或几种;
所述查询指令用于查询初始直接节点。
所述扩展指令用于进行查询扩展,所述扩展指令用于指示扩展条件和/或扩展深度。
所述选择指令用于执行一次完整的查询,所述选择指令用于指示初始直接节点、扩展条件、扩展深度和过滤条件。
S20.根据所述查询指令生成抽象语法树,所述抽象语法树表示的内容包括初始直接节点、扩展条件、扩展深度和/或过滤条件。
具体地,步骤S101-S104的执行过程均以所述抽象语法树为执行前提。
具体地,对于步骤S10所述图查询语句字符串主要包括三种语句,NODE语句、DEGREE语句和SELECT语句。
(1)NODE语句
语法:NODE(node_type key_value[entry_type]);
NODE语句用于表示查询的初始结点,其中node_type表示结点的类型,如QQ号,手机号,ip等。key_value对应于结点的key值。entry_type表示节点的加密类型,如果为空则表示不加密。NODE语句可以有一个也可以有两个,如果只有一个,表示以某个结点为初始结点,进行扩展;如果有两个,表示寻找两个结点之间的路径。
示例:NODE(uin 814800129);
(2)DEGREE语句
语法:DEGREE n EXPAND-cond[WHERE-cond]
DEGREE语句表示对起始节点进行n度扩展,扩展的边由EXPAND-cond给出,WHERE-cond给出了对扩展得到的边和结点进行过滤的条件。EXPAND-cond必须要有,WHERE-cond可以没有,没有的情况下表示对查回的结果不进行过滤。
(3)EXPAND-cond语句
语法:EXPAND(current.type==node_type RETURN attr_value[,attr_value]*[;current.type==node_type RETURN attr_value[,attr_value]*]*)
current.type表示扩展的结点类型,attr_value表示需要扩展的属性类型,二者共同决定对一个结点进行扩展的方式,扩展条件中应该至少有一个这样的规则。
示例:EXPAND(current.type==uin RETURN 1010068,1010069,1010086,1010088;current.type==phone RETURN 1020012;current.type==idcard RETURN1030011);
(4)WHERE-cond
语法:WHERE(C-Conditional-expression)
C-Conditional-expression是一个类似C语言的表达式,用于对扩展返回的结点进行过滤,过滤的条件可以是结点的类型、结点的key值、边的key值以及结点和边的属性值等等。
示例:WHERE(current.type==phone&&current.key>1||current.type==uin&&current.attr_101001<123456||edge.src.type==uin&&edge.dst.type==phone);
(5)SELECT-statement
语法:SELECTALL|ALL-(attrId[,attrId]*)|(attrId[,attrId]*);、
SELECTALL表示返回点和边的全部属性;SELECTALL-attrId_list表示返回除attrId_list中包含属性的全部属性;SELECT attrId_list表示返回指定的属性,其它的舍去。
示例:SELECTALL;
SELECTALL-(101001,101002);
SELECT(101001,101002,101003);
对于步骤S20,可以通过词法分析器flex和语法分析器bison的帮助生成抽象语法树。词法分析器的输入是图查询语句字符串,其输出一个标记流。语法分析器调用词法分析器的分析结果,根据语法规则,将标记流转化为一个抽象语法树。语法分析器使用的语法规则如下:
Figure BDA0001642204910000101
Figure BDA0001642204910000111
所述语法规则与上述自定义的图查询语句字符串相对应,能够将使用上述图查询语句字符串构建的查询语句递归分解为抽象语法树。所述语法规则描述了通过递归分解分析出一组查询语句中各个单查询语句的逻辑关系,对单查询语句分类,以及对单查询语句的各个参数的提取的具体过程。
具体地,所述语法分析器中可以支持下述语法:
获取所有结点的父类,所述父类包含过滤器的虚函数,所述虚函数的参数是要被过滤的结点;
通过每个具体的过滤器子类实现所述虚函数。
在执行具体的过滤过程时,直接调用最顶层的过滤器的虚函数,通过递归执行到具体的过滤器子类,从而实现过滤器的功能。
举例来说,对于“&&”结点(表示与关系),具体实现如下:
含有两个expr类型的成员变量,expr1、expr2,其中expr为所有结点的父类。filter返回的结果为expr1.filter()&&expr2.filter(),其中,filter为过滤器的虚函数。
具体地,本发明实施例中完成了由图查询语言到具体查询过程的转换,并通过flex和bison这两个开源工具进行语言的词法分析和语法分析,完成图查询语言到抽象语法树的转换,基于抽象语法树执行查询过程,并以邻接表的形式返回结果。本发明实施例提供的一种图查询方法通过自定义的图查询语言和语法查询图形式组织的数据,有更好的灵活性,能够较为快速、方便的获取某个结点相关的其它结点和边的信息。
本发明另一实施例提供了一种图查询***,如图6所示,包括:
图形数据库1,用于以键值对的形式存储所述图的直接节点和边,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示。所述图形数据库1可以由图1中的图形数据库103构成。
查询服务器2,用于进行图查询。所述查询服务器2可以由图1中的查询服务器102构成。
指令获取模块3,用于获取查询指令,所述查询指令以图查询语句字符串的形式表示。所述指令获取模块3可以由图1中的请求数据查询的设备101构成。
语言解析引擎4,用于根据所述查询指令生成抽象语法树,所述抽象语法树表示的内容包括看初始直接节点、扩展条件、扩展深度和/或过滤条件。所述语言解析引擎4可以由图1中的语言解析引擎104构成。
具体地,所述语言解析引擎包括词法分析器和语法分析器。所述词法分析器以图查询语句字符串为输入,以标记流为输出;所述语法分析器调用词法分析器的分析结果,根据预设语法规则,将所述标记流转化为抽象语法树。
如图7所示,所述查询服务器2包括:
初始直接节点查询模块201,用于获取待查询的初始直接节点。
扩展要素获取模块202,用于获取扩展深度和扩展条件。
查询模块203,用于若扩展深度等于1,则根据所述初始直接节点获取可扩展边;若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次所述查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
过滤条件获取模块204,用于获取过滤条件。
第一过滤模块205,用于按照所述过滤条件对所述查询结果集合进行过滤得到过滤后的查询结果集合。
第二过滤模块206,用于对每次查询过程中得到的相关节点集合和/或获取到的可扩展边进行过滤。
如图8所示,所述查询模块203包括:
第一查询单元2031,用于对已知的节点按照宽度优先搜索算法执行所有查询请求,待全部查询请求返回后,再进行下一次查询扩展。
第二查询单元2032,用于对两个已知的节点同时执行宽度优先搜索查询得到以图形式表示的两个查询结果,记录两幅图的交点集合,在查询结束之后,从所述交点集合进行回溯,找出回溯过程中经过的所有点和边。
本发明的装置实施例中所述的一种图查询***与方法实施例基于同样地发明构思。
本发明的实施例还提供了一种存储介质,所述存储介质可用于保存用于实现方法实施例中图查询方法的程序代码。可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络设备中的至少一个网络设备。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
具体地,图9是本发明实施例提供的一种服务器结构示意图,所述服务器结构可以包括上述图查询***中一个或几个功能模块。该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作***841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。上述方法实施例所执行的步骤可以基于该图9所示的服务器结构。
需要说明的是:上述本发明实施例的先后顺序仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种图查询方法,其特征在于,所述图的直接节点和边都是以键值对的形式存储,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示,所述方法包括:
获取待查询的初始直接节点;
获取扩展深度和扩展条件;
若扩展深度等于1,则根据所述初始直接节点获取可扩展边;
若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
2.根据权利要求1所述的方法,其特征在于,还包括:
在查询过程中实时将获取到的节点和可扩展边纳入查询结果集合,获取所述查询结果集合中目标节点的属性信息,所述目标节点包括所述查询结果集合中已有的节点和所述可扩展边对应的相关节点。
3.根据权利要求2所述的方法,其特征在于,在所述循环查询直至达到所述扩展深度之后,还包括:
获取过滤条件;
按照所述过滤条件对所述查询结果集合进行过滤得到过滤后的查询结果集合。
4.根据权利要求2所述的方法,其特征在于,若扩展深度大于1,则每一次查询过程中还包括对相关节点集合和/或获取到的可扩展边进行过滤的步骤。
5.根据权利要求3或4所述的方法,其特征在于,在所述获取待查询的初始直接节点之前,还包括:
获取查询指令,所述查询指令以图查询语句字符串的形式表示;
根据所述查询指令生成抽象语法树,所述抽象语法树表示的内容包括初始直接节点、扩展条件、扩展深度和/或过滤条件。
6.根据权利要求2所述的方法,其特征在于:
所述查询结果集合中的节点以节点数组的形式存储,所述节点数组中的每个节点以链表的形式记录所述节点相关的边。
7.根据权利要求1所述的方法,其特征在于,若扩展深度大于1,则每一次查询包括:对已知的节点按照宽度优先搜索算法执行所有查询请求,待全部查询请求返回后,再进行下一次查询扩展。
8.根据权利要求1所述的方法,其特征在于,若扩展深度大于1,则每一次查询包括:对两个已知的节点同时执行宽度优先搜索查询得到以图形式表示的两个查询结果,记录两幅图的交点集合,在查询结束之后,从所述交点集合进行回溯,找出回溯过程中经过的所有点和边。
9.一种图查询***,其特征在于,包括:
图形数据库,用于以键值对的形式存储所述图的直接节点和边,所述直接节点的值能够用于查询所述直接节点相关的可扩展边,所述边的键通过所述边的两个相关节点的组合表示;
查询服务器,用于进行图查询,所述查询服务器包括:
初始直接节点查询模块,用于获取待查询的初始直接节点;
扩展要素获取模块,用于获取扩展深度和扩展条件;
查询模块,用于若扩展深度等于1,则根据所述初始直接节点获取可扩展边;若扩展深度大于1,则循环查询直至达到所述扩展深度,每一次查询包括:根据上一次查询过程中获取到的可扩展边得到相关节点集合,将所述相关节点集合中的每个相关节点作为直接节点获取可扩展边。
10.根据权利要求9所述的***,其特征在于,所述查询服务器还包括:
过滤条件获取模块,用于获取过滤条件;
第一过滤模块,用于按照所述过滤条件对所述查询结果集合进行过滤得到过滤后的查询结果集合。
11.根据权利要求9所述的***,其特征在于,所述查询服务器还包括:
第二过滤模块,用于对每次查询过程中得到的相关节点集合和/或获取到的可扩展边进行过滤。
12.根据权利要求9所述的***,其特征在于,所述***还包括:
指令获取模块,用于获取查询指令,所述查询指令以图查询语句字符串的形式表示;
语言解析引擎,用于根据所述查询指令生成抽象语法树,所述抽象语法树表示的内容包括初始直接节点、扩展条件、扩展深度和/或过滤条件。
13.根据权利要求12所述的***,其特征在于:
所述语言解析引擎包括词法分析器和语法分析器;
所述词法分析器以图查询语句字符串为输入,以标记流为输出;所述语法分析器调用词法分析器的分析结果,根据预设语法规则,将所述标记流转化为抽象语法树。
14.根据权利要求9所述的***,其特征在于:
所述查询模块包括第一查询单元;
所述第一查询单元用于对已知的节点按照宽度优先搜索算法执行所有查询请求,待全部查询请求返回后,再进行下一次查询扩展。
15.根据权利要求9所述的***,其特征在于:
所述查询模块包括第二查询单元;
所述第二查询单元用于对两个已知的节点同时执行宽度优先搜索查询得到以图形式表示的两个查询结果,记录两幅图的交点集合,在查询结束之后,从所述交点集合进行回溯,找出回溯过程中经过的所有点和边。
CN201810385839.XA 2018-04-26 2018-04-26 一种图查询方法及*** Active CN110209885B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810385839.XA CN110209885B (zh) 2018-04-26 2018-04-26 一种图查询方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810385839.XA CN110209885B (zh) 2018-04-26 2018-04-26 一种图查询方法及***

Publications (2)

Publication Number Publication Date
CN110209885A CN110209885A (zh) 2019-09-06
CN110209885B true CN110209885B (zh) 2023-05-12

Family

ID=67779030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810385839.XA Active CN110209885B (zh) 2018-04-26 2018-04-26 一种图查询方法及***

Country Status (1)

Country Link
CN (1) CN110209885B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781313A (zh) * 2019-09-29 2020-02-11 北京淇瑀信息科技有限公司 一种图存储优化方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1707474A (zh) * 2004-06-08 2005-12-14 北京大学 结构约束下获得可扩展标记语言频繁查询模式的方法
CN104781813A (zh) * 2012-11-12 2015-07-15 脸谱公司 用于结构化搜索查询的语法模型
US9535963B1 (en) * 2015-09-18 2017-01-03 Linkedin Corporation Graph-based queries
CN106874422A (zh) * 2017-01-25 2017-06-20 东南大学 一种面向关系型数据库的图查询方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1707474A (zh) * 2004-06-08 2005-12-14 北京大学 结构约束下获得可扩展标记语言频繁查询模式的方法
CN104781813A (zh) * 2012-11-12 2015-07-15 脸谱公司 用于结构化搜索查询的语法模型
US9535963B1 (en) * 2015-09-18 2017-01-03 Linkedin Corporation Graph-based queries
CN106874422A (zh) * 2017-01-25 2017-06-20 东南大学 一种面向关系型数据库的图查询方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Mining frequent k-edge-connected subgraphs;Jingdong Tan;《 2016 12th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD)》;1312-1317 *
基于可扩展计算平台的大图数据管理;高军;杨冬青;;科研信息化技术与应用(01);51-58 *
基于图形数据结构的复杂对象建模设计;卢超;黄蔚;胡国超;;软件(12);228-231 *

Also Published As

Publication number Publication date
CN110209885A (zh) 2019-09-06

Similar Documents

Publication Publication Date Title
CN107038207B (zh) 一种数据查询方法、数据处理方法及装置
CN110472068B (zh) 基于异构分布式知识图谱的大数据处理方法、设备及介质
JP5744892B2 (ja) テキストフィルタリングの方法およびシステム
EP2597573A1 (en) Test data generation
CN112311571B (zh) 网络拓扑生成方法及装置、电子设备和非暂态存储介质
US9706005B2 (en) Providing automatable units for infrastructure support
US20200142674A1 (en) Extracting web api endpoint data from source code
CN109408594B (zh) 一种基于区块链的跨链数据检索***
CN112883125A (zh) 一种实体数据处理方法、装置、设备和存储介质
CN114969819A (zh) 数据资产风险发现方法和装置
Ingalalli et al. Querying RDF data using a multigraph-based approach
CN110727651A (zh) 一种日志处理方法、装置、终端设备及计算机可读存储介质
CN110209885B (zh) 一种图查询方法及***
CN112364051B (zh) 一种数据查询方法及装置
CN113505278A (zh) 图匹配方法、装置、电子设备及存储介质
CN107870805B (zh) 任务***的信息处理方法及装置
KR101743731B1 (ko) 분산된 데이터를 통합하여 생성한 온톨로지를 기반으로 쿼리를 처리하는 방법 및 장치
US20210064660A1 (en) Graph search using index vertices
Iacob et al. MARAM: tool support for mobile app review management.
CN112114805B (zh) 页面生成方法、装置、设备
CN111475492B (zh) 数据处理方法以及装置
CN114281842A (zh) 一种数据库分表查询的方法及设备
CN114610955A (zh) 一种智能检索方法、装置、电子设备及存储介质
CN113312373A (zh) 一种数据结构化查询语句的解析方法及设备
CN114764330A (zh) 数据血缘解析方法、装置、电子设备和计算机可读存储介质

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