Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-types/graph-element-reference-type/ Documentation version: v5.3.2 # 图元素引用类型 图元素引用类型表示对图中点或边的引用,包括: - `NODE`:点引用值类型。 - `EDGE`:边引用值类型。 引用值表示图元素的身份,而不是图元素属性的副本。通过引用值可以访问被引用点或边的属性。`NODE`和`EDGE`不能作为点或边的属性类型。 ## 获取图元素引用值 图元素模式中的变量保存与模式匹配的图元素引用值。例如: ```` ''' USE movie MATCH (a@Actor)-[e@Act]->(m@Movie) RETURN a, e, a.name LIMIT 1 ''' ```` 在上述查询中: - `a`和`m`保存点引用值。 - `e`保存边引用值。 - `a.name`通过点引用访问被引用点的`name`属性。 ## 查看图元素引用值的类型 `typeof()`函数可以返回引用值的完整类型: ```` ''' USE movie MATCH (a@Actor)-[e]->(m@Movie) RETURN typeof(a) AS node_type, typeof(e) AS edge_type LIMIT 1 ''' ```` 返回: ```` +---------------+------------------------------+ | node_type | edge_type | +---------------+------------------------------+ | Node<(Actor)> | Edge<(Actor)-[Act]->(Movie)> | +---------------+------------------------------+ ```` `NODE`和`EDGE`是通用引用值类型。`Node<(Actor)>`包含被引用点的类型。`Edge<(Actor)-[Act]->(Movie)>`包含被引用边的类型及其起点和终点的类型。 ## 与图元素类型的区别 引用值类型与图类型中定义的点类型和边类型是不同概念。 | 术语 | 示例 | 含义 | 点引用值类型 | `NODE`、`Node<(Actor)>` | 查询变量或参数的值类型 | 点类型 | `NODE TYPE Actor` | 图类型中定义的一类点 | 边引用值类型 | `EDGE`、`Edge<(Actor)-[Act]->(Movie)>` | 查询变量或参数的值类型 | 边类型 | `EDGE TYPE Act` | 图类型中定义的一类边 ## 用作过程参数类型 定义用户自定义过程(UDP)时,可以使用`NODE`或`EDGE`声明输入参数类型: ```` parameter_name NODE parameter_name EDGE ```` `NODE`参数接受点引用值,`EDGE`参数接受边引用值。详细语法,请参见 [CREATE PROCEDURE](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/create/#parameter_type)。 ## 限制 - `NODE`和`EDGE`不能作为点或边的属性类型。 - 比较引用值时,引用相等表示两个引用指向同一个图元素,不表示两个不同图元素的属性值恰好相同。