PublicSchema
Government systems keep records about the same people, places, organizations, and assets. PublicSchema gives them a shared language: agreed definitions for concepts, fields, and value codes, from civil registration and social protection to land, agriculture, and tax. Start here; adapt and extend for your country's context.
One shared core, many sectors
What every sector shares (people, groups, organizations, places, identifiers, registrations, payments) is defined once in a shared core. Sector domains build on it for the records each ministry keeps. New domains are published as drafts so they can be reviewed early; the badges show how settled each one is.
Shared core
81Concepts used across sectors: people and groups, organizations, locations, identifiers, registrations, documents and payments.
Social protection
7Benefit programmes, eligibility, enrollment, entitlements, referrals and grievance redress.
Civil registration
16Civil registration of vital events and the associated roles and records.
Agriculture
22Agricultural and fisheries production, holdings, cultivation and production-specific roles, facilities, inputs and assertions.
Land administration
4Land administration, spatial/property units, tenure and boundary assertions.
Environment
2Environmentally regulated facilities and their activities, and water-use authorizations.
Health
1Healthcare facility discovery and integration with selected external FHIR resources/profiles; no replacement medical ontology.
Tax administration
1Registration of persons and organizations with tax authorities, by tax type.
Metrics
11Computable aggregate indicators with declarative calculations, dimensions and external alignments.
Why a shared vocabulary matters
A government wants to know whether the child enrolling in school is the same child registered at birth and the same child seen in the immunization roster. The civil registry has the authoritative record. The hospital recorded the delivery. The school admits a child whose age is estimated because no certificate was presented. The three records describe the same person, but their fields and values do not align, so reconciliation requires manual work that takes weeks and introduces errors.
| System | Field name | Values |
|---|---|---|
| Hospital information system | delivery_record | Date and time of delivery, sex assigned, mother's hospital MRN |
| Civil registry | birth_record | Exact date, full legal name, parents' national identifiers, place of birth |
| School enrolment | pupil_record | Estimated age in years |
Same person, three systems, three different models of who they are and when they were born.
The same happens beyond people. A plot of land appears in the cadastre, the farm register, and an irrigation scheme's list of water users, each with its own identifier and its own idea of the plot's area. A company is one record at the business registry, another at the tax authority, and a third in the environmental permit file.
This is the coordination tax: every time two systems need to share data, someone spends weeks mapping fields and translating codes. It is expensive, fragile, and starts over every time a system upgrades.
These aren't problems you solve with a lookup table. You cannot recover an exact date of birth from an estimated age, and the identifiers used by each system point to nothing the others can verify. Meanwhile, one system describes the family unit by hospital admission, another by parental link in a register, and a third not at all. The concepts themselves don't align. Shared definitions don't just save time; they make accurate exchange possible in the first place.
PublicSchema does not prescribe which representation is correct. It gives you a common reference point so you can see the differences, decide what fits your context, and extend it where your context needs more. Adopt the parts that work; leave the rest.
What the schema contains
PublicSchema is a shared set of definitions. When one system says "Person", "Farm", or "Registration", another system reading the same schema knows exactly what is meant, not just what fields to expect.
Shared meaning, not shared software
Definitions for what the words mean. Your systems stay yours.
Use what fits
Everything is optional. Adopt the parts you need, extend the rest.
Built on what already exists
International standards (ISO, UN, FAO, FHIR, SEMIC) reused wherever they cover the ground.
Citable, permanently
Every definition has a stable web address that can be referenced or carried in a digital credential.
Concepts and properties
153 concepts, 688 properties
Entities like Person, Organization, Registration, and Farm get clear
definitions written for the people who run programs and registries.
Each concept carries named, typed properties
(given_name, date_of_birth,
registration_date) defined once and reused across
concepts.
Aligned with OpenSPP · OpenCRVS · openIMIS · DHIS2 · FHIR · SEMIC
Vocabularies
141 vocabulariesControlled value sets for fields like gender, country, occupation, land tenure, and organization type. Where international standards exist (ISO, FAO, FHIR), we reference them. Where they don't, we define a common set based on observed convergence across systems.
Based on ISO · ILO · UN M49 · UNESCO · FAO · FHIR
How it relates to other standards
PublicSchema sits alongside the standards you already use. It does not replace them; it gives them a common semantic reference point.
Exchange standards such as the Digital Convergence Initiative (DCI) and GovStack define how data moves between systems: API contracts, transport protocols, building blocks. PublicSchema defines what the data means: what counts as an enrollment, a registration, or a farm, and which values are valid for a status or a tenure type. DCI can carry the record; PublicSchema says what its fields mean.
Sector standards such as HL7 FHIR for health, ISO 19152 (LADM) for land administration, and the FAO World Programme for the Census of Agriculture go deep in one field. PublicSchema reuses them where they cover the ground and connects them through a shared core, so a health facility, a school, and a land parcel use the same building blocks for location, identifiers, and registration.
Semantic vocabularies such as the EU SEMIC Core Vocabularies (Core Person, Core Business, Core Location) share the same goal. PublicSchema maps to them and extends the approach into sector registries and service delivery, which they do not cover. More on related standards.
Grounded in evidence
PublicSchema is grounded in a comparative analysis of real-world systems and standards: social protection (OpenSPP, openIMIS), civil registration (OpenCRVS), health (DHIS2, FHIR), household surveys (DHS, MICS, LSMS-ISA, Washington Group), humanitarian boundaries (OCHA COD-AB), payments and exchange (DCI, GovStack), and the EU Core Vocabularies (SEMIC). Where international standards (ISO for gender, countries, currencies) cover the ground, we reference them. Where they don't, we define a common set based on how these systems actually work.
Where to start
“I coordinate or compare services across agencies, sectors, or countries”
You need consolidated numbers, deduplicated lists of people, farms, or businesses, referral pathways between services, or indicators that mean the same thing everywhere. PublicSchema gives you shared definitions so data from different sources can be linked and compared.
“I build or maintain integrations between systems”
You need shared field names and value codes so systems can exchange data without custom translation layers. Map your system once; every other mapped system becomes interoperable.
“I’m designing a new system or writing its requirements”
You need concrete interoperability specifications for your RFP, not “the system must be interoperable.” Reference PublicSchema properties and vocabulary codes so vendors have a testable target. Where your country needs more (local tenure types, benefit categories, legacy identifiers), extend PublicSchema in your own namespace; interoperability is preserved.
“I run a sector registry”
You keep the register of farms, land parcels, vehicles, taxpayers, or voters, and other agencies need to link to it. Build on the shared core for people, organizations, locations, and identifiers so your records line up with theirs, and use your sector domain for what is specific to you.
PublicSchema is maintained as an open project. Source on GitHub About the project