Skip to content

Ontology Shape reference

The warmhub-data/ontology component (2.0.1) is the installable field-level contract. It owns the eight method Shapes below and seeds no repository content. This page explains their doctrine and well-known names; where field metadata is needed for a write, read the installed Shape.

Field types use the platform’s Shape vocabulary; ? marks optional. Every reference field is wref-typed (see anti-pattern 11), and where the target is a shaped Thing, constrain it to the target Shape{"type": "wref", "shape": "Source"} — which the platform enforces against the target’s resolved type at write. A Shape target has no resolved type, so Shape-referencing fields like requiredConcepts stay unconstrained.

These specifications are the Shapes as they should be committed — put these descriptions in the Shape and field descriptions so the repo teaches its own ontology vocabulary.

Thing. One active charter per repo — the constitution of this repo’s ontology. Because it is a singleton, it has a fixed, well-known name: OntologyCharter/ontology/charter — any agent can fetch it in any repo without discovery.

FieldTypeDescriptionExample
missionstringWhat this repo’s ontology represents and for whom (the audience belongs in the mission; per-question personas live on the questions) — one paragraph a reviewer can test proposals against.”Canonical identity and regulatory knowledge for US public water infrastructure — for the engineers, analysts, and agents who compose beliefs over it.”
nonGoalsstring[]What this ontology deliberately is not. As load-bearing as the mission.["Utility finance and rates", "Hydraulic process modeling"]
commitmentsstring[]Binding design rules (identity, epistemic, temporal, layering). A proposal that violates one requires an OntologyDecision, not a silent exception.["Evaluate established domain identities before minting alternatives; never assume or reject source identity categorically"]
dependsOnwref[]?Upstream ontologies this repo composes over — each entry the canonical wref of an upstream release Set (preferred: pins the exact contract versions depended on, like a lockfile) or an upstream charter. Dependencies, never membership: this charter binds only its own repo.[wh:pub/us.environmental.epa-npdes/Set/ontology/release@v4]

Thing. A question the ontology must answer — the unit of scope, evaluation, and acceptance. The deletion test runs against these. Naming: CompetencyQuestion/ontology/{domain}/{id}.

FieldTypeDescriptionExample
questionstringThe question, phrased as its persona would actually ask it — including the decision it feeds, where that matters.”Which NC wastewater facilities show recurring warm-season ammonia exceedances — and on what evidence?”
personasstring[]Who asks it.["water-practice lead", "market analyst"]
requiredConceptswref[]The Shapes this question depends on — the deletion-test receipts. A Shape no question cites does not ship.[Facility, Measurement, PermitLimit, PerformancePattern]
temporalSemanticsstring?Observation window, seasonality, as-of semantics the answer must honor.”Warm season = May–Sep; windows 2022–2025; answer as-of latest complete quarter”
provenanceRequirementenum? (none, source-level, artifact-hash-level)How deep the answer’s pedigree must reach to count as answered.artifact-hash-level

Assertion, about a Shape this repo owns. The semantic contract governing a type, version-bound to the exact Shape revision it governs. Naming: SemanticContract/ontology/{type}.

FieldTypeDescriptionExample
definitionstringWhat the concept is, in domain language and, when adopted, the established authority’s terms.”A facility, site, or place of environmental interest identified under the reviewed EPA FRS contract”
identityTeststringWhen do two records refer to the same one of these? The heart of the contract — most ontology failures are identity failures.”Same EPA FRS Registry ID under the reviewed FRS lifecycle and correction rules”
examplesstring[]?Things that are this concept.["FRS Registry ID 110012345678"]
counterexamplesstring[]?Things that look like this concept and are not under the adopted authority contract.["A linked NPDES program record", "A permit held by the facility"]
lifecycleNotesstring?How identity begins and ends, including adopted authority correction, merge, split, reuse, and succession behavior.”Follow reviewed FRS correction, merge, and split semantics; display-name or program-link changes preserve identity”
lifecycleStatusenum (candidate, experimental, approved, promoted, deprecated)Contract maturity; consumers read this before depending.approved

Which questions a type serves is not stored — it is the backlink query over CompetencyQuestion.requiredConcepts. Never store what the graph already encodes.

Assertion, about a predicate Shape this repo owns. The relationship’s ontological metadata — everything a writer or reader needs that does not belong on the predicate Shape’s field list. Naming: PredicateDeclaration/ontology/{predicate}.

