在图上进行的最常见的也是最常用的搜索是路径搜索,“路径”体现的正是数据间的关联关系(递归性)。为了让查询语言能够“继承”这种天然的递归特性,嬴图GQL的路径查询设计成为“所见即所得”的点、边模板交替使用的链式结构。下图是一张银行各项业务实体及LCR指标项之间的逻辑关系图,代表的都是真实的点边元数据,这些元数据的不同类型就是这张图的schema框架(右侧是schema列表):
![](https://img.ultipa.cn/2022-03-21-14-18-24-schema-diagram.png)
元数据Schema框架与嬴图GQL路径的链式特征
嬴图GQL查询语句同图上显示的结构一样直观,比如查看某一家分行对存款业务所做贡献的路径(上图中绿色箭头所经过的地方),由于该路径依次经过了分行节点、业务节点、指标节点、存款大类节点等,因此嬴图GQL语句也使用相应的点、边参数来组装成路径的样子:
n({@branch}).le({@generate}).n({@business}).re({@contribute}).n({@indicator})….n({@deposit})
其中,“n({ })”代表路径中的节点,“le({ })”代表路径中的左向边,“re({ })”代表路径中的右向边。
嬴图GQL中用来描述路径的参数不止n({ })、le({ })、re({ })这三种,使用不同的命令进行查询时还会用到路径起点src()、路径终点dest()、路径深度depth()、最短路径shortest()等一众参数。由于模板查询的使用最为灵活,在后面的介绍中我们会着重使用模板查询的点边参数进行举例。