Skip to main content

Seismic Magnitude Ontology

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

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

FLOW SeismicMagnitudeOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Earth Science Measurements
    -> Seismic Magnitude Ontology

  PURPOSE:
    Represent seismic magnitude as a family of logarithmic earthquake source-size quantities derived from seismic observations and source models, including local magnitude, body-wave magnitude, surface-wave magnitude, moment magnitude, seismic moment, amplitude and period measurements, attenuation and distance corrections, instrument response, station and network aggregation, saturation, calibration, uncertainty, provenance, and strict distinctions between magnitude, seismic intensity, ground-motion amplitude and released energy.

  ENTITY SeismicMagnitude {
    TYPE: DimensionlessLogarithmicEarthquakeSourceQuantity
    SYMBOL: M
    DIMENSION: dimensionless

    DEFINITION:
      seismic_magnitude :=
        logarithmic_measure_of_earthquake_source_size
        defined_by_a_declared_magnitude_scale

    PROPERTIES:
      is_dimensionless
      is_scale_specific
      is_event_specific
      is_logarithmic
      may_be_station_based_or_network_aggregated
      may_have_uncertainty
  }

  ENTITY LocalMagnitude {
    TYPE: SeismicMagnitude
    SYMBOL: M_L

    GENERIC_FORM:
      M_L =
        log10(A) - log10(A_0(delta))
      under_declared_amplitude_instrument_and_distance_conventions

    RULE:
      amplitude_definition_and_distance_correction MUST be preserved
  }

  ENTITY BodyWaveMagnitude {
    TYPE: SeismicMagnitude
    SYMBOL: m_b

    GENERIC_FORM:
      m_b =
        log10(A/T) + Q(delta,h)

    PARAMETERS:
      A = body_wave_amplitude
      T = period
      Q = distance_depth_correction

    RULE:
      phase_band_and_measurement_convention MUST be preserved
  }

  ENTITY SurfaceWaveMagnitude {
    TYPE: SeismicMagnitude
    SYMBOL: M_s

    GENERIC_FORM:
      M_s =
        log10(A/T) + correction(delta)
      under_declared_surface_wave_convention

    RULE:
      wave_type_period_and_distance_range MUST be preserved
  }

  ENTITY MomentMagnitude {
    TYPE: SeismicMagnitude
    SYMBOL: M_w

    BASE_RELATION:
      M_w =
        (2/3)*(log10(M_0)-9.1)
      WHEN M_0 expressed_in_N_m
      under_common_convention

    RULE:
      constant_depends_on_units_and_adopted_definition
  }

  ENTITY SeismicMoment {
    TYPE: EarthquakeSourceQuantity
    SYMBOL: M_0
    DIMENSION: M*L^2*T^-2
    SI_UNIT: newton_metre
    SI_SYMBOL: N*m

    SOURCE_RELATION:
      M_0 =
        mu*A*D

    WHERE:
      mu = shear_modulus
      A = rupture_area
      D = average_slip
  }

  SCALE_MODEL {
    possible_scales:
      local_magnitude
      body_wave_magnitude
      surface_wave_magnitude
      moment_magnitude
      duration_magnitude
      coda_magnitude
      regional_magnitude

    RULE:
      magnitude_value MUST preserve_scale_identifier
  }

  LOGARITHMIC_MODEL {
    principle:
      equal_magnitude_increment_corresponds_to_multiplicative_change_in_underlying_source_or_wave_measure

    amplitude_context:
      one_unit_in_amplitude_based_magnitude
      often_corresponds_to_factor_of_10_in_corrected_amplitude_term

    RULE:
      magnitude_difference_is_logarithmic_not_linear_source_size_difference
  }

  MOMENT_MAGNITUDE_MODEL {
    seismic_moment:
      M_0

    common_SI_relation:
      M_w =
        (2/3)*(log10(M_0)-9.1)

    inverse:
      M_0 =
        10^(1.5*M_w + 9.1)
      N*m
      under_same_convention

    RULE:
      seismic_moment_and_moment_magnitude_are_not_semantically_equivalent
  }

  SEISMIC_MOMENT_MODEL {
    M_0 =
      mu*A*D

    REQUIRE:
      shear_modulus
      rupture_area
      average_slip

    RULE:
      source_parameter_estimates_and_model_assumptions MUST be preserved
  }

  LOCAL_MAGNITUDE_MODEL {
    observed:
      corrected_peak_amplitude

    distance:
      hypocentral_or_epicentral_measure_according_to_scale_definition

    attenuation:
      scale_specific_correction

    RULE:
      local_magnitude_calibration_is_region_and_scale_definition_dependent
  }

  BODY_WAVE_MODEL {
    phases:
      P
      pP
      other_declared_body_wave_phase

    attributes:
      amplitude
      period
      distance
      focal_depth

    RULE:
      body_wave_magnitude_can_saturate_for_large_events
  }

  SURFACE_WAVE_MODEL {
    waves:
      Rayleigh
      declared_surface_wave_band

    attributes:
      amplitude
      period
      epicentral_distance

    RULE:
      surface_wave_magnitude_can_saturate_for_large_events
  }

  SATURATION_MODEL {
    phenomenon:
      some_magnitude_scales_increase_less_responsively_for_large_sources

    affected_scales:
      local_magnitude
      body_wave_magnitude
      surface_wave_magnitude

    moment_magnitude:
      designed_to_scale_with_seismic_moment_over_broad_event_sizes

    RULE:
      magnitudes_from_different_scales MUST_NOT be_assumed_interchangeable_for_large_events
  }

  SEISMIC_ENERGY_MODEL {
    radiated_energy:
      E_s

    empirical_relation:
      log10(E_s) =
        a + b*M
      under_declared_magnitude_energy_calibration_and_energy_units

    RULE:
      magnitude != energy
      and_energy_relation_is_empirical_and_scale_dependent
  }

  INTENSITY_DISTINCTION_MODEL {
    seismic_intensity:
      describes_observed_or_inferred_shaking_effect_at_location

    magnitude:
      characterises_earthquake_source_size

    RULE:
      magnitude != intensity
      and_one_event_can_have_many_location_specific_intensities
  }

  GROUND_MOTION_DISTINCTION_MODEL {
    ground_motion_quantities:
      displacement
      velocity
      acceleration

    magnitude:
      derived_source_size_quantity

    RULE:
      recorded_peak_ground_acceleration_or_amplitude != earthquake_magnitude
  }

  INSTRUMENT_RESPONSE_MODEL {
    raw_seismogram:
      digital_counts

    corrected_waveform:
      physical_ground_motion =
        remove_instrument_response(raw_counts)

    REQUIRE:
      sensor_response
      digitiser_response
      gain
      sampling_rate

    RULE:
      raw_counts MUST_NOT be_used_as_physical_amplitude_without_response_correction
  }

  AMPLITUDE_MODEL {
    possible_amplitudes:
      peak_displacement
      peak_velocity
      phase_amplitude
      Wood_Anderson_equivalent_amplitude
      spectral_amplitude

    REQUIRE:
      physical_unit
      component
      filtering
      measurement_window

    RULE:
      amplitude_definition MUST match_magnitude_scale
  }

  PERIOD_MODEL {
    symbol:
      T

    SI_UNIT:
      second

    RULE:
      measured_period_or_frequency_band MUST match_scale_definition
  }

  DISTANCE_MODEL {
    possible_distances:
      epicentral_distance
      hypocentral_distance
      source_receiver_distance

    RULE:
      distance_definition MUST match_attenuation_correction
  }

  DEPTH_MODEL {
    focal_depth:
      h

    effect:
      may_enter_distance_or_scale_correction

    RULE:
      depth_reference_and_uncertainty SHOULD be preserved
  }

  ATTENUATION_CORRECTION_MODEL {
    correction:
      accounts_for_geometrical_spreading_and_wave_attenuation

    dependencies:
      distance
      frequency
      region
      crustal_structure

    RULE:
      attenuation_model MUST be identified
  }

  STATION_MAGNITUDE_MODEL {
    station_value:
      M_station =
        magnitude_formula(
          corrected_amplitude,
          period,
          distance,
          depth,
          station_correction
        )

    RULE:
      station_magnitude_is_individual_observation_based_estimate
  }

  NETWORK_MAGNITUDE_MODEL {
    event_magnitude:
      aggregate(valid_station_magnitudes)

    possible_aggregations:
      arithmetic_mean
      median
      robust_estimator
      weighted_estimator

    REQUIRE:
      station_selection
      quality_control
      aggregation_method

    RULE:
      network_magnitude MUST preserve_station_set_and_aggregation_method
  }

  STATION_CORRECTION_MODEL {
    causes:
      site_response
      regional_path_effect
      instrument_or_network_calibration

    corrected:
      M_corrected =
        M_raw + station_correction
      under_declared_sign_convention

    RULE:
      correction_sign_and_version MUST be preserved
  }

  SPECTRAL_MODEL {
    displacement_spectrum:
      source_and_path_dependent

    source_parameters:
      seismic_moment
      corner_frequency
      stress_drop

    moment_estimation:
      low_frequency_spectral_level -> M_0
      through_source_model

    RULE:
      spectral_moment_estimation_requires_instrument_path_and_source_model
  }

  MAGNITUDE_CONVERSION_MODEL {
    empirical:
      M_target =
        f(M_source)

    REQUIRE:
      source_scale
      target_scale
      calibration_dataset
      magnitude_range
      region
      uncertainty

    RULE:
      magnitude_scale_conversion_is_empirical
      and_MUST NOT be_treated_as_exact_identity
  }

  EVENT_MODEL {
    attributes:
      event_identifier
      origin_time
      hypocentre
      focal_depth
      magnitude_values
      source_mechanism
      uncertainty

    RULE:
      multiple_magnitude_values_for_same_event MAY coexist
      when_scales_or_methods_differ
  }

  RELATIONSHIPS {
    SeismicMagnitude -> CHARACTERISES -> EarthquakeSourceSize
    SeismicMagnitude -> USES -> DeclaredMagnitudeScale
    MomentMagnitude -> DERIVED_FROM -> SeismicMoment
    SeismicMoment -> RELATES -> ShearModulusRuptureAreaAndSlip
    LocalMagnitude -> DERIVED_FROM -> CorrectedAmplitudeAndDistance
    BodyWaveMagnitude -> DERIVED_FROM -> BodyWaveAmplitudePeriodAndCorrection
    SurfaceWaveMagnitude -> DERIVED_FROM -> SurfaceWaveAmplitudePeriodAndCorrection
    InstrumentResponse -> MAPS -> RawCountsToGroundMotion
    StationMagnitude -> CONTRIBUTES_TO -> NetworkMagnitude
    AttenuationModel -> CORRECTS -> SourceReceiverPropagationEffect
    SeismicMagnitude -> DISTINCT_FROM -> SeismicIntensity
  }

  SEMANTIC_EQUIVALENCE {
    "earthquake magnitude" ~= seismic_magnitude WHEN scale_defined
    "Mw" ~= moment_magnitude
    "ML" ~= local_magnitude

    magnitude != seismic_intensity
    magnitude != ground_motion_amplitude
    magnitude != peak_ground_acceleration
    magnitude != seismic_energy
    moment_magnitude != seismic_moment
    local_magnitude != moment_magnitude
    body_wave_magnitude != surface_wave_magnitude
    station_magnitude != network_magnitude
  }

  CONSTRAINTS {
    magnitude_is_dimensionless = true
    magnitude_scale_must_be_defined = true
    event_identity_should_be_defined = true
    amplitude_definition_must_match_scale = true
    distance_definition_must_match_correction = true
    raw_seismometer_counts_require_instrument_response_correction = true
    magnitude_and_intensity_are_not_semantically_equivalent = true
    magnitude_and_energy_are_not_semantically_equivalent = true
    magnitude_scale_conversion_is_not_exact_identity = true
    uncertainty_should_include_waveform_distance_correction_and_aggregation_components = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      SeismicMagnitude
      LocalMagnitude
      BodyWaveMagnitude
      SurfaceWaveMagnitude
      MomentMagnitude
      SeismicMoment

    INPUTS:
      waveform
      amplitude
      period
      spectrum
      distance
      focal_depth
      source_parameters

    RECORD:
      event_identifier
      origin_time
      latitude
      longitude
      focal_depth
      magnitude_value
      magnitude_scale
      station_identifier
      component
      phase
      amplitude
      amplitude_unit
      period
      filter
      distance
      distance_definition
      instrument
      instrument_response
      attenuation_model
      station_correction
      station_magnitudes
      network_aggregation_method
      calibration_version
      quality_flag
      uncertainty
      provenance

    UNCERTAINTY:
      inferred_seismic_magnitude =
        best_estimate +/- uncertainty
  }

  CALIBRATION_MODEL {
    local_scale:
      amplitude_distance_reference_relation

    station:
      station_correction

    network:
      scale_realisation_and_aggregation_protocol

    moment:
      spectral_or_waveform_source_model

    REQUIRE:
      calibration_dataset
      valid_magnitude_range
      region
      version
      uncertainty

    RULE:
      calibration MUST match_scale_region_and_measurement_method
  }

  UNCERTAINTY_MODEL {
    sources:
      waveform_noise
      instrument_response
      amplitude_measurement
      period_measurement
      phase_selection
      distance
      focal_depth
      attenuation_model
      station_correction
      source_model
      spectral_fit
      station_variability
      network_aggregation
      scale_conversion

    PROPAGATION:
      seismic_magnitude_uncertainty
      <- waveform_instrument_geometry_path_source_and_aggregation_uncertainties
  }

  REASONING_RULES {
    IF seismic_moment_known AND seismic_moment > 0
      THEN moment_magnitude =
        (2/3)*(log10(seismic_moment)-9.1)
      WHEN seismic_moment_is_in_N_m
      under_common_convention

    IF moment_magnitude_known
      THEN seismic_moment =
        10^(1.5*moment_magnitude+9.1)
      N*m
      under_same_convention

    IF shear_modulus_rupture_area_and_average_slip_known
      THEN seismic_moment =
        shear_modulus*rupture_area*average_slip

    IF valid_local_magnitude_amplitude_and_distance_known
      THEN local_magnitude =
        apply_local_magnitude_scale(amplitude,distance,station_correction)

    IF valid_body_wave_amplitude_period_distance_and_depth_known
      THEN body_wave_magnitude =
        log10(amplitude/period)+body_wave_correction(distance,depth)

    IF station_magnitudes_known
      THEN network_magnitude =
        aggregate(valid_station_magnitudes)
      USING declared_aggregation_method

    IF source_and_target_magnitude_scales_known
      AND valid_empirical_conversion_available
      THEN converted_magnitude =
        conversion_model(source_magnitude)
      preserving_conversion_uncertainty

    IF raw_waveform_counts_known
      THEN remove_instrument_response
      BEFORE physical_amplitude_based_magnitude_inference
  }

  VALIDATION {
    CHECK event_identity
    CHECK magnitude_scale
    CHECK dimensionless_semantics
    CHECK magnitude_vs_intensity
    CHECK magnitude_vs_ground_motion
    CHECK magnitude_vs_energy
    CHECK moment_magnitude_vs_seismic_moment
    CHECK amplitude_definition
    CHECK amplitude_unit
    CHECK period_or_frequency_band
    CHECK distance_definition
    CHECK focal_depth
    CHECK instrument_response
    CHECK attenuation_model
    CHECK station_correction
    CHECK station_vs_network_magnitude
    CHECK saturation_context
    CHECK magnitude_conversion_model
    CHECK calibration_version
    CHECK quality_flag
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    logarithmic_semantics_confidence: 1.00
    moment_magnitude_relationship_confidence: 1.00
    local_magnitude_relationship_confidence: 0.99
    body_wave_relationship_confidence: 0.99
    network_aggregation_confidence: 0.98
    scale_conversion_confidence: 0.94
    measurement_context_confidence: 0.98

    RULE:
      confidence decreases when scale, amplitude definition, distance,
      instrument response, attenuation model, station correction,
      aggregation method, calibration or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_waveform_measurement:
      identify_event
      identify_station_component_and_phase
      attach_instrument_response
      correct_raw_waveform
      measure_scale_appropriate_amplitude_and_period
      attach_distance_and_depth
      apply_attenuation_and_station_corrections
      compute_station_magnitude
      attach_quality_flag
      attach_uncertainty

    ON new_station_magnitude:
      preserve_station_value
      update_valid_station_set
      recompute_network_magnitude
      preserve_aggregation_method
      update_network_uncertainty

    ON source_model_update:
      preserve_waveform_and_spectrum
      update_source_model
      recompute_seismic_moment
      recompute_moment_magnitude
      update_uncertainty
      update_confidence

    ON calibration_revision:
      preserve_raw_measurements
      preserve_previous_calibration
      recompute_affected_magnitudes
      update_uncertainty
      update_provenance

    ON scale_conversion:
      preserve_original_magnitude_and_scale
      attach_conversion_model
      compute_target_scale_estimate
      preserve_conversion_uncertainty

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_domain: SeismicMagnitude
    canonical_primary_scale_for_moment: MomentMagnitude

    interpretation_order:
      identify_event
      identify_magnitude_value
      identify_magnitude_scale
      identify_station_or_network_value
      identify_wave_type_phase_and_component
      identify_amplitude_and_period_definition
      identify_distance_and_focal_depth
      identify_instrument_response
      identify_attenuation_and_station_corrections
      identify_source_model_when_moment_based
      identify_saturation_context
      identify_calibration_version
      identify_quality_flag
      identify_uncertainty
      validate_scale_semantics
      infer_magnitude_relationships

    ambiguity_controls:
      distinguish_magnitude_from_intensity
      distinguish_magnitude_from_ground_motion_amplitude
      distinguish_magnitude_from_peak_ground_acceleration
      distinguish_magnitude_from_seismic_energy
      distinguish_moment_magnitude_from_seismic_moment
      distinguish_local_body_wave_surface_wave_and_moment_magnitudes
      distinguish_station_from_network_magnitude
      distinguish_direct_scale_value_from_empirical_scale_conversion
      preserve_event_scale_station_phase_distance_correction_calibration_and_provenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_Earth_science_seismic_magnitude_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Earth Science Measurements
      -> Seismic Magnitude Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_domain
      ontology_path
      scale_model
      logarithmic_model
      moment_magnitude_model
      seismic_moment_model
      local_magnitude_model
      body_wave_model
      surface_wave_model
      saturation_model
      seismic_energy_model
      intensity_distinction_model
      ground_motion_distinction_model
      instrument_response_model
      amplitude_model
      period_model
      distance_model
      depth_model
      attenuation_correction_model
      station_magnitude_model
      network_magnitude_model
      station_correction_model
      spectral_model
      magnitude_conversion_model
      event_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
      magnitude_scale_definition_changes
      moment_or_source_model_changes
      amplitude_period_or_distance_model_changes
      attenuation_or_station_correction_changes
      network_aggregation_model_changes
      magnitude_conversion_model_changes
      calibration_model_changes
      measurement_model_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

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