Semantic architecture · law, facts and data in one picture

Every Value Has a Reason

Law, terms, rules, facts and data in one grid. Meaning travels down, data travels across. The point is not the layers but the links between them: when a law changes, a system is replaced or an auditor asks why, you follow links instead of searching. The fact model in the middle is the one place that experts can check and generators can build from.

What the links buy you

Each layer on its own is ordinary practice. The value is in connecting them, and in putting one validated fact model where they meet.

When the rules change

Change once, know where

Follow the links down from the changed article or policy to every rule, shape, column and report it touches, and see what it does not touch.

Without the links: a search through code and spreadsheets, a meeting per system, and no proof that nothing was missed.

When people disagree

Agree on sentences, not columns

Experts cannot check last_order DATE, but they can check "C042 placed the last order on 14 March 2019". FCO-IM is the level that experts can verify and generators can use.

Without it: each system decides for itself what "customer" means, and the difference shows up in a report years later.

When systems connect

Map to the facts, not to each other

Five systems mapped pairwise need up to 10 mappings, each re-interpreting meaning. Mapped to one fact model, they need 5, and a sixth system adds 1 mapping, not 5.

Without it: mappings multiply and every column rename breaks someone downstream.

When someone asks why

Answer with evidence

An auditor, a customer or an AI agent asks why C042's data will be deleted. The links answer with the facts, rules, terms and articles behind it. Each step can be queried and shown.

Without it: the answer depends on who remembers, and the evidence is put together by hand for every audit.

meaning flows down generated from the fact model data flows system to system schema mapping deploys lineage traceability back up

The grid

Each cell has its definition on top and a concrete example underneath: customer C042 in Utrecht, whose last order was on 14 March 2019. Arrow labels pair the general term with the concrete value. Pick a scenario to see which cells it involves. The grid shows one path per cell for readability; in reality each value rests on several facts and rules, definitions lean on other definitions, and articles overlap. The model keeps that whole network, so any path through it can be walked.

Try a scenario:

The grid is drawn by JavaScript; it appears once the page has loaded.

One model, more than facts

The grid draws the fact model as one row, but a CaseTalk model holds far more than object and fact types. Everything below lives in the same model, under the same identities and versions. That is why it can feed every row of the grid without copies drifting apart. The chips show which rows each part feeds.

Paragraphs

Documentation paragraphs inside the model: law articles, policy clauses, interview notes. They nest, and document roles link them to the types they are about.

§ RP-07 "Customer data is deleted
7 years after the last order."
→ documents Customer, LastOrder
1 law & policy2 annotation

Concepts and containers

Free concepts outside the FCO-IM realm, grouped in containers and related in concept maps, typed with ELM or ArchiMate.

Customer: ELM Person
CRM: ArchiMate Application Component
3 terms6 architecture

FCO-IM: expressions, types, populations

Example sentences in the experts' words, the object, fact and label types qualified from them, their names in each model language, and the populations behind them.

Customer C042 lives in Utrecht.
Klant / Customer · C042 Utrecht
3 terms5 facts6 schemasAI examples

FCO-IM: constraints, subtypes, derivations

Uniqueness, totality, subset, value and ring constraints with their verbalisation, generalisation and specialisation, and derivable types with documented calculations.

UC: one City per Customer
Due date = last order + retention
4 rules · SHACL6 keys · NOT NULL

Rules

Rules as elements of the model, linked to the fact types they read and produce, next to the constraints that FCO-IM already states.

RP-07 retention
in: LastOrder · out: Due date
4 formal languageAI reasoning

Business transactions

Transactions as model elements with their inputs and outputs, connecting the facts to the processes that create and change them.

Place order
out: LastOrder
6 APIs · eventslineage

Levels 0 to 3

Instances, model, classifications and meta-classifications in one repository, linked by classification roles instead of kept in separate tools.

0  C042
1  Customer
2  Party type
3  classification scheme
3 SKOScatalog themes

Custom attributes

Typed, project-defined attributes on any element, alongside system attributes such as ring type and constraint scope.

legal.ref = eli/reg/2016/679/art_5
owner = Privacy Officer
1 law2 annotationcatalog

Sensitivity and retention

A confidentiality tier and a retention period on each type, the period stored as an ISO 8601 duration.

Customer: Protected · P7Y
1 policy7 maskingcatalog

