ADR-003 — Canonical Knowledge Model¶
Status: Accepted
Date: 2026-07-04
Owner: Architecture Board
Decision Type: Foundational
Context¶
UC-BoK has completed its repository foundation.
The repository now has a frozen source-of-truth strategy:
PROJECT.mddefines project constitution.adr/records architecture decisions.specifications/defines normative rules.schemas/defines machine-readable validation.catalogs/defines canonical knowledge.graph/andqueries/make knowledge executable.
The next foundation is conceptual rather than structural.
UC-BoK must define what its knowledge entities mean before expanding catalog content. Without a canonical knowledge model, catalogs risk becoming lists of terms rather than a coherent ontology.
Decision¶
UC-BoK SHALL use a canonical knowledge model.
The knowledge model defines:
- what can be cataloged
- what can be referenced
- what can become a graph node
- what can become a graph relationship
- which concepts are ontology rules
- which concepts are catalog content
Catalogs SHALL instantiate the knowledge model. They SHALL NOT redefine it.
Knowledge Entity Types¶
Business Object¶
A Business Object is a canonical business concept with identity, lifecycle, ownership and relationships.
A Business Object MAY be classified as:
- aggregate root
- entity
- value object
A Business Object SHOULD define:
- identifier
- name
- description
- classification
- lifecycle
- owner
- attributes
- relationships
- invariants
- events that change or observe it
- processes, capabilities and applications that use it
Business Objects are graph nodes.
Aggregate Root¶
An Aggregate Root is a Business Object that owns a consistency boundary.
It is the authoritative entry point for related entities and value objects.
An Aggregate Root SHALL have:
- stable identity
- lifecycle
- ownership
- invariants
- explicit relationships to contained or referenced objects
Aggregate Roots are graph nodes.
Entity¶
An Entity is a Business Object with stable identity inside a business context.
An Entity MAY be owned by an Aggregate Root or referenced by another Business Object.
Entities are graph nodes when they are independently referenced.
Value Object¶
A Value Object is a Business Object or object component identified by its value rather than by independent lifecycle identity.
Value Objects MAY be cataloged when they are part of the shared language.
Value Objects are graph nodes only when the catalog requires independent referenceability.
Capability¶
A Capability is a stable business ability.
It describes what the enterprise can do, not how a system implements it.
A Capability SHALL:
- belong to a domain
- provide or require business services
- use business objects directly or through services
- be referenceable by processes, applications, vendors and assessments
Capabilities are graph nodes.
Business Service¶
A Business Service is a reusable business operation with a business outcome.
It is not an API endpoint and not an application function.
A Business Service SHALL:
- belong to a domain
- manipulate one or more business objects
- support one or more capabilities
- publish zero or more business events
Business Services are graph nodes.
Business Process¶
A Business Process is an ordered business flow that coordinates domains, capabilities, services, business objects, applications and events.
A Business Process SHALL:
- reference participating domains
- require capabilities or services
- use business objects
- be supported by applications when applicable
- produce or consume events when modeled
Business Processes are graph nodes.
Business Event¶
A Business Event is a named business-significant occurrence.
An Event records that something happened.
An Event SHALL:
- have stable identity
- reference the business object it changes or observes
- be published by a business service or application when modeled
Business Events are graph nodes.
State Change¶
A State Change is a lifecycle transition of a Business Object.
A State Change MAY be represented by a Business Event when the transition is business-significant and needs to be referenced, published, consumed or audited.
Not every State Change is automatically a Business Event.
State Changes are ontology semantics unless explicitly cataloged.
Application¶
An Application is an executable system component or logical application responsibility.
An Application SHALL:
- implement services or capabilities
- support processes when modeled
- publish or consume events when modeled
- own APIs when modeled
Applications are graph nodes.
API¶
An API is a technical exposure of one or more business services.
An API SHALL reference the business service it exposes.
APIs are graph nodes.
Domain¶
A Domain is a coherent business area that owns related concepts.
A Domain SHALL own or group:
- business objects
- capabilities
- business services
Domains are graph nodes.
Vendor Mapping¶
A Vendor Mapping is an external coverage view over the canonical model.
It SHALL NOT define canonical knowledge.
Vendor Mappings may reference capabilities, services, applications and processes.
Vendors are graph nodes.
Assessment¶
An Assessment is an evaluation view over canonical knowledge.
It SHALL NOT define canonical knowledge.
Assessments may reference capabilities, processes, applications or domains.
Assessments MAY be graph nodes when modeled as catalog entities.
Identity Rules¶
Every cataloged knowledge entity SHALL have a stable ID.
IDs are type-scoped unless a schema explicitly requires global uniqueness.
Display names SHALL NOT be used as canonical references.
Aliases MAY be used for lookup and migration, but aliases SHALL NOT replace canonical IDs.
Referenceability Rules¶
An entity may be referenced when it has:
- stable ID
- defined entity type
- source catalog
- lifecycle or status when applicable
The following are always referenceable when cataloged:
- Domain
- Capability
- Business Service
- Business Object
- Business Process
- Business Event
- Application
- API
- Vendor
Attributes and invariants are not independently referenceable unless promoted to cataloged entities by a future ADR.
Relationship Rules¶
Relationships SHALL use the relationship model defined in
specifications/006-relationship-model.md.
Catalog-specific relationship labels MAY exist only when scoped to that catalog.
Cross-catalog relationships SHALL use canonical relationship semantics.
Derived relationships SHOULD be generated rather than duplicated manually.
Invariant Rules¶
An invariant is a rule that must remain true for a Business Object or Aggregate Root.
Invariants belong to the ontology layer when they define consistency semantics.
Invariants belong to catalog content when they describe a specific cataloged object.
Invariants SHALL NOT be hidden in documentation prose when they affect validation or graph semantics.
Catalog Content vs Ontology Rule¶
| Concern | Type |
|---|---|
| Definition of Business Object | Ontology rule |
| Definition of Aggregate Root | Ontology rule |
| Definition of Capability | Ontology rule |
| Definition of Event vs State Change | Ontology rule |
| Specific object such as a cataloged object ID | Catalog content |
| Specific process ID | Catalog content |
| Specific application ID | Catalog content |
| Specific lifecycle values for one object | Catalog content |
| Universal lifecycle rules | Ontology rule |
Consequences¶
- Future catalog work should start from Business Object ontology and aggregate boundaries before expanding events, capabilities or processes.
- The graph builder should progressively expose ontology classification.
- Schemas should validate classification, lifecycle, relationships and invariants when those fields are introduced.
- Documentation should explain ontology decisions but must not become their source of truth.