The open schema for African & emerging-market company data.
Certvas Ontology v0.1.0 is a public-domain LinkML schema covering company identity, fundamentals, procurement and macro observations — including the point-in-time fields most company-data schemas leave out. One YAML file generates the Pydantic models, SQL DDL, JSON Schema and JSON-LD context.
pip install certvas-ontology
from certvas_ontology import (
Entity, Fundamentals, Tender,
)
Why publish a schema at all
Emerging-market company data has no shared vocabulary. Every provider invents its own field names, so a buyer integrating two sources spends the first month writing a crosswalk instead of doing analysis. That cost falls hardest on the markets that can least afford it.
A schema is the cheapest thing to make open. It costs nothing to give away, it makes the data easier to buy, and it is the part a buyer most needs to inspect before trusting anything.
The part most schemas leave out
Every Fundamentals record carries two dates, because they answer different
questions:
| field | question it answers |
|---|---|
period_end | What period does this number describe? |
available_at | From when could someone have acted on it? |
A backtest has to filter on both. Filtering on period_end
alone hands you months of information nobody had — results for a December year-end are
typically not public for 60 to 120 days.
available_at is coalesce(announcement_date, observed_at) and is
never null. The fallback direction is deliberate: the capture date is always later
than true publication for a backfilled filing, so it can only ever exclude a row from an
as-of window, never admit one early. Weak announcement-date coverage costs recall, never
correctness.
announcement_date is sourced as a fact and left null where
unevidenced — never inferred. The evidence tier travels with the value in
announcement_source, so you can weight or exclude the weaker tiers yourself
rather than take a date on faith.
Restatements arrive as new rows. Nothing is overwritten, every vintage is addressable, and
fundamentals_as_reported returns what was originally filed — the correct
base for a factor study.
What it models
| object | what it covers |
|---|---|
Entity | Legal entities — the spine everything joins to |
EntityIdentifier | LEI, ISIN, FIGI, CIK, ticker, registry numbers |
EntityRelationship | GLEIF Level-2 ownership links |
Fundamentals | Filed line items, with point-in-time and restatement fields |
DerivedMetric | Computed metrics, with the formula version and inputs that reproduce them |
Tender · TenderAward · TenderParty | Public procurement, OCDS-aligned |
MacroObservation | Country indicators, with required source attribution |
UniverseMembership | Dated membership including delisted issuers |
Every class and every field carries a description. Those descriptions are the documentation — there is no second place where the prose lives, so the docs cannot drift from the schema.
Classes carry crosswalks to schema.org, GLEIF and OCDS, so the schema is mappable rather
than merely readable. Where a mapping is approximate it says close, not
exact — claiming an exact match tells an integrator two things are
interchangeable when they are not.
The schema is open. The data is not.
This is the whole position, stated plainly:
- The schema is CC0. Public domain. Model against it, map to it, implement it — no permission, no account, no fee.
- The datasets it describes are licensed separately, per source,
recorded in
license_classon every row.
Publishing the vocabulary openly and licensing the data separately is a deliberate choice, not an oversight.
Scope, honestly
v0.1.0 models what Certvas holds today and nothing speculative. Valuation points, corporate actions and the computed reporting surfaces are not yet modelled — the version number says so. A schema describing data nobody holds is a wish list, and the gap is invisible to a reader while being obvious to anyone who joins the two.
Cite: Mandase, R.T. (2026). Certvas Ontology v0.1.0. Zenodo. https://doi.org/10.5281/zenodo.21986492