概述
UQL提供多种类型的点、边模板用于组装路径和子图。通过在模板中使用过滤器来描述对点、边进行描述,可以精准地匹配实际应用的各类场景。
模板
点、边基础模板包含以下四种:
模板 |
名称 |
描述 | 自定义别名 |
---|---|---|---|
n() |
单点 | ![]() |
支持,类型为NODE |
e() ,le() ,re() |
单边 (方向:忽略,左向,右向) |
![]() |
支持,类型为EDGE |
e()[<steps>] ,le()[<steps>] ,re()[<steps>] |
多边 (方向:忽略,左向,右向) |
![]() 长度 [<steps>] 填写格式(N≥1):[N] :N条边[:N] :1~N条边[M:N] :M~N条边[1](M≥0)[*:N] :N条边内的最短路径 |
不支持 |
e().nf()[<steps>] ,le().nf()[<steps>] ,re().nf()[<steps>] |
多边多点 (方向:忽略,左向,右向) |
![]() 长度 [<steps>] 填写格式同上 |
不支持 |
[1]多边模板长度设置为[0:N]
时,当且仅当多边模板左侧n()
满足右侧n()
的过滤条件,才会触发0
步的情况。此时相当于舍弃该多边模板和其右侧的n()
。
路径组装原则
原则一:路径应以点开始、以点结尾,其间点边交替出现。
示例:以下3步路径中各点、边的过滤条件都不相同,该路径可表示为n().e().n().e().n().e().n()
,每个点、边模板中可设置独立的过滤条件和别名。

n({@mgr}).re({@manage}).n({@cst} as n1)
.re({@has}).n({@acct} as n2)
.re({@buy} as e1).n({@product}) as p
return n1, n2, e1, p
特别地,UQL支持单独使用单点模板。
本例查找所有@account点:
n({@account} as acc)
return acc
原则二:使用多边(多点)模板对路径中具有相同过滤条件的连续边和中介点进行合并。
示例:以下5步路径中,中间3步的边和中介点的过滤条件相同,此部分可使用多边模板e().nf()[3]
表示。注意,多边(多点)模板不支持定义别名。

n({@cst}).re({@has}).n({@acct} as n1)
.re({@transfer}).nf({@acct})[3].n({@acct} as n2)
.le({@has}).n({@cst}) as p
return n1, n2, p
原则三:使用步数范围灵活把控路径长度。
示例:使用多边多点模板e().nf()[:3]
限定转账步数为1~3步。

n({@cst} as n1).re({@has}).n({@acct} as c1)
.re({@transfer})[:3].n({@acct} c1)
.le({@has}).n({@cst}) as p
return c1, c2, p