Appendix B. Terminology

This section provides a cross-linked glossary of key terms for working with graph databases in general, and with Neo4j and Cypher in particular.

The terminology used for Cypher and Neo4j is drawn from the worlds of database design and graph theory. This section provides cross-linked summaries of common terms.

In some cases, multiple terms (e.g., arc, edge, relationship) may be used for the same or similar concept. An asterisk (*) to the right of a term indicates that the term is commonly used for Neo4j and Cypher.

acquire (connection)

To borrow a driver connection that is not currently in use from a connection pool.


for a graph or subgraph: when there is no way to start at some node n and follow a sequence of adjacent relationships that eventually loops back to n again. The opposite of cyclic.


nodes sharing an incident (that is, directly-connected) relationship or relationships sharing an incident node.


Synonym for property.


graph theory: a synonym for a directed relationship.


container that holds a number of elements. The element types can be the types supported by the underlying graph storage layer, but all elements must be of the same type.

aggregating expression

expression that summarizes a set of values, like computing their sum or their maximum.


Bolt is a Neo4j proprietary, binary protocol used for communication between client applications and database servers. Bolt is versioned independently from the database and the drivers.

Bolt Routing Protocol

The steps required for a driver to obtain a routing table from a cluster member.

Bolt server

A Neo4j instance that can accept incoming Bolt connections.


A marker for a point in the transactional history of Neo4j.


component of a Cypher query or command; starts with an identifying keyword (for example CREATE). The following clauses currently exist in Cypher: CREATE, CREATE UNIQUE, DELETE, FOREACH, LOAD CSV, MATCH, MERGE, OPTIONAL MATCH, REMOVE, RETURN, SET, START, UNION, and WITH.

client application

A piece of software that interacts with a database server via a driver.

cluster member

A server that is part of a cluster.


alternative term for adjacent relationships, which share a common node.


container that holds a number of elements. The elements can have mixed types. This is the deprecated name of the Cypher type now called List.


a statement that operates on the database without affecting the data graph or returning content from it.


successful completion of a transaction, ensuring durability of any changes made.


A persistent communication channel between a client application and a database server.

connection pool

A set of connections maintained for quick access, that can be acquired and released as required.


part of a database schema: defines a contract that the database will never break (for example, uniqueness of a property on all nodes that have a specific label).


The opposite of acyclic.


a special-purpose programming language for describing queries and operations on a graph database, with accompanying natural language concepts.

Cypher type system

The types used by Cypher.


a directed, acyclic graph: there are no cyclic paths and all the relationships are directed.

data graph

graph stored in the database. See also property graph.

data record

a unit of storage containing an arbitrary unordered collection of properties.


of a node: is the number of relationships leaving or entering (if directed) the node; loops are counted twice.

direct driver

A driver that can connect to a single server address.

directed relationship

a relationship that has a direction; that is the relationship has a source node and a destination node. The opposite of an undirected relationship. All relationships in a Neo4j graph are directed.

driver (object)

A globally accessible controller for all database access.

driver (package)

A software library that provides access to Neo4j from a particular programming language. The Neo4j drivers implement the Bolt protocol.


graph theory: a synonym for undirected relationship.

execution result

all statements return an execution result. For queries, this can contain an iterator of result rows.

execution plan

parsed and compiled statement that is ready for Neo4j to execute. An execution plan consists of the physical operations that need to be performed in order to achieve the intent of the statement.


produces values; may be used in projections, as a predicate, or when setting properties on graph elements.

  1. data graph,
  2. property graph,
  3. graph theory: set of vertices and edges.
graph database

a database that uses graph-based structures (for example, nodes, relationships, properties) to represent and store data.

graph element

a node, relationship, or path which is part of a graph.


variables are named bindings to values (for example, lists, scalars) in a statement. For example, in MATCH (n) RETURN n, n is a variable.


adjacent relationship attached to a node or a node attached to a relationship.

incoming relationship

pertaining to a directed relationship: from the point of view of a node n, this is any relationship r arriving at n, exemplified by ()-[:r]→(n). The opposite of outgoing.