Mappings to physical data

Role paths bound to columns in external catalogs, which gives the source side of lineage.

\Customer\City →
crm:srv\crm\This email address is being protected from spambots. You need JavaScript enabled to view it._name
6 mapping7 columnslineage

Every name, in every language

Anything that has a name can carry it in each model language: types, roles, readings, constraints, paragraphs, concepts. The law can stay in Dutch while systems and agents work in English.

nl  Klant woont in Plaats
en  Customer lives in City
1 law language3 SKOS labels6 schemasAI answers

Versions and element lineage

Model versions, archives and Git history, and a globally unique identity on every element that records the model and version it came from. Links survive renames, merges and copies into other models.

Customer → Klant: same identity
origin: CRM model v14 · merged into DWH v3
lineage5 change historyversioned AI context

Open questions

Todos with bookmarks that point into the model, so doubts stay attached to the element they are about until someone answers them.

Are prospects customers?
casetalk://…/otft/Customer
3 terms5 facts

Imports, exports, artifacts

Read in from XSD, Turtle, XMI, FBM and ORM, and data catalogs. Generated out as SKOS, OWL, SHACL, FCO-IM RDF, DDL, Data Vault, XSD, TMDL, RegelSpraak, ArchiMate and more, through templates.

in:  XSD · TTL · XMI · FBM · catalogs
out: SKOS · OWL · SHACL · DDL · TMDL …
3467catalogAI context

A single source of definition is only single if everything that needs a definition lives in it. Spread the same content over a glossary tool, a rules repository, a data catalog and a spreadsheet of mappings, and each copy drifts on its own schedule. Kept in one model, a rename, a new constraint or a changed retention period reaches the terms, the shapes, the schemas, the catalog and the AI context in the same step.

↓ Vertical: meaning

Law and policy are annotated and identified, their terms defined, their norms written as testable rules, and those rules expressed over fact types. Each row adds precision and keeps a reference to the row above.

→ Horizontal: data

Data moves from the source system through messages and APIs into integration, a knowledge graph and finally reports and agents. Each hop changes the shape, but the facts stay the same.

+ Where they cross

The fact model spans every system. Each logical schema is generated from it or mapped to it, so a mapping between two systems is a mapping between two shapes of the same fact type.

↑ Back up

Traceability runs the other way: from a value to its column, its fact type, and through the rules, terms and articles behind it. Catalog and lineage records make those paths queryable.

The semantic layer for AI

An LLM or agent does not read the grid row by row. It gets a slice of it as context, through MCP, a knowledge graph or a BI semantic model. Whether its answers can be trusted depends on two things: what happens to that slice when something changes, and whether it holds enough to answer without guessing.

When something changes

ChangeContext written by handContext generated from the model
Retention policy goes from 7 to 5 yearsWiki pages, prompts and embedded documents still say 7. The agent answers 7 with confidence, and nothing flags the old text.The rule, its DMN table and its verbalisation are regenerated. The context carries model version and valid-from date, so the agent answers 5 and can say since when.
CRM renames city_nameGenerated SQL and examples point at a column that no longer exists, or that now means something else.Only the CRM mapping of the fact type Residence changes. The agent still asks for the fact, and the mapping resolves it.
A new term appears in the businessThe agent meets an unknown word and fills the gap with general knowledge.The term has no concept and no fact type yet, so the gap shows up as missing coverage before anyone asks.
A source system is replacedEvery prompt, notebook and RAG index that mentions the old system needs to be found and updated.The new system maps to the same fact types. The context the agent sees does not change at all.
A question arrives in DutchThe context is in English, so the agent translates the terms itself and may pick a word the law does not use.Every name exists in each model language, so the agent answers with the model's own Dutch terms, the ones the law and the business agreed on.
A model is merged into anotherCopied definitions lose their origin, and nobody can tell which version an answer came from.Each element keeps its identity and records the model and version it came from, so answers stay traceable across merges.

How rich is rich enough

