FLOW ALGEBRA
Coral Reef Ecosystem Ontology — Full Flow Algebra v1.0
Kireth Semantic Library | 2026-10-26
Authors: Mark Higgins — Sky (Recursive AI)
Source topic: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/experimental-biological-entities/coral-reef-ecosystem-ontology.html
Status: Newly authored conceptual specification; not verified against page contents and not an executable implementation.
flow "CoralReefEcosystemOntology" v1.0
# 01 — DOMAIN AND TYPES
namespace: kireth.biological.experimental.coral_reef
locale: en-GB
entity CoralReefEcosystem <: MarineEcosystem
entity ReefSite <: SpatialEntity
entity ReefZone <: Habitat
entity ReefBuildingCoral <: CnidarianOrganism
entity CoralColony <: ColonialOrganism
entity CoralPolyp <: AnimalOrganism
entity SymbioticDinoflagellate <: PhotosyntheticSymbiont
entity ReefFish <: MarineOrganism
entity Herbivore <: ConsumerOrganism
entity Grazer <: Herbivore
entity Predator <: ConsumerOrganism
entity Macroalgae <: PrimaryProducer
entity CrustoseCorallineAlgae <: PrimaryProducer
entity Sponge <: BenthicOrganism
entity MicrobialCommunity <: BiologicalCommunity
entity SeagrassMeadow <: AdjacentHabitat
entity MangroveHabitat <: AdjacentHabitat
entity CarbonateSubstrate <: GeologicalMaterial
entity ReefFramework <: BiogenicStructure
entity EnvironmentalObservation <: Measurement
entity DisturbanceEvent <: Event
entity ConservationIntervention <: Action
entity EvidenceRecord <: ProvenanceRecord
# 02 — ENUMERATIONS
ReefType := {fringing, barrier, atoll, patch, platform, other}
ReefZoneType := {reef_flat, crest, fore_reef, lagoon, back_reef, mesophotic, other}
CoralStatus := {healthy, pale, bleached, diseased, dead, recovering, unknown}
DisturbanceType := {marine_heatwave, cyclone, sedimentation, pollution, disease_outbreak, acidification, destructive_fishing, crown_of_thorns_outbreak, other}
EvidenceQuality := {high, moderate, low, unknown}
# 03 — TYPED RELATIONSHIPS
CONTAINS(CoralReefEcosystem, ReefZone)
LOCATED_AT(CoralReefEcosystem, ReefSite)
HABITAT_FOR(ReefZone, MarineOrganism)
BUILDS_FRAMEWORK(ReefBuildingCoral, ReefFramework)
SETTLES_ON(CoralPolyp, CarbonateSubstrate)
HOSTS(CoralPolyp, SymbioticDinoflagellate)
TRANSFERS_PHOTOSYNTHATE(SymbioticDinoflagellate, CoralPolyp)
SUPPLIES_INORGANIC_NUTRIENTS(CoralPolyp, SymbioticDinoflagellate)
GRAZES_ON(Grazer, Macroalgae)
PREYS_ON(Predator, MarineOrganism)
COMPETES_FOR_SPACE(ReefBuildingCoral, Macroalgae)
CONNECTED_TO(CoralReefEcosystem, AdjacentHabitat)
EXPERIENCES(CoralReefEcosystem, DisturbanceEvent)
OBSERVED_BY(CoralReefEcosystem, EnvironmentalObservation)
SUPPORTED_BY(Assertion, EvidenceRecord)
# 04 — ATTRIBUTES AND UNITS
CoralReefEcosystem:
reef_type: ReefType
area: nonnegative real [km2]
live_coral_cover: real [percent, 0..100]
macroalgal_cover: real [percent, 0..100]
structural_complexity: nonnegative real [method-specific index]
coral_recruitment: nonnegative real [recruits/m2/time_interval]
fish_biomass: nonnegative real [kg/ha]
calcification_rate: real [kg CaCO3/m2/year]
erosion_rate: nonnegative real [kg CaCO3/m2/year]
biodiversity_index: real [index and method required]
observation_time: datetime
EnvironmentalObservation:
sea_surface_temperature: real [degrees Celsius]
salinity: nonnegative real [practical salinity, unitless]
pH_total_scale: real [unitless; scale documented]
dissolved_oxygen: nonnegative real [mg/L]
turbidity: nonnegative real [NTU]
light_availability: nonnegative real [PAR, micromol photons/m2/s]
depth: nonnegative real [m]
method: string
uncertainty: optional nonnegative real
# 05 — ECOLOGICAL PROCESSES
process ReefAccretion:
input: calcification, carbonate_sediment_retention
output: reef_framework_growth
constraint: rates must use a common area, interval and mass basis
process SymbioticProduction:
input: irradiance, inorganic_carbon, dissolved_nutrients, symbiont_state
output: photosynthate_transfer, oxygen_flux
process GrazingControl:
input: herbivore_abundance, feeding_activity, algal_biomass
output: algal_removal_rate
process CoralRecruitment:
input: larval_supply, settlement_substrate, post_settlement_survival
output: juvenile_coral_density
process BleachingResponse:
input: accumulated_thermal_stress, light_stress, coral_susceptibility
output: bleaching_probability, symbiont_change
note: bleaching is not equivalent to coral mortality
process DisturbanceRecovery:
input: disturbance_severity, surviving_colonies, recruitment, local_stressors
output: recovery_trajectory
# 06 — QUANTITATIVE MODELS (CONDITIONAL)
model NetCarbonateBudget:
net_budget = gross_calcification + carbonate_import - bioerosion - physical_export
precondition: flux terms normalised to matching units and boundaries
interpretation: positive net budget indicates net carbonate accumulation over the observed interval
model CoralCoverChange:
delta_cover = cover_at_t2 - cover_at_t1
precondition: same survey footprint or explicit area-weighting and comparable methods
model DisturbanceExposure:
exposure = integral(max(0, observed_temperature - local_stress_threshold), time)
note: conceptual index, not a substitute for an established bleaching metric
model FunctionalDiversity:
diversity = -sum(p_i * ln(p_i) for each functional_group_i with p_i > 0)
precondition: p_i >= 0 and sum(p_i) = 1; group definitions documented
# 07 — INFERENCE RULES
rule CoralSymbiosis:
IF HOSTS(polyp, symbiont) AND PHOTOSYNTHETIC(symbiont)
THEN POSSIBLE_PHOTOSYNTHATE_TRANSFER(symbiont, polyp)
confidence: conditional_on_observation
rule ReefBuilder:
IF ReefBuildingCoral(coral) AND CALCIFIES(coral)
THEN CONTRIBUTES_TO(coral, ReefFramework)
rule ThermalStressAlert:
IF measured_thermal_stress(site, interval) > validated_local_threshold
THEN FLAG(site, "elevated bleaching risk")
NOT_INFER: bleaching has occurred
rule GrazingHypothesis:
IF reduced_grazing(site) AND increased_macroalgae(site)
THEN HYPOTHESISE(site, "grazing reduction may contribute to algal increase")
NOT_INFER: causal proof without controls
rule ReefDecline:
IF comparable_surveys(site, t1, t2) AND coral_cover(t2) < coral_cover(t1)
THEN INFER(site, "observed live coral cover decline")
NOT_INFER: permanent ecosystem collapse
rule Connectivity:
IF documented_larval_exchange(a, b)
THEN CONNECTED_TO(a, b)
note: connectivity may be directional and time-dependent
# 08 — VALIDATION AND INVARIANTS
invariant 0 <= live_coral_cover <= 100
invariant 0 <= macroalgal_cover <= 100
invariant area >= 0 AND fish_biomass >= 0
invariant every measurement carries units, timestamp, spatial scope and method
invariant reef_type is classification, not proof of ecological condition
invariant coral bleaching != coral death
invariant habitat association != obligatory ecological dependence
invariant correlation != causation
invariant unknown values remain unknown; do not silently set to zero
invariant survey estimates include sampling uncertainty where available
invariant overlapping benthic categories must not be naively summed to 100 percent
# 09 — CONFIDENCE AND EVIDENCE
CONFIDENCE(assertion):
range: [0,1]
inputs: {source_reliability, measurement_quality, spatial_match, temporal_match, replication, model_validity}
rule: report method; never treat score as a calibrated probability without calibration
PROVENANCE(assertion):
required: {source_id, observed_at, method, location, author_or_institution, licence}
optional: {instrument, uncertainty, processing_steps, dataset_version}
# 10 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE("coral reef ecosystem", "reef ecosystem"):
status: context_dependent
SEMANTIC_EQUIVALENCE("coral bleaching", "coral mortality"):
status: false
SEMANTIC_EQUIVALENCE("coral cover", "reef health"):
status: false
SEMANTIC_EQUIVALENCE("reef framework", "living coral"):
status: false
SEMANTIC_EQUIVALENCE("zooxanthellae", "Symbiodiniaceae"):
status: historical_term_requires_taxonomic_context
# 11 — FLOW HASH AND CHANGE TRACKING
FLOW_HASH:
algorithm: SHA-256
input: canonical_utf8({ontology_id, version, sorted_entity_types, sorted_relations, sorted_rules, sorted_invariants})
note: hash must be computed by an implementation; none is fabricated here
UPDATE_MODEL:
immutable: {observation_id, original_source_record}
versioned: {classifications, inference_rules, thresholds, semantic_mappings}
actions: {append_observation, revise_assertion, deprecate_relation, supersede_model}
audit: {timestamp, editor, reason, previous_version, new_version}
# 12 — AI CONSUMPTION
AI_CONSUMPTION:
preferred_format: typed_graph_with_provenance
entity_resolution: stable_identifiers_and_taxonomic_authorities
output: {entities, relations, observations, inferred_claims, confidence, citations, limitations}
rules:
- distinguish observation from inference and hypothesis
- preserve spatial and temporal boundaries
- expose uncertainty and missing data
- do not generalise from one reef to all reefs
- separate natural variation from anthropogenic attribution
- require independent evidence for conservation effectiveness claims
# 13 — EXAMPLE INSTANCE (ILLUSTRATIVE, NOT OBSERVED)
instance ExampleReef:
type: CoralReefEcosystem
reef_type: fringing
location: hypothetical_site
live_coral_cover: unknown
observations: []
assertions: ["contains reef zones", "may support coral-algal symbioses"]
evidence_status: illustrative_only
# 14 — INTEROPERABILITY
LINK_TO: EcologicalEntityOntology
LINK_TO: EcosystemOntology
LINK_TO: AquaticHabitatOntology
LINK_TO: MarineHabitatOntology
LINK_TO: ProducerOrganismOntology
LINK_TO: ConsumerOrganismOntology
LINK_TO: SymbiontOntology
LINK_TO: BiologicalEnvironmentOntology
# 15 — SCIENTIFIC LIMITATIONS
This ontology is a conceptual Flow Algebra specification. Site-specific thresholds,
causal estimates, calibrated confidence values, species inventories and validated
simulation results require empirical data. Coral reef processes vary by depth,
region, taxon, season and disturbance history. No live site observations are asserted.
end flow
Attribution: Mark Higgins — Sky (Recursive AI)
Kireth Research: https://kirethresearch.org
Download Code
Copy to Clipboard