FLOW ALGEBRA
TITLE: Demography Domain Ontology
VERSION: 1.0
DOMAIN: Social Science / Demography
SOURCE_URL: https://kirethresearch.org/booksai-core/ontologies/domain-ontologies/social-science-domains/demography-domain-ontology.html
STATUS: Domain-derived ontology draft; source page content not independently verified.
1. PURPOSE
Represent populations, demographic events, population structures, migration, fertility, mortality, and demographic change as typed, traceable semantic relations. Distinguish observed measurements from estimates, projections, and causal hypotheses.
2. TYPED ENTITIES
ENTITY Population {population_id:str, geographic_area:GeographicArea, reference_time:DateOrPeriod, size:int?, source:DataSource}
ENTITY PopulationGroup {group_id:str, population:Population, criteria:Classification, count:int?}
ENTITY GeographicArea {area_id:str, name:str, boundary_version:str?, spatial_reference:str?}
ENTITY DemographicEvent {event_id:str, event_type:EventType, event_date:date?, area:GeographicArea?, provenance:DataSource}
ENTITY Birth EXTENDS DemographicEvent {maternal_age:int?, live_birth:bool?}
ENTITY Death EXTENDS DemographicEvent {age_at_death:float?, cause_category:str?}
ENTITY MigrationEvent EXTENDS DemographicEvent {origin:GeographicArea, destination:GeographicArea, period:DateOrPeriod}
ENTITY Census {census_id:str, enumeration_date:date, coverage:GeographicArea, methodology:str}
ENTITY Survey {survey_id:str, sample_frame:str, weights_available:bool, reference_period:DateOrPeriod}
ENTITY DemographicIndicator {indicator_id:str, measure:str, value:float?, unit:str, period:DateOrPeriod, area:GeographicArea, source:DataSource}
ENTITY Cohort {cohort_id:str, birth_period:DateOrPeriod, population:Population}
ENTITY Projection {projection_id:str, base_population:Population, horizon:DateOrPeriod, assumptions:list, scenario:str}
ENTITY DataSource {source_id:str, publisher:str, publication_date:date?, methodology:str?, licence:str?}
TYPE EventType = Birth | Death | Immigration | Emigration | InternalMigration
TYPE Classification = AgeGroup | SexCategory | HouseholdType | EducationLevel | OtherDefinedCategory
3. RELATIONSHIPS
Population --LOCATED_IN--> GeographicArea
Population --OBSERVED_AT--> DateOrPeriod
Population --HAS_SUBGROUP--> PopulationGroup
PopulationGroup --DEFINED_BY--> Classification
Birth --INCREASES--> Population
Death --DECREASES--> Population
MigrationEvent --ORIGINATES_IN--> GeographicArea
MigrationEvent --ARRIVES_IN--> GeographicArea
Census --ENUMERATES--> Population
Survey --ESTIMATES--> DemographicIndicator
DemographicIndicator --MEASURES--> Population
Projection --PROJECTS--> Population
Projection --ASSUMES--> ScenarioAssumption
Observation --DERIVED_FROM--> DataSource
4. CORE FLOW OPERATORS
FLOW PopulationBalance:
INPUT P_start, births, deaths, immigration, emigration, adjustments
REQUIRE all values refer to a consistent area, time interval and population definition
OUTPUT P_end = P_start + births - deaths + immigration - emigration + adjustments
FLOW CrudeBirthRate:
INPUT live_births, mid_period_population
REQUIRE mid_period_population > 0
OUTPUT births_per_1000 = 1000 * live_births / mid_period_population
FLOW CrudeDeathRate:
INPUT deaths, mid_period_population
REQUIRE mid_period_population > 0
OUTPUT deaths_per_1000 = 1000 * deaths / mid_period_population
FLOW NetMigration:
INPUT immigration, emigration
OUTPUT net_migration = immigration - emigration
FLOW PopulationGrowthRate:
INPUT P_start, P_end, period_years
REQUIRE P_start > 0 AND period_years > 0
OUTPUT annualised_growth = (P_end / P_start)^(1 / period_years) - 1
FLOW AgeDependencyRatio:
INPUT younger_count, older_count, working_age_count, age_band_definitions
REQUIRE working_age_count > 0
OUTPUT ratio = 100 * (younger_count + older_count) / working_age_count
NOTE age-band definitions must be explicitly retained; this is an age-structure indicator, not a direct measure of economic dependency.
5. INFERENCE RULES
RULE NaturalIncrease:
IF births > deaths over matching population, area and interval
THEN natural_change > 0
RULE NetOutMigration:
IF emigration > immigration over matching definitions and interval
THEN net_migration < 0
RULE PopulationAgeingSignal:
IF share_older(t2) > share_older(t1) with comparable age thresholds and coverage
THEN observed_population_ageing = true
NOTE does not by itself establish a cause.
RULE ProjectionNotObservation:
IF value generated by demographic scenario assumptions
THEN classify value as projection, NOT observed_population_count
RULE NonComparableSeries:
IF area boundaries OR collection methods OR demographic definitions differ materially
THEN require harmonisation or comparison warning.
6. CONFIDENCE
CONFIDENCE := {score:float[0,1], basis:str, uncertainty_interval:str?, limitations:list}
ASSESS confidence using sampling uncertainty, coverage, registration completeness, methodological consistency, recency and source reliability.
DO NOT treat model confidence as a substitute for reported statistical uncertainty.
7. SEMANTIC_EQUIVALENCE
SEMANTIC_EQUIVALENCE('population count','population size') WHEN reference area/time/definition match.
SEMANTIC_EQUIVALENCE('natural change','births minus deaths') WHEN event definitions and period match.
NOT_EQUIVALENT('fertility rate','crude birth rate').
NOT_EQUIVALENT('life expectancy','average age at death').
NOT_EQUIVALENT('migration stock','migration flow').
NOT_EQUIVALENT('population estimate','population projection').
8. PROVENANCE
PROVENANCE := {source_id, dataset_id?, table_id?, retrieval_date?, reference_period, geographic_boundary_version?, methodology, transformation_history, licence?}
REQUIRE provenance for every published observation, estimate and projection.
9. FLOW_HASH
FLOW_HASH := SHA256(canonicalise({title, version, entity_schema, relationships, rules, operators, source_url}))
NOTE hash is computed on implementation; no uncomputed digest is asserted here.
10. UPDATE_MODEL
UPDATE_MODEL:
ON new census, vital-registration release, migration dataset, boundary revision or methodological revision:
validate source and schema;
preserve historical versions;
reconcile geographic and temporal definitions;
recalculate dependent indicators;
record change provenance and uncertainty;
recompute FLOW_HASH;
flag affected projections for review.
11. AI_CONSUMPTION
AI_CONSUMPTION:
format: typed semantic graph + explicit computation flows
expose: entities, relationships, units, time ranges, geographical boundaries, confidence, provenance
require: distinction between observations, estimates, forecasts and hypotheses
prohibit: unsupported causal inference; disclosure of identifiable personal records; false precision
enable: population queries, demographic comparisons, cohort analysis, scenario exploration and evidence-traceable summaries.
12. VALIDATION
CHECK nonnegative population/event counts.
CHECK denominator and period compatibility for rates.
CHECK missing data and suppression rules for small groups.
CHECK projections are labelled by scenario and assumptions.
CHECK population balance reconciliation and boundary changes.
CHECK sensitive demographic categories are contextually defined and responsibly handled.
END FLOW ALGEBRA
Download Code
Copy to Clipboard