obophenotype / obophenotype/uberon

Definitions vs axioms in the 2026-06-19 release: a tooth both inside the head and disjoint from it, three terms whose definition and axiom disagree, and 12 candidate `part_of` axioms

Open
#3,767 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Emacs Lisp
Stars
163
Forks
43
Avg merge
1d 17h
Merged PRs (30d)
5

Description

Hello, and thanks for maintaining Uberon. I ran a check over the 2026-06-19 release (uberon/releases/2026-06-19/uberon-basic.owl). Three kinds of thing came up that seem worth your attention. Finding A is one place where reading the definitions literally leads to a contradiction with a stated axiom. Finding B is three terms whose own definition and own axiom disagree. Finding C is twelve part_of axioms that the definitions state in prose but the release does not state as axioms. I would like your view on which side should give in A, and whether any of B or C is worth a change. Every line below is copied from uberon-basic.obo, so you can check each one with a grep. Terms I use are defined just below and sourced at the end.

Terms used. Each is a relation or an annotation from the release itself; I say what it is, where I read it, and why it matters here.

  • part_of. The release's own relation between a part and its whole. Found in the [Typedef] stanza for part_of: def: "a core relation that holds between a part and its whole", xref: BFO:0000050, is_transitive: true. Transitive means part of a part is part of the whole, which is what carries a tooth from a bone, through two arch skeletons, to the post-hyoid pharyngeal arch skeleton in Finding A. Every candidate in Finding C is a part_of line.
  • is_a. The built-in "is a kind of" relation of the OBO format: X is_a: Y means every X is a Y, so whatever holds of Y holds of X. It is why an axiom on calcareous tooth reaches down to ceratobranchial 5 tooth in Finding A, and it is the line in Finding B2 that makes otolith organ an organ.
  • mutually_spatially_disjoint_with. The release's own relation saying two classes never share a part. Found in its [Typedef] stanza: def: "A is mutually_spatially_disjoint_with B if both A and B are classes, and there exists no p such that p is part_of some A and p is part_of some B.", xref: RO:0002171. This is the axiom the two candidates in Finding A collide with: if a tooth is part of the head and part of the post-hyoid pharyngeal arch skeleton, this relation between those two says that cannot be.
  • status="pending" and exceptions="ZFA". Annotations written inside the braces on the disjointness line itself. status="pending" marks the axiom as not yet settled; exceptions="ZFA" says zebrafish anatomy (ZFA, the Zebrafish Anatomy Ontology, ids UBERON:2...) is a known exception. They matter because the tooth in Finding A is exactly a zebrafish term, so the release may already anticipate the collision, and the question becomes whether the definitions should say so.
  • source="...". Annotations naming which source ontology an axiom was taken from (ABA, EMAPA, ZFA, and others). Quoted verbatim so each line matches the file; in Finding B1 it shows the ventral placement came from ABA while the definition came from elsewhere, which is one way a definition and an axiom drift apart.
  • [Automatically generated definition]. A marker in a def: line saying the prose was produced from the term's logical definition, not written by a curator. It matters in Finding B3 because the generated prose asserts a parthood that no relationship: line in the term states.

What I did, in plain terms. Many Uberon definitions say that a structure is "part of" or "within" something, without a matching relationship: part_of line. I took each such phrase in a definition as a claim the ontology's axioms ought to support, and checked whether they do. Where they did not, I listed the missing axiom as a candidate and tested it against the release's own mutually_spatially_disjoint_with axioms. Finding A is the one candidate that failed that test. Finding B came up while checking definitions by hand. Finding C is the list of candidates that passed every test I could run; they still need a human who knows the anatomy.

Finding A: a tooth both inside the head and disjoint from it

The two candidate axioms.

  1. calcareous tooth (UBERON:0001091) part_of mouth (UBERON:0000165). This is the literal reading of the term's definition:

    def: "Skeletal element within the mouth (or in some species, upper part of the digestive tract) that is composed of dentine and is used in procuring or masticating food."
    
  2. mouth part_of head (UBERON:0000033). No definition states this directly. It came up as the single axiom that would let jaw region (UBERON:0011595) satisfy its own definition, since jaw region is stated part_of mouth and is defined as "A subdivision of the head that corresponds to the jaw skeleton ...". I treat it as a candidate, not as something the ontology says.

Why the two cannot both hold. Take ceratobranchial 5 tooth (UBERON:2000694), a zebrafish pharyngeal tooth. It is a calcareous tooth:

