is_lossy
A lossy relationship maps to the same entity but does not preserve every row —
a sequence maps to a structure that only covers part of it, or a mapping that
exists only where an alignment was found. The join is still type-safe; it just
warns that absence of a match is not evidence of absence.
strict_joins, lossy edges still join, but the recipe author has declared,
in the ontology, that partial coverage is expected here.
is_range_mapping
A range mapping relates a position to an interval that contains it, rather than
matching two equal values. SIFTS observed ranges, genome-interval overlaps, and
flanks all work this way: the join condition is containment, not equality.
start/end as ordinary equality keys — and what tells the caller the
result is an interval relationship.
coordinate_notes
When a mapping is exact but carries a caveat, the relationship spells it out:
These notes travel with the ontology, so the warning is visible at query-planning time rather than discovered in the data.structure_residue_numberequalsresidue_features.positionexactly — but confirmwildtype_matchesbefore trusting the mapping.
Declared, never inferredThe ontology never guesses that two identities are the same, and it never
hides that a mapping is imperfect.
is_lossy, is_range_mapping, and
coordinate_notes are declarations — the deliberate cost that buys a query
the ability to reason about its own uncertainty.