Skip to content

biolink:encodes is a local coinage with no slot in the pinned biolink model #342

Description

@realmarcin

Surfaced in review of PR #341 (#334 burn-down). Pre-existing, not introduced there — 9
trait files use it — but the mapping row's note claimed something false, now corrected.

The gap

mappings/predicate_grounding.tsv grounds the label encodes to biolink:encodes, and
the note said "exact label match against biolink slot (RO:0002205 inverse: encoded_by)".

The pinned data/raw/biolink-model.yaml is 4.4.0 and has no slot named encodes — nor
encoded by. The gene→product slot is has gene product:

has gene product:
  domain: gene
  range: gene product mixin
  exact_mappings: [RO:0002205, ...]

So RO:0002205 belongs to a different slot, and biolink:encodes resolves to nothing
upstream.

The repo's own checker already records this: reports/biolink_coverage.tsv has the
encodes row as the only applied biolink: CURIE with both biolink_via_label and
biolink_via_exact_mapping empty. The signal existed; nothing acted on it.

Why it wasn't simply repointed in #341

A gene cluster → protein complex edge (mcrABG → methyl-coenzyme M reductase) is not a
clean fit for range: gene product mixin, which is presumably why the coinage exists in the
first place. Repointing would trade a missing term for a wrong range.

Options

  1. Propose encodes to biolink (or adopt whatever they'd prefer for cluster→complex).
    Cleanest, but upstream and slow.
  2. Mint a METPO predicate for it, in the v9 style — the corpus already has a place for
    causal-graph relations with no upstream home.
  3. Repoint to biolink:has_gene_product/RO:0002205 and accept the range mismatch,
    or retype the nodes so gene→product holds.
  4. Keep the coinage and document it, which is the current state after Re-ground 9 GENE_OR_PROTEIN-object enables edges by idiom (#334) #341 corrected the
    note to say plainly that it is local.

Worth checking the same way whether any other applied biolink: CURIE lacks a backing
slot — reports/biolink_coverage.tsv is the place to look, and it evidently is not being
read.

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