GQL operators

Graph Query Language (GQL) supports all GoogleSQL operators , including the following GQL-specific operators:

Graph operators list

Name Summary
Graph logical operators Tests for the truth of a condition in a graph label and produces either TRUE or FALSE .
Graph predicates Tests for the truth of a condition for a graph element and produces TRUE , FALSE , or NULL .
ALL_DIFFERENT predicate In a graph, checks to see if the elements in a list are all different.
IS DESTINATION predicate In a graph, checks to see if a node is or isn't the destination of an edge.
IS SOURCE predicate In a graph, checks to see if a node is or isn't the source of an edge.
SAME predicate In a graph, checks if all graph elements in a list bind to the same node or edge.

Graph logical operators

GoogleSQL supports the following logical operators in element pattern label expressions :

Name Syntax Description
NOT
!X Returns TRUE if X isn't included, otherwise, returns FALSE .
OR
X | Y Returns TRUE if either X or Y is included, otherwise, returns FALSE .
AND
X & Y Returns TRUE if both X and Y are included, otherwise, returns FALSE .

Graph predicates

GoogleSQL supports the following graph-specific predicates in graph expressions. A predicate can produce TRUE , FALSE , or NULL .

ALL_DIFFERENT predicate

  ALL_DIFFERENT 
 ( 
 element 
 , 
  
 element 
 [ 
 , 
  
 ... 
 ] 
 ) 
 

Description

In a graph, checks to see if the elements in a list are all different. Returns TRUE if none of the elements in the list equal one another, otherwise FALSE .

Definitions

  • element : The graph pattern variable for a node or edge element.

Details

Produces an error if element is NULL .

Return type

BOOL

Examples

  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 a1 
 : 
 Account 
 ) 
 -[ 
 t1 
 : 
 Transfers 
 ]- 
> ( 
 a2 
 : 
 Account 
 ) 
 -[ 
 t2 
 : 
 Transfers 
 ]- 
>  
 ( 
 a3 
 : 
 Account 
 ) 
 -[ 
 t3 
 : 
 Transfers 
 ]- 
> ( 
 a4 
 : 
 Account 
 ) 
 WHERE 
  
 a1 
 . 
 id 
 < 
 a4 
 . 
 id 
 RETURN 
  
 ALL_DIFFERENT 
 ( 
 t1 
 , 
  
 t2 
 , 
  
 t3 
 ) 
  
 AS 
  
 results 
 /*---------+ 
 | results | 
 +---------+ 
 | FALSE   | 
 | TRUE    | 
 | TRUE    | 
 +---------*/ 
 

IS DESTINATION predicate

  node 
  
 IS 
  
 [ 
  
 NOT 
  
 ] 
  
 DESTINATION 
  
 [ 
  
 OF 
  
 ] 
  
 edge 
 

Description

In a graph, checks to see if a node is or isn't the destination of an edge. Can produce TRUE , FALSE , or NULL .

Arguments:

  • node : The graph pattern variable for the node element.
  • edge : The graph pattern variable for the edge element.

Examples

  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 a 
 : 
 Account 
 ) 
 -[ 
 transfer 
 : 
 Transfers 
 ]- 
 ( 
 b 
 : 
 Account 
 ) 
 WHERE 
  
 a 
  
 IS 
  
 DESTINATION 
  
 of 
  
 transfer 
 RETURN 
  
 a 
 . 
 id 
  
 AS 
  
 a_id 
 , 
  
 b 
 . 
 id 
  
 AS 
  
 b_id 
 /*-------------+ 
 | a_id | b_id | 
 +-------------+ 
 | 16   | 7    | 
 | 16   | 7    | 
 | 20   | 16   | 
 | 7    | 20   | 
 | 16   | 20   | 
 +-------------*/ 
 
  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 a 
 : 
 Account 
 ) 
 -[ 
 transfer 
 : 
 Transfers 
 ]- 
 ( 
 b 
 : 
 Account 
 ) 
 WHERE 
  
 b 
  
 IS 
  
 DESTINATION 
  
 of 
  
 transfer 
 RETURN 
  
 a 
 . 
 id 
  
 AS 
  
 a_id 
 , 
  
 b 
 . 
 id 
  
 AS 
  
 b_id 
 /*-------------+ 
 | a_id | b_id | 
 +-------------+ 
 | 7    | 16   | 
 | 7    | 16   | 
 | 16   | 20   | 
 | 20   | 7    | 
 | 20   | 16   | 
 +-------------*/ 
 

IS SOURCE predicate

  node 
  
 IS 
  
 [ 
  
 NOT 
  
 ] 
  
 SOURCE 
  
 [ 
  
 OF 
  
 ] 
  
 edge 
 

Description

In a graph, checks to see if a node is or isn't the source of an edge. Can produce TRUE , FALSE , or NULL .

Arguments:

  • node : The graph pattern variable for the node element.
  • edge : The graph pattern variable for the edge element.

Examples

  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 a 
 : 
 Account 
 ) 
 -[ 
 transfer 
 : 
 Transfers 
 ]- 
 ( 
 b 
 : 
 Account 
 ) 
 WHERE 
  
 a 
  
 IS 
  
 SOURCE 
  
 of 
  
 transfer 
 RETURN 
  
 a 
 . 
 id 
  
 AS 
  
 a_id 
 , 
  
 b 
 . 
 id 
  
 AS 
  
 b_id 
 /*-------------+ 
 | a_id | b_id | 
 +-------------+ 
 | 20   | 7    | 
 | 7    | 16   | 
 | 7    | 16   | 
 | 20   | 16   | 
 | 16   | 20   | 
 +-------------*/ 
 
  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 a 
 : 
 Account 
 ) 
 -[ 
 transfer 
 : 
 Transfers 
 ]- 
 ( 
 b 
 : 
 Account 
 ) 
 WHERE 
  
 b 
  
 IS 
  
 SOURCE 
  
 of 
  
 transfer 
 RETURN 
  
 a 
 . 
 id 
  
 AS 
  
 a_id 
 , 
  
 b 
 . 
 id 
  
 AS 
  
 b_id 
 /*-------------+ 
 | a_id | b_id | 
 +-------------+ 
 | 7    | 20   | 
 | 16   | 7    | 
 | 16   | 7    | 
 | 16   | 20   | 
 | 20   | 16   | 
 +-------------*/ 
 

SAME predicate

  SAME 
  
 ( 
 element 
 , 
  
 element 
 [ 
 , 
  
 ... 
 ] 
 ) 
 

Description

In a graph, checks if all graph elements in a list bind to the same node or edge. Returns TRUE if the elements bind to the same node or edge, otherwise FALSE .

Arguments:

  • element : The graph pattern variable for a node or edge element.

Details

Produces an error if element is NULL .

Example

The following query returns the source and destination IDs for transfers between different accounts:

  GRAPH 
  
 graph_db 
 . 
 FinGraph 
 MATCH 
  
 ( 
 src 
 : 
 Account 
 ) 
< -[ 
 transfer 
 : 
 Transfers 
 ]- 
 ( 
 dest 
 : 
 Account 
 ) 
 WHERE 
  
 NOT 
  
 SAME 
 ( 
 src 
 , 
  
 dest 
 ) 
 RETURN 
  
 src 
 . 
 id 
  
 AS 
  
 source_id 
 , 
  
 dest 
 . 
 id 
  
 AS 
  
 destination_id 
 /*----------------------------+ 
 | source_id | destination_id | 
 +----------------------------+ 
 | 7         | 20             | 
 | 16        | 7              | 
 | 16        | 7              | 
 | 16        | 20             | 
 | 20        | 16             | 
 +----------------------------*/ 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: