# Predicate functions¶

Predicate functions return true or false. They are most commonly used in WHERE.

Functions Description
exists() returns true if the specified property exists in the vertex, edge or map.
any() returns true if the predicate holds for at least one element in the given list.
all() returns true if the predicate holds for all elements in the given list.
none() returns true if the predicate holds for no element in the given list.
single() returns true if the predicate holds for exactly one of the elements in the given list.

Note

NULL is returned if the list is NULL or all of its elements are NULL.

## OpenCypher compatibility¶

In openCypher, only function exists() is defined and specified. The other functions are implement-dependent.

## Syntax¶

<predicate>(<variable> IN <list> WHERE <condition>)


## Examples¶

nebula> RETURN any(n IN [1, 2, 3, 4, 5, NULL] WHERE n > 2) AS r
+------+
| r    |
+------+
| true |
+------+

nebula> RETURN single(n IN range(1, 5) WHERE n == 3) AS r
+------+
| r    |
+------+
| true |
+------+

nebula> RETURN none(n IN range(1, 3) WHERE n == 0) AS r
+------+
| r    |
+------+
| true |
+------+

nebula>  WITH [1, 2, 3, 4, 5, NULL] AS a RETURN any(n IN a WHERE n > 2)
+-------------------------+
| any(n IN a WHERE (n>2)) |
+-------------------------+
| true                    |
+-------------------------+

nebula>  MATCH p = (n:player{name:"LeBron James"})<-[:follow]-(m) \
RETURN nodes(p)[0].name AS n1, nodes(p)[1].name AS n2, \
all(n IN nodes(p) WHERE n.name NOT STARTS WITH "D") AS b
+----------------+-------------------+-------+
| n1             | n2                | b     |
+----------------+-------------------+-------+
| "LeBron James" | "Danny Green"     | false |
+----------------+-------------------+-------+
| "LeBron James" | "Dejounte Murray" | false |
+----------------+-------------------+-------+
| "LeBron James" | "Chris Paul"      | true  |
+----------------+-------------------+-------+
| "LeBron James" | "Kyrie Irving"    | true  |
+----------------+-------------------+-------+
| "LeBron James" | "Carmelo Anthony" | true  |
+----------------+-------------------+-------+
| "LeBron James" | "Dwyane Wade"     | false |
+----------------+-------------------+-------+

nebula> MATCH p = (n:player{name:"LeBron James"})-[:follow]->(m) \
RETURN single(n IN nodes(p) WHERE n.age > 40) AS b
+------+
| b    |
+------+
| true |
+------+

nebula> MATCH (n:player) RETURN exists(n.id), n IS NOT NULL
+--------------+---------------+
| exists(n.id) | n IS NOT NULL |
+--------------+---------------+
| false        | true          |
+--------------+---------------+
...


Last update: April 22, 2021