Skip to content

Decouple PATO from BFO and wire upper level to COB #604

Description

@matentzn

PATO's upper level is moving from BFO to COB (see #602). Cleanly cutting the BFO tie on PATO:characteristic (PATO:0000001) is blocked by an axiom outside our control: RO declares the range of has_characteristic (RO:0000053) as BFO:0000020. Until that range is changed to PATO:0000001, anything that imports RO will keep dragging BFO:0000020 back in and reasoners will keep classifying PATO:characteristic underneath it. Splitting this out of #602 so we can coordinate the cross-ontology change with RO and downstream consumers without holding up the rest of the upper-level reorg.

Context

The plan in #602 renames quality to characteristic and rewires the PATO upper level so the root no longer needs BFO:0000020 (specifically dependent continuant) as a parent. In principle, pato-edit.obo already does not assert PATO:0000001 is_a BFO:0000020 directly. In practice, reasoning over the release artifact still puts PATO:0000001 under BFO:0000020, for two independent reasons:

  1. Foreign axiom in GO base. go-base.owl (versionIRI 2024-06-17) carries SubClassOf(PATO_0000001 BFO_0000020). This needs to be fixed upstream in GO: Remove BFO imports and rely on COB at the upper ontology geneontology/go-ontology#31354 (cc @balhoff)

  2. RO range on has_characteristic. RO:0000053 (has characteristic) declares its range as BFO:0000020. As long as that holds, every ontology that uses has_characteristic (which is most of OBO) needs BFO:0000020 in scope, and PATO:characteristic will continue to be classified under it transitively. The fix is for RO to change the range to PATO:0000001 (PATO:characteristic).

Both fixes are cross-ontology and will break downstream tooling that assumes BFO:0000020 is the canonical type for characteristics/qualities. That is the reason for decoupling this from #602: #602 should land on its own timeline, and the BFO drop should be coordinated separately with RO, GO, and downstream consumers so they have notice.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions