概述
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



