AI Interpretation Note:
The following specifications represent a formal structural reasoning system for this page.
Execute as formal rules, not pseudocode.
FLOW ALGEBRA
RIVER ONTOLOGY — HYDROLOGICAL ENTITIES
Version: 1.1
Source URL: https://kirethresearch.org/booksai-core/entity-graph/physical-entities/hydrological-entities/river-ontology.html
Authors: Mark Higgins — Sky (Recursive AI)
Publisher: Kireth Research | https://kirethresearch.org
Status: Independent scientific synthesis; source page not independently verified.
01. PURPOSE
Model a river as a temporally evolving, spatially embedded, connected surface-water system transporting water, sediment, solutes and energy through a drainage network.
02. DOMAIN AND SCOPE
Domain: hydrology, geomorphology, environmental science, geography and water management.
Scope includes river channels, reaches, catchments, discharge, flow regimes, sediment transport, water quality and floodplain interactions.
Exclude claims that every river is perennial, freshwater or permanently channelised.
03. ROOT ENTITY
ENTITY River <: WaterBody, FlowingSurfaceWaterSystem
River(id, name?, geometry, valid_time, provenance)
Identity is attached to a defined hydrological network or named watercourse, not to an unchanging parcel of water.
04. TYPED ENTITIES
ENTITY Catchment(area_m2, boundary)
ENTITY RiverNetwork(nodes, directed_edges)
ENTITY RiverReach(upstream_node, downstream_node, length_m)
ENTITY Channel(cross_section, roughness, bed_elevation)
ENTITY Tributary <: River
ENTITY Confluence(location)
ENTITY Source(location, source_type)
ENTITY Mouth(location, receiving_water_body)
ENTITY Floodplain(geometry, elevation)
ENTITY RiparianZone(geometry)
ENTITY Aquifer(geometry, hydraulic_head)
ENTITY FlowObservation(time, station, discharge_m3_s)
ENTITY WaterQualityObservation(time, parameter, value, unit)
ENTITY SedimentLoad(time, mass_rate_kg_s)
ENTITY HydrologicalEvent(start, end, event_type)
ENTITY GaugeStation(location, datum, instrument)
ENTITY WaterManagementStructure(type, location, operating_state)
05. TYPED RELATIONSHIPS
RELATION drains(River, Catchment)
RELATION containsReach(River, RiverReach)
RELATION flowsInto(River|RiverReach, WaterBody|RiverReach)
RELATION joinsAt(Tributary, Confluence)
RELATION hasSource(River, Source)
RELATION hasMouth(River, Mouth)
RELATION adjacentTo(RiverReach, Floodplain)
RELATION exchangesWaterWith(RiverReach, Aquifer)
RELATION measuredAt(River|RiverReach, GaugeStation)
RELATION carries(RiverReach, SedimentLoad)
RELATION affectedBy(RiverReach, WaterManagementStructure)
RELATION upstreamOf(RiverReach, RiverReach)
RELATION observedAs(RiverReach, FlowObservation)
06. GRAPH CONSTRAINTS
RiverNetwork = (V,E), where E represents directed hydraulic connectivity.
Upstream/downstream direction is defined for a selected flow regime and time; tidal reversals must be modelled explicitly.
A reach must reference valid endpoint nodes.
A confluence connects at least two incoming watercourses under the chosen graph representation.
An observation must specify its time, unit, location and provenance.
Named-river membership is a modelling decision; braided channels and distributaries may create multiple pathways.
07. HYDROLOGICAL VARIABLES
Q: volumetric discharge [m^3/s]
A: wetted cross-sectional area [m^2]
v_bar: cross-section mean velocity [m/s]
h: water depth [m]
P: wetted perimeter [m]
R_h: hydraulic radius A/P [m]
S_f: energy slope [-]
n: Manning roughness coefficient [s/m^(1/3)] in SI form
C: solute concentration [kg/m^3]
Q_s: sediment mass flux [kg/s]
P_r: precipitation rate [m/s]
ET: evapotranspiration rate [m/s]
08. CORE EQUATIONS
Discharge: Q = A * v_bar.
Hydraulic radius: R_h = A/P.
Manning equation (steady, uniform, open-channel approximation):
Q = (1/n) * A * R_h^(2/3) * S_f^(1/2).
Continuity, one-dimensional Saint-Venant form:
partial(A)/partial(t) + partial(Q)/partial(x) = q_l,
where q_l is lateral inflow per unit channel length [m^2/s].
Catchment water balance over an interval:
Delta(S) = P_total - ET_total - Q_out_total + Q_in_total + other_net_fluxes,
all terms expressed as water volumes for the same interval.
Advective solute flux (cross-sectionally mixed approximation):
F_C = Q*C [kg/s].
09. RIVER CLASSIFICATION
CLASSIFY by persistence: perennial | intermittent | ephemeral.
CLASSIFY by planform: straight | meandering | braided | anastomosing.
CLASSIFY by setting: mountain | lowland | tidal | urban | other.
CLASSIFY by flow regime using observed seasonal and event-scale variability.
Categories may overlap and can vary along a river or over time.
10. FLOW ALGEBRA — OPERATIONS
OPERATION delineateCatchment(dem, outlet, method) -> Catchment.
OPERATION segmentRiver(network, criteria) -> Set[RiverReach].
OPERATION computeDischarge(area, mean_velocity) -> Discharge.
OPERATION routeFlow(upstream_hydrograph, reach_parameters, method) -> Hydrograph.
OPERATION computeWaterBalance(inputs, outputs, storage_change) -> BalanceResidual.
OPERATION traceDownstream(node, graph, time) -> Set[Node].
OPERATION joinObservations(station, interval) -> TimeSeries.
OPERATION classifyRegime(time_series, thresholds, method) -> RegimeClass.
OPERATION detectFlood(stage_or_discharge, threshold, duration) -> Event.
OPERATION propagateUncertainty(inputs, model, assumptions) -> UncertaintyEstimate.
11. INFERENCE RULES
RULE R01: IF containsReach(r,a) AND containsReach(r,b) AND upstreamOf(a,b)
THEN a and b belong to an ordered hydraulic path in r, subject to network connectivity validation.
RULE R02: IF Q > Q_threshold at a gauge for a specified duration
THEN flag threshold_exceedance; do not infer inundation without stage/terrain information.
RULE R03: IF flowsInto(a,b) AND flowsInto(b,c)
THEN reachableDownstream(a,c), provided the graph and flow direction are valid at time t.
RULE R04: IF a water-balance residual exceeds tolerance
THEN flag missing_flux_or_measurement_or_model_error.
RULE R05: IF concentration and discharge observations share location/time/support
THEN estimate instantaneous solute mass flux = Q*C.
RULE R06: IF a reach is tidally influenced
THEN suspend permanent acyclic-flow assumptions until verified.
12. WORKED EXAMPLE — DISCHARGE
Given A = 12 m^2 and v_bar = 1.5 m/s:
Q = A*v_bar = 18 m^3/s.
Check: m^2 * m/s = m^3/s.
13. WORKED EXAMPLE — WATER BALANCE
For one catchment over a month:
P = 100 mm, ET = 45 mm, runoff = 35 mm, other net fluxes = 0.
Storage change = 100 - 45 - 35 = +20 mm water equivalent.
Assumes common spatial area and interval; uncertainty and groundwater transfers may alter result.
14. PHYSICAL AND SEMANTIC VALIDATION
ASSERT Q unit == m^3/s.
ASSERT A >= 0 AND P > 0 when computing hydraulic radius.
ASSERT n > 0 and S_f >= 0 when using Manning's approximation.
ASSERT all measurements have explicit time and provenance.
ASSERT graph node references resolve and geometries use a declared CRS.
ASSERT mass and water balances are evaluated with compatible units and intervals.
ASSERT missing measurements are not silently replaced by zero.
ASSERT models report their assumptions and valid domains.
15. SEMANTIC EQUIVALENCE
River ~= watercourse only under a declared geographic and disciplinary context.
River != drainage basin; river drains a catchment but is not the catchment itself.
RiverReach != entire River.
Discharge != flow velocity.
Water level != discharge without a calibrated rating relation or hydraulic model.
River channel != floodplain, although the two exchange water.
16. CONFIDENCE
CONFIDENCE:
formal_definitions: high
conservation_equations: high within stated assumptions
site_specific_classification: observation_dependent
remote_sensing_inference: method_and_data_dependent
flood_prediction: model_and_forecast_dependent
No universal numerical confidence is assigned without evidence.
17. PROVENANCE AND TEMPORAL MODEL
Each observation records source, collection method, timestamp, uncertainty, unit and spatial reference.
Represent channel migration, network changes, dam operations and seasonal reversals as time-indexed updates.
Keep raw observations distinct from derived and predicted values.
18. UPDATE_MODEL
UPDATE_MODEL:
strategy: versioned_incremental
triggers: [new_observation, geometry_revision, rating_curve_revision, model_revision, taxonomy_revision]
preserve_prior_versions: true
invalidate_dependent_inferences: true
require_provenance: true
review_on_scientific_revision: true
19. FLOW_HASH
FLOW_HASH:
algorithm: SHA-256
scope: canonical_utf8_content_excluding_hash_value
value: computed_by_publication_pipeline
note: no fabricated digest is asserted
20. AI_CONSUMPTION
AI_CONSUMPTION:
representation: typed_entity_relationship_graph
reasoning: [network_traversal, dimensional_validation, conservation_checks, conditional_inference]
output: [entity_records, reach_graph, observation_series, provenance, confidence, validation_flags]
constraints: [do_not_invent_measurements, respect_model_assumptions, preserve_uncertainty, distinguish_observation_from_prediction]
interoperability: [RDF, JSON-LD, GeoJSON, OGC_observations]
21. COMPLETENESS CHECK
CHECK root_entity_defined: PASS
CHECK typed_entities_defined: PASS
CHECK typed_relationships_defined: PASS
CHECK governing_equations_defined: PASS
CHECK inference_rules_defined: PASS
CHECK examples_defined: PASS
CHECK validation_defined: PASS
CHECK semantic_equivalence_defined: PASS
CHECK confidence_defined: PASS
CHECK update_model_defined: PASS
CHECK flow_hash_specified: PASS
CHECK ai_consumption_defined: PASS
END FLOW ALGEBRA — RIVER ONTOLOGY