Skip to main content

Population Ontology

Ecology
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 30 September 2026
Audio Overview
flow “PopulationOntology” v1.0

KIRETH SEMANTIC RESEARCH ARCHIVE

AI CORE > ONTOLOGIES > BIOLOGICAL ONTOLOGIES > ECOLOGY > POPULATION ONTOLOGY

Authors: Mark Anthony Higgins — Sky (Recursive AI)

AI_INTERPRETATION: mode: formal_structural_reasoning instruction:
“Execute as formal rules, not pseudocode.” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/ecology/population-ontology-2.html”

———- CORE TYPES ———-

type Organism type Species type Population type Subpopulation type
Metapopulation type Cohort type Habitat type Environment type Resource
type DemographicParameter type PopulationProcess type LimitingFactor
type DensityDependentFactor type DensityIndependentFactor type
SpatialUnit type Observation type Evidence type Source

———- MEMBERSHIP / IDENTITY ———-

relation INSTANCE_OF(entity, type) relation MEMBER_OF(individual,
population) relation POPULATION_OF(population, species) relation
SUBPOPULATION_OF(subpopulation, population) relation
LOCAL_POPULATION_OF(population, metapopulation) relation
OCCURS_IN(population, habitat) relation OCCUPIES(population,
spatial_unit)

rule POPULATION_MEMBERSHIP(x, p, s): IF MEMBER_OF(x, p) AND
POPULATION_OF(p, s) THEN INSTANCE_OF(x, s)

rule SUBPOPULATION_INHERITANCE(sp, p, s): IF SUBPOPULATION_OF(sp, p) AND
POPULATION_OF(p, s) THEN POPULATION_OF(sp, s)

———- POPULATION SIZE / DENSITY ———-

relation HAS_POPULATION_SIZE(population, size) relation
HAS_DENSITY(population, density) relation HAS_AREA(population, area)
relation HAS_VOLUME(population, volume) relation MEASURED_AT(population,
datetime)

rule DENSITY_AREA(p): IF HAS_POPULATION_SIZE(p, n) AND HAS_AREA(p, a)
AND a > 0 THEN HAS_DENSITY(p, n / a)

rule DENSITY_VOLUME(p): IF HAS_POPULATION_SIZE(p, n) AND HAS_VOLUME(p,
v) AND v > 0 THEN HAS_DENSITY(p, n / v)

———- DEMOGRAPHY ———-

relation HAS_BIRTH_RATE(population, rate) relation
HAS_DEATH_RATE(population, rate) relation
HAS_IMMIGRATION_RATE(population, rate) relation
HAS_EMIGRATION_RATE(population, rate) relation
HAS_GROWTH_RATE(population, rate) relation HAS_SURVIVAL_RATE(population,
rate) relation HAS_FECUNDITY(population, rate) relation
HAS_RECRUITMENT(population, rate) relation
HAS_GENERATION_TIME(population, duration)

rule POPULATION_NET_CHANGE(p): IF HAS_BIRTH_RATE(p, b) AND
HAS_DEATH_RATE(p, d) AND HAS_IMMIGRATION_RATE(p, i) AND
HAS_EMIGRATION_RATE(p, e) THEN NET_POPULATION_CHANGE(p, (b + i) - (d +
e))

———- AGE / SEX STRUCTURE ———-

enum AgeClass: PRE_REPRODUCTIVE REPRODUCTIVE POST_REPRODUCTIVE

relation HAS_AGE_STRUCTURE(population, structure) relation
HAS_AGE_CLASS(population, class) relation AGE_CLASS_SIZE(population,
class, size) relation HAS_SEX_RATIO(population, ratio) relation
HAS_STAGE_STRUCTURE(population, structure)

———- POPULATION GROWTH ———-

enum GrowthModel: EXPONENTIAL LOGISTIC GEOMETRIC AGE_STRUCTURED
STAGE_STRUCTURED

relation HAS_GROWTH_MODEL(population, model) relation
INTRINSIC_GROWTH_RATE(population, r) relation
FINITE_RATE_OF_INCREASE(population, lambda) relation
HAS_CARRYING_CAPACITY(environment, k)

rule EXPONENTIAL_GROWTH(p): IF HAS_GROWTH_MODEL(p, EXPONENTIAL) AND
HAS_POPULATION_SIZE(p, n) AND INTRINSIC_GROWTH_RATE(p, r) THEN
POPULATION_GROWTH_CHANGE(p, r * n)