UBERON:2000694  is_a: UBERON:0001091 ! calcareous tooth

and by four stated lines it is part of the post-hyoid pharyngeal arch skeleton:

UBERON:2000694  relationship: part_of UBERON:2001239 ! ceratobranchial 5 bone
UBERON:2001239  is_a: UBERON:2001903 ! ceratobranchial 5 element
UBERON:2001903  relationship: part_of UBERON:2001229 ! pharyngeal arch 7 skeleton
UBERON:2001229  relationship: part_of UBERON:0005886 ! post-hyoid pharyngeal arch skeleton

If candidates 1 and 2 were both added, this tooth would also be part of the head (tooth in mouth, mouth in head). But the release says the post-hyoid pharyngeal arch skeleton and the head do not overlap:

UBERON:0005886  relationship: mutually_spatially_disjoint_with UBERON:0000033 {exceptions="ZFA", source="https://github.com/obophenotype/uberon/issues/378", status="pending"} ! head

So one zebrafish tooth would be inside the head and inside something disjoint from the head at the same time.

What I think is going on. Two things already point at this case. The disjointness axiom is marked status="pending" with exceptions="ZFA" and links to issue #378, and this tooth is a ZFA term. And the calcareous tooth definition already hedges: "or in some species, upper part of the digestive tract", which is exactly where pharyngeal teeth sit. The hedge is only in the prose, though. Anyone reading "within the mouth" as a rule, human or program, lands on the very case the pending exception marks.

My question. Which of these would you prefer?

  • (a) Nothing to change: this is the case the ZFA exception is meant to cover.
  • (b) Make the hedge structural, for example a subclass for oral teeth that carries part_of mouth, so the general calcareous tooth stays neutral.
  • (c) Use this as a concrete case for settling #378.

Finding B: three terms whose definition and axiom disagree

No proposal of mine is involved here. Each is one def: line against one stated line, in the same term or its neighbour.

B1. fundus striati (UBERON:0014605): the definition says dorsal, the axiom says ventral.

def: "The ventral portion of the dorsal striatum, linking the caudate nucleus and the putamen anteriorly (adapted from Wikipedia)." [NLX:144261]
relationship: part_of UBERON:0005403 {source="ABA"} ! ventral striatum

dorsal striatum (UBERON:0005382) and ventral striatum (UBERON:0005403) are both stated part_of striatum, and neither is stated part of the other. So the definition puts this term inside one sibling and the axiom inside the other.

B2. otolith organ (UBERON:0002518): the definition describes the particles, but the term is an organ.

def: "The crystalline particles composed of calcium carbonate and a protein which adhere to the gelatinous membrane of the maculae of the utricle and saccule (otolithic membrane)." [ISBN:0-683-40008-8, MGI:llw2, MP:0002894]
is_a: UBERON:0006585 ! vestibular organ

The release has a separate term for the particles, otolith (UBERON:0002280), whose definition places them inside this organ: "Acellular structure composed of calcium carbonate located in the otolith organ." Read together, the two definitions describe the same thing and only one of them is an organ.

B3. mesothelium of pleural cavity (UBERON:0003390): an auto-generated definition puts a lining tissue inside a fluid-filled space.

def: "A mesothelium that is part of a pleural cavity [Automatically generated definition]." [OBOL:automatic]
is_a: UBERON:0001136 ! mesothelium

The term carries no relationship: line at all, so the parthood exists only in the generated wording, and the whole it names, pleural cavity (UBERON:0002402), is defined as "The fluid-filled cavity that lies between the visceral and parietal pleurae." A lining being part of the gap it borders reads oddly to me; mesothelium itself is stated part_of serous membrane (UBERON:0000042), which is the sort of whole I would have expected.

Finding C: twelve candidate part_of axioms, for your judgement

Each of these is a parthood that a definition states in prose and the release does not state as an axiom. Each passed the disjointness check, and I read each one against the definition text by hand. I am not claiming any of them is correct; I am asking whether any is worth adding. The thirteenth candidate from the same list is calcareous tooth part_of mouth, which is Finding A.

