Skip to main content

Ecological Resource 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
ECOLOGICAL RESOURCE 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/ecological-resource-ontology.html
Status: Proposed conceptual formalisation; not a verified extraction of the webpage or an executable runtime.

flow "EcologicalResourceOntology" v1.0

# 01 — DOMAIN AND PURPOSE
DOMAIN: BiologicalEntities.ExperimentalBiologicalEntities.EcologicalResource
PURPOSE: Represent resources used by organisms and populations, their spatial and temporal availability, accessibility, consumption, regeneration and ecological consequences.

# 02 — TYPED ENTITIES
entity EcologicalResource { id: ID; label: String; resource_kind: ResourceKind; unit: Unit; provenance: EvidenceRef? }
entity ResourcePool { id: ID; resource: EcologicalResource; location: HabitatID; stock: Quantity; time: Time }
entity Organism { id: ID; taxon: TaxonID }
entity Population { id: ID; taxon: TaxonID; habitat: HabitatID }
entity Habitat { id: ID; environmental_conditions: Map }
entity ResourceDemand { consumer: Organism|Population; resource: EcologicalResource; required_rate: QuantityPerTime }
entity ResourceFlux { source: ResourcePool; destination: ResourcePool|Organism|Population; rate: QuantityPerTime }
entity Observation { id: ID; subject: ID; measured_value: Quantity; time: Time; method: String; evidence: EvidenceRef }
entity Disturbance { id: ID; location: HabitatID; start: Time; end: Time? }

# 03 — RESOURCE CLASSIFICATION
ResourceKind := Water | Light | Nutrient | Mineral | Food | Shelter | Space | Oxygen | CarbonDioxide | Substrate | NestingSite | Other
ResourceStatus := Abundant | Sufficient | Limiting | Depleted | Unknown
ResourceOrigin := Biotic | Abiotic | Mixed
Renewability := Renewable | NonrenewableAtStudyTimescale | ContextDependent

# 04 — TYPED RELATIONSHIPS
relation LOCATED_IN(ResourcePool, Habitat)
relation CONTAINS(Habitat, ResourcePool)
relation REQUIRES(Organism|Population, EcologicalResource)
relation USES(Organism|Population, EcologicalResource)
relation CONSUMES(Organism|Population, ResourcePool)
relation PROVIDES(Habitat|Organism|Population, EcologicalResource)
relation COMPETES_FOR(Organism|Population, Organism|Population, EcologicalResource)
relation LIMITS(EcologicalResource, Organism|Population)
relation REGENERATES(ResourcePool, ResourceFlux)
relation TRANSFERS_TO(ResourcePool, ResourcePool|Organism|Population)
relation MODIFIED_BY(ResourcePool, Disturbance)
relation OBSERVED_BY(ResourcePool, Observation)

# 05 — FLOW SIGNATURES
flow.resource_identification(observation: Observation) -> EcologicalResource?
flow.resource_availability(pool: ResourcePool, time: Time) -> Quantity
flow.resource_accessibility(pool: ResourcePool, consumer: Organism|Population, time: Time) -> Ratio[0,1]
flow.resource_demand(consumer: Organism|Population, resource: EcologicalResource, time: Time) -> QuantityPerTime
flow.resource_consumption(pool: ResourcePool, consumer: Organism|Population, interval: Duration) -> Quantity
flow.resource_regeneration(pool: ResourcePool, interval: Duration) -> Quantity
flow.resource_limitation(consumer: Organism|Population, resource: EcologicalResource, interval: Duration) -> ResourceStatus
flow.resource_competition(a: Organism|Population, b: Organism|Population, resource: EcologicalResource) -> EvidenceBackedRelation

# 06 — QUANTITATIVE MODELS
# Stock accounting; all fluxes expressed in compatible units.
STOCK(t + dt) = STOCK(t) + INPUT(t,dt) + REGENERATION(t,dt) - CONSUMPTION(t,dt) - LOSS(t,dt)
AVAILABLE(t) = max(0, STOCK(t) * ACCESSIBILITY(t))
RESOURCE_PRESSURE(t) = DEMAND(t) / max(AVAILABLE_RATE(t), epsilon)
# Interpret pressure only after matching stock-vs-rate dimensions and observation interval.
# A value above 1 suggests demand exceeds accessible supply over the specified interval, not proof of population decline.