FieldTypeDescriptionExample
subjectPatternstringName-glob for the relationship subject (Arc from / first Bond end).Organization/identity/**
objectPatternstringName-glob for the relationship object (Arc to / second Bond end).Facility/identity/**
forwardLabelstringSubject→object reading.”owns”
inverseLabelstringObject→subject reading.”is owned by”
subjectFormenum (arc, bond)Directed or symmetric relationship subject.arc
subjectNameRecipestring?Deterministic recipe for naming the Arc/Bond. The platform never converges independent writers; this recipe is what makes them mint one relationship subject instead of two. State what happens on member rename.Arc/identity/rel/{subject-last-segment}--{object-last-segment}Arc/identity/rel/town-of-millbrook--millbrook-wrf
structuralCardinalityenum (one:one, one:many, many:one, many:many)Across all modeled history.many:many
concurrentCardinalityenum? (same values)During overlapping valid time — a different question (joint ownership is real).one:many
epistemicClassenum? (source-claim, normalized-state, binomial-proposition)Which kind of claim this predicate makes. Never collapse the three into one Shape.normalized-state
prohibitedSemanticsstring[]?Meanings this predicate must not be used for (Ownership is not operation, not permitteeship).["operation", "permitteeship"]
antiInferencesstring[]?The seductive shortcuts agents must not take. Put these where agents will read them.["permit-issued-to does not imply ownership"]

Whether instances carry valid time is visible from the predicate Shape’s own fields; evidence expectations belong in the Shape’s field constraints and description.

Assertion, about a Shape this repo owns. The namespace contract for a Shape’s Things. Naming: NamingContract/ontology/{shape}.

FieldTypeDescriptionExample
nameTemplatestringThe name template for this Shape’s Things.Facility/identity/epa-frs/{registry-id}
segmentSemanticsstring[]What each segment means and why it is where it is (leading segments = the dimensions agents narrow by; layer segment = cross-shape scoping).["identity — the layer; scopes globs and tokens", "epa-frs — adopted identity authority", "registry-id — authority-managed key"]
exampleNamesstring[]Enough real examples that an agent can infer the convention and predict nearby Things (depth included).[Facility/identity/epa-frs/110012345678]
globsstring[]?The subtree selections this namespace is designed to serve — the same vocabulary scopes queries, subscriptions, and tokens.[Facility/identity/epa-frs/**, */identity/**]
identityStabilityTeststringWhich real-world changes must not falsify a name. If an identity-preserving change breaks the name, the contract is wrong. (No-relationships-in-names is a global rule, not per-shape configuration.)”FRS display-name, address, owner, and program-link changes must not break the Registry ID name; follow reviewed correction/split/merge semantics”

Thing. An adversarial real-world case, pointing at the live data that models it. Naming: GoldenCase/ontology/{slug}.

FieldTypeDescriptionExample
titlestringThe case in a phrase.”Several program records, one FRS identity”
narrativestringThe real-world situation, precisely why it is adversarial (which identity test or cardinality assumption it attacks), and what passing looks like. The review question is always the same: is the ontology lying?”Linked NPDES and state program records attack the temptation to mint private facilities. Passing: both resolve to the authority-managed FRS identity while their source claims remain distinct.”
exemplarWrefswref[]The live Things and Assertions modeling this case — the fixture is production data.[Facility/identity/epa-frs/110012345678, RefersToFacility/identity/epa-npdes/NC0071234]

Thing. A deliberately open or explicitly resolved consequential design decision. Create one only when a meaningful alternative was considered, the rationale will matter later, the choice could plausibly be revisited, and concrete settling or reopening evidence can be named. Routine fields, implementation choices, profiled source facts, and conclusions forced by accepted contracts do not earn decision Things. Unresolved-on-purpose beats silently-inconsistent. Naming: OntologyDecision/ontology/od-{id}.

FieldTypeDescriptionExample
titlestringThe decision in a phrase.”Pump stations: Facilities or components?”
questionstringWhat is actually being decided.”Do pump stations get their own Facility identity, or ride as components of the works they feed?”
optionsstring[]The candidate answers, with their trade-offs.["Own Facility (can hold permits)", "Component of parent works"]
currentLeanstring?The working position, if any.”Own Facility”
settlingEvidencestring?What observation or experiment would settle it — the decision’s exit criteria.”Whether any NC pump station holds its own NPDES permit”
statusenum (open, resolved, superseded)Lifecycle.open
resolutionstring?The answer and its rationale, once resolved.

A release is a named, revisable Set with a fixed, well-known nameSet/ontology/release, a singleton like the charter — whose members are the repo’s current contract assertions (SemanticContract, PredicateDeclaration, NamingContract), each about-bound to the Shape version it governs. Create it only when those contracts form the first usable release; never create a charter-only placeholder. Each revision of the Set is one release in that repository: one durable identity whose version history is the repository-local release history. A fresh repository initialized directly to today’s reviewed state creates Set/ontology/release@v1; an existing repo continues from its actual current version. Contracts-as-members captures both schema versions and contract versions; downstream consumers pin dependsOn to a specific release version.

Repository-local identity and portable semantic comparison are orthogonal. If tooling computes a deterministic digest of a reviewed release bundle, equal digests may attest that two repositories carry equivalent contract content, but the digest neither replaces either release wref nor synthesizes its history. No portable digest field belongs in the shared component until a demonstrated consumer requires one.

Assertion, about a CompetencyQuestion. The claim that a specific release answers a specific question. Binomial and attributed — independent evaluators may disagree, and Veritas consensus over evaluations is meaningful. Naming: CompetencyEvaluation/ontology/{release-version}/{question}.

Evaluation is ex-post, by construction. A release must exist before anything can reference it, and shape versions cannot be staged — so the sequence is always: revise contracts → revise Set/ontology/release (a new release) → evaluate against it. A failing evaluation is not a blocked release; it is a recorded fact about this release and a fix in the next one — releases are cheap. The gate is on adoption, not on release: consumers pin dependsOn to releases whose evaluation record passes the questions they care about.

FieldTypeDescriptionExample
releasewrefThe release evaluated — Set/ontology/release pinned to the version under test (wref members and fields always pin; unpinned resolves to latest at write). Backlinks make “all evaluations of release N” one query.Set/ontology/release@v3
passedbooleanDid the release answer the question within its provenance requirements?true
evaluatorstringThe agent or human who ran the evaluation and stands behind it.evaluate-ontology/1.2 (agent)
evaluatedAsOfstringISO timestamp of the evaluation run.2026-07-01T04:00:00Z
queryExecutedstringThe concrete query or traversal used — the evaluation must be reproducible.”reverse-about: PerformancePattern/water/** where patternClass=recurring-warm-season-elevation → Facility”
resultDigeststring?Short digest of the result that satisfied (or failed) the question.”14 facilities; every pattern traverses to a DMR artifact hash”
notesstring?Scale caveats, cohort scope, re-run triggers.”NC cohort only; re-run when a new DMR quarter lands”