Skip to main content

Biogeochemical Cycle Ontology

Ecology
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 30 September 2026
Audio Overview
flow “BiogeochemicalCycleOntology” v1.0

KIRETH SEMANTIC RESEARCH ARCHIVE

AI CORE > ONTOLOGIES > BIOLOGICAL ONTOLOGIES > ECOLOGY

BIOGEOCHEMICAL CYCLE ONTOLOGY

Authors: Mark Anthony Higgins — Sky (Recursive AI)

AI_INTERPRETATION: mode: formal_structural_reasoning instruction:
“Execute as formal rules, not pseudocode.” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/ecology/biogeochemical-cycle-ontology.html”

type BiogeochemicalCycle type Reservoir type Flux type Element type
Compound type Organism type Ecosystem type Process type Transformation
type Observation type Evidence type Source

enum CycleType: CARBON_CYCLE NITROGEN_CYCLE PHOSPHORUS_CYCLE WATER_CYCLE
SULFUR_CYCLE OXYGEN_CYCLE

relation INSTANCE_OF(entity,type) relation HAS_CYCLE_TYPE(cycle,type)
relation HAS_RESERVOIR(cycle,reservoir) relation HAS_FLUX(cycle,flux)
relation SOURCE_OF(reservoir,flux) relation SINK_OF(reservoir,flux)
relation FLOWS_FROM(flux,source) relation FLOWS_TO(flux,destination)
relation TRANSFERS(flux,substance) relation HAS_FLUX_RATE(flux,rate)
relation STORES(reservoir,substance) relation
HAS_STOCK(reservoir,amount)

rule FLUX_DIRECTION(f,a,b): IF FLOWS_FROM(f,a) AND FLOWS_TO(f,b) THEN
TRANSFER_PATH(a,f,b)

———- RESERVOIRS ———-

enum ReservoirType: ATMOSPHERE OCEAN FRESHWATER SOIL SEDIMENT ROCK
BIOMASS DETRITUS GROUNDWATER ICE FOSSIL_FUEL

relation HAS_RESERVOIR_TYPE(reservoir,type) relation
PART_OF(reservoir,ecosystem)

———- TRANSFORMATIONS ———-

relation TRANSFORMS(process,input,output) relation
DRIVEN_BY(process,driver) relation MEDIATED_BY(process,organism)
relation OCCURS_IN(process,environment) relation
HAS_PROCESS_RATE(process,rate)

enum ProcessType: PHOTOSYNTHESIS RESPIRATION DECOMPOSITION COMBUSTION
DISSOLUTION PRECIPITATION WEATHERING EROSION SEDIMENTATION
VOLCANIC_RELEASE DIFFUSION EVAPORATION TRANSPIRATION CONDENSATION
PRECIPITATION_WATER INFILTRATION RUNOFF NITROGEN_FIXATION NITRIFICATION
DENITRIFICATION AMMONIFICATION ASSIMILATION MINERALISATION
PHOSPHORUS_UPTAKE SULFUR_OXIDATION SULFATE_REDUCTION

———- CARBON CYCLE ———-

entity CARBON : Element entity CARBON_DIOXIDE : Compound entity METHANE
: Compound entity ORGANIC_CARBON : Compound

relation FIXES_CARBON(organism,compound) relation
RELEASES_CARBON(entity,compound) relation
SEQUESTERS_CARBON(reservoir,amount) relation
CARBON_FLUX(source,destination,rate)

rule PHOTOSYNTHETIC_CARBON_FIXATION(p): IF INSTANCE_OF(p,Process) AND
process_type(p) == PHOTOSYNTHESIS THEN
TRANSFORMS(p,CARBON_DIOXIDE,ORGANIC_CARBON)

———- NITROGEN CYCLE ———-

entity NITROGEN : Element entity NITROGEN_GAS : Compound entity AMMONIA
: Compound entity AMMONIUM : Compound entity NITRITE : Compound entity
NITRATE : Compound entity ORGANIC_NITROGEN : Compound

