PublicSchema
When programs serve the same people, their systems need a shared language. PublicSchema provides it: agreed definitions for concepts, fields, and value codes. Start here; adapt and extend for your country's context.
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.
This is the coordination tax: every time two programs 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 programs need more. Adopt the parts that work; leave the rest.
What the schema contains
PublicSchema is a shared set of definitions. When one program says "Person", "Household", or "Enrollment", another program 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, FHIR) 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
59 concepts, 391 properties
Entities like Person, Enrollment, and Payment get clear definitions
written for program managers. Each concept carries named, typed
properties (given_name, date_of_birth,
enrollment_status) defined once and reused across
concepts.
Vocabularies
115 vocabulariesControlled value sets for fields like gender, country, benefit modality, and enrollment status. Where international standards exist (ISO, 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 · FHIR
How it relates to other standards
If you work with digital public infrastructure, you have probably encountered standards like the Digital Convergence Initiative (DCI), GovStack, or the EU Core Person Vocabulary. Here is how PublicSchema fits alongside them.
Standards like DCI and GovStack define how data moves between systems: API contracts, transport protocols, building blocks. They include data models, but those models serve the transport layer. PublicSchema starts from the other direction: what does "enrollment" mean? What properties describe a payment? What values are valid for benefit modality? The semantic model is the primary artifact.
The two approaches are complementary. DCI specifies how to move enrollment records between systems; PublicSchema specifies what "enrollment," "active," and "benefit_modality" mean in those records. EU Core Person Vocabulary handles identity attributes; PublicSchema extends into the delivery lifecycle beyond name and date of birth.
Grounded in evidence
PublicSchema is grounded in a comparative analysis of real-world systems spanning identity (MOSIP), social protection (OpenSPP, openIMIS), health (DHIS2), and civil registration (OpenCRVS), alongside the relevant interoperability standards (DCI, FHIR). 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.
See how systems compareWhere to start
“I coordinate programs that serve overlapping populations”
You need consolidated numbers, deduplicated beneficiary lists, or referral pathways between services. PublicSchema gives you shared definitions so data from different programs can be compared and linked.
“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 writing requirements for a new system”
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's programs need more (specific benefit categories, legacy identifiers), extend PublicSchema in your own namespace; interoperability is preserved.
“I’m analyzing programs across countries or sectors”
You need a structured framework for comparison so divergences become visible and nameable. PublicSchema's concept and property inventory gives you a common grid to map against.
Browse the schema
Core concepts
36Civil Registration and Vital Statistics (CRVS)
16Social Protection
7Vocabularies
115PublicSchema is maintained as an open project. Source on GitHub About the project