A Pile consists of a large amount of Relations (or Associations). Each Relation has a unique value, called a Handle. The OPE implements a Handle as a 32 bit value.
Also each Relation is uniquely identified by its Parent Relations (or Parents for short):
R=(X, Y)
R is the Relation defined by its Parents X and Y. R, X, Y each have their own values, e.g. R=23, X=99, Y=17. The value of a Child Relation, e.g. R, cannot be “calculated” from the values of its Parents.
The left Parent is called the Normative Parent (or Np), the right Parent is called the Associative Parent (or Ap). Normative or Associative are called the Manner of a Relation.
R is the Child of its Parent Relations and can be called more specifically the Normative Child (Nc) or Associative Child (Ac) depending on the Parent taken into focus (Nc of Np, Ac of Ap).
Each Relation also is attributed with a Quality (Q) which is encoded in the upper n bits of its value. The OPE uses n=8 bits for Q. To define a Child to be of a certain Quality it can be defined like this:
R=(X [Q] Y)
Each Relation can be Parent (either Np or Ap) to any number of Child relations, e.g.
R=(X, Y) S=(X, Z) T=(Z, Y)
In turn this means, each Relation can be Child (either Nc or Ac) to any number of Parents.
Only so called Top Relations (Tops for short) which represent entities outside a Pile do not have Parents; but of course they too are identified by a Handle.
# Basic Pile Engine Functions
To navigate the relational mesh of a Pile four basic functions are necessary:
[…]
🔺
Ralf Westphal's post , pdf
See "Beyond WinFS – Let associations rule! – or: An introduction to Pile for mere mortals" post