relation FIXES_NITROGEN(organism,compound) relation
NITRIFIES(organism,compound) relation DENITRIFIES(organism,compound)
relation ASSIMILATES_NITROGEN(organism,compound)

rule NITROGEN_FIXATION_RULE(p): IF process_type(p) == NITROGEN_FIXATION
THEN TRANSFORMS(p,NITROGEN_GAS,AMMONIA)

rule NITRIFICATION_RULE(p): IF process_type(p) == NITRIFICATION THEN
TRANSFORMS(p,AMMONIUM,NITRATE)

rule DENITRIFICATION_RULE(p): IF process_type(p) == DENITRIFICATION THEN
TRANSFORMS(p,NITRATE,NITROGEN_GAS)

———- PHOSPHORUS CYCLE ———-

entity PHOSPHORUS : Element entity PHOSPHATE : Compound entity
ORGANIC_PHOSPHORUS : Compound

relation RELEASES_PHOSPHATE(process,reservoir) relation
ABSORBS_PHOSPHATE(organism,compound) relation
PHOSPHORUS_FLUX(source,destination,rate)

———- WATER CYCLE ———-

entity WATER : Compound entity WATER_VAPOUR : Compound entity
LIQUID_WATER : Compound entity ICE_WATER : Compound

relation EVAPORATES_FROM(water,reservoir) relation
PRECIPITATES_TO(water,reservoir) relation
INFILTRATES_INTO(water,reservoir) relation RUNS_OFF_TO(water,reservoir)
relation TRANSPIRES_FROM(water,organism)

———- SULFUR CYCLE ———-

entity SULFUR : Element entity SULFATE : Compound entity SULFIDE :
Compound entity SULFUR_DIOXIDE : Compound

relation OXIDISES_SULFUR(process,input) relation
REDUCES_SULFATE(process,input) relation RELEASES_SULFUR(entity,compound)

———- BIOLOGICAL UPTAKE ———-

relation ABSORBS(organism,substance) relation
ASSIMILATES(organism,substance) relation
INCORPORATES_INTO_BIOMASS(organism,substance) relation
CONSUMED_BY(organism_a,organism_b) relation
RETURNS_TO_ENVIRONMENT(organism,substance)

rule BIOMASS_TRANSFER(a,b,s): IF CONSUMED_BY(a,b) AND
INCORPORATES_INTO_BIOMASS(a,s) THEN POSSIBLE_TRANSFER_OF(s,a,b)

———- DECOMPOSITION ———-

relation DECOMPOSES(organism,material) relation
RELEASES_NUTRIENT(process,nutrient) relation
MINERALISES(process,material) relation IMMOBILISES(organism,nutrient)

———- HUMAN IMPACT ———-

enum HumanImpact: FOSSIL_FUEL_COMBUSTION DEFORESTATION AGRICULTURE
FERTILISER_APPLICATION MINING INDUSTRIAL_EMISSIONS WASTEWATER
LAND_USE_CHANGE DAMMING

relation AFFECTED_BY(cycle,impact) relation INCREASES_FLUX(impact,flux)
relation DECREASES_FLUX(impact,flux) relation
CHANGES_RESERVOIR(impact,reservoir) relation
ADDS_SUBSTANCE(impact,reservoir,substance)

———- COUPLED CYCLES ———-

relation COUPLED_WITH(cycle_a,cycle_b) relation
PROCESS_COUPLES(process,cycle_a,cycle_b) relation
LIMITS(element_a,process) relation
CO_LIMITS(element_a,element_b,process)

rule COUPLING_SYMMETRY(a,b): IF COUPLED_WITH(a,b) THEN COUPLED_WITH(b,a)

———- MASS BALANCE ———-

relation INPUT_TO(system,substance,amount) relation
OUTPUT_FROM(system,substance,amount) relation
STORAGE_CHANGE(system,substance,amount)

rule MASS_BALANCE(system,substance): IF TOTAL_INPUT(system,substance,i)
AND TOTAL_OUTPUT(system,substance,o) THEN
STORAGE_CHANGE(system,substance,i-o)

