Environmental Biological Entities
Authors:
MArk Anthony Higgins - Sky Recursive Ai
MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: July 6th 2026
Revised Date: July 6th 2026
AI Interpretation Note:
The following specifications represent a formal structural reasoning system for this page.
Execute as formal rules, not pseudocode.
FLOW ALGEBRA
Environmental Biological Entities — Category Ontology v1.0
Kireth Semantic Library | 2026-10-26
Authors: Mark Higgins — Sky (Recursive AI)
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/experimental-biological-entities.html
NOTE: The URL slug says 'experimental-biological-entities', but the live page heading says 'Environmental Biological Entities'. This formalisation follows the live heading and its listed child ontologies. It is an authored specification, not a transcription of existing executable code.
flow "EnvironmentalBiologicalEntities" v1.0
# TYPE SYSTEM
type EntityID = str
type URI = str
type Timestamp = datetime
type Confidence = float where 0.0 <= value <= 1.0
type Quantity = {value:float, unit:str, uncertainty:float?}
type Evidence = {source:URI, observed_at:Timestamp?, method:str?, confidence:Confidence}
type GeoRegion = {identifier:EntityID, geometry_ref:URI?, scale:str?}
type EnvironmentalEntity = {id:EntityID, label:str, class:EnvironmentalClass, region:GeoRegion?, evidence:Evidence[]}
enum EnvironmentalClass = [
BiologicalEnvironment, TerrestrialHabitat, AquaticHabitat, MarineHabitat,
FreshwaterHabitat, SoilHabitat, ForestEcosystem, GrasslandEcosystem,
DesertEcosystem, WetlandEcosystem, CoralReefEcosystem, PolarEcosystem,
UrbanEcosystem, EcologicalResource, OrganicMatter, Detritus,
NutrientPool, CarbonReservoir, BiologicalEnvironmentalIndicator
]
type EnvironmentalObservation = {
subject:EntityID, property:str, measurement:Quantity?, category:str?,
observed_at:Timestamp, evidence:Evidence
}
type Relationship = {
subject:EntityID, predicate:Predicate, object:EntityID,
valid_from:Timestamp?, valid_to:Timestamp?, evidence:Evidence[]
}
enum Predicate = [
IS_A, PART_OF, CONTAINS, LOCATED_IN, OVERLAPS, SUPPORTS,
PROVIDES_RESOURCE_TO, DERIVES_FROM, TRANSFERS_TO, CYCLES_THROUGH,
INDICATES, RESPONDS_TO, AFFECTS, MEASURED_BY
]
# CATEGORY HIERARCHY
classification:
BiologicalEnvironment -> EnvironmentalEntity
TerrestrialHabitat -> BiologicalEnvironment
AquaticHabitat -> BiologicalEnvironment
MarineHabitat -> AquaticHabitat
FreshwaterHabitat -> AquaticHabitat
SoilHabitat -> TerrestrialHabitat
ForestEcosystem -> BiologicalEnvironment
GrasslandEcosystem -> BiologicalEnvironment
DesertEcosystem -> BiologicalEnvironment
WetlandEcosystem -> BiologicalEnvironment
CoralReefEcosystem -> BiologicalEnvironment
PolarEcosystem -> BiologicalEnvironment
UrbanEcosystem -> BiologicalEnvironment
EcologicalResource -> EnvironmentalEntity
OrganicMatter -> EcologicalResource
Detritus -> OrganicMatter
NutrientPool -> EcologicalResource
CarbonReservoir -> EcologicalResource
BiologicalEnvironmentalIndicator -> EnvironmentalEntity
# RELATIONSHIP RULES
rule R01: IS_A(x,y) AND IS_A(y,z) => IS_A(x,z)
rule R02: PART_OF(x,y) AND PART_OF(y,z) => PART_OF(x,z)
rule R03: CONTAINS(x,y) => PART_OF(y,x) [only for physically compositional containment]
rule R04: LOCATED_IN(x,y) AND LOCATED_IN(y,z) => LOCATED_IN(x,z) [only when region containment is verified]
rule R05: INDICATES(indicator,condition) => candidate_evidence(condition) [not proof of condition]
rule R06: TRANSFERS_TO(pool_a,pool_b) => require(flux_evidence, time_interval, unit)
rule R07: AFFECTS(x,y) => require(direction_or_unknown, evidence)
rule R08: OVERLAPS(x,y) => OVERLAPS(y,x)
# QUANTITATIVE FLOWS
flow "ResourceTransfer"(source:EntityID, destination:EntityID, amount:Quantity, interval:duration):
pre: amount.value >= 0
pre: compatible_units(amount.unit, source, destination)
effect: record TRANSFERS_TO(source,destination)
effect: append_flux(source,destination,amount,interval)
invariant: transferred_quantity >= 0
flow "NutrientPoolBalance"(pool:EntityID, inputs:Quantity[], outputs:Quantity[], interval:duration):
pre: units_compatible(inputs,outputs)
derive: delta_pool = sum(inputs) - sum(outputs)
derive: predicted_final = initial_pool + delta_pool
invariant: predicted_final >= 0 OR flag("missing flux or measurement inconsistency")
flow "EnvironmentalIndicatorAssessment"(indicator:EntityID, observations:EnvironmentalObservation[], baseline:URI):
pre: baseline is independently documented
derive: deviation = compare_to_baseline(observations,baseline)
derive: confidence = calibrated_evidence_confidence(observations)
output: {deviation, confidence, limitations, evidence_refs}
constraint: do_not_infer_causation_from_correlation
# INVARIANTS
I01: every entity has a stable, nonempty identifier
I02: each asserted relationship has typed endpoints
I03: geographic overlap does not imply class equivalence
I04: ecosystem and habitat classifications may overlap
I05: marine and freshwater are not assumed exhaustive of aquatic habitats
I06: mass or nutrient budgets must use compatible units and temporal boundaries
I07: carbon reservoirs are stocks; carbon fluxes are time-indexed transfers
I08: indicators provide evidence, not automatic proof of environmental state
I09: missing evidence is not evidence of absence
I10: no biological entity may be inferred solely from an unverified label
# CONFIDENCE
CONFIDENCE(assertion) := calibrate(source_quality, observation_quality, replication, temporal_relevance)
constraint: 0 <= CONFIDENCE(assertion) <= 1
constraint: correlated sources must not be treated as independent
constraint: inferred claims retain provenance and uncertainty
# SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE(a,b) :=
same_referent(a,b) AND compatible_scope(a,b) AND compatible_time(a,b)
constraint: similar labels alone do not establish equivalence
constraint: PART_OF and OVERLAPS never imply SEMANTIC_EQUIVALENCE
# FLOW HASH
FLOW_HASH(entity) := SHA256(canonical_utf8(
{id:entity.id, class:entity.class, relations:sorted_assertions(entity.id),
observations:sorted_observations(entity.id), schema_version:"1.0"}))
constraint: canonicalisation is deterministic and excludes volatile display fields
# UPDATE MODEL
UPDATE_MODEL(event):
validate(event.schema)
preserve(previous_version)
attach(event.provenance, event.timestamp)
check(type_constraints, invariants, unit_consistency)
if conflicts_exist: retain_competing_claims_and_flag_review()
else: commit_version_and_recompute_affected_flow_hashes()
# AI CONSUMPTION
AI_CONSUMPTION(query):
parse_typed_entities_and_relations(query)
retrieve_matching_entities_and_provenance()
evaluate_rules_with_scope_and_time_constraints()
return {claims, evidence, confidence, uncertainties, version, flow_hash}
prohibit: fabricated_measurements, unsupported_causal_claims, silent_unit_conversion
# VALIDATION TESTS
test T01: MarineHabitat IS_A AquaticHabitat -> true
test T02: Detritus IS_A OrganicMatter -> true
test T03: OVERLAPS(a,b) -> OVERLAPS(b,a)
test T04: negative_transfer_amount -> reject
test T05: indicator_observation_without_baseline -> qualified_result_only
test T06: unequal_unit_fluxes -> reject_until_normalised
test T07: identical_canonical_inputs -> identical_FLOW_HASH
# PAGE CHILD ONTOLOGIES
# Biological Environment; Terrestrial Habitat; Aquatic Habitat; Marine Habitat;
# Freshwater Habitat; Soil Habitat; Forest Ecosystem; Grassland Ecosystem;
# Desert Ecosystem; Wetland Ecosystem; Coral Reef Ecosystem; Polar Ecosystem;
# Urban Ecosystem; Ecological Resource; Organic Matter; Detritus;
# Nutrient Pool; Carbon Reservoir Entity; Biological Environmental Indicator.
END FLOW