Graph Query Language (GQL) is a language designed to query graph data. This page describes the high level structure of GQL.
Statement and clause
In GQL, a statement refers to a complete unit of execution, and a clause represents a modifier to statements. See the statement list for a complete list.
Working table
A working table refers to the intermediate table representing the input or output of a GQL statement.
A GQL statement receives an incoming working table and produces an outgoing working table.
The first incoming working table is a table with a single row. The last outgoing working table is returned as the query results.
Linear query statement
A linear query statement consists of multiple statements from the statement
list
. It always ends with a RETURN
statement
.
Each statement generates intermediate results (the working table) and
then passes those results to the next statement. The output of a
linear query statement comes from the final RETURN
statement.
Examples
GRAPH
FinGraph
MATCH
(
p
:
Person
)
-[
o
:
Owns
]-
> (
a
:
Account
)
FILTER
p
.
birthday
<
'1990-01-10'
RETURN
p
.
name
/*------+
| name |
+------+
| Dana |
| Lee |
+------*/
Combining linear query statements with set operators
You can use a set operator to combine multiple linear query statements into one. For more information, see the syntax for the GQL set operation .
Examples
A set operator between two linear query statements with the same set of output column names and types but with different column orders is supported. For example:
GRAPH
FinGraph
MATCH
(
p
:
Person
)
RETURN
p
.
name
,
1
AS
group_id
UNION
ALL
MATCH
(
p
:
Person
)
RETURN
2
AS
group_id
,
p
.
name
/*------+----------+
| name | group_id |
+------+----------+
| Alex | 1 |
| Dana | 1 |
| Lee | 1 |
| Alex | 2 |
| Dana | 2 |
| Lee | 2 |
+------+----------*/
Chaining linear query statements with the NEXT
statement
You can use the NEXT
keyword to chain multiple linear query statements
into one.
The final linear query statement must produce non-GQL data types, but linear query statements that proceed it can produce GQL data types, such as nodes and edges.
Examples
The following is an example of a graph query chaining multiple linear query statements
using NEXT
.
GRAPH
FinGraph
MATCH
(
a
:
Account
{
is_blocked
:
TRUE
}
)
RETURN
a
UNION
ALL
MATCH
(
a
:
Account
)
< -[:
Owns
]-
(
p
:
Person
{
id
:
2
}
)
RETURN
a
NEXT
MATCH
(
a
:
Account
)
-[
t
:
Transfers
]-
> (
oa
:
Account
)
WITH
DISTINCT
oa
RETURN
oa
.
nick_name
/*----------------+
| nick_name |
+----------------+
| Vacation Fund |
| Vacation Fund |
| Rainy Day Fund |
+----------------*/