People Group Model
The Global.Church knowledge graph models people groups through four layered classes. Each carries a different question:
gc:PeopleGroup— 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.gc:PeopleGroupCollective— the Kurds themselves. The actual people the classification concept names, considered across all places and times. The broader who. Carriesgc:classifiedByPeopleGroupback to the concept.gc:PeopleGroupPopulationSegment— 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:PeopleGroupCommunity— 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:PeopleGroupPopulationSegment — 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:PeopleGroup | 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 | gc:PeopleGroupCollective | The actual people the concept names, considered across all places and times | One per concept |
| Scoped slice | gc:PeopleGroupPopulationSegment | 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:PeopleGroupCommunity | 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:PeopleGroupPopulationSegment. 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:PeopleGroup concept classifies a particular entity (typically a gc:PeopleGroupPopulationSegment or gc:PeopleGroupCommunity). gc:PeopleGroupClassificationScheme 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 gc: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:PeopleGroupPopulationSegment. It's a gc: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:assessmentResultOfPopulationSegment) 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 gc:assessmentTarget / gc:resultTarget superproperties:
| Subproperty | Of | Range |
|---|---|---|
gc:assessesPopulationSegment | gc:assessmentTarget | gc:PeopleGroupPopulationSegment |
gc:resultForPopulationSegment | gc:resultTarget | gc:PeopleGroupPopulationSegment |
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 gc: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:PeopleGroupClassificationScheme (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.
