Two checks that would have caught defects found while reviewing #3692 and #3694.
1. No cell part_of an acellular anatomical structure
CL ⊑ part_of some <acellular anatomical structure>
should be empty. A cell can be adjacent to, attached to, or in contact with an ECM structure, but not a part of one.
Implemented as a logical axiom in #3707:
DisjointClasses(obo:CL_0000000 ObjectSomeValuesFrom(obo:BFO_0000050 obo:UBERON_0000476))
EL-safe for WHELK (DisjointClasses with an existential reduces to ⊥; the more natural has_part only (not cell) form needs a DL reasoner and is better proposed to CARO/UBERON).
Still worth having as a SPARQL query as well. An unsatisfiable class names the class, not the offending axiom — and for several of the violations below the offending axiom is in an import, so a curator hitting it gets no useful signal. The SPARQL version can report the inherited path.
2. Completeness of epithelial stem cell classification
cl info [ .sub CL:0000036 .and .sub "epithelial cell" ]
CL:1000486 ! basal cell of urothelium
CL:2000033 ! limb basal cell of epidermis
CL:1000349 ! basal cell of epithelium of bronchus
CL:0002187 ! basal cell of epidermis
Four of the eight basal cell descendants. Whatever the right answer turns out to be, a partial result is definitionally a bug: it means some subtypes acquired epithelial classification through a hand-asserted lineage parent (keratinocyte, urothelial cell, basal epithelial cell of tracheobronchial tree) while their siblings did not. Notably CL:0002633 respiratory basal cell is absent while its own child CL:1000349 is present, and CL:1000447 is absent despite being labelled "epithelial cell of stratum germinativum of esophagus".
The set should be empty or complete. Blocked on #3694 — this check fails today and will pass once basal cell is reclassified. This one is CL-local and needs no upstream work.
Part of the epithelial hierarchy cleanup (#3703).
@cmungall drove the agent, checked its reasoning, and is accountable for its output.
Generated by Claude Code
Two checks that would have caught defects found while reviewing #3692 and #3694.
1. No cell
part_ofan acellular anatomical structureshould be empty. A cell can be adjacent to, attached to, or in contact with an ECM structure, but not a part of one.
Implemented as a logical axiom in #3707:
EL-safe for WHELK (
DisjointClasseswith an existential reduces to ⊥; the more naturalhas_part only (not cell)form needs a DL reasoner and is better proposed to CARO/UBERON).Still worth having as a SPARQL query as well. An unsatisfiable class names the class, not the offending axiom — and for several of the violations below the offending axiom is in an import, so a curator hitting it gets no useful signal. The SPARQL version can report the inherited path.
2. Completeness of epithelial stem cell classification
Four of the eight
basal celldescendants. Whatever the right answer turns out to be, a partial result is definitionally a bug: it means some subtypes acquired epithelial classification through a hand-asserted lineage parent (keratinocyte,urothelial cell,basal epithelial cell of tracheobronchial tree) while their siblings did not. NotablyCL:0002633 respiratory basal cellis absent while its own childCL:1000349is present, andCL:1000447is absent despite being labelled "epithelial cell of stratum germinativum of esophagus".The set should be empty or complete. Blocked on #3694 — this check fails today and will pass once
basal cellis reclassified. This one is CL-local and needs no upstream work.Part of the epithelial hierarchy cleanup (#3703).
@cmungall drove the agent, checked its reasoning, and is accountable for its output.
Generated by Claude Code