Chubb Claims Adjudication Ontology — CHUBB-CLAIMS-ADJ-ONTOSPEC 1.0.0
Status Draft for SME validation — every gate, document association and sequence is a working hypothesis

The ontology for claim adjudication

Eighteen modules over a shared foundation, covering the adjudication of a General Liability or Auto claim from First Notice of Loss to post-settlement closure, together with the two processes that run alongside it: fraud detection and straight-through processing.

18
claims modules
22
subject areas
10 / 11
stages / decision gates
34 / 7
doc categories / high-value types
30
competency questions
23
reified agent roles
The central finding — SME session, 2026-07-31

The structured record says what was decided. The rationale for why — why coverage was reserved rather than denied, why the reserve is $1,000 and not $1,500, why the Guided Adjudication recommendation was rejected — exists only in the adjuster's file note.

An ontology that models only the structured layer inherits that blind spot. The decision-trace model is the part of this specification that closes it.

Out of scope
  • Workers Compensation tables (WC_*)
  • Underwriting, policy servicing, billing, reinsurance
  • The physical schema of CCS 5 or the CDS refined layer — those are sources, mapped upward, never lifted
Target profile
OWL 2 DL at design time, with an OWL 2 QL projection for runtime OBDA rewriting. Canonical Turtle; JSON-LD generated at the edge only.
Part 4

Layers and the eighteen modules

Each module answers a coherent cluster of competency questions and owns a coherent group of subject areas. Deliberately right-sized: not one blob, not a hundred shards. You never write into fnd/ or ins/ — mint in your own namespace and connect upward.

Layer 3 · meta misc/competency · resource/ samples — consume everything, nothing imports them
▲ imports
Layer 2b · claims New — this specification. evidenceadjudication → 15 concern modules → decision-trace
▲ imports
Layer 2a · ins IA-owned, import and subclass only — policy · claim · coverage · business
▲ imports
Layer 1 · fnd core · agreement · process ★ change request to IA · vendored skos org time prov dct
The one foundation change request
fnd/process/ does not exist yet. Claims, underwriting, policy servicing, billing and reinsurance all need the same shape: a case moves through states, driven by activities, gated by authority, producing artifacts. Until it lands, author against a shim at claims/process-shim/ (prefix pshim) with identical local names, and plan the migration as a MAJOR bump with dct:isReplacedBy on every shimmed term.
Filter by wave
{{ m.prefix }}: {{ m.name }}
wave {{ m.wave }}
{{ m.ns }}
{{ m.owns }}
SA {{ m.subjects }} stages {{ m.stages }}
Wave 1 — evidence, adjudication, decision-trace, intake, coverage-position, financial — is the thin vertical slice. It makes the two primary extraction targets answerable end to end: the coverage position rationale and the Guided Adjudication accept/reject rationale. Ship it, prove the competency questions green, then widen.
§4.4

The import DAG

Every edge runs upward; no path may return to where it started. Data may point back — a decision trace may reference a coverage position without coverage-position importing decision-trace — but imports may not.

{{ d.prefix }}
← {{ d.imports }}
lia → itm. Liability apportionment references at-fault parties and, for Auto, vehicles and drivers. itm imports only core and claim, never reaching sideways into lia. A shared concept belongs one layer down — propose it for fnd/core, do not smuggle it sideways.
stp → asg. STP routing produces queue assignments and system-generated tasks that asg already models, so asg must never import stp. STP's disposition governs which routing fires; the routing record itself is an asg term.
§1.3

Twenty-two subject areas, and where each lands

Every row of the Subject Areas — Use Case Map tab is assigned a home module. Nothing is dropped.

#
Use case
Subject area
Source tables
Readiness
Module
{{ s.n }}
{{ s.useCase }}
{{ s.area }}
{{ s.tables }}
{{ s.readiness }}
{{ s.module }}
On subject area 6. PERFORMER is described in the source as the strongest-validated entity in the ontology, confirmed across three independent data sources. Treat asg:Performer and the authority model as the anchor of the assignment module.
§3.3

Six shapes — choose before you write

Run every candidate concept through one question first: is this a genuine kind of thing, or a thing in a state, a thing playing a role, a value it holds, a part of something, or one particular thing? Almost every modelling error in this domain is one of those wearing the mask of a class.

{{ p.key }} {{ p.title }}
Test. {{ p.test }}
Model as. {{ p.model }}
{{ p.example }}

The role-reification triangle

Three parts: a role individual carrying core:roleProperty; the property the role realises; a role-filler class defined by a hasValue restriction on core:hasRole. Copy it exactly for every role.

asg:AdjusterRole  a core:AgentRole ;
    rdfs:label "Adjuster role"@en ;
    core:roleProperty asg:adjuster ;
    skos:definition "The role a social agent plays when assigned to handle a
        claim or coverage line. Not a kind of person — a party may hold it,
        relinquish it, and hold other roles simultaneously."@en .

asg:adjuster  a owl:ObjectProperty ;
    rdfs:label "adjuster"@en ;
    schema:domainIncludes claim:Claim, cvp:CoverageLine ;
    schema:rangeIncludes  core:SocialAgent ;
    rdfs:subPropertyOf core:isRelatedTo ;
    owl:inverseOf asg:isAdjusterFor .

asg:Adjuster  a owl:Class ;
    rdfs:label "Adjuster"@en ;
    rdfs:subClassOf core:SocialAgent ;
    owl:equivalentClass [ a owl:Restriction ;
        owl:onProperty core:hasRole ; owl:hasValue asg:AdjusterRole ] .
