Skip to content

[Bug] Cells asserted part_of the (acellular) basal lamina: CL:0002169, CL:4033093 #3699

Description

@cmungall

UBERON:0000482 basal lamina of epithelium is defined as:

Acellular anatomical structure that consists of a thin sheet of fibrous proteins that underlie and support the cells of an epithelium.

Two CL classes assert that a cell is part_of it:

EquivalentClasses(CL:0002169, CL:0002167 and (part_of some UBERON:0000482))  # basal cell of olfactory epithelium
SubClassOf(CL:4033093, part_of some UBERON:0000482)                          # limbal epithelial stem cell of cornea

A cell cannot be part of an acellular ECM sheet. Both definition texts have it right and the axioms don't — CL:0002169 says the cell is "located on the basal lamina", CL:4033093 says it "resides at the basal layer". Adjacency was translated into parthood.

Contrast the correct pattern used elsewhere for the same idea:

EquivalentClasses(CL:0002187, CL:0000646 and (part_of some UBERON:0002025))  # 'stratum basale of epidermis'

stratum basale is a cell layer, so parthood holds. CL currently carries both encodings; these two terms are the only users of the wrong one.

Proposed fix

Swap BFO:0000050 part_ofRO:0002220 adjacent to in both axioms. RO:0002220 is already used 14× in cl-edit.owl, including as an EquivalentClasses differentia (e.g. CL:0005020, CL:0019021, CL:0002670), so this needs no new relation.

No class currently asserts adjacent to some UBERON:0000482, so no new inferences follow from the change.

Residual issue, deliberately not addressed here: "adjacent to the basal lamina" is also true of sustentacular cells in the pseudostratified olfactory epithelium, so CL:0002169's equivalence axiom remains over-inclusive. That is a question about what the class means rather than which relation it uses — tracked separately in #3700.

PR: #3704.

Note: these two are the only asserted violations. Computing the transitive part_of closure inherited over is_a finds seven in total — see #3701 for the full set and the two upstream UBERON axioms that cause the rest.


@cmungall drove the agent, checked its reasoning, and is accountable for its output.

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions