Abstractly, the CommonAccord data model:

A Record is some Parameters and some links to the Context of the Record.  The Context is other Records, which can include:

  1. The prior step in the transaction and/or other Context.
  2. Some prose – legal text and other descriptive language.
  3. Some code – text that machines execute.  Conditions, actions, options.

(“Some” means 0-N.  A Record could have only Parameters or only Links, and can have many Parameters and Links.  There is variation in the content, but all Records have the same format, and everything is expressed as Records.)

Notice that this inverts the usual arrangement where the place that a record is stored provides the context.  It follows the practice in software coding of “including” other modules of code.

In more detail:

A Record consists of some Parameters and some Links.

A Parameter is a key/value (K/V).   A name (the key) is a handle for the value, a string of prose or code.   The prose can include formatting, such as HTML and can include {Variables}, expressions that get “expanded” by matching to the Key of a K/V.  The code can be whatever you want (as long as it can be serialized).

A Link looks like a K/V, but the Value is an identifier of another Record.  The key can be some (short) string of text, or it can be null – empty.

The matching of Parameter to Key is done using “prototype inheritance.”  This makes the Records infinitely extensible, and allows full codification of prose.