可视化查询图
在图引擎编辑器中,您可以使用拖拽的方式创建图查询语句,并且可以直接预览查询结果,无需手动编写任何代码。
操作步骤
- 在图引擎编辑器左侧的区域内选择“可视化查询”模块。
图1 可视化查询
- 在画布中添加点:
- 在“添加点模式”页签下会展示全图数据中所有的点边label,每个label展示为一个可以拖拽的卡片。您可以单击任意一个点label,直接拖动至左侧画布中。
画布下方的“Cypher”查询语句会随着您的操作变化。
此处的点边label和您在Schema编辑章节“元数据”列表中的点边label是相同的。
- 将想要查询的label拖动到画布后,单击“查询”按钮,图查询结果会展示在画布的右侧。
画布中只存在一个子图模式时才能输出查询结果。若存在多个不连通的子图或孤立点时,必须先添加边连通各子图或孤立点,还可以通过设置多标签的方式重新构建您的查询模式,否则单击“查询”按钮,会提示存在多个子图模式。图3 存在多个子图模式
- 在“添加点模式”页签下会展示全图数据中所有的点边label,每个label展示为一个可以拖拽的卡片。您可以单击任意一个点label,直接拖动至左侧画布中。
- 添加点过滤条件
单击画布中的点,左侧区域会自动跳转到“过滤”页签,在点过滤页签中您可以输入相关项的值(例如标签、点ID、属性过滤条件),使画布中的点label符合相应约束。图4 添加点过滤条件
- 点V1:Cypher变量ID(画布下方Cypher查询语句中的点标识),以拖动到画布中的点先后顺序命名(例如:V1,V2……)。
- 标签:对一个点label设置一个或多个标签值(设置的多个标签之间是或的关系)。
- 点ID:相当于一个过滤条件,对一个点label添加点ID后,单击“查询”按钮,可将设置相同点ID的点label查询出来。
- 过滤条件:对点label的属性值进行设置。当前不支持多值类型属性过滤(多值:一个属性有多个属性值)。
- 属性:标签所包含的属性。
- 操作符:支持比较运算符(>,>=,<,<=,=,<>),空值判断运算符(is null(空值), is not null(非空值))和字符串比较运算符(starts with,ends with,contains)。
starts with表示是否以某字符串开头,ends with表示是否包含某字符串,contains表示是否包含某字符串。
- 值:输入的属性值。属性值类型应与元数据中的属性类型一致,如果是字符型必须要用''(单引号)标记才可以。
- 删除:单击可删除本行过滤条件。
- “+”按钮:新增一个过滤条件。
- “删除”按钮:删除已添加的点过滤条件。
上述点过滤条件设置完成后,您可以重新单击画布中“查询”按钮,在画布右侧将展示新的查询结果。
- 在画布中添加边(连接画布中的两点):
双击某一个点,点的边框变为灰色(注意鼠标不要移出灰色边框外),可以从该点拖出一条边连接到另一点。
画布下方的“Cypher”查询语句会随着您的操作变化。
图5 灰色边框
图6 添加边
- 添加边过滤条件
单击画布中添加的边,左侧区域会自动跳转到“边过滤”页签,在边过滤页签中您可以选择相关项的值(例如标签、方向、跳数、属性过滤条件),使画布中的边label符合相应约束。
图7 添加边过滤条件
- 边e2:Cypher变量 ID,以画布中的添加边的先后顺序命名(例如:e1,e2……)。
- 标签:对一个边label设置一个或多个边标签值(设置的多个边标签之间是或的关系)。
- 方向:对该边label的指向进行选择。
为有向边时,画布中的箭头指示了当前该边的方向,单击“改变方向”按钮可以改变当前选中边在画布中的方向。
- 跳数:边的跳数默认为1,取值范围为 [0,20),有两种输入格式:单值输入与区间输入。
- 单值输入时接收一个整数,代表当前边模式的跳数。
- 区间输入接收两个整数,格式为minHops..maxHops,如2..3,表示当前边模式的跳数在[2,3]区间之内。
- 过滤条件:对边label的属性值进行设置。当前不支持多值类型属性过滤(多值:一个属性有多个属性值)。
- 属性:标签所包含的属性。
- 操作符:支持比较运算符(>,>=,<,<=,=,<>),空值判断运算符(is null(空值), is not null(非空值))和字符串比较运算符(starts with,ends with,contains)。
starts with表示是否以某字符串开头,ends with表示是否包含某字符串,contains表示是否包含某字符串。
- 值:输入的属性值。属性值类型应与元数据中的属性类型一致,如果是字符型必须要用''(单引号)标记才可以。
- 删除:单击可删除已添加的边过滤条件。
- “+”按钮:可以新增一个属性过滤条件。
当过滤条件多于一条时,单击AND旁,可以选择过滤条件间的逻辑关系为并(AND)还是或(OR)。
图8 选择逻辑关系
AND的逻辑运算优先级高于OR,需要合理规划各过滤条件的顺序。运算顺序如下:
- 先运算所有的AND运算,存在一个假即为假
- 再运算所有的OR,存在一个真即为真。
例如下图所示:边过滤条件为 userid < 100 AND gender = 'male' OR userid > 50 AND age = '18-24'。
根据以上运算顺序(先运算AND再运算OR),即:
先计算(userid < 100 AND gender = 'male') 和 (userid > 50 AND age = '18-24'),结果分别记为result1,result2;
再计算 result1 OR result2。
- “删除”按钮:可以删除已添加的过滤条件。
上述边过滤条件设置完成后,您可以重新单击画布中“查询”按钮,在画布右侧将展示新的查询结果。