Skip to main content

Wind Speed Ontology

Earth Science Measurements
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 16 September 2026
Audio Overview
# Wind Speed Ontology — Flow Algebra

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/earth-science-measurements/wind-speed-ontology.html

FLOW WindSpeedOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Earth Science Measurements
    -> Wind Speed Ontology

  PURPOSE:
    Represent wind speed as the magnitude of atmospheric air velocity relative to a defined reference frame, location, height and time interval, including instantaneous wind speed, mean wind speed, gust speed, vector wind, direction, anemometer measurements, averaging periods, exposure, height adjustment, turbulence, remote sensing, calibration, uncertainty, provenance, and strict distinctions between wind speed, wind velocity, wind direction, gust, sustained wind and derived wind indices.

  ENTITY WindSpeed {
    TYPE: SpeedQuantity
    SYMBOL: U
    DIMENSION: L*T^-1
    SI_UNIT: metre_per_second
    SI_SYMBOL: m/s

    DEFINITION:
      wind_speed :=
        magnitude_of_air_velocity_relative_to_declared_reference_frame

    PROPERTIES:
      is_scalar
      is_nonnegative
      varies_spatially
      varies_temporally
      depends_on_measurement_height
      depends_on_averaging_interval
      may_have_uncertainty
  }

  ENTITY WindVelocity {
    TYPE: VectorVelocityQuantity
    SYMBOL: vector_U
    DIMENSION: L*T^-1
    SI_UNIT: metre_per_second

    COMPONENTS:
      u
      v
      w

    RULE:
      wind_velocity != wind_speed
  }

  ENTITY WindDirection {
    TYPE: AngularDirectionalQuantity
    SYMBOL: theta_wind

    COMMON_UNIT:
      degree

    RULE:
      meteorological_wind_direction_commonly_reports_direction_from_which_wind_blows
  }

  ENTITY WindGust {
    TYPE: ShortDurationMaximumWindSpeed

    DEFINITION:
      maximum_or_method_defined_peak_wind_speed
      over_declared_short_duration_within_observation_period
  }

  UNIT_SYSTEM {
    SI:
      metre_per_second
      m/s

    common:
      kilometre_per_hour
      knot
      mile_per_hour

    conversions:
      1 km/h = 1/3.6 m/s
      1 knot = 0.514444444 m/s
      1 mph = 0.44704 m/s

    RULE:
      preserve_original_unit_and_normalized_SI_value
  }

  TERMINOLOGY_MODEL {
    terms:
      wind_speed
      wind_velocity
      wind_direction
      sustained_wind
      mean_wind
      gust_speed
      peak_wind
      instantaneous_wind

    RULE:
      averaging_period_and_direction_convention MUST be resolved

    ambiguity_controls:
      wind_speed != wind_velocity
      wind_speed != wind_direction
      gust_speed != mean_wind_speed
  }

  VECTOR_MODEL {
    horizontal_components:
      u = eastward_component
      v = northward_component

    vertical_component:
      w

    horizontal_speed:
      U_h =
        sqrt(u^2+v^2)

    three_dimensional_speed:
      U =
        sqrt(u^2+v^2+w^2)

    RULE:
      horizontal_and_three_dimensional_speed MUST be distinguished
  }

  DIRECTION_MODEL {
    mathematical_vector_direction:
      direction_toward_which_vector_points

    meteorological_direction:
      direction_from_which_wind_originates

    common_conversion_from_components:
      requires_axis_and_angle_convention

    RULE:
      direction_from_and_direction_to MUST_NOT be_interchanged
  }

  INSTANTANEOUS_MODEL {
    wind_speed:
      U(t)

    practical_measurement:
      sensor_response_over_finite_sampling_interval

    RULE:
      truly_instantaneous_wind_is_idealisation
      and_sensor_time_response SHOULD be preserved
  }

  MEAN_WIND_MODEL {
    time_average:
      U_mean =
        (1/delta_t)*integral_interval(U(t) dt)

    vector_mean:
      vector_U_mean =
        (1/delta_t)*integral_interval(vector_U(t) dt)

    RULE:
      mean_of_speed_magnitudes != magnitude_of_mean_vector_in_general
  }

  GUST_MODEL {
    gust:
      maximum_short_duration_average_or_peak
      according_to_declared_standard

    parameters:
      gust_duration
      observation_period
      sampling_frequency
      filtering

    RULE:
      gust_value_without_duration_definition_is_semantically_incomplete
  }

  GUST_FACTOR_MODEL {
    gust_factor:
      G =
        U_gust/U_mean
      WHEN U_mean != 0

    REQUIRE:
      compatible_measurement_height
      gust_duration
      mean_averaging_period

    RULE:
      gust_factor_depends_on_duration_and_exposure
  }

  TURBULENCE_MODEL {
    decomposition:
      u(t) =
        U_mean + u_prime(t)

    turbulence_intensity:
      I_u =
        sigma_u/U_mean
      WHEN U_mean != 0

    RULE:
      turbulence_intensity != wind_speed
  }

  ANEMOMETER_MODEL {
    possible_instruments:
      cup_anemometer
      propeller_anemometer
      sonic_anemometer
      hot_wire_anemometer
      pressure_tube
      mechanical_vane_anemometer

    RULE:
      instrument_type_and_response_characteristics MUST be preserved
  }

  CUP_ANEMOMETER_MODEL {
    raw:
      rotation_frequency

    calibration:
      U =
        a*f + b
      under_declared_calibration

    REQUIRE:
      scale_parameters
      starting_threshold
      distance_constant
      calibration_date

    RULE:
      rotation_frequency != wind_speed_without_calibration
  }

  PROPELLER_MODEL {
    response:
      rotation_related_to_airflow_component_along_propeller_axis

    RULE:
      sensor_alignment_and_cosine_response MUST be considered
  }

  SONIC_ANEMOMETER_MODEL {
    principle:
      acoustic_transit_time_difference

    outputs:
      three_dimensional_velocity_components
      sonic_temperature_when_supported

    REQUIRE:
      path_geometry
      orientation
      sampling_frequency
      transducer_corrections

    RULE:
      sonic_measurement_requires_coordinate_rotation_for_some_applications
  }

  WIND_VANE_MODEL {
    measured:
      wind_direction

    RULE:
      wind_vane_does_not_measure_speed_without_separate_speed_sensor
  }

  SENSOR_HEIGHT_MODEL {
    standard_or_declared_height:
      z

    RULE:
      wind_speed_is_height_dependent
      and_sensor_height MUST be preserved
  }

  SURFACE_LAYER_MODEL {
    logarithmic_profile:
      U(z) =
        (u_star/kappa)
        * ln((z-d)/z_0)
      under_neutral_surface_layer_conditions

    PARAMETERS:
      u_star = friction_velocity
      kappa = von_Karman_constant
      z_0 = roughness_length
      d = displacement_height

    RULE:
      logarithmic_profile_requires_applicable_surface_layer_conditions
  }

  HEIGHT_ADJUSTMENT_MODEL {
    power_law:
      U_2 =
        U_1*(z_2/z_1)^alpha
      under_declared_empirical_conditions

    logarithmic:
      derive_using_surface_roughness_model

    RULE:
      wind_speed_height_conversion_requires_roughness_and_stability_assumptions
  }

  ROUGHNESS_MODEL {
    roughness_length:
      z_0

    depends_on:
      vegetation
      buildings
      terrain
      surface_type

    RULE:
      roughness_length_is_aerodynamic_parameter_not_physical_obstacle_height
  }

  EXPOSURE_MODEL {
    possible_context:
      open_terrain
      urban
      coastal
      forest
      rooftop
      sheltered_site

    effects:
      obstruction
      acceleration
      turbulence
      wake

    RULE:
      site_exposure SHOULD be preserved
  }

  STABILITY_MODEL {
    atmospheric_stability:
      stable
      neutral
      unstable

    effect:
      modifies_vertical_wind_profile_and_turbulence

    RULE:
      neutral_profile_models SHOULD_NOT be_applied_uncritically_under_strong_stability_or_instability
  }

  PRESSURE_BASED_MODEL {
    dynamic_pressure:
      q =
        0.5*rho_air*U^2

    inferred_speed:
      U =
        sqrt(2*q/rho_air)
      WHEN rho_air > 0

    RULE:
      pressure_derived_speed_requires_air_density_and_valid_flow_model
  }

  AIR_DENSITY_MODEL {
    density:
      rho_air =
        p/(R_specific*T)
      under_ideal_dry_air_approximation

    moist_air:
      may_use_virtual_temperature_or_mixture_model

    RULE:
      density_context matters_for_pressure_based_speed_and_energy_calculations
  }

  WEATHER_STATION_MODEL {
    metadata:
      station_identifier
      coordinates
      elevation
      sensor_height
      exposure
      instrument
      averaging_period

    RULE:
      station_metadata MUST accompany_precision_wind_measurement
  }

  REMOTE_SENSING_MODEL {
    possible_methods:
      Doppler_lidar
      Doppler_radar
      sodar
      satellite_scatterometer

    observed:
      radial_velocity_or_remote_signal

    retrieved:
      wind_speed_or_vector

    RULE:
      remote_observation != wind_speed_without_retrieval_geometry_and_model
  }

  DOPPLER_MODEL {
    radial_velocity:
      v_r

    relation:
      projection_of_wind_velocity_onto_sensor_line_of_sight

    RULE:
      single_radial_velocity_component_does_not_define_full_wind_vector
  }

  LIDAR_PROFILE_MODEL {
    outputs:
      wind_speed_by_height
      wind_direction_by_height

    retrieval:
      multiple_beam_radial_velocities -> wind_vector

    REQUIRE:
      beam_geometry
      scan strategy
      range gates
      quality control

    RULE:
      retrieved_profile_requires_assumption_about_flow_uniformity_over_scan_volume
  }

  RADAR_WIND_MODEL {
    Doppler_velocity:
      radial_component

    possible_products:
      wind_profile
      storm_relative_velocity
      velocity_azimuth_display

    RULE:
      radar_radial_velocity != scalar_wind_speed
  }

  SATELLITE_WIND_MODEL {
    possible_products:
      ocean_surface_wind
      atmospheric_motion_vectors

    RULE:
      satellite_wind_product_requires_retrieval_algorithm_and_reference_height_or_level
  }

  BEAUFORT_MODEL {
    scale:
      empirical_ordinal_wind_force_class

    mapping:
      class -> approximate_wind_speed_range

    RULE:
      Beaufort_number != physical_speed_quantity
  }

  WIND_POWER_MODEL {
    kinetic_power_density:
      P_A =
        0.5*rho_air*U^3

    REQUIRE:
      air_density
      wind_speed

    RULE:
      wind_power_density != wind_speed
  }

  TEMPORAL_MODEL {
    wind:
      U = U(t)

    possible_statistics:
      mean
      maximum
      minimum
      standard_deviation
      gust
      percentile

    RULE:
      temporal_statistic_and_window MUST be preserved
  }

  SPATIAL_MODEL {
    wind_field:
      vector_U =
        vector_U(x,y,z,t)

    REQUIRE:
      location
      elevation
      measurement_height
      coordinate_reference_system

    RULE:
      wind_measurement_is_spatially_specific
  }

  RELATIONSHIPS {
    WindSpeed -> MAGNITUDE_OF -> WindVelocity
    WindVelocity -> HAS_COMPONENT -> UComponent
    WindVelocity -> HAS_COMPONENT -> VComponent
    WindVelocity -> HAS_COMPONENT -> WComponent
    WindDirection -> QUALIFIES -> HorizontalWindVector
    WindGust -> MAXIMUM_SHORT_DURATION_FORM_OF -> WindSpeed
    Anemometer -> MEASURES -> WindSpeedOrVelocity
    WindVane -> MEASURES -> WindDirection
    SensorHeight -> QUALIFIES -> WindMeasurement
    SurfaceRoughness -> INFLUENCES -> VerticalWindProfile
    AtmosphericStability -> INFLUENCES -> WindProfileAndTurbulence
    RemoteSensor -> MEASURES -> RadialOrProxyWindSignal
    RetrievalModel -> MAPS -> RemoteObservationToWind
  }

  SEMANTIC_EQUIVALENCE {
    "wind speed" ~= magnitude_of_air_velocity
    "sustained wind" ~= averaged_wind_speed WHEN averaging_period_declared

    wind_speed != wind_velocity
    wind_speed != wind_direction
    gust_speed != mean_wind_speed
    mean_speed != magnitude_of_mean_vector_in_general
    radial_velocity != full_wind_speed
    Beaufort_number != wind_speed
    wind_power_density != wind_speed
    raw_anemometer_signal != calibrated_wind_speed
  }

  CONSTRAINTS {
    wind_speed_dimension = L*T^-1
    wind_speed_must_be_nonnegative = true
    location_should_be_defined = true
    measurement_height_must_be_defined = true
    averaging_or_gust_duration_should_be_defined = true
    wind_direction_convention_must_be_defined = true
    wind_speed_and_velocity_are_not_semantically_equivalent = true
    gust_and_mean_wind_are_not_semantically_equivalent = true
    remote_radial_velocity_requires_retrieval_for_full_wind = true
    raw_sensor_signal_requires_calibration = true
    uncertainty_should_include_sensor_exposure_height_temporal_and_retrieval_components = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      WindSpeed
      WindVelocity
      WindDirection
      WindGust
      TurbulenceIntensity

    COMMON_METHODS:
      cup_anemometer
      propeller_anemometer
      sonic_anemometer
      pressure_tube
      Doppler_lidar
      Doppler_radar
      sodar
      satellite_scatterometer

    RECORD:
      quantity_type
      numerical_value
      unit
      u_component
      v_component
      w_component
      wind_direction
      direction_convention
      station_identifier
      latitude
      longitude
      coordinate_reference_system
      elevation
      sensor_height
      exposure
      surface_roughness
      atmospheric_stability
      timestamp
      sampling_frequency
      averaging_period
      gust_duration
      instrument
      raw_signal
      calibration_state
      retrieval_model_when_remote
      quality_flag
      uncertainty
      provenance

    UNCERTAINTY:
      measured_or_inferred_wind_speed =
        best_estimate +/- uncertainty
  }

  CALIBRATION_MODEL {
    anemometer:
      raw_response -> wind_speed

    possible_parameters:
      scale
      offset
      starting_threshold
      distance_constant
      directional_response
      temperature_response

    REQUIRE:
      calibration_reference
      calibration_date
      valid_range
      uncertainty

    RULE:
      calibration_model MUST match_sensor_type
  }

  UNCERTAINTY_MODEL {
    sources:
      sensor_calibration
      sensor_response
      alignment
      sampling_frequency
      averaging_window
      gust_duration
      tower_or_structure_interference
      site_exposure
      roughness
      measurement_height
      atmospheric_stability
      air_density
      remote_retrieval
      beam_geometry
      temporal_variability

    PROPAGATION:
      wind_speed_uncertainty
      <- sensor_geometry_exposure_height_temporal_and_retrieval_uncertainties
  }

  REASONING_RULES {
    IF horizontal_components_u_v_known
      THEN horizontal_wind_speed =
        sqrt(u^2+v^2)

    IF u_v_w_components_known
      THEN three_dimensional_wind_speed =
        sqrt(u^2+v^2+w^2)

    IF wind_speed_time_series_known
      AND averaging_interval > 0
      THEN mean_wind_speed =
        integral(wind_speed dt)/averaging_interval

    IF gust_and_mean_speed_known
      AND mean_speed != 0
      THEN gust_factor =
        gust_speed/mean_speed

    IF dynamic_pressure_and_air_density_known
      AND air_density > 0
      THEN wind_speed =
        sqrt(2*dynamic_pressure/air_density)

    IF speed_at_height_1_known
      AND valid_power_law_exponent_known
      AND heights_positive
      THEN speed_at_height_2 =
        speed_at_height_1*(height_2/height_1)^alpha

    IF raw_anemometer_signal_and_valid_calibration_known
      THEN wind_speed =
        calibration(raw_signal)

    IF multiple_remote_radial_velocities_and_valid_geometry_known
      THEN infer_wind_vector =
        retrieval(radial_velocities,geometry)

    IF wind_speed_and_air_density_known
      THEN wind_power_density =
        0.5*air_density*wind_speed^3
  }

  VALIDATION {
    CHECK quantity_is_speed_velocity_direction_or_gust
    CHECK unit_consistency
    CHECK nonnegative_speed
    CHECK vector_components
    CHECK direction_convention
    CHECK location
    CHECK elevation
    CHECK measurement_height
    CHECK averaging_period
    CHECK gust_duration
    CHECK mean_vs_gust
    CHECK mean_speed_vs_vector_mean
    CHECK instrument_type
    CHECK raw_vs_calibrated_signal
    CHECK exposure_and_obstructions
    CHECK roughness_and_stability_for_height_adjustment
    CHECK remote_radial_vs_retrieved_wind
    CHECK retrieval_model
    CHECK quality_flag
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    dimensional_confidence: 1.00
    vector_relationship_confidence: 1.00
    mean_wind_confidence: 0.99
    gust_measurement_confidence: 0.98
    height_adjustment_confidence: 0.95
    remote_retrieval_confidence: 0.95
    measurement_context_confidence: 0.98

    RULE:
      confidence decreases when height, averaging period, direction convention,
      exposure, calibration, roughness, stability,
      retrieval geometry or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_measurement:
      identify_wind_quantity
      validate_unit
      attach_location_and_CRS
      attach_elevation_and_sensor_height
      attach_timestamp
      identify_sampling_and_averaging_period
      identify_instrument
      preserve_raw_signal
      apply_valid_calibration
      attach_direction_convention
      attach_exposure_roughness_and_stability
      attach_quality_flag
      attach_uncertainty
      update_wind_state

    ON new_vector_sample:
      append_u_v_w_components
      recompute_speed_and_direction
      update_windowed_mean
      update_turbulence_statistics
      preserve_sampling_frequency

    ON gust_detection:
      identify_declared_gust_duration
      scan_valid_time_series
      update_peak_gust
      preserve_observation_period_and_filtering

    ON height_adjustment:
      preserve_original_height_and_speed
      identify_target_height
      attach_roughness_stability_and_profile_model
      compute_adjusted_speed_when_valid
      propagate_uncertainty

    ON calibration_revision:
      preserve_raw_sensor_data
      preserve_previous_calibration
      recompute_affected_wind_values
      update_uncertainty
      update_confidence

    ON retrieval_revision:
      preserve_remote_radial_observations
      preserve_previous_retrieval
      apply_new_geometry_or_retrieval_model
      recompute_wind_vector
      update_uncertainty

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_domain: WindSpeed
    canonical_entity: WindSpeed
    canonical_symbol: U
    canonical_dimension: L*T^-1
    canonical_SI_unit: m/s

    interpretation_order:
      identify_speed_velocity_direction_or_gust_quantity
      identify_value
      identify_unit
      identify_vector_components_when_available
      identify_direction_convention
      identify_location_elevation_and_sensor_height
      identify_timestamp_sampling_and_averaging_period
      identify_gust_duration_when_relevant
      identify_instrument
      identify_raw_or_calibrated_status
      identify_exposure_roughness_and_stability
      identify_remote_retrieval_geometry_when_relevant
      identify_quality_flag
      identify_uncertainty
      normalize_units
      validate_wind_semantics
      infer_vector_temporal_and_height_relationships

    ambiguity_controls:
      distinguish_wind_speed_from_wind_velocity
      distinguish_wind_speed_from_wind_direction
      distinguish_gust_from_mean_wind_speed
      distinguish_mean_speed_from_magnitude_of_mean_vector
      distinguish_radial_velocity_from_full_wind_vector
      distinguish_Beaufort_number_from_physical_speed
      distinguish_wind_power_density_from_wind_speed
      distinguish_raw_anemometer_signal_from_calibrated_wind_speed
      preserve_location_height_time_duration_direction_exposure_method_and_provenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_Earth_science_wind_speed_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Earth Science Measurements
      -> Wind Speed Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_domain
      ontology_path
      terminology_model
      vector_model
      direction_model
      instantaneous_model
      mean_wind_model
      gust_model
      gust_factor_model
      turbulence_model
      anemometer_model
      cup_anemometer_model
      propeller_model
      sonic_anemometer_model
      wind_vane_model
      sensor_height_model
      surface_layer_model
      height_adjustment_model
      roughness_model
      exposure_model
      stability_model
      pressure_based_model
      air_density_model
      weather_station_model
      remote_sensing_model
      Doppler_model
      lidar_profile_model
      radar_wind_model
      satellite_wind_model
      Beaufort_model
      wind_power_model
      temporal_model
      spatial_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
      wind_quantity_definition_changes
      vector_or_direction_model_changes
      averaging_or_gust_model_changes
      anemometer_or_calibration_model_changes
      height_roughness_or_stability_model_changes
      remote_sensing_or_retrieval_model_changes
      exposure_or_temporal_model_changes
      measurement_model_changes
      constraint_model_changes
      reasoning_rule_changes
      unit_model_changes
  }

}

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