What does each AIMS term mean?

Rather than restructuring source data to fit a modeling methodology, AIMS (AI-ready, Meaning-first Silver) starts with business meaning. Written so a machine can read it, your business model is an ontology. The business model plus the mappings that tie silver columns to it is the meaning layer.

A table can be tested yet silent about what its rows mean. Five meaning levels say how much it tells its reader: 0 Typed, 1 Identified, 2 Related, 3 Described and 4 Integrated.

Joins, codes and governance rules depend on columns that identify, relate, hold a code or hold sensitive data. So these critical columns must be mapped. The unit of work a set of tables is organized and generated in, a project, may add classes. Gold and agents may read a table once it publishes: level 2 complete, level 3 for its critical columns, its checklist passed. Elsewhere, attribute coverage measures mapping, and low coverage only warns.

Three systems can mean three things by customer. Each business thing your data is about, a business entity, gets a definition. How do you tell one instance from another? Five shapes answer, the entity classes: independent, dependent, event, reference and association.

An unnamed line leaves every report guessing. So a business relationship carries a role, a cardinality, an optionality and a policy for an unresolved reference. Count versions as customers and the answer’s wrong, so a table carrying an entity says what one row is in its grain sentence.

Every restructuring is a decision somebody must keep defending, so the silver layer’s default is one table per source table, at the same grain, typed and renamed, a source-aligned table. Its default materialization is a view over the layer below silver that keeps every version a source delivered, persistent staging, in bronze. That’s your audit trail, and it exists before silver starts.

Each row says which source record it is, its source primary key, and which version or event, its change sequence. History is chosen on purpose, as a history policy: append, current, versioned (Type 2) or snapshot. A silently dropped row is a lie in the row count, so each quality rule’s failure action warns, quarantines (sets the row aside, counted) or blocks.

Customer 123 in two systems can be two customers. A business key is the set of values the business uses to identify one thing, in a fixed order, such as a company code and an account number. It’s unique only inside the system that issued it, its record source. Written out in a business key column, it starts with the record source code: awlt||AU||00001042. Every reference needs one place to find its identity, the entity’s key register of distinct business keys.

Which column holds the customer’s name? One meaning, defined once on its entity, is a business attribute. An attribute mapping ties a column to it. Every column is mapped, source-only on purpose, or unmapped. Codes differ by system, so a code list holds the business values (reference data), and an approved code mapping (a value mapping) says, per record source, which source code means which.

An agent must know what one row is before it counts. A published table’s data contract projects what the catalog holds, down to its known limitations: unmapped columns and unmapped codes.

Integrating every source up front is costly. So AIMS integrates only when a business requirement calls for it. That’s integration by exception. Two record sources never join until matching gives their keys one shared key. A person approves the match rules and types a manual match where no rule can decide.

One combined record per business thing is a golden record. When sources disagree, a survivorship rule says which value wins.

Models are unreliable at what a key identifies. So above the approval boundary, a person approves every decision that changes meaning or values, however confident the model. Below the boundary, how much a person reviews is the AI recommendation workflow. Accepting is a decision, not authorship, so a value the AI proposed keeps the record of what proposed it, its provenance, until a person changes the value.

Other methods’ names

The AIMS nameHookData Vaultdbt
business entitybusiness conceptcore business concept (a hub)entity
business keybusiness keybusiness keynatural key
record source codekey setbusiness key collision codesource
business key columnhook columnbusiness key column, hash key(none)
source primary key(none)(none)unique key
change sequence(none)load dateupdated_at in snapshots
business attribute(none)satellite attributecolumn
attribute mapping(none)(none)(none)
code list, code mapping(none)reference tableseed
business relationshipcompound hooklinkrelationship test
source-aligned tableframe (formerly bag)a raw satellite, looselystaging model
key registeran implied hubhub(none)
shared key, matching(none)same-as link(none)
golden record(none)business hub and business satelliteintermediate model
history policy(none)insert-only, Type 1, Type 2incremental, snapshot
failure action(none)(none)warn, error

