跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

标签表达式

标签表达式可以引用图元素的标签。

标签表达式通常用在标签谓词中或者图模式中,根据标签过滤图元素。更多信息,请参见标签谓词和图模式。

语法

label_expression
label_factor & |
label_factor
label_name % ( label_expression ) ! label_name ! % ! ( label_expression )

label_expression ::=
    (label_factor ( '&' label_factor )* ) ( '|' (label_factor ( '&' label_factor )*) )*

label_factor ::=
    label_name
    | '%'
    | '(' label_expression ')'
    | '!' label_name
    | '!' '%'
    | '!' '(' label_expression ')'           

参数

label_name

标签名称。

%

匹配任意标签的通配符。

!

逻辑非运算符,表示排除一个标签。

&

逻辑与运算符,表示两个标签因子(label_factor)的交集。

|

逻辑或运算符,表示两个标签因子(label_factor)的并集。

示例

以下示例基于示例数据集。

引用一个标签

'''
USE movie 
MATCH (v)-[e]->() 
WHERE v IS LABELED Person 
RETURN DISTINCT v.name AS name 
LIMIT 5
'''

上述语句选择了标签为Person的点,并返回点的名称。

返回:

+---------------+
| name          |
+---------------+
| null          |
| Jürgen Tonkel |
| Frank Harper  |
| James Doohan  |
| Fana Mokoena  |
+---------------+

引用任意标签

'''
USE movie 
MATCH (v:%)-[e]->() 
RETURN DISTINCT v.name AS name 
LIMIT 5
'''

上述语句选择了带有任意标签的点,并返回点的名称。

返回:

+------------------------+
| name                   |
+------------------------+
| Marco Kreuzpaintner    |
| Curt Siodmak           |
| David Lynch            |
| Billy Wilder           |
| Star Trek: Generations |
+------------------------+

排除一个标签

'''
USE movie 
MATCH (v)-[e:!Act]->() 
RETURN DISTINCT e 
LIMIT 2
'''

上述语句选择了不带有标签Act的边,并返回边的信息。

返回:

+----------------------------------------------------------------------+
| e                                                                    |
+----------------------------------------------------------------------+
| (289047300406247427)-[0@Watch:Watch{rate:4.0}]->(289108623949299713) |
| (289047300406247427)-[0@Watch:Watch{rate:1.0}]->(289138379482726401) |
+----------------------------------------------------------------------+

使用运算符&引用标签

'''
USE movie 
MATCH (v WHERE v IS LABELED Person&Movie)-[e]->() 
RETURN DISTINCT v.name AS name 
LIMIT 5
'''

上述语句选择了同时带有标签Person和Movie的点,并返回点的名称。

返回:

+------+
| name |
+------+
+------+

使用运算符|引用标签

'''
USE movie 
MATCH (v)-[e]->() 
WHERE v IS LABELED Person|Movie 
RETURN DISTINCT v.name AS name 
LIMIT 5
'''

上述语句选择了带有标签Person或Movie的点,并返回点的名称。

返回:

+-------------------------------------+
| name                                |
+-------------------------------------+
| Green Mile                          |
| Willy Wonka & the Chocolate Factory |
| Zatoichi                            |
| The Blue Angel                      |
| Sissi – The Young Empress           |
+-------------------------------------+