People Group Model
The Global.Church knowledge graph models people groups through four layered classes. Each carries a different question:
gc:PeopleGroupIdentity— the classification concept. Joshua Project's people-list entry for the Kurds (or IMB's, ROP3's, AX's, Etnopedia's, or another scheme's) — a record with its scheme's code, identity criteria, and a prefLabel like "Kurds." Lives underdul:Concept+skos:Concept. The concept has a name, a code, and criteria — not a population, a place, or a reachedness percentage. Those belong to the people the concept names.—— the Kurds themselves. The actual people the classification concept names, considered across all places and times. The broader who. Carries—back to the concept.gc:PopulationSegment— a scoped slice of a collective. The reusable A-box anchor for population estimates, reachedness assessments, and engagement attestations. One collective is realized by many segments simultaneously: a cross-country rollup, one in-country slice per country, one in-city slice per city the group is reported in, one in-diaspora slice per host place.gc:PeopleCommunity— a local social manifestation. The community on the ground — shared identity, practice, and interaction patterns. A neighborhood, a tribal village, a diaspora hub. One segment can host many communities; one community can sit within multiple segments.
Why split the classification concept from the people
A classification concept is a record in a registry; the people are the actual humans. The JP entry titled "Kurds" carries a ROP3 code, identity criteria, and a prefLabel — it has no population, lives in no country, and isn't more or less reached. Asking "what is the Kurds' population?" is meaningful only when scoped: in Iraq? worldwide? in the German diaspora? Each answer attaches to a different gc:PopulationSegment — a scoped slice of the Kurdish collective — not to the classification concept itself.
The shape resolves several problems at once. Multi-source disagreement is preserved (two schemes can classify the same segment under different concepts; both classifications coexist with their own provenance chains). Multi-source population numbers are preserved (JP and a local field-research team can each emit their own gc:PeopleGroupPopulationEstimate on the same segment). Sub-country and operational scopes (in-City, in-Diaspora, in-Church, in-MinistryEngagement) compose at query time without minting new subclasses. And the Lausanne maximality definition stays attached to the concept, where it belongs.
The four-layer model
| Layer | Class | What it represents | Identity |
|---|---|---|---|
| Classification concept | gc:PeopleGroupIdentity | The publishing scheme's entry that names a people group — JP / IMB / ROP3 / AX's record with its code, identity criteria, and a prefLabel like "Kurds" | Constituted by the governing scheme's definition |
| Abstract collective | — | The actual people the concept names, considered across all places and times | One per concept |
| Scoped slice | gc:PopulationSegment | A specific scope of the collective — across countries, in country, in city, in diaspora, in language, in religion, in church, in network, in denomination, in ministry engagement | One per (concept × scope dimension) |
| Local body | gc:PeopleCommunity | A community on the ground — neighborhood, village, diaspora hub | Many per segment; one community can sit within multiple segments |
Estimates and assessments hang off the segment, not the concept and not the community. Engagement attestations target a segment (gc:claimedPopulationSegment). Cross-source classifications target a segment (or a community). The concept stays clean: a name plus a gc:hasPeopleClassification link to the corresponding HIS ROP3 SKOS concept that serves as the cross-source join key.
Scope types
gc:PeopleGroupScopeTypeScheme carries 17 controlled-vocabulary concepts that classify the scope dimension of a gc:PopulationSegment. Every segment must declare exactly one scope type via gc:hasScopeType. The corresponding scope dimension is carried via gc:locatedIn, gc:spatialScope, gc:hostPlace / gc:homelandPlace, gc:withinChurch, gc:withinNetwork, gc:withinDenomination, gc:withinMinistryEngagement, or gc:temporalScope.
Cross-source rollups
| Code | Concept | When to use it |
|---|---|---|
PGST-PGA | People Group Across Countries (PGAC) | The cross-country rollup of a concept — the segment that spans every country in which the group is reported. The natural carrier for global counts and global reachedness rollups. |
PGST-PGI | People Group In Country (PGIC) | The per-country segment of a concept — one segment per (concept × ROG country) pair known to the source. The canonical join target for engagement attestations and country-scoped reachedness assessments. |
Geographic finer-grained scopes
| Code | Concept | When to use it |
|---|---|---|
PGST-CIT | People Group In City | A segment scoped to a specific city. Useful for urban-targeted ministry, urban diaspora, or city-level Hotspot lists. |
PGST-ADM | People Group In Admin Area | A segment scoped to an administrative subdivision below the country level (state, province, governorate, ADM1 / ADM2). The carrier for sub-national Hotspot lists. |
PGST-RGN | People Group In Region | A segment scoped to a multi-country region (HIS ROG region, IMB affinity-region grouping). |
PGST-PLY | People Group In Polygon | A segment scoped to an arbitrary polygon — a watershed, a tribal territory, a refugee-camp zone — that does not align with administrative geography. |
PGST-PLC | People Group In Place | A segment scoped to a named place that is not a city, admin area, or region — a refugee camp, an island, a settlement. |
Demographic scopes
| Code | Concept | When to use it |
|---|---|---|
PGST-LNG | People Group In Language | A segment scoped to a specific language community within a multilingual concept. |
PGST-REL | People Group In Religion | A segment scoped to a religious sub-population — e.g., the Sunni Kurdish segment vs. the Yezidi Kurdish segment. |
PGST-CCT | People Group In Caste, Clan, or Tribe | A segment scoped to a constituent caste, clan, or tribe within an aggregating concept. |
PGST-AFG | People Group In Affinity Group | A segment scoped to an IMB-style affinity grouping — kinship, professional, or shared-experience cohort. |
PGST-CLU | People Group In Cluster | A segment scoped to a cluster of related people groups under a higher-level grouping (HIS People Cluster, IMB Kinship Group). |
Diaspora
| Code | Concept | When to use it |
|---|---|---|
PGST-DIA | People Group In Diaspora | A segment scoped to a diaspora population — persons of the people group living outside the homeland. Carries gc:hostPlace and gc:homelandPlace. |
Operational scopes
| Code | Concept | When to use it |
|---|---|---|
PGST-MEG | People Group In Ministry Engagement | A segment scoped to the population reached by a specific engagement (gc:EngagementSituation, gc:EngagementActivity, or gc:MinistryActivity). Carries gc:withinMinistryEngagement. |
PGST-CHU | People Group In Church | A segment scoped to the population gathered within a specific church or ekklesia body. Carries gc:withinChurch. |
PGST-NET | People Group In Network | A segment scoped to the population organized within a specific network of churches or ministries. Carries gc:withinNetwork. |
PGST-DEN | People Group In Denomination | A segment scoped to the population gathered within a specific denomination. Carries gc:withinDenomination. |
Segments compose hierarchically: a PGAC segment may contain per-country PGIC segments via gc:hasSubPopulationSegment; a PGIC segment may contain per-city or per-cluster sub-segments. Non-hierarchical overlap (a Kurds-in-Iraq PGIC slice overlapping a Kurds-Diaspora-in-Germany segment via the moving population) is recorded with gc:overlapsPopulationSegment.
Classification: placing a concept under one or more schemes
A gc:PeopleGroupClassification is a time-indexed source-attributed claim that a particular gc:PeopleGroupIdentity concept classifies a particular entity (typically a gc:PopulationSegment or gc:PeopleCommunity). gc:PeopleGroupIdentityScheme instances are minted per source — one for the Joshua Project people-list, one for the HIS ROP3 registry, one for the IMB Affinity Bloc framework, one for AX, one for Etnopedia, one for a local research team's naming scheme.
Classification is its own first-class entity rather than a property on the segment, which preserves disagreement: when JP's ROP3-anchored scheme and a local-research team classify the same segment under different concepts (one publishes a single "Kurds" concept; another splits it into "Kurmanji" and "Sorani" sub-groupings), both classifications coexist with their own provenance chains. Cross-scheme alignment runs through skos:exactMatch / skos:closeMatch on the contained concepts, with ROP3 typically serving as the join key.
Code
Population estimates: multi-source disagreement preserved
A gc:PeopleGroupPopulationEstimate is an information-bearing datum about a segment — count, percent Christian, percent evangelical, source metric, confidence, source, date. It's a at:AssessmentDatum so it inherits the finer-grained provenance machinery (source, confidence, generation time) that the assessment family uses.
Multi-source disagreement is preserved by minting separate estimates per source rather than coalescing values onto the segment. JP and a local field-research team can each emit their own estimate for Kurds-in-Iraq; both attach to the same segment via gc:hasPopulationEstimate. If anyone authors a reconciled estimate later, that is a third entity that prov:wasDerivedFrom both sources — not an overwrite.
Code
Reachedness assessment results
A gc:ReachednessAssessmentResult is the source-specific assessment-result of gospel access, evangelical presence, church presence, and engagement on a gc:PopulationSegment. It's a at:AssessmentResult, so it slots into the methodology + result-target machinery shared with people-group and church-health assessments — see Assessment Frameworks.
A reachedness result links back to its segment via gc:resultForPopulationSegment (or the parallel inverse gc:resultForPopulationSegment) and carries one or more reachedness payloads:
| Property | Range | What it carries |
|---|---|---|
gc:hasReachednessStatus | skos:Concept | The reachedness status reported by this result — typically a JP / IMB / AX scheme value (e.g., a JP Progress Scale concept). |
gc:hasEngagementStatus | skos:Concept | The engagement status — typically an IMB engagement-status value or a poe:PhasesOfEngagementScheme phase. |
gc:percentEvangelical | xsd:double | Estimated percentage of the segment's population that is evangelical Christian (0.0–100.0). |
gc:percentChristian | xsd:double | Estimated percentage that is Christian-adherent (0.0–100.0). |
The result is the natural carrier for verification level (V1–V4) and data confidence (Low/Med/High) when those are scoped per-segment rather than per-claim. As with population estimates, multi-source disagreement is preserved: JP, IMB, AX, Etnopedia, and a local research team can each emit their own reachedness result on the same segment, and downstream tools roll up per-source rather than coercing cross-framework equivalences.
Code
Multi-tier assessment hooks
The same Assessment / AssessmentResult infrastructure that scores people groups, churches, and disciples extends naturally to per-segment assessment via two subproperties of the union-range at:assessmentTarget / at:resultTarget superproperties:
| Subproperty | Of | Range |
|---|---|---|
gc:assessesPopulationSegment | at:assessmentTarget | gc:PopulationSegment |
gc:resultForPopulationSegment | at:resultTarget | gc:PopulationSegment |
Existing concept-targeted data (gc:assessesPeopleGroup / gc:resultForPeopleGroup) continues to validate against the broader superproperty without re-emission. New per-segment assessments use the narrower subproperties and are reachable from queries that walk at:assessmentTarget regardless of which tier they were authored at. See Assessment Frameworks for the methodology side.
Querying the People Group model
Find a segment, its concept, and its latest population estimate
Code
Find all per-country segments inside a region
Code
Replace gc:ScopeTypePGIC with gc:ScopeTypePGAC to find the cross-country rollup segments instead, or with gc:ScopeTypePGInDiaspora for diaspora-scoped segments.
Find segments where two or more sources disagree on population
Code
This is the kind of query the multi-source shape unlocks: which segments have the largest source-to-source disagreement on population? — without a normalization step that hides the disagreement.
Where the schemes live in the ontology
| Scheme | URI |
|---|---|
gc:PeopleGroupScopeTypeScheme | https://ontology.global.church/core#PeopleGroupScopeTypeScheme |
gc:PeopleGroupIdentityScheme (per-source instances) | minted per scheme, e.g. https://data.global.church/peoplegroup/scheme/joshua-project |
Full per-concept definitions, scope notes, and relationships are published at the Ontology Reference under SKOS Vocabularies.
See also
- Ekklesia Model — the parallel four-axis classification of churches and church-like bodies. People Group and Ekklesia share the same Concept / Collective / Segment / Community shape.
- Data Modeling Cookbook — Modeling a People Group — worked Turtle + JSON-LD example for a single concept with classification properties and a 3-block assessment.
- HIS Registries — ROP3 as the cross-source join key, plus ROL / ROR / ROG.
- Assessment Frameworks — methodology registry and the multi-tier assessment subproperty pattern.
- URI Patterns — JP-bridge URI scheme (ROP3 + ISO country) for bridge-emitted people-group resources.