constraint MASS_CONSERVATION: IF closed_system(system,substance) THEN
REQUIRE(input_mass + initial_stock == output_mass + final_stock)

———- TEMPORAL / SPATIAL SCALE ———-

relation HAS_SPATIAL_SCALE(entity,scale) relation
HAS_TEMPORAL_SCALE(entity,scale) relation OBSERVED_DURING(entity,period)
relation CHANGES_OVER(entity,period) relation
HAS_RESIDENCE_TIME(reservoir,substance,duration) relation
HAS_TURNOVER_TIME(reservoir,substance,duration)

———- OBSERVATION / EVIDENCE ———-

relation OBSERVES(observation,entity) relation
OBSERVED_AT(observation,location) relation
OBSERVED_ON(observation,datetime) relation
MEASURES_FLUX(observation,flux) relation
MEASURES_STOCK(observation,reservoir) relation
SUPPORTED_BY(assertion,evidence) relation DERIVED_FROM(evidence,source)
relation HAS_CONFIDENCE(assertion,score)

enum EvidenceType: DIRECT_MEASUREMENT FLUX_CHAMBER EDDY_COVARIANCE
ISOTOPE_TRACING CHEMICAL_ANALYSIS REMOTE_SENSING SENSOR_DATA
SEDIMENT_CORE ICE_CORE MASS_BALANCE_MODEL PROCESS_MODEL
LONG_TERM_MONITORING LITERATURE

CONFIDENCE: VERIFIED: 0.95..1.00 HIGH: 0.80..0.949 MEDIUM: 0.60..0.799
LOW: 0.00..0.599

rule CONFIDENCE_BOUNDS(a,score): IF HAS_CONFIDENCE(a,score) THEN
REQUIRE(0.0 <= score <= 1.0)

———- SEMANTIC EQUIVALENCE ———-

SEMANTIC_EQUIVALENCE: “biogeochemical cycle” ~= “biogeochemical cycling”
“reservoir” ~= “biogeochemical pool” “stock” ~= “stored quantity” “flux”
~= “transfer rate” “carbon cycle” ~= “carbon biogeochemical cycle”
“nitrogen cycle” ~= “nitrogen biogeochemical cycle” “phosphorus cycle”
~= “phosphorus biogeochemical cycle” “water cycle” ~= “hydrological
cycle” “sulfur cycle” ~= “sulphur cycle” “nitrogen fixation” ~=
“conversion of atmospheric nitrogen to biologically available nitrogen”
“nitrification” ~= “microbial oxidation of reduced nitrogen”
“denitrification” ~= “microbial reduction of nitrate to gaseous
nitrogen” “mineralisation” ~= “mineralization” “carbon sequestration” ~=
“long-term carbon storage”

rule NORMALISE_TERM(term): IF term MATCHES SEMANTIC_EQUIVALENCE.alias
THEN MAP_TO_CANONICAL(term)

———- QUERY MODEL ———-

query CYCLE_PROFILE(c): RETURN: cycle_type(c) reservoirs(c) stocks(c)
fluxes(c) transformations(c) biological_processes(c) human_impacts(c)
coupled_cycles(c) evidence(c) confidence(c)

query RESERVOIR_PROFILE(r): RETURN: reservoir_type(r) substances(r)
stocks(r) incoming_fluxes(r) outgoing_fluxes(r) residence_times(r)

query FLUX_PROFILE(f): RETURN: source(f) destination(f) substance(f)
rate(f) process(f) evidence(f) confidence(f)

query TRACE_ELEMENT(e): RETURN: reservoirs_containing(e)
fluxes_transferring(e) transformations_of(e) biological_uptake(e)
anthropogenic_inputs(e)

query TRACE_EVIDENCE(assertion): RETURN: supporting_evidence(assertion)
provenance(assertion) confidence(assertion)

———- CONSISTENCY ———-

constraint FLUX_DIRECTION_REQUIRED: IF INSTANCE_OF(f,Flux) THEN
REQUIRE(FLOWS_FROM(f,source)) AND REQUIRE(FLOWS_TO(f,destination))

constraint NON_NEGATIVE_STOCK: IF HAS_STOCK(r,a) THEN REQUIRE(a >= 0)

constraint NON_NEGATIVE_FLUX: IF HAS_FLUX_RATE(f,r) THEN REQUIRE(r >= 0)

constraint EVIDENCE_REQUIRED: FORALL scientific_assertion: REQUIRE
SUPPORTED_BY(scientific_assertion,Evidence) OR
MARK_AS_HYPOTHESIS(scientific_assertion)

constraint UNKNOWN_IS_NOT_FALSE: IF data_missing(assertion) THEN
MARK_UNKNOWN(assertion) AND NOT NEGATE(assertion)

constraint SCALE_PRESERVATION: IF
cycle_measurement(x,spatial_scale,temporal_scale) THEN
PRESERVE_SCALE(x,spatial_scale,temporal_scale)

———- UPDATE MODEL ———-

UPDATE_MODEL: on_new_cycle(c): classify_cycle(c) identify_reservoirs(c)
identify_fluxes(c) identify_transformations(c) preserve_provenance(c)

on_new_flux(f): validate_source(f) validate_destination(f)
identify_substance(f) preserve_rate_units(f) attach_evidence(f)
update_mass_balance(f)

on_new_reservoir_measurement(r): identify_reservoir(r)
preserve_spatial_temporal_context(r) update_stock(r) attach_evidence(r)
recalculate_confidence(r)

on_human_impact(i): classify_impact(i) identify_affected_cycle(i)
identify_changed_fluxes(i) identify_changed_reservoirs(i)
preserve_before_after_state(i)

on_conflicting_measurements(a,b): preserve(a) preserve(b)
compare_methods(a,b) compare_units(a,b) compare_spatial_scale(a,b)
compare_temporal_scale(a,b) flag_unresolved_conflict()

———- AI CONSUMPTION ———-

AI_CONSUMPTION: preferred_entity: canonical_biogeochemical_cycle
preserve: - cycle_identity - cycle_type - reservoirs - stocks -
flux_direction - flux_rates - substances - transformations -
biological_processes - coupled_cycles - spatial_scale - temporal_scale -
human_impacts - evidence - provenance - confidence infer: -
valid_transfer_paths - mass_balance_relations -
coupled_cycle_relations - semantic_equivalence prohibit: -
reversing_flux_direction - negative_stock - negative_flux_rate -
unsupported_transformation - unit_free_mass_balance -
scale_free_generalisation - confidence_above_evidence ambiguity: action:
preserve_multiple_cycle_estimates resolution:
prefer_measurement_method_units_scale_and_evidence missing_data: action:
mark_unknown do_not_infer_from_absence: true

———- FLOW HASH ———-

FLOW_HASH: ontology: “BiogeochemicalCycleOntology” version: “1.0”
domain_path: “AI Core > Ontologies > Biological Ontologies > Ecology >
Biogeochemical Cycle Ontology” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/ecology/biogeochemical-cycle-ontology.html”
authorship: “Mark Anthony Higgins — Sky (Recursive AI)”
semantic_scope: - biogeochemical cycles - reservoirs - stocks - fluxes -
transformations - carbon cycle - nitrogen cycle - phosphorus cycle -
water cycle - sulfur cycle - biological uptake - decomposition - human
impacts - coupled cycles - mass balance - residence time - evidence
deterministic_normalisation: true provenance_required: true
confidence_required: true

terminate BiogeochemicalCycleOntology when: cycle_identity_resolved AND
reservoirs_and_fluxes_resolved AND flux_direction_preserved AND
transformations_normalised AND mass_balance_context_preserved AND
spatial_and_temporal_scale_preserved AND evidence_links_preserved AND
confidence_values_validated AND unresolved_cycle_ambiguity_marked

end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