5.4 Vertex and Edge Identifiers
You can uniquely identify each vertex and edge in a SQL property graph with
the VERTEX_ID and EDGE_ID functions, respectively, in a
SQL graph query.
Graph element identifiers are based on the key value defined for the graph element tables. Therefore, it is important to note the following:
- Graphs in
TRUSTEDmode may produce duplicate identifiers for different vertices if some key columns do not have aUNIQUEconstraint. - Graphs in
ENFORCEDmode are guaranteed to always produce unique identifiers.
The VERTEX_ID and EDGE_ID functions can be
used in any expression appearing in the COLUMNS or
WHERE clause in a SQL graph query.
Note:
In order to use theVERTEX_ID and EDGE_ID functions, you must have
READ or SELECT privilege on the property graph. In
addition, for each vertex or edge table from which the vertex or edge IDs are requested,
ensure at least one of the following:
- Each of its key columns is directly exposed as a property.
- You have
READorSELECTprivilege on its underlying database table.
The input to the VERTEX_ID function is a single vertex
graph pattern variable coming from a matched vertex pattern as shown:
MATCH (v) COLUMNS(VERTEX_ID(v) AS v_id)
Similarly, the EDGE_ID function takes as input a single
edge graph pattern variable coming from a matched edge pattern as shown:
MATCH (v1)-[e]->(v2) COLUMNS(EDGE_ID(e) AS e_id)
The output of these functions is a vertex or an edge identifier of JSON data type. The following shows an example of a JSON output describing the vertex identifier:
{
"GRAPH_OWNER": "GRAPHUSER",
"GRAPH_NAME": "STUDENTS_GRAPH",
"ELEM_TABLE": "PERSONS",
"KEY_VALUE": {
"PERSON_ID": 1
}
}In the preceding JSON output:
GRAPH_OWNER: Owner of the property graph objectGRAPH_NAME: Name of the property graph objectELEM_TABLE: Name of the vertex tableKEY_VALUE: Name and value of the key column
The same list of JSON output fields apply to an edge identifier also.
However, the ELEM_TABLE field represents the name of an edge table.
Also, all operations that can be performed on a JSON data type can be performed on the
vertex and edge identifiers.
If the referenced element variable is not bound to a graph element, then the
VERTEX_ID and EDGE_ID functions return the null
value.
See Example 5-29 for more information.
VERTEX_EQUAL and
EDGE_EQUAL Predicates
The VERTEX_EQUAL and EDGE_EQUAL
predicates can be used to, respectively, compare two vertex and edge identifiers and
return TRUE if they are equal.
The inputs to the VERTEX_EQUAL predicate are two vertex
graph pattern variables. Similarly for EDGE_EQUAL, both inputs must
be edge graph pattern variables. These predicates can be used in the
WHERE clause in a SQL graph query.
If at least one of the referenced element variables is not bound to a graph element, then the predicates evaluate to the null value. Otherwise, they evaluate to TRUE or FALSE.
See Example 5-30 for more information.
Parent topic: SQL Graph Queries