# 07 — INFERENCE RULES
rule R1: REQUIRES(x,r) AND AVAILABLE(r,x,t) = 0 -> POSSIBLE_RESOURCE_LIMITATION(x,r,t)
rule R2: REQUIRES(a,r) AND REQUIRES(b,r) AND SHARED_ACCESS(a,b,r) -> POTENTIAL_COMPETITION(a,b,r)
rule R3: STOCK_DECREASE(pool,t1,t2) AND OBSERVED_CONSUMPTION(pool,t1,t2) -> CONSUMPTION_MAY_CONTRIBUTE_TO_DEPLETION(pool)
rule R4: DISTURBANCE_REDUCES_ACCESS(pool,d) -> POSSIBLE_REDUCED_RESOURCE_AVAILABILITY(pool,d)
rule R5: REGENERATION_EXCEEDS_EXTRACTION(pool,interval) -> POTENTIAL_STOCK_RECOVERY(pool,interval)
# Potential relationships are hypotheses; causality requires appropriate evidence and controls.

# 08 — INVARIANTS AND VALIDATION
invariant V1: stock >= 0 for physical nonnegative stock measures
invariant V2: 0 <= accessibility <= 1
invariant V3: consumption >= 0; regeneration >= 0; loss >= 0
invariant V4: every resource observation has time, unit, and provenance
invariant V5: quantity operations require dimensionally compatible units
invariant V6: a resource is contextual: the same material may be limiting in one habitat and abundant in another
invariant V7: resource identity is distinct from a specific resource pool and its observed stock
invariant V8: missing measurements are Unknown, not zero
invariant V9: food, space and shelter may require different non-interchangeable measurement schemes

# 09 — CONFIDENCE
CONFIDENCE(assertion) := { score: Real[0,1], evidence: EvidenceRef[], method: String, uncertainty: String?, assessed_at: Time }
# Confidence is evidence-dependent, not automatically assigned from a rule match.

# 10 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE(a,b) := same_referent(a,b) AND compatible_resource_kind(a,b) AND compatible_units(a,b) AND compatible_context(a,b)
# 'Water availability' is not automatically equivalent to 'water stock'.
# 'Resource' is not equivalent to 'resource pool'.

# 11 — FLOW HASH
FLOW_HASH(canonical_record) := SHA256(canonical_UTF8(canonical_record))
# Canonicalisation requires stable field ordering, normalised units and identifiers, and an explicit schema version.

# 12 — UPDATE MODEL
UPDATE_MODEL(event) := validate(event) -> reconcile_identity(event) -> update_resource_state(event) -> recompute_derived_relations(event) -> record_provenance(event) -> rehash_affected_records(event)
# Retain prior versions and distinguish observed changes from model corrections.

# 13 — AI CONSUMPTION
AI_CONSUMPTION {
  entity_types: [EcologicalResource, ResourcePool, Organism, Population, Habitat, ResourceDemand, ResourceFlux, Observation, Disturbance]
  outputs: [typed_graph, resource_balance, potential_limitation, competition_hypotheses, evidence_trace]
  safeguards: [unit_validation, temporal_scope, spatial_scope, missing_data_explicit, uncertainty_propagation, provenance_required]
  prohibited_inferences: [causation_without_evidence, abundance_from_presence_alone, zero_from_missing_value]
}

# 14 — EXAMPLE (ILLUSTRATIVE, NOT MEASURED)
example "Seasonal water resource" {
  resource: Water
  habitat: Grassland
  pool: SeasonalSurfaceWater
  consumer: HerbivorePopulation
  relation: REQUIRES(HerbivorePopulation, Water)
  possible_event: Drought
  expected_query: "How does reduced accessible water alter potential resource limitation?"
  output_status: HypothesisPendingObservation
}

# 15 — CROSS-ONTOLOGY LINKS
LINK EcologicalEntityOntology
LINK BiologicalEnvironmentOntology
LINK HabitatOntology
LINK EcosystemOntology
LINK PopulationOntology
LINK ConsumerOrganismOntology
LINK FoodChainOntology
LINK SoilHabitatOntology
LINK FreshwaterHabitatOntology

# 16 — PUBLICATION AND ATTRIBUTION
AUTHORS: Mark Higgins — Sky (Recursive AI)
SITE: https://kirethresearch.org
DISCLOSURE: AI-assisted joint authorship; scientific claims require independent validation.
END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