Relationship kinds

KindCarried as
Referencemany-to-one, with a role
Containmentthe parent inside the child’s key
Hierarchya pointer to its own kind
Associationits own entity, a role per side
Classificationa code, beside any mapped value
Equivalenceshared keys, never a source column
Specializationa kind of another entity

Kinds name links, not entity classes. Each relationship states its cardinality (1:1, 1:N, M:N or N:1) and optionality. A row with an orphaned reference is allowed and counted, warned and flagged (the default), or quarantined.

Columns and source changes

OrderColumns
1business key columns: own identity, then each referenced role
2source columns in order, typed and renamed, source-only ones kept
3mapped values, beside the column each translates
4quality flags for the warn rules a row broke
5system columns: load timestamp, record source, hash difference, history dates and flags
Source changeResult
Deleted rowignored, tombstoned, version closed, or hard deleted (append tables reloadable from persistent staging only)
Added columnunmapped, a finding, not a failure
Type changequarantined at the cast
Removed columnkept, nullable and deprecated, until a person retires it

Business keys

FieldHolds
Key partsin order, each a column or a fixed value, with its padding
Normalizationtrim, upper-case and collapse whitespace
Separatorfrom Settings, one between parts
EntityRecord source codeParts
Customer Accountawltcompany code, customer number padded to eight digits
Sales Orderawltcompany code, order number
Sales Order Lineawltcompany code and order number from its order, line number
Productawltproduct number
Customer Accountwbaccount identifier, upper-cased

Types and mappings

Semantic typesType contract
identifier, code, name, free text, flag, geography, reference to another entityan identifier keeps leading zeros, never summed
quantity, monetary amount, percentage, ratio, counta monetary amount needs scale and currency
date, instant, durationa date isn’t an instant
Sales order columnBusiness attributeType and role
company_codeCompany Codeidentifier, part of the business key
order_numberOrder Numberidentifier
customer_numberSold-to Customerrelationship
bill_to_customer_numberBill-to Customerrelationship
order_dateOrder Datedate, temporal
amountOrder Amountmonetary amount, measure, currency from the currency column
currencyOrder Currencycode, code list Currency
statusOrder Status Codecode, code list Order Status

The ninth, changed_at, is the source’s ChangedAt: the source change time and change sequence.

Publishing and matching

AreaAcceptance checklist
Identitygrain confirmed, business key approved, uniqueness tested
Valuestype contracts and units set
Historypolicy chosen, replay repeatable, time columns apart
Rulesorphans counted, failure actions set, row counts reconciled
Governancelineage, ownership and classification on record
MatchingHolds
Match rulesexact matches after normalization, in order, each approved by a person
Manual matchesa person’s: business key, shared key, effective dates
Shared keyson the key register, computed each run

Templates and run metrics

KindAIMS templates write
Structurecreate statement, current view, key register view
Loadsthe history policy’s load, the clean and quarantine pair
Expressionsbusiness key columns, mapped values from code mappings
Testsa data test per block rule
GrainEvery run measures
Tablequarantine rate, warn counts per rule, row count against source, freshness against the entity’s target
Business keyidentity uniqueness
Relationshiporphan count
Entitymatching coverage and attribute coverage
Sourcedrift: columns added, removed or retyped since the last contract

Agent instructions

Instruction
Read the grain sentence first, name the counted thing, and on a version grain count keys, not rows.
Answer “when” from the time the question means (source change, effective or load), using the version valid then.
Join only along the contract’s relationships, by role, and name any join that changes the grain.
Add only what the semantic type allows, in one unit and currency, and recompute ratios from their parts.
Filter and group on mapped values, never source codes.
Take every metric and segment from the consumption layer’s definitions, inventing none.
Decline or qualify each clause with no mapping, naming the gap.
Cite the contract version, the tables read and the load behind them.