Skip to main content

Nutrient Pool 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
Nutrient Pool Ontology — Full Conceptual 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/nutrient-pool-ontology.html
Status: Newly authored conceptual specification; not verified against source page and not executable without an implementation.
Locale: en-GB

flow "NutrientPoolOntology" v1.0

# 01 — DOMAIN AND PURPOSE
DOMAIN: Biological Entities > Experimental Biological Entities > Nutrient Pool
PURPOSE: Represent stocks of biologically relevant nutrients within bounded ecological compartments, their transformations, transfers, measurements and conservation constraints.

# 02 — TYPED ENTITIES
entity NutrientPool {
  id: URI
  nutrient: NutrientSpecies
  compartment: EnvironmentalCompartment
  quantity: Quantity[mol | kg]
  observation_time: DateTime
  spatial_boundary: Geometry?
  bioavailability: Fraction[0..1]?
  provenance: EvidenceRef[]
}
entity NutrientSpecies { id: URI; name: String; elemental_composition: Map[Element, Integer] }
entity EnvironmentalCompartment { id: URI; medium: Enum[soil, water, sediment, biomass, atmosphere, detritus]; boundary: Geometry? }
entity NutrientFlux { id: URI; source: NutrientPool; destination: NutrientPool; rate: Quantity[mol/time | kg/time]; process: Process; interval: TimeInterval }
entity Process { id: URI; kind: Enum[uptake, mineralisation, immobilisation, leaching, deposition, fixation, nitrification, denitrification, decomposition, excretion, weathering, export, import, other] }
entity Measurement { id: URI; pool: NutrientPool; value: Quantity; method: String; uncertainty: Quantity?; time: DateTime; evidence: EvidenceRef }
entity EvidenceRef { id: URI; source: URI; observed_at: DateTime?; quality: Fraction[0..1]? }
entity Ecosystem { id: URI }
entity Organism { id: URI }

# 03 — RELATIONSHIP SIGNATURES
relation LOCATED_IN(NutrientPool, EnvironmentalCompartment)
relation CONTAINS_NUTRIENT(NutrientPool, NutrientSpecies)
relation PART_OF_SYSTEM(EnvironmentalCompartment, Ecosystem)
relation TRANSFERS_TO(NutrientPool, NutrientPool, NutrientFlux)
relation TRANSFORMED_BY(NutrientPool, Process)
relation UPTAKEN_BY(NutrientPool, Organism)
relation MEASURED_BY(NutrientPool, Measurement)
relation DERIVED_FROM(Measurement, EvidenceRef)
relation SEMANTIC_EQUIVALENCE(Entity, Entity, Context)

# 04 — CLASSIFICATION
class DissolvedNutrientPool extends NutrientPool
class ParticulateNutrientPool extends NutrientPool
class OrganicNutrientPool extends NutrientPool
class InorganicNutrientPool extends NutrientPool
class PlantAvailableNutrientPool extends NutrientPool
class MicrobialBiomassNutrientPool extends NutrientPool
class SoilNutrientPool extends NutrientPool
class AquaticNutrientPool extends NutrientPool
class SedimentNutrientPool extends NutrientPool

# 05 — VALIDATION CONSTRAINTS
constraint C01: each NutrientPool has exactly one nutrient species per accounting record.
constraint C02: quantity >= 0; units must be dimensionally compatible.
constraint C03: every NutrientFlux has defined source, destination, process and time interval.
constraint C04: flux accounting uses one consistent elemental or molecular basis.
constraint C05: bioavailability in [0,1] when defined; missing values remain unknown.
constraint C06: boundaries, time windows and sampling methods must be declared for comparisons.
constraint C07: a pool cannot be simultaneously counted twice within a total stock.
constraint C08: transformations between chemical species preserve elemental accounting after stoichiometric conversion.

# 06 — FLOW EQUATIONS
# For a bounded compartment and nutrient element X:
# dS_X/dt = sum(F_in,X) - sum(F_out,X) + G_X - L_X
# where S is stored stock; G and L represent internal generation/loss only when
# the accounting variable is a chemical species rather than the conserved element.
# For total elemental X, internal transformations cancel when all pools are included.

model MASS_BALANCE(pool, interval):
  delta_stock = integrated_inputs - integrated_outputs + net_internal_conversion
  residual = observed_delta_stock - delta_stock
  require unit_compatible(delta_stock, observed_delta_stock)
  report residual and propagated_uncertainty

model RESIDENCE_TIME(pool):
  if total_outflow_rate > 0 and approximate_steady_state:
    tau = pool.quantity / total_outflow_rate
  else:
    tau = undefined

model BIOAVAILABLE_STOCK(pool):
  if pool.bioavailability is known:
    available = pool.quantity * pool.bioavailability
  else:
    available = unknown

