# Rainfall Measurement Ontology — Flow Algebra
URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/earth-science-measurements/rainfall-measurement-ontology.html
FLOW RainfallMeasurementOntology {
DOMAIN:
Mathematical Ontologies
-> Measurement & Units Ontologies
-> Earth Science Measurements
-> Rainfall Measurement Ontology
PURPOSE:
Represent rainfall measurement as the quantitative observation of liquid precipitation reaching a defined surface over a defined time interval, including rainfall depth, accumulation, intensity, rate, duration, event totals, gauge measurements, tipping-bucket and weighing gauges, radar and remote sensing estimates, spatial and temporal aggregation, wind and exposure corrections, calibration, uncertainty, provenance, and strict distinctions between rainfall amount, rainfall rate, precipitation, snowfall and radar reflectivity.
ENTITY RainfallDepth {
TYPE: PrecipitationLengthQuantity
SYMBOL: P_r
DIMENSION: L
SI_UNIT: metre
SI_SYMBOL: m
COMMON_UNIT:
millimetre
SYMBOL: mm
DEFINITION:
rainfall_depth :=
equivalent_depth_of_liquid_water
accumulated_on_a_horizontal_impermeable_surface
with_no_runoff_infiltration_or_evaporation
PROPERTIES:
is_accumulated_quantity
is_nonnegative_under_standard_accumulation_context
depends_on_time_interval
depends_on_location
may_be_point_or_area_estimate
may_have_uncertainty
}
ENTITY RainfallRate {
TYPE: PrecipitationRateQuantity
SYMBOL: R
DIMENSION: L*T^-1
SI_UNIT: metre_per_second
COMMON_UNIT:
millimetre_per_hour
SYMBOL: mm/h
DEFINITION:
rainfall_rate :=
time_rate_of_change_of_accumulated_rainfall_depth
FORM:
R = dP_r/dt
}
ENTITY EventRainfall {
TYPE: AccumulatedRainfallQuantity
DEFINITION:
rainfall_depth_accumulated_over_declared_rainfall_event
}
ENTITY RainfallDuration {
TYPE: TimeQuantity
SYMBOL: T_r
SI_UNIT: second
DEFINITION:
duration_of_declared_rainfall_event_or_wet_period
}
UNIT_SYSTEM {
rainfall_depth:
SI: metre
common: millimetre
rainfall_rate:
SI: metre_per_second
common:
millimetre_per_hour
millimetre_per_minute
duration:
second
minute
hour
day
conversion:
1 mm = 1e-3 m
1 mm/h = 1e-3/3600 m/s
RULE:
depth_rate_and_duration_units MUST remain_semantically_distinct
}
TERMINOLOGY_MODEL {
terms:
rainfall
rainfall_amount
rainfall_depth
rainfall_accumulation
rainfall_rate
rainfall_intensity
precipitation
precipitation_rate
RULE:
"rainfall intensity" MAY be represented_as_rainfall_rate
when_defined_as_depth_per_time
RULE:
rainfall_is_liquid_precipitation_context
while_precipitation_is_broader
}
ACCUMULATION_MODEL {
continuous:
P_r =
integral_interval(R(t) dt)
discrete:
P_r =
sum(delta_P_i)
REQUIRE:
start_time
end_time
accumulation_period
RULE:
accumulated_rainfall MUST preserve_time_interval
}
AVERAGE_RATE_MODEL {
average_rate:
R_avg =
P_r/delta_t
WHEN delta_t > 0
RULE:
average_rate != peak_or_instantaneous_rate
}
EVENT_MODEL {
event:
rainfall_period_defined_by_declared_start_stop_or_interevent_rule
attributes:
event_start
event_end
duration
total_depth
mean_rate
peak_rate
RULE:
rainfall_event_definition MUST be preserved
}
INTEREVENT_MODEL {
separate_events:
may_be_defined_by_minimum_dry_interval
parameter:
minimum_interevent_time
RULE:
event_totals_depend_on_event_separation_definition
}
RAIN_GAUGE_MODEL {
principle:
collect_rainfall_over_known_orifice_area
rainfall_depth:
P_r =
collected_water_volume/orifice_area
REQUIRE:
collector_area
exposure
level
obstruction_context
observation_interval
RULE:
gauge_measurement_represents_point_scale_observation
subject_to_catch_efficiency
}
STANDARD_STORAGE_GAUGE_MODEL {
components:
collector
funnel
storage_container
measuring_cylinder_or_mass_measurement
observation:
accumulated_depth_over_manual_observation_interval
RULE:
observation_time_and_emptying_schedule MUST be preserved
}
TIPPING_BUCKET_MODEL {
mechanism:
each_tip_corresponds_to_nominal_water_depth_increment
nominal_depth:
delta_P_tip
accumulation:
P_r =
N_tips*delta_P_tip
rate_estimation:
derived_from_tip_timing
REQUIRE:
tip_calibration
timestamp_resolution
dynamic_correction_when_required
RULE:
tipping_bucket_response MAY be_rate_dependent
and_can_underestimate_at_high_rainfall_rates
}
WEIGHING_GAUGE_MODEL {
measurement:
accumulated_water_mass_or_weight
water_volume:
V =
m/rho_water
rainfall_depth:
P_r =
V/A_collector
advantages:
continuous_accumulation
intensity_from_mass_change
RULE:
evaporation_temperature_andmechanical_effects MAY require_correction
}
DROP_COUNTING_MODEL {
principle:
convert_collected_water_to_discrete_drops_or_pulses
accumulation:
derived_from_count_and_calibrated_drop_volume
RULE:
drop_volume_calibration MUST be preserved
}
DISDROMETER_MODEL {
measures:
drop_size
fall_velocity
drop_count
derived:
rainfall_rate
drop_size_distribution
kinetic_energy
RULE:
rainfall_rate_from_disdrometer_is_derived_from_particle_measurements_and_sampling_area
}
RADAR_MODEL {
observed_quantity:
radar_reflectivity_factor
Z
empirical_relation:
Z = a*R^b
inverse:
R =
(Z/a)^(1/b)
WHEN a > 0 AND b != 0
REQUIRE:
radar_calibration
Z_R_parameters
precipitation_type
range
beam_geometry
RULE:
radar_reflectivity != rainfall_rate
without_retrieval_relation
}
RADAR_REFLECTIVITY_MODEL {
common_log_quantity:
dBZ =
10*log10(Z/Z_reference)
RULE:
dBZ_is_logarithmic_reflectivity_representation
and_MUST_NOT be treated_as_mm_per_hour
}
SATELLITE_RAINFALL_MODEL {
observations:
microwave_radiance
infrared_brightness_temperature
radar_signal
multi_sensor_products
retrieval:
satellite_observation
-> retrieval_algorithm
-> precipitation_rate_or_accumulation
RULE:
satellite_signal != rainfall_without_retrieval_model
}
GAUGE_RADAR_MERGE_MODEL {
purpose:
combine_point_gauge_accuracy_and_spatial_radar_coverage
possible_methods:
bias_adjustment
kriging_with_external_drift
conditional_merging
statistical_blending
RULE:
merged_product MUST preserve_source_data_and_algorithm_provenance
}
SPATIAL_MODEL {
point_rainfall:
gauge_location_measurement
area_average_rainfall:
P_A =
(1/A)*integral_A(P(x,y) dA)
gridded_rainfall:
rainfall_field_on_defined_grid
RULE:
point_and_area_average_rainfall_are_not_semantically_equivalent
}
INTERPOLATION_MODEL {
methods:
nearest_neighbour
inverse_distance
Thiessen_polygons
kriging
spline
radar_assisted_interpolation
RULE:
interpolated_rainfall_is_modelled_spatial_estimate
and_MUST preserve_method_and_resolution
}
THIESSEN_MODEL {
area_average:
P_A =
sum(w_i*P_i)
weights:
w_i =
A_i/A_total
constraint:
sum(w_i) = 1
RULE:
polygon_geometry_and_gauge_network MUST be preserved
}
TEMPORAL_AGGREGATION_MODEL {
possible_periods:
minute
hour
day
month
season
year
event
accumulated:
sum_or_integral_of_rainfall
RULE:
daily_monthly_and_annual_rainfall MUST preserve_calendar_and_time_zone_definition
}
INTENSITY_DURATION_MODEL {
rainfall_intensity:
depth/time
duration:
averaging_window
peak_intensity:
maximum_windowed_rate_for_declared_duration
RULE:
peak_intensity_depends_on_averaging_duration
}
IDF_CONTEXT_MODEL {
dimensions:
intensity
duration
frequency_or_return_period
relation:
I = f(duration, return_period, location)
RULE:
IDF_values_are_statistical_design_quantities
and_not_single_observed_rainfall_measurements
}
RETURN_PERIOD_MODEL {
return_period:
T =
1/p_annual_exceedance
under_stationary_annual_exceedance_interpretation
RULE:
return_period_is_probabilistic
and_does_not_mean_event_occurs_regularly_every_T_years
}
WIND_UNDERCATCH_MODEL {
effect:
wind_deflects_raindrops_around_gauge
dependencies:
wind_speed
gauge_shape
exposure
drop_size
corrected:
P_corrected =
P_measured/catch_ratio
WHEN catch_ratio > 0
RULE:
correction_model_and_exposure_class MUST be preserved
}
WETTING_LOSS_MODEL {
effect:
water_retained_on_collector_surface
correction:
may_add_estimated_wetting_loss
RULE:
correction_method SHOULD be preserved
}
EVAPORATION_LOSS_MODEL {
effect:
collected_water_lost_before_measurement
relevance:
manual_storage_gauges
long_observation_intervals
RULE:
evaporation_correction MAY be_required
}
SPLASH_MODEL {
possible_errors:
splash_in
splash_out
RULE:
gauge_installation_height_and_surroundings MAY affect_splash_error
}
SNOW_AND_MIXED_PRECIPITATION_MODEL {
rainfall:
liquid_precipitation
snowfall:
solid_precipitation
water_equivalent:
melted_precipitation_depth
RULE:
rainfall_depth != snow_depth
and_mixed_precipitation_requires_declared_measurement_semantics
}
TRACE_PRECIPITATION_MODEL {
trace:
precipitation_detected_but_below_reporting_resolution_or_threshold
RULE:
trace MUST_NOT automatically_be_encoded_as_zero
}
MISSING_DATA_MODEL {
missing:
no_valid_measurement
zero:
valid_measurement_of_no_rainfall
trace:
detected_below_quantification_or_reporting_threshold
RULE:
missing_zero_and_trace MUST be_distinguished
}
RELATIONSHIPS {
RainfallDepth -> HAS_DIMENSION -> Length
RainfallRate -> RATE_OF_CHANGE_OF -> RainfallDepth
RainfallRate -> INTEGRATES_TO -> RainfallAccumulation
RainGauge -> MEASURES -> RainfallDepth
TippingBucketGauge -> COUNTS -> CalibratedRainfallIncrements
WeighingGauge -> MEASURES -> CollectedWaterMass
Disdrometer -> MEASURES -> HydrometeorProperties
RadarReflectivity -> MAPS_TO -> RainfallRateThroughRetrieval
SatelliteObservation -> MAPS_TO -> RainfallThroughRetrieval
GaugeNetwork -> SUPPORTS -> SpatialRainfallEstimate
WindExposure -> AFFECTS -> GaugeCatch
MeasurementUncertainty -> QUALIFIES -> RainfallMeasurement
}
SEMANTIC_EQUIVALENCE {
"rainfall amount" ~= accumulated_rainfall_depth
"rainfall intensity" ~= rainfall_rate WHEN depth_per_time_definition
"rainfall accumulation" ~= accumulated_rainfall_depth
rainfall_depth != rainfall_rate
rainfall != all_precipitation
rainfall_depth != snow_depth
radar_reflectivity != rainfall_rate
dBZ != mm_per_hour
point_rainfall != area_average_rainfall
zero_rainfall != missing_measurement
trace_rainfall != zero_rainfall
}
CONSTRAINTS {
rainfall_depth_dimension = L
rainfall_rate_dimension = L*T^-1
measurement_interval_must_be_defined = true
spatial_location_must_be_defined = true
rainfall_depth_and_rate_are_not_semantically_equivalent = true
point_and_area_average_measurements_are_not_semantically_equivalent = true
radar_or_satellite_rainfall_requires_retrieval_model = true
gauge_type_and_exposure_should_be_preserved = true
zero_trace_and_missing_values_must_be_distinguished = true
uncertainty_should_include_sampling_calibration_exposure_and_retrieval_components_when_relevant = true
}
MEASUREMENT_MODEL {
OBSERVABLE_OR_INFERRED:
RainfallDepth
RainfallRate
EventRainfall
RainfallDuration
COMMON_METHODS:
storage_rain_gauge
tipping_bucket_gauge
weighing_gauge
disdrometer
weather_radar
satellite_remote_sensing
gauge_radar_merged_product
RECORD:
quantity_type
numerical_value
unit
station_or_grid_identifier
latitude
longitude
elevation
coordinate_reference_system
start_time
end_time
time_zone_or_UTC
accumulation_or_averaging_period
gauge_or_sensor_type
collector_area
gauge_height
exposure
wind_when_available
calibration_state
correction_model
radar_or_satellite_retrieval_model
spatial_resolution
quality_flag
trace_zero_or_missing_status
uncertainty
provenance
UNCERTAINTY:
measured_or_inferred_rainfall =
best_estimate +/- uncertainty
}
CALIBRATION_MODEL {
tipping_bucket:
tip_volume_or_depth_calibration
dynamic_rate_calibration_when_available
weighing_gauge:
mass_sensor_calibration
radar:
reflectivity_calibration
Z_R_or_other_retrieval_calibration
satellite:
retrieval_validation_and_bias_correction
REQUIRE:
calibration_date
valid_range
reference_method
uncertainty
RULE:
calibration_model MUST match_sensor_and_measurement_quantity
}
UNCERTAINTY_MODEL {
sources:
gauge_calibration
tip_resolution
timing
wind_undercatch
wetting
evaporation
splash
blockage
spatial_sampling
interpolation
radar_calibration
Z_R_relation
beam_geometry
satellite_retrieval
temporal_aggregation
PROPAGATION:
rainfall_uncertainty
<- instrument_exposure_spatial_temporal_and_retrieval_uncertainties
}
REASONING_RULES {
IF rainfall_rate_time_series_known
THEN rainfall_depth =
integral(rainfall_rate dt)
IF rainfall_depth_and_duration_known
AND duration > 0
THEN average_rainfall_rate =
rainfall_depth/duration
IF tipping_bucket_tip_count_and_calibrated_tip_depth_known
THEN rainfall_depth =
tip_count*tip_depth
IF collected_water_volume_and_gauge_area_known
AND gauge_area > 0
THEN rainfall_depth =
collected_volume/gauge_area
IF collected_water_mass_density_and_gauge_area_known
AND density > 0 AND gauge_area > 0
THEN rainfall_depth =
collected_mass/(density*gauge_area)
IF radar_reflectivity_Z_and_valid_Z_R_parameters_known
AND a > 0 AND b != 0
THEN rainfall_rate =
(Z/a)^(1/b)
IF point_gauge_measurements_and_valid_spatial_weights_known
THEN area_average_rainfall =
sum(weight_i*rainfall_i)
IF measured_rainfall_and_catch_ratio_known
AND catch_ratio > 0
THEN corrected_rainfall =
measured_rainfall/catch_ratio
IF accumulation_series_known
THEN event_total =
sum(valid_event_increments)
using_declared_event_definition
}
VALIDATION {
CHECK quantity_is_depth_rate_duration_or_event_total
CHECK unit_consistency
CHECK spatial_location
CHECK measurement_interval
CHECK accumulation_vs_rate
CHECK point_vs_area_average
CHECK gauge_type
CHECK collector_area
CHECK gauge_exposure
CHECK tipping_bucket_calibration
CHECK radar_reflectivity_vs_rainfall
CHECK retrieval_model
CHECK temporal_aggregation
CHECK event_definition
CHECK wind_undercatch_correction
CHECK rainfall_vs_snow_or_mixed_precipitation
CHECK zero_trace_or_missing_status
CHECK quality_flag
CHECK uncertainty_representation
}
CONFIDENCE {
definition_confidence: 1.00
dimensional_confidence: 1.00
accumulation_rate_relationship_confidence: 1.00
gauge_measurement_confidence: 0.99
radar_retrieval_confidence: 0.96
satellite_retrieval_confidence: 0.94
spatial_aggregation_confidence: 0.97
measurement_context_confidence: 0.98
RULE:
confidence decreases when interval, location, gauge exposure,
calibration, correction model, retrieval algorithm,
spatial resolution, quality flag or uncertainty is missing or ambiguous
}
UPDATE_MODEL {
ON new_measurement:
identify_rainfall_quantity
validate_unit
attach_location
attach_start_and_end_time
identify_accumulation_or_averaging_period
identify_sensor_or_product_type
attach_gauge_geometry_or_remote_sensor_context
apply_valid_calibration
apply_declared_exposure_or_retrieval_corrections
preserve_raw_observation
attach_quality_flag
attach_zero_trace_or_missing_status
attach_uncertainty
update_rainfall_state
ON new_increment:
preserve_increment_time
add_valid_increment_to_accumulation
update_windowed_rate_when_valid
update_event_total_when_within_declared_event
ON calibration_revision:
preserve_raw_measurement
preserve_previous_calibration
recompute_affected_rainfall_values
update_uncertainty
update_confidence
ON retrieval_model_revision:
preserve_raw_radar_or_satellite_observation
preserve_previous_retrieval
apply_new_retrieval_model
update_spatial_product
update_uncertainty
update_confidence
ON spatial_aggregation_revision:
preserve_point_or_grid_inputs
update_weights_or_interpolation_model
recompute_area_average
preserve_method_provenance
ON semantic_revision:
preserve_previous_definition
record_revision
recompute_FLOW_HASH
}
AI_CONSUMPTION {
canonical_domain: RainfallMeasurement
canonical_depth_entity: RainfallDepth
canonical_rate_entity: RainfallRate
canonical_depth_unit: metre
common_depth_unit: millimetre
common_rate_unit: millimetre_per_hour
interpretation_order:
identify_rainfall_depth_rate_duration_or_event_quantity
identify_value
identify_unit
identify_location
identify_start_end_and_aggregation_period
identify_point_or_area_average_context
identify_gauge_radar_satellite_or_merged_method
identify_calibration
identify_exposure_and_correction_model
identify_retrieval_model_when_remote
identify_spatial_resolution
identify_zero_trace_or_missing_status
identify_quality_flag
identify_uncertainty
normalize_units
validate_temporal_and_spatial_semantics
infer_rainfall_relationships
ambiguity_controls:
distinguish_rainfall_depth_from_rainfall_rate
distinguish_rainfall_from_broader_precipitation
distinguish_rainfall_depth_from_snow_depth
distinguish_radar_reflectivity_from_rainfall_rate
distinguish_dBZ_from_mm_per_hour
distinguish_point_from_area_average_rainfall
distinguish_average_from_peak_rate
distinguish_zero_from_trace_and_missing
preserve_location_interval_sensor_exposure_retrieval_quality_and_provenance_context
}
PROVENANCE {
ontology_scope:
mathematical_measurement_and_Earth_science_rainfall_semantics
parent_path:
Ontologies
-> Mathematical Ontologies
-> Measurement & Units Ontologies
-> Earth Science Measurements
-> Rainfall Measurement Ontology
authorship:
Mark Higgins
Sky (Recursive AI)
site:
https://kirethresearch.org
}
FLOW_HASH {
INPUTS:
canonical_domain
ontology_path
terminology_model
accumulation_model
average_rate_model
event_model
interevent_model
rain_gauge_model
standard_storage_gauge_model
tipping_bucket_model
weighing_gauge_model
drop_counting_model
disdrometer_model
radar_model
radar_reflectivity_model
satellite_rainfall_model
gauge_radar_merge_model
spatial_model
interpolation_model
Thiessen_model
temporal_aggregation_model
intensity_duration_model
IDF_context_model
return_period_model
wind_undercatch_model
wetting_loss_model
evaporation_loss_model
splash_model
snow_and_mixed_precipitation_model
trace_precipitation_model
missing_data_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
rainfall_quantity_definition_changes
gauge_measurement_model_changes
event_or_temporal_aggregation_model_changes
spatial_interpolation_model_changes
radar_or_satellite_retrieval_model_changes
exposure_or_correction_model_changes
calibration_model_changes
measurement_model_changes
constraint_model_changes
reasoning_rule_changes
unit_model_changes
}
}
END FLOW
Download Code
Copy to Clipboard