Repository navigation
Split the ontology into core, disease, symptoms, anatomy and biomarkers modules - #157
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ontologies/ A rename-only commit lets git follow both files' history through the module split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs modules ari_core.owl now holds the seven key classes under three new umbrella classes (Disease, AnatomicalEntity, Biomarker) and every property declaration; ari_anatomy.owl the 25 tissue/system classes and 23 Tissue_* individuals; ari_biomarkers.owl is an empty module so the import graph is final; the SYMP terms move out of ari_symptoms.owl into the generated ari_symp.owl slice, and the ARIS root classes go under Symptom. ari_disease.owl imports the four modules and the catalog maps every import to its file. symptomConcept becomes sharedConcept on all 2,248 links. What the two TSVs held that the OWL did not moves into it: uberon Notes as rdfs:comment, and decided-none as ARI_NoConcept (46 "not a symptom" individuals, 5 tissue classes). notebook/ontology-modules/split_ontology.py did the split and is kept for the record; robot diff of old vs new content shows only these intended changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With CRLF the version string carries a trailing CR, which makes curl reject the ROBOT download URL and breaks tools/format-owl.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ies only in core, one module per subject The validator now reads the five ARI-owned modules instead of ari_t1d.owl and the symptom_mapping.tsv table. A Symptom's sharedConcept is checked against the label/altLabel lookup over ari_symptoms.owl, ARI_NoConcept records a decision not to link, only ari_core.owl may declare properties, no subject is described in two modules, and anatomy classes must link UBERON or say why not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
symptom-concept-mismatch now sits on both the link and the label line, symptom-concept-repeated on every link line, symptom-decided-and-linked on the ARI_NoConcept line and each link line. A PR that only repoints or adds a link, or only adds ARI_NoConcept, was filtered out because the label line was unchanged. When ari_symptoms.owl differs from the base, every symptom link finding is kept, since a label moving between classes changes what each link should be without touching a disease line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…owned modules build_uberon_import.py now reads the UBERON links in ari_anatomy.owl and writes only ari_uberon.owl. build_symptom_mapping.py is renamed build_symp_import.py and reads the SYMP and HPO links in ari_symptoms.owl, writes only ari_symp.owl; its report-writing half moves to a separate script. Both stop on a linked term missing or obsolete in the release. The links are curated in the modules, not generated into them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….owl symptom_mapping.tsv is retiring: the OWL modules are now the record of every symptom mapping. build_symptom_report.py rebuilds the Symptoms and Symptom Mapping sheets from the ARIS classes (labels, altLabels, SYMP/HPO matches, parents), the ari_symp slice's labels, and the Symptom individuals' ARI_NoConcept and hasSymptom links. hp.obo supplies HPO labels and symp.owl the release order of multi-parent SYMP cells. Strings the ontology does not know keep their existing cells. The regenerated workbook is cell-for-cell and hyperlink-for-hyperlink identical to main's; only openpyxl's re-save changes the bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… at the modules Nothing reads the two mapping TSVs any more: the symptom concept links and UBERON judgments live in ari_symptoms.owl and ari_anatomy.owl. Delete them and repoint the scripts from ari_t1d.owl to ari_disease.owl. compare.py also loads ari_anatomy.owl from the disease file's folder, because the Tissue_* individuals that targetsTissue points at moved there; report 10 is cell-for-cell identical to the one built from main. Report 12's legend now says ari_core.owl declares the properties. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…og entry Rewrites the symptom and UBERON READMEs now that the OWL modules, not the retired mapping TSVs, hold the judgments (how to map a new symptom string or link a tissue class, the slice builders and the report script). Adds notebook/ontology-modules/README.md (file table, Protege catalog, owlready2 onto_path, which tool writes which file). README, CLAUDE.md and the data READMEs now name ari_disease.owl and the module set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oConcept values concept-label-ambiguous and concept-id-repeated were reported only on the later class, so a PR adding the duplicate to an earlier class left the finding on an unchanged line and --since dropped it, while the app cannot load an ontology with an ambiguous label. Both are now reported on the line of every class carrying the string, and kept unscoped when ari_symptoms.owl changed. New no-concept-value error: ARI_NoConcept must be exactly "not a symptom", "no term" or "not linked". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…RON linking steps build_symptom_report.py now strips class labels and altLabels as the app and validator do (report 4 sheets stay cell-identical to main). The build blocks in both mapping READMEs run every line from the repo root and use wsl for the formatter. Linking a tissue class now says to set ARI_ID to the UBERON CURIE, which the editor's tissue tree shows and nothing generates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 25, 2026
# Conflicts: # changelog.md # notebook/master-list-comparison/import_columns.py # notebook/master-list-comparison/import_gaps.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Project 1 of the ontology modules design (#153):
ontologies/ari_t1d.owlis split into modules, and the OWL files become the only record. Plan:docs/superpowers/plans/2026-10-25-ontology-modules-split.md.Merge only together with KrishnaTO/ARI-metadata-manager#251, at a confirmed cutover (staging rehearsal first).
What changed
ari_core.owlholds every property (103) and the key classes, under newDisease/AnatomicalEntity/Biomarkerumbrella classes.ari_disease.owlis the renamed disease file. It imports core, symptoms, anatomy and biomarkers.ari_anatomy.owlholds the 25 tissue classes and the 23Tissue_*individuals. The UBERON notes are nowrdfs:comments.ari_symptoms.owlmoves in fromnotebook/.ari_biomarkers.owlis empty for now.ari_symp.owlis a generated SYMP slice.catalog-v001.xmlresolves every import.symptomConceptis renamed tosharedConcepton 2,248 Symptom individuals.ARI_NoConceptmarks 46 Symptom individuals as "not a symptom", 3 tissue classes as "no term", and 2 tissue classes as "not linked".validate_mappings.py):ari_symptoms.owl.sharedConcepttarget existsARI_NoConceptvalues are validARI_NoConcept--since, a change toari_symptoms.owlre-checks every symptom link.symptom_mapping.tsvanduberon_mapping.tsvare deleted. Every script path now names the modules..gitattributeskeepstools/robot.versionLF, because CRLF brokeformat-owl.shon Windows.Verification
ARI_NoConcept, the tissue comments and the new property declarations.format-owl.sh --check ontologies/*.owlpasses.dxcode-without-snomedwarnings, on the full audit and with--since main. Every new check was proved with a deliberately injected fault.compare.py) and report 12 give the same cells before and after.OntologyService: 23 tissues, a 26-class tissue tree, and all 2,248 links reproduced by the app's lookup.ari_disease.owlin Protégé fromontologies/still needs a manual check.Known, not fixed here
notebook/research-gaps/build_research_gaps.pyand theimport_*.pyone-offs assume relative#IRIs. They have reported 0 diseases since the canonical layout landed (Canonical OWL layout: ROBOT formatter, pre-commit hook and CI check; validator reads XML #154). This predates this branch; tracked separately.disease_hierarchy.csvand the proposed-hierarchy OWL still mentionari_t1d.owluntil they are rebuilt.🤖 Generated with Claude Code