proposed part_of where the definition says so
colon (UBERON:0001155) → abdomen (UBERON:0000916) abdomen def: "... contains the abdominal cavity and visceral organs ..."
cochlear duct of membranous labyrinth (UBERON:0001855) → cochlea (UBERON:0001844) its def: "An endolymph filled cavity inside the cochlea ..."
supramarginal gyrus (UBERON:0002688) → parietal cortex (UBERON:0016530) derived, not read: the gyrus is stated part_of parietal lobe, and parietal cortex is defined as the gray matter of the parietal region
vestibulocochlear nerve root (UBERON:0002731) → vestibulocochlear nerve (UBERON:0001648) its def: "Either of the two roots that come of the vestibulocochlear nerve."
musculature of shoulder (UBERON:0004476) → shoulder (UBERON:0001467) its def: "The collection of muscles that form attachments to the shoulder skeleton."
inguinal part of abdomen (UBERON:0008337) → abdomen (UBERON:0000916) its name, and its def: "The external junctural region between the lower part of the abdomen and the thigh."
infrahyoid muscle (UBERON:0008523) → musculature of neck (UBERON:0004465) its def: "... a group of four pairs of muscles in the anterior part of the neck ..."
jaw region (UBERON:0011595) → head (UBERON:0000033) its def: "A subdivision of the head that corresponds to the jaw skeleton ..."
Brodmann (1909) area 12 (UBERON:0013543) → frontal cortex (UBERON:0001870) its def places it in the frontal lobe
premotor cortex (UBERON:0016634) → frontal cortex (UBERON:0001870) its def: "... an area of motor cortex lying within the frontal lobe ..."; its sibling primary motor cortex (UBERON:0001384) already states part_of frontal cortex
longitudinal arch of pes (UBERON:0035133) → appendicular skeleton (UBERON:0002091) its def: "A curved region of the skeleton of the pes (foot) ..."
braincase and auditory apparatus (UBERON:3000050) → neurocranium (UBERON:0001703) its def: "The part of the skull that encloses the brain and surrounds the inner ear."

Two flags before you spend time on the table. First, four rows name a whole narrower than the one the definition literally mentions, because the narrower term is the one that made the reading come out right. They are longitudinal arch of pes (the definition says skeleton of the pes, the proposal says appendicular skeleton), braincase and auditory apparatus (skull vs neurocranium), and both cortex rows (frontal lobe vs frontal cortex). Those four are anatomy judgements, not mechanical readings, and I would rather you made them than I did. Second, the supramarginal gyrus row is not read from its own definition at all; it is derived from its stated lobe plus the definition of parietal cortex, and I have marked it rather than mixing it in.

What I am asking

  1. On Finding A: which of (a), (b) or (c)?
  2. On Finding B: are the three real, and should I open them as separate issues?
  3. On Finding C: are any worth adding, and would a pull request with the ones you accept be welcome?

Every line above is quoted from uberon-basic.obo; I can supply the exact grep for each on request.

Sources

  • The release: uberon/releases/2026-06-19/uberon-basic.owl, read as uberon-basic.obo (format-version: 1.2), sha256 b27618d347df171d0dbbfc6178217487b98b96424641b8c8b4ece77256e67a14. Every def:, is_a: and relationship: line above is quoted from it.
  • part_of, from the release's [Typedef] stanza: def: "a core relation that holds between a part and its whole", xref: BFO:0000050, is_transitive: true.
  • mutually_spatially_disjoint_with, from the release's [Typedef] stanza: def: "A is mutually_spatially_disjoint_with B if both A and B are classes, and there exists no p such that p is part_of some A and p is part_of some B.", xref: RO:0002171.
  • is_a, def:, relationship: and [Term] stanzas: the OBO flat file format, version 1.4 (owlcollab.github.io/oboformat).
  • The pending exception: https://github.com/obophenotype/uberon/issues/378, cited in the disjointness axiom's own annotation.
  • Pharyngeal teeth in zebrafish: the release's own ceratobranchial 5 tooth (UBERON:2000694) definition, "Tooth that forms on ceratobranchial 5 cartilage or bone." [ZFIN:curator].
  • ZFA: the Zebrafish Anatomy Ontology (ZFIN), one of the source= values on the axioms quoted above.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reported checks in uberon/releases/2026-06-19/uberon-basic.owl and matching lines in uberon-basic.obo, using the listed UBERON terms and relationships. Read issue #378 alongside Finding A, then review Findings B and C with the relevant definitions and axioms; done means deciding which discrepancies or candidate parthood axioms warrant ontology changes.

Written by the indexing model from the issue text.

Assessment

Domain
content
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.