The open relational mesh for biology.
Rafflesia Ontology declares the namespaces, coordinate frames, relation shapes, and measured bridges between biological databases. Rafflesia curates and serves the bytes; Requel loads generated RQL bindings to make agent research version-controlled, reviewable, and reproducible.
Unified biological knowledge
One identity across every source.
Biological data lives in dozens of sources, and each one names the same thing its own way: different ids, different conventions, different coordinates, all describing the same underlying biology. Rafflesia Ontology preserves those distinct value spaces and declares evidence-backed correspondences between them, so similarity is never mistaken for equality.
- Every identifier carries a declared namespace, so look-alike ids never match by accident
- Values that share a name but not a meaning stay distinct until an equivalence is declared
- Every source is checked against one shared, versioned schema before a join is allowed
[ Starlark → SQL ]
Starlark modules that render to inspectable SQL.
Rafflesia Ontology is authored as portable YAML and deterministically exports ordinary .rql modules. Those generated modules declare relations, keys, value spaces, and measured bridges without making Requel the ontology owner. A project’s callable entrypoint declares params(...) and def query(p), then returns reviewed SQL fragments. requel render loads the mesh bindings and lowers those fragments to the configured connector’s SQL dialect while keeping caller values bound.
# One row per detected pocket.pocket_features = relation( backing = "pocket_features", key = ["structure_id", "pocket_id"], doc = "Measured features for one detected pocket.",)A reusable module declares the physical source, key, and grain once. Entrypoints load the exported relation by path.
[ Benchmark ]
The same models, far better with the ontology.
Point a frontier model at raw biological tables and it guesses at joins and identifiers. Give it the typed ontology and the same model answers correctly far more often, because the meaning it needs is declared instead of inferred. The lift holds across models.