data structure that improves performance of a database by redundantly storing the same information in a way that is faster to read.

intermediate result

set of variables and values (record) passed from one clause to another during query execution. This is internal to the execution of a given query.


marks a node as a member of a named subset. A node may be assigned zero or more labels. Labels are written as :label in Cypher (the actual label is prefixed by a colon). Note: graph theory: This differs from mathematical graphs, where a label applies uniquely to a single vertex.


container that holds a number of elements. The elements may have mixed types. This is the name of one of the types in the Cypher type system.


a relationship that connects a node to itself.


of node: another node, connected by a common relationship; of relationship: another relationship, connected to a common node.


data record within a data graph; contains an arbitrary collection of properties. Nodes may have zero, one, or more labels and are optionally connected by relationships. Similar to vertex.


NULL is a special marker, used to indicate that a data item does not exist in the graph or that the value of an expression is unknown or inapplicable.


there are three categories of operators in Cypher:

  1. Arithmetic, such as +, /, % etc.;
  2. Logical, such as OR, AND, NOT etc.; and
  3. Comparison, such as <, >, = etc.
outgoing relationship

pertaining to a directed relationship: from the point of view of a node n, this is any relationship r leaving n, exemplified by (n)-[:r]→(). The opposite of incoming relationship.

pattern graph

graph used to express the shape (that is, connectivity pattern) of the data being searched for in the data graph. This is what MATCH and WHERE describe in a Cypher query.


collection of alternating nodes and relationships that corresponds to a walk in the data graph.


named value provided when running a statement. Parameters allow Cypher to efficiently re-use execution plans without having to parse and recompile every statement when only a literal value changes.


expression that returns TRUE, FALSE or NULL. When used in WHERE, NULL is treated as FALSE.


an operation taking result rows as both input and output data. This may be a subset of the variables provided in the input, a calculation based on variables in the input, or both. The relevant clauses are WITH and RETURN.


named value stored in a node or relationship. Synonym for attribute.

property graph

a graph having directed, typed relationships. Each node or relationship may have zero or more associated properties.


statement that reads or writes data from the database


data record in a property graph that associates an ordered pair of nodes. Similar to arc and edge.

relationship type

marks a relationship as a member of a named subset. A relationship must be assigned one and only one type. For example, in the Cypher pattern (start)-[:TYPE]→(to), TYPE is the relationship type.

release (connection)

To return a connection back into a connection pool after use.

result row

each query returns an iterator of result rows, which represents the result of executing the query. Each result row is a set of key-value pairs (a record).

role (clustering)

An operation that can be carried out by a cluster member (e.g. read, write).


abort of the containing transaction, effectively undoing any changes defined inside the transaction.

routing driver

A driver that can route traffic to multiple members of a cluster using the routing protocol.

routing table

A set of server addresses that identify cluster members associated with roles.


persistent database state that describes available indexes and enabled constraints for the data graph.

schema command

statement that updates the schema.

server address

A combination of host name and port or IP address and port that targets a server.


A causally linked sequence of transactions.


text string containing a Cypher query or command.

statement result

The stream of records that are returned on execution of a statement.

thread safety



types classify values. Each value in Cypher has a type. Supported types are:

  • Number
  • String
  • Boolean
  • Spatial types: Point
  • Temporal types: Date, Time, LocalTime, DateTime, LocalDateTime and Duration
  • Map types (plain maps, nodes, and relationships)
  • Lists of any of the above

The type hierarchy supports several other types (for example, any, scalar, derived map, list). These are used to classify values and lists of values having different types.


A transaction comprises a unit of work performed against a database. It is treated in a coherent and reliable way, independent of other transactions. A transaction, by definition, must be atomic, consistent, isolated, and durable.

transitive closure

of a graph: is a graph which contains a relationship from node x to node y whenever there is a directed path from x to y; For example, if there is a relationship from a to b, and another from b to c, then the transitive closure includes a relationship from a to c.

undirected relationship

a relationship that doesn’t have a direction. The opposite of directed relationship.


A unit of data belonging to the Cypher type system.


graph theory: the fundamental unit used to form a mathematical graph (plural: vertices). See node.