Skip to main content

Sensor Ontology

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

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

FLOW SensorOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Instrumentation
    -> Sensor Ontology

  PURPOSE:
    Represent a sensor as the element of a measuring system directly affected by the phenomenon, body or substance carrying the quantity to be measured. The ontology models sensor identity, measurand interaction, sensing principles, input-output transfer functions, sensitivity, range, resolution, threshold, selectivity, cross-sensitivity, linearity, hysteresis, repeatability, drift, stability, dynamic response, noise, excitation, environmental influence, calibration, compensation, uncertainty, ageing, diagnostics, metadata, provenance, and machine-consumable reasoning across physical, chemical, biological, optical, electrical, mechanical and environmental sensing systems.

  ENTITY Sensor {
    TYPE: MeasuringSystemInputElement

    DEFINITION:
      element_of_measuring_system
      directly_affected_by_phenomenon_body_or_substance
      carrying_quantity_to_be_measured

    PROPERTIES:
      has_identity
      has_sensing_principle
      has_measurand_scope
      has_input_quantity
      has_output_signal_or_quantity
      has_transfer_function
      has_operating_range
      has_sensitivity
      may_have_cross_sensitivity
      has_dynamic_response
      may_require_excitation
      may_require_calibration
      contributes_to_measurement_uncertainty
      has_provenance
  }

  ENTITY SensorIdentifier {
    TYPE: PersistentIdentity

    COMPONENTS:
      manufacturer
      model
      serial_number
      asset_identifier
      channel_or_element_identifier

    RULE:
      sensor_identity MUST remain_linked_to_measurement_records
  }

  ENTITY SensingElement {
    TYPE: SensorPhysicalElement

    DEFINITION:
      physical_element_whose_property_or_state_changes_in_response_to_measurand

    RULE:
      sensing_element MAY be_only_one_component_of_sensor_assembly
  }

  SENSOR_CLASS_MODEL {
    possible:
      mechanical
      thermal
      electrical
      magnetic
      optical
      acoustic
      pressure
      flow
      chemical
      electrochemical
      radiation
      biological
      inertial
      position
      proximity
      force
      strain
      humidity
      gas
      particulate
      imaging
      hybrid

    RULE:
      classification MAY use_multiple_axes
  }

  MEASURAND_MODEL {
    input:
      quantity_intended_to_be_sensed

    examples:
      temperature
      pressure
      displacement
      acceleration
      force
      strain
      light
      magnetic_field
      concentration
      humidity
      flow
      radiation

    RULE:
      sensor_response MAY also_depend_on_non_measurand_influence_quantities
  }

  CARRIER_MODEL {
    phenomenon_body_or_substance:
      carries_measurand

    examples:
      fluid
      solid
      gas
      electromagnetic_field
      radiation
      biological_sample

    RULE:
      sensor_interaction_with_carrier MAY perturb_measurand
  }

  INPUT_OUTPUT_MODEL {
    measurand:
      X

    sensor_output:
      Y

    transfer:
      Y =
        f(X,E,t,state)

    WHERE:
      E = influence_quantities
      t = time
      state = sensor_internal_state

    RULE:
      transfer_function_context MUST be preserved
  }

  STATIC_TRANSFER_MODEL {
    generic:
      Y =
        f(X)

    linear:
      Y =
        S*X+b

    inverse:
      X_hat =
        (Y-b)/S
      WHEN S != 0

    RULE:
      static_transfer_is_valid_only_when_dynamic_effects_are_negligible
  }

  SENSITIVITY_MODEL {
    local:
      S =
        dY/dX

    linear:
      S =
        delta_Y/delta_X

    unit:
      output_unit/input_unit

    RULE:
      sensitivity MAY vary_across_range
  }

  CROSS_SENSITIVITY_MODEL {
    influence_quantity:
      Z

    cross_sensitivity:
      S_Z =
        partial_Y/partial_Z

    output_effect:
      delta_Y_Z approximately_equals
        S_Z*delta_Z

    RULE:
      cross_sensitivity MUST be included_when_material
  }

  SELECTIVITY_MODEL {
    desired_measurand:
      X

    interfering_quantities:
      Z_i

    selectivity:
      ability_to_respond_preferentially_to_X

    RULE:
      selectivity_metric MUST be_defined_for_sensor_domain
  }

  RANGE_MODEL {
    sensing_range:
      [X_min,X_max]

    span:
      X_max-X_min

    RULE:
      outside_range_response MAY be_nonlinear_saturated_or_damaging
  }

  SATURATION_MODEL {
    output:
      approaches_limit_despite_increasing_input

    RULE:
      saturated_output MUST be_flagged
  }

  OVERLOAD_MODEL {
    input:
      beyond_safe_or_rated_range

    effects:
      damage
      permanent_offset
      hysteresis
      delayed_recovery

    RULE:
      overload_history MAY change_calibration
  }

  RESOLUTION_MODEL {
    resolution:
      smallest_input_change_producing_discernible_output_change

    limiting_factors:
      noise
      quantisation
      hysteresis
      threshold
      readout

    RULE:
      sensor_resolution != system_display_resolution_in_general
  }

  THRESHOLD_MODEL {
    threshold:
      minimum_input_level_or_change_producing_detectable_response

    RULE:
      threshold != detection_limit_in_all_domains
  }

  DEAD_ZONE_MODEL {
    region:
      input_change_without_significant_output_change

    RULE:
      dead_zone MAY depend_on_direction_and_history
  }

  LINEARITY_MODEL {
    actual:
      Y =
        f(X)

    reference:
      Y_ref =
        a*X+b

    nonlinearity:
      delta_L =
        Y-Y_ref

    RULE:
      reference_line_method MUST be declared
  }

  HYSTERESIS_MODEL {
    response:
      depends_on_increasing_or_decreasing_input_path

    metric:
      difference_at_same_input

    RULE:
      hysteresis MAY contribute_to_uncertainty
  }

  REPEATABILITY_MODEL {
    repeated_sensor_outputs:
      under_same_conditions

    metric:
      standard_deviation_or_declared_dispersion

    RULE:
      repeatability != sensitivity
  }

  DRIFT_MODEL {
    response:
      Y =
        f(X,t)

    possible:
      zero_drift
      sensitivity_drift
      baseline_drift

    RULE:
      sensor_age_and_elapsed_time_since_calibration SHOULD be preserved
  }

  AGEING_MODEL {
    causes:
      material_change
      contamination
      fatigue
      radiation_damage
      chemical_degradation
      thermal_cycles

    effect:
      long_term_change_in_transfer_function

    RULE:
      ageing MAY require_recalibration_or_replacement
  }

  STABILITY_MODEL {
    stability:
      ability_to_maintain_sensor_characteristics_over_time

    RULE:
      stability_conditions_and_duration MUST be defined
  }

  DYNAMIC_MODEL {
    input:
      X(t)

    output:
      Y(t)

    transfer:
      H(s)

    characteristics:
      time_constant
      rise_time
      settling_time
      bandwidth
      resonance
      phase_delay

    RULE:
      sensor_dynamic_response MUST match_measurement_timescale
  }

  FIRST_ORDER_SENSOR_MODEL {
    equation:
      tau*dY/dt+Y =
        K*X

    step_response:
      Y(t) =
        K*X_0*(1-exp(-t/tau))
      under_zero_initial_state

    RULE:
      tau_is_sensor_time_constant_under_model
  }

  SECOND_ORDER_SENSOR_MODEL {
    equation:
      d2Y/dt2
      +2*zeta*omega_n*dY/dt
      +omega_n^2*Y
      =
      K*omega_n^2*X

    RULE:
      resonance_and_damping MUST be considered_for_dynamic_sensors
  }

  BANDWIDTH_MODEL {
    frequency_response:
      H(j*omega)

    bandwidth:
      frequency_range_meeting_declared_response_criterion

    RULE:
      bandwidth != sampling_rate
  }

  LATENCY_MODEL {
    delay:
      sensor_or_embedded_processing_delay

    RULE:
      latency_and_time_constant_are_distinct
  }

  NOISE_MODEL {
    output_noise:
      random_variation_at_sensor_output

    sources:
      thermal
      shot
      flicker
      mechanical
      optical
      chemical
      biological
      environmental
      electronics

    RULE:
      noise MUST be specified_with_bandwidth_or_spectral_density_when_relevant
  }

  NOISE_DENSITY_MODEL {
    amplitude_spectral_density:
      output_unit/sqrt(Hz)

    power_spectral_density:
      output_unit_squared/Hz

    RULE:
      integrated_noise_requires_bandwidth_and_filter_transfer
  }

  SNR_MODEL {
    signal_to_noise:
      declared_signal_metric/declared_noise_metric

    RULE:
      SNR_definition MUST identify_bandwidth
  }

  DETECTION_LIMIT_MODEL {
    smallest_measurand_level_detectable_under_declared_statistical_criterion

    dependencies:
      noise
      blank
      sensitivity
      false_positive_rate
      false_negative_rate

    RULE:
      detection_limit != resolution
  }

  EXCITATION_MODEL {
    sensor:
      may_require_external_excitation

    possible:
      voltage
      current
      optical
      acoustic
      magnetic
      thermal

    attributes:
      amplitude
      frequency
      stability

    RULE:
      excitation_uncertainty MAY propagate_to_sensor_output
  }

  SELF_GENERATING_MODEL {
    examples:
      thermocouple
      piezoelectric_sensor
      photovoltaic_detector

    RULE:
      self_generating_does_not_mean_no_signal_conditioning_required
  }

  RESISTIVE_SENSOR_MODEL {
    relation:
      resistance_changes_with_measurand

    examples:
      RTD
      thermistor
      strain_gauge
      resistive_humidity_sensor

    RULE:
      excitation_current_can_create_self_heating
  }

  CAPACITIVE_SENSOR_MODEL {
    relation:
      capacitance_changes_with_geometry_or_dielectric

    examples:
      displacement
      pressure
      humidity
      proximity

    RULE:
      parasitic_capacitance_and_cable_effects MAY be_material
  }

  INDUCTIVE_SENSOR_MODEL {
    relation:
      inductance_or_mutual_inductance_changes

    examples:
      LVDT
      proximity_sensor

    RULE:
      excitation_frequency_affects_response
  }

  PIEZOELECTRIC_MODEL {
    input:
      force_pressure_acceleration_or_strain

    output:
      charge_or_voltage

    RULE:
      piezoelectric_sensors_are_generally_unsuitable_for_true_static_measurement_without_special_charge_handling
  }

  THERMOELECTRIC_MODEL {
    thermocouple:
      voltage_related_to_temperature_difference

    REQUIRE:
      reference_junction_compensation

    RULE:
      thermocouple_voltage != absolute_temperature_without_reference_and_calibration
  }

  RTD_MODEL {
    resistance:
      R(T)

    common_linear_approximation:
      R approximately_equals
        R_0*(1+alpha*(T-T_0))

    RULE:
      precision_measurement_requires_full_calibration_or_standard_relation_over_wide_range
  }

  THERMISTOR_MODEL {
    resistance:
      strongly_nonlinear_with_temperature

    possible_model:
      Steinhart_Hart

    RULE:
      self_heating_and_model_coefficients MUST be preserved
  }

  OPTICAL_SENSOR_MODEL {
    input:
      radiant_power
      irradiance
      illuminance
      photon_flux
      spectral_signal

    output:
      current
      voltage
      counts

    RULE:
      spectral_responsivity MUST be considered
  }

  PHOTODIODE_MODEL {
    photocurrent:
      I_photo approximately_equals
        responsivity(lambda)*optical_power

    RULE:
      dark_current_and_shot_noise MAY contribute
  }

  MAGNETIC_SENSOR_MODEL {
    possible:
      Hall
      magnetoresistive
      fluxgate
      SQUID

    RULE:
      orientation_and_cross_axis_sensitivity SHOULD be preserved
  }

  INERTIAL_SENSOR_MODEL {
    possible:
      accelerometer
      gyroscope

    characteristics:
      bias
      scale_factor
      noise_density
      random_walk
      cross_axis_sensitivity

    RULE:
      bias_instability_and_integration_drift_are_material_for_navigation
  }

  PRESSURE_SENSOR_MODEL {
    input:
      pressure

    possible_reference:
      absolute
      gauge
      differential

    RULE:
      pressure_reference_type MUST be defined
  }

  FLOW_SENSOR_MODEL {
    possible:
      differential_pressure
      thermal
      turbine
      ultrasonic
      electromagnetic
      Coriolis

    RULE:
      flow_quantity_type_mass_or_volume MUST be defined
  }

  CHEMICAL_SENSOR_MODEL {
    measurand:
      chemical_species_activity_concentration_partial_pressure_or_related_quantity

    properties:
      selectivity
      response_time
      drift
      matrix_effect

    RULE:
      calibration_matrix_and_interferents SHOULD be preserved
  }

  ELECTROCHEMICAL_SENSOR_MODEL {
    possible:
      potentiometric
      amperometric
      conductometric

    RULE:
      reference_electrode_and_temperature MAY be_material
  }

  BIOSENSOR_MODEL {
    components:
      biological_recognition_element
      transducer

    possible:
      enzyme
      antibody
      nucleic_acid
      cell
      receptor

    RULE:
      biological_activity_and_storage_history MAY affect_response
  }

  HUMIDITY_SENSOR_MODEL {
    quantity:
      relative_humidity
      absolute_humidity
      dew_point_or_related

    RULE:
      humidity_quantity_type_and_temperature_context MUST be defined
  }

  GAS_SENSOR_MODEL {
    target_species:
      declared

    possible:
      electrochemical
      semiconductor
      infrared
      catalytic
      photoionisation

    RULE:
      cross_sensitivity_and_environmental_compensation_are_often_material
  }

  PARTICULATE_SENSOR_MODEL {
    optical_scattering:
      may_infer_particle_number_or_mass_concentration

    RULE:
      particle_size_distribution_refractive_index_and_humidity_affect_retrieval
  }

  RADIATION_SENSOR_MODEL {
    possible:
      Geiger_Muller
      scintillator
      semiconductor
      ionisation_chamber

    output:
      counts
      current
      pulse_height

    RULE:
      detector_efficiency_dead_time_and_energy_response MUST be considered
  }

  DEAD_TIME_MODEL {
    event_detector:
      finite_recovery_time_after_event

    models:
      paralyzable
      nonparalyzable

    RULE:
      high_count_rate_requires_dead_time_correction
  }

  SPATIAL_SENSOR_MODEL {
    arrays:
      pixels_or_elements

    characteristics:
      pitch
      active_area
      point_spread
      cross_talk

    RULE:
      element_pitch != true_spatial_resolution
  }

  CROSS_AXIS_MODEL {
    multi_axis_sensor:
      output_vector

    calibration:
      Y =
        A*X+b

    cross_axis:
      off_diagonal_elements_of_A

    RULE:
      full_calibration_matrix SHOULD be used_when_cross_axis_terms_are_material
  }

  ORIENTATION_MODEL {
    sensor_axis:
      defined_in_sensor_coordinate_frame

    transformation:
      X_world =
        R*X_sensor

    RULE:
      coordinate_frame_and_orientation MUST be preserved
  }

  LOADING_EFFECT_MODEL {
    sensor:
      interacts_with_measured_system

    examples:
      voltmeter_input_impedance
      thermometer_heat_capacity
      pressure_tap
      mechanical_mass_loading

    RULE:
      sensor_may_change_measurand
  }

  SELF_HEATING_MODEL {
    resistive_sensor:
      excitation_power =
        I^2*R
      or
        V^2/R

    effect:
      sensor_temperature_shift

    RULE:
      excitation_should_be_low_enough_or_self_heating_corrected
  }

  MOUNTING_MODEL {
    mounting:
      affects_mechanical_thermal_optical_or_electrical_coupling

    RULE:
      mounting_method SHOULD be preserved_when_material
  }

  ENVIRONMENTAL_MODEL {
    influence_quantities:
      temperature
      humidity
      pressure
      vibration
      shock
      electromagnetic_field
      radiation
      contamination

    RULE:
      environmental_cross_sensitivities MAY require_compensation
  }

  COMPENSATION_MODEL {
    corrected_output:
      Y_corr =
        g(Y_raw,E)

    RULE:
      compensation_model_parameters_and_version MUST be preserved
  }

  CALIBRATION_MODEL {
    reference_inputs:
      X_ref

    sensor_outputs:
      Y

    fit:
      X_hat =
        g(Y,E)

    outputs:
      coefficients
      covariance
      residuals
      validity_range
      uncertainty

    RULE:
      calibration MUST match_sensor_configuration_and_environment
  }

  ZERO_CALIBRATION_MODEL {
    zero_input_or_reference:
      estimate_offset

    RULE:
      zero_calibration_does_not_determine_full_scale_response
  }

  MULTIPOINT_CALIBRATION_MODEL {
    reference_points:
      multiple_X_ref

    purpose:
      estimate_offset_gain_and_nonlinearity

    RULE:
      calibration_point_distribution SHOULD cover_valid_range
  }

  TRACEABILITY_MODEL {
    sensor_calibration:
      linked_to_reference_standard_chain

    RULE:
      traceability_and_uncertainty SHOULD be preserved
  }

  UNCERTAINTY_MODEL {
    components:
      calibration
      sensitivity
      cross_sensitivity
      resolution
      repeatability
      hysteresis
      drift
      noise
      environmental_compensation
      loading
      mounting
      timing
      retrieval_model

    RULE:
      sensor_uncertainty_is_one_component_of_total_measurement_uncertainty
  }

  DIAGNOSTIC_MODEL {
    possible:
      open_circuit
      short_circuit
      saturation
      overrange
      low_signal
      excessive_noise
      calibration_expired
      temperature_out_of_range

    RULE:
      diagnostic_flags MUST accompany_affected_measurements
  }

  HEALTH_MODEL {
    sensor_health:
      operational_state_estimate

    possible_metrics:
      drift
      noise
      response_time
      calibration_residual
      self_test

    RULE:
      health_score_requires_defined_algorithm
  }

  MAINTENANCE_MODEL {
    actions:
      cleaning
      recalibration
      replacement
      membrane_change
      reference_electrode_service
      optical_window_cleaning

    RULE:
      maintenance_can_change_sensor_response
  }

  METADATA_MODEL {
    fields:
      sensor_identifier      manufacturer
      model
      serial_number
      sensing_principle
      measurand
      input_range
      output_type
      sensitivity
      resolution
      calibration_identifier
      calibration_date
      environmental_limits
      orientation
      mounting
      excitation
      firmware_when_embedded
      maintenance_state
      provenance

    RULE:
      metadata MUST support_sensor_level_traceability
  }

  RELATIONSHIPS {
    Sensor -> IS_COMPONENT_OF -> MeasuringSystem
    Sensor -> RESPONDS_TO -> MeasurandCarrier
    Sensor -> HAS_INPUT -> Measurand
    Sensor -> PRODUCES -> OutputSignal
    SensingPrinciple -> DETERMINES -> TransferFunction
    Sensitivity -> RELATES -> InputOutputResponse
    CrossSensitivity -> RELATES -> InfluenceQuantity
    Calibration -> MAPS -> SensorOutputToMeasurandEstimate
    Environment -> INFLUENCES -> SensorResponse
    SensorCharacteristics -> CONTRIBUTE_TO -> MeasurementUncertainty
    SensorMetadata -> QUALIFIES -> MeasurementData
  }

  SEMANTIC_EQUIVALENCE {
    "sensor" ~= measuring_system_input_element WHEN metrological_context
    "sensing element" ~= physical_response_element WHEN declared_component_context

    sensor != measuring_instrument
    sensor != transducer_in_all_contexts
    sensor != detector_in_all_contexts
    sensitivity != resolution
    threshold != detection_limit
    output_signal != measured_quantity_value
    calibration != compensation
    nominal_range != safe_overload_range
  }

  CONSTRAINTS {
    sensor_identity_must_be_preserved = true
    measurand_must_be_defined = true
    sensing_principle_should_be_defined = true
    input_and_output_quantity_types_must_be_defined = true
    operating_range_must_be_defined = true
    sensitivity_and_cross_sensitivity_should_be_preserved = true
    calibration_state_should_be_defined = true
    environmental_conditions_should_be_preserved_when_material = true
    orientation_and_mounting_should_be_preserved_when_material = true
    saturation_overload_and_diagnostic_states_must_be_flagged = true
    sensor_uncertainty_components_should_propagate_to_measurement_result = true
  }

  MEASUREMENT_MODEL {
    RECORD:
      sensor_identifier
      manufacturer
      model
      serial_number
      sensing_principle
      measurand
      carrier
      raw_output
      output_unit
      measured_value
      measured_unit
      input_range
      sensitivity
      cross_sensitivity
      resolution
      threshold
      calibration_model
      calibration_date
      traceability
      excitation
      sampling_rate
      bandwidth
      response_time
      orientation
      mounting
      environmental_conditions
      compensation_model
      diagnostic_flags
      maintenance_state
      uncertainty
      provenance

    RULE:
      measurement_result MUST remain_linked_to_sensor_state_calibration_and_context
  }

  REASONING_RULES {
    IF raw_output_and_valid_calibration_model_known
      THEN measurand_estimate =
        calibration_model(raw_output,environment)

    IF linear_sensor_response_Y_equals_SX_plus_b
      AND sensitivity != 0
      THEN inferred_input =
        (output-offset)/sensitivity

    IF influence_quantity_change_and_cross_sensitivity_known
      THEN estimated_cross_effect =
        cross_sensitivity*influence_change

    IF output_increment_and_sensitivity_known
      AND sensitivity != 0
      THEN nominal_input_resolution =
        output_increment/abs(sensitivity)

    IF first_order_time_constant_known
      THEN predict_sensor_step_response
      under_first_order_model

    IF multi_axis_calibration_matrix_known
      THEN corrected_vector =
        inverse_or_calibrated_mapping(raw_vector-offset)

    IF resistive_sensor_excitation_known
      THEN evaluate_self_heating_risk

    IF sensor_output_saturated_or_overrange
      THEN flag_measurement_invalid_or_lower_bound_context
      according_to_sensor_model

    IF calibration_parameters_have_covariance
      THEN propagate_covariance_to_measurand_uncertainty

    IF compensation_model_or_sensor_configuration_changes
      THEN create_new_sensor_state_version
      and_reassess_measurement_equivalence
  }

  VALIDATION {
    CHECK sensor_identity
    CHECK sensing_principle
    CHECK measurand
    CHECK carrier_or_medium
    CHECK input_output_relation
    CHECK operating_range
    CHECK saturation_and_overload
    CHECK sensitivity
    CHECK cross_sensitivity
    CHECK selectivity
    CHECK resolution
    CHECK threshold
    CHECK linearity
    CHECK hysteresis
    CHECK repeatability
    CHECK drift_and_ageing
    CHECK dynamic_response
    CHECK bandwidth_and_latency
    CHECK noise_and_SNR
    CHECK excitation
    CHECK loading_and_self_heating
    CHECK orientation_and_mounting
    CHECK environmental_influences
    CHECK calibration_and_traceability
    CHECK compensation
    CHECK diagnostic_flags
    CHECK maintenance_state
    CHECK uncertainty
    CHECK provenance
  }

  CONFIDENCE {
    definition_confidence: 1.00
    sensing_principle_confidence: 1.00
    input_output_semantics_confidence: 1.00
    sensitivity_cross_sensitivity_confidence: 1.00
    calibration_semantics_confidence: 1.00
    dynamic_response_confidence: 0.99
    environmental_model_confidence: 0.99
    uncertainty_integration_confidence: 0.99

    RULE:
      confidence decreases when sensor identity, measurand, sensing principle,
      range, calibration, cross-sensitivity, environment,
      orientation, dynamic response, uncertainty or provenance is missing or ambiguous
  }

  UPDATE_MODEL {
    ON sensor_registration:
      assign_sensor_identifier
      record_manufacturer_model_and_serial
      identify_sensing_principle
      attach_measurand_scope
      attach_range_sensitivity_resolution_and_dynamic_characteristics
      establish_calibration_and_provenance

    ON new_sensor_measurement:
      attach_sensor_identifier
      identify_measurand
      preserve_raw_output
      attach_excitation_orientation_mounting_and_environment
      verify_calibration
      apply_calibration_and_compensation
      attach_diagnostics
      attach_uncertainty
      preserve_provenance

    ON calibration_revision:
      preserve_previous_calibration
      update_transfer_coefficients_and_covariance
      update_traceability
      recompute_affected_measurements_when_policy_allows
      update_uncertainty

    ON environmental_model_revision:
      preserve_raw_measurements
      update_cross_sensitivity_or_compensation
      recompute_corrected_values
      update_uncertainty

    ON maintenance_or_replacement:
      preserve_previous_sensor_state
      record_event
      update_health_and_calibration_state
      determine_revalidation_requirement

    ON sensor_configuration_revision:
      preserve_previous_configuration
      update_excitation_range_filter_orientation_or_processing
      create_new_state_version
      reassess_equivalence

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: Sensor
    canonical_role: MeasuringSystemInputElement

    interpretation_order:
      identify_sensor_identity
      identify_sensing_principle
      identify_measurand_and_carrier
      identify_input_output_relation
      identify_raw_output
      identify_range_sensitivity_cross_sensitivity_and_resolution
      identify_selectivity_and_threshold
      identify_static_and_dynamic_response
      identify_noise_excitation_and_environment
      identify_orientation_mounting_and_loading
      identify_calibration_compensation_and_traceability
      identify_diagnostics_and_maintenance_state
      identify_uncertainty
      identify_provenance
      validate_sensor_semantics
      infer_measurand_value

    ambiguity_controls:
      distinguish_sensor_from_measuring_instrument
      distinguish_sensor_from_transducer_when_roles_differ
      distinguish_sensor_from_detector_when_roles_differ
      distinguish_sensitivity_from_resolution
      distinguish_threshold_from_detection_limit
      distinguish_raw_output_signal_from_measured_quantity_value
      distinguish_calibration_from_compensation
      distinguish_nominal_operating_range_from_safe_overload_range
      preserve_identity_principle_measurand_range_calibration_environment_orientation_state_and_provenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_units_instrumentation_and_sensor_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Instrumentation
      -> Sensor Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      sensor_class_model
      measurand_model
      carrier_model
      input_output_model
      static_transfer_model
      sensitivity_model
      cross_sensitivity_model
      selectivity_model
      range_model
      saturation_model
      overload_model
      resolution_model
      threshold_model
      dead_zone_model
      linearity_model
      hysteresis_model
      repeatability_model
      drift_model
      ageing_model
      stability_model
      dynamic_model
      first_order_sensor_model
      second_order_sensor_model
      bandwidth_model
      latency_model
      noise_model
      noise_density_model
      SNR_model
      detection_limit_model
      excitation_model
      self_generating_model
      resistive_sensor_model
      capacitive_sensor_model
      inductive_sensor_model
      piezoelectric_model
      thermoelectric_model
      RTD_model
      thermistor_model
      optical_sensor_model
      photodiode_model
      magnetic_sensor_model
      inertial_sensor_model
      pressure_sensor_model
      flow_sensor_model
      chemical_sensor_model
      electrochemical_sensor_model
      biosensor_model
      humidity_sensor_model
      gas_sensor_model
      particulate_sensor_model
      radiation_sensor_model
      dead_time_model
      spatial_sensor_model
      cross_axis_model
      orientation_model
      loading_effect_model
      self_heating_model
      mounting_model
      environmental_model
      compensation_model
      calibration_model
      zero_calibration_model
      multipoint_calibration_model
      traceability_model
      uncertainty_model
      diagnostic_model
      health_model
      maintenance_model
      metadata_model
      relationships
      constraints
      measurement_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      sensor_identity_or_class_changes
      sensing_principle_or_measurand_changes
      input_output_transfer_model_changes
      range_sensitivity_cross_sensitivity_or_resolution_changes
      dynamic_noise_or_detection_model_changes
      excitation_loading_mounting_or_orientation_changes
      environmental_or_compensation_model_changes
      calibration_or_traceability_changes
      diagnostics_health_or_maintenance_changes
      measurement_record_changes
      uncertainty_model_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

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