From dde989d018fe11298d990bd46fb400085c61d652 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 10 Aug 2026 16:01:20 +0000 Subject: [PATCH] =?UTF-8?q?ro:=20mint=20the=20substance=20predicate=20fami?= =?UTF-8?q?ly=20=E2=80=94=20treats,=20causes=5Fadverse=5Feffect,=20confoun?= =?UTF-8?q?ds=5Ftest=20(0xA3..0xA5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator-approved mints completing the third predicate family a medication node needs. The three are deliberately DISTINCT — folding what-it-treats, what-it-causes, and which-measurements-it-distorts into one relates_to would erase exactly the distinctions rung-4 confounder reasoning runs on. Provenance honesty: treats = RO:0002606 (RO's substance-treatment term). causes_adverse_effect records RO:0003302 (condition causation — broader than 'adverse'; the byte carries the narrowed clinical semantics, the CURIE the ancestry). confounds_test has NO public ontology term at predicate level — drug/lab-test interference lives in interaction databases, not relation ontologies — so its provenance is honestly LOCAL: rather than an invented-looking CURIE. Downstream: unblocks MedCare-rs ae-predicate-mints -> ae-lanes -> confounder-falsifier, and the predicate-domain normalization pass. Verified: cargo test -p ogar-ro green (12 tests; the unminted-byte probe self-relocates to 0xA6). Co-Authored-By: Claude --- crates/ogar-ro/src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/ogar-ro/src/lib.rs b/crates/ogar-ro/src/lib.rs index 39c73abb..9da3fcb5 100644 --- a/crates/ogar-ro/src/lib.rs +++ b/crates/ogar-ro/src/lib.rs @@ -177,6 +177,20 @@ relation_palette! { 0xA0 => HAS_QUALITY, "has_quality", "RO:0000086"; 0xA1 => HAS_INTERPRETATION, "has_interpretation", "SCTID:363713009"; 0xA2 => INTERPRETS, "interprets", "SCTID:363714003"; + // ── 2026-08-10: the substance predicate family (operator-approved mints). + // A medication node needs THREE distinct predicate families that must + // never be folded into one "relates_to": what it treats, what it causes, + // and which measurements it distorts. `treats` is RO's substance-treatment + // term. `causes_adverse_effect` records provenance against RO's condition- + // causation term (RO's term is broader than "adverse"; the byte carries + // the narrowed clinical semantics, the CURIE the ancestry). `confounds_test` + // has NO public ontology term at predicate level — drug↔lab-test + // interference lives in interaction databases, not relation ontologies — + // so its provenance is honestly LOCAL until a real term is found; an + // invented-looking CURIE would be a lie wearing a namespace. + 0xA3 => TREATS, "treats", "RO:0002606"; + 0xA4 => CAUSES_ADVERSE_EFFECT, "causes_adverse_effect", "RO:0003302"; + 0xA5 => CONFOUNDS_TEST, "confounds_test", "LOCAL:confounds_test"; } /// The RO/BFO relation palette as an `ogar-loco` [`Vocabulary`].