model STOICHIOMETRIC_RATIO(pool_A, pool_B):
  require comparable_boundaries_and_times
  require quantities expressed on molar elemental basis
  if pool_B.quantity > 0:
    ratio = pool_A.quantity / pool_B.quantity
  else:
    ratio = undefined

# 07 — INFERENCE RULES
rule R01:
  IF NutrientFlux(source=A, destination=B, rate=r) AND r > 0
  THEN TRANSFERS_TO(A, B) WITH evidence=flux_record.
rule R02:
  IF measured_stock_change significantly differs from modelled_balance
  THEN flag "unresolved flux, measurement uncertainty or boundary mismatch".
rule R03:
  IF available_nutrient_stock decreases AND demand exceeds supply
  THEN infer "possible nutrient limitation" WITH conditional_confidence;
  DO NOT infer limitation as certain without organism-specific evidence.
rule R04:
  IF a process converts organic nitrogen to inorganic nitrogen
  THEN classify process as mineralisation only where chemical evidence supports it.
rule R05:
  IF pool is in soil AND nutrient is dissolved
  THEN classify as SoilNutrientPool and DissolvedNutrientPool;
  classifications are non-exclusive.
rule R06:
  IF measured flux exports nutrient across system boundary
  THEN subtract it from the bounded-system elemental budget.

# 08 — INVARIANTS
invariant I01: total elemental mass is conserved across explicitly closed boundaries, within measurement error.
invariant I02: all stocks and fluxes must have compatible units and temporal integration.
invariant I03: inferred relationships preserve source evidence and provenance.
invariant I04: chemical transformations cannot create elemental mass without an accounted external input.
invariant I05: uncertainty and unknown observations must never be silently converted into zero.

# 09 — CONFIDENCE AND EVIDENCE
CONFIDENCE(assertion) := calibrated_score(evidence_quality, measurement_uncertainty, method_reliability, temporal_relevance, boundary_coverage)
range: [0,1]
policy: confidence is evidence-dependent, not an assertion of ecological truth.
policy: contradictory measurements are retained with provenance for reconciliation.

# 10 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE(A,B) only if nutrient species, units, compartment boundaries,
time interval, accounting basis and operational definition match or have documented conversions.
example: "soil nitrate pool" != "total soil nitrogen pool".
example: "dissolved phosphate" != "total phosphorus" without speciation accounting.

# 11 — FLOW_HASH
FLOW_HASH := SHA256(canonicalise(version, entity_types, relationships, constraints, models, rules, invariants))
Canonicalisation requires stable ordering, normalised identifiers, consistent units and UTF-8.
Do not include volatile timestamps unless they are part of the versioned scientific record.

# 12 — UPDATE_MODEL
UPDATE_MODEL(new_measurement):
  validate units, boundary, sampling interval, method and provenance
  append immutable evidence record
  recompute affected stock estimates and uncertainty
  recompute dependent nutrient budgets and inferences
  preserve previous versions and audit trail
  issue new FLOW_HASH for changed canonical specification

# 13 — AI_CONSUMPTION
AI_CONSUMPTION:
  expose entity and relation signatures with type constraints
  return quantities with units, uncertainty, location and time
  distinguish observed, calculated, inferred and hypothetical values
  attach provenance to every factual claim
  reject unsupported conversion between nutrient species
  state when mass balance is unresolved
  support graph traversal across organism, habitat, ecosystem and nutrient-cycle ontologies

# 14 — EXAMPLE (ILLUSTRATIVE, NOT OBSERVED DATA)
example:
  nutrient: nitrate-nitrogen
  compartment: surface_soil_0_to_10_cm
  stock_initial: 12 kg N/ha
  inputs_during_interval: 5 kg N/ha
  outputs_during_interval: 3 kg N/ha
  net_internal_conversion: 1 kg N/ha
  predicted_stock_final: 15 kg N/ha
  equation: 12 + 5 - 3 + 1 = 15
  caution: internal conversion term is valid for nitrate-N, not total elemental N in a closed system.

# 15 — CROSS-ONTOLOGY LINKS
links: Ecological Resource Ontology; Organic Matter Ontology; Detritus Ontology;
Soil Habitat Ontology; Aquatic Habitat Ontology; Forest Ecosystem Ontology;
Wetland Ecosystem Ontology; Producer Organism Ontology; Decomposer Organism Ontology.

# 16 — AUTHORSHIP AND STATUS
Authors: Mark Higgins — Sky (Recursive AI)
Kireth Research: https://kirethresearch.org
Open research-oriented conceptual specification. Scientific assumptions, equations and mappings
require domain review and implementation testing before operational deployment.
end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