Skip to main content

Sensor Fusion Ontology

AI Measurement Semantics
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 16 September 2026
Audio Overview
# Sensor Fusion Ontology — Flow Algebra

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/ai-measurement-semantics/sensor-fusion-ontology.html

FLOW SensorFusionOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> AI Measurement Semantics
    -> Sensor Fusion Ontology

  PURPOSE:
    Represent sensor fusion as the machine-interpretable integration of observations from multiple sensors, instruments, modalities, models or measurement sources to estimate quantities, states, events or classifications with explicit treatment of units, dimensions, coordinate frames, timing, calibration, uncertainty, covariance, dependence, bias, drift, reliability, provenance and validation. The ontology models measurement-level, feature-level and decision-level fusion; deterministic and probabilistic fusion; weighted estimators; Kalman-family filtering; Bayesian fusion; information filters; particle methods; multisensor registration; synchronisation; redundancy; complementary sensing; fault detection; outlier rejection; data association; track fusion; spatial transformations; uncertainty propagation; provenance; semantic confidence; recursive updates and machine-consumable reasoning while preventing correlated, incompatible, stale, misregistered or semantically different measurements from being naively combined.

  ENTITY SensorFusion {
    TYPE: MultiSourceMeasurementInferenceProcess

    PROPERTIES:
      has_sources
      has_observations
      has_target_state
      has_fusion_level
      has_fusion_method
      has_coordinate_context
      has_temporal_context
      has_uncertainty
      has_covariance
      has_calibration
      has_provenance
      has_validation
      produces_fused_estimate
  }

  ENTITY Sensor {
    TYPE: MeasurementSource

    PROPERTIES:
      has_identifier
      has_quantity_kind
      has_unit
      has_dimension
      has_coordinate_frame
      has_sampling_model
      has_calibration
      has_uncertainty
      has_bias
      has_latency
      has_reliability
  }

  ENTITY Observation {
    TYPE: SensorMeasurement

    COMPONENTS:
      source_identifier
      timestamp
      measured_value
      unit
      quantity_kind
      coordinate_frame
      uncertainty
      quality_flags
      provenance
  }

  ENTITY FusedEstimate {
    TYPE: DerivedMeasurementOrStateEstimate

    COMPONENTS:
      target_quantity_orstate
      estimate
      uncertainty
      covariance
      timestamp
      reference_frame
      source_contributions
      algorithm
      provenance
  }

  ENTITY StateVector {
    TYPE: EstimatedSystemState

    FORM:
      x =
        [x_1,x_2,...,x_n]^T

    RULE:
      component_order_units_andsemantic_meanings MUST be preserved
  }

  FUSION_LEVEL_MODEL {
    levels:
      raw_data_level
      measurement_level
      feature_level
      state_level
      decision_level

    RULE:
      fusion_level MUST be explicit
  }

  RAW_DATA_FUSION_MODEL {
    inputs:
      minimally_processed_sensor_outputs

    RULE:
      raw_sources_require_calibration_registration_andtiming_context
  }

  MEASUREMENT_LEVEL_FUSION_MODEL {
    inputs:
      calibrated_measurements_of_same_orrelated_quantity

    output:
      fused_measurement

    RULE:
      quantity_kind_andreference_frame_compatibility MUST be validated
  }

  FEATURE_LEVEL_FUSION_MODEL {
    inputs:
      derived_features

    RULE:
      feature_extraction_provenance MUST be preserved
  }

  DECISION_LEVEL_FUSION_MODEL {
    inputs:
      classifications_decisions_orprobabilities

    RULE:
      decision_semantics_andcalibration MUST be compatible
  }

  HOMOGENEOUS_SENSOR_MODEL {
    sources:
      sensors_measuring_same_quantity_kind

    benefit:
      redundancy
      precision_improvement
      fault_detection

    RULE:
      common_mode_dependencies MUST be considered
  }

  HETEROGENEOUS_SENSOR_MODEL {
    sources:
      different_modalities_orquantity_kinds

    benefit:
      complementary_information

    RULE:
      fusion_requires_explicit_measurement_model_linking_sources_to_common_state
  }

  REDUNDANT_FUSION_MODEL {
    multiple_sources:
      observe_same_oroverlapping_state_information

    RULE:
      redundancy_does_not_imply_independence
  }

  COMPLEMENTARY_FUSION_MODEL {
    sources:
      observe_different_aspects_orfrequency_ranges

    example:
      accelerometer_plus_gyroscope
      GNSS_plus_inertial
      camera_plus_lidar

    RULE:
      complementary_measurement_models MUST be explicit
  }

  CENTRALIZED_FUSION_MODEL {
    architecture:
      raw_orprocessed_source_data_sent_to_central_estimator

    RULE:
      source_covariance_andcross_correlation SHOULD be preserved
  }

  DECENTRALIZED_FUSION_MODEL {
    architecture:
      local_estimators_produce_intermediate_estimates

    RULE:
      cross_correlation_between_local_estimates MAY be difficult_and_must_not_be ignored_without_basis
  }

  DISTRIBUTED_FUSION_MODEL {
    nodes:
      exchange_information_peer_to_peer

    RULE:
      repeated_information_can_cause_double_counting
  }

  HIERARCHICAL_FUSION_MODEL {
    layers:
      local_sensor
      subsystem
      system
      global

    RULE:
      lineage MUST show_each_fusion_stage
  }

  MEASUREMENT_MODEL {
    generic:
      z_k =
        h(x_k)+v_k

    WHERE:
      z_k = observation
      x_k = state
      h = measurement_function
      v_k = measurement_noise

    RULE:
      measurement_function MUST map_state_to_sensor_observation_space
  }

  LINEAR_MEASUREMENT_MODEL {
    z_k =
      H_k*x_k+v_k

    covariance:
      R_k =
        Cov(v_k)
  }

  NONLINEAR_MEASUREMENT_MODEL {
    z_k =
      h(x_k)+v_k

    RULE:
      nonlinear_fusion_method MUST account_for_model_nonlinearity
  }

  PROCESS_MODEL {
    x_k =
      f(x_(k-1),u_k)+w_k

    covariance:
      Q_k =
        Cov(w_k)

    RULE:
      process_model_andnoise_semantics MUST be preserved
  }

  STATIC_FUSION_MODEL {
    target:
      common_static_quantity

    sources:
      x_i

    RULE:
      temporal_dynamics_not_required_but_correlation_still_matters
  }

  DYNAMIC_FUSION_MODEL {
    target:
      time_varying_state

    REQUIRE:
      process_model
      timestamps
      measurement_models

    RULE:
      stale_measurements MUST be handled_explicitly
  }

  WEIGHTED_MEAN_MODEL {
    independent_estimates:
      x_i

    weights:
      w_i

    fused:
      x_f =
        sum_i(w_i*x_i)/sum_i(w_i)

    REQUIRE:
      sum_i(w_i) != 0

    RULE:
      weight_semantics MUST be defined
  }

  INVERSE_VARIANCE_FUSION_MODEL {
    independent_scalar_estimates:
      variance_i =
        sigma_i^2

    weights:
      w_i =
        1/sigma_i^2

    fused_variance:
      sigma_f^2 =
        1/sum_i(w_i)

    RULE:
      formula_requires_independent_unbiased_estimates_of_common_quantity_under_model
  }

  CORRELATED_FUSION_MODEL {
    observations:
      y

    covariance:
      Sigma

    common_scalar_model:
      y =
        1*x+noise

    BLUE:
      x_hat =
        (1^T*Sigma^-1*y)/
        (1^T*Sigma^-1*1)

    variance:
      1/(1^T*Sigma^-1*1)

    RULE:
      covariance_matrix MUST include_cross_source_dependencies
  }

  BLUE_MODEL {
    full_name:
      Best_Linear_Unbiased_Estimator

    RULE:
      optimality_is_relative_to_linear_unbiased_model_andknown_covariance
  }

  LEAST_SQUARES_MODEL {
    objective:
      minimise_residual_norm

    RULE:
      weighting_andcovariance SHOULD reflect_measurement_uncertainty
  }

  WEIGHTED_LEAST_SQUARES_MODEL {
    residual:
      r =
        z-h(x)

    objective:
      r^T*W*r

    common:
      W =
        R^-1

    RULE:
      W_must_be_dimensionally_andstatistically_valid
  }

  MAXIMUM_LIKELIHOOD_MODEL {
    estimate:
      argmax_x p(z|x)

    RULE:
      likelihood_model MUST include_sensor_noise_anddependencies
  }

  BAYESIAN_FUSION_MODEL {
    posterior:
      p(x|z_1,...,z_n)
      proportional_to
      p(z_1,...,z_n|x)*p(x)

    RULE:
      conditional_independence MUST not_be assumed_without_model
  }

  PRIOR_MODEL {
    state_prior:
      p(x)

    RULE:
      prior_source_andtime MUST be preserved
  }

  LIKELIHOOD_MODEL {
    sensor:
      p(z_i|x)

    RULE:
      likelihood_calibration_is_critical_for_probabilistic_fusion
  }

  POSTERIOR_MODEL {
    fused_distribution:
      p(x|Z)

    RULE:
      posterior_uncertainty_is_model_dependent
  }

  KALMAN_FILTER_MODEL {
    linear_Gaussian:
      prediction
      update

    prediction:
      x_k_minus =
        F_k*x_(k-1)+B_k*u_k

      P_k_minus =
        F_k*P_(k-1)*F_k^T+Q_k

    update:
      innovation =
        z_k-H_k*x_k_minus

      S_k =
        H_k*P_k_minus*H_k^T+R_k

      K_k =
        P_k_minus*H_k^T*S_k^-1

      x_k =
        x_k_minus+K_k*innovation

      P_k =
        (I-K_k*H_k)*P_k_minus

    RULE:
      dimensions_frames_andcovariances MUST be consistent
  }

  JOSEPH_COVARIANCE_MODEL {
    P_k =
      (I-KH)*P_minus*(I-KH)^T
      +K*R*K^T

    RULE:
      Joseph_form_can_improve_numerical_covariance_consistency
  }

  EXTENDED_KALMAN_MODEL {
    nonlinear:
      f
      h

    linearisation:
      Jacobians_F_and_H

    RULE:
      linearisation_point_andJacobians MUST be preserved
  }

  UNSCENTED_KALMAN_MODEL {
    nonlinear:
      sigma_points_propagated_through_models

    RULE:
      sigma_point_parameters_andweights MUST be preserved
  }

  INFORMATION_FILTER_MODEL {
    information_matrix:
      Y =
        P^-1

    information_vector:
      y =
        Y*x

    RULE:
      singular_orill_conditioned_covariance_requires_special_handling
  }

  PARTICLE_FILTER_MODEL {
    particles:
      x_k^(i)

    weights:
      w_k^(i)

    operations:
      propagate
      weight
      normalise
      resample

    RULE:
      particle_count_resampling_method_andrandom_seed SHOULD be preserved
  }

  MONTE_CARLO_FUSION_MODEL {
    samples:
      propagate_nonlinear_uncertainty

    RULE:
      sampling_error_andseed_or stochastic_state SHOULD be recorded
  }

  COVARIANCE_INTERSECTION_MODEL {
    use:
      combine_estimates_when_cross_correlation_unknown

    generic:
      P_f^-1 =
        omega*P_1^-1
        +(1-omega)*P_2^-1

      x_f =
        P_f*(
          omega*P_1^-1*x_1
          +(1-omega)*P_2^-1*x_2
        )

    REQUIRE:
      0 <= omega <= 1

    RULE:
      method_is_conservative_relative_to_unknown_correlation_context
  }

  DOUBLE_COUNTING_MODEL {
    problem:
      same_information_enters_fusion_multiple_times

    causes:
      shared_reference
      previous_fusion_result_reused
      network_loops
      common_prior

    RULE:
      lineage_andcross_correlation MUST be checked
  }

  COMMON_MODE_MODEL {
    error:
      affects_multiple_sensors_similarly

    examples:
      shared_clock
      shared_temperature
      shared_reference
      common_power_supply
      common_algorithm

    RULE:
      common_mode_error_limits_benefit_of_redundant_fusion
  }

  COVARIANCE_MODEL {
    P:
      state_covariance

    R:
      measurement_covariance

    Q:
      process_covariance

    RULE:
      covariance_variable_order_units_andframes MUST be preserved
  }

  CROSS_COVARIANCE_MODEL {
    P_12 =
      Cov(x_1,x_2)

    RULE:
      cross_covariance MUST be retained_when_known
  }

  CORRELATION_MODEL {
    rho:
      normalised_covariance

    RULE:
      correlation != causal_relationship
  }

  UNCERTAINTY_PROPAGATION_MODEL {
    nonlinear:
      Jacobian_orMonte_Carlo

    RULE:
      fused_uncertainty MUST include_source_model_andcross_correlation_components
  }

  SENSOR_BIAS_MODEL {
    observation:
      z =
        h(x)+b+v

    RULE:
      bias_should_be estimated_corrected_orincluded_in_state_model
  }

  BIAS_STATE_MODEL {
    augmented_state:
      [physical_state,bias_parameters]

    RULE:
      observability_of_bias MUST be considered
  }

  DRIFT_MODEL {
    bias_or scale:
      changes_over_time

    RULE:
      drift_model SHOULD be linked_to_time_andenvironment
  }

  SCALE_FACTOR_MODEL {
    sensor:
      z =
        k*h(x)+b+v

    RULE:
      calibration_scale_uncertainty MUST be preserved
  }

  CALIBRATION_MODEL {
    each_sensor:
      calibration_relation
      uncertainty
      validity

    RULE:
      fusion_does_not_remove_need_for_sensor_calibration
  }

  CROSS_CALIBRATION_MODEL {
    sensors:
      estimate_relative_bias_scale_oralignment

    RULE:
      cross_calibration_requires_reference_oridentifiability_conditions
  }

  SELF_CALIBRATION_MODEL {
    system:
      estimates_calibration_parameters_from_operational_data

    RULE:
      self_calibration_result_requires_observability_andvalidation
  }

  TEMPORAL_SYNCHRONISATION_MODEL {
    sensors:
      timestamps_mapped_to_common_time_reference

    RULE:
      fusion_requires_time_alignment_within_application_tolerance
  }

  CLOCK_OFFSET_MODEL {
    sensor_time:
      t_i

    common_time:
      t =
        t_i+delta_t_i

    RULE:
      clock_offset_uncertainty MAY propagate_to_state_uncertainty
  }

  CLOCK_DRIFT_MODEL {
    offset:
      changes_over_time

    RULE:
      clock_model SHOULD include_drift_when_material
  }

  LATENCY_MODEL {
    observation:
      generated_at_t
      received_at_t_plus_latency

    RULE:
      acquisition_time_andarrival_time MUST be distinguished
  }

  OUT_OF_SEQUENCE_MODEL {
    measurement:
      arrives_after_newer_measurements

    RULE:
      estimator MUST define_out_of_sequence_policy
  }

  STALE_DATA_MODEL {
    age:
      current_time-observation_time

    RULE:
      stale_threshold MUST be application_specific
  }

  RESAMPLING_MODEL {
    sources:
      different_sample_rates

    process:
      interpolate_decimate_oraggregate_to_common_time_grid

    RULE:
      resampling_changes_noise_andcorrelation_structure
  }

  INTERPOLATION_MODEL {
    estimate:
      value_between_samples

    RULE:
      interpolation_uncertainty MUST be considered_when_material
  }

  COORDINATE_FRAME_MODEL {
    fields:
      frame_identifier
      origin
      axes
      orientation
      handedness
      units

    RULE:
      measurements_in_different_frames MUST be transformed_before_direct_fusion
  }

  FRAME_TRANSFORMATION_MODEL {
    vector:
      p_B =
        R_BA*p_A+t_BA

    RULE:
      transform_direction_andconvention MUST be explicit
  }

  ROTATION_MODEL {
    possible:
      rotation_matrix
      quaternion
      Euler_angles

    RULE:
      rotation_convention_andorder MUST be preserved
  }

  QUATERNION_MODEL {
    q:
      unit_quaternion

    REQUIRE:
      ||q|| =
        1
      within_tolerance

    RULE:
      quaternion_sign_equivalence_andframe_convention MUST be handled
  }

  EXTRINSIC_CALIBRATION_MODEL {
    sensors:
      relative_pose

    fields:
      rotation
      translation
      uncertainty
      validity

    RULE:
      extrinsic_calibration_version MUST be linked_to_fusion_result
  }

  INTRINSIC_CALIBRATION_MODEL {
    sensor:
      internal_parameters

    examples:
      camera_intrinsics
      lidar_scale
      IMU_bias_scale

    RULE:
      intrinsic_parameters MUST be versioned
  }

  REGISTRATION_MODEL {
    datasets:
      align_spatially_or temporally

    RULE:
      registration_error MUST contribute_to_uncertainty
  }

  SPATIAL_UNCERTAINTY_MODEL {
    pose:
      covariance_in_declared_coordinate_parameterisation

    RULE:
      covariance_transform MUST follow_frame_transformation
  }

  COVARIANCE_TRANSFORM_MODEL {
    y =
      f(x)

    first_order:
      P_y =
        J*P_x*J^T

    RULE:
      Jacobian MUST match_coordinate_convention
  }

  DATA_ASSOCIATION_MODEL {
    problem:
      determine_which_observation_corresponds_to_which_target_orfeature

    outputs:
      association_hypothesis
      probability_orcost

    RULE:
      association_uncertainty MUST be considered
  }

  GATING_MODEL {
    innovation:
      nu

    covariance:
      S

    Mahalanobis_distance:
      d2 =
        nu^T*S^-1*nu

    RULE:
      gate_threshold MUST correspond_to_declared_dimension_andprobability_model
  }

  NEAREST_NEIGHBOUR_MODEL {
    association:
      choose_lowest_valid_cost

    RULE:
      nearest != necessarily_correct
  }

  JPDA_MODEL {
    full_name:
      Joint_Probabilistic_Data_Association

    RULE:
      association_probabilities_andtarget_hypotheses MUST be preserved
  }

  MULTIPLE_HYPOTHESIS_MODEL {
    hypotheses:
      maintained_over_time

    RULE:
      pruning_andmerging_policy MUST be recorded
  }

  TRACK_MODEL {
    target:
      state_estimate_over_time

    fields:
      track_identifier
      state
      covariance
      history
      source_associations
      quality
      provenance

    RULE:
      track_identity MUST be distinct_from_sensor_identity
  }

  TRACK_TO_TRACK_FUSION_MODEL {
    inputs:
      local_tracks

    RULE:
      cross_correlation_andshared_measurements MUST be considered
  }

  TRACK_MANAGEMENT_MODEL {
    stages:
      initiation
      confirmation
      maintenance
      coasting
      termination

    RULE:
      lifecycle_state MUST be preserved
  }

  FAULT_DETECTION_MODEL {
    evidence:
      residuals
      redundancy
      diagnostics
      consistency_checks

    RULE:
      disagreement_does_not_identify_faulty_sensor_without_additional_evidence
  }

  RESIDUAL_MODEL {
    innovation:
      z-h(x_pred)

    RULE:
      residual_expected_distribution_depends_onmodel_andcovariance
  }

  NORMALIZED_INNOVATION_MODEL {
    NIS =
      nu^T*S^-1*nu

    RULE:
      NIS_interpretation_requires_measurement_dimension_andstatistical_model
  }

  SENSOR_HEALTH_MODEL {
    statuses:
      healthy
      degraded
      suspect
      failed
      unavailable
      unknown

    RULE:
      health_state MUST be time_stamped
  }

  FAULT_ISOLATION_MODEL {
    purpose:
      identify_source_orcomponent_causing_inconsistency

    RULE:
      isolation_confidence MUST be represented
  }

  FAULT_TOLERANT_FUSION_MODEL {
    process:
      detect
      isolate
      exclude_or downweight
      reconfigure

    RULE:
      excluded_sensor_andreason MUST remain_in_provenance
  }

  OUTLIER_MODEL {
    observation:
      inconsistent_with_declared_fusion_model

    RULE:
      outlier != automatically_sensor_fault
  }

  ROBUST_FUSION_MODEL {
    possible:
      Huber_loss
      M_estimators
      trimmed_fusion
      RANSAC
      heavy_tailed_likelihood

    RULE:
      robust_method_andparameters MUST be preserved
  }

  RANSAC_MODEL {
    process:
      sample_hypotheses
      fit_model
      classify_inliers
      choose_consensus

    RULE:
      random_seed_threshold_anditeration_policy SHOULD be recorded
  }

  ADAPTIVE_WEIGHT_MODEL {
    weights:
      change_based_onestimated_quality_ornoise

    RULE:
      adaptation_rule MUST avoid_feedback_that_masks_real_faults_without_detection
  }

  RELIABILITY_MODEL {
    source:
      probability_orordinal_health_measure

    RULE:
      reliability_score != measurement_uncertainty
  }

  QUALITY_WEIGHT_MODEL {
    fusion_weight:
      may_depend_on
        uncertainty
        health
        age
        calibration
        environment

    RULE:
      weighting_logic MUST be explicit_andvalidated
  }

  AVAILABILITY_MODEL {
    sensor:
      available_or unavailable

    RULE:
      fusion_architecture SHOULD degrade_gracefully_when_source_missing
  }

  MISSING_SENSOR_MODEL {
    source:
      expected_but absent

    RULE:
      missing_source MUST not_be replaced_with_zero_measurement
  }

  MODALITY_MODEL {
    possible:
      inertial
      satellite_navigation
      optical
      lidar
      radar
      acoustic
      magnetic
      pressure
      temperature
      chemical
      biological

    RULE:
      modality_specific_measurement_models MUST be preserved
  }

  GNSS_IMU_MODEL {
    GNSS:
      absolute_position_velocity_time_information

    IMU:
      high_rate_specific_force_andangular_rate

    fusion:
      complementary_long_andshort_term_information

    RULE:
      frames_gravity_model_biases_andtime_alignment MUST be explicit
  }

  CAMERA_LIDAR_MODEL {
    camera:
      image_features_colour_texture

    lidar:
      range_geometry

    RULE:
      intrinsic_extrinsic_andtemporal_calibration_are_required
  }

  RADAR_CAMERA_MODEL {
    radar:
      range_velocity_angle_information

    camera:
      image_semantics_andbearing

    RULE:
      association_andframe_registration MUST be explicit
  }

  COMPLEMENTARY_FILTER_MODEL {
    sources:
      separated_byfrequency_response

    example:
      low_frequency_absolute_reference
      high_frequency_relative_sensor

    RULE:
      filter_transfer_functions SHOULD sum_to desired_combined_response
  }

  FREQUENCY_DOMAIN_FUSION_MODEL {
    source_information:
      weighted_byfrequency

    RULE:
      spectral_noise_andphase MUST be considered
  }

  MULTIRATE_FUSION_MODEL {
    sensors:
      different_sampling_rates

    RULE:
      estimator MUST process_measurements_at_correct_timestamps
  }

  EVENT_DRIVEN_FUSION_MODEL {
    update:
      occurs_when_measurement_arrives

    RULE:
      arrival_time != measurement_time
  }

  BATCH_FUSION_MODEL {
    observations:
      processed_jointly_over_window

    possible:
      least_squares
      factor_graph
      smoothing

    RULE:
      window_andboundary_conditions MUST be preserved
  }

  SMOOTHING_MODEL {
    estimate:
      state_at_time_using_past_andfuture_observations

    RULE:
      smoothed_estimate != real_time_filtered_estimate
  }

  FACTOR_GRAPH_MODEL {
    variables:
      state_nodes

    factors:
      measurement_process_prior_constraints

    RULE:
      factor_identity_noise_model_andconnected_variables MUST be preserved
  }

  OPTIMISATION_MODEL {
    objective:
      sum_of_measurement_andprocess_costs

    RULE:
      local_minima_parameterisation_andconvergence_status MUST be recorded
  }

  OBSERVABILITY_MODEL {
    state:
      inferable_from_measurement_history_andmodel

    RULE:
      unobservable_components MUST not_be reported_with_false_confidence
  }

  IDENTIFIABILITY_MODEL {
    parameter:
      distinguishable_from_available_measurements

    RULE:
      calibration_parameter_fusion_requires_identifiability
  }

  CONSISTENCY_MODEL {
    estimator:
      stated_covariance_matches_actual_error_statistics_under_model

    RULE:
      overconfident_fusion_is_inconsistent
  }

  NEES_MODEL {
    normalized_estimation_error_squared:
      e^T*P^-1*e
      when_reference_truth_available

    RULE:
      interpretation_requires_state_dimension_andstatistical_assumptions
  }

  VALIDATION_MODEL {
    checks:
      units
      dimensions
      timestamps
      frames
      calibration
      covariance
      association
      residuals
      consistency
      lineage

    RULE:
      fused_result_validity_is_scoped_to_model_andintended_use
  }

  GROUND_TRUTH_MODEL {
    reference:
      independently_established_higher_quality_state_orquantity

    RULE:
      ground_truth_has_uncertainty_andprovenance
  }

  CROSS_VALIDATION_MODEL {
    source:
      held_out_sensor_orreference

    RULE:
      validation_source_independence MUST be assessed
  }

  PERFORMANCE_MODEL {
    possible:
      RMSE
      bias
      covariance_consistency
      detection_rate
      false_alarm_rate
      latency
      availability

    RULE:
      metric_definition_andreference MUST be explicit
  }

  RMSE_MODEL {
    RMSE =
      sqrt(
        mean(
          ||x_hat-x_ref||^2
        )
      )

    RULE:
      coordinate_frame_units_andreference_uncertainty MUST be preserved
  }

  PROVENANCE_MODEL {
    fused_result:
      links_to
        every_source_observation
        calibration
        transformation
        association
        algorithm
        configuration
        validation

    RULE:
      source_contribution_lineage MUST be traversable
  }

  SOURCE_CONTRIBUTION_MODEL {
    source:
      contribution_to_fused_estimate

    possible:
      weight
      information_increment
      association_probability
      qualitative_role

    RULE:
      contribution_metric_depends_onfusion_method
  }

  AI_FUSION_MODEL {
    AI_system:
      may_select_sources_models_weights_orassociations

    RULE:
      AI_decisions MUST preserve_evidence_confidence_andprovenance
  }

  LEARNED_FUSION_MODEL {
    model:
      neural_orstatistical_learned_mapping

    inputs:
      multisensor_data

    output:
      estimate_or decision

    RULE:
      training_data_model_version_andcalibration MUST be preserved
  }

  TRAINING_DATA_MODEL {
    dataset:
      source_sensors
      labels_orreferences
      preprocessing
      splits
      versions

    RULE:
      training_andvalidation_leakage MUST be controlled
  }

  DOMAIN_SHIFT_MODEL {
    deployment:
      differs_from_training_orcalibration_conditions

    RULE:
      shift SHOULD trigger_confidence_reassessment_orrevalidation
  }

  SEMANTIC_COMPATIBILITY_MODEL {
    sources:
      must_map_to_common_target_state_orrelated_measurement_model

    RULE:
      same_numeric_datatype_orunit_does_not_establish_fusibility
  }

  QUANTITY_KIND_MODEL {
    source_quantity:
      semantic_type

    RULE:
      different_quantity_kinds_can_be fused_only_through_explicit_state_orphysical_model
  }

  UNIT_MODEL {
    source:
      unit

    RULE:
      direct_fusion_requires_unit_compatibility_orconversion
  }

  DIMENSION_MODEL {
    measurement:
      dimensional_structure

    RULE:
      dimensional_consistency MUST be validated_before_fusion
  }

  UNIT_CONVERSION_MODEL {
    source:
      converted_to_common_unit

    RULE:
      conversion_uncertainty_andexactness MUST be preserved
  }

  SCALE_MODEL {
    sensor:
      may_use_different_scale_ornormalisation

    RULE:
      preprocessing_scale MUST be documented
  }

  UNCERTAINTY_DISTINCTION_MODEL {
    measurement_uncertainty:
      source_orfused_quantity_dispersion

    semantic_confidence:
      confidence_in_interpretation_orassociation

    RULE:
      uncertainty != semantic_confidence
  }

  DECISION_CONFIDENCE_MODEL {
    classification:
      probability_score_orbelief

    RULE:
      decision_confidence_requires_calibration_before_probabilistic_interpretation
  }

  DEMPSTER_SHAFER_MODEL {
    evidence:
      belief_masses_overhypotheses

    RULE:
      combination_rule_andconflict_handling MUST be explicit
  }

  VOTING_MODEL {
    decisions:
      majority_orweighted_vote

    RULE:
      votes_are_not_independent_if_models_share_data
  }

  ENSEMBLE_MODEL {
    estimators:
      multiple_models_or sensors

    RULE:
      ensemble_diversity_andshared_training_data SHOULD be considered
  }

  CONFLICT_MODEL {
    sources:
      materially_disagree

    possible_causes:
      fault
      misregistration
      latency
      bias
      wrong_association
      model_failure
      real_change

    RULE:
      disagreement MUST be surfaced_before_forced_combination
  }

  CONFLICT_RESOLUTION_MODEL {
    process:
      check_identity
      check_time
      check_frame
      check_unit
      check_calibration
      check_covariance
      check_health
      check_model

    RULE:
      unresolved_conflict SHOULD reduce_confidence_orblock_fusion
  }

  SOURCE_PRIORITY_MODEL {
    source:
      may_have_priority_due_to
        uncertainty
        health
        recency
        authority
        modality

    RULE:
      priority MUST be rule_based_not_name_based
  }

  FAILSAFE_MODEL {
    severe_inconsistency:
      fusion_may_enter_degraded_or safe_state

    RULE:
      safety_policy_is_application_specific_andmust_be explicit
  }

  QUALITY_FLAG_MODEL {
    possible:
      valid
      degraded
      suspect_source
      stale_source
      frame_mismatch
      time_mismatch
      unit_mismatch
      calibration_issue
      covariance_unknown
      association_ambiguous
      outlier_rejected
      source_missing
      fusion_inconsistent
      manual_review

    RULE:
      flags MUST remain_linked_to_source_andfused_result
  }

  METADATA_MODEL {
    fields:
      fusion_identifier
      fusion_level
      target_state_identifier
      source_identifiers
      observation_identifiers
      quantity_kinds
      units
      dimensions
      timestamps
      coordinate_frames
      calibration_identifiers
      uncertainty_models
      covariance_matrices
      cross_covariances
      process_model
      measurement_models
      fusion_algorithm
      algorithm_version
      parameters
      associations
      source_health
      quality_flags
      fused_estimate
      fused_covariance
      validation_results
      provenance

    RULE:
      fusion_metadata MUST support_reconstruction_of_fused_estimate
  }

  RELATIONSHIPS {
    SensorFusion -> USES -> Sensor
    Sensor -> PRODUCES -> Observation
    Observation -> OBSERVES -> QuantityOrState
    Observation -> HAS_UNCERTAINTY -> MeasurementUncertainty
    Observation -> HAS_FRAME -> CoordinateFrame
    Sensor -> HAS_CALIBRATION -> CalibrationRecord
    SensorFusion -> USES_MODEL -> MeasurementModel
    SensorFusion -> USES_MODEL -> ProcessModel
    SensorFusion -> PRODUCES -> FusedEstimate
    FusedEstimate -> DERIVED_FROM -> Observations
    FusedEstimate -> HAS -> Covariance
    DataAssociation -> LINKS -> ObservationAndTarget
    Validation -> QUALIFIES -> FusedEstimate
  }

  SEMANTIC_EQUIVALENCE {
    "sensor fusion" ~= integration_of_multiple_measurement_sources_for_common_inference
    "multisensor fusion" ~= sensor_fusion
    "fused estimate" ~= estimate_derived_from_multiple_sources_under_declared_fusion_model

    fusion != averaging_in_all_contexts
    redundancy != independence
    correlation != causation
    sensor_health != measurement_uncertainty
    semantic_confidence != measurement_uncertainty
    same_unit != same_quantity_kind
    same_dimension != direct_fusibility
    arrival_time != measurement_time
    track_fusion != raw_measurement_fusion
    ground_truth != uncertainty_free_truth
  }

  CONSTRAINTS {
    fusion_target_must_be defined = true
    source_identifiers_must_be preserved = true
    quantity_kind_unit_anddimension_compatibility_must_be validated = true
    coordinate_frames_must_be resolved_before_spatial_fusion = true
    measurement_times_must_be aligned_or modelled = true
    calibration_state_must_be applicable_atobservation_time = true
    source_uncertainty_andcovariance_must_be preserved = true
    cross_correlation_must_not_be assumed_zero_without_basis = true
    double_counting_of_information_must_be prevented = true
    data_association_uncertainty_must_be preserved = true
    rejected_orfailed_sources_must_remain_inprovenance = true
    fused_result_must_preserve_source_lineage = true
    semantic_confidence_andmeasurement_uncertainty_must_be distinguished = true
    provenance_must_be preserved = true
  }

  MEASUREMENT_RECORD_MODEL {
    RECORD:
      fusion_identifier
      target_state_identifier
      target_state_definition
      fusion_level
      architecture
      source_identifiers
      observation_identifiers
      source_quantity_kinds
      source_units
      source_dimensions
      source_timestamps
      source_frames
      source_calibrations
      source_uncertainties
      source_covariances
      cross_covariances
      process_model_identifier
      measurement_model_identifiers
      coordinate_transform_identifiers
      synchronisation_model
      association_model
      fusion_algorithm
      algorithm_version
      parameters
      source_health
      rejected_sources
      quality_flags
      fused_state
      fused_covariance
      output_frame
      output_timestamp
      validation_metrics
      semantic_confidence
      transformation_history
      provenance

    RULE:
      fused_measurement MUST remain_linked_to_sources_models_covariance_associations_algorithm_andprovenance
  }

  REASONING_RULES {
    IF multiple_sources_observe_same_quantity
      THEN validate_quantity_kind_units_frames_times_calibration_andcovariance_before_combining

    IF units_compatible_but_different
      THEN convert_to_common_unit
      and_preserve_conversion_provenance

    IF coordinate_frames_differ
      THEN transform_to_common_frame
      andpropagate_transform_uncertainty

    IF timestamps_differ
      THEN apply_temporal_model_interpolation_prediction_orout_of_sequence_policy

    IF sources_share_reference_orprior_information
      THEN model_cross_correlation
      andprevent_double_counting

    IF independent_unbiased_scalar_estimates_with_known_variances
      THEN inverse_variance_fusion_MAY be applied

    IF linear_Gaussian_dynamic_model
      THEN Kalman_filter_MAY be applied

    IF nonlinear_model
      THEN choose_valid_nonlinear_estimator
      andpreserve_approximation_method

    IF cross_correlation_unknown_between_estimates
      THEN conservative_method_SUCH_AS_covariance_intersection_MAY be used

    IF observation_fails_gating_orhealth_check
      THEN flag_source
      andapply_declared_rejection_or downweight_policy

    IF association_ambiguous
      THEN preserve_multiple_hypotheses_orassociation_probabilities

    IF fused_covariance_inconsistent_with_validation_reference
      THEN flag_overconfidence_or model_mismatch

    IF source_orcalibration_revision_occurs
      THEN identify_dependent_fused_results
      andrecursively_recompute_orrevalidate_under_policy
  }

  VALIDATION {
    CHECK fusion_target
    CHECK source_identity
    CHECK fusion_level
    CHECK quantity_kinds
    CHECK units_anddimensions
    CHECK timestamps_andlatency
    CHECK coordinate_frames
    CHECK intrinsic_andextrinsic_calibration
    CHECK source_uncertainties
    CHECK covariance_andcross_covariance
    CHECK process_model
    CHECK measurement_models
    CHECK data_association
    CHECK source_health
    CHECK outliers
    CHECK double_counting
    CHECK fusion_algorithm_andparameters
    CHECK numerical_stability
    CHECK fused_covariance
    CHECK consistency_metrics
    CHECK validation_reference
    CHECK quality_flags
    CHECK source_lineage
    CHECK semantic_confidence
    CHECK provenance
  }

  CONFIDENCE {
    source_semantic_confidence: 0.99
    unit_dimension_confidence: 1.00
    temporal_alignment_confidence: 0.99
    coordinate_registration_confidence: 0.99
    covariance_model_confidence: 0.98
    fusion_algorithm_confidence: 0.99
    data_association_confidence: 0.97
    provenance_confidence: 1.00

    RULE:
      confidence decreases when source identity, timing, frame,
      calibration, uncertainty, cross-correlation, association,
      model validity or provenance is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_observation:
      identify_source
      validate_semantics
      align_time_andframe
      resolve_calibration_anduncertainty
      perform_association
      update_fused_estimate
      update_covariance
      preserve_source_lineage

    ON sensor_calibration_revision:
      preserve_previous_calibration
      identify_observations_andfused_results_using_old_state
      update_future_fusion
      reprocess_historical_results_only_under_declared_policy

    ON source_health_change:
      record_health_event
      adjust_source_availability_orweight
      preserve_previous_estimates
      revalidate_fusion_consistency

    ON frame_or timing_revision:
      preserve_previous_transform
      update_registration_orclock_model
      identify_affected_fused_results
      recompute_when_required

    ON fusion_algorithm_revision:
      preserve_previous_algorithm_version
      register_new_parameters_andconfiguration
      validate_against_reference_data
      version_new_fused_outputs

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: SensorFusion
    canonical_role: MultiSourceMeasurementInferenceProcess

    interpretation_order:
      identify_fusion_target
      identify_sources_andobservations
      identify_quantity_kinds_units_anddimensions
      identify_timestamps_latency_andclock_context
      identify_coordinate_frames_andtransforms
      identify_intrinsic_extrinsic_andmeasurement_calibration
      identify_source_uncertainty_covariance_andcross_correlation
      identify_process_andmeasurement_models
      identify_fusion_level_andarchitecture
      identify_data_association
      identify_source_health_outliers_andfaults
      identify_fusion_algorithm_andparameters
      compute_orupdate_fused_estimate
      validate_covariance_andconsistency
      identify_quality_flags_andsemantic_confidence
      preserve_source_contributions_lineage_andprovenance

    ambiguity_controls:
      distinguish_fusion_from_simple_averaging
      distinguish_redundancy_from_independence
      distinguish_correlation_from_causation
      distinguish_sensor_health_from_measurement_uncertainty
      distinguish_semantic_confidence_from_measurement_uncertainty
      distinguish_same_unit_from_same_quantity_kind
      distinguish_same_dimension_from_direct_fusibility
      distinguish_arrival_time_from_measurement_time
      distinguish_track_fusion_from_raw_measurement_fusion
      distinguish_ground_truth_from_uncertainty_free_truth
      preserve_source_target_time_frame_calibration_covariance_association_algorithm_andprovenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_units_AI_measurement_semantics_andsensor_fusion

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> AI Measurement Semantics
      -> Sensor Fusion Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      fusion_level_model
      raw_data_fusion_model
      measurement_level_fusion_model
      feature_level_fusion_model
      decision_level_fusion_model
      homogeneous_sensor_model
      heterogeneous_sensor_model
      redundant_fusion_model
      complementary_fusion_model
      centralized_fusion_model
      decentralized_fusion_model
      distributed_fusion_model
      hierarchical_fusion_model
      measurement_model
      linear_measurement_model
      nonlinear_measurement_model
      process_model
      static_fusion_model
      dynamic_fusion_model
      weighted_mean_model
      inverse_variance_fusion_model
      correlated_fusion_model
      BLUE_model
      least_squares_model
      weighted_least_squares_model
      maximum_likelihood_model
      Bayesian_fusion_model
      prior_model
      likelihood_model
      posterior_model
      Kalman_filter_model
      Joseph_covariance_model
      extended_Kalman_model
      unscented_Kalman_model
      information_filter_model
      particle_filter_model
      Monte_Carlo_fusion_model
      covariance_intersection_model
      double_counting_model
      common_mode_model
      covariance_model
      cross_covariance_model
      correlation_model
      uncertainty_propagation_model
      sensor_bias_model
      bias_state_model
      drift_model
      scale_factor_model
      calibration_model
      cross_calibration_model
      self_calibration_model
      temporal_synchronisation_model
      clock_offset_model
      clock_drift_model
      latency_model
      out_of_sequence_model
      stale_data_model
      resampling_model
      interpolation_model
      coordinate_frame_model
      frame_transformation_model
      rotation_model
      quaternion_model
      extrinsic_calibration_model
      intrinsic_calibration_model
      registration_model
      spatial_uncertainty_model
      covariance_transform_model
      data_association_model
      gating_model
      nearest_neighbour_model
      JPDA_model
      multiple_hypothesis_model
      track_model
      track_to_track_fusion_model
      track_management_model
      fault_detection_model
      residual_model
      normalized_innovation_model
      sensor_health_model
      fault_isolation_model
      fault_tolerant_fusion_model
      outlier_model
      robust_fusion_model
      RANSAC_model
      adaptive_weight_model
      reliability_model
      quality_weight_model
      availability_model
      missing_sensor_model
      modality_model
      GNSS_IMU_model
      camera_lidar_model
      radar_camera_model
      complementary_filter_model
      frequency_domain_fusion_model
      multirate_fusion_model
      event_driven_fusion_model
      batch_fusion_model
      smoothing_model
      factor_graph_model
      optimisation_model
      observability_model
      identifiability_model
      consistency_model
      NEES_model
      validation_model
      ground_truth_model
      cross_validation_model
      performance_model
      RMSE_model
      provenance_model
      source_contribution_model
      AI_fusion_model
      learned_fusion_model
      training_data_model
      domain_shift_model
      semantic_compatibility_model
      quantity_kind_model
      unit_model
      dimension_model
      unit_conversion_model
      scale_model
      uncertainty_distinction_model
      decision_confidence_model
      Dempster_Shafer_model
      voting_model
      ensemble_model
      conflict_model
      conflict_resolution_model
      source_priority_model
      failsafe_model
      quality_flag_model
      metadata_model
      relationships
      semantic_equivalence
      constraints
      measurement_record_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      source_quantity_unit_or dimension_semantics_change
      temporal_synchronisation_orcoordinate_frame_changes
      calibration_bias_drift_orregistration_changes
      uncertainty_covariance_orcross_correlation_changes
      process_measurement_orfusion_model_changes
      data_association_track_orfault_model_changes
      fusion_algorithm_orparameter_changes
      learned_model_training_or domain_context_changes
      validation_quality_orconfidence_logic_changes
      source_lineage_orprovenance_changes
      measurement_record_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

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