联合正则路径查询
- 通过结合CQ和RPQ得到CRPQ,形式如(2)
比较并返回路径
- 在某些场景下(例如找出web上联通的数据),需要指定路径间的关系同时得到实际的路径作为查询结果
- ECRPQ提供以上两种特性,ECRPQ在两个层面上扩展了CRPQ
- 允许查询的头部存在自由路径变量
- 允许校验查询体中路径间的关系而不是简单的令路径和正则语言相匹配
- 我们首先基于Σ定义正则关系的规范。设
⊥ 为一个独立于Σ的符号,利用⊥ 扩展Σ得到Σ⊥ - 设x¯=(s1,s2,...sn)为一个基于Σ的字符串的
n 元组。构造一个基于(Σ⊥)n字符串[s¯],其长度是sj的最大值,且第i个符号是一个元组(c1,...,cn) (当sk的长度至少是i时,每个ck 等于sk的第i个符号,否则等于⊥ )。也就是说我们用⊥填补短字符串,从而把n个字符串视作一个字符串。对于任何Σ∗ 中的n元关系S ,当基于(Σ⊥)n的字符串集合[s¯]|s¯∈S能被基于(Σ⊥)n的正则自动机接受或者能用基于(Σ⊥)n正则表达式表示,则被认为是正则的。我们也应当利用相同的字母来表示基于(Σ⊥)n的正则表达式和基于Σ∗的关系 - 除了CRPQ中的节点变量,我们还确定了一个可数路径变量集合(用π,ω,χ来表示)。一条基于Σ的扩展联合正则路径请求
ECRPQ 的表达式为:ans(z¯,χ¯)←⋀1≤i≤m(xi,πi,yi),⋀1≤j≤tRj(ω¯j)
- m>0,t≥0
- 每个Rj是一个定义了正则关系的正则表达式
- x¯=(x1,...,xm)和y¯=(y1,...,ym)都是节点变量元组
- π¯=(π1,...,πm)是路径变量元组
- {w¯1,...,w¯t}是不同的路径变量元组,例如w¯j是一个π¯中变量的元组,变量数目等于Rj
- z¯是一个x¯,y¯中节点变量的元组
- χ¯是一个π¯中路径变量的元组
- ECRPQ的语义是CRPQ的延伸。对于一个ECRPQ的查询,从节点变量到节点的映射关系为σ,从路径变量到路径的映射关系为
μ ,当满足以下两个条件时,则可认为(G,σ,μ)|=Q:
- μ(πi)是G中的一条从
σ(xi) 到σ(yi)的路径,1≤i≤m - 对于每个w¯j=(πj1,...,πjk),由μ(πj1),...μ(πjk)中标签组成的字符串元组属于关系Rj
- μ(πi)是G中的一条从
- 查询结果可定义为:Q(G)={(σ(z¯),μ(χ¯))|(G,σ,μ)|=Q}
- 举例说明:
- 在RDF的查询语句中,路径可以被基于特定的语义关联比较。边相当于RDF属性路径相当于属性序列。定义属性a是
b 的子属性a≺b。两个属性序列u和v 被称作ρ−isomorphic(路径同构)当且仅当u=u1,...,un和v=v1,...,vn且ui≺vi或vi≺ui,1≤i≤n。节点x和y 被称作ρ−isoAssociated(路径关联)当且仅当x和y 是两条同构路径属性序列的起点。 - 找出路径关联的节点无法使用CRPQ表示,因为这需要保证两条路径长度相同。然而,路径同构的属性对能用基于表达式(⋃a,b∈σ:(a≺b⋁b≺a)(a,b))∗的正则关系R来表示。一个
ECRPQ 返回路径关联的点对x和y 可以被写成以下形式:ans(x,y)←(x,π1,z1),(y,π2,z2),R(π1,π2)ECRPQ中的路径变量也可以被用来返回找出的实际路径。例如我们需要找出RDF资源r和s 间的每条路径,且路径包含资源e,可以用以下形式表示:π1和π2为实际路径ans(π1,π2)←(r,π1,e),(e,π2,s) - 包含回溯引用的正则表达式(REBR),正如egrep和Perl中所提供的。举个例子,(r)%X,r是正则表达式,
X 是变量(绑定字符串w∈L(r) 到 X)。然后用表达式中的X 去匹配w。ECRPQ 不能表示所有的REBR,但另一方面,ECRPQ能匹配模式,例如anbncnans(x,y)←(x,π1,z1),(z1,π2,z2),(z2,π3,y),a∗(π1),b∗(π2),c∗(π3),el(π1,π2),el(π2,π3)
el(π,π′)是的简写(⋃a,b∈σ(a,b))∗(π,π′)
- 在RDF的查询语句中,路径可以被基于特定的语义关联比较。边相当于RDF属性路径相当于属性序列。定义属性a是