Each step adds something the AI can do and removes a class of wrong answers. A glossary alone is the most common semantic layer, and the least trustworthy.

  1. TermsRecognises the words.Still guesses how they relate, and which "city" is meant.
  2. Fact types with readingsKnows what connects to what, in sentences it can quote.Still invents cardinality: "customers and their cities".
  3. ConstraintsKnows a customer has one city, which values are allowed, what identifies what.Still unsure whether its reading of the model matches reality.
  4. ExamplesSees "C042 lives in Utrecht": real populations remove ambiguity and anchor answers.Can explain, but cannot fetch current data.
  5. Mappings and catalogKnows where each fact lives and queries it, instead of guessing at columns.Cannot say why a rule applies or since when.
  6. Rules, provenance, versionsCites rule, term and article, and knows which version it answers from.This is the level at which an answer can be checked.

Trust is tested, not declared

Keep a fixed set of test questions whose answers follow from the example population. Run them after every model change, the way unit tests run after every code change. Include questions the AI must refuse.

Question to the agentExpected answerWhat it tests
Where does C042 live?Utrechtexamples, mapping
Can a customer live in two cities?No: one City per Customerconstraints
Whose data must be deleted before 1 June 2026?C042, due 2026-03-14 under RP-07 v3, GDPR art. 5(1)(e)rules, provenance
After the policy change: how long do we keep customer data?5 years since RP-07 v4; 7 years before thatversions
What is C042's credit score?Not in the model; no answerboundaries, refusal

Coverage can be measured before any question is asked: how many terms have a definition and a source, how many fact types have readings and examples, how many columns map to a fact type, and how many rules cite an article. Low coverage predicts guessing. In CaseTalk these figures come from the model itself, and the MCP server serves the same model to the agent.

Built in: the AI works on the model, not beside it

CaseTalk does not only serve context to an AI. The AI can take part in the modeling itself, on the same single source as the human modeler.

Integrated LLM

A modeling assistant inside the tool

Chat and a modeling coach in CaseTalk, on the provider you choose: OpenAI, Azure OpenAI, Claude, Gemini, or a local Ollama model when data may not leave the building. DeepL for translating names and readings into other model languages.

MCP server

Full agentic access for any MCP client

Around sixty tools let an agent read and change the model: expressions, types, roles, constraints, populations, paragraphs, transactions, mappings, custom attributes, refactoring, diagrams, todos and quality checks. The Portal serves published models over MCP for read-only use.

add_expressions · add_constraint · population
add_paragraph · transactions · add_mapping
refactor · model_quality · todos · diagram
Same rules for agents

An agent edit is a model edit

Changes made by an agent pass through the same verbalisation, constraints, quality rules, undo and versions as a change made by hand. Edits ask for consent first. The context an agent reads is the model it writes to, so nothing has to be synchronised afterwards.

  1. Readparagraphs, documents, existing schemas
  2. Proposeexample sentences in the experts' words
  3. Qualifyinto types, roles and constraints
  4. Confirmreadings and populations with the experts
  5. Checkmodel quality and the test questions
  6. GenerateSKOS, OWL, SHACL, DDL and the AI context

The agent drafts and the expert decides. Every step leaves the model in a state that can be read back as sentences, which is what keeps agentic modeling checkable.

Worth it, or not

The grid costs upkeep, and links maintained by hand go stale. Choose the rows that answer questions you actually get. Two things decide it: how many systems share the data, and how many rules come from outside (law, contracts, audit).

Few systems · few outside rules

A good schema is enough

One application, its own data, little regulation. Model the facts if it helps the conversation, then build. The upper rows would cost more than they return.

rows 5–7
Many systems · few outside rules

Terms and facts as the integration hub

The pain is mappings and drift between systems. A shared vocabulary and fact model replace pairwise mappings. Legal annotation can wait.

rows 3, 5–7 + catalog
Few systems · many outside rules

Traceability first

The pain is proving compliance and explaining decisions. Link articles, terms and rules to the facts. There is little to integrate yet.

rows 1–7
Many systems · many outside rules

The whole grid

Government, finance, infrastructure. Every rule change and every audit question crosses both rows and columns. This is where the links pay for themselves.

rows 1–7 + catalog + lineage

Upkeep stays low only when the lower rows are generated from the fact model rather than maintained beside it. That is the role CaseTalk plays here: SKOS, OWL, SHACL, DDL, XSD and TMDL come from one validated model, so the links come with them.

Standards on this poster ELIAkoma NtosoJuriConnectWetsanalyseFLINTODRLSKOSSBVRRegelSpraakDMNSHACLFCO-IMOWL 2RDF 1.1XSDData VaultR2RMLDCAT 3PROV-OMCP