Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ flowchart LR
| `commitment_extraction.py` | Pluggable LLM derivation of a customer commitment (promise + deadline) from a post; `Null` default, `ContextualOrchestrator` real impl |
| `temporal_expressions.py` | Pure Korean relative-time resolver for Global Ask (ADR 0150) |
| `ask_time_axis.py` | Event-time vs ingestion-time clock choice for that window (ADR 0202) |
| `ontology.py` | Loads the governed Turtle source tree (`lineageweave-kg.ttl` plus generated fragments), the formal OWL 2/RDFS/SKOS vocabulary for the Knowledge Graph's node/edge types (ADR 0004, ADR 0252) |
| `ontology.py` | Loads the governed Turtle source tree (`lineageweave-kg.ttl` plus generated fragments), the formal OWL 2/RDFS/SKOS vocabulary for the Knowledge Graph's node/edge types and source taxonomies (ADR 0004, ADR 0252, ADR 0255) |
| `ontology_neighborhood.py` | Bounded typed ontology/provenance neighborhood (ADR 0184); PostgreSQL stays authoritative, OWL subclass is not an instance edge |
| `ontology_source_cursor.py` | Opaque HMAC source-window continuation (ADR 0124); keyset pagination, never OFFSET |
| `period_report.py` | Fit GRM/GPCM on persisted IRT rows, FIPC-select, EAP-score a period (ADR 0003 slice 3; Bock & Mislevy, 1982) |
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ All notable changes to this project are documented here. Format follows

### Added

- The complete O*NET 31.0 Content Model Reference is now a deterministic
3,006-concept SKOS fragment with exact source IDs, names, descriptions, and
documented outline parents (ADR 0255). Its read model fails closed on
malformed hierarchy data; no occupation rating, person trait, score,
weight, or inferred crosswalk is introduced.
- The complete 2018 SOC hierarchy is now published as a deterministic
ontology fragment: 23 major groups, 98 minor groups, 459 broad occupations,
and 867 detailed occupations retain their official codes, titles, levels,
Expand Down
51 changes: 51 additions & 0 deletions docs/adr/0255-onet-31-content-model-ontology.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# ADR 0255: O*NET 31.0 content-model semantic layer

**Status:** Accepted
**Date:** 2026-08-27
**Extends:** ADR 0245, ADR 0248, ADR 0252
**Supersedes:** ADR 0248 decision 2 only, solely where it prohibits publishing
the complete O*NET vocabulary in LineageWeave IRIs

## Context

The high-level concepts in ADR 0245 cannot address most work-related
cognition, affect, behavior, requirements, activities, or context. O*NET 31.0
publishes 3,006 content-model elements with stable element IDs, names,
descriptions, and a documented outline hierarchy encoded in those IDs.
ADR 0248 preferred external O*NET RDF identifiers and prohibited a complete
local vocabulary. The version-pinned Content Model Reference is instead the
reproducible authority adopted here, so this later decision replaces only that
publication choice. ADR 0248's evidence-bound assertions, construct
separation, source-only cross-scheme links, and prohibitions on person-trait,
score, weight, equivalence, and causal inference remain normative.

## Decision

1. Publish all 3,006 Content Model Reference rows as SKOS concepts in a
versioned `:onet31ContentModelScheme`. These repository-case IRIs identify
the pinned 31.0 snapshot; they do not assert identity or equivalence with an
external O*NET RDF term.
2. Preserve `element_id`, name, and description verbatim. Derive
`skos:broader` only by O*NET's documented rule: remove the final
period-delimited outline segment. A missing parent fails generation.
3. Type each node by the six published root domains and, where present, the 18
published second-level branches. These types are navigation boundaries, not
psychometric scales or assertions about a person.
4. Keep Work Styles distinct from affective reactions and abilities distinct
from observed performance. Do not infer occupation ratings, person traits,
causal relations, weights, or crosswalks from this vocabulary.
5. Pin the exact O*NET 31.0 JSON artifact SHA-256
`db59c30e4240931edce59310f2747f5476f058984b55f58f72c6f29faa30186f`
and verify deterministic Turtle reproduction.

## Consequences

The semantic layer can address the complete published O*NET conceptual
vocabulary. Occupation-specific observations and the separately published
ability/skill/style-to-activity/context linkages remain provenance-bearing
data imports governed by later decisions.

## Reference

National Center for O*NET Development. (2026). *O*NET 31.0 database: Content
Model Reference*. https://www.onetcenter.org/dictionary/31.0/json/content_model_reference.html
1 change: 1 addition & 0 deletions docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ decision from them.
| [`WORKER_FUNCTION_TAXONOMY_REFERENCES.md`](../doctoring/WORKER_FUNCTION_TAXONOMY_REFERENCES.md) | [0232](0232-worker-function-taxonomy-in-the-published-ontology.md) |
| [`IO_OCCUPATIONAL_TAXONOMY_REFERENCES.md`](../doctoring/IO_OCCUPATIONAL_TAXONOMY_REFERENCES.md) | [0245](0245-io-occupational-taxonomy-in-the-published-ontology.md) |
| [`OCCUPATIONAL_CONSTRUCT_REFERENCES.md`](../doctoring/OCCUPATIONAL_CONSTRUCT_REFERENCES.md) | [0248](0248-occupational-construct-evidence-boundary.md) |
| [`ONET_31_CONTENT_MODEL_REFERENCES.md`](../doctoring/ONET_31_CONTENT_MODEL_REFERENCES.md) | [0255](0255-onet-31-content-model-ontology.md) |
| [`SOC_2018_HIERARCHY_REFERENCES.md`](../doctoring/SOC_2018_HIERARCHY_REFERENCES.md) | [0252](0252-complete-2018-soc-hierarchy.md) |

[0011](0011-prov-o-standard-relations.md) and [0065](0065-prov-o-provenance-boundary.md) cite the dated W3C PROV-O and PROV-DM Recommendations (https://www.w3.org/TR/2013/REC-prov-o-20130430/ and https://www.w3.org/TR/2013/REC-prov-dm-20130430/).
Expand Down
27 changes: 27 additions & 0 deletions docs/doctoring/ONET_31_CONTENT_MODEL_REFERENCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# O*NET 31.0 Content Model Reference evidence

This supporting note records the source governed by ADR 0255. It introduces
no architecture decision.

## Source and reproduction

- Official O*NET 31.0 JSON: `content_model_reference.json`
- Source SHA-256: `db59c30e4240931edce59310f2747f5476f058984b55f58f72c6f29faa30186f`
- Rows: 3,006
- Generated Turtle SHA-256: `d4f0e8bff1710dd360106c7325d4fb588951dbc28471f97ca71535749d8f3819`
- Parent contract: the O*NET data dictionary defines the period-delimited
element identifier as the content-model hierarchy; generation removes only
its final segment and fails when that parent is absent.

Reproduce with:

```bash
uv run python scripts/render_onet_31_content_model.py \
docs/ontology/data/onet-31-content-model-reference.json \
docs/ontology/onet-31-content-model.ttl
```

## APA 7 reference

National Center for O*NET Development. (2026). *O*NET 31.0 database: Content
model reference* [Data set]. https://www.onetcenter.org/dictionary/31.0/json/content_model_reference.html
Loading