# River Discharge Ontology — Flow Algebra
URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/earth-science-measurements/river-discharge-ontology.html
FLOW RiverDischargeOntology {
DOMAIN:
Mathematical Ontologies
-> Measurement & Units Ontologies
-> Earth Science Measurements
-> River Discharge Ontology
PURPOSE:
Represent river discharge as the volumetric flow rate of water passing through a defined river cross-section, including instantaneous and averaged discharge, stage-discharge relationships, velocity-area methods, current meters, acoustic Doppler measurements, dilution gauging, weirs and flumes, rating curves, flood and low-flow measurements, temporal aggregation, catchment runoff, calibration, uncertainty, provenance, and strict distinctions between discharge, water level, velocity, volume and runoff depth.
ENTITY RiverDischarge {
TYPE: VolumetricFlowRateQuantity
SYMBOL: Q
DIMENSION: L^3*T^-1
SI_UNIT: cubic_metre_per_second
SI_SYMBOL: m^3/s
DEFINITION:
river_discharge :=
volume_of_water_crossing_a_defined_river_cross_section_per_unit_time
DIFFERENTIAL_FORM:
Q = dV/dt
PROPERTIES:
is_rate_quantity
depends_on_cross_section
varies_with_time
may_be_measured_or_inferred
may_be_positive_or_signed_under_directional_convention
may_have_uncertainty
}
ENTITY Stage {
TYPE: WaterLevelQuantity
SYMBOL: h
SI_UNIT: metre
DEFINITION:
water_surface_elevation_or_height
relative_to_declared_gauge_datum
}
ENTITY MeanFlowVelocity {
TYPE: VelocityQuantity
SYMBOL: v_mean
SI_UNIT: metre_per_second
}
ENTITY CrossSectionArea {
TYPE: AreaQuantity
SYMBOL: A
SI_UNIT: square_metre
}
UNIT_SYSTEM {
discharge:
SI: m^3/s
common:
litre_per_second
cubic_metre_per_day
cubic_foot_per_second
conversions:
1 L/s = 0.001 m^3/s
1 m^3/s = 1000 L/s
RULE:
discharge_unit MUST preserve_volume_per_time_semantics
}
TERMINOLOGY_MODEL {
terms:
river_discharge
streamflow
flow
flow_rate
runoff
channel_discharge
RULE:
"flow" MUST be resolved_between
discharge
velocity
water_level
total_volume
RULE:
streamflow MAY be_equivalent_to_discharge
under_hydrological_volumetric_flow_context
}
CONTINUITY_MODEL {
general:
Q =
integral_A(v_normal dA)
uniform_or_mean_velocity:
Q =
A*v_mean
REQUIRE:
cross_section
velocity_component_normal_to_section
RULE:
discharge_is_area_integral_of_normal_velocity
}
VELOCITY_AREA_MODEL {
divide_cross_section_into_subsections:
Q =
sum(v_i*A_i)
REQUIRE:
subsection_areas
representative_velocities
cross_section_geometry
RULE:
velocity_measurement_location_and_weighting_method MUST be preserved
}
CURRENT_METER_MODEL {
instruments:
propeller_current_meter
electromagnetic_current_meter
acoustic_point_velocity_meter
measured:
local_velocity
discharge:
derived_from_velocity_distribution_and_cross_section
RULE:
local_velocity != mean_section_velocity_without_spatial_integration
}
ADCP_MODEL {
instrument:
acoustic_Doppler_current_profiler
measured:
water_velocity_profiles
depth
boat_motion_or_reference_velocity
discharge:
integrated_across_cross_section
REQUIRE:
transect
instrument_configuration
blanking_distance
edge_estimation
bottom_tracking_or_GNSS_reference
sound_speed_context
RULE:
ADCP_discharge_is_modelled_integration_of_velocity_and_geometry
}
STAGE_MODEL {
stage:
water_surface_level_relative_to_gauge_datum
RULE:
stage != discharge
}
RATING_CURVE_MODEL {
relation:
Q = f(h)
common_power_form:
Q =
a*(h-h_0)^b
WHEN h > h_0
PARAMETERS:
a
b
h_0 = effective_zero_flow_stage
REQUIRE:
gauging_station
stage_datum
calibration_measurements
valid_range
rating_version
RULE:
rating_curve_is_site_specific_and_time_dependent
}
RATING_SHIFT_MODEL {
causes:
sedimentation
erosion
vegetation
debris
ice
channel_migration
backwater
shifted_relation:
Q = f(h, shift_parameter)
RULE:
rating_shift_history MUST be preserved
}
HYSTERESIS_MODEL {
phenomenon:
different_Q_for_same_stage_on_rising_and_falling_limb
causes:
unsteady_flow
flood_wave_slope
storage
backwater
RULE:
single_valued_stage_discharge_curve MAY be_invalid_during_hysteretic_events
}
BACKWATER_MODEL {
causes:
downstream_control
tributary
reservoir
tide
vegetation
ice
effect:
stage_not_uniquely_related_to_discharge
RULE:
backwater_conditions MAY require_slope_or_multi_parameter_rating
}
SLOPE_AREA_MODEL {
Manning_relation:
Q =
(1/n_M)*A*R_h^(2/3)*S^(1/2)
PARAMETERS:
n_M = Manning_roughness
R_h = hydraulic_radius
S = energy_slope
USE:
indirect_flood_discharge_estimation
RULE:
roughness_geometry_and_slope_assumptions MUST be preserved
}
WEIR_MODEL {
generic:
Q =
C*geometry_factor*head^exponent
REQUIRE:
weir_type
crest_geometry
upstream_head
discharge_coefficient
submergence_condition
RULE:
weir_equation_and_coefficient MUST match_structure_and_flow_regime
}
FLUME_MODEL {
structures:
Parshall_flume
Venturi_flume
critical_depth_flume
discharge:
Q = f(head, geometry, calibration)
RULE:
flume_geometry_and_submergence_correction MUST be preserved
}
DILUTION_GAUGING_MODEL {
tracer:
conservative_substance
methods:
constant_rate_injection
slug_injection
constant_rate_steady_state_example:
Q =
q_inj*(C_inj-C_background)/
(C_downstream-C_background)
under_complete_mixing_and_steady_conditions
REQUIRE:
tracer_concentration
injection_rate
background
complete_mixing
recovery
RULE:
dilution_gauging_requires_mass_conservation_and_mixing_assumptions
}
VOLUMETRIC_MODEL {
small_flow:
Q =
collected_volume/collection_time
REQUIRE:
collection_time > 0
RULE:
volumetric_method_is_direct_but_generally_limited_to_small_flows
}
CROSS_SECTION_MODEL {
geometry:
width
depth_profile
bed_elevation
area:
integral_width(depth dy)
hydraulic_radius:
R_h =
A/wetted_perimeter
RULE:
cross_section_geometry MAY change_over_time
}
WATER_LEVEL_DATUM_MODEL {
stage_reference:
gauge_datum
possible_ties:
local_benchmark
national_vertical_datum
RULE:
gauge_datum_changes MUST be preserved_and_corrected
}
TEMPORAL_MODEL {
instantaneous:
Q(t)
interval_mean:
Q_mean =
integral_interval(Q dt)/delta_t
daily_mean:
mean_over_declared_hydrological_or_calendar_day
RULE:
instantaneous_and_mean_discharge_are_not_semantically_equivalent
}
FLOW_VOLUME_MODEL {
total_volume:
V =
integral_interval(Q dt)
constant_discharge:
V =
Q*delta_t
RULE:
discharge != water_volume
}
RUNOFF_DEPTH_MODEL {
catchment_area:
A_c
runoff_volume:
V_runoff =
integral(Q_outflow dt)
adjusted_for_declared_water_balance_context
equivalent_runoff_depth:
R_d =
V_runoff/A_c
WHEN A_c != 0
RULE:
river_discharge_and_catchment_runoff_depth
MUST be distinguished
}
SPECIFIC_DISCHARGE_MODEL {
catchment_specific_discharge:
q =
Q/A_c
units:
m^3/s/km^2
L/s/km^2
RULE:
specific_discharge_requires_catchment_area
}
BASEFLOW_MODEL {
total_streamflow:
Q_total =
Q_baseflow + Q_quickflow
under_declared_separation_model
RULE:
baseflow_is_model_dependent_component
}
FLOOD_MODEL {
quantities:
peak_discharge
flood_volume
event_duration
hydrograph
peak:
Q_peak =
max(Q(t))
over_declared_event
RULE:
flood_peak_depends_on_temporal_resolution_and_event_definition
}
LOW_FLOW_MODEL {
possible_metrics:
minimum_daily_flow
n_day_minimum
flow_duration_percentile
RULE:
low_flow_metric_definition_and_aggregation_period MUST be preserved
}
FLOW_DURATION_MODEL {
exceedance_probability:
fraction_of_time_discharge_equals_or_exceeds_Q
curve:
Q versus exceedance_probability
RULE:
flow_duration_curve_is_statistical_summary
not_chronological_hydrograph
}
HYDROGRAPH_MODEL {
hydrograph:
Q = Q(t)
event_components:
rising_limb
peak
recession_limb
baseflow
RULE:
hydrograph_temporal_resolution MUST be preserved
}
SPATIAL_CONTEXT_MODEL {
REQUIRE:
river_or_stream_identifier
gauging_station
cross_section
latitude
longitude
catchment
RULE:
discharge_is_location_specific
}
RELATIONSHIPS {
RiverDischarge -> IS_A -> VolumetricFlowRate
RiverDischarge -> RELATES -> VelocityAndCrossSectionArea
RiverDischarge -> INTEGRATES_OVER_TIME_TO -> WaterVolume
Stage -> MAY_MAP_TO -> RiverDischargeThroughRatingCurve
RatingCurve -> BELONGS_TO -> GaugingStation
CurrentMeter -> MEASURES -> LocalVelocity
ADCP -> MEASURES -> VelocityFieldAndGeometry
VelocityAreaMethod -> DERIVES -> RiverDischarge
CatchmentArea -> NORMALISES -> SpecificDischarge
RiverDischarge -> CONTRIBUTES_TO -> RunoffVolume
Hydrograph -> REPRESENTS -> DischargeTimeSeries
}
SEMANTIC_EQUIVALENCE {
"river discharge" ~= streamflow WHEN volumetric_flow_rate_context
"flow rate" ~= volumetric_discharge WHEN river_context
discharge != stage
discharge != water_level
discharge != velocity
discharge != total_water_volume
discharge != runoff_depth
local_velocity != mean_section_velocity
instantaneous_discharge != daily_mean_discharge
hydrograph != flow_duration_curve
}
CONSTRAINTS {
discharge_dimension = L^3*T^-1
measurement_cross_section_must_be_defined = true
spatial_location_must_be_defined = true
stage_datum_must_be_defined_for_rating_curve = true
discharge_and_stage_are_not_semantically_equivalent = true
discharge_and_velocity_are_not_semantically_equivalent = true
discharge_and_volume_are_not_semantically_equivalent = true
rating_curve_version_and_validity_should_be_preserved = true
temporal_aggregation_period_should_be_preserved = true
uncertainty_should_include_velocity_geometry_rating_and_temporal_components_when_relevant = true
}
MEASUREMENT_MODEL {
OBSERVABLE_OR_INFERRED:
RiverDischarge
Stage
MeanFlowVelocity
CrossSectionArea
COMMON_METHODS:
velocity_area
current_meter
ADCP
stage_discharge_rating
dilution_gauging
weir
flume
slope_area
volumetric_collection
RECORD:
numerical_value
unit
river_identifier
station_identifier
cross_section_identifier
latitude
longitude
coordinate_reference_system
stage
stage_datum
cross_section_geometry
velocity_measurements
measurement_method
instrument
rating_curve_version
rating_shift
start_time
end_time
temporal_aggregation
flow_condition
backwater_or_ice_status
calibration_state
quality_flag
uncertainty
provenance
UNCERTAINTY:
measured_or_inferred_discharge =
best_estimate +/- uncertainty
}
CALIBRATION_MODEL {
velocity_instruments:
velocity_response_calibration
stage_sensor:
water_level_calibration_and_datum_check
rating_curve:
calibrated_from_direct_discharge_measurements
structures:
weir_or_flume_coefficient_calibration
REQUIRE:
calibration_date
valid_range
reference_method
uncertainty
RULE:
calibration_and_rating_version MUST match_measurement_period
}
UNCERTAINTY_MODEL {
sources:
velocity_measurement
cross_section_geometry
depth_measurement
edge_extrapolation
ADCP_blank_zone
sound_speed
stage_measurement
rating_curve_fit
rating_shift
hysteresis
backwater
roughness
tracer_recovery
temporal_sampling
instrument_calibration
PROPAGATION:
discharge_uncertainty
<- velocity_geometry_stage_rating_environment_and_method_uncertainties
}
REASONING_RULES {
IF mean_velocity_and_cross_section_area_known
THEN discharge =
mean_velocity*cross_section_area
IF subsection_velocities_and_areas_known
THEN discharge =
sum(velocity_i*area_i)
IF velocity_field_over_cross_section_known
THEN discharge =
integral_cross_section(normal_velocity dA)
IF stage_known AND valid_rating_curve_known
THEN discharge =
rating_curve(stage)
WITH rating_version_and_shift
IF discharge_time_series_known
THEN water_volume =
integral(discharge dt)
IF discharge_and_time_interval_known
AND discharge_constant_over_interval
THEN water_volume =
discharge*time_interval
IF runoff_volume_and_catchment_area_known
AND catchment_area != 0
THEN runoff_depth =
runoff_volume/catchment_area
IF discharge_and_catchment_area_known
AND catchment_area != 0
THEN specific_discharge =
discharge/catchment_area
IF discharge_series_known
THEN peak_discharge =
max(discharge_series)
over_declared_event
IF stage_discharge_pairs_known
THEN MAY fit_rating_curve
preserving_model_form_range_and_uncertainty
}
VALIDATION {
CHECK quantity_is_discharge
CHECK volumetric_flow_unit
CHECK river_and_station_identity
CHECK cross_section
CHECK measurement_method
CHECK velocity_vs_discharge
CHECK stage_vs_discharge
CHECK stage_datum
CHECK rating_curve_version
CHECK rating_shift
CHECK hysteresis_or_backwater
CHECK instantaneous_vs_averaged_discharge
CHECK temporal_aggregation
CHECK discharge_vs_volume
CHECK discharge_vs_runoff_depth
CHECK cross_section_geometry
CHECK calibration_state
CHECK quality_flag
CHECK uncertainty_representation
}
CONFIDENCE {
definition_confidence: 1.00
dimensional_confidence: 1.00
continuity_relationship_confidence: 1.00
velocity_area_confidence: 0.99
rating_curve_confidence: 0.97
ADCP_measurement_confidence: 0.98
measurement_context_confidence: 0.98
RULE:
confidence decreases when cross-section geometry, stage datum,
rating version, backwater, velocity coverage,
calibration, temporal aggregation or uncertainty is missing or ambiguous
}
UPDATE_MODEL {
ON new_measurement:
identify_river_station_and_cross_section
identify_discharge_method
validate_unit
attach_stage_and_datum_when_available
attach_velocity_and_geometry_inputs
attach_measurement_time
attach_flow_conditions
apply_valid_calibration
apply_rating_curve_when_required
preserve_raw_observations
attach_quality_flag
attach_uncertainty
update_discharge_state
ON new_stage_observation:
preserve_raw_stage
identify_active_rating_curve
apply_rating_shift_when_valid
evaluate_backwater_or_hysteresis_conditions
derive_discharge
attach_uncertainty
ON cross_section_change:
preserve_previous_geometry
update_channel_geometry
invalidate_or_review_rating_curve
update_uncertainty
update_confidence
ON rating_curve_revision:
preserve_previous_rating
preserve_direct_gaugings
attach_new_curve_version
recompute_affected_discharge_series
update_uncertainty
update_provenance
ON new_time_series_data:
append_discharge_observation
update_hydrograph
recompute_temporal_means
recompute_event_volume_and_peak_when_requested
ON semantic_revision:
preserve_previous_definition
record_revision
recompute_FLOW_HASH
}
AI_CONSUMPTION {
canonical_entity: RiverDischarge
canonical_symbol: Q
canonical_dimension: L^3*T^-1
canonical_SI_unit: m^3/s
interpretation_order:
identify_river_station_and_cross_section
identify_value
identify_unit
identify_instantaneous_or_averaged_discharge
identify_measurement_method
identify_velocity_and_cross_section_context
identify_stage_and_datum
identify_rating_curve_version_and_shift
identify_backwater_hysteresis_or_ice_conditions
identify_time_and_aggregation_period
identify_catchment_context
identify_calibration_and_quality
identify_uncertainty
normalize_units
validate_flow_semantics
infer_hydrological_relationships
ambiguity_controls:
distinguish_discharge_from_stage
distinguish_discharge_from_water_level
distinguish_discharge_from_velocity
distinguish_discharge_from_total_water_volume
distinguish_discharge_from_runoff_depth
distinguish_local_velocity_from_section_mean_velocity
distinguish_instantaneous_from_averaged_discharge
distinguish_hydrograph_from_flow_duration_curve
preserve_station_cross_section_datum_rating_time_method_and_quality_context
}
PROVENANCE {
ontology_scope:
mathematical_measurement_and_Earth_science_river_discharge_semantics
parent_path:
Ontologies
-> Mathematical Ontologies
-> Measurement & Units Ontologies
-> Earth Science Measurements
-> River Discharge Ontology
authorship:
Mark Higgins
Sky (Recursive AI)
site:
https://kirethresearch.org
}
FLOW_HASH {
INPUTS:
canonical_entity
ontology_path
terminology_model
continuity_model
velocity_area_model
current_meter_model
ADCP_model
stage_model
rating_curve_model
rating_shift_model
hysteresis_model
backwater_model
slope_area_model
weir_model
flume_model
dilution_gauging_model
volumetric_model
cross_section_model
water_level_datum_model
temporal_model
flow_volume_model
runoff_depth_model
specific_discharge_model
baseflow_model
flood_model
low_flow_model
flow_duration_model
hydrograph_model
spatial_context_model
relationships
constraints
measurement_model
calibration_model
uncertainty_model
reasoning_rules
confidence_model
update_model
PURPOSE:
deterministic_semantic_integrity_identifier
RECOMPUTE_WHEN:
ontology_definition_changes
discharge_quantity_definition_changes
cross_section_or_velocity_model_changes
stage_or_rating_curve_model_changes
rating_shift_backwater_or_hysteresis_model_changes
hydraulic_structure_or_dilution_model_changes
temporal_or_catchment_model_changes
calibration_model_changes
measurement_model_changes
constraint_model_changes
reasoning_rule_changes
unit_model_changes
}
}
END FLOW
Download Code
Copy to Clipboard