§5.6.2

Every role gets the triangle

None of these is ⊑ core:Person. The same person may be a claimant on one claim and a witness on another; an adjuster may become a supervisor; a law firm may appear on both sides across different matters. agr:PartyRole where the role is a contract party, core:AgentRole otherwise.

Role individual
Property
Filler class
Source
{{ r.role }}
{{ r.prop }}
{{ r.filler }}
{{ r.source }}
Part 5

Term inventory

No single concept left behind. Every concept named in the two workbooks appears exactly once, with its shape, IRI, module, definition, readiness flag and standard alignment.

Readiness
{{ resultCount }}
{{ active.prefix }}: {{ active.name }} {{ active.ns }}
{{ active.purpose }}
imports: {{ active.imports }} subject areas: {{ active.subjects }} wave {{ active.wave }}

Classes

{{ classCount }}
{{ c.term }} ⊑ {{ c.parent }} Primary extraction target
{{ c.def }}
aligns → {{ c.align }}

Object properties

all with declared inverses
Term
domainIncludes → rangeIncludes
subPropertyOf
Inverse
{{ o.term }}
{{ o.sig }}
{{ o.sub }}
{{ o.inv }}

Datatype properties

Term
Signature
Notes
{{ d.term }}
{{ d.sig }}
{{ d.note }}
Term-level inventory for this module sits in the part of the specification that was not included in the brief I received (it was truncated at §5.7). What is grounded is the module's namespace, prefix, purpose, subject areas, imports and build wave, shown above.
§5.3 · Part 10

The decision trace

Which evidence was consulted at which gate, what was referenced from it, what was recorded as a result, and why — plus the AI recommendation, the human override and the audit finding.

{{ t.step }}
{{ t.term }}
{{ t.desc }}

The unit: dtr:EvidenceUse

Exactly one row of the Decision Tracing template — a reified statement, n-ary, with a global IRI. Never a junction-table-shaped blank node, and never flattened to a datatype property.

res:evidence-use/CLM-1001/gate-3/police-report
    a dtr:EvidenceUse ;
    dtr:usedDocumentType     doctype:PoliceReport ;
    dtr:usageDisposition     evduse:Used ;
    dtr:informationReferenced "Narrative of the collision; cited party statements;
        officer's assignment of fault."@en ;
    dtr:informationRecorded   "Liability posture and the basis for reserving rights
        pending the recorded statement."@en ;
    adjmeta:validationStatus  adjmeta:DraftPendingSMEValidation .

res:decision-trace/CLM-1001/gate-3
    a dtr:DecisionTrace ;
    dtr:traceOf     res:decision/CLM-1001/coverage-position ;
    dtr:traceAtGate adj:CoveragePositionGate ;
    dtr:hasEvidenceUse res:evidence-use/CLM-1001/gate-3/police-report ;
    dtr:hasRationaleStatement [ a dtr:RationaleStatement ;
        dtr:recordedIn res:file-note-text/FN-88421-1 ;
        dtr:statementText "Rights reserved rather than denied because the
            late-notice condition is contested."@en ;
        dtr:extractionConfidence 0.82 ] .
Plan vs. execution is the single most-missed distinction here. adjstage:Investigation is a stage in a plan — one individual, shared by every claim. A stage execution is a prov:Activity — one per claim, with a start, an end, an agent and inputs. Confusing them makes "how long did investigation take on this claim?" unanswerable.
The anchoring pattern. Discrete, decision-bearing facts are extracted as typed assertions; the full text stays in the document, reachable by evd:DocumentAnchor. Never dissolve a document into a hundred properties, and never leave a decision-bearing fact locked in prose.
The 11 × 5–7 matrix itself is not in the brief I received
Part 10 and the per-gate document lists from the Decision Tracing tab were truncated. The model shape above is grounded in §5.3; the matrix contents are not, so I have not invented them. Send the tab (or Parts 6–18) and this section becomes an interactive gate × document-category grid with the SME correction column live.
§0.2 · §0.4 · §3.6

Guardrails

Unconstrained, a language model breaks an ontology in five characteristic ways. Each guardrail is not a style preference: violated, it produces a model that is wrong in a way a reasoner will faithfully propagate.

{{ f.name }}
{{ f.looks }}
{{ f.guard }}

Where each rule belongs

RDFS
Names and relates terms. Open world. A missing value is unknown. Cannot reject bad data. Infers a little.
OWL 2 DL
Defines meaning precisely. Open world. A missing value is unknown. Cannot reject bad data. Infers a lot.
SHACL
Validates data shape. Closed over targets. A missing value is a violation. Rejects bad data. Reports; changes nothing.
Pipeline order. Load and merge the modules → run the DL reasoner to materialise inferences → run SHACL over the reasoned graph. Meaning first, quality gate second. A shape validated against raw triples will miss every inferred type.
{{ r.rule }}
{{ r.why }}

Hard stops

#
Never
Instead
{{ p.id }}
{{ p.never }}
{{ p.instead }}
§0.1 · Appendix B

Open questions and gaps

Nothing flagged as an open SME question may be silently resolved. Each is emitted with skos:editorialNote and adjmeta:openQuestion true, and listed in the conformance report.

{{ q.term }} {{ q.owner }}
{{ q.text }}

Not in the brief I received

The pasted specification was truncated partway through §5.7. Everything below is referenced by the parts I do have but its content was not included, so it is absent here rather than guessed at.

{{ x.part }}
{{ x.title }}