CN107463671B - 路径查询的方法和装置 - Google Patents
路径查询的方法和装置 Download PDFInfo
- Publication number
- CN107463671B CN107463671B CN201710657819.9A CN201710657819A CN107463671B CN 107463671 B CN107463671 B CN 107463671B CN 201710657819 A CN201710657819 A CN 201710657819A CN 107463671 B CN107463671 B CN 107463671B
- Authority
- CN
- China
- Prior art keywords
- regular
- path
- query
- expression
- symbol
- 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
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/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种路径查询的方法和装置,属于计算机技术领域。该方法包括:确定查询条件所对应的正则路径查询;基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。采用本发明,可以提高查询效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种路径查询的方法和装置。
背景技术
随着语义网的不断发展,出现了大量的RDF(Resource Description Framework,资源描述框架)数据集,如YAGO等,这些数据的RDF三元组的数量通常在十亿甚至百亿以上,海量的数据为RDF数据查询带来了新的挑战。SPARQL(Simple Protocol and ResourceDescription Framework Query Language,简单协议和资源描述框架查询语言)查询是W3C推出的一种RDF数据查询语言,它的语法与SQL(Structured Query Language,结构化查询语言)语句的语法相似,在SPARQL 1.1标准中,定义了属性路径的概念和基本查询单元,使用简洁的方式为属性路径的查询提供了支持,但是对于一些复杂的语义,使用嵌套式的正则表达式时,就需要一些特殊的查询方法来解决,因此正则路径查询成为了一个被广泛研究和讨论的问题。
现有技术中,RDF三元组由S(subject,主体),P(predicate,谓词)和O(object,客体)组成,主体是实体或类别,谓词是实体或类别的属性,客体是实体或类别。正则路径查询的形式为(s,R,t),s表示起始节点,t表示结束节点,节点为主体或客体,R表示正则表达式,正则表达式中包括至少一个谓词表达式,如s为张三,t为加拿大,在张三的所有同事中找出出生在加拿大的同事,正则路径查询为(张三,同事*/出生在,加拿大)。现有技术中,进行正则路径查询时,一般是查询正则表达式中每个谓词表达式对应的路径,然后将正则表达式中包含的所有谓词表达式的路径进行查重处理,然后进行拼接,得到从s到t的所有路径。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对于正则表达式中包含的每个谓词表达式都分别查询路径,有可能查询到重复的路径,查询冗余比较大,从而导致查询效率低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种路径查询的方法和装置。所述技术方案如下:
第一方面,提供了一种路径查询的方法,所述方法包括:
确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式;
在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
可选的,所述第一正则符号为+,第二正则符号为*。
可选的,所述在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,包括:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
这样,可以提高查询效率。
可选的,所述在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集之前,还包括:
确定包含第三正则符号的T[i];
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
这样,可以提高查询效率。
可选的,所述第三正则符号为?。
第二方面,提供了一种路径查询的装置,所述装置包括:
第一确定模块,用于确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
转换模块,用于基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式;
第二确定模块,用于在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
第一查询模块,用于在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
第二查询模块,用于在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
拼接模块,用于根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
可选的,所述第一正则符号为+,第二正则符号为*。
可选的,所述第二查询模块,用于:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
可选的,所述第二确定模块,还用于:
确定包含第三正则符号的T[i];
所述转换模块,还用于:
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
可选的,所述第三正则符号为?。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,确定查询条件所对应的正则路径查询,其中,正则路径查询中包括起始节点、结束节点和正则表达式,基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],i为正整数,在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集,在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数,根据转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。这样,对于一个复杂的正则表达式,可以分成谓词表达式序列分别进行查询,不需要分别对每个谓词表达式进行查询,从而可以减少查询冗余,进而可以提高查询效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种路径查询的方法的流程示意图;
图2是本发明实施例提供的一种RDF数据集的示意图;
图3是本发明实施例提供的一种正则表达式的分解示意图;
图4是本发明实施例提供的一种路径查询的装置的结构示意图;
图5是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种路径查询的方法,该方法的执行主体可以是服务器。服务器中可以设置有处理器、存储器和收发器等,处理器可以用于路径查询过程的处理,存储器可以用于路径查询过程中需要的数据以及产生的数据,收发器可以用于接收以及发送消息等。
在进行实施前,首先介绍本发明实施例中可能涉及的正则路径语法,如表一所示。
表一
语法形式 | 含义说明 |
P | 单独谓词 |
^P | 反向路径 |
p1/p2 | 相邻路径 |
p1|p2 | 路径1或路径2 |
p* | 路径出现0或多次 |
p+ | 路径出现1或多次 |
p? | 路径出现0或1次 |
p(n) | 路径出现n次 |
p(n,m) | 路径出现n到m次 |
如图1所示,该方法的处理流程可以包括如下的步骤:
步骤101,确定查询条件所对应的正则路径查询。
其中,正则路径查询中包括起始节点、结束节点和正则表达式,形式为(s,R,t)的查询,s表示起始节点,t表示结束节点,R为正则表达式。
在实施中,服务器在获取到查询条件时,可以进一步确定查询条件所对应的正则路径查询,例如,查询条件是“查询与chen是同事,且出生在加拿大”,正则路径查询的起始节点为chen,结束节点为加拿大,正则表达式为/同事*/出生在/,“同事”和“出生在”是谓词,“同事*”、“出生在”为谓词表达式,正则路径查询为(chen,/同事*/出生在/,加拿大)。
本发明实施例中,以正则路径查询为(s,P1+/(P2|P3)/P4+/P5?P6,t)为例进行说明,s为起始节点,t为结束节点,P1、P2、P3、P4、P5和P6表示不同的谓词。
需要说明的是,服务器获取查询条件,可以是接收到终端发送的查询请求后,解析得到查询条件,本发明实施例不做限定。
步骤102,基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式。
其中,第一正则符号和第二正则符号可以由技术人员预设,并且存储至服务器中,如第一正则符号为“+”,第二正则符号为“*”等。
在实施中,技术人员可以在服务器中预先存储正则路径转换表,如表二所示。
表二
语法形式 | 等价转换 |
(s,P,t) | (s,P,t) |
(s,^p,t) | (t,p,s) |
(s,p1/p2,t) | (s,p1,v)and(v,p2,t) |
(s,p1|p2,t) | (s,p1,t)or(s,p2,t) |
(s,p*,t) | null or(s,p/p*,t) |
(s,p+,t) | (s,p/p*,t) |
(s,p?,t) | null or(s,p,t) |
(s,p(n),t) | (s,p/p…/p,t)//n个路径 |
(s,p(n,m),t) | (s,p(n)/p?(m-n),t) |
服务器确定正则路径查询后,可以获取其中包括的正则表达式,然后确定包含第一正则符号的谓词表达式。在正则路径转换表中,查找到包含第一正则符号的谓词表达式对应的语法形式,然后等价转换为包含第二正则符号的谓词表达式。
可选的,第一正则符号为+,第二正则符号为*。
在实施中,第一正则符号为“+”,第二正则符号为“*”,在正则路径转换表中,(s,p+,t)等价于(s,p/p*,t)。例如,正则表达式为P1+/(P2|P3)/P4+/P5?P6,可以将“P1+”转换为“P/P*”或“P*/P”,这样,转换后的正则表达式可以为P1*/P1/(P2|P3)/P4/P4*/P5?P6。
步骤103,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],i为正整数。
在实施中,服务器对正则表达式进行转换后,可以在转换后的正则表达式中找出不包含第二正则符号的谓词表达式序列。例如,如图3所示,转换后的正则表达式为P1*/P1/(P2|P3)/P4/P4*/P5?P6,有两个T[i],可以是T[1]和T[2],T[1]为P1/(P2|P3)/P4,T[2]为P5?P6。
可选的,还可以对包含第三正则符号的T[i]进行处理,相应的处理可以如下:
确定包含第三正则符号的T[i];基于正则路径转换表,将包含第三正则符号的T[i]转换为不包含第三正则符号的T[i]。
其中,第三正则符号为?,在正则路径转换表中,(s,p?,t)等价于null or(s,p,t)。例如,T[2]为P5?P6,可以将“P5?”转换为“null”或者“P5”,这样,转换后的T[2]为P6U P5/P6。
步骤104,在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集。
其中,预设的RDF数据集可以由技术人员预设,并且存储至服务器中,RDF数据集以关系图的形式存储,以G表示,如图2所示,关系图中包括节点和边,节点为RDF三元组的主体或客体,每一条边为RDF三元组中的谓词。
在实施中,服务器在转换后的正则表达式找出不包含第二正则符号的谓词表达式序列后,对于每个T[i],服务器可以在预设的RDF数据集中进行查询,得到包含该T[i]的至少一条路径,并且可以找到该T[i]对应的中间节点集。
例如,i=1,T[1]为P1/(P2|P3)/P4,由于P2|P3表示路径2或路径3,所以可以将T[1]表示为P1/P2/P4/∪/P1/P3/P4,在预设的RDF数据集中,可以查看从P1到P2再经过P4的多条路径,得到x1-P1-x2-P2-x3-P4-x4,并且查看从P1到P3再经过P4的多条路径,得到x1-P1-x2-P3-x3-P4-x4,x1、x2、x3和x4为临时变量,此处的x1、x2、x3和x4的取值构成T[1]对应的中间节点集。i=2,T[2]为P5?P6,转换后的T[2]为P6U P5/P6,在预设的RDF数据集中,可以查看从P5到经过P6直至t的至少一条路径,得到x5-P5-x6-P6-t,并且查看从P6到t的至少一条路径,得到x5-P6-t,x5和x6为临时变量,由x5、x6的取值构成T[2]对应的中间节点集。
可选的,上述T[1]的查询可以使用gStore引擎进行查询,查询算法可以如下:
这两个查询的中间节点集可以记为Δ1,Δ1中包含了(Δ11,Δ12,Δ13,Δ14)分别对应查询到的临时变量(x1,x2,x3,x4),这样,就得到了T[1]对应的中间节点集和包含T[1]的至少一条路径。
可选的,上述T[2]的查询可以使用gStore引擎进行查询,查询算法可以如下:
这两个查询的中间节点集可以记为Δ2,Δ2中包含了(Δ21,Δ22)对应查询到的临时变量(x5,x6),这样,就得到了T[2]对应的中间节点集和包含T[2]的至少一条路径。
这样,对于转换后的正则表达式P1*/P1/(P2|P3)/P4/P4*/P5?P6,正则路径查询变为(s,P1*,Δ11)、(Δ11,P1/(P2|P3)/P4,Δ14)、(Δ14,P4*,Δ2)和(Δ2,P5?P6,t),经过步骤104的处理后,已经得到(Δ11,P1/(P2|P3)/P4,Δ14)和(Δ2,P5?P6,t)的结果,正则路径查询中变为(s,P1*,Δ11)和(Δ14,P4*,Δ2)两个包含变量的查询。
步骤105,在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数。
在实施中,经过步骤104中,对T[i]查询后,可以确定转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j],然后根据每个T[i]对应的中间节点集、以及正则路径查询的起始节点和结束节点,确定每个L[j]的起始节点和结束节点,对每个L[j]进行查询,得到从L[j]的起始节点到L[j]的结束节点的多条路径中包括L[j]的至少一条路径。
例如,转换后的正则表达式为P1*/P1/(P2|P3)/P4/P4*/P5?P6,被T[i]分割的不包含第二正则符号的谓词表达式序列L[j]为两个,可以是L[1]和L[2],L[1]为P1*,L[2]为P4*。L[1]与T[1]相邻,且在T[1]的前面,所以L[1]的起始节点为s,结束节点为Δ11,L[2]与T[1]、T[2]相邻,且在T[1]的后面,在T[2]的前面,所以L[2]的起始节点为Δ14,结束节点为Δ2,可以在预设的RDF数据集中,查询从s到P1*最终到达Δ11的至少一条路径,并且可以查询从Δ14到P4*最终到达Δ2的至少一条路径。
可选的,可以使用深度优先搜索算法,得到包含L[j]的至少一条路径,相应的处理可以如下:
在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
在实施中,经过步骤104中,对T[i]的查询后,可以确定转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j],然后根据每个T[i]对应的中间节点集、以及正则路径查询的起始节点和结束节点,确定每个L[j]的起始节点和结束节点。
对于每个L[j],在预设的RDF数据集中,确定L[j]的起始节点沿着一条边经过L[j]到达L[j]的结束节点的一条路径,并且将这条边标记为已使用,然后确定沿着另一条边从L[j]的起始节点经过L[j]到达L[j]的结束节点的一条路径,直到走完RDF数据集中,所有从L[j]的起始节点经过L[j]到达L[j]的结束节点的边,上述得到的所有路径,即为包含该L[j]的所有路径。
另外,也可以使用递归的方法得到包含L[j]的至少一条路径,相应的处理可以如下:
在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行递归查询,得到包含L[j]的至少一条路径。
在实施中,对T[i]查询后,可以确定转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j],然后根据每个T[i]对应的中间节点集、以及正则路径查询的起始节点和结束节点,确定每个L[j]的起始节点和结束节点。如果预设的RDF数据集是有向无环图,可以直接使用递归的方式确定出包含L[j]的至少一条路径,如果预设的RDF数据集是有环图,直接使用递归的方式,会导致无穷递归的情形,技术人员还需要设定递归深度来避免无限递归的问题。
需要说明的是,递归的方法在使用过程中与现有技术中的使用方法相同,此处不再赘述。
另外,在查询包含L[j]的至少一条路径时,还可以首先计算预设的RDF数据集对应的传递闭包并建立索引,然后基于传递闭包和索引,查询到包含L[j]的至少一条路径。
步骤106,根据转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。
在实施中,服务器在确定包含T[i]的至少一条路径和包含L[j]的至少一条路径后,可以确定转换后的正则表达式中包含的T[i]和L[j]的排列顺序,然后将包含T[i]的至少一条路径与包含L[j]的至少一条路径,按照T[i]和L[j]的排列顺序,拼接到一起,得到满足查询条件的至少一条路径。
例如,转换后的正则表达式为P1*/P1/(P2|P3)/P4/P4*/P5?P6,T[1]为P1/(P2|P3)/P4,T[2]为P5?P6,L[1]为P1*,L[2]为P4*,排列顺序为L[1]、T[1]、L[2]和T[2],可以将从s经L[1]至Δ11的至少一条路径、从Δ11经T[1]至Δ14的至少一条路径、从Δ14经L[2]到Δ2的至少一条路径、从Δ2经T[2]到t的至少一条路径,拼接到一起,得到满足查询条件的至少一条路径,这样,如果从s经L[1]至Δ11有3条路径,从Δ11经T[1]至Δ14有4条路径,从Δ14经L[2]到Δ2有8条路径,从Δ2经T[2]到t有2条路径,一种可以得到3*4*8*2=192条路径。
本发明实施例中,还提供了执行步骤101~步骤106的处理的gStore引擎的正则路径搜索算法,相应的描述可以如下:
预设的RDF数据集为D,形成的关系图为G,查询条件对应的正则路径查询为(s,R,t),正则表达式为R,起始节点s,结束节点t。
步骤101~步骤106的处理的gStore引擎的正则路径搜索算法可以包含3部分,
算法1(步骤102):
算法1主要是为正则路径查询提供一个入口函数,把正则表达式转换为不包含第一正则符号的表达式,然后交给迭代函数去执行。
算法2(步骤103至步骤106):
Input:DB,R,s,t
Output:FinalPath
解析R获得T[i]和L[j]
对任意谓词表达式序列T[i],计算gStore_query(DB,T[i],?x,?y)
初始化中间节点集RS为T[1]
for i from 1to K(K等于T[i]的数目)
enum each pair(s’,t’)of RS and T[i+1]’s answer
compute_path(DB,L[j],s’,t’)//假设L[j]位于T[i]和T[i+1]之间
将L[j]的查询结果添加到中间节点集RS中
调用算法3处理P*得到结果,加入RS中
Return RS
算法3(主要针对步骤105中P*的查询处理):
Input:DB,P*,s,t
Output:FinalPath
RS1={s}if s==t
RS2=compute_path(DB,PP*,s,t)
Return RS1union RS2
本发明实施例中,确定查询条件所对应的正则路径查询,其中,正则路径查询中包括起始节点、结束节点和正则表达式,基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],i为正整数,在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集,在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数,根据转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。这样,对于一个复杂的正则表达式,可以分成谓词表达式序列分别进行查询,不需要分别对每个谓词表达式进行查询,从而可以减少查询冗余,进而可以提高查询效率。
基于相同的技术构思,本发明实施例还提供了一种路径查询的装置,如图4所示,该装置包括:
第一确定模块410,用于确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
转换模块420,用于基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式;
第二确定模块430,用于在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
第一查询模块440,用于在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
第二查询模块450,用于在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
拼接模块460,用于根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
可选的,所述第一正则符号为+,第二正则符号为*。
可选的,所述第二查询模块450,用于:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
可选的,所述第二确定模块430,还用于:
确定包含第三正则符号的T[i];
所述转换模块420,还用于:
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
可选的,所述第三正则符号为?。
本发明实施例中,确定查询条件所对应的正则路径查询,其中,正则路径查询中包括起始节点、结束节点和正则表达式,基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],i为正整数,在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集,在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数,根据转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。这样,对于一个复杂的正则表达式,可以分成谓词表达式序列分别进行查询,不需要分别对每个谓词表达式进行查询,从而可以减少查询冗余,进而可以提高查询效率。
需要说明的是:上述实施例提供的路径查询的装置在路径查询时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的路径查询的装置与路径查询的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图5,其示出了本发明实施例所涉及的服务器的结构示意图,该服务器可以用于实施上述实施例中提供的路径查询的方法。具体来讲:
该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对任务执行服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。
服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,一个或一个以上键盘556,和/或,一个或一个以上操作***541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器500可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式;
在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
可选的,所述第一正则符号为+,第二正则符号为*。
可选的,所述在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,包括:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
可选的,所述在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集之前,还包括:
确定包含第三正则符号的T[i];
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
可选的,所述第三正则符号为?。
本发明实施例中,确定查询条件所对应的正则路径查询,其中,正则路径查询中包括起始节点、结束节点和正则表达式,基于预设的正则路径转换表,将正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,在进行转换后的正则表达式中,确定不包含第二正则符号的谓词表达式序列T[i],i为正整数,在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集,在预设的RDF数据集中,根据每个T[i]对应的中间节点集,对转换后的正则表达式中被T[i]分割的包含第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数,根据转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将包含T[i]的至少一条路径与包含L[j]的至少一条路径进行拼接,得到满足查询条件的至少一条路径。这样,对于一个复杂的正则表达式,可以分成谓词表达式序列分别进行查询,不需要分别对每个谓词表达式进行查询,从而可以减少查询冗余,进而可以提高查询效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种路径查询的方法,其特征在于,所述方法包括:
确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,所述第一正则符号为+,所述第二正则符号为*;
在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
2.根据权利要求1所述的方法,其特征在于,所述在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,包括:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
3.根据权利要求1所述的方法,其特征在于,所述在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集之前,还包括:
确定包含第三正则符号的T[i],所述第三正则符号为?;
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
4.一种路径查询的装置,其特征在于,所述装置包括:
第一确定模块,用于确定查询条件所对应的正则路径查询,其中,所述正则路径查询中包括起始节点、结束节点和正则表达式;
转换模块,用于基于预设的正则路径转换表,将所述正则表达式中包含第一正则符号的谓词表达式转换为包含第二正则符号的谓词表达式,所述第一正则符号为+,所述第二正则符号为*;
第二确定模块,用于在进行转换后的正则表达式中,确定不包含所述第二正则符号的谓词表达式序列T[i],i为正整数;
第一查询模块,用于在预设的RDF数据集中,对每个T[i]进行查询,得到包含T[i]的至少一条路径和T[i]对应的中间节点集;
第二查询模块,用于在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行查询,得到包含L[j]的至少一条路径,j为正整数;
拼接模块,用于根据所述转换后的正则表达式中包含的T[i]和L[j]的排列顺序,将所述包含T[i]的至少一条路径与所述包含L[j]的至少一条路径进行拼接,得到满足所述查询条件的至少一条路径。
5.根据权利要求4所述的装置,其特征在于,所述第二查询模块,用于:
在所述预设的RDF数据集中,根据每个T[i]对应的中间节点集,对所述转换后的正则表达式中被T[i]分割的包含所述第二正则符号的谓词表达式序列L[j]进行深度优先搜索,得到包含L[j]的至少一条路径。
6.根据权利要求4所述的装置,其特征在于,所述第二确定模块,还用于:
确定包含第三正则符号的T[i],所述第三正则符号为?;
所述转换模块,还用于:
基于所述正则路径转换表,将包含所述第三正则符号的T[i]转换为不包含所述第三正则符号的T[i]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657819.9A CN107463671B (zh) | 2017-08-03 | 2017-08-03 | 路径查询的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657819.9A CN107463671B (zh) | 2017-08-03 | 2017-08-03 | 路径查询的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107463671A CN107463671A (zh) | 2017-12-12 |
CN107463671B true CN107463671B (zh) | 2019-12-13 |
Family
ID=60547024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710657819.9A Active CN107463671B (zh) | 2017-08-03 | 2017-08-03 | 路径查询的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107463671B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153883B (zh) * | 2017-12-26 | 2022-02-18 | 北京百度网讯科技有限公司 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
CN109029476B (zh) * | 2018-06-04 | 2020-06-23 | 京东数字科技控股有限公司 | 一种用于确定可达区域的方法和装置 |
CN113326284B (zh) * | 2021-08-03 | 2021-10-01 | 国网电商科技有限公司 | 基于正则路径查询的搜索*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129457A (zh) * | 2011-03-09 | 2011-07-20 | 浙江大学 | 大规模语义数据路径查询的方法 |
CN102521364A (zh) * | 2011-12-15 | 2012-06-27 | 北京大学 | 一种图上两点间最短路径查询方法 |
CN102929996A (zh) * | 2012-10-24 | 2013-02-13 | 华南理工大学 | XPath查询优化方法及*** |
CN103279543A (zh) * | 2013-05-13 | 2013-09-04 | 清华大学 | 海量图数据上的路径模式查询*** |
US9183279B2 (en) * | 2011-09-22 | 2015-11-10 | International Business Machines Corporation | Semantic questioning mechanism to enable analysis of information architectures |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447786B2 (en) * | 2008-10-01 | 2013-05-21 | International Business Machines Corporation | Language extensions for creating, accessing, querying and updating RDF data |
-
2017
- 2017-08-03 CN CN201710657819.9A patent/CN107463671B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129457A (zh) * | 2011-03-09 | 2011-07-20 | 浙江大学 | 大规模语义数据路径查询的方法 |
US9183279B2 (en) * | 2011-09-22 | 2015-11-10 | International Business Machines Corporation | Semantic questioning mechanism to enable analysis of information architectures |
CN102521364A (zh) * | 2011-12-15 | 2012-06-27 | 北京大学 | 一种图上两点间最短路径查询方法 |
CN102929996A (zh) * | 2012-10-24 | 2013-02-13 | 华南理工大学 | XPath查询优化方法及*** |
CN103279543A (zh) * | 2013-05-13 | 2013-09-04 | 清华大学 | 海量图数据上的路径模式查询*** |
Non-Patent Citations (2)
Title |
---|
分布式RDF数据管理综述;邹磊 等;《计算机研究与发展》;20170411;第54卷(第6期);1213-1224 * |
大规模RDF图数据的正则路径查询研究;姜龙翔 等;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150515;I138-1280 * |
Also Published As
Publication number | Publication date |
---|---|
CN107463671A (zh) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9405855B2 (en) | Processing diff-queries on property graphs | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
US20140172914A1 (en) | Graph query processing using plurality of engines | |
WO2017181866A1 (en) | Making graph pattern queries bounded in big graphs | |
CN107463671B (zh) | 路径查询的方法和装置 | |
Zhang et al. | Towards efficient join processing over large RDF graph using mapreduce | |
CN112395303A (zh) | 查询的执行方法、装置、电子设备及计算机可读介质 | |
US20230082563A1 (en) | Data processing method and data processing apparatus | |
US20190213188A1 (en) | Distributed computing framework and distributed computing method | |
CN113946600A (zh) | 数据查询方法、装置、计算机设备和介质 | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
WO2018045610A1 (zh) | 用于执行分布式计算任务的方法和装置 | |
CN111221852A (zh) | 基于大数据的混合查询处理方法及装置 | |
CN113609100B (zh) | 数据存储方法、数据查询方法、装置及电子设备 | |
CN115221191A (zh) | 一种基于数据湖的虚拟列构建方法以及数据查询方法 | |
CN110941655B (zh) | 一种数据格式转换方法及装置 | |
CN108959571B (zh) | Sql语句的运算方法、装置、终端设备及存储介质 | |
CN113220710A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN116431672A (zh) | 数据库操作语句的谓词逻辑优化方法、存储介质与设备 | |
CN115827676A (zh) | Sql子查询的执行方法、装置、终端设备以及介质 | |
CN114281842A (zh) | 一种数据库分表查询的方法及设备 | |
CN112988778B (zh) | 一种处理数据库查询脚本的方法和装置 | |
CN113515285A (zh) | 生成实时计算逻辑数据的方法和装置 | |
CN112052341A (zh) | 知识图谱剪枝方法及装置 | |
CN115994151B (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 |