查询数据的方法、装置、设备及存储介质

allin2024-08-21  78



1.本技术涉及图数据库技术领域,特别涉及一种查询数据的方法、装置、设备及存储介质。


背景技术:

2.rdf(resource description framework,资源描述框架)是一种知识图谱的事实数据模型,知识图谱中的每条边以形如“主语、谓语、宾语”的rdf三元组形式表示,其代表了一对实体之间的命名关系或一个实体拥有的命名属性值。
3.sparql(sparql protocol and rdf query language,查询语言和数据获取协议)是访问rdf数据集的标准查询语言,其中union(联合)、optional(可选匹配)和filter(过滤)表达式是sparql的数据查询语句中常用的查询表达式。
4.目前计算机设备在执行数据查询语句对应的查询操作时,仅是依次执行各查询表达式对应的查询处理,查询数据的效率较低。


技术实现要素:

5.本技术实施例提供了一种查询数据的方法、装置、设备及存储介质,能够提高查询数据的效率。所述技术方案如下:
6.第一方面,提供了一种查询数据的方法,所述方法包括:
7.接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;
8.基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;
9.基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;
10.基于预设的执行顺序,在图数据库中依次执行所述第二查询树中各结点对应的查询操作,得到数据查询结果;
11.将所述数据查询结果返回至所述数据查询应用程序。
12.可选的,所述第一查询树中结点的类型包括合并结点和查询结点,其中,所述合并结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句,所述查询结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句中的查询词,所述查询结点包括bgp结点、union结点、optional结点、filter结点中的至少一种。
13.可选的,所述基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树,包括:
14.将所述第一查询树确定为待简化的第三查询树,确定所述第三查询树中各结点的深度;
15.对于所述第三查询树中深度为1的第一合并结点,如果所述第一合并结点的孩子结点包括多个bgp结点,则对所述多个bgp结点进行合并处理,得到合并处理后的第一bgp结
点,删除所述第一合并结点,将所述第一bgp结点添加到所述第一合并结点的位置;
16.对于所述第三查询树中深度为2的第二合并结点,如果所述第二合并结点的孩子结点包括至少一个bgp结点和至少一个union结点,则对所述至少一个bgp结点进行合并处理,得到合并处理后的第二bgp结点,对所述至少一个union结点进行合并处理,得到合并处理后的第三union结点;将所述第二bgp结点合并至所述第三union结点的孩子结点中,得到第四union结点,删除所述第二合并结点,将所述第四union结点添加到所述第二合并结点的位置;
17.对于所述第三查询树中深度为2的第五union结点,将所述第五union结点的孙代结点添加到所述第五union结点的孩子结点中,并删除所述第五union结点的孙代结点以及所述孙代结点的父结点,得到简化处理之后第三查询树。
18.可选的,所述将所述第一查询树确定为待简化的第三查询树之前,所述方法还包括:
19.确定所述第一查询树中对应的祖先结点不存在optional结点的第一optional结点;
20.将以所述第一optional结点的父结点为根结点的子查询树转化为第三bgp结点。
21.可选的,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:
22.当执行所述第三bgp结点对应的第一查询操作时,确定所述第三bgp结点对应的子查询树;
23.执行所述子查询树中所述第一optional结点的兄弟结点对应的查询操作,得到第一查询结果;将所述第一查询结果确定为所述第一optional结点的后代结点的数据查询范围;基于所述数据查询范围,执行所述第一optional结点的后代结点对应的查询操作。
24.可选的,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:
25.当执行所述第三bgp结点对应的第一查询操作时,如果确定所述第一optional结点的后代结点中包括至少一个第二optional结点;
26.按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的第一兄弟结点和所述至少一个第二optional结点的第二兄弟结点对应的查询操作,其中,每个第二optional结点的第二兄弟结点对应的数据查询范围为前一个optional结点的第二兄弟结点对应的查询结果;
27.按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的孩子结点和所述至少一个第二optional结点的孩子结点对应的查询操作,其中,所述任一optional结点的孩子结点的对应的数据查询范围为所述任一optional结点的兄弟结点对应的查询结果。
28.可选的,所述基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树,包括:
29.对于所述第一查询树中的filter结点,如果所述filter结点对应的filter条件满足预设的转换条件,则将所述filter条件转换为析取范式;
30.基于所述析取范式,将所述filter结点转换为union结点。
31.可选的,所述转换条件为所述filter结点对应的filter条件由变量、常量以及与、或、相等三种运算符组成。
32.可选的,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:
33.如果存在可并行执行的多个bgp结点,则确定所述多个bgp结点对应的公共三元组模式;
34.基于所述贪心算法,在所述公共三元组模式中确定对应查询成本最低的部分公共三元组模式;
35.在所述图数据中查询所述部分公共三元组模式对应的数据;
36.在所述图数据中查询多个bgp结点中除所述部分公共三元组模式外的其他三元组模式对应的数据。
37.第二方面,提供了一种查询数据的装置,所述装置包括:
38.接收模块,用于接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;
39.建立模块,用于基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;
40.处理模块,用于基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;
41.查询模块,用于基于预设的执行顺序,在图数据库中依次执行所述第二查询树中各结点对应的查询操作,得到数据查询结果;
42.返回模块,用于将所述数据查询结果返回至所述数据查询应用程序。
43.可选的,所述第一查询树中结点的类型包括合并结点和查询结点,其中,所述合并结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句,所述查询结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句中的查询词,所述查询结点包括bgp结点、union结点、optional结点、filter结点中的至少一种。
44.可选的,所述查询模块,用于:
45.将所述第一查询树确定为待简化的第三查询树,确定所述第三查询树中各结点的深度;
46.对于所述第三查询树中深度为1的第一合并结点,如果所述第一合并结点的孩子结点包括多个bgp结点,则对所述多个bgp结点进行合并处理,得到合并处理后的第一bgp结点,删除所述第一合并结点,将所述第一bgp结点添加到所述第一合并结点的位置;
47.对于所述第三查询树中深度为2的第二合并结点,如果所述第二合并结点的孩子结点包括至少一个bgp结点和至少一个union结点,则对所述至少一个bgp结点进行合并处理,得到合并处理后的第二bgp结点,对所述至少一个union结点进行合并处理,得到合并处理后的第三union结点;将所述第二bgp结点合并至所述第三union结点的孩子结点中,得到第四union结点,删除所述第二合并结点,将所述第四union结点添加到所述第二合并结点的位置;
48.对于所述第三查询树中深度为2的第五union结点,将所述第五union结点的孙代结点添加到所述第五union结点的孩子结点中,并删除所述第五union结点的孙代结点以及
所述孙代结点的父结点,得到简化处理之后第三查询树。
49.可选的,所述处理模块,还用于:
50.确定所述第一查询树中对应的祖先结点不存在optional结点的第一optional结点;
51.将以所述第一optional结点的父结点为根结点的子查询树转化为第三bgp结点。
52.可选的,所述查询模块,用于:
53.当执行所述第三bgp结点对应的第一查询操作时,确定所述第三bgp结点对应的子查询树;
54.执行所述子查询树中所述第一optional结点的兄弟结点对应的查询操作,得到第一查询结果;将所述第一查询结果确定为所述第一optional结点的后代结点的数据查询范围;基于所述数据查询范围,执行所述第一optional结点的后代结点对应的查询操作。
55.可选的,所述查询模块,用于:
56.当执行所述第三bgp结点对应的第一查询操作时,如果确定所述第一optional结点的后代结点中包括至少一个第二optional结点;
57.按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的第一兄弟结点和所述至少一个第二optional结点的第二兄弟结点对应的查询操作,其中,每个第二optional结点的第二兄弟结点对应的数据查询范围为前一个optional结点的第二兄弟结点对应的查询结果;
58.按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的孩子结点和所述至少一个第二optional结点的孩子结点对应的查询操作,其中,所述任一optional结点的孩子结点的对应的数据查询范围为所述任一optional结点的兄弟结点对应的查询结果。
59.可选的,所述处理模块,用于:
60.对于所述第一查询树中的filter结点,如果所述filter结点对应的filter条件满足预设的转换条件,则将所述filter条件转换为析取范式;
61.基于所述析取范式,将所述filter结点转换为union结点。
62.可选的,所述转换条件为所述filter结点对应的filter条件由变量、常量以及与、或、相等三种运算符组成。
63.可选的,所述查询模块,用于:
64.如果存在可并行执行的多个bgp结点,则确定所述多个bgp结点对应的公共三元组模式;
65.基于所述贪心算法,在所述公共三元组模式中确定对应查询成本最低的部分公共三元组模式;
66.在所述图数据中查询所述部分公共三元组模式对应的数据;
67.在所述图数据中查询多个bgp结点中除所述部分公共三元组模式外的其他三元组模式对应的数据。
68.第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所执行的操作。
69.第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上述第一方面所执行的操作。
70.第五方面,提供了一种计算机程序产品,所述计算机程序产品中包括至少一条指令,所述至少一条指令由处理器加载并执行以实现上述第一方面所执行的操作。
71.本技术实施例提供的技术方案带来的有益效果是:
72.本技术实施例,根据数据查询语句的结构将数据查询语句的查询转化为第一查询树,然后可以利用第一查询树中各查询结点对应的查询逻辑,对查询树进行简化处理得到第二查询树。如此可以通过对查询树的简化,简化数据查询语句的查询操作,进而可以提高数据查询的效率。
附图说明
73.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
74.图1是本技术实施例提供的一种查询数据的方法流程图;
75.图2是本技术实施例提供的一种查询数据的方法示意图;
76.图3是本技术实施例提供的一种查询数据的方法流程图;
77.图4是本技术实施例提供的一种查询数据的方法示意图;
78.图5是本技术实施例提供的一种查询数据的方法示意图;
79.图6是本技术实施例提供的一种查询数据的方法示意图;
80.图7是本技术实施例提供的一种查询数据的方法流程图;
81.图8是本技术实施例提供的一种查询数据的方法示意图;
82.图9是本技术实施例提供的一种查询数据的方法流程图;
83.图10是本技术实施例提供的一种查询数据的方法流程图;
84.图11是本技术实施例提供的一种查询数据的装置结构示意图;
85.图12是本技术实施例提供的一种查询数据的计算机设备示意图。
具体实施方式
86.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
87.本技术实施例提供的一种查询数据的方法可以由计算机设备实现。该计算机设备中可运行用于查询数据的应用程序(如图数据查询应用程序)。在该计算机设备中至少包括处理器和存储器,其中,存储器可用于存储执行查询数据的方法涉及的数据,例如可以包括图数据库、执行查询数据的方法对应的程序代码等。处理器可以执行存储器中存储的程序代码,并根据应用程序的数据查询请求,实现本技术实施例提供的查询数据的方法。
88.该计算机设备可以是终端或者服务器,当该计算机设备为终端时,该终端可以是手机、平板电脑、智能穿戴设备、台式计算机、笔记本电脑等。当该计算机设备为服务器时,该服务器可以与终端建立通信,该服务器可以是一个单独的服务器也可以是一个服务器
组,如果是单独的服务器,该服务器可以负责下述方案中的所有处理,如果是服务器组,服务器组中的不同服务器分别可以负责下述方案中的不同处理,具体的处理分配情况可以由技术人员根据实际需求任意设置,此处不再赘述。
89.下面对与本技术实施例相关的概念进行介绍:
90.rdf(resource description framework,资源描述框架)是一种知识图谱的事实数据模型,知识图谱中的每条边以形如“主语、谓语、宾语”的rdf三元组形式表示,其代表了一对实体之间的命名关系或一个实体拥有的命名属性值。
91.sparql(sparql protocol andrdf query language,查询语言和数据获取协议)是访问rdf数据集的标准查询语言。
92.rdf数据集包括多个rdf三元组,可存储任意图数据。对于图数据中每个边对应有唯一rdf三元组。
93.rdf三元组:令两两不相交的无穷集合i,b和l分别表示国际化资源标识符(internationalized resource identifier,iri)、空结点和字面值。一个rdf三元组三元组形如t=《主语,谓词,宾语》∈(i∪b)
×i×
(i∪b∪l)。
94.rdf数据集:一个rdf数据集是指是rdf三元组的集合。
95.三元组模式:令与上述集合i,集合b和集合l均不相交的无穷集合v表示变量。一个三元组模式形如t=《主语,谓词,宾语》∈(v∪i)
×
(v∪i)
×
(v∪i∪l)。由于三元组模式中的主语、谓词或宾语可能存在变量,这样通过三元组模式可以在rdf数据集中匹配到多个rdf三元组。可见,可以通过三元组模式,在rdf数据集中查询rdf三元组。又由于rdf数据集可用于表示图数据,因此,在查询图数据中的数据时,也可以通过三元组模式查找。
96.bgp(basic graphpattern,基本图模式):包括至少一个三元组模式,一个三元组模式t是bgp;如果p1和p2均为bgp,则p
1 and p2也是bgp。
97.bgp是在图数据中查找数据的基本单位,通过现有的bgp匹配算法可以在rdf数据集中查找到与bgp中各三元组模式匹配的数据。
98.图模式:
99.(1)如果p为bgp,则p为图模式;
100.(2)如果p1和p2均为图模式,则p
1 and p2也是图模式;
101.(3)如果p1和p2均为图模式,则{p1}union{p2}、p
1 optional{p2}也是图模式,其中,{pi}表示组图模式;
102.(4)如果p是一个图模式,c是一个内建条件(使用i∪l∪v和常量,可包含逻辑运算符(,∧,∨),比较运算符(<,,≤,>,≥,=),一元函数(isblank(判断是否为空结点)、isiri(判断是否为iri))等功能),则p filter c是一个图模式。
103.其中,union、optional和filter是sparql的数据查询语句中常用的查询表达式,其中:
104.union是指对多个图模式的合并查找,例如p
1 union p2是指对满足rdf数据集中分别满足三元组模式p1和三元组模式p2的三元组进行查找,并对查找结果求并集。
105.optonal是指对图模式进行选择性匹配,例如p1 optional{p2}是指在保留rdf数据集中满足图模式p1的结果的前提下,添加与之兼容的满足图模式p2的结果。
106.filter是对查找结果进行的条件筛选,例如,p
1 filter c是指在三元组模式p1对
应的查找结果中,筛选满足条件c的数据。
107.组图模式:一个组图模式p递归定义如下:
108.(1)如果p是一个图模式,则{p}是一个组图模式;
109.(2)如果p是一个组图模式,则p也是一个图模式。
110.union图模式:
111.(1)如果p1是一个组图模式或union图模式,且p2是一个组图模式,则p
1 union p2是一个union图模式;
112.(2)如果p
1 union p2是一个union图模式,则它也是一个图模式。
113.良定义的sparql查询:一个图模式p当且仅当满足下列条件时被称为良定义的:
114.(1)对于p中的每个形如p’filter c的子模式,所有出现在内建条件c中的变量也出现在图模式p’中;
115.(2)对于p中的每个形如p’=p
1 optional{p2}的子模式,所有出现在图模式p2及p’以外的变量也出现在图模式p1中。
116.本发明的原理基于sparql查询中选择查询的语义。选择查询的形式为“select v
1 v2...v
k where{

}”,其中select子句表示查询头,where子句表示查询主体。select子句确定投影变量,即需要出现在查询结果中的变量;where子句给出需要与rdf数据集进行匹配的组图模式,也就是where子句给出了数据查询语句。
117.图模式p与rdf数据集d进行匹配生成一系列映射[[p]]d={μ1,μ2,...,μn}.注意映射中允许存在重复的元素,即映射为包而非集合。每个映射μ是指变量集合到结果结合的函数。在映射μ中出现的变量集合表示为dom(μ)。
[0118]
当且仅当所有变量v∈dom(μ1)∩dom(μ2)满足μ1(v)=μ2(v)时,称μ1和μ2这两个映射是兼容的,记作μ1~μ2,此时μ1∪μ2也是一个映射。如果μ1和μ2这两个映射不兼容,记作
[0119]
若存在两个映射ω1和ω2,ω1和ω2可进行的运算如下:
[0120]
(1)
[0121]
(2)ω1∪
bag
ω2={μ1|μ1∈ω1}∪
bag
{μ2|μ2∈ω2};
[0122]
(3)
[0123]
图模式p与rdf数据集d匹配所产生的映射(记作[[p]]d)递归定义如下:
[0124]
(1)如果p是一个三元组模式t,则[[p]]d={μ|var(t)=dom(μ)∧μ(t)∈d},其中var(t)表示t中出现的所有变量,μ(t)t中出现的所有变量均替换为μ后得到的rdf三元组;
[0125]
(2)如果p=(p
1 and p2),则
[0126]
(3)如果p=(p
1 union p2),则[[p]]d=[[p1]]d∪
bag
[[p2]]d;
[0127]
(4)如果p=(p
1 optional p2),),
[0128]
(5)如果p=(p
1 filter c),则[[p]]d={μ|μ∈[[p1]]d∧μ(c)}(即当c中出现的所有变量均替换为μ时(记作μ(c)),μ(c)的值为真)。
[0129]
本发明的目的是提供一种针对图数据库中含有union、optional和filter表达式
的sparql查询执行计划生成的优化算法,用以解决现存图数据库系统中此类查询效率低下的问题。
[0130]
下面对结合实施例对本技术提供的一种查询数据的方法进行详细说明:
[0131]
图1是本技术实施例提供的一种查询数据的方法的流程图。该方法可以由上述计算机设备实现。参见图1,该实施例包括:
[0132]
步骤101、接收数据查询应用程序发送的数据查询指令。
[0133]
其中,数据查询应用程序可用于查询存储数据库中存储的图数据,该图数据可以是以rdf数据集形式存储。该图数据可以是不同企业之间的股权关系,其中,图数据中的结点可以包括企业名称、规模、成立时间,图数据中的边可以表示企业之前的关系、如持股,股份额度等。例如,rdf数据集中的rdf三元组可以是:《http://example.com/tx》《http://example.com/名称》“北京市tx计算机系统有限公司”,该rdf三元组表示公司tx的名称为北京市tx计算机系统有限公司。
[0134]
数据查询应用程序可以在计算机设备中运行,用户可以根据业务需求,在数据查询应用程序中输入数据查询语句,在输入数据查询语句后可以触发数据查询指令。计算机设备中的处理器在接收到数据查询指令后,可以根据数据查询指令中携带用户输入的数据查询语句执行以下处理。
[0135]
步骤102、基于数据查询语句的结构,建立数据查询语句对应的第一查询树。
[0136]
在接收到数据查询语句后,可以根据数据查询语句和各查询词的结构,建立数据查询语句对应的查询树(也可称为be树)。
[0137]
查询树中结点的类型可包括合并结点和查询结点,合并结点可以表示数据查询语句或数据查询语句中的子查询语句。其中,数据查询语句和子查询语句均为图模式。当合并结点表示数据查询语句时,该合并结点即为第一查询树的根结点。查询结点表示数据查询语句或子查询语句中出现的查询词,例如bgp、union、optional、filter等,用于表示bgp的查询结点可称为bgp结点,用于表示bgp的查询结点可称为bgp结点,用于表示union的查询结点可称为union结点,用于表示optional的查询结点可称为optional结点,用于表示filter的查询结点可称为filter结点。
[0138]
在本技术中通过数据查询语句直接建立的查询树可称为第一查询树。应理解的,建立数据查询语句对应的第一查询树,实际上就是将数据查询语句和各子查询语句通过合并结点表示,将数据查询语句中的查询词通过查询结点表示,然后建立与数据查询语句中各子查询语句与各查询词之间的结构相同的树。
[0139]
例如,数据查询语句的结构为((b
1 and(b
2 union b3))optional(b
4 union b5))filter c1,其中,b
1-b5、c1为bgp,可表示为bgp结点。(b
2 union b3)、(b
1 and(b
2 union b3)、(b
4 union b5)、(b
1 and(b
2 union b3))optional(b
4 union b5)为不同的子查询语句,可通过合并结点表示。该数据查询语句对应的第一查询树可如图2所示。
[0140]
步骤103、基于第一查询树中各结点的类型,对第一查询树进行简化处理,得到第二查询树。
[0141]
在得到查询语句对应的第一查询树后,可以对第一查询树进行简化处理,进而可以根据简化处理之后的查询树执行数据查询语句对应的查询操作,能够简化数据查询语句对应的查询操作,提高数据查询的效率。
[0142]
应理解的,对第一查询树进行简化处理,是对第一查询树中结点对应的查询逻辑,对结点进行合并、转化、删除的处理,并不会改变数据查询语句对应的查询结果。根据第一查询树中结点的类型不同,对应的简化处理也不同,此处先不进行详细介绍。对第一查询树进行简化处理后得到的查询树可称为第二查询树。
[0143]
步骤104、基于预设的执行顺序,在图数据库中依次执行第二查询树中各结点对应的查询操作,得到数据查询结果。
[0144]
在得到第二查询树后,可以按照第二查询树中各结点对应的深度,依次执行各结点对应的查询操作,最后可以将得到深度最大的结点(即根结点)的查询结果,该查询结果即为数据查询指令中数据查询语句的查询结果。
[0145]
其中,需要说明的是,对于具有相同深度的各查询结点,可以先执行bgp结点、再执行对应的union结点或optional结点,最后执行filter结点。
[0146]
步骤105、将数据查询结果返回至数据查询应用程序。
[0147]
在得到数据查询结果后,可以数据查询结果发送至查询应用程序,查询应用程序可以将对应的查询应用程序显示在查询结果显示界面中,以供用户查看。
[0148]
例如数据查询语句中包括如下三元组模式:?x《http://example.com/持股》“北京市tx计算机系统有限公司”,则经过上述处理之后,查询结果显示界面中可以显示持股北京市tx计算机系统有限公司的所有个人、公司等。
[0149]
本技术实施例,根据数据查询语句的结构将数据查询语句的查询转化为第一查询树,然后可以利用第一查询树中各查询结点对应的查询逻辑,对查询树进行简化处理得到第二查询树。如此可以通过对查询树的化简,简化数据查询语句的查询操作,进而提高数据查询的效率。
[0150]
下面对步骤103中的对第一查询树的简化处理进行详细说明,根据第一查询树中结点类型的不同,对应的不同的处理分别如下:
[0151]
如图3所示,图3是本技术提供的一种简化处理的方法,该方法包括:
[0152]
步骤301、将第一查询树确定为待简化的第三查询树,确定第三查询树中各结点的深度。
[0153]
其中,对于第三查询树中的叶子结点a的深度d(a)=0。对于除叶子结点之外的其他结点b的深度d(b)=max{d(bi)|bi为o的孩子结点}+1。
[0154]
步骤302、对于第三查询树中深度为1的第一合并结点,如果第一合并结点的孩子结点包括多个bgp结点,则对多个bgp结点进行合并处理,得到合并处理后的第一bgp结点,删除第一合并结点,将第一bgp结点添加到第一合并结点的位置。
[0155]
如果在第三查询树中存在深度为1的第一合并结点,且该第一合并结点的孩子结点为多个bgp结点,则可以将多个bgp结点进行合并处理,将多个bgp结点合并为一个bgp结点,合并后得到的bgp结点即为第一bgp结点。合并之前的bgp结点p1-pn对应的映射分别为[[p1]]
d-[[pn]]d,其中,n为合并之前的bgp结点的个数,则合并之后的bgp结点pm对应的映射射
[0156]
在得到第一子结点之后,可以将原来深度为1的第一合并结点删除,然后将第一bgp结点添加到原来深度为1的合并结点的位置,也就是将第一bgp结点替换掉原来深度为1的第一合并结点。如图4所示,图4为步骤303的示意图,这样在将深度为1的第一合并结点替
换为对应的第一bgp结点后,能够降低结点深度,减少中间结果的数据量,可以提高查询数据的效率。
[0157]
对于深度为1的union结点不做处理。其中,如果第一合并结点的孩子结点包括多个bgp结点之外,还包括filter结点,则在合并得到第一bgp结点后,将该filter结点可作为第一bgp结点的兄弟结点一并替换第一合并结点,并记录该filter结点的作用域,也就是记录该filter结点第一bgp结点的对应关系,在执行每个filter结点之前,可以根据为当前filter结点记录的对应关系,确定当前filter作用域包括的结点,并在作用域所包括结点的查询结果的基础上,执行filter结点对应的查询操作。
[0158]
步骤303、对于第三查询树中深度为2的第二合并结点,如果第二合并结点的孩子结点包括至少一个bgp结点和至少一个union结点,则对至少一个bgp结点进行合并处理,得到合并处理后的第二bgp结点,对至少一个union结点进行合并处理,得到合并处理后的第三union结点;将第二bgp结点合并至第三union结点的孩子结点中,得到第四union结点,删除第二合并结点,将第四union结点添加到第二合并结点的位置。
[0159]
如果第三查询树中存在深度为2的第二合并结点,且如果该第二合并结点的孩子结点中包括多个bgp结点,则可以将各bgp结点进行合并处理得到第二bgp结点,该处理可参考上述步骤303中得到第一bgp结点的处理,此处不再赘述。
[0160]
如果该第二合并结点的孩子结点中还包括多个union结点,则可以将各union结点进行合并处理得到第三union结点。例如存在两个union结点u1和u2需要进行合并每个union结点有两个孩子结点(该孩子结点均为bgp结点)的映射分别为p1、p2和q1、q2,则合并之后的第三union结点具有四个孩子结点,对应的映射分别为
[0161]
如果该第二合并结点的孩子结点中包括m个union结点,其中,第i个union结点ui有ni个孩子结点(bgp结点),则最终合并得到的第三union结点的孩子结点共个。其中,可以根据该m个union结点的bgp结点,确定n个不同的映射集合。每个映射集合中存在m个bgp结点的映射,不同的映射所属的bgp结点为不同union结点的孩子结点。对于第三union结点的各孩子结点的映射,由分别由各映射集合中的映射进行自然连接得到。
[0162]
在分别对bgp结点和union结点的合并处理后,可以将第二bgp结点合并到第三union结点u3的孩子结点中。例如第二子结点的映射为px,第三子结点的孩子结点有四个,对应的映射分别为则将第二bgp结点合并至第三union结点的孩子结点中,得到的第四union结点u4仍然有四个孩子结点,对应的映射分别为结点的孩子结点中,得到的第四union结点u4仍然有四个孩子结点,对应的映射分别为
[0163]
在得到第四union结点后,可以删除深度为2的第二合并结点,将第四union结点添加到原来深度为2的第二合并结点中,也就是将第四union结点替换掉原来深度为2的第二合并结点。如图5所示,图5为步骤304的示意图,这样在将深度为2的第二合并结点替换为对应的第四union结点后,能够降低结点深度,减少中间结果的数据量,可以提高查询数据的效率。
[0164]
其中,需要说明的是,如果深度为2的合并结点的孩子结点中仅包括union结点,则可以直接将该union结点替换掉原来深度为2的合并结点,以降低结点深度。如果深度为2的
合并结点的孩子结点中仅包括一个bgp结点和一个union结点,则可以直接将bgp结点合并至union结点的孩子结点中,以降低结点深度。如果深度为2的合并结点的孩子结点中包括一个bgp结点和多个union结点,则可以先将多个union结点进行合并,再将bgp结点合并至合并后的union结点的孩子结点中,以降低结点深度。如果深度为2的合并结点的孩子结点中包括多个bgp结点和一个union结点,则可以先将多个bgp结点进行合并,再将合并后的bgp结点合并至union结点的孩子结点中,以降低结点深度。
[0165]
另外,如果第二合并结点的孩子结点还包括filter结点,则在合并得到第四union结点后,将该filter结点可作为第四union结点的兄弟结点一并替换第二合并结点,并记录该filter结点的作用域,也就是记录该filter结点第四union结点的对应关系,在执行每个filter结点之前,可以根据为当前filter结点记录的对应关系,确定当前filter作用域包括的结点,并在作用域所包括结点的查询结果的基础上,执行filter结点对应的查询操作。
[0166]
步骤304、对于第三查询树中深度为2的第五union结点,将第五union结点的孙代结点添加到第五union结点的孩子结点中,并删除第五union结点的孙代结点以及孙代结点的父结点,得到简化处理之后第三查询树。
[0167]
如果第三查询树中存在深度为2的第五union结点,则该第五union结点的孩子结点中同样包括多个union结点,则可以将该第五union结点的孩子结点中的union结点对应的孩子结点,合并至该第五union结点的孩子结点中,并删除第五union结点的孙代结点以及孙代结点的父结点,得到简化之后查询树。
[0168]
参见图6,图6为步骤304的示意图,这样在将深度为2的第五union结点的孙代结点删除后,能够降低结点深度,减少中间结果的数据量,可以提高查询数据的效率。
[0169]
需要说明的是,上述步骤302-步骤304仅是对不同的处理分别进行的说明,其在执行时序上并没有先后之分。在经过上述步骤302-步骤304的处理之后,可以得到简化之后的查询树。
[0170]
步骤305、确定简化之后的查询树中各结点的深度。
[0171]
步骤306、如果简化之后的查询树中仍然存在满足步骤302-步骤304进行简化处理的查询结点时,则可以将简化之后的查询树确定为待简化的第三查询树,并跳转至对应的步骤继续进行简化处理,直到简化之后的查询树中不存在可以进行简化处理的结点。
[0172]
由于上述步骤302-步骤304的处理,改变了查询树中各结点对应的深度,因此,在得到简化之后的查询树后,可以确定简化之后的查询树中各结点对应的深度。如果简化之后的查询树中仍然存在可以进行步骤302-步骤304对应简化处理的查询结点时,则可以继续对查询结点进行对应的简化处理,进一步降低查询树中各结点对应的深度,直到确定简化之后的查询树后中不存在可以进行简化的结点。
[0173]
如此,在经过上述多个步骤的循环处理后,明显减少了查询树的深度,可以减低中间查询结果的数据量,可以提高查询数据的效率。
[0174]
如图7所示,图7是本技术提供的一种简化处理的方法,该方法包括:
[0175]
步骤701、确定第一查询树中对应的祖先结点不存在optional结点的第一optional结点。
[0176]
步骤702、将以第一optional结点的父结点为根结点的子查询树转化为第三bgp结点。
[0177]
其中,该图7的处理可以与上述图3的处理结合实施,也就是在上述步骤301之前,可以先执行步骤701。如果在步骤701中确定第一查询树中存在第一optional结点,则可以将该以第一optional结点的父结点为根结点的子查询树当做一个bgp结点,既可以在第一查询树中删除第一optional结点的父结点为根结点的子查询树,然后将第三bgp结点添加到原来第一optional结点的父结点的位置,可参见图8,可以将以合并结点2为根的子查询树转化为bgp3结点。
[0178]
在完成该步骤702的处理之后,可以进行图3的处理,在完成图3的处理后,可以对经过图3处理后得到的查询树中的各结点进行查询操作。当执行到涉及第三结点对应的查询操作时,包括如下两种处理方式:
[0179]
处理方式一:
[0180]
在执行第三bgp结点对应的第一查询操作时,可以先确定第三bgp结点对应的子查询树,该子查询树即为上述步骤702中,由以第一optional结点的父结点为根结点的子查询树。
[0181]
在执行该子查询树的结点对应的查询操作时,可以先执行第一optional结点的兄弟结点对应的查询操作,将执行兄弟结点对应的查询操作后,得到第一查询结果,即在图数据中查询到的子图,作为第一optional结点的后代结点的数据查询范围,再一次执行第一optional结点的后代结点对应的查询操作。这样能够减少执行第一optional结点的后代结点的查询操作时,对应的查询数据量,可以提高查询操作的执行效率。
[0182]
处理方式二:
[0183]
在确定第三bgp结点对应的子查询树后,可以确定第一optional结点的后代结点中是否还包括第二optional结点。
[0184]
如果确定第一optional结点的后代结点中包括至少一个第二optional结点,则可以按照第一optional结点和至少一个第二optional结点的深度,依次执行第一optional结点的第一兄弟结点和至少一个第二optional结点的第二兄弟结点对应的查询操作。
[0185]
其中,每个第二optional结点对应的兄弟结点的数据查询范围为前一个optional结点对应的兄弟结点的查询结果。
[0186]
这样在至执行每个optional结点对应的兄弟结点时,可以将根据前一个optional结点对应的兄弟结点的查询结果的基础上执行对应的查询操作,可以减低每次查询操作对应的查询数据量,进而提高查询效率。
[0187]
在得到每个optional结点对应的兄弟结点的查询结果后,可以再次按照第一optional结点和至少一个第二optional结点的深度,依次执行第一optional结点和至少一个第二optional结点的孩子结点对应的查询操作。
[0188]
其中,任一optional结点的孩子结点的对应的数据查询范围为任一optional结点的兄弟结点对应的查询结果。这样在至执行每个optional结点对应的孩子结点时,可以将在其兄弟结点的查询结果的基础上执行对应的查询操作,可以减低每次查询操作对应的查询数据量,进而提高查询效率。
[0189]
如图9所示,图9是本技术提供的一种简化处理的方法,该方法包括:
[0190]
步骤901、对于第一查询树中的filter结点,如果filter结点对应的filter条件满足预设的转换条件,则将filter条件转换为析取范式。
[0191]
在执行上述步骤301之前,如果确定第一查询树中存在filter结点,则可以将先确定filter结点对应的filter条件是否满足预设的转换条件。其中,转换条件filter结点对应的filter条件中仅有由变量、常量以及与、或、相等三种运算符组成。
[0192]
步骤902、基于析取范式,将filter结点转换为union结点。
[0193]
如果确定存在filter结点对应的filter条件满足预设的转换条件,则可以将filter结点对应的filter条件转换为析取范式f1||f2||...||fm。其中在析取范式中任一fi为对一个变量的约束条件,该约束条件可认为是变量与对应约束值的对应关系。在得到析取范式f1||f2||...||fm后,如果确定任一fi和fj不相容,即不存在任何一个映射满足任一对fi∧fj,则将第一查询树中出现的被filter条件约束的查询结点对应的变量依次用bind子句赋值为约束值,进而将filter结点转换为union结点,具体处理如下:
[0194]
可以添加一个union结点作为filter结点的兄弟,并为这个union结点添加m个孩子结点,该m个孩子结点均为合并结点(m即为析取范式中的约束条件数)。对每个约束条件fi,将被filter条件约束的查询结点(即filter结点对应的除新添加的union结点外的其他兄弟结点)中的变量用bind子句赋值为fi中的约束值,并将得到的结点作为孩子结点接到新添加的union结点的第i个孩子结点下。最后,删除该层除新添加的union结点以外的所有结点。完成步骤902后,可转至执行步骤301的处理。
[0195]
如此,可以将filter结点转换为union结点参与到图3的简化处理中,能够在一定程度上对查询树进行简化,进而提高数据查询效率。
[0196]
如图10所示,图10是本技术提供的一种简化处理的方法,该方法包括:
[0197]
步骤1001、如果存在可并行执行的多个bgp结点,则确定多个bgp结点对应的公共三元组模式。
[0198]
其中,两个三元组模式t1=《s1,p1,o1》和t2=《s2,p2,o2》,称t1和t2是等价的(记作),当且仅当以下条件成立:1、s1和s2均为变量;2、p1和p2是相同的谓词;3、o1和o2均为变量,或是相同的常量。
[0199]
若则μ(t1,t2)是从var(t1)到var(t2)的双射,其中var(t1)表示t1中出现的变量集合。
[0200]
给定两个bgpbi和bj,其三元组序列分别为si=(ti1,...,tik)和sj=(tj1,...,tjk’),称si和sj是等价的(表示为),当且仅当以下条件成立:1、序列si和sj长度相同,即k=k’;2、同时满足3、μ1(ti1,tj1)∪...∪μk(tik,tjk’)仍为从var(si)到var(sj)的双射,其中var(si)表示si中出现的变量集合。
[0201]
基于上述定义,如果在查询图中存在多个可并行执行的bgp时,可以使用频繁子图挖掘算法找出多个bgp间的公共子查询c={c1,

,cn},其中每个ci是这些bgp中的等价三元组子序列。其中,公共子查询c即为多个bgp结点对应的公共三元组模式。
[0202]
步骤1002、基于贪心算法,在公共三元组模式中确定对应查询成本最低的部分公共三元组模式。
[0203]
选取高选择度的公共子查询:给定一个bgp集合b={b1,...,bm}和它们之间的公共子查询集合c={c1,...,cn},选择一个公共子查询子集以最小化如下代价:
[0204][0205]
其中cost(b,cs)为此bgp集合的匹配成本,cost(ci)为选入子集cs的公共子查询ci的匹配成本,cost(bj|cs)是给定所有选入子集cs的公共子查询的结果后,对剩余的rdf三元组bj进行查询的匹配成本。其中,匹配成本可以是查询对应的三元组需要消耗的计算资源或占用的时长等,该匹配成本可以根据每个三元组模式中的变量确定,每个变量对应的匹配成本可以由技术人员预先设备。
[0206]
cost(ci)和cost(bj|cs)基于三元组模式t的选择度sel(t)定义如下:
[0207]
cost(ci)=min{sel(t)|t∈ci}
×
|ci|
[0208]
cost(bj|cs)=min{sel(t)|t∈b
′j}
×
|b
′j|
[0209]
其中即bgp集合b中未被公共子查询子集cs覆盖的部分。
[0210]
最小化上述目标方程是一个np难问题。因此,使用贪心算法选择cs使上述目标尽量小。将cs初始化为空集。在每一步中,选择一个公共子查询ci∈c加入到cs中,使之最大化δ=cost(b,cs)-cost(b,cs∪ci),迭代直至无法将任何公共子查询添加到cs。最后得到的cs即为查询成本最低的部分公共三元组模式。
[0211]
步骤1003、在图数据中查询部分公共三元组模式对应的数据。
[0212]
步骤1004、在图数据中查询多个bgp结点中除部分公共三元组模式外的其他三元组模式对应的数据。
[0213]
在执行多个bgp结点对应的查询操作时,首先可以对所有选定的公共子查询ci∈cs执行匹配,并缓存中间结果[[ci]]。对每个bgp结点bj执行匹配时,其结果集可如下计算:
[0214][0215]
其中每个为在bj三元组模式子序列中的公共子查询,b
′j如上定义为bj未被公共子查询子集cs覆盖的部分。
[0216]
如此,在执行多个bgp结点对应的查询处理时,可以先对多个bgp结点对应的公关三元组模式进行查询,再执行多个bgp结点中除部分公共三元组模式外的其他三元组模式对应的查询处理,如此可以减少查询的数据量,能够提高查询速度。
[0217]
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0218]
图11是本技术实施例提供的一种查询数据的装置结构示意图,该装置可以是上述实施例中的计算机设备,参见图11,该装置包括:
[0219]
接收模块1110,用于接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;
[0220]
建立模块1120,用于基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;
[0221]
处理模块1130,用于基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;
[0222]
查询模块1140,用于基于预设的执行顺序,在图数据库中依次执行所述第二查询
树中各结点对应的查询操作,得到数据查询结果;
[0223]
返回模块1150,用于将所述数据查询结果返回至所述数据查询应用程序。
[0224]
可选的,所述第一查询树中结点的类型包括合并结点和查询结点,其中,所述合并结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句,所述查询结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句中的查询词,所述查询结点包括bgp结点、union结点、optional结点、filter结点中的至少一种。
[0225]
可选的,所述查询模块1140,用于:
[0226]
将所述第一查询树确定为待简化的第三查询树,确定所述第三查询树中各结点的深度;
[0227]
对于所述第三查询树中深度为1的第一合并结点,如果所述第一合并结点的孩子结点包括多个bgp结点,则对所述多个bgp结点进行合并处理,得到合并处理后的第一bgp结点,删除所述第一合并结点,将所述第一bgp结点添加到所述第一合并结点的位置;
[0228]
对于所述第三查询树中深度为2的第二合并结点,如果所述第二合并结点的孩子结点包括至少一个bgp结点和至少一个union结点,则对所述至少一个bgp结点进行合并处理,得到合并处理后的第二bgp结点,对所述至少一个union结点进行合并处理,得到合并处理后的第三union结点;将所述第二bgp结点合并至所述第三union结点的孩子结点中,得到第四union结点,删除所述第二合并结点,将所述第四union结点添加到所述第二合并结点的位置;
[0229]
对于所述第三查询树中深度为2的第五union结点,将所述第五union结点的孙代结点添加到所述第五union结点的孩子结点中,并删除所述第五union结点的孙代结点以及所述孙代结点的父结点,得到简化处理之后第三查询树。
[0230]
可选的,所述处理模块1130,还用于:
[0231]
确定所述第一查询树中对应的祖先结点不存在optional结点的第一optional结点;
[0232]
将以所述第一optional结点的父结点为根结点的子查询树转化为第三bgp结点。
[0233]
可选的,所述查询模块1140,用于:
[0234]
当执行所述第三bgp结点对应的第一查询操作时,确定所述第三bgp结点对应的子查询树;
[0235]
执行所述子查询树中所述第一optional结点的兄弟结点对应的查询操作,得到第一查询结果;将所述第一查询结果确定为所述第一optional结点的后代结点的数据查询范围;基于所述数据查询范围,执行所述第一optional结点的后代结点对应的查询操作。
[0236]
可选的,所述查询模块1140,用于:
[0237]
当执行所述第三bgp结点对应的第一查询操作时,如果确定所述第一optional结点的后代结点中包括至少一个第二optional结点;
[0238]
按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的第一兄弟结点和所述至少一个第二optional结点的第二兄弟结点对应的查询操作,其中,每个第二optional结点的第二兄弟结点对应的数据查询范围为前一个optional结点的第二兄弟结点对应的查询结果;
[0239]
按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行
所述第一optional结点的孩子结点和所述至少一个第二optional结点的孩子结点对应的查询操作,其中,所述任一optional结点的孩子结点的对应的数据查询范围为所述任一optional结点的兄弟结点对应的查询结果。
[0240]
可选的,所述处理模块1130,用于:
[0241]
对于所述第一查询树中的filter结点,如果所述filter结点对应的filter条件满足预设的转换条件,则将所述filter条件转换为析取范式;
[0242]
基于所述析取范式,将所述filter结点转换为union结点。
[0243]
可选的,所述转换条件为所述filter结点对应的filter条件由变量、常量以及与、或、相等三种运算符组成。
[0244]
可选的,所述查询模块1140,用于:
[0245]
如果存在可并行执行的多个bgp结点,则确定所述多个bgp结点对应的公共三元组模式;
[0246]
基于所述贪心算法,在所述公共三元组模式中确定对应查询成本最低的部分公共三元组模式;
[0247]
在所述图数据中查询所述部分公共三元组模式对应的数据;
[0248]
在所述图数据中查询多个bgp结点中除所述部分公共三元组模式外的其他三元组模式对应的数据。
[0249]
需要说明的是:上述实施例提供的查询数据的装置在查询数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的查询数据的装置与查询数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0250]
图12示出了本技术一个示例性实施例提供的计算机设备1200的结构框图。该计算机设备1200可以是便携式移动终端,比如:智能手机、平板电脑、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1200还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
[0251]
通常,计算机设备1200包括有:处理器1201和存储器1202。
[0252]
处理器1201可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1201可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1201也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1201可以集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1201还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0253]
存储器1202可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1202还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1202中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1201所执行以实现本技术中方法实施例提供的查询数据的方法。
[0254]
在一些实施例中,计算机设备1200还可选包括有:外围设备接口1203和至少一个外围设备。处理器1201、存储器1202和外围设备接口1203之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1203相连。具体地,外围设备包括:射频电路1204、显示屏1205、摄像头组件1206、音频电路1207、定位组件1208和电源1209中的至少一种。
[0255]
外围设备接口1203可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1201和存储器1202。在一些实施例中,处理器1201、存储器1202和外围设备接口1203被集成在同一芯片或电路板上;在一些其他实施例中,处理器1201、存储器1202和外围设备接口1203中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
[0256]
射频电路1204用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路1204通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1204将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1204包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1204可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路1204还可以包括nfc(near field communication,近距离无线通信)有关的电路,本技术对此不加以限定。
[0257]
显示屏1205用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1205是触摸显示屏时,显示屏1205还具有采集在显示屏1205的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1201进行处理。此时,显示屏1205还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1205可以为一个,设置在计算机设备1200的前面板;在另一些实施例中,显示屏1205可以为至少两个,分别设置在计算机设备1200的不同表面或呈折叠设计;在另一些实施例中,显示屏1205可以是柔性显示屏,设置在计算机设备1200的弯曲表面上或折叠面上。甚至,显示屏1205还可以设置成非矩形的不规则图形,也即异形屏。显示屏1205可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light-emitting diode,有机发光二极管)等材质制备。
[0258]
摄像头组件1206用于采集图像或视频。可选地,摄像头组件1206包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtual reality,虚拟现实)拍摄功能或者其它融合
拍摄功能。在一些实施例中,摄像头组件1206还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
[0259]
音频电路1207可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1201进行处理,或者输入至射频电路1204以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备1200的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1201或射频电路1204的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1207还可以包括耳机插孔。
[0260]
定位组件1208用于定位计算机设备1200的当前地理位置,以实现导航或lbs(location based service,基于位置的服务)。定位组件1208可以是基于美国的gps(global positioning system,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
[0261]
电源1209用于为计算机设备1200中的各个组件进行供电。电源1209可以是交流电、直流电、一次性电池或可充电电池。当电源1209包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
[0262]
在一些实施例中,计算机设备1200还包括有一个或多个传感器1210。该一个或多个传感器1210包括但不限于:加速度传感器1211、陀螺仪传感器1212、压力传感器1213、指纹传感器1214、光学传感器1215以及接近传感器1216。
[0263]
加速度传感器1211可以检测以计算机设备1200建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1211可以用于检测重力加速度在三个坐标轴上的分量。处理器1201可以根据加速度传感器1211采集的重力加速度信号,控制显示屏1205以横向视图或纵向视图进行用户界面的显示。加速度传感器1211还可以用于游戏或者用户的运动数据的采集。
[0264]
陀螺仪传感器1212可以检测计算机设备1200的机体方向及转动角度,陀螺仪传感器1212可以与加速度传感器1211协同采集用户对计算机设备1200的3d动作。处理器1201根据陀螺仪传感器1212采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
[0265]
压力传感器1213可以设置在计算机设备1200的侧边框和/或显示屏1205的下层。当压力传感器1213设置在计算机设备1200的侧边框时,可以检测用户对计算机设备1200的握持信号,由处理器1201根据压力传感器1213采集的握持信号进行左右手识别或快捷操作。当压力传感器1213设置在显示屏1205的下层时,由处理器1201根据用户对显示屏1205的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
[0266]
指纹传感器1214用于采集用户的指纹,由处理器1201根据指纹传感器1214采集到的指纹识别用户的身份,或者,由指纹传感器1214根据采集到的指纹识别用户的身份。在识
别出用户的身份为可信身份时,由处理器1201授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1214可以被设置在计算机设备1200的正面、背面或侧面。当计算机设备1200上设置有物理按键或厂商logo时,指纹传感器1214可以与物理按键或厂商logo集成在一起。
[0267]
光学传感器1215用于采集环境光强度。在一个实施例中,处理器1201可以根据光学传感器1215采集的环境光强度,控制显示屏1205的显示亮度。具体地,当环境光强度较高时,调高显示屏1205的显示亮度;当环境光强度较低时,调低显示屏1205的显示亮度。在另一个实施例中,处理器1201还可以根据光学传感器1215采集的环境光强度,动态调整摄像头组件1206的拍摄参数。
[0268]
接近传感器1216,也称距离传感器,通常设置在计算机设备1200的前面板。接近传感器1216用于采集用户与计算机设备1200的正面之间的距离。在一个实施例中,当接近传感器1216检测到用户与计算机设备1200的正面之间的距离逐渐变小时,由处理器1201控制显示屏1205从亮屏状态切换为息屏状态;当接近传感器1216检测到用户与计算机设备1200的正面之间的距离逐渐变大时,由处理器1201控制显示屏1205从息屏状态切换为亮屏状态。
[0269]
本领域技术人员可以理解,图12中示出的结构并不构成对计算机设备1200的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0270]
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中查询数据的方法。该计算机可读存储介质可以是非暂态的。例如,所述计算机可读存储介质可以是rom(read-only memory,只读存储器)、ram(random access memory,随机存取存储器)、cd-rom、磁带、软盘和光数据存储设备等。
[0271]
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品中包括至少一条指令,该至少一条指令由处理器加载并执行以实现上述实施例中查询数据的方法。
[0272]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0273]
本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。
[0274]
本技术中术语“至少一个”的含义是指一个或多个,本技术中术语“多个”的含义是指两个或两个以上。
[0275]
以上描述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种查询数据的方法,其特征在于,所述方法包括:接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;基于预设的执行顺序,在图数据库中依次执行所述第二查询树中各结点对应的查询操作,得到数据查询结果;将所述数据查询结果返回至所述数据查询应用程序。2.根据权利要求1所述的方法,其特征在于,所述第一查询树中结点的类型包括合并结点和查询结点,其中,所述合并结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句,所述查询结点用于表示所述数据查询语句或所述数据查询语句中的子查询语句中的查询词,所述查询结点包括基本图模式bgp结点、联合union结点、可选匹配optional结点、过滤filter结点中的至少一种。3.根据权利要求2所述的方法,其特征在于,所述基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树,包括:将所述第一查询树确定为待简化的第三查询树,确定所述第三查询树中各结点的深度;对于所述第三查询树中深度为1的第一合并结点,如果所述第一合并结点的孩子结点包括多个bgp结点,则对所述多个bgp结点进行合并处理,得到合并处理后的第一bgp结点,删除所述第一合并结点,将所述第一bgp结点添加到所述第一合并结点的位置;对于所述第三查询树中深度为2的第二合并结点,如果所述第二合并结点的孩子结点包括至少一个bgp结点和至少一个union结点,则对所述至少一个bgp结点进行合并处理,得到合并处理后的第二bgp结点,对所述至少一个union结点进行合并处理,得到合并处理后的第三union结点;将所述第二bgp结点合并至所述第三union结点的孩子结点中,得到第四union结点,删除所述第二合并结点,将所述第四union结点添加到所述第二合并结点的位置;对于所述第三查询树中深度为2的第五union结点,将所述第五union结点的孙代结点添加到所述第五union结点的孩子结点中,并删除所述第五union结点的孙代结点以及所述孙代结点的父结点,得到简化处理之后第三查询树。4.根据权利要求3所述的方法,其特征在于,所述将所述第一查询树确定为待简化的第三查询树之前,所述方法还包括:确定所述第一查询树中对应的祖先结点不存在optional结点的第一optional结点;将以所述第一optional结点的父结点为根结点的子查询树转化为第三bgp结点。5.根据权利要求4所述的方法,其特征在于,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:当执行所述第三bgp结点对应的第一查询操作时,确定所述第三bgp结点对应的子查询树;执行所述子查询树中所述第一optional结点的兄弟结点对应的查询操作,得到第一查
询结果;将所述第一查询结果确定为所述第一optional结点的后代结点的数据查询范围;基于所述数据查询范围,执行所述第一optional结点的后代结点对应的查询操作。6.根据权利要求4所述的方法,其特征在于,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:当执行所述第三bgp结点对应的第一查询操作时,如果确定所述第一optional结点的后代结点中包括至少一个第二optional结点;按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的第一兄弟结点和所述至少一个第二optional结点的第二兄弟结点对应的查询操作,其中,每个第二optional结点的第二兄弟结点对应的数据查询范围为前一个optional结点的第二兄弟结点对应的查询结果;按照所述第一optional结点和所述至少一个第二optional结点的深度,依次执行所述第一optional结点的孩子结点和所述至少一个第二optional结点的孩子结点对应的查询操作,其中,所述任一optional结点的孩子结点的对应的数据查询范围为所述任一optional结点的兄弟结点对应的查询结果。7.根据权利要求2所述的方法,其特征在于,所述基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树,包括:对于所述第一查询树中的filter结点,如果所述filter结点对应的filter条件满足预设的转换条件,则将所述filter条件转换为析取范式;基于所述析取范式,将所述filter结点转换为union结点。8.根据权利要求7所述的方法,其特征在于,所述转换条件为所述filter结点对应的filter条件由变量、常量以及与、或、相等三种运算符组成。9.根据权利要求2所述的方法,其特征在于,所述在图数据库中依次执行所述第二查询树中各结点对应的查询操作,包括:如果存在可并行执行的多个bgp结点,则确定所述多个bgp结点对应的公共三元组模式;基于所述贪心算法,在所述公共三元组模式中确定对应查询成本最低的部分公共三元组模式;在所述图数据中查询所述部分公共三元组模式对应的数据;在所述图数据中查询多个bgp结点中除所述部分公共三元组模式外的其他三元组模式对应的数据。10.一种查询数据的装置,其特征在于,所述装置包括:接收模块,用于接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;建立模块,用于基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;处理模块,用于基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;查询模块,用于基于预设的执行顺序,在图数据库中依次执行所述第二查询树中各结点对应的查询操作,得到数据查询结果;
返回模块,用于将所述数据查询结果返回至所述数据查询应用程序。11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至权利要求9任一项所述的查询数据的方法所执行的操作。12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至权利要求9任一项所述的查询数据的方法所执行的操作。

技术总结
本申请公开了一种查询数据的方法、装置、设备及存储介质,属于图数据库技术领域。所述方法包括:接收数据查询应用程序发送的数据查询指令,所述数据查询指令中携带有数据查询语句;基于所述数据查询语句的结构,建立所述数据查询语句对应的第一查询树;基于所述第一查询树中各结点的类型,对所述第一查询树进行简化处理,得到第二查询树;基于预设的执行顺序,在图数据库中依次执行所述第二查询树中各结点对应的查询操作,得到数据查询结果;将所述数据查询结果返回至所述数据查询应用程序。采用本申请,能够提高在图数据库中查询数据的效率。率。率。


技术研发人员:邹磊
受保护的技术使用者:北京大学
技术研发日:2021.12.31
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-16446.html

最新回复(0)