Skip to main content

Scaling Ontology

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

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/measurement-mathematics/scaling-ontology-2.html

FLOW ScalingOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Measurement Mathematics
    -> Scaling Ontology

  PURPOSE:
    Represent scaling as the mathematical transformation, comparison and modelling of quantities under changes of magnitude, reference, size, unit, coordinate range or characteristic scale. The ontology models multiplicative scaling, affine scaling, normalisation, nondimensionalisation, similarity transformations, power laws, scale factors, geometric scaling, temporal scaling, amplitude scaling, logarithmic scaling, data rescaling, min-max and standard-score transformations, measurement ranges, calibration scaling, uncertainty and covariance propagation, numerical conditioning, invariance, provenance and machine-consumable reasoning while strictly distinguishing scaling from unit conversion, translation, normalisation, calibration, interpolation and physical growth.

  ENTITY Scaling {
    TYPE: MathematicalTransformationProcess

    DEFINITION:
      transformation_or_relationship
      in_which_quantity_magnitude_coordinate_or_reference_representation
      is_changed_according_to_declared_scale_rule

    PROPERTIES:
      has_input
      has_output
      has_scale_factor_or_function
      may_be_linear
      may_be_affine
      may_be_nonlinear
      may_be_dimensionless
      may_preserve_shape
      may_change_units_or_not
      may_propagate_uncertainty
      has_provenance
  }

  ENTITY ScaleFactor {
    TYPE: MultiplicativeParameter

    SYMBOL:
      k

    GENERIC:
      y =
        k*x

    RULE:
      factor_dimension_and_exactness MUST be defined
  }

  ENTITY CharacteristicScale {
    TYPE: ReferenceQuantity

    PURPOSE:
      provide_reference_magnitude_for_normalisation_or_nondimensionalisation
  }

  TERMINOLOGY_MODEL {
    terms:
      scaling
      scale_factor
      rescaling
      normalisation
      standardisation
      nondimensionalisation
      similarity
      dilation
      magnification
      attenuation
      gain

    RULE:
      term_scale MUST be disambiguated_by_mathematical_context
  }

  MULTIPLICATIVE_SCALING_MODEL {
    input:
      x

    scale_factor:
      k

    output:
      y =
        k*x

    inverse:
      x =
        y/k
      WHEN k != 0

    RULE:
      k=0_is_not_invertible
  }

  AFFINE_SCALING_MODEL {
    output:
      y =
        a*x+b

    inverse:
      x =
        (y-b)/a
      WHEN a != 0

    RULE:
      affine_scaling_combines_scale_and_translation
  }

  TRANSLATION_DISTINCTION_MODEL {
    translation:
      y =
        x+b

    scaling:
      y =
        k*x

    RULE:
      translation != pure_scaling
  }

  NEGATIVE_SCALE_MODEL {
    k < 0

    effect:
      magnitude_scaling_plus_orientation_or_sign_reversal

    RULE:
      negative_scale_factor_changes_orientation_in_geometric_context
  }

  ZERO_SCALE_MODEL {
    k =
      0

    output:
      y =
        0

    RULE:
      zero_scaling_collapses_information_and_is_noninvertible
  }

  UNIT_SCALE_MODEL {
    quantity:
      Q =
        x*u

    rescaled_unit:
      u_prime =
        c*u

    numerical_value:
      x_prime =
        x/c

    RULE:
      unit_rescaling_preserves_underlying_quantity
  }

  UNIT_CONVERSION_DISTINCTION_MODEL {
    unit_conversion:
      changes_quantity_representation_between_units

    mathematical_scaling:
      may_change_quantity_magnitude_or_coordinate_representation

    RULE:
      scaling != unit_conversion_in_general
  }

  SI_PREFIX_MODEL {
    prefix_factor:
      10^n

    examples:
      kilo
      mega
      milli
      micro
      nano

    RULE:
      prefix_scaling_is_exact_when_prefix_definition_is_exact
  }

  BINARY_SCALE_MODEL {
    powers:
      2^n

    examples:
      binary_prefixes
      digital_range_scaling

    RULE:
      binary_and_decimal_scaling MUST be distinguished
  }

  NORMALISATION_MODEL {
    input:
      x

    reference:
      x_ref

    normalized:
      x_star =
        x/x_ref

    REQUIRE:
      x_ref != 0

    RULE:
      normalisation_reference MUST be preserved
  }

  NONDIMENSIONALISATION_MODEL {
    dimensional_quantity:
      X

    characteristic_scale:
      X_c

    dimensionless:
      X_star =
        X/X_c

    REQUIRE:
      same_dimension
      X_c != 0

    RULE:
      nondimensionalisation != arbitrary_numeric_rescaling
  }

  MIN_MAX_SCALING_MODEL {
    source_range:
      [x_min,x_max]

    target_range:
      [a,b]

    transform:
      y =
        a+
        (x-x_min)*(b-a)/(x_max-x_min)

    REQUIRE:
      x_max != x_min

    RULE:
      source_and_target_ranges MUST be preserved
  }

  ZERO_ONE_SCALING_MODEL {
    target:
      [0,1]

    y =
      (x-x_min)/(x_max-x_min)

    REQUIRE:
      x_max != x_min
  }

  MINUS_ONE_ONE_SCALING_MODEL {
    target:
      [-1,1]

    y =
      2*(x-x_min)/(x_max-x_min)-1

    REQUIRE:
      x_max != x_min
  }

  STANDARD_SCORE_MODEL {
    z =
      (x-mu)/sigma

    REQUIRE:
      sigma > 0

    output:
      dimensionless

    RULE:
      population_or_sample_mean_and_SD_context MUST be defined
  }

  STANDARDISATION_DISTINCTION_MODEL {
    statistical_standardisation:
      often_mean_centering_and_SD_scaling

    measurement_standardisation:
      may_have_different_metrological_meaning

    RULE:
      standardisation_term MUST be disambiguated
  }

  MEAN_CENTERING_MODEL {
    y =
      x-mu

    RULE:
      centering_is_translation_not_scaling_by_itself
  }

  ROBUST_SCALING_MODEL {
    possible:
      median_centering
      IQR_scaling
      MAD_scaling

    RULE:
      robust_reference_statistics MUST be preserved
  }

  MAX_ABS_SCALING_MODEL {
    y =
      x/max(abs(x_i))

    REQUIRE:
      max_abs != 0
  }

  VECTOR_NORM_SCALING_MODEL {
    vector:
      x

    normalized:
      x_hat =
        x/||x||

    REQUIRE:
      norm(x) != 0

    RULE:
      norm_definition MUST be declared
  }

  L1_NORMALISATION_MODEL {
    norm:
      ||x||_1 =
        sum(abs(x_i))

    normalized:
      x/||x||_1
  }

  L2_NORMALISATION_MODEL {
    norm:
      ||x||_2 =
        sqrt(sum(x_i^2))

    normalized:
      x/||x||_2
  }

  GEOMETRIC_SCALING_MODEL {
    coordinate:
      r_prime =
        lambda*r

    length_scale:
      lambda

    area_scale:
      lambda^2

    volume_scale:
      lambda^3

    RULE:
      geometric_dimension_determines_power_of_scale_factor
  }

  ISOTROPIC_SCALING_MODEL {
    vector:
      x_prime =
        lambda*x

    RULE:
      same_scale_factor_applied_to_all_spatial_axes
  }

  ANISOTROPIC_SCALING_MODEL {
    vector:
      x_prime =
        S*x

    diagonal:
      S =
        diag(lambda_1,...,lambda_n)

    RULE:
      direction_dependent_scale_factors MUST be preserved
  }

  MATRIX_SCALING_MODEL {
    transformation:
      y =
        S*x

    RULE:
      matrix_scaling_may_include_axis_mixing_if_S_not_diagonal
      and_then_is_more_general_linear_transformation
  }

  HOMOTHETY_MODEL {
    centre:
      c

    transform:
      x_prime =
        c+lambda*(x-c)

    RULE:
      homothety_combines_translation_relative_to_centre_and_uniform_scaling
  }

  SIMILARITY_TRANSFORMATION_MODEL {
    geometric:
      x_prime =
        lambda*R*x+t

    components:
      scale
      rotation_or_reflection
      translation

    RULE:
      similarity_preserves_shape_and_angles_under_Euclidean_context
  }

  AREA_SCALING_MODEL {
    linear_scale:
      lambda

    area:
      A_prime =
        lambda^2*A
      under_isotropic_2D_scaling
  }

  VOLUME_SCALING_MODEL {
    linear_scale:
      lambda

    volume:
      V_prime =
        lambda^3*V
      under_isotropic_3D_scaling
  }

  MASS_SCALING_MODEL {
    geometrically_similar_constant_density_objects:
      mass_prime =
        lambda^3*mass

    RULE:
      requires_constant_density_and_3D_similarity
  }

  SURFACE_VOLUME_MODEL {
    similar_3D_objects:
      surface_area proportional_to L^2
      volume proportional_to L^3

    ratio:
      surface_area/volume proportional_to 1/L

    RULE:
      scaling_relationship_depends_on_geometric_similarity
  }

  ALLOMETRIC_MODEL {
    relation:
      Y =
        a*X^b

    log_form:
      log(Y) =
        log(a)+b*log(X)
      for_positive_X_Y

    RULE:
      exponent_b_must_be_empirically_or_theoretically_supported
  }

  POWER_LAW_MODEL {
    y =
      C*x^alpha

    scaling:
      x -> lambda*x

    then:
      y -> lambda^alpha*y
      when_C_constant

    RULE:
      alpha_is_scaling_exponent
  }

  HOMOGENEOUS_FUNCTION_MODEL {
    f(lambda*x) =
      lambda^k*f(x)

    degree:
      k

    RULE:
      homogeneous_function_has_defined_scaling_degree
  }

  MULTIVARIATE_HOMOGENEITY_MODEL {
    f(lambda^a1*x1,...,lambda^an*xn) =
      lambda^k*f(x1,...,xn)

    RULE:
      weighted_homogeneity_requires_declared_variable_weights
  }

  EULER_HOMOGENEOUS_FUNCTION_MODEL {
    if_f_homogeneous_degree_k:
      sum_i(
        x_i*partial_f/partial_x_i
      ) =
        k*f(x)

    RULE:
      differentiability_required
  }

  SCALE_INVARIANCE_MODEL {
    object_or_relation:
      unchanged_in_form_under_scaling

    generic:
      F(lambda*x) has_same_relevant_structure_as F(x)

    RULE:
      invariance_definition MUST identify_transformation_and_preserved_property
  }

  SELF_SIMILARITY_MODEL {
    structure:
      resembles_itself_across_scales

    possible:
      exact
      statistical

    RULE:
      self_similarity != simple_geometric_magnification
  }

  FRACTAL_SCALING_MODEL {
    measure:
      M(lambda)
      proportional_to
        lambda^D

    D:
      scaling_or_fractal_dimension

    RULE:
      estimation_method_and_scale_range MUST be preserved
  }

  TEMPORAL_SCALING_MODEL {
    time:
      t_prime =
        lambda_t*t

    RULE:
      dynamic_equations_may_require_corresponding_scaling_of_other_variables
  }

  FREQUENCY_SCALING_MODEL {
    if:
      t_prime =
        lambda_t*t

    corresponding_frequency:
      f_prime =
        f/lambda_t

    RULE:
      reciprocal_time_frequency_relationship MUST be preserved
  }

  AMPLITUDE_SCALING_MODEL {
    signal:
      y(t) =
        k*x(t)

    RULE:
      amplitude_scaling_does_not_change_time_axis
  }

  TIME_AXIS_SCALING_MODEL {
    y(t) =
      x(a*t)

    if_abs(a)>1:
      temporal_compression

    if_0<abs(a)<1:
      temporal_expansion

    RULE:
      negative_a_also_reverses_time
  }

  SIGNAL_ENERGY_SCALING_MODEL {
    y(t) =
      k*x(t)

    energy:
      E_y =
        abs(k)^2*E_x
      under_standard_signal_energy_definition
  }

  SIGNAL_POWER_SCALING_MODEL {
    amplitude_scale:
      k

    average_power:
      scales_by_abs(k)^2
      under_standard_power_signal_context
  }

  DECIBEL_SCALING_MODEL {
    amplitude_ratio:
      L =
        20*log10(abs(A))
      under_power_proportional_to_amplitude_squared_context

    power_ratio:
      L =
        10*log10(P_ratio)

    RULE:
      logarithmic_scaling_requires_ratio_and_reference_semantics
  }

  LOG_SCALING_MODEL {
    transform:
      y =
        log_b(x)

    REQUIRE:
      x > 0
      b > 0
      b != 1

    RULE:
      logarithmic_transform != multiplicative_scaling
  }

  EXPONENTIAL_SCALING_MODEL {
    relation:
      y =
        a*b^x

    RULE:
      exponential_growth_is_not_same_as_linear_scale_transformation
  }

  RANGE_SCALING_MODEL {
    instrument_or_data_range:
      map_from_source_interval_to_target_interval

    RULE:
      saturation_and_clipping_outside_range MUST be handled_explicitly
  }

  ADC_SCALING_MODEL {
    raw_code:
      C

    engineering_value:
      X =
        scale*C+offset

    RULE:
      scale_and_offset_are_part_of_channel_calibration_or_encoding
  }

  DIGITAL_IMAGE_SCALING_MODEL {
    spatial:
      resize_coordinates

    intensity:
      rescale_pixel_values

    RULE:
      spatial_scaling_and_intensity_scaling_are_distinct
  }

  IMAGE_RESAMPLING_MODEL {
    new_grid:
      requires_interpolation_or_reconstruction

    RULE:
      geometric_scaling_of_sampled_image_requires_resampling
      and_can_change_information_content
  }

  CALIBRATION_SCALING_MODEL {
    linear_calibration:
      y =
        a*x+b

    RULE:
      calibration_establishes_measurement_relation
      and_is_not_semantically_equivalent_to_scaling
  }

  GAIN_MODEL {
    signal_gain:
      output/input

    RULE:
      gain_is_application_specific_scale_factor
  }

  ATTENUATION_MODEL {
    factor:
      abs(k)<1
      under_positive_magnitude_context

    RULE:
      attenuation_is_scaling_down
  }

  MAGNIFICATION_MODEL {
    image_or_optical_size:
      M =
        image_size/object_size

    RULE:
      magnification_sign_and_orientation_context SHOULD be preserved
  }

  MAP_SCALE_MODEL {
    ratio:
      map_distance/ground_distance

    example:
      1:n

    RULE:
      map_scale_is_ratio_representation_not_generic_numeric_scaling_only
  }

  MODEL_SCALE_MODEL {
    prototype:
      full_scale_system

    model:
      scaled_system

    length_ratio:
      lambda_L

    RULE:
      physical_similarity_may_require_matching_dimensionless_groups_not_only_geometry
  }

  DIMENSIONAL_ANALYSIS_MODEL {
    characteristic_scales:
      used_to_form_dimensionless_variables

    RULE:
      scaling_laws_should_be_dimensionally_consistent
  }

  BUCKINGHAM_PI_MODEL {
    dimensionless_groups:
      support_scale_model_and_similarity

    RULE:
      dimensional_analysis_constrains_but_does_not_uniquely_determine_scaling_function
  }

  REYNOLDS_SCALING_MODEL {
    dynamic_similarity:
      match_Reynolds_number_when_viscous_inertial_balance_relevant

    RULE:
      geometric_scale_change_may_require_velocity_or_fluid_property_adjustment
  }

  FROUDE_SCALING_MODEL {
    dynamic_similarity:
      match_Froude_number_when_gravity_inertial_balance_relevant

    RULE:
      not_all_similarity_numbers_can_always_be_matched_simultaneously
  }

  UNCERTAINTY_SCALING_MODEL {
    y =
      k*x

    if_k_exact:
      u_y =
        abs(k)*u_x

    RULE:
      relative_standard_uncertainty_preserved_for_exact_nonzero_scale
  }

  UNCERTAIN_SCALE_FACTOR_MODEL {
    y =
      k*x

    first_order_variance:
      u_y^2 =
        k^2*u_x^2
        +x^2*u_k^2
        +2*k*x*cov(x,k)

    RULE:
      scale_factor_uncertainty MUST be included_when_k_inexact
  }

  AFFINE_UNCERTAINTY_MODEL {
    y =
      a*x+b

    if_a_b_uncertain:
      propagate_full_covariance_of_x_a_b

    RULE:
      offset_uncertainty_can_dominate_near_zero
  }

  COVARIANCE_SCALING_MODEL {
    vector:
      y =
        A*x

    covariance:
      Sigma_y =
        A*Sigma_x*A_transpose
      when_A_exact

    RULE:
      uncertain_A_requires_parameter_uncertainty_model
  }

  SCALAR_COVARIANCE_MODEL {
    y_i =
      k*x_i

    if_k_exact:
      Cov(y_i,y_j) =
        k^2*Cov(x_i,x_j)
  }

  CORRELATION_MODEL {
    exact_positive_scalar_scaling:
      correlation_structure_preserved

    negative_scaling:
      correlations_between_jointly_scaled_variables_depend_on_signs

    RULE:
      covariance_and_correlation_transform_differently
  }

  ERROR_SCALING_MODEL {
    y =
      k*x

    deterministic_error:
      delta_y =
        k*delta_x
      if_k_exact

    RULE:
      error_and_uncertainty_semantics MUST remain distinct
  }

  RESOLUTION_SCALING_MODEL {
    exact_linear_scale:
      output_resolution =
        abs(k)*input_resolution
      under_direct_resolution_mapping

    RULE:
      downstream_quantisation_or_noise_can_change_effective_resolution
  }

  SIGNIFICANT_FIGURES_MODEL {
    exact_scale:
      does_not_create_or_destroy_measurement_information

    RULE:
      formatting_after_scaling SHOULD preserve_uncertainty_consistent_significant_figures
  }

  ROUNDING_MODEL {
    internal:
      preserve_guard_digits

    final:
      apply_reporting_policy

    RULE:
      repeated_rescaling_and_rounding_can_accumulate_numeric_error
  }

  NUMERICAL_CONDITIONING_MODEL {
    scaling:
      may_improve_or_worsen_numerical_conditioning

    examples:
      rescale_variables_to_similar_magnitudes
      nondimensionalise_equations

    RULE:
      numerical_scaling_does_not_change_underlying_mathematical_problem_when_transformation_is_invertible
  }

  PRECONDITIONING_DISTINCTION_MODEL {
    preconditioning:
      transforms_system_to_improve_numerical_solution

    RULE:
      preconditioning != simple_variable_scaling_in_general
  }

  MACHINE_RANGE_MODEL {
    scaling:
      may_avoid_overflow_or_underflow

    RULE:
      machine_range_management != physical_quantity change
  }

  OVERFLOW_MODEL {
    scaled_value:
      may_exceed_machine_maximum

    RULE:
      overflow_is_computational_limit_not_mathematical_scaling_property
  }

  UNDERFLOW_MODEL {
    scaled_value:
      may_fall_below_machine_range

    RULE:
      underflow != exact_zero
  }

  REVERSIBILITY_MODEL {
    scaling:
      invertible_when_scale_factor_nonzero
      for_pure_multiplicative_case

    affine:
      invertible_when_a_nonzero

    RULE:
      clipping_quantisation_or_rounding_can_make_practical_process_noninvertible
  }

  COMPOSITION_MODEL {
    y =
      k_1*x

    z =
      k_2*y

    combined:
      z =
        (k_2*k_1)*x

    RULE:
      scale_factors_compose_multiplicatively
  }

  AFFINE_COMPOSITION_MODEL {
    y =
      a_1*x+b_1

    z =
      a_2*y+b_2

    combined:
      z =
        (a_2*a_1)*x
        +(a_2*b_1+b_2)
  }

  INVERSE_SCALING_MODEL {
    y =
      k*x

    inverse_factor:
      1/k
      WHEN k != 0
  }

  SCALE_RATIO_MODEL {
    original:
      X

    scaled:
      Y

    ratio:
      k =
        Y/X
      WHEN X != 0

    RULE:
      ratio_is_dimensionless_only_when_X_and_Y_have_same_dimension
  }

  SCALE_ESTIMATION_MODEL {
    paired_data:
      x_i,y_i

    zero_intercept_model:
      y_i approximately_equals
        k*x_i

    least_squares:
      k_hat =
        sum(x_i*y_i)/sum(x_i^2)
      WHEN denominator_nonzero

    RULE:
      uncertainty_and_errors_in_both_variables MAY require_different_estimator
  }

  ROBUST_SCALE_ESTIMATION_MODEL {
    possible:
      median_ratio
      robust_regression
      M_estimator

    RULE:
      estimator_definition MUST be preserved
  }

  LOG_LOG_SCALING_MODEL {
    power_law:
      y =
        C*x^alpha

    transform:
      log(y) =
        log(C)+alpha*log(x)

    RULE:
      log_transform_changes_error_model_and_requires_positive_values
  }

  LOCAL_SCALING_EXPONENT_MODEL {
    alpha(x) =
      d_log_y/d_log_x

    equivalent:
      alpha =
        (x/y)*(dy/dx)
      WHEN x_y_nonzero_and_differentiable

    RULE:
      local_exponent_may_vary_with_scale
  }

  CROSSOVER_SCALE_MODEL {
    system:
      different_scaling_regimes

    crossover:
      characteristic_scale_where_exponent_or_mechanism_changes

    RULE:
      single_power_law_should_not_be_extrapolated_across_unvalidated_regimes
  }

  MULTISCALE_MODEL {
    scales:
      multiple_characteristic_ranges

    RULE:
      model_parameters MAY be_scale_dependent
  }

  SCALE_SPACE_MODEL {
    representation:
      signal_or_image_as_function_of_scale_parameter

    example:
      Gaussian_scale_space

    RULE:
      scale_parameter_and_smoothing_kernel MUST be defined
  }

  COARSE_GRAINING_MODEL {
    process:
      aggregate_fine_scale_information_to_coarser_scale

    RULE:
      coarse_graining_can_be_irreversible_and_change_effective_model
  }

  AGGREGATION_MODEL {
    examples:
      spatial_bin
      temporal_bin
      grouped_measurements

    RULE:
      aggregation != pure_multiplicative_scaling
  }

  SAMPLING_SCALE_MODEL {
    sample_spacing:
      defines_observation_scale

    RULE:
      changing_sample_spacing_can_change_resolvable_structure
  }

  RESOLUTION_SCALE_MODEL {
    physical_resolution:
      smallest_resolvable_feature

    RULE:
      scale_of_representation_and_resolution_are_related_but_distinct
  }

  REFERENCE_SCALE_MODEL {
    reference:
      characteristic_value

    uses:
      normalisation
      nondimensionalisation
      comparison

    RULE:
      reference_scale_source_and_uncertainty SHOULD be preserved
  }

  DYNAMIC_RANGE_SCALING_MODEL {
    mapping:
      input_range_to_output_range

    possible:
      linear
      logarithmic
      nonlinear

    RULE:
      compression_or_clipping_must_be distinguished_from_lossless_scaling
  }

  CLIPPING_MODEL {
    y =
      min(max(k*x,L),U)

    RULE:
      clipping_is_nonlinear_and_information_losing
  }

  SATURATION_MODEL {
    response:
      approaches_or_reaches_limit

    RULE:
      saturation != scaling
      though_scaling_can_push_signal_into_saturation
  }

  QUANTISATION_MODEL {
    scaled_continuous_value:
      mapped_to_discrete_levels

    RULE:
      quantisation != scaling
  }

  INTERPOLATION_DISTINCTION_MODEL {
    interpolation:
      estimates_values_between_samples

    RULE:
      interpolation != scaling
      though rescaling_sampled_data_may_require_interpolation
  }

  PHYSICAL_GROWTH_DISTINCTION_MODEL {
    growth:
      physical_change_over_time

    scaling:
      mathematical relation_or_transformation

    RULE:
      physical_growth != scaling_operation
  }

  CALIBRATION_DISTINCTION_MODEL {
    calibration:
      establishes_relation_between_reference_values_and_indications

    scaling:
      mathematical transformation

    RULE:
      calibration_may_contain_scale_factor_but_is_not_equivalent_to_scaling
  }

  METADATA_MODEL {
    fields:
      scaling_identifier
      input_quantity
      output_quantity
      scale_type
      scale_factor
      offset
      exactness
      reference_scale
      source_range
      target_range
      dimensions
      units
      characteristic_scales
      scaling_exponent
      uncertainty
      covariance
      rounding_policy
      algorithm_version
      provenance

    RULE:
      scaling_metadata MUST support_reconstruction_and_inverse_when_possible
  }

  RELATIONSHIPS {
    Scaling -> TRANSFORMS -> QuantityOrRepresentation
    Scaling -> USES -> ScaleFactor
    Normalisation -> USES -> ReferenceScale
    Nondimensionalisation -> PRODUCES -> DimensionlessQuantity
    GeometricScaling -> CHANGES -> LengthScale
    LengthScale -> DETERMINES -> AreaAndVolumeScale
    PowerLaw -> HAS -> ScalingExponent
    SimilarityTransformation -> CONTAINS -> Scaling
    Scaling -> PROPAGATES -> MeasurementUncertainty
    Scaling -> MAY_AFFECT -> NumericalConditioning
  }

  SEMANTIC_EQUIVALENCE {
    "scaling" ~= magnitude_or_reference_scale_transformation WHEN mathematical_context
    "scale factor" ~= multiplicative_factor
    "rescaling" ~= transformation_to_new_scale WHEN declared_context

    scaling != unit_conversion
    scaling != translation
    scaling != calibration
    scaling != interpolation
    scaling != quantisation
    scaling != physical_growth
    normalisation != nondimensionalisation_in_all_contexts
    standardisation != calibration
    scale_invariance != constant_value
  }

  CONSTRAINTS {
    scaling_type_must_be_defined = true
    scale_factor_dimension_and_exactness_should_be_defined = true
    inverse_requires_nonzero_multiplicative_scale = true
    affine_inverse_requires_nonzero_scale_coefficient = true
    nondimensionalisation_requires_dimensionally_compatible_reference_scale = true
    min_max_scaling_requires_nonzero_source_range = true
    standard_score_requires_positive_nonzero_scale_parameter = true
    uncertainty_must_be_propagated_when_measurement_values_are_scaled = true
    clipping_saturation_and_quantisation_must_be_distinguished_from_scaling = true
    scaling_and_unit_conversion_are_not_semantically_equivalent = true
    provenance_must_be_preserved = true
  }

  MEASUREMENT_MODEL {
    RECORD:
      scaling_identifier
      input_value
      input_unit
      input_dimension
      output_value
      output_unit
      output_dimension
      scaling_type
      scale_factor
      scale_factor_unit
      offset
      exactness
      reference_scale
      source_range
      target_range
      characteristic_scales
      scaling_exponent
      input_uncertainty
      scale_uncertainty
      covariance
      output_uncertainty
      rounding_mode
      algorithm_version
      transformation_history
      provenance

    RULE:
      scaled_result MUST remain_linked_to_original_value_transformation_parameters_and_uncertainty
  }

  REASONING_RULES {
    IF multiplicative_scale_factor_known
      THEN output =
        scale_factor*input

    IF multiplicative_scale_factor_nonzero
      THEN inverse_input =
        output/scale_factor

    IF affine_scale_known
      THEN output =
        a*input+b

    IF nondimensionalising
      THEN require_same_dimension(input,reference_scale)
      AND reference_scale != 0
      AND output =
        input/reference_scale

    IF min_max_scaling
      AND source_max != source_min
      THEN map_linearly_to_target_range

    IF geometric_isotropic_scale_lambda
      THEN length_scales_by lambda
      area_scales_by lambda^2
      volume_scales_by lambda^3

    IF power_law_y_equals_C_x_to_alpha
      AND x_scaled_by_lambda
      THEN y_scales_by lambda^alpha
      under_same_C_and_regime

    IF exact_scale_factor
      THEN output_uncertainty =
        abs(k)*input_uncertainty

    IF scale_factor_uncertain
      THEN propagate_input_scale_and_covariance_uncertainty

    IF vector_linear_scaling_matrix_known
      THEN output_covariance =
        A*input_covariance*A_transpose
      when_A_exact

    IF scaling_pushes_value_beyond_output_range
      THEN flag_clipping_or_saturation_risk
      rather_than_assume_linear_response

    IF sampled_data_geometrically_rescaled
      THEN identify_required_resampling_or_interpolation
      and_preserve_information_loss_context

    IF multiple_scaling_operations_composed
      THEN combine_parameters_when_algebraically_valid
      and_preserve_full_precision_before_final_rounding
  }

  VALIDATION {
    CHECK scaling_type
    CHECK input_and_output_quantities
    CHECK units_and_dimensions
    CHECK scale_factor
    CHECK factor_exactness
    CHECK offset_for_affine_scaling
    CHECK invertibility
    CHECK reference_scale
    CHECK source_and_target_ranges
    CHECK min_max_denominator
    CHECK standard_score_scale
    CHECK geometric_power_relationships
    CHECK scaling_exponent
    CHECK similarity_context
    CHECK uncertainty_and_covariance
    CHECK clipping_saturation_or_quantisation
    CHECK numerical_conditioning
    CHECK rounding
    CHECK transformation_history
    CHECK provenance
  }

  CONFIDENCE {
    definition_confidence: 1.00
    multiplicative_scaling_confidence: 1.00
    affine_scaling_confidence: 1.00
    normalisation_confidence: 1.00
    geometric_scaling_confidence: 1.00
    power_law_scaling_confidence: 0.99
    uncertainty_propagation_confidence: 0.99
    multiscale_model_confidence: 0.98

    RULE:
      confidence decreases when scaling type, factor, reference scale,
      dimensions, range, scaling regime, uncertainty,
      algorithm or provenance is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_scaling_operation:
      identify_input_and_output
      classify_scaling_type
      attach_factor_offset_or_reference_scale
      validate_dimensions_and_domain
      transform_value
      propagate_uncertainty
      preserve_provenance

    ON scale_factor_revision:
      preserve_previous_factor
      update_factor_exactness_and_uncertainty
      recompute_outputs
      preserve_previous_results

    ON reference_scale_revision:
      preserve_previous_reference
      update_characteristic_scale
      recompute_normalised_or_dimensionless_values
      update_uncertainty

    ON scaling_regime_revision:
      preserve_previous_power_law_or_multiscale_model
      update_exponent_or_crossover_scale
      recompute_predictions
      record_validity_range

    ON algorithm_revision:
      preserve_input_data
      update_resampling_normalisation_or_scaling_algorithm
      version_transformation
      compare_outputs

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: Scaling
    canonical_role: MathematicalTransformationProcess

    interpretation_order:
      identify_input_and_output
      identify_scaling_type
      identify_scale_factor_and_offset
      identify_units_and_dimensions
      identify_reference_or_characteristic_scale
      identify_source_and_target_ranges
      identify_geometric_or_temporal_scale
      identify_power_law_exponent_or_similarity_context
      identify_uncertainty_and_covariance
      identify_clipping_quantisation_or_resampling
      identify_numerical_conditioning
      identify_algorithm_and_rounding
      identify_provenance
      validate_scaling_semantics
      apply_or_infer_scaling_relationship

    ambiguity_controls:
      distinguish_scaling_from_unit_conversion
      distinguish_scaling_from_translation
      distinguish_scaling_from_calibration
      distinguish_scaling_from_interpolation
      distinguish_scaling_from_quantisation
      distinguish_scaling_from_physical_growth
      distinguish_normalisation_from_nondimensionalisation
      distinguish_statistical_standardisation_from_metrological_standardisation
      distinguish_scale_invariance_from_constant_numeric_value
      preserve_input_output_factor_reference_dimension_regime_uncertainty_algorithm_and_provenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_units_measurement_mathematics_and_scaling_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Measurement Mathematics
      -> Scaling Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      terminology_model
      multiplicative_scaling_model
      affine_scaling_model
      translation_distinction_model
      negative_scale_model
      zero_scale_model
      unit_scale_model
      unit_conversion_distinction_model
      SI_prefix_model
      binary_scale_model
      normalisation_model
      nondimensionalisation_model
      min_max_scaling_model
      zero_one_scaling_model
      minus_one_one_scaling_model
      standard_score_model
      standardisation_distinction_model
      mean_centering_model
      robust_scaling_model
      max_abs_scaling_model
      vector_norm_scaling_model
      L1_normalisation_model
      L2_normalisation_model
      geometric_scaling_model
      isotropic_scaling_model
      anisotropic_scaling_model
      matrix_scaling_model
      homothety_model
      similarity_transformation_model
      area_scaling_model
      volume_scaling_model
      mass_scaling_model
      surface_volume_model
      allometric_model
      power_law_model
      homogeneous_function_model
      multivariate_homogeneity_model
      Euler_homogeneous_function_model
      scale_invariance_model
      self_similarity_model
      fractal_scaling_model
      temporal_scaling_model
      frequency_scaling_model
      amplitude_scaling_model
      time_axis_scaling_model
      signal_energy_scaling_model
      signal_power_scaling_model
      decibel_scaling_model
      log_scaling_model
      exponential_scaling_model
      range_scaling_model
      ADC_scaling_model
      digital_image_scaling_model
      image_resampling_model
      calibration_scaling_model
      gain_model
      attenuation_model
      magnification_model
      map_scale_model
      model_scale_model
      dimensional_analysis_model
      Buckingham_Pi_model
      Reynolds_scaling_model
      Froude_scaling_model
      uncertainty_scaling_model
      uncertain_scale_factor_model
      affine_uncertainty_model
      covariance_scaling_model
      scalar_covariance_model
      correlation_model
      error_scaling_model
      resolution_scaling_model
      significant_figures_model
      rounding_model
      numerical_conditioning_model
      preconditioning_distinction_model
      machine_range_model
      overflow_model
      underflow_model
      reversibility_model
      composition_model
      affine_composition_model
      inverse_scaling_model
      scale_ratio_model
      scale_estimation_model
      robust_scale_estimation_model
      log_log_scaling_model
      local_scaling_exponent_model
      crossover_scale_model
      multiscale_model
      scale_space_model
      coarse_graining_model
      aggregation_model
      sampling_scale_model
      resolution_scale_model
      reference_scale_model
      dynamic_range_scaling_model
      clipping_model
      saturation_model
      quantisation_model
      interpolation_distinction_model
      physical_growth_distinction_model
      calibration_distinction_model
      metadata_model
      relationships
      semantic_equivalence
      constraints
      measurement_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      multiplicative_or_affine_scaling_changes
      normalisation_or_reference_scale_changes
      geometric_similarity_or_power_law_changes
      temporal_signal_or_logarithmic_scaling_changes
      calibration_range_or_data_scaling_changes
      uncertainty_or_covariance_model_changes
      numerical_conditioning_or_machine_range_changes
      multiscale_or_crossover_model_changes
      transformation_algorithm_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