PGX 21.1.1

Documentation

Documentation

PGX adopts the *property graph* model.
In this model vertices and edges can be associated with a set of values, often called properties, where each one is identified with a unique name.
For example, the small sample graph below has two properties for vertices ('name' and 'age') and one for edges ('relationship').

The PGX property graph model has the following characteristics:

**Properties are typed**: Properties of vertices and edges are always typed and their type is declared when they are created or loaded. PGX currently supports primitive data types including numeric, boolean and string types. See this document for details.**Properties are dynamic**: Vertex/edge properties can be dynamically created or deleted.**Id is a special property**:*vertex-id*/*edge-id*is a special property that uniquely identifies the vertices/edges in the graph. However, it is optional for PGX graphs to have a*vertex-id*/*edge-id*. The user may choose not to have these keys for the sake of reducing the memory footprint.

Originally, PGX only supported *non-partitioned* property graphs, where **properties are regular**, i.e., the same set of properties is associated with all the vertices/edges of the graph.
Since version 19.1.0, PGX also supports loading *partitioned* graphs, where different types of vertices / edges can have a different set of properties.
See here for more information on partitioned graphs.

PGX assumes graphs are *directed*; that is an edge from vertex A to B is different from an edge from vertex B to A.
Still, PGX can process undirected graphs by (implicitly) duplicating edges — i.e., by having one edge for each direction between two vertices.
Additionally, PGQL allows ignoring edge direction in graph patterns
even when querying directed graphs.

In addition, PGX allows graphs to have self-edges (i.e., an edge whose source and destination vertex are the same) as well as multi-edges (i.e., multiple edges between the same source and destination vertex).