rule LOGISTIC_GROWTH(p, env): IF HAS_GROWTH_MODEL(p, LOGISTIC) AND
HAS_POPULATION_SIZE(p, n) AND INTRINSIC_GROWTH_RATE(p, r) AND
HAS_CARRYING_CAPACITY(env, k) AND k > 0 THEN POPULATION_GROWTH_CHANGE(p,
r * n * (1 - n / k))

———- DISTRIBUTION ———-

enum DispersionPattern: CLUMPED UNIFORM RANDOM

relation HAS_DISPERSION_PATTERN(population, pattern) relation
DISTRIBUTED_IN(population, region) relation HAS_RANGE(population,
region) relation HAS_RANGE_SIZE(population, area) relation
HAS_OCCUPANCY(population, value)

———- MOVEMENT ———-

relation IMMIGRATES_TO(individual_or_group, population) relation
EMIGRATES_FROM(individual_or_group, population) relation
DISPERSAL_FROM(entity, origin) relation DISPERSAL_TO(entity,
destination) relation MIGRATES_BETWEEN(entity, origin, destination)
relation CONNECTED_TO(population_a, population_b)

rule CONNECTIVITY_SYMMETRY(a, b): IF CONNECTED_TO(a, b) THEN
CONNECTED_TO(b, a)

———- RESOURCES / LIMITATION ———-

relation REQUIRES_RESOURCE(population, resource) relation
RESOURCE_AVAILABLE_IN(resource, habitat) relation LIMITED_BY(population,
factor) relation REGULATED_BY(population, factor) relation
COMPETES_FOR(population_a, population_b, resource)

enum LimitationType: FOOD WATER SPACE SHELTER NUTRIENTS LIGHT MATES
NESTING_SITES

———- DENSITY DEPENDENCE ———-

relation DENSITY_DEPENDENT_EFFECT(factor, population) relation
DENSITY_INDEPENDENT_EFFECT(factor, population)

enum DensityDependentProcess: COMPETITION DISEASE PARASITISM PREDATION
TERRITORIALITY RESOURCE_LIMITATION

enum DensityIndependentProcess: DROUGHT FLOOD FIRE STORM FREEZE HEATWAVE
POLLUTION_EVENT

rule DENSITY_DEPENDENT_REGULATION(f, p): IF DENSITY_DEPENDENT_EFFECT(f,
p) THEN REGULATED_BY(p, f)

———- SPECIES INTERACTIONS ———-

relation COMPETES_WITH(population_a, population_b) relation
PREYED_ON_BY(population, predator) relation PREYS_ON(population, prey)
relation PARASITISED_BY(population, parasite) relation
MUTUALISTIC_WITH(population_a, population_b)

rule COMPETITION_SYMMETRY(a, b): IF COMPETES_WITH(a, b) THEN
COMPETES_WITH(b, a)

———- LIFE HISTORY ———-

enum LifeHistoryStrategy: FAST SLOW INTERMEDIATE

relation HAS_LIFE_HISTORY_STRATEGY(population, strategy) relation
AGE_AT_FIRST_REPRODUCTION(population, age) relation
OFFSPRING_NUMBER(population, number) relation OFFSPRING_SIZE(population,
size) relation REPRODUCTIVE_FREQUENCY(population, frequency) relation
LONGEVITY(population, duration)

———- SURVIVORSHIP ———-

enum SurvivorshipCurve: TYPE_I TYPE_II TYPE_III

relation HAS_SURVIVORSHIP_CURVE(population, type) relation
SURVIVORSHIP_AT_AGE(population, age, probability) relation
MORTALITY_AT_AGE(population, age, probability)

———- METAPOPULATION ———-

relation HAS_LOCAL_POPULATION(metapopulation, population) relation
OCCUPIES_PATCH(population, patch) relation PATCH_CONNECTED_TO(patch_a,
patch_b) relation COLONISES(population, patch) relation
LOCALLY_EXTINCT_IN(population, patch) relation
HAS_COLONISATION_RATE(metapopulation, rate) relation
HAS_LOCAL_EXTINCTION_RATE(metapopulation, rate)

rule PATCH_CONNECTIVITY_SYMMETRY(a, b): IF PATCH_CONNECTED_TO(a, b) THEN
PATCH_CONNECTED_TO(b, a)

