Taxonomy
Concepts

Subchains

Named, ordered groupings of categories at the datachain-type level, and their realizations on a datachain instance.
A subchain is a named group of categories declared on a datachain type (e.g. data_flow = [input_dataset, processing, output_dataset]). A subchain instance is a concrete realization of one of those subchains on a single datachain instance.

Why

Modern AI systems are compositional. A smart intersection might compose a perceptive model (cameras → vehicle detection) with an analytical model (predict congestion) and an agentic actuator (re-time the signal). Each leg has its own input → processing → output flow. The flat elements list of a datachain cannot tell three flows apart.

Subchains let an author group categories into named flows on the datachain type, and then realize those flows multiple times on a single instance.

At the datachain-type level

DatachainType.subchains[] declares which subchains exist for this type:

subchains:
  - id: data_flow
    name:
      - locale: en
        value: Data Flow
    categories:
      - input_dataset
      - processing
      - output_dataset

Categories may belong to multiple subchains. The subchain is purely a grouping; required-ness, ordering, and shape continue to live on the categories themselves.

At the datachain-instance level

DatachainInstance.subchain_instances[] declares concrete realizations for this disclosure. Each subchain_instance references one of the subchains declared on the type, may name head_refs (typically functional-mode element ids that head the flow), and may carry an explicit order:

{
  "subchain_instances": [
    { "id": "perceptive_flow", "subchain_id": "data_flow", "head_refs": ["perceptive_mode"], "order": 1 },
    { "id": "analytical_flow", "subchain_id": "data_flow", "head_refs": ["analytical_mode"], "order": 2 },
    { "id": "agentic_flow",    "subchain_id": "data_flow", "head_refs": ["agentic_mode"],    "order": 3 }
  ]
}

Each element in DatachainInstance.elements[] may carry a subchain_instance_id. Elements with one render inside their subchain instance; elements without one render at the datachain root (Accountable, Purpose, Rights, Risks).

Smart-intersection example

A single intersection deployment composes three modes — perceptive, analytical, agentic. Each mode heads one realization of data_flow:

  • Perceptive flow: camera feed → vehicle detection model → bounding boxes.
  • Analytical flow: vehicle counts → congestion forecaster → predicted queue length.
  • Agentic flow: predicted queue length → signal re-timer → updated phase plan.

Authoring this as one datachain instance: three subchain_instances (each with subchain_id: data_flow), one functional-mode element per flow (heads it via head_refs), and the input / processing / output elements per flow each carry the matching subchain_instance_id.

See also