图探索功能
提供图相关工具来探索图。
路径拓展
利用Filtered-query-API原理,对k跳过程进行逐层过滤,列出满足过滤条件的第k跳节点或边。
在图引擎编辑器左侧探索区的“路径拓展模块”内,填写以下参数:
- 路径起点:查询起始节点ID列表。有以下几种方法可以查询:
- 框选点的方式:画布上已经有点的情况下, (Shift+ 鼠标左键拖动)框选想要查询的点,单击鼠标右键选择“设为路径起点”(路径拓展功能才能展示该选项),被框选点的点ID会自动填写到路径起点框内。此时可以单击该框,在弹出的窗口中会显示当前被框选的所有点ID,您可以在窗口中添加点ID或者删除不想查询的点ID,选择完成后单击按钮,画布上会呈现查询结果。
图1 框选点的方式
- 随机选的方式:单击路径起点框旁的“随机选”按钮,系统会帮您自动选择图中的点,填入点ID。您可以单击该框,删除点ID或者在显示的下拉菜单栏中选择想增加点ID,选择完成后单击按钮,画布上会呈现查询结果。
- 单个点的输入方式:您可以在框内输入想要查询的点ID,输入完成后按enter(回车)键。
- 批量输入点的方式:您可以在框内连续输入多个点ID,点ID之间用英文逗号隔开,输入完成后按enter(回车)键。当输入的点ID超过5个时,鼠标单击框内会弹出一个窗口显示当前输入的所有点ID ,您可以继续在窗口内输入点ID。
请勿重复输入同一个点ID或者输入空值。当输入的点ID名称本身包含英文逗号时,请用 , 代替英文逗号,防止识别出现错误。
- 框选点的方式:画布上已经有点的情况下, (Shift+ 鼠标左键拖动)框选想要查询的点,单击鼠标右键选择“设为路径起点”(路径拓展功能才能展示该选项),被框选点的点ID会自动填写到路径起点框内。此时可以单击该框,在弹出的窗口中会显示当前被框选的所有点ID,您可以在窗口中添加点ID或者删除不想查询的点ID,选择完成后单击按钮,画布上会呈现查询结果。
- 过滤条件列表 :执行重复的过滤条件列表,数组的每个元素分别对应每一层要做的查询和过滤条件。
图2 过滤条件列表
您需要设置以下参数:- 跳数:想要过滤的条件数。
- 过滤条件:和跳数的数量相对应,即有几个跳数就有几个过滤条件。单击过滤条件框会弹出设置过滤条件的窗口,在窗口内输入过滤条件语法。
语法说明:has操作符用于判断属性名key是否存在或者属性名key的值是否为value,hasLabel操作符用于判断label值是否为values中的一个,and操作符需同时满足A与B条件(可嵌套),or操作符满足A与B条件其一即可(可嵌套)。
图3 设置过滤条件
- 您可以在空白的过滤条件输入框内双击鼠标左键,可查看样例语法。样例语法说明如下:
has(PropertyName, PropertyValue):属性名是否为PropertyValue。
hasLabel(LabelName1,LabelName2):label值是否为LabelName1或LabelName2。
or(has('name', 'peter'), has('age', '30')):表示满足名字为Peter或年龄为30其中一个条件即可。
and(has('person'),or(has('name','peter'),has('age','30'))):表示同时满足has('person')和or(has('name','peter'),has('age','30')),属性name为peter且age为30。
- 只有一条过滤条件数据时,删除、上调和下调按钮置灰,第一条数据不允许上调,最后一条数据不允许下调,设置过滤条件的上限是20(最大跳数)。
- 您可以在空白的过滤条件输入框内双击鼠标左键,可查看样例语法。样例语法说明如下:
- 显示路径过程:是否输出不在最终完整路径上的点,默认为false。
- 高级设置:其中包括拓展策略。
拓展策略:traversal策略。包括如下两个选项:
- ShortestPath:在traversal的过程中取到起始点到各点是最短路径,该模式能够有效降低多跳查询中指数增长的查询量。
- Walk:在traversal的过程中不会过滤掉重复的点。
例如上图,查询从a出发的第三跳邻居:
传统的walk路径为:a->c->a->b,a->c->d->f,a->c->d->c,a->c->a->c。
可以观察到,其中a,c重复出现在路径中(如a->c->a->b,a->c->d->c)。如果我们希望减少重复路径从而加快查询过程,降低多跳查询中的查询量,可以使用ShortestPath模式。
使用ShortestPath模式,查询的路径过程仅为:a->c->d->f 。