CN115238138A - 一种图数据查询方法及装置 - Google Patents
一种图数据查询方法及装置 Download PDFInfo
- Publication number
- CN115238138A CN115238138A CN202210991887.XA CN202210991887A CN115238138A CN 115238138 A CN115238138 A CN 115238138A CN 202210991887 A CN202210991887 A CN 202210991887A CN 115238138 A CN115238138 A CN 115238138A
- Authority
- CN
- China
- Prior art keywords
- query
- field
- target
- definition file
- type
- 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.)
- Pending
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种图数据查询方法及装置,该方法通过部署入口类型的目标字段,实现查询语句中关于目标字段解析逻辑,使目标字段能够解析为调用入口字段的解析器的查询指令,从而在调用入口字段的解析器后,对入口类型进行解析,再通过后续的查询语句的查询指令实现其他类型的查询,从图数据的一个层级跳转到另一层级,实现不同层级、不同类型数据之间的动态关联。
Description
技术领域
本公开涉及数据查询技术领域,具体而言,涉及一种图数据查询方法及装置。
背景技术
图数据查询语言(Graph Query Language,GraphQL)是一种用于应用程序编程接口(Application Programming Interface,API)的查询语言,也可以表示利用该种查询语言的数据查询系统,客户端可以通过GraphQL查询语句按需向服务器查询数据,服务器通过定义文件schema定义了数据的类型和字段,从而让数据以图的方式组织起来,然后为每种类型上的每个字段提供解析函数来构建GraphQL服务。
GraphQL运行时通过schema描述了数据的拓扑关系图,而查询时需要严格遵循既定的数据的拓扑关系,因此,一个特定查询的结果必定是schema描述的数据图全貌的一个投影,数据的拓扑关系无法改变,查询得到的结果的结构也无法改变。
发明内容
本公开实施例至少提供一种图数据查询方法及装置。
第一方面,本公开实施例提供了一种图数据查询方法,包括:
响应于数据查询请求,确定所述数据查询请求指示的查询语句;
基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
一种可选的实施方式中,所述基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,包括:
按照预定义顺序,针对每个查询字段,从所述目标定义文件中查找该查询字段对应的类型;
从与所述查询字段的类型对应的所述多个字段解析器中,筛选出与该查询字段匹配的字段解析器;
基于筛选得到的所述字段解析器,对所述查询字段进行解析。
一种可选的实施方式中,所述若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令,包括:
若所述目标定义文件中指示当前解析的所述查询字段为设置的入口类型的目标字段,则从与所述入口类型对应的多个字段解析器中筛选出与所述目标字段对应的目标字段解析器,并基于所述目标字段解析器,将所述目标字段解析为调用目标字段解析器的目标查询指令。
一种可选的实施方式中,在响应于数据查询请求之前,所述方法还包括:
获取所述图数据的初始定义文件;
将所述目标字段的声明信息添加至所述初始定义文件中的各个类型的声明信息中,得到所述目标定义文件;所述目标字段的声明信息指示有所述目标字段的类型;所述目标字段的类型为所述初始定义文件中声明的入口类型。
一种可选的实施方式中,在响应于数据查询请求之前,所述方法还包括:
获取所述初始定义文件对应的多个初始字段解析器;
生成用于调用入口字段解析器的目标字段解析器,并将所述目标字段解析器作为所述目标字段对应的字段解析器;
将所述多个初始字段解析器与所述目标字段解析器作为所述目标定义文件对应的多个字段解析器。
一种可选的实施方式中,所述方法还包括:
若当前解析的所述查询字段携带有设置的第一隐藏指令,则将所述查询字段对应的查询结果隐藏设置为隐藏。
一种可选的实施方式中,所述根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果,包括:
在所述查询指令指示所述查询语句为查询可用数据类型的内省查询语句时,确定所述目标定义文件中声明的各个类型,得到所述目标定义文件对应的类型集群;
在所述入口类型的声明信息中携带有第二隐藏指令的情况下,将所述入口类型从所述类型集群中删除,得到目标类型集群;
将所述目标类型集群作为所述查询语句对应的查询结果。
第二方面,本公开实施例还提供一种图数据查询装置,包括:
确定模块,用于响应于数据查询请求,确定所述数据查询请求指示的查询语句;
解析模块,用于基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
查询模块,用于根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
一种可选的实施方式中,所述解析模块在基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段时,用于:
按照预定义顺序,针对每个查询字段,从所述目标定义文件中查找该查询字段对应的类型;
从与所述查询字段的类型对应的多个字段解析器中,筛选出与该查询字段匹配的字段解析器;
基于筛选得到的所述字段解析器,对所述查询字段进行解析。
一种可选的实施方式中,所述解析模块在执行若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令时,用于:
若所述目标定义文件中指示当前解析的所述查询字段为设置的入口类型的目标字段,则从与所述入口类型对应的多个字段解析器中筛选出与所述目标字段对应的目标字段解析器,并基于所述目标字段解析器,将所述目标字段解析为调用目标字段解析器的目标查询指令。
一种可选的实施方式中,所述装置还包括预处理模块,用于:
获取所述图数据的初始定义文件;
将所述目标字段的声明信息添加至所述初始定义文件中的各个类型的声明信息中,得到所述目标定义文件;所述目标字段的声明信息指示有所述目标字段的类型;所述目标字段的类型为所述初始定义文件中声明的入口类型。
一种可选的实施方式中,所述预处理模块还用于:
获取所述初始定义文件对应的多个初始字段解析器;
生成用于调用入口字段解析器的目标字段解析器,并将所述目标字段解析器作为所述目标字段对应的字段解析器;
将所述多个初始字段解析器与所述目标字段解析器作为所述目标定义文件对应的多个字段解析器。
一种可选的实施方式中,所述解析模块还用于:
若当前解析的所述查询字段携带有设置的第一隐藏指令,则将所述查询字段对应的查询结果隐藏设置为隐藏。
一种可选的实施方式中,所述查询模块具体用于:
在所述查询指令指示所述查询语句为查询可用数据类型的内省查询语句时,确定所述目标定义文件中声明的各个类型,得到所述目标定义文件对应的类型集群;
在所述入口类型的声明信息中携带有第二隐藏指令的情况下,将所述入口类型从所述类型集群中删除,得到目标类型集群;
将所述目标类型集群作为所述查询语句对应的查询结果。
第三方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的图数据查询方法及装置,响应于数据查询请求,确定所述数据查询请求指示的查询语句;基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。本公开实施例通过部署入口类型的目标字段,实现查询语句中关于目标字段解析逻辑,使目标字段能够解析为调用入口字段的解析器的查询指令,从而在调用入口字段的解析器后,对入口类型的目标字段进行解析,再通过后续的查询语句的查询指令实现其他类型的查询,从图数据的一个层级跳转到另一层级,实现不同层级、不同类型数据之间的动态关联。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种图数据查询方法的流程图;
图2示出了本公开实施例所提供的数据图的示意图;
图3示出了本公开实施例所提供的增强数据图的示意图之一;
图4示出了本公开实施例所提供的增强数据图的示意图之二;
图5示出了本公开实施例所提供的增强数据图的示意图之三;
图6示出了本公开实施例所提供的另一种图数据查询方法的流程图;
图7示出了本公开实施例所提供的一种图数据查询装置的示意图;
图8示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,GraphQL运行时通过schema描述了数据的拓扑关系图,而查询时需要严格遵循既定的数据的拓扑关系,因此,一个特定查询的结果必定是schema描述的数据图全貌的一个投影,数据的拓扑关系无法改变,查询得到的结果的结构也无法改变,无法在不修改定义文件的情况下实现不同拓扑层级数据之间的动态关联,而修改定义文件会导致查询系统重启,影响用户体验。
基于上述研究,本公开提供了一种图数据查询方法,通过部署入口类型的目标字段,实现查询语句中关于目标字段解析逻辑,使目标字段能够解析为调用入口字段的解析器的查询指令,从而在调用入口字段的解析器后,从图数据的一个层级跳转到另一层级,实现不同层级的动态关联。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种图数据查询方法进行详细介绍,本公开实施例所提供的图数据查询方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备。在一些可能的实现方式中,该图数据查询方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的图数据查询方法的流程图,所述方法包括步骤S101~S102,其中:
S101、响应于数据查询请求,确定所述数据查询请求指示的查询语句。
该步骤中,数据查询请求可以为针对图数据的查询请求,上述查询语句可以为图数据查询语句,图数据查询系统可以根据查询语句进行数据查询,并返回查询到的数据。
其中,查询语句需要符合查询系统所采用的查询语法,对于图数据查询系统而言,图数据查询系统可以根据定义文件组织数据结构,将数据组织称为图数据,定义文件可以表示图数据的拓扑结构,查询语句也需要符合定义文件定义的拓扑结构,才能够被数据查询系统正确识别。
上述初始定义文件可以为开发者基于图数据查询系统的查询语法编写的定义文件,示例性的,初始定义文件形式可以如下所示:
其中,声明数据所包含的类型可以通过“类型”字段标识,字段“类型查询”表示“查询”类型,并定义了“查询”类型包含有“获取A”字段,“获取A”字段的类型为“A类”,而类型“A类”则包括字段“A1”、“A2”及“A3”,“A1”的类型为“字符串”,“A2”的类型为“C类”,“A3”的类型为“D类”,类型“C类”中包括字段“C1”,其类型为“字符串”,类型“D类”包含字段“D1”,类型为“字符串”,其中,“String”是标量类型的一种,而“A类”、“B类”、“C类”、“D类”等类型为高级数据类型,相互之间可以具有引用关系,“查询”则为高级数据类型中的入口类型。
基于上述初始定义文件,可以得到数据图,参见图2所示,为本公开实施例提供的数据图的示意图,该数据图为基于上述示例的初始定义文件得到的,其中,包含查询节点、A类节点、C类节点以及D类节点,各个节点标识图数据包含的数据类型,节点之间的连接关系表示各个类型之间的引用关系,以及引用关系对应的字段。可见,由根节点查询节点开始,存在两个分支,两个分支的叶子节点之间不存在引用关系,若在查询A2节点对应的数据后,查询A3节点对应的数据,则需要返回至A类节点,再查询A3节点对应的数据,其对应的查询语句及查询结果中,A2节点对应的数据与A3节点对应的数据均处于不同的层级之中,无法直接关联至同一层级。
示例性的,上述示例的初始定义文件的查询语句可以如下所示:
可见,上述查询语句中,查询D1与C1数据的查询语句无法放在同一层级下。
为此,本公开实施例对初始定义文件进行了预处理,得到上述目标定义文件,经过预处理后的定义文件可以实现将查询D1与C1数据的查询语句无法放在同一层级下,从而实现查询语句及查询结果中不同层级数据的动态关联。
在一种可能的实施方式中,可以将目标字段的声明信息添加至初始定义文件中的各个字段的声明信息中,得到目标定义文件;上述目标字段的声明信息指示有目标字段的类型;目标字段的类型为初始定义文件中声明的入口类型。
其中,目标字段可以为用户定义的字段,且不存在于上述初始定义文件中,防止触发初始定义文件中以存在的字段的解析器。
示例性的,目标定义文件可以包括:
该目标定义文件为上述示例的初始定义文件经过预处理得到的,预处理将目标字段“_入口”的声明信息添加至初始定义文件中的各个字段的声明信息中,具体的,初始定义文件可以包括多个层级,各个层级可以表示一种类型,各个层级下包含该层级对应的字段,示例性的,目标字段的声明信息可以为“_入口:查询”,其中,“查询”为入口类型,目标字段的声明信息可以添加在各个类型的声明信息中,由于目标字段的类型为入口类型,入口类型的声明中则不需要添加目标字段的声明。
经过预处理后,目标定义文件的各个类型都与入口类型进行了关联,参见图3所示,为本公开实施例所提供增强数据图的示意图之一,该增强数据图为目标定义文件的数据图,可见,该增强数据图中各个类型对应的节点都可通过目标字段_入口返回到入口节点。
在对初始定义文件进行预处理后,还可以生成目标字段的字段解析器,使目标字段能够成为查询语句中的一个有意义的字段,字段解析器可以用于对查询语句中的字段进行解析,将其解析为对应的查询指令。目标字段的字段解析器可以将目标字段解析为调用入口字段的解析器。
这样,就可以利用查询语句来实现不同层级字段的动态关联,示例性的,在存在目标字段的情况下,上述查询语句可以表现为以下形式:
参见图4及图5所示,图4为本公开实施例所提供的增强数据图的示意图之二,图5为本公开实施例所提供的增强数据图的示意图之三,在该上述包含目标字段的查询语句下,其对应的增强数据图可以如图4所示,上述查询语句通过获取A字段跳转至A类,再通过A2字段跳转至C类,然后通过目标字段_入口跳转回入口类型,再通过获取A字段跳转至A类,并通过A3字段跳转至D类,若在当前解析的查询字段,如上述目标字段及第二次获取A字段,携带有设置的第一隐藏指令,如“@拆箱”,则可以将该指令对应的内层级的字段直接暴露在外层级,实现隐藏外层级的效果,从而实现如图5所示的效果,图5中,查询可以直接从C类直接跳转至D类,实现不同层级类型的动态关联。
S102、基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段。
该步骤中,可以从目标定义文件中查找查询语句中的查询字段的类型在成功查找到后,可以该类型对应的多个字段解析器中查找该查询字段对应的字段解析器,利用查找到的字段解析器解析查询字段。
具体的,预定义顺序可以根据查询语句的语法确定,根据查询语句的语法,可以确定出查询字段的解析顺序,查询字段对应的字段解析器中可以存储有该查询字段对应的查询函数,用于查询该查询字段对应的数据,可以为查询生成响应。
其中,若当前解析的查询字段为目标字段,如上述“_入口”字段,且目标定义文件中指示的该目标字段为入口类型的字段,则可以从入口类型对应的多个字段解析器中筛选出与目标字段对应的目标字段解析器,并生成调用该目标字段解析器的查询指令。
该目标字段解析器可以在查询系统启动前生成,目标字段解析器中可以写有调用入口字段解析器的查询指令,初始定义文件对应的多个初始字段解析器及目标字段解析器可以作为目标定义文件对应的多个字段解析器。
这样,查询系统在目标定义文件中定义有目标字段,且存在目标字段对应的目标字段解析器时,即可在无感知的情况下实现不同层级、不同类型数据的动态关联。
S103、根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
该步骤中,可以执行解析得到的查询指令,得到查询结果。
进一步的,若查询语句为查询可用数据类型的内省查询语句,则可以确定目标定义文件中声明的各个类型,得到目标定义文件对应的类型集群,然后,若入口类型的声明信息中携带有第二隐藏指令,如@隐藏,则可以将该入口类型从类型集群中删除,得到目标类型集群,并将目标类型集群作为查询语句的查询结果。
参见图6所示,为本公开实施例提供的另一种图数据查询方法,该方法由后端开发人员开发初始定义文件,并实现了其对应的字段解析器,图数据查询系统开始运行之前,可以先对初始定义文件及字段解析器初始化,对初始定义文件进行增强处理,添加特殊字段_入口,并生成_入口字段对应的字段解析器,然后利用增强的定义文件及各个字段解析器初始化图数据查询系统引擎,并注册扩展的指令,如@拆箱指令及@隐藏指令,这样,在前端构造查询语句时,可以通过向系统发送引用_入口字段和@拆箱指令的查询语句,实现查询的动态类型关联,请求查询数据,在前端通过集成开发环境(Integrated DevelopmentEnvironment,IDE)进行自省查询(查询语句为上述内省查询语句)时,若定义文件中存在引用@隐藏指令的类型,则可以在反馈数据结构时隐藏携带@隐藏指令的字段。
本公开实施例提供的图数据查询方法,响应于数据查询请求,确定所述数据查询请求指示的查询语句;基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。。本公开实施例通过部署入口类型的目标字段,实现查询语句中关于目标字段解析逻辑,使目标字段能够解析为调用入口字段的解析器的查询指令,从而在调用入口字段的解析器后,对入口类型进行解析,再通过后续的查询语句的查询指令实现其他类型的查询,从图数据的一个层级跳转到另一层级,实现不同层级、不同类型数据之间的动态关联。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与图数据查询方法对应的图数据查询装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述图数据查询方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图7所示,为本公开实施例提供的一种图数据查询装置的示意图,所述装置包括:
确定模块710,用于响应于数据查询请求,确定所述数据查询请求指示的查询语句;
解析模块720,用于基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
查询模块730,用于根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
一种可选的实施方式中,所述解析模块720在基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段时,用于:
按照预定义顺序,针对每个查询字段,从所述目标定义文件中查找该查询字段对应的类型;
从与所述查询字段的类型对应的多个字段解析器中,筛选出与该查询字段匹配的字段解析器;
基于筛选得到的所述字段解析器,对所述查询字段进行解析。
一种可选的实施方式中,所述解析模块720在执行若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令时,用于:
若所述目标定义文件中指示当前解析的所述查询字段为设置的入口类型的目标字段,则从与所述入口类型对应的多个字段解析器中筛选出与所述目标字段对应的目标字段解析器,并基于所述目标字段解析器,将所述目标字段解析为调用目标字段解析器的目标查询指令。
一种可选的实施方式中,所述装置还包括预处理模块,用于:
获取所述图数据的初始定义文件;
将所述目标字段的声明信息添加至所述初始定义文件中的各个类型的声明信息中,得到所述目标定义文件;所述目标字段的声明信息指示有所述目标字段的类型;所述目标字段的类型为所述初始定义文件中声明的入口类型。
一种可选的实施方式中,所述预处理模块还用于:
获取所述初始定义文件对应的多个初始字段解析器;
生成用于调用入口字段解析器的目标字段解析器,并将所述目标字段解析器作为所述目标字段对应的字段解析器;
将所述多个初始字段解析器与所述目标字段解析器作为所述目标定义文件对应的多个字段解析器。
一种可选的实施方式中,所述解析模块720还用于:
若当前解析的所述查询字段携带有设置的第一隐藏指令,则将所述查询字段对应的查询结果隐藏设置为隐藏。
一种可选的实施方式中,所述查询模块730具体用于:
在所述查询指令指示所述查询语句为查询可用数据类型的内省查询语句时,确定所述目标定义文件中声明的各个类型,得到所述目标定义文件对应的类型集群;
在所述入口类型的声明信息中携带有第二隐藏指令的情况下,将所述入口类型从所述类型集群中删除,得到目标类型集群;
将所述目标类型集群作为所述查询语句对应的查询结果。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的图数据查询方法,本公开实施例还提供了一种电子设备800,如图8所示,为本公开实施例提供的电子设备800结构示意图,包括:
处理器81、存储器82、和总线83;存储器82用于存储执行指令,包括内存821和外部存储器822;这里的内存821也称内存储器,用于暂时存放处理器81中的运算数据,以及与硬盘等外部存储器822交换的数据,处理器81通过内存821与外部存储器822进行数据交换,当所述电子设备800运行时,所述处理器81与所述存储器82之间通过总线83通信,使得所述处理器81执行以下指令:
响应于数据查询请求,确定所述数据查询请求指示的查询语句;
基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
一种可选的实施方式中,所述处理器81执行的指令中,所述基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,包括:
按照预定义顺序,针对每个查询字段,从所述目标定义文件中查找该查询字段对应的类型;
从与所述查询字段的类型对应的所述多个字段解析器中,筛选出与该查询字段匹配的字段解析器;
基于筛选得到的所述字段解析器,对所述查询字段进行解析。
一种可选的实施方式中,所述处理器81执行的指令中,所述若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令,包括:
若所述目标定义文件中指示当前解析的所述查询字段为设置的入口类型的目标字段,则从与所述入口类型对应的多个字段解析器中筛选出与所述目标字段对应的目标字段解析器,并基于所述目标字段解析器,将所述目标字段解析为调用目标字段解析器的目标查询指令。
一种可选的实施方式中,在响应于数据查询请求之前,所述处理器81还用于执行:
获取所述图数据的初始定义文件;
将所述目标字段的声明信息添加至所述初始定义文件中的各个类型的声明信息中,得到所述目标定义文件;所述目标字段的声明信息指示有所述目标字段的类型;所述目标字段的类型为所述初始定义文件中声明的入口类型。
一种可选的实施方式中,在响应于数据查询请求之前,所述处理器81还用于执行:
获取所述初始定义文件对应的多个初始字段解析器;
生成用于调用入口字段解析器的目标字段解析器,并将所述目标字段解析器作为所述目标字段对应的字段解析器;
将所述多个初始字段解析器与所述目标字段解析器作为所述目标定义文件对应的多个字段解析器。
一种可选的实施方式中,所述处理器81还用于执行:
若当前解析的所述查询字段携带有设置的第一隐藏指令,则将所述查询字段对应的查询结果隐藏设置为隐藏。
一种可选的实施方式中,所述处理器81执行的指令中,所述根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果,包括:
在所述查询指令指示所述查询语句为查询可用数据类型的内省查询语句时,确定所述目标定义文件中声明的各个类型,得到所述目标定义文件对应的类型集群;
在所述入口类型的声明信息中携带有第二隐藏指令的情况下,将所述入口类型从所述类型集群中删除,得到目标类型集群;
将所述目标类型集群作为所述查询语句对应的查询结果。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的图数据查询方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的图数据查询方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种图数据查询方法,其特征在于,包括:
响应于数据查询请求,确定所述数据查询请求指示的查询语句;
基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,包括:
按照预定义顺序,针对每个查询字段,从所述目标定义文件中查找该查询字段对应的类型;
从与所述查询字段的类型对应的所述多个字段解析器中,筛选出与该查询字段匹配的字段解析器;
基于筛选得到的所述字段解析器,对所述查询字段进行解析。
3.根据权利要求1所述的方法,其特征在于,所述若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令,包括:
若所述目标定义文件中指示当前解析的所述查询字段为设置的入口类型的目标字段,则从与所述入口类型对应的多个字段解析器中筛选出与所述目标字段对应的目标字段解析器,并基于所述目标字段解析器,将所述目标字段解析为调用目标字段解析器的目标查询指令。
4.根据权利要求1所述的方法,其特征在于,在响应于数据查询请求之前,所述方法还包括:
获取所述图数据的初始定义文件;
将所述目标字段的声明信息添加至所述初始定义文件中的各个类型的声明信息中,得到所述目标定义文件;所述目标字段的声明信息指示有所述目标字段的类型;所述目标字段的类型为所述初始定义文件中声明的入口类型。
5.根据权利要求4所述的方法,其特征在于,在响应于数据查询请求之前,所述方法还包括:
获取所述初始定义文件对应的多个初始字段解析器;
生成用于调用入口字段解析器的目标字段解析器,并将所述目标字段解析器作为所述目标字段对应的字段解析器;
将所述多个初始字段解析器与所述目标字段解析器作为所述目标定义文件对应的多个字段解析器。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若当前解析的所述查询字段携带有设置的第一隐藏指令,则将所述查询字段对应的查询结果隐藏设置为隐藏。
7.根据权利要求1所述的方法,其特征在于,所述根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果,包括:
在所述查询指令指示所述查询语句为查询可用数据类型的内省查询语句时,确定所述目标定义文件中声明的各个类型,得到所述目标定义文件对应的类型集群;
在所述入口类型的声明信息中携带有第二隐藏指令的情况下,将所述入口类型从所述类型集群中删除,得到目标类型集群;
将所述目标类型集群作为所述查询语句对应的查询结果。
8.一种图数据查询装置,其特征在于,包括:
确定模块,用于响应于数据查询请求,确定所述数据查询请求指示的查询语句;
解析模块,用于基于图数据的目标定义文件以及所述目标定义文件对应的多个字段解析器,按照预定义顺序依次解析所述查询语句中的各个查询字段,若当前解析的所述查询字段为设置的入口类型的目标字段,则将所述目标字段解析为调用目标字段解析器的目标查询指令;所述目标字段解析器用于解析入口类型的查询字段;
查询模块,用于根据解析得到的各个查询字段的查询指令,从所述图数据中进行数据查询,生成所述查询语句对应的查询结果。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的图数据查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任意一项所述的图数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210991887.XA CN115238138A (zh) | 2022-08-17 | 2022-08-17 | 一种图数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210991887.XA CN115238138A (zh) | 2022-08-17 | 2022-08-17 | 一种图数据查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115238138A true CN115238138A (zh) | 2022-10-25 |
Family
ID=83680072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210991887.XA Pending CN115238138A (zh) | 2022-08-17 | 2022-08-17 | 一种图数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115238138A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795111A (zh) * | 2023-01-20 | 2023-03-14 | 阿里健康科技(中国)有限公司 | 图数据的查询方法、装置、设备和存储介质 |
CN116108245A (zh) * | 2023-03-31 | 2023-05-12 | 支付宝(杭州)信息技术有限公司 | 图数据查询方法和查询引擎 |
-
2022
- 2022-08-17 CN CN202210991887.XA patent/CN115238138A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795111A (zh) * | 2023-01-20 | 2023-03-14 | 阿里健康科技(中国)有限公司 | 图数据的查询方法、装置、设备和存储介质 |
CN116108245A (zh) * | 2023-03-31 | 2023-05-12 | 支付宝(杭州)信息技术有限公司 | 图数据查询方法和查询引擎 |
CN116108245B (zh) * | 2023-03-31 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 图数据查询方法和查询引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324909B2 (en) | Omega names: name generation and derivation utilizing nested three or more attributes | |
US8959106B2 (en) | Class loading using java data cartridges | |
US9058360B2 (en) | Extensible language framework using data cartridges | |
US8997070B2 (en) | Extension mechanism for scripting language compiler | |
US10067957B1 (en) | Process for serializing and deserializing data described by a schema | |
CN115238138A (zh) | 一种图数据查询方法及装置 | |
CN110007920B (zh) | 一种获取代码依赖关系的方法、装置及电子设备 | |
US8713514B2 (en) | Heterogeneous language data typing without executable regeneration | |
JP2008501192A (ja) | キーフィールドレベルにおけるオントロジーコンテキストロジック | |
US9483508B1 (en) | Omega names: name generation and derivation | |
CN111538744B (zh) | 数据血缘的处理方法及装置 | |
US20190050208A1 (en) | Method and system for developing relation-context specific software applications | |
CN111913741B (zh) | 对象拦截方法、装置、介质及电子设备 | |
CN108304164B (zh) | 一种业务逻辑的开发方法及开发系统 | |
CN112069052B (zh) | 一种异常对象检测方法、装置、设备及存储介质 | |
CN110188106B (zh) | 一种数据管理方法和装置 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 | |
CN114706586A (zh) | 代码编译、代码运行方法、装置、计算机设备及存储介质 | |
CN112486465A (zh) | 一种代码更新方法及装置 | |
CN114356342A (zh) | 一种编译方法及装置 | |
US7567971B2 (en) | Generic symbol referencing mechanism | |
CN112835901A (zh) | 文件存储方法及装置、计算机设备、计算机可读存储介质 | |
CN117971308A (zh) | 接口文档生成方法、装置、存储介质及计算机设备 | |
CN117215591A (zh) | 一种软件项目编译方法、系统、计算机设备及介质 | |
CN117873507A (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 |