PGX 21.1.1

Graph Data Model

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').

Property Graph Example

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.

Vertex and Edge Properties

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.

Graph Topology

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).