Content Graph

The Content Graph describes the entirety of all nodes and relations in a content repository across Dimension Space Points and without constraints - restricted only to a Workspace

Neos 9

This page is for Neos 9.0 with the new Event Sourced Content Repository.

#Node Aggregate

A Node Aggregate is a collection of Nodes sharing the same Node Aggregate ID across Dimension Space Points. Within the Node Aggregate, the following rules apply:

  • all Nodes share the same Node Aggregate ID
  • all Nodes share the same Node Type
  • all Nodes share the same Classification (e.g. regular, root or tethered)
  • all Nodes share the same Node Name, if any
  • each Origin Dimension Space Point is occupied by at most one node, i.e. there is at most one node that originates in it (see Subgraph)
  • each Dimension Space Point is covered by at most one Node, i.e. there is at most one Node that covers it (see Subgraph)
language: fr
language: fr
Variation Graph
Variation Graph
language: de
language: de
language: gsw
language: gsw
Text is not SVG - cannot display

Given the one-dimensional variation graph (with the only dimension "language"), we can create a node aggregate consisting of two nodes. One originates in Origin Dimension Space Point {"language": "fr"} and covers Dimension Space Point {"language": "fr"}. The other one originates in {"language": "de"} and covers {"language": "de"} and additionally {"language": "gsw"} via fallback, illustrated by the additional parent edge.

#Content Graph

The content graph can be divided into different smaller parts: in Subgraphs, if split up by Dimension Space Point and Visibility Constraints or in Node Aggregates, if split up by Node Aggregate ID.

The Node Aggregates are also put in hierarchical relation. The content graph can determine parents and children of a node aggregate. Note that since different Nodes in the same Node Aggregate can have different parents in their respective subgraph, the Node Aggregate can have multiple parent Node Aggregates.

root
root
A
A
B
B
C
C
A
A
C
C
B
B
Text is not SVG - cannot display

With this example graph, we can now describe the above concepts.

Division into different Subgraphs leads to the following:

root
root
A
A
C
C
Text is not SVG - cannot display

The Subgraph in Dimension Space Point {"language": "fr"}

There are variants in this Dimension Space Point for A and C and the subgraph consists of these two nodes.

root
root
B
B
A
A
C
C
Text is not SVG - cannot display

The Subgraph in Dimension Space Point {"language": "de"}

There are variants in this Dimension Space Point for A, B and C and the subgraph consists of these three variants

root
root
A
A
C
C
B
B
Text is not SVG - cannot display

The Subgraph in Dimension Space Point {"language": "gsw"}

There is a variant in this Dimension Space Point for B. Due to the fallback from {"language": "gsw"} to {"language": "de"}, the subgraph also contains the variants of A and C originating in {"language": "de"}

Division into different Node Aggregates leads to the following: 

root
root
A
A
B
B
C
C
A
A
C
C
Node Aggregate A
Node Aggregate A
Node Aggregate C
Node Aggregate C
Node Aggregate B
Node Aggregate B
B
B
Text is not SVG - cannot display

Node Aggregate A consists of a node originating in and covering {"language": "fr"} and one originating in {"language": "de"} and additionally covering {"language": "gsw"}. It has the root node aggregate as its only parent and Node Aggregate C as its only child.

Node Aggregate B consists of a node originating in and covering {"language": "de"} and one originating in and covering {"language": "gsw"}. It has the root node aggregate as its only parent and Node Aggregate C as its only child.

Node Aggregate C consists of a Node originating in and covering {"language": "fr"} and one originating in {"language": "de"} and additionally covering {"language": "gsw"}. It has two parent Node Aggregates, A and B.