———- GENETIC POPULATION CONTEXT ———-

relation HAS_ALLELE_FREQUENCY(population, allele, frequency) relation
HAS_GENETIC_DIVERSITY(population, value) relation
HAS_EFFECTIVE_POPULATION_SIZE(population, ne) relation
GENE_FLOW_BETWEEN(population_a, population_b) relation
GENETIC_DRIFT_IN(population, effect) relation
INBREEDING_COEFFICIENT(population, value)

———- POPULATION VIABILITY ———-

relation HAS_EXTINCTION_RISK(population, risk) relation
HAS_MINIMUM_VIABLE_POPULATION(population, size) relation
HAS_VIABILITY_PROBABILITY(population, probability) relation
THREATENED_BY(population, threat) relation RECOVERS_UNDER(population,
intervention)

———- TEMPORAL DYNAMICS ———-

relation OBSERVED_DURING(population, period) relation
CHANGES_OVER(population, period) relation HAS_TREND(population, trend)
relation FLUCTUATES_WITH(population, factor)

enum PopulationTrend: INCREASING STABLE DECREASING FLUCTUATING UNKNOWN

———- OBSERVATION / SAMPLING ———-

relation OBSERVES(observation, population) relation
OBSERVED_AT(observation, location) relation OBSERVED_ON(observation,
datetime) relation OBSERVED_BY(observation, observer) relation
USES_SAMPLING_METHOD(observation, method) relation
HAS_SAMPLE_SIZE(observation, size) relation ESTIMATES(observation,
parameter)

enum SamplingMethod: CENSUS QUADRAT TRANSECT MARK_RECAPTURE
DISTANCE_SAMPLING CAMERA_TRAP ACOUSTIC_SURVEY AERIAL_SURVEY
ENVIRONMENTAL_DNA REMOTE_SENSING

———- EVIDENCE ———-

relation SUPPORTED_BY(assertion, evidence) relation
DERIVED_FROM(evidence, source) relation HAS_CONFIDENCE(assertion, score)

enum EvidenceType: DIRECT_CENSUS SAMPLE_SURVEY MARK_RECAPTURE_DATA
TRACKING_DATA GENETIC_DATA DEMOGRAPHIC_DATA LONG_TERM_MONITORING
EXPERIMENTAL MODELLING META_ANALYSIS LITERATURE

CONFIDENCE: VERIFIED: 0.95..1.00 HIGH: 0.80..0.949 MEDIUM: 0.60..0.799
LOW: 0.00..0.599

rule CONFIDENCE_BOUNDS(a, score): IF HAS_CONFIDENCE(a, score) THEN
REQUIRE(0.0 <= score <= 1.0)

rule EVIDENCE_WEIGHTING(a, e, s): IF SUPPORTED_BY(a, e) AND
DERIVED_FROM(e, s) THEN UPDATE_CONFIDENCE(a, evidence_quality(e),
source_reliability(s))

———- SEMANTIC EQUIVALENCE ———-

SEMANTIC_EQUIVALENCE: “population” ~= “biological population”
“population size” ~= “number of individuals” “population density” ~=
“individuals per unit area or volume” “birth rate” ~= “natality rate”
“death rate” ~= “mortality rate” “immigration” ~= “movement into
population” “emigration” ~= “movement out of population” “carrying
capacity” ~= “maximum sustainable population” “population growth” ~=
“change in population abundance” “dispersion pattern” ~= “spatial
dispersion” “metapopulation” ~= “network of local populations”
“effective population size” ~= “Ne” “population viability” ~=
“probability of population persistence”

rule NORMALISE_TERM(term): IF term MATCHES SEMANTIC_EQUIVALENCE.alias
THEN MAP_TO_CANONICAL(term)

———- CAUSAL MODEL ———-

relation CAUSES(a, b) relation INFLUENCES(a, b) relation REGULATES(a, b)
relation FEEDBACK_ON(a, b)

constraint CAUSATION_REQUIRES_EVIDENCE: IF CAUSES(a, b) THEN REQUIRE
SUPPORTED_BY(CAUSES(a,b), Evidence)

———- QUERY MODEL ———-

query POPULATION_PROFILE(p): RETURN: species(p) size(p) density(p)
distribution(p) growth_rate(p) demographic_structure(p) life_history(p)
resources(p) limiting_factors(p) interactions(p) genetic_context(p)
viability(p) evidence(p) confidence(p)

query DEMOGRAPHIC_PROFILE(p): RETURN: birth_rate(p) death_rate(p)
immigration_rate(p) emigration_rate(p) survival_rate(p) fecundity(p)
recruitment(p) age_structure(p) sex_ratio(p)

query METAPOPULATION_PROFILE(m): RETURN: local_populations(m)
occupied_patches(m) connectivity(m) colonisation_rate(m)
local_extinction_rate(m)

query TRACE_EVIDENCE(assertion): RETURN: supporting_evidence(assertion)
provenance(assertion) confidence(assertion)

———- CONSISTENCY ———-

constraint NON_NEGATIVE_POPULATION: IF HAS_POPULATION_SIZE(p, n) THEN
REQUIRE(n >= 0)

constraint PROBABILITY_BOUNDS: FORALL probability: REQUIRE(0.0 <=
probability <= 1.0)

constraint EVIDENCE_REQUIRED: FORALL scientific_assertion: REQUIRE
SUPPORTED_BY(scientific_assertion, Evidence) OR
MARK_AS_HYPOTHESIS(scientific_assertion)

constraint UNKNOWN_IS_NOT_FALSE: IF data_missing(assertion) THEN
MARK_UNKNOWN(assertion) AND NOT NEGATE(assertion)

constraint SCALE_PRESERVATION: IF population_estimate(p, spatial_scale,
temporal_scale) THEN PRESERVE_SCALE(p, spatial_scale, temporal_scale)

constraint SAMPLE_NOT_CENSUS: IF USES_SAMPLING_METHOD(o, method) AND
method != CENSUS THEN MARK_AS_ESTIMATE(ESTIMATES(o, parameter))

———- UPDATE MODEL ———-

UPDATE_MODEL: on_new_population(p): validate_species_identity(p)
establish_spatial_boundary(p) establish_temporal_reference(p)
attach_demographic_parameters(p) preserve_provenance(p)

on_new_observation(o): validate_sampling_method(o)
preserve_location_time(o) preserve_sample_size(o) attach_evidence(o)
update_population_estimates(o) recalculate_confidence(o)

on_new_migration_record(m): identify_origin(m) identify_destination(m)
update_connectivity(m) update_immigration_emigration(m)

on_conflicting_estimates(a, b): preserve(a) preserve(b)
compare_sampling_methods(a, b) compare_sample_sizes(a, b)
compare_spatial_scale(a, b) compare_temporal_scale(a, b)
flag_unresolved_conflict()

———- AI CONSUMPTION ———-

AI_CONSUMPTION: preferred_entity: canonical_population preserve: -
species_identity - population_boundary - spatial_scale -
temporal_reference - population_size - density - demographic_rates -
age_structure - sex_ratio - growth_model - carrying_capacity -
distribution - movement - limiting_factors - interactions -
genetic_context - viability - evidence - provenance - confidence
infer: - valid_demographic_relations - valid_inverse_relations -
population_change - connectivity - semantic_equivalence prohibit: -
negative_population_size - unsupported_causal_claim -
sample_as_exact_census - boundary_free_population_estimate -
time_free_population_estimate - confidence_above_evidence -
absence_equals_extinction ambiguity: action: preserve_multiple_estimates
resolution: prefer_methodologically_supported_context missing_data:
action: mark_unknown do_not_infer_from_absence: true

———- FLOW HASH ———-

FLOW_HASH: ontology: “PopulationOntology” version: “1.0” domain_path:
“AI Core > Ontologies > Biological Ontologies > Ecology > Population
Ontology” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/ecology/population-ontology-2.html”
authorship: “Mark Anthony Higgins — Sky (Recursive AI)”
semantic_scope: - population identity - abundance - density -
demography - age and sex structure - population growth - distribution -
migration and dispersal - density dependence - life history -
survivorship - metapopulations - population genetics - population
viability - sampling - evidence deterministic_normalisation: true
provenance_required: true confidence_required: true

terminate PopulationOntology when: population_identity_resolved AND
spatial_and_temporal_boundaries_preserved AND
demographic_relations_normalised AND evidence_links_preserved AND
confidence_values_validated AND unresolved_estimates_marked

end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