Skip to content

Link tissue and system classes to UBERON and import the UBERON slice - #151

Merged
KrishnaTO merged 2 commits into
mainfrom
claude/uberon-tissue-systems-linking-1f66a5
Oct 16, 2026
Merged

KrishnaTO merged 2 commits into
mainfrom
claude/uberon-tissue-systems-linking-1f66a5

Conversation

@KrishnaTO

Copy link
Copy Markdown
Owner

Do not merge until KrishnaTO/ARI-metadata-manager can load the import. The new owl:imports IRI doesn't resolve on the web. owlready2 fails with Cannot download unless ontologies/ is on onto_path, and deploy/update-ontology.sh syncs only ari_t1d.owl. If this lands first, the next ontology sync breaks the live editor.

What

  • notebook/uberon-mapping/uberon_mapping.tsv: curated mapping of the 26 ARI classes under Multicellular anatomical structure (the classes targetsTissue individuals are typed by) to UBERON, release 2026-10-01.
    • 21 exact.
    • 3 no term: Systemic, Metabolic System, All. They stay ARI classes.
    • 2 not linked: the root, which also holds the no-term classes, and Pancreatic beta cell, a cell type that keeps CL:0000169.
  • build_uberon_import.py <data/2-databases>: checks every ID and label against uberon-basic.obo, then writes:
    • ontologies/ari_uberon.owl: the import slice, 61 UBERON terms (the mapped terms plus all their is_a ancestors) with labels, definitions and parents.
    • ontologies/ari_t1d.owl: an owl:imports of the slice. Each mapped class gets rdfs:subClassOf <UBERON term> and ARI_ID set to the UBERON CURIE. Only 3 classes had a UBERON ID before.

Why subClassOf, not equivalentClass

ARI's tree uses subClassOf to mean "part of" (Pancreas ⊑ Endocrine system, Islet ⊑ Pancreas). It also puts Blood and every system directly under multicellular anatomical structure. UBERON's is_a disagrees with this in nine places; for example, blood is a fluid in UBERON. An equivalence would turn those ARI placements into claims about UBERON's own terms. This PR leaves the ARI tree unchanged. Related: #147 (tissue tree parents), which this PR does not fix.

Verified

  • Loaded through the app's OntologyService, with ontologies/ on onto_path:
    • get_tissue_hierarchy() is identical to main apart from the new ari_id values.
    • get_tissues() is identical (23 tissues).
    • Tissue_* individuals now reach the UBERON terms, and saving keeps the import and the links.
  • Without onto_path, loading fails as described above.
  • validate_mappings.py --since main: 0 errors, 0 warnings.
  • Re-running the build changes nothing.

🤖 Generated with Claude Code

KrishnaTO and others added 2 commits October 16, 2026 14:43
Diseases point at tissue regions (targetsTissue) typed by free-standing ARI classes, so
nothing tied "Nervous System" or "Skin" to a standard anatomy vocabulary.

- notebook/uberon-mapping/uberon_mapping.tsv: curated mapping of the 26 classes under
  Multicellular anatomical structure; 21 exact UBERON terms (release 2026-10-01), Systemic,
  Metabolic System and All have no term, the root and beta cell (CL) are left unlinked.
- build_uberon_import.py validates the TSV against uberon-basic.obo and writes
  ontologies/ari_uberon.owl (61 terms: the mapped ones plus their is_a ancestors).
- ari_t1d.owl imports the slice; each mapped class gets rdfs:subClassOf its UBERON term and
  the UBERON CURIE as ARI_ID. subClassOf, not equivalentClass, because ARI's tree uses
  subClassOf for part-of and disagrees with UBERON's is_a in nine places.

The editor must put ontologies/ on owlready2's onto_path and sync ari_uberon.owl before this
merges, or loading fails on the unresolvable import.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…systems-linking-1f66a5

# Conflicts:
#	changelog.md
@KrishnaTO
KrishnaTO merged commit df9583b into main Oct 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant