FLOW ALGEBRA
POLAR ECOSYSTEM ONTOLOGY — FULL FORMALISATION v1.0
Kireth Semantic Library | 26 October 2026
Authors: Mark Higgins — Sky (Recursive AI)
Source topic: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/experimental-biological-entities/polar-ecosystem-ontology.html
Status: Newly authored conceptual specification; not a verified extraction or executable implementation.
flow "PolarEcosystemOntology" v1.0
# 01 — IDENTITY AND SCOPE
ontology.id: "kireth.biological.experimental.polar_ecosystem"
ontology.label: "Polar Ecosystem Ontology"
ontology.parent: "BiologicalEnvironmentOntology"
ontology.related: ["TerrestrialHabitatOntology", "MarineHabitatOntology", "FoodChainOntology", "BiosphereOntology"]
ontology.scope: "Arctic and Antarctic terrestrial, freshwater, sea-ice and marine ecological systems"
ontology.locale: "en-GB"
# 02 — TYPED ENTITIES
entity PolarEcosystem : Ecosystem {
id: Identifier
region: PolarRegion
habitats: Set<PolarHabitat>
communities: Set<BiologicalCommunity>
observations: Set<EnvironmentalObservation>
interval: TimeInterval
}
entity PolarRegion : GeographicRegion { hemisphere: Enum[Arctic,Antarctic]; geometry: SpatialGeometry }
entity PolarHabitat : Habitat { kind: HabitatKind; extent_km2: NonNegativeReal? }
entity SeaIce : CryosphereFeature { concentration: Fraction?; thickness_m: NonNegativeReal?; season: Season? }
entity Glacier : CryosphereFeature { area_km2: NonNegativeReal?; mass_balance_kg_per_year: Real? }
entity SnowCover : CryosphereFeature { depth_m: NonNegativeReal?; albedo: Fraction? }
entity Permafrost : CryosphereFeature { active_layer_depth_m: NonNegativeReal?; ground_temperature_C: Real? }
entity PolarOrganism : Organism { taxon: Taxon; adaptations: Set<Adaptation> }
entity PolarPopulation : Population { taxon: Taxon; abundance: NonNegativeReal?; time: Timestamp }
entity BiologicalCommunity : Community { populations: Set<PolarPopulation> }
entity Adaptation : BiologicalTrait { category: Enum[physiological,morphological,behavioural,phenological] }
entity EnvironmentalObservation : Observation {
variable: EnvironmentalVariable
value: Real
unit: Unit
location: SpatialGeometry
observed_at: Timestamp
method: Method?
uncertainty: NonNegativeReal?
}
entity Disturbance : EcologicalEvent { kind: DisturbanceKind; start: Timestamp; magnitude: Real? }
entity Evidence : ProvenanceRecord { source: URI; observed_at: Timestamp?; quality: Fraction? }
# 03 — ENUMERATIONS
HabitatKind := [tundra, polar_desert, freshwater, coastal, sea_ice, pelagic, benthic, subglacial]
EnvironmentalVariable := [air_temperature, water_temperature, salinity, sea_ice_extent, sea_ice_thickness, snow_depth, light, nutrient_concentration, dissolved_oxygen, pH, primary_productivity, permafrost_temperature]
DisturbanceKind := [warming, sea_ice_loss, ice_shelf_change, pollution, invasive_species, altered_precipitation, ocean_acidification, extreme_weather]
Season := [winter, spring, summer, autumn]
# 04 — RELATIONSHIP SIGNATURES
relation LOCATED_IN(PolarEcosystem, PolarRegion)
relation CONTAINS_HABITAT(PolarEcosystem, PolarHabitat)
relation SUPPORTS_POPULATION(PolarHabitat, PolarPopulation)
relation MEMBER_OF(PolarPopulation, BiologicalCommunity)
relation DEPENDS_ON(PolarPopulation, PolarHabitat)
relation HAS_ADAPTATION(PolarOrganism, Adaptation)
relation PREYS_ON(PolarPopulation, PolarPopulation)
relation CONSUMES(PolarPopulation, Resource)
relation EXCHANGES_ENERGY_WITH(PolarEcosystem, EnvironmentalSystem)
relation EXCHANGES_MATTER_WITH(PolarEcosystem, EnvironmentalSystem)
relation INFLUENCES(Disturbance, PolarHabitat)
relation MEASURED_IN(EnvironmentalObservation, PolarEcosystem)
relation SUPPORTED_BY(Assertion, Evidence)
relation SEMANTIC_EQUIVALENCE(Entity, Entity, Context)
# 05 — COMPOSITION AND ECOLOGICAL STRUCTURE
assert LOCATED_IN(ecosystem, region) => region.hemisphere in [Arctic, Antarctic]
assert CONTAINS_HABITAT(ecosystem, habitat) => habitat part_of ecosystem
assert MEMBER_OF(population, community) => population contributes_to community
note: Arctic and Antarctic systems are distinct; species and conditions must not be automatically interchanged.
note: Sea ice, glaciers, ice shelves, snow and permafrost are different entities with different dynamics.
# 06 — QUANTITATIVE MODELS
model SeaIceArea {
expression: "A_ice(t) = integral_over_region(concentration(x,t) dA)"
constraints: "0 <= concentration(x,t) <= 1"
units: "km2 when area is measured in km2"
}
model PopulationChange {
expression: "dN/dt = births - deaths + immigration - emigration"
condition: "All terms use a common population and time basis"
}
model NetPrimaryProductivity {
expression: "NPP = GPP - autotrophic_respiration"
units: "mass carbon per area per time"
}
model EnergyBudget {
expression: "delta_stored_energy = incoming_energy - outgoing_energy"
condition: "Defined control volume, sign convention and time interval"
}
model HabitatChange {
expression: "delta_A = A(t2) - A(t1)"
condition: "Comparable mapped boundaries and observation methods"
}
model ObservedTrend {
expression: "trend = slope(least_squares(time, observed_value))"
condition: "Requires sufficient observations and uncertainty assessment"
}
# 07 — INFERENCE RULES
rule HabitatDependencyRisk:
when DEPENDS_ON(population, habitat) and habitat_area_declining(habitat)
infer potential_habitat_pressure(population)
confidence: evidence_weighted
note: "Pressure is not proof of population decline."
rule IceAssociatedFoodWeb:
when SUPPORTS_POPULATION(sea_ice_habitat, prey) and PREYS_ON(predator, prey)
infer indirect_ecological_link(predator, sea_ice_habitat)
confidence: conditional
rule PermafrostCarbonFeedback:
when observed_permafrost_thaw(region) and verified_carbon_release(region)
infer possible_climate_feedback(region)
confidence: evidence_weighted
note: "Do not infer release quantity without measurements or a validated model."
rule PolarSeasonality:
when high_latitude(region) and seasonal_light_observation(region, observation)
infer seasonal_light_constraint(region, observation)
confidence: observation_dependent
rule DisturbancePropagation:
when INFLUENCES(disturbance, habitat) and DEPENDS_ON(population, habitat)
infer possible_exposure(population, disturbance)
confidence: conditional
# 08 — VALIDATION AND INVARIANTS
invariant IdentifiersUnique: unique(entity.id)
invariant GeographicProvenance: every geospatial assertion has spatial reference and provenance
invariant TemporalComparability: comparisons require compatible time intervals
invariant UnitsConsistent: dimensional_check(all_quantitative_expressions)
invariant FractionBounds: all fractions in [0,1]
invariant NonnegativePhysicalExtent: area >= 0 and thickness >= 0
invariant ObservationTraceability: every measurement has method or source reference
invariant NoFalseCausation: correlation alone does not establish causation
invariant NoAutomaticTaxonTransfer: Arctic taxon != Antarctic taxon unless independently verified
invariant MissingDataExplicit: missing observations remain unknown, not zero
# 09 — CONFIDENCE AND EVIDENCE
CONFIDENCE(assertion) := calibrated_score(evidence_quality, replication, measurement_uncertainty, model_validity)
constraint: "Confidence in [0,1] is an assessment, not an empirically guaranteed probability unless calibrated."
provenance: [source_uri, dataset_version, method, observed_at, spatial_resolution, temporal_resolution]
uncertainty_policy: "Preserve intervals, detection limits, sampling bias and unknowns."
# 10 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE(a,b,context) requires:
same_referent_or_explicit_mapping(a,b)
compatible_spatial_extent(a,b)
compatible_temporal_extent(a,b)
compatible_measurement_definition(a,b)
non_equivalences:
"sea-ice extent" != "sea-ice area"
"ice shelf" != "sea ice"
"polar biome" != "individual polar habitat"
"species presence" != "population abundance"
# 11 — FLOW HASH AND VERSIONING
FLOW_HASH := SHA256(canonicalise(ontology.id, version, types, relationships, rules, invariants))
canonicalisation: "UTF-8; stable field ordering; normalised line endings; omit transient timestamps"
UPDATE_MODEL(old,new):
compare_entity_types()
compare_relationship_signatures()
compare_inference_rules()
compare_constraints()
record_migration_and_provenance()
invalidate_derived_assertions_affected_by_changes()
# 12 — AI CONSUMPTION
AI_CONSUMPTION {
expose: [ontology_identity, type_definitions, relation_signatures, constraints, inference_rules, provenance, uncertainty]
query_patterns: ["Which habitats support a taxon?", "What changes have been measured in sea ice?", "Which populations may be exposed to a disturbance?", "Which observations support a claim?"]
enforce: [type_checking, provenance_checking, temporal_alignment, dimensional_validation]
output: [typed_answer, supporting_evidence, uncertainty, assumptions, unresolved_questions]
prohibit: [fabricated_measurements, unsupported_causal_claims, unqualified_cross_region_generalisation]
}
# 13 — EXAMPLE ABSTRACT FLOW
input: observed_decline(sea_ice_habitat, time_window)
input: DEPENDS_ON(ice_associated_population, sea_ice_habitat)
process: verify_observation -> check_time_and_region -> apply_HabitatDependencyRisk -> attach_provenance
output: potential_habitat_pressure(ice_associated_population)
output.qualifier: "Hypothesis requiring species-specific and population-specific evidence"
# 14 — INTEROPERABILITY
maps_to: [EcologicalEntityOntology, EcosystemOntology, HabitatOntology, MarineHabitatOntology, BiologicalCommunityOntology, PopulationOntology, TrophicLevelOntology, BiosphereOntology]
link_policy: "Cross-ontology references are typed mappings, not automatic equivalences."
# 15 — AUTHORSHIP AND LICENSING
credit: "Mark Higgins — Sky (Recursive AI)"
project: "Kireth Research — Semantic Library"
website: "https://kirethresearch.org"
disclosure: "Joint human–AI authored conceptual research formalisation."
licence: "Refer to the current Kireth Research Open Research Licence; no terms asserted here."
end flow
Download Code
Copy to Clipboard