HCMO is an ontology for home-cage monitoring of laboratory animals. It models monitored enclosures, biological subjects and experimental groups, the environment and its measurements, observations and results, and the sensors, hardware, and software that produce the data — under the MAPP framework (Monitoring and Analytics for Physiological Processes). The project ships as a standalone, tool-consumable package: a stable release manifest, modular Turtle sources, generated distributions, SHACL shapes, competency queries, and a JSON-LD context.
| Ontology IRI | https://w3id.org/hcmo/ontology/hcm |
| Base namespace | https://w3id.org/hcmo/ontology/hcm# |
| Module sub-namespaces | …/hcm/bio#, …/hcm/env#, …/hcm/obs# |
| Version | 0.0.1 (versionIRI …/hcm/0.0.1) |
| Prefix | hcm |
| License | CC BY 4.0 |
| Release manifest | hcmo.yaml |
The release manifest
hcmo.yamlis the contract that downstream tools (e.g. thehcmo-kgqa-labsync layer) read. Its shape is treated as an API and kept stable across releases.
hcmo.yaml # release manifest (name, version, namespace, modules, dist, shapes, queries, examples)
ontology/
modules/ # hand-authored modular sources
hcm-core.ttl # core terms + owl:Ontology header (attribution)
hcm-bio.ttl # subjects, experimental groups (…/hcm/bio#)
hcm-env.ttl # environment & measurements (…/hcm/env#)
hcm-obs.ttl # observations & results (…/hcm/obs#)
context.jsonld # JSON-LD context for app developers
legacy/ # previous HCMO 1.0.0 ontology (retained, not merged)
dist/ # GENERATED — never hand-edit
hcmo.ttl # merged graph, canonical/sorted Turtle (reproducible)
hcmo.owl # merged graph, RDF/XML
hcmo.json # merged graph, JSON-LD
profile.json # flat term inventory {iri,label,comment} + counts
shapes/hcm-shapes.ttl # SHACL constraints
examples/ # ABox examples (abox-minimal, abox-edge-cases)
queries/ # competency_questions.yaml + cq-*.rq
tooling/ # build.py, validate.py, requirements.txt
docs/ # documentation (incl. MISSING-DEFINITIONS.md)
.github/workflows/ # validate.yml (PR gate), release.yml (tag → assets)
webapp/ # optional Node.js authoring/blueprint app
pip install -r tooling/requirements.txt
python tooling/build.py # regenerate dist/ + profile.json (idempotent, reproducible)
python tooling/validate.py # parse all TTL + pySHACL + competency queries (the CI gate)tooling/build.pymergesontology/modules/*.ttlintodist/using a canonicalized, sorted serialization, so re-running produces byte-identical output (clean diffs). Everything indist/is generated — edit the modules, not the artifacts.tooling/validate.pyparses every TTL, runs the SHACL shapes against the examples, and runs everyqueries/cq-*.rqagainst the merged graph; it exits non-zero on failure. It is the same check the PR workflow runs.
- Merged graph: import
dist/hcmo.ttl(ordist/hcmo.owl) into your triple store or reasoner. - Programmatic inventory: read
dist/profile.jsonfor the flat list of classes / object properties / datatype properties with labels, comments, and counts — ideal for sync layers and UIs. - JSON-LD apps: apply
ontology/context.jsonldwhen exchanging data. - Validation: use
shapes/hcm-shapes.ttlto validate payloads during ingestion; seeexamples/for conformant and intentionally-invalid ABoxes. - Everything is discoverable from
hcmo.yaml— resolve module, dist, shapes, queries, and example paths from there rather than hard-coding them.
This is an early release (0.0.1) derived from a Chowlk diagram export.
docs/MISSING-DEFINITIONS.md tracks the open data-quality work, including:
- Terms still lacking
rdfs:commentdefinitions (labels are present). - Chowlk placeholder/erroneous terms preserved as authored (
UNKNOWN:*,ns:Class2,xsd:boolean/xsd:integertyped as properties) — to be re-mapped or removed at the source. shapes/,examples/, andqueries/currently reference the legacy 1.0.0 term set and need re-authoring against the MAPP terms (competency queries return 0 rows until then).
Per project policy, missing labels and definitions are listed, not fabricated.
A Node.js app under webapp/ supports form-based authoring and a blueprint
checklist. From webapp/: npm install then npm run dev (serves on
http://localhost:3000); npm test runs the API/UI tests. The app predates the
MAPP reorganization and targets the legacy term set.
- Damien Huzard — 0000-0003-4820-7951
- Konstantin Todorov — 0000-0002-9116-6692
- Cyril Gilbert — ORCID: TBD
- Pierre Larmande — 0000-0002-2923-9790
- Gaoussou Sanou — ORCID: TBD
- Serge Sonfack — ORCID: TBD
- Antoine Tofano — ORCID: TBD
Attribution is also recorded on the owl:Ontology header (dcterms:creator,
using ORCID IRIs where known) and in CITATION.cff.
If you use HCMO, please cite it via CITATION.cff (GitHub's
"Cite this repository") or the DOI 10.5281/zenodo.18925285.
Released under CC BY 4.0.