Skip to content

The corpus types 'capacity to X' two ways: TRAIT in some records, CAPACITY/STATE in others #352

Description

@realmarcin

Raised in review of PR #351 (#334 burn-down).

#351 retyped five nodes from STATE/CAPACITY to TRAIT because their own
descriptions describe dispositions — "Capacity of an organism to grow and survive under
high hydrostatic pressure"
, "Ability to grow when external phosphate is unavailable",
"Detoxification-mediated tolerance of arsenic oxyanions".

The same concept is typed CAPACITY elsewhere and was left alone:

node record
salt tolerance"Capacity to grow and survive under elevated salinity" slightly_halophilic.yaml
low-pH tolerance ph_delta.yaml
oxygen tolerance oxygen_preference.yaml
growth at 4 degrees C psychrotolerant.yaml

They survive as CAPACITY only because their in-edges did not happen to violate the
enables range
— an entirely unrelated fact. So the corpus now types one concept two ways,
and which way depends on whether a different check fired on a neighbouring edge.

Why it matters

CausalNodeTypeEnum membership is what every node-type gate keys on
(subject_types/object_types in mappings/predicate_grounding.tsv), and TRAIT nodes are
additionally what audit-graphs uses as reachability anchors. A concept typed inconsistently
is gated inconsistently and anchors inconsistently.

Suggested approach

  1. Sweep CAPACITY and STATE nodes for descriptions matching the disposition pattern —
    capacity to, ability to, tolerance of, growth at/under/without.
  2. Decide the rule once and write it into docs/CURATION_PLAYBOOK.md, which Retype six mis-typed dispositions, and route six real states (#334) #351 has already
    started ("a node described as a capacity to, an ability to, or a tolerance of is a
    disposition, i.e. a TRAIT"
    ).
  3. Retype in one pass, grounding eachRetype six mis-typed dispositions, and route six real states (#334) #351's review showed that an ungrounded new TRAIT
    node silently becomes a reachability anchor and makes UNREACHABLE_FROM_TRAIT fall without
    the graph actually becoming more connected.

Worth doing as its own change rather than inside a range-violation burn-down, since the
trigger for finding them should be the typing rule, not which edges happened to be broken.

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