Skip to main content

Forest Ecosystem Ontology

Environmental Biological Entities
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 26 October 2026
Audio Overview
FLOW ALGEBRA
Forest Ecosystem Ontology — Full Flow Algebra v1.0
Kireth Semantic Library
Authors: Mark Higgins — Sky (Recursive AI)
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/experimental-biological-entities/forest-ecosystem-ontology.html
Status: Proposed conceptual formalisation; not a verified transcription or executable implementation.

flow "ForestEcosystemOntology" v1.0

# 01 — DOMAIN AND PURPOSE
DOMAIN: BiologicalEntities.ExperimentalBiologicalEntities.ForestEcosystem
PURPOSE: Represent forest ecosystem composition, structure, processes, disturbances and ecological evidence in a typed semantic graph.
LOCALE: en-GB

# 02 — ENTITY TYPES
entity ForestEcosystem <: Ecosystem {
  id: URI; biome: Biome?; geographic_extent: Geometry;
  observation_period: TimeInterval; provenance: EvidenceRef[];
}
entity ForestStand <: EcologicalUnit { area_ha: Real>=0; age_structure: Distribution?; }
entity ForestPatch <: Habitat { geometry: Geometry; connectivity_index: Real?; }
entity ForestLayer <: StructuralUnit { kind: enum[canopy,understorey,shrub,herb,forest_floor,root_zone]; }
entity Tree <: Organism { taxon: Taxon; height_m: Real>=0; dbh_cm: Real>=0; }
entity Plant <: Organism { taxon: Taxon; }
entity Animal <: Organism { taxon: Taxon; }
entity Fungus <: Organism { taxon: Taxon; }
entity Microorganism <: Organism { taxon: Taxon; }
entity Population <: EcologicalPopulation { taxon: Taxon; abundance: Real>=0; }
entity BiologicalCommunity <: EcologicalCommunity { diversity_index: Real?; }
entity Deadwood <: OrganicMaterial { mass_kg: Real>=0; decay_class: Integer?; }
entity Litter <: OrganicMaterial { mass_kg: Real>=0; }
entity Soil <: AbioticComponent { pH: Real?; moisture_fraction: Real?; }
entity Water <: AbioticComponent { volume_m3: Real>=0; }
entity Atmosphere <: AbioticComponent { temperature_C: Real?; }
entity NutrientPool <: MaterialPool { element: enum[C,N,P,other]; amount_kg: Real>=0; }
entity CarbonPool <: MaterialPool { amount_kgC: Real>=0; }
entity Disturbance <: EcologicalEvent { kind: enum[fire,storm,drought,flood,pest,disease,logging,other]; }
entity SuccessionalStage <: EcologicalState { kind: enum[pioneer,early,mid,late,old_growth]; }
entity Observation <: Evidence { method: String; timestamp: DateTime; uncertainty: Real?; }

# 03 — TYPED RELATIONSHIPS
relation CONTAINS(ForestEcosystem, ForestStand|ForestPatch|BiologicalCommunity|AbioticComponent)
relation HAS_LAYER(ForestStand, ForestLayer)
relation OCCUPIES(Organism|Population, ForestPatch|ForestLayer)
relation MEMBER_OF(Organism, Population)
relation PART_OF(Population, BiologicalCommunity)
relation INTERACTS_WITH(Organism|Population, Organism|Population)
relation CONSUMES(Organism|Population, Organism|Population|OrganicMaterial)
relation DECOMPOSES(Fungus|Microorganism, Deadwood|Litter)
relation FIXES_CARBON(Plant|Tree, CarbonPool)
relation RELEASES_CARBON(Organism|OrganicMaterial, CarbonPool)
relation TRANSFERS_NUTRIENT(NutrientPool, NutrientPool)
relation AFFECTS(Disturbance, ForestEcosystem|ForestStand|Population)
relation TRANSITIONS_TO(SuccessionalStage, SuccessionalStage)
relation SUPPORTED_BY(Assertion, Observation)
relation ADJACENT_TO(ForestPatch, ForestPatch)

# 04 — FLOW SIGNATURES
flow PrimaryProduction(PlantPopulation, SolarEnergy, CO2, Water) -> Biomass, O2
flow Herbivory(PlantBiomass, HerbivorePopulation) -> ConsumerBiomass, Respiration, Waste
flow Predation(PreyPopulation, PredatorPopulation) -> EnergyTransfer, PopulationEffects
flow Decomposition(DeadOrganicMatter, DecomposerCommunity, Environment) -> MineralNutrients, CO2, StableOrganicMatter
flow NutrientUptake(SoilNutrients, PlantRoots) -> PlantNutrientPool
flow Transpiration(PlantCanopy, SoilWater, Atmosphere) -> WaterVapour
flow Succession(ForestState, DisturbanceHistory, Recruitment, Mortality) -> UpdatedForestState
flow Fragmentation(ForestPatchNetwork, LandUseChange) -> UpdatedConnectivity

# 05 — QUANTITATIVE MODELS (ILLUSTRATIVE)
# Carbon accounting uses consistent area, time and units.
GPP = NPP + autotrophic_respiration
NEP = GPP - ecosystem_respiration
# Net biome production additionally accounts for lateral and disturbance losses.
NBP = NEP - carbon_losses_from_disturbance_and_export + carbon_imports
stand_basal_area_m2 = SUM(PI * (dbh_m / 2)^2 for each measured tree)
canopy_cover_fraction IN [0,1]
soil_moisture_fraction IN [0,1]
# Simplified patch-connectivity indicator, not a universal physical law.
connectivity_index = weighted_connected_patch_pairs / eligible_patch_pairs

# 06 — INFERENCE RULES
RULE ForestContainsTrees:
  IF CONTAINS(forest, stand) AND OCCUPIES(tree, stand)
  THEN ASSOCIATED_WITH(tree, forest)
  CONFIDENCE: min(source_confidences)
RULE DecompositionSupportsCycling:
  IF DECOMPOSES(decomposer, litter) AND TRANSFERS_NUTRIENT(pool_a, pool_b)
  THEN CONTRIBUTES_TO(decomposer, nutrient_cycling)
  CONDITION: linked process evidence exists
RULE DisturbanceCanAlterSuccession:
  IF AFFECTS(disturbance, stand)
  THEN POSSIBLE_TRANSITION(stand, successional_stage)
  STATUS: hypothesis_only_until_observed
RULE PatchAdjacency:
  IF ADJACENT_TO(a,b) THEN ADJACENT_TO(b,a)
  CONDITION: adjacency is defined symmetrically
RULE IndicatorNotProof:
  IF OBSERVED(indicator_taxon, patch)
  THEN POSSIBLE_ENVIRONMENTAL_CONDITION(patch, condition)
  CONDITION: validated context-specific indicator model

# 07 — VALIDATION AND INVARIANTS
INVARIANT unique_entity_ids
INVARIANT nonnegative_biomass_area_and_abundance
INVARIANT measured_fraction_in_closed_interval_0_1
INVARIANT observation_time_within_claimed_study_period
INVARIANT unit_consistency_for_fluxes_and_pools
INVARIANT no_automatic_equivalence_of_stand_patch_and_ecosystem
INVARIANT no_claim_of_causation_from_correlation_alone
INVARIANT no_double_counting_of_carbon_pools
INVARIANT succession_is_not_assumed_linear_or_inevitable
INVARIANT unknown_data_is_not_zero

# 08 — CONFIDENCE AND EVIDENCE
CONFIDENCE: Real in [0,1]
EVIDENCE_FIELDS: source_uri, observer, method, timestamp, spatial_scope, uncertainty, licence
RULE ConfidenceAggregation:
  retain individual evidence weights and dependencies;
  do not treat repeated citations to one dataset as independent evidence.
RULE ConflictingObservations:
  preserve competing observations, methods and dates;
  flag for review rather than silently overwriting.

# 09 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE("forest ecosystem", ForestEcosystem) WHEN context=ecology
SEMANTIC_EQUIVALENCE("woodland ecosystem", ForestEcosystem) WHEN regional_definition_compatible
NOT_EQUIVALENT(ForestStand, ForestEcosystem)
NOT_EQUIVALENT(ForestPatch, ForestEcosystem)
NOT_EQUIVALENT(OldGrowthForest, AnyMatureForest)
ALIAS_MAP must record provenance, context and version.

# 10 — FLOW HASH
FLOW_HASH:
  canonicalise(schema_version, typed_entities, relationships, rules, units, source_refs)
  sort_unordered_sets_deterministically
  normalise_whitespace_and_unicode
  hash_algorithm: SHA-256
  exclude_volatile_rendering_metadata: true
  output: lowercase_hex_digest
  NOTE: specification only; digest calculated by implementing software.

# 11 — UPDATE MODEL
UPDATE_MODEL:
  operation: append_observation | revise_assertion | retire_assertion | split_entity | merge_entity
  require: actor, timestamp, reason, evidence, previous_version
  preserve: audit_history, original_source, superseded_relationships
  recalculate: affected_inferences, confidence, FLOW_HASH
  reject: invalid_types, negative_quantities, incompatible_units

# 12 — AI CONSUMPTION
AI_CONSUMPTION:
  expose: entity_ids, definitions, typed_edges, scope, temporal_context
  include: provenance, confidence, uncertainty, ontology_version
  distinguish: observed_fact | model_estimate | inferred_claim | hypothesis
  forbid: invented_measurements, unsupported_species_presence, unverified_causation
  preferred_output: machine_readable_graph_plus_human_explanation

# 13 — CROSS-ONTOLOGY LINKS
LINK ForestEcosystem -> EcosystemOntology
LINK ForestPatch -> TerrestrialHabitatOntology
LINK Soil -> SoilHabitatOntology
LINK Population -> PopulationOntology
LINK BiologicalCommunity -> BiologicalCommunityOntology
LINK Consumer -> ConsumerOrganismOntology
LINK Producer -> ProducerOrganismOntology
LINK Decomposer -> DecomposerOrganismOntology
LINK Disturbance -> EnvironmentalChangeOntology

# 14 — TEST CASES
TEST valid_tree: Tree(height_m=15, dbh_cm=28) -> PASS
TEST negative_tree_height: Tree(height_m=-1) -> REJECT
TEST canopy_cover_1_2: canopy_cover_fraction=1.2 -> REJECT
TEST inferred_fire_cause_without_evidence -> HYPOTHESIS_ONLY
TEST duplicated_carbon_pool_in_total -> REJECT
TEST missing_soil_moisture -> UNKNOWN_NOT_ZERO
TEST symmetric_adjacency -> PASS_IF_DEFINITION_SYMMETRIC

# 15 — AUTHORSHIP AND SCOPE
AUTHORS: Mark Higgins — Sky (Recursive AI)
PROJECT: Kireth Research / Kireth Semantic Library
LICENCE: Refer to the project's applicable Open Research Licence.
DISCLAIMER: Conceptual Flow Algebra design, not validated executable code or a verified transcription of the source webpage.
end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