Skip to main content

Population Measurement Ontology

Biological Measurements
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 16 September 2026
Audio Overview
# Population Measurement Ontology — Flow Algebra

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/biological-measurements/population-measurement-ontology.html

FLOW PopulationMeasurementOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Biological Measurements
    -> Population Measurement Ontology

  PURPOSE:
    Represent biological population measurement as the quantitative estimation or observation of population size, abundance, density, distribution, occupancy, demographic structure, growth, survival, recruitment, mortality and movement for a defined biological population, including census and sampling methods, capture-recapture, quadrats, transects, detection probability, spatial and temporal context, model-based inference, uncertainty, and distinctions between observed sample counts and inferred population quantities.

  ENTITY BiologicalPopulation {
    TYPE: BiologicalCollectiveEntity

    DEFINITION:
      population :=
        defined_set_of_organisms_or_biological_units
        satisfying_taxonomic_spatial_temporal_and_membership_criteria

    REQUIRE:
      entity_identity
      population_boundary
      reference_time_or_period
  }

  ENTITY PopulationSize {
    TYPE: DiscretePopulationQuantity
    SYMBOL: N
    DIMENSION: dimensionless_count

    DEFINITION:
      number_of_population_members_at_defined_time

    PROPERTIES:
      nonnegative
      population_specific
      time_dependent
      may_be_observed_or_estimated
      may_have_uncertainty
  }

  ENTITY PopulationDensity {
    TYPE: PopulationPerSpatialUnitQuantity
    SYMBOL: D

    COMMON_FORMS:
      individuals_per_square_metre
      individuals_per_hectare
      individuals_per_cubic_metre

    FORM:
      D = N/A
      OR
      D = N/V
      according_to_spatial_basis
  }

  ENTITY RelativeAbundance {
    TYPE: DimensionlessRelativeQuantity

    FORM:
      p_i = N_i/sum(N_j)

    RULE:
      relative_abundance != absolute_population_size
  }

  ENTITY Occupancy {
    TYPE: DimensionlessSpatialOccurrenceQuantity
    SYMBOL: psi

    INTERPRETATION:
      probability_or_fraction_of_defined_sites_occupied
      under_declared_sampling_model
  }

  UNIT_SYSTEM {
    population_size:
      dimensionless_count

    density:
      individuals/area
      individuals/volume

    rates:
      per_time
      individuals/time
      fraction_per_time

    probabilities_and_fractions:
      dimensionless

    RULE:
      unit_and_denominator_basis MUST match_population_quantity
  }

  POPULATION_DEFINITION_MODEL {
    dimensions:
      taxonomic_identity
      life_stage
      sex_when_relevant
      genotype_or_subpopulation
      geographic_boundary
      habitat
      time
      inclusion_criteria

    RULE:
      population_measurement_without_population_definition
      is_semantically_incomplete
  }

  CENSUS_MODEL {
    complete_census:
      attempt_to_count_all_population_members

    observed_count:
      N_obs

    ideal_complete_detection:
      N_population = N_obs

    RULE:
      census_count_equals_population_size ONLY when_coverage_and_detection_are_effectively_complete
  }

  SAMPLE_COUNT_MODEL {
    sample_count:
      n_sample

    sampling_fraction:
      f_sample =
        sampled_area_or_volume/total_area_or_volume
      under_uniform_spatial_sampling_context

    simple_expansion:
      N_hat =
        n_sample/f_sample
      WHEN f_sample != 0
      AND representativeness_conditions_apply

    RULE:
      sample_count MUST NOT automatically_be_treated_as_population_size
  }

  DENSITY_MODEL {
    area_based:
      D_A = N/A
      WHEN A != 0

    volume_based:
      D_V = N/V
      WHEN V != 0

    population_estimate:
      N_hat = D_hat*A_total
      under_area_density_context

    RULE:
      spatial_basis_and_boundary MUST be preserved
  }

  QUADRAT_MODEL {
    sampled_quadrats:
      q = 1..k

    quadrat_density:
      D_q = N_q/A_q

    mean_density:
      D_mean =
        sum(N_q)/sum(A_q)
      for_area_weighted_combination

    population_estimate:
      N_hat = D_mean*A_total

    REQUIRE:
      quadrat_area
      placement_design
      habitat_boundary
      number_of_quadrats

    RULE:
      quadrat_placement_and_sampling_design affect_inference
  }

  TRANSECT_MODEL {
    types:
      line_transect
      belt_transect
      point_transect

    measurements:
      detections
      distance_from_line_or_point
      transect_length
      surveyed_area

    RULE:
      detection_probability_may_decline_with_distance
      and_requires_model_when_estimating_absolute_density
  }

  DISTANCE_SAMPLING_MODEL {
    detection_function:
      g(y)

    key_assumption:
      detection_at_reference_line_or_point
      often_modelled_as g(0)=1

    estimated_density:
      derived_from_detection_count
      survey_effort
      effective_detection_width_or_area

    REQUIRE:
      detection_distances
      survey_effort
      detection_function_model

    RULE:
      raw_detection_count != population_density
  }

  CAPTURE_RECAPTURE_MODEL {
    two_sample_Lincoln_Petersen:
      N_hat =
        (n_1*n_2)/m_2

    WHERE:
      n_1 = individuals_marked_first_sample
      n_2 = individuals_captured_second_sample
      m_2 = marked_individuals_recaptured

    REQUIRE:
      m_2 != 0

    Chapman_estimator:
      N_hat =
        ((n_1+1)*(n_2+1)/(m_2+1))-1

    ASSUMPTIONS:
      closed_population
      marks_retained
      marked_and_unmarked_have_comparable_capture_probability
      individuals_correctly_identified

    RULE:
      estimator_and_assumptions MUST be declared
  }

  OPEN_POPULATION_MODEL {
    processes:
      birth
      death
      immigration
      emigration

    population_balance:
      N_t2 =
        N_t1
        + births
        - deaths
        + immigration
        - emigration

    RULE:
      closed_population_estimators MUST NOT be applied_to_materially_open_populations_without_adjustment
  }

  GROWTH_MODEL {
    finite_growth:
      lambda_growth =
        N_t1/N_t0
      WHEN N_t0 != 0

    continuous_rate:
      r =
        ln(N_t1/N_t0)/(t_1-t_0)
      WHEN counts_positive_and_time_interval_nonzero

    exponential:
      N(t) = N_0*exp(r*t)

    RULE:
      finite_lambda_and_continuous_r_are_not_semantically_identical
  }

  LOGISTIC_GROWTH_MODEL {
    differential:
      dN/dt =
        r*N*(1-N/K)

    PARAMETERS:
      r = intrinsic_growth_rate
      K = carrying_capacity

    RULE:
      carrying_capacity_is_model_parameter
      and_not_necessarily_fixed_observed_maximum_population
  }

  DEMOGRAPHIC_MODEL {
    quantities:
      births
      deaths
      immigration
      emigration
      recruitment
      survival
      fecundity

    per_capita_birth_rate:
      b = births/(population*time_interval)
      under_declared_basis

    per_capita_death_rate:
      d = deaths/(population*time_interval)

    RULE:
      denominator_population_and_time_interval MUST be explicit
  }

  SURVIVAL_MODEL {
    survival_probability:
      S = survivors/initial_at_risk
      under_simple_cohort_context

    mortality_probability:
      q = deaths/initial_at_risk

    simple_complete_binary_outcome:
      S + q = 1

    RULE:
      survival_probability != population_growth_rate
  }

  AGE_STAGE_STRUCTURE_MODEL {
    classes:
      age_classes
      life_stages
      size_classes

    vector:
      n_t = [n_1, n_2, ..., n_k]

    projection:
      n_(t+1) = A_matrix*n_t

    possible_matrix:
      Leslie_matrix
      Lefkovitch_matrix

    RULE:
      structured_population_model MUST preserve_class_definitions
  }

  SEX_RATIO_MODEL {
    ratio:
      N_group_A/N_group_B

    fraction:
      N_group_A/N_total

    RULE:
      ratio_and_fraction_are_not_interchangeable
  }

  OCCUPANCY_MODEL {
    naive_occupancy:
      occupied_sites/total_sites

    detection_corrected:
      psi inferred_jointly_with_detection_probability_p

    observation:
      detection/non_detection

    RULE:
      non_detection != confirmed_absence_when_detection_probability_less_than_one
  }

  DETECTION_PROBABILITY_MODEL {
    symbol:
      p_detect

    relation:
      expected_observed_count MAY depend_on
        true_abundance
        detection_probability
        sampling_effort

    RULE:
      detection_probability MUST be considered_when_incomplete_detection_is_material
  }

  MARKING_MODEL {
    methods:
      tags
      bands
      PIT_tags
      natural_marks
      genetic_identity
      photographic_identity

    possible_errors:
      mark_loss
      misidentification
      behavioural_response
      differential_survival

    RULE:
      mark_integrity_and_identification_error affect_capture_recapture_inference
  }

  SPATIAL_DISTRIBUTION_MODEL {
    patterns:
      random
      uniform
      aggregated
      clustered

    measures:
      local_density
      spatial_variance
      occupancy
      range
      distribution_map

    RULE:
      heterogeneous_distribution_can_bias_simple_uniform_expansion_estimators
  }

  TEMPORAL_MODEL {
    population:
      N = N(t)

    repeated_surveys:
      time_series_of_counts_or_estimates

    REQUIRE:
      survey_date
      season
      duration
      comparable_method

    RULE:
      temporal_comparisons SHOULD preserve_sampling_effort_and_detection_method
  }

  RELATIVE_ABUNDANCE_MODEL {
    fraction:
      p_i = N_i/N_total

    percentage:
      100*p_i

    RULE:
      relative_abundance_can_change_without_absolute_population_change
      if_other_components_change
  }

  INDEX_OF_ABUNDANCE_MODEL {
    examples:
      catch_per_unit_effort
      sightings_per_hour
      tracks_per_kilometre
      acoustic_detections_per_time

    generic:
      index = detections/effort

    RULE:
      abundance_index != absolute_population_size
      unless_valid_calibration_or_model_links_them
  }

  RELATIONSHIPS {
    PopulationMeasurement -> MEASURES -> BiologicalPopulation
    PopulationSize -> COUNTS -> PopulationMembers
    PopulationDensity -> RELATES -> PopulationSizeAndAreaOrVolume
    SampleCount -> ESTIMATES -> PopulationQuantity
    DetectionProbability -> QUALIFIES -> Observation
    CaptureRecapture -> ESTIMATES -> PopulationSize
    QuadratSampling -> ESTIMATES -> PopulationDensity
    DistanceSampling -> ESTIMATES -> DetectionCorrectedDensity
    Births -> INCREASE -> PopulationSize
    Deaths -> DECREASE -> PopulationSize
    Immigration -> INCREASE -> PopulationSize
    Emigration -> DECREASE -> PopulationSize
    PopulationStructure -> PARTITIONS -> Population
    Occupancy -> DESCRIBES -> SpatialOccurrence
  }

  SEMANTIC_EQUIVALENCE {
    "population abundance" ~= population_size WHEN absolute_count_context
    "population density" ~= individuals_per_defined_spatial_unit

    sample_count != population_size
    abundance != density
    relative_abundance != absolute_abundance
    occupancy != density
    detection != presence_with_certainty
    non_detection != absence
    population_growth_rate != survival_rate
    abundance_index != absolute_population_size
  }

  CONSTRAINTS {
    population_identity_must_be_defined = true
    spatial_boundary_must_be_defined = true
    temporal_reference_must_be_defined = true
    population_size_must_be_nonnegative = true
    density_requires_nonzero_spatial_denominator = true
    sample_count_and_population_size_are_not_semantically_equivalent = true
    detection_probability_should_be_modelled_when_incomplete_detection_is_material = true
    capture_recapture_assumptions_must_be_declared = true
    sampling_design_and_effort_must_be_preserved = true
    uncertainty_should_include_sampling_and_model_components = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      PopulationSize
      PopulationDensity
      RelativeAbundance
      Occupancy
      GrowthRate
      Survival
      Recruitment
      Mortality

    COMMON_METHODS:
      census
      quadrat_sampling
      transect_sampling
      distance_sampling
      capture_recapture
      camera_trapping
      acoustic_monitoring
      genetic_mark_recapture
      aerial_survey
      remote_sensing
      environmental_DNA_inference

    RECORD:
      population_definition
      species_or_entity
      life_stage
      geographic_boundary
      habitat
      survey_time
      numerical_value
      unit
      quantity_type
      sample_count
      sample_area_or_volume
      sampling_design
      survey_effort
      detection_method
      detection_probability
      estimator
      model_assumptions
      marks_or_identifiers_when_relevant
      replicate_surveys
      environmental_conditions
      uncertainty
      provenance

    UNCERTAINTY:
      population_measurement = best_estimate +/- uncertainty
  }

  SAMPLING_MODEL {
    designs:
      simple_random
      stratified_random
      systematic
      cluster
      adaptive
      transect
      quadrat

    REQUIRE:
      sampling_frame
      sample_size
      inclusion_probability_or_design
      spatial_coverage

    RULE:
      estimator MUST be compatible_with_sampling_design
  }

  UNCERTAINTY_MODEL {
    sources:
      counting_error
      sampling_variance
      detection_probability
      spatial_heterogeneity
      temporal_variability
      mark_loss
      misidentification
      movement
      immigration_emigration
      model_selection
      parameter_estimation
      habitat_boundary
      survey_effort

    PROPAGATION:
      population_estimate_uncertainty
      <- observation_sampling_detection_and_model_uncertainties
  }

  REASONING_RULES {
    IF complete_census_and_detection_complete
      THEN population_size = observed_count

    IF population_size_known AND area != 0
      THEN population_density = population_size/area

    IF density_known AND total_area_known
      THEN estimated_population_size = density*total_area

    IF sample_count_known AND sampling_fraction != 0
      AND representative_uniform_sampling_conditions
      THEN population_estimate = sample_count/sampling_fraction

    IF first_capture_second_capture_and_recaptured_counts_known
      AND recaptured_count != 0
      THEN Lincoln_Petersen_estimate =
        first_capture*second_capture/recaptured_count

    IF initial_and_final_population_counts_positive
      AND time_interval != 0
      THEN continuous_growth_rate =
        ln(final_population/initial_population)/time_interval

    IF births_deaths_immigration_emigration_known
      THEN final_population =
        initial_population + births - deaths + immigration - emigration

    IF occupied_sites_and_total_sites_known AND total_sites != 0
      THEN naive_occupancy =
        occupied_sites/total_sites

    IF detection_history_and_detection_model_known
      THEN infer_detection_corrected_occupancy_or_abundance

    IF component_counts_known AND total_count != 0
      THEN relative_abundance =
        component_count/total_count
  }

  VALIDATION {
    CHECK population_definition
    CHECK species_or_entity_identity
    CHECK spatial_boundary
    CHECK temporal_reference
    CHECK population_size_nonnegative
    CHECK quantity_type
    CHECK sample_vs_population_quantity
    CHECK density_spatial_basis
    CHECK sampling_design
    CHECK survey_effort
    CHECK detection_probability
    CHECK capture_recapture_assumptions
    CHECK open_vs_closed_population
    CHECK mark_loss_and_identification
    CHECK abundance_vs_relative_abundance
    CHECK occupancy_vs_density
    CHECK growth_vs_survival
    CHECK estimator_model_compatibility
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    population_definition_confidence: 1.00
    count_relationship_confidence: 1.00
    density_relationship_confidence: 1.00
    capture_recapture_confidence: 0.97
    detection_model_confidence: 0.96
    sampling_context_confidence: 0.97
    measurement_context_confidence: 0.97

    RULE:
      confidence decreases when population boundary, sampling design,
      detection probability, survey effort, movement,
      estimator assumptions or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_survey:
      identify_population
      identify_spatial_boundary
      attach_temporal_reference
      identify_quantity_type
      attach_observed_counts
      attach_sampling_design_and_effort
      identify_detection_method
      estimate_detection_probability_when_model_available
      apply_valid_population_estimator
      preserve_raw_observations
      attach_uncertainty
      update_population_state

    ON repeated_survey:
      preserve_previous_population_estimate
      attach_new_timepoint
      compare_sampling_method_and_effort
      recompute_growth_or_change_when_comparable
      update_time_series

    ON detection_model_revision:
      preserve_raw_detection_history
      preserve_previous_model
      apply_new_detection_model
      recompute_population_estimate
      update_uncertainty
      update_confidence

    ON population_boundary_change:
      preserve_previous_boundary
      attach_new_boundary
      avoid_direct_comparison_without_standardisation
      recompute_density_or_abundance_when_valid

    ON demographic_update:
      update_births
      update_deaths
      update_immigration
      update_emigration
      recompute_population_balance
      preserve_process_provenance

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_domain: PopulationMeasurement
    primary_entity: PopulationSize
    primary_symbol: N

    interpretation_order:
      identify_population
      identify_species_or_entity
      identify_population_boundary
      identify_time
      identify_population_size_density_relative_abundance_or_occupancy
      identify_observed_or_inferred_status
      identify_sample_count
      identify_sampling_design
      identify_survey_effort
      identify_detection_probability
      identify_estimator_and_assumptions
      identify_open_or_closed_population_context
      identify_demographic_processes
      identify_uncertainty
      validate_population_definition
      infer_population_relationships

    ambiguity_controls:
      distinguish_sample_count_from_population_size
      distinguish_abundance_from_density
      distinguish_absolute_from_relative_abundance
      distinguish_occupancy_from_density
      distinguish_detection_from_confirmed_presence
      distinguish_non_detection_from_absence
      distinguish_population_growth_from_survival
      distinguish_abundance_index_from_absolute_population_size
      preserve_population_boundary_time_sampling_detection_and_model_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_biological_population_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Biological Measurements
      -> Population Measurement Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_domain
      ontology_path
      population_definition_model
      census_model
      sample_count_model
      density_model
      quadrat_model
      transect_model
      distance_sampling_model
      capture_recapture_model
      open_population_model
      growth_model
      logistic_growth_model
      demographic_model
      survival_model
      age_stage_structure_model
      occupancy_model
      detection_probability_model
      spatial_distribution_model
      temporal_model
      relative_abundance_model
      index_of_abundance_model
      relationships
      constraints
      measurement_model
      sampling_model
      uncertainty_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      population_definition_changes
      sampling_model_changes
      detection_model_changes
      estimator_model_changes
      demographic_model_changes
      spatial_or_temporal_model_changes
      measurement_model_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