Skip to main content
Back to Research

Foundational Research: Ontology-Native AI

Grounded, not retrieved: a validated biomedical knowledge graph

Ungrounded retrieval over the literature lets a language model assert edges with nothing checking that the node types and relations are real, so a hallucinated gene or an invented predicate enters the graph and quietly corrupts everything downstream. This case study does the opposite: every edge is typed with the real Biolink Model and passes a closed-world vocabulary gate before it enters the graph. It is the same correctness gate we benchmarked on schema.org and IES4, now on the biomedical vocabulary and on real data.

Grounded KG violations

0 / 0

SHACL and closed-world, 284 triples

Real associations

40 live

from the Open Targets Platform

Vocabulary

Biolink

868 declared terms, every edge typed

The Challenge

Target and biomarker discovery still leans on manual literature reasoning, and the tools that promise to automate it, retrieval plus a language model, have no guarantee that the entities and relations they extract are real. A model can emit a plausible gene symbol that does not exist, or a plausible relation like associated_with_disease that is not a real Biolink predicate, and nothing in an ordinary pipeline stops it. As we showed in the open-world hole benchmark, SHACL will not catch it. In biomedicine that silent failure is expensive: a single fabricated identifier can break an integration that assumed every term was real.

What we built

A gene-disease knowledge graph assembled from 40 real associations pulled live from the Open Targets Platform for eight well-known human targets (EGFR, TP53, KRAS, BRCA1, PTEN, BRAF, ALK, MYC). Every edge is typed with the Biolink Model: genes as biolink:Gene, diseases as biolink:Disease, linked by biolink:gene_associated_with_condition, with Open Targets provenance on every edge. Then we validated it two ways, and built an ungrounded twin that swaps the one real predicate for a fabricated one to show the difference.

Knowledge graphTriplesBiolink termsSHACLClosed-world violations
Grounded (real Biolink predicate)2843conforms0
Ungrounded (fabricated predicate)2843conforms1

The grounded graph has zero violations of either kind. The ungrounded twin, identical but for the fabricated predicate biolink:associated_with_disease, still reports conforms=true under SHACL, while the closed-world gate rejects it. The same open-world hole, on the biomedical vocabulary, caught by the same gate.

Four grounded layers

The gate is not tied to one source or one ontology. We built four layers, each from a different real source, and validated all four the same way. The structured layer above is the first; the second turns raw literature into a KG; the third moves to a different domain and ontology; the fourth links resistance genes to their pathogens and polices three ontologies at once.

LayerSourceGrounded triplesClosed-world violationsUngrounded twin
Structured (target-disease)Open Targets + Biolink2840caught
LiteraturePubTator3 + Biolink1690caught
AMR (resistance-to-drug)CARD / ARO1,2830caught
AMR pathogen linkageCARD + NCBI taxonomy20,692fake taxid caught; 17 retired flaggedcaught

The literature layer keeps only the gene-disease relations PubTator3 machine-extracts from 40 real PubMed abstracts, 57 across the eight target genes, and grounds each in Biolink. The resistance-to-drug layer takes 800 of the 5,053 real "confers resistance to" relationships in CARD's Antibiotic Resistance Ontology and polices the ARO namespace, so the gate is shown working on a third ontology and a different domain.

The pathogen layer goes further: 6,404 gene-organism edges from CARD, policing three ontologies at once, ARO for the gene, Biolink for the in_taxon predicate and types, and NCBITaxon for the organism, checked against the current NCBI taxonomy of 2,871,791 taxids. A fabricated taxon id is caught, as expected. And here the gate earns more than its keep: run against the current taxonomy, it flags 17 organism identifiers in CARD as no longer current, all seventeen confirmed retired and merged in NCBI's own records. That is a real data-freshness signal, not fabrication, and it is exactly the kind of silent staleness open-world SHACL and a naive well-formedness check both wave through.

Triage, on a graph you can trust

Because every edge is validated and typed, the graph answers a ranked, provenance-carrying query directly. These are the top gene-disease hypotheses by Open Targets association score, each row a validated Biolink triple with a source. The score is Open Targets', not a model we invented; the contribution is that a triage built on this graph cannot rank on a fabricated edge.

RankGeneDiseaseOpen Targets score
1BRAFcardiofaciocutaneous syndrome0.877
2TP53Li-Fraumeni syndrome0.876
3PTENCowden syndrome 10.874
4EGFRnon-small cell lung carcinoma0.853
5BRCA1breast cancer0.839

Where it fits

The graph is the substrate; the model that drafts against it is our biology-ontology language model, fine-tuned to hold term conformance at 100% against Biolink and GO-CAM. The model proposes edges; this gate guarantees the edges use only real terms before they are committed, and the next gate will check that a real term is used in a sound place. Neither component does the other's job.

"A biomedical knowledge graph is only as trustworthy as its worst edge. Ground every edge in a real ontology and check it before it lands, and hypothesis triage stops being a bet on whether the extractor hallucinated."

Fabio Rovai, Tesseract Academy

An independent, self-initiated study on open data and open tools: the Biolink Model, the Open Targets Platform, PubTator3, CARD, and the NCBI taxonomy, all used under their open licences. All four layers are built and validated. Honest limits: the resistance-to-drug layer uses a logged 800-edge slice of ARO's relationships, PubTator3's associations are its own machine extraction, and the triage ranks on Open Targets' own score with provenance rather than a new model. The 17 retired taxon ids the pathogen gate flags are a feature, real but deprecated ids CARD still carries. The full method and reproducible code are in the repository.

Reproduce it

Build and validate the KG from live Open Targets data, in Colab or from the repo.