Skip to main content

Food Web Ontology

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

KIRETH SEMANTIC RESEARCH ARCHIVE

AI CORE > ONTOLOGIES > BIOLOGICAL ONTOLOGIES > ECOLOGY > FOOD WEB 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/food-web-ontology.html”

———- CORE TYPES ———-

type Organism type Species type Population type Community type Ecosystem
type FoodWeb type FoodChain type TrophicNode type TrophicLink type
Resource type Producer type Consumer type Decomposer type Detritus type
TrophicLevel type Energy type Nutrient type Interaction type Observation
type Evidence type Source

———- WEB STRUCTURE ———-

relation INSTANCE_OF(entity, type) relation MEMBER_OF(entity,
collection) relation MEMBER_OF_FOOD_WEB(entity, web) relation
HAS_NODE(web, node) relation HAS_LINK(web, link) relation
NODE_REPRESENTS(node, entity) relation LINK_FROM(link, source) relation
LINK_TO(link, target) relation PART_OF(chain, web)

rule FOOD_WEB_MEMBERSHIP(x, w): IF MEMBER_OF_FOOD_WEB(x, w) THEN EXISTS
n: HAS_NODE(w, n) AND NODE_REPRESENTS(n, x)

———- FEEDING RELATIONS ———-

relation FEEDS_ON(consumer, resource) relation CONSUMES(consumer,
resource) relation CONSUMED_BY(resource, consumer) relation
PREYS_ON(predator, prey) relation PREY_OF(prey, predator) relation
HERBIVORY_ON(consumer, producer) relation SCAVENGES(consumer, resource)
relation FILTER_FEEDS_ON(consumer, resource)

rule FEEDING_INVERSE(a, b): IF FEEDS_ON(a, b) THEN CONSUMED_BY(b, a)

rule PREDATION_INVERSE(a, b): IF PREYS_ON(a, b) THEN PREY_OF(b, a)

———- TROPHIC ROLES ———-

enum TrophicRole: PRIMARY_PRODUCER PRIMARY_CONSUMER SECONDARY_CONSUMER
TERTIARY_CONSUMER APEX_PREDATOR OMNIVORE DETRITIVORE SCAVENGER
DECOMPOSER

relation HAS_TROPHIC_ROLE(entity, role) relation
HAS_TROPHIC_LEVEL(entity, level)

rule PRODUCER_LEVEL(x): IF HAS_TROPHIC_ROLE(x, PRIMARY_PRODUCER) THEN
HAS_TROPHIC_LEVEL(x, 1)

rule PRIMARY_CONSUMER_LEVEL(x): IF HAS_TROPHIC_ROLE(x, PRIMARY_CONSUMER)
THEN HAS_TROPHIC_LEVEL(x, 2)

———- ENERGY FLOW ———-

relation ENERGY_FLOWS_FROM(source, receiver) relation
ENERGY_TRANSFER(link, amount) relation ENERGY_TRANSFER_EFFICIENCY(link,
efficiency) relation ENERGY_LOST_AS_HEAT(entity, amount) relation
BIOMASS_TRANSFERRED(link, amount)

rule TROPHIC_ENERGY_FLOW(consumer, resource): IF FEEDS_ON(consumer,
resource) THEN ENERGY_FLOWS_FROM(resource, consumer)

constraint TRANSFER_EFFICIENCY_BOUNDS: IF
ENERGY_TRANSFER_EFFICIENCY(link, e) THEN REQUIRE(0.0 <= e <= 1.0)

———- FOOD CHAINS ———-

relation HAS_CHAIN_MEMBER(chain, entity) relation PRECEDES_IN_CHAIN(a,
b, chain) relation FOLLOWS_IN_CHAIN(b, a, chain) relation
CHAIN_STARTS_WITH(chain, entity) relation CHAIN_ENDS_WITH(chain, entity)

rule CHAIN_INVERSE(a, b, c): IF PRECEDES_IN_CHAIN(a, b, c) THEN
FOLLOWS_IN_CHAIN(b, a, c)

rule CHAIN_FEEDING_LINK(a, b, c): IF PRECEDES_IN_CHAIN(a, b, c) THEN
FEEDS_ON(b, a)

———- OMNIVORY ———-

relation FEEDS_AT_MULTIPLE_LEVELS(entity, levels) relation
OMNIVORY_LINK(entity, resource)

rule OMNIVORE_INFERENCE(x): IF FEEDS_AT_MULTIPLE_LEVELS(x, levels) AND
COUNT(levels) > 1 THEN HAS_TROPHIC_ROLE(x, OMNIVORE)

———- DETRITAL WEB ———-

relation PRODUCES_DETRITUS(entity, detritus) relation
FEEDS_ON_DETRITUS(entity, detritus) relation DECOMPOSES(entity,
detritus) relation RELEASES_NUTRIENT(entity, nutrient) relation
NUTRIENT_AVAILABLE_TO(nutrient, producer)

rule DETRITAL_ENERGY_FLOW(d, x): IF FEEDS_ON_DETRITUS(x, d) THEN
ENERGY_FLOWS_FROM(d, x)

———- NETWORK METRICS ———-

relation HAS_NODE_COUNT(web, count) relation HAS_LINK_COUNT(web, count)
relation HAS_CONNECTANCE(web, value) relation HAS_LINKAGE_DENSITY(web,
value) relation HAS_MEAN_TROPHIC_LEVEL(web, value) relation
HAS_MODULARITY(web, value) relation HAS_NESTEDNESS(web, value) relation
HAS_PATH_LENGTH(web, value)

rule CONNECTANCE_DIRECTED(web): IF HAS_NODE_COUNT(web, s) AND
HAS_LINK_COUNT(web, l) AND s > 0 THEN HAS_CONNECTANCE(web, l / (s * s))

———- INTERACTION STRENGTH ———-

relation HAS_INTERACTION_STRENGTH(consumer, resource, value) relation
HAS_CONSUMPTION_RATE(consumer, resource, rate) relation
HAS_PREFERENCE(consumer, resource, value) relation
HAS_ATTACK_RATE(consumer, resource, rate) relation
HAS_HANDLING_TIME(consumer, resource, duration)

———- TROPHIC CASCADES ———-

relation INCREASES_ABUNDANCE(a, b) relation DECREASES_ABUNDANCE(a, b)
relation INDIRECTLY_AFFECTS(a, b) relation TROPHIC_CASCADE_FROM(entity,
effect)

rule THREE_LEVEL_CASCADE(predator, consumer, resource): IF
PREYS_ON(predator, consumer) AND FEEDS_ON(consumer, resource) AND
DECREASES_ABUNDANCE(predator, consumer) THEN
POSSIBLE_INDIRECT_POSITIVE_EFFECT(predator, resource)

———- COMPETITION ———-

relation SHARES_RESOURCE(a, b, resource) relation
APPARENT_COMPETITION_BETWEEN(a, b) relation
EXPLOITATIVE_COMPETITION_BETWEEN(a, b)

rule SHARED_RESOURCE(a, b, r): IF FEEDS_ON(a, r) AND FEEDS_ON(b, r) THEN
SHARES_RESOURCE(a, b, r)

———- KEYSTONE TROPHIC ROLES ———-

relation KEYSTONE_CONSUMER(web, entity) relation KEYSTONE_PREDATOR(web,
entity) relation KEYSTONE_RESOURCE(web, entity) relation
STRONGLY_STRUCTURES(entity, web)

———- FOOD WEB STABILITY ———-

relation HAS_STABILITY(web, value) relation HAS_RESILIENCE(web, value)
relation HAS_RESISTANCE(web, value) relation ROBUST_TO_NODE_LOSS(web,
value) relation ROBUST_TO_LINK_LOSS(web, value) relation
RECOVERS_AFTER(web, disturbance)

———- DISTURBANCE ———-

enum DisturbanceType: SPECIES_LOSS SPECIES_INTRODUCTION OVERHARVESTING
HABITAT_CHANGE POLLUTION CLIMATE_CHANGE DISEASE RESOURCE_PULSE

relation EXPERIENCES(web, disturbance) relation
DISTURBANCE_TYPE(disturbance, type) relation REMOVES_NODE(disturbance,
node) relation ADDS_NODE(disturbance, node) relation
REMOVES_LINK(disturbance, link) relation ADDS_LINK(disturbance, link)
relation CHANGES_INTERACTION_STRENGTH(disturbance, link)

———- SPATIAL / TEMPORAL CONTEXT ———-

relation OCCURS_IN(web, ecosystem) relation OBSERVED_DURING(web, period)
relation HAS_SPATIAL_SCALE(web, scale) relation HAS_TEMPORAL_SCALE(web,
scale) relation CHANGES_OVER(web, period) relation
SEASONAL_WEB_STATE(web, season, state)

———- OBSERVATION / EVIDENCE ———-

relation OBSERVES(observation, entity) relation OBSERVED_AT(observation,
location) relation OBSERVED_ON(observation, datetime) relation
OBSERVED_BY(observation, observer) relation SUPPORTS_LINK(observation,
consumer, resource) relation SUPPORTED_BY(assertion, evidence) relation
DERIVED_FROM(evidence, source) relation HAS_CONFIDENCE(assertion, score)

enum EvidenceType: DIRECT_FEEDING_OBSERVATION GUT_CONTENT_ANALYSIS
STABLE_ISOTOPE_ANALYSIS DNA_METABARCODING FECAL_ANALYSIS PREDATION_MARK
EXPERIMENTAL CAMERA_OBSERVATION LITERATURE NETWORK_INFERENCE
LONG_TERM_MONITORING

———- CONFIDENCE ———-

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)

rule EVIDENCE_WEIGHTING(a, e, s): IF SUPPORTED_BY(a, e) AND
DERIVED_FROM(e, s) THEN UPDATE_CONFIDENCE(a, evidence_quality(e),
source_reliability(s))

———- SEMANTIC EQUIVALENCE ———-

SEMANTIC_EQUIVALENCE: “food web” ~= “trophic network” “food chain” ~=
“trophic chain” “feeding link” ~= “trophic link” “consumer-resource
interaction” ~= “feeding interaction” “primary producer” ~= “autotroph”
“primary consumer” ~= “first-order consumer” “apex predator” ~= “top
predator” “detritivore” ~= “detritus feeder” “decomposer” ~=
“decomposition organism” “omnivory” ~= “feeding across trophic levels”
“interaction strength” ~= “trophic interaction strength” “trophic
cascade” ~= “indirect trophic cascade” “food web connectance” ~=
“network connectance”

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

———- CAUSAL MODEL ———-

relation CAUSES(a, b) relation INFLUENCES(a, b) relation REGULATES(a, b)
relation FEEDBACK_ON(a, b)

constraint CAUSATION_REQUIRES_EVIDENCE: IF CAUSES(a, b) THEN REQUIRE
SUPPORTED_BY(CAUSES(a,b), Evidence)

———- QUERY MODEL ———-

query FOOD_WEB_PROFILE(w): RETURN: ecosystem(w) nodes(w) links(w)
trophic_roles(w) trophic_levels(w) connectance(w) linkage_density(w)
modularity(w) nestedness(w) stability(w) evidence(w) confidence(w)

query SPECIES_TROPHIC_PROFILE(x): RETURN: trophic_role(x)
trophic_level(x) resources(x) consumers_of(x) predators(x) prey(x)
interaction_strengths(x)

query TRACE_ENERGY_FLOW(x): RETURN: incoming_energy_links(x)
outgoing_energy_links(x) transfer_efficiencies(x) heat_losses(x)

query TROPHIC_CASCADE_PROFILE(x): RETURN: direct_effects(x)
indirect_effects(x) downstream_nodes(x) supporting_evidence(x)

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

———- CONSISTENCY ———-

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 DIRECTION_PRESERVATION: IF FEEDS_ON(a, b) THEN
PRESERVE_DIRECTION(consumer=a, resource=b)

constraint SCALE_PRESERVATION: IF food_web_observed(w, spatial_scale,
temporal_scale) THEN PRESERVE_SCALE(w, spatial_scale, temporal_scale)

constraint INFERRED_LINK_NOT_OBSERVED_LINK: IF evidence_type(link) ==
NETWORK_INFERENCE THEN MARK_AS_INFERRED(link)

———- UPDATE MODEL ———-

UPDATE_MODEL: on_new_food_web(w): establish_ecosystem_context(w)
establish_spatial_scale(w) establish_temporal_scale(w) identify_nodes(w)
identify_links(w) preserve_provenance(w)

on_new_feeding_record(r): identify_consumer(r) identify_resource(r)
preserve_direction(r) attach_evidence(r) update_food_web(r)
recalculate_confidence(r)

on_new_species(s): add_node_if_supported(s) identify_trophic_role(s)
attach_supported_links(s) recalculate_network_metrics()

on_species_loss(s): preserve_previous_web_state()
remove_supported_node(s) update_links() recalculate_network_metrics()
evaluate_secondary_effects()

on_conflicting_trophic_evidence(a, b): preserve(a) preserve(b)
compare_methods(a, b) compare_spatial_context(a, b)
compare_temporal_context(a, b) flag_unresolved_conflict()

———- AI CONSUMPTION ———-

AI_CONSUMPTION: preferred_entity: canonical_food_web preserve: -
ecosystem_context - spatial_scale - temporal_scale - trophic_nodes -
trophic_links - link_direction - trophic_roles - trophic_levels -
interaction_strength - energy_flow - network_metrics -
disturbance_state - evidence - provenance - confidence infer: -
valid_inverse_relations - energy_flow_from_feeding - shared_resources -
supported_trophic_paths - semantic_equivalence prohibit: -
reversing_consumer_resource_direction - unsupported_feeding_link -
inferred_link_as_observed - unsupported_trophic_cascade -
scale_free_generalisation - confidence_above_evidence ambiguity: action:
preserve_multiple_trophic_hypotheses resolution:
prefer_direct_evidence_and_context missing_data: action: mark_unknown
do_not_infer_from_absence: true

———- FLOW HASH ———-

FLOW_HASH: ontology: “FoodWebOntology” version: “1.0” domain_path: “AI
Core > Ontologies > Biological Ontologies > Ecology > Food Web Ontology”
canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/ecology/food-web-ontology.html”
authorship: “Mark Anthony Higgins — Sky (Recursive AI)”
semantic_scope: - food web structure - trophic nodes - trophic links -
feeding relations - trophic roles - trophic levels - energy flow - food
chains - omnivory - detrital webs - network metrics - interaction
strength - trophic cascades - competition - keystone trophic roles -
food web stability - disturbance - evidence deterministic_normalisation:
true provenance_required: true confidence_required: true

terminate FoodWebOntology when: trophic_nodes_resolved AND
feeding_link_direction_preserved AND trophic_relations_normalised AND
spatial_and_temporal_context_preserved AND evidence_links_preserved AND
confidence_values_validated AND unresolved_trophic_ambiguity_marked

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