Skip to main content

Heat Capacity Ontology

Thermal Measurements
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 15 September 2026
Audio Overview
# Heat Capacity Ontology — Flow Algebra

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/thermal-measurements/heat-capacity-ontology.html

FLOW HeatCapacityOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Thermal Measurements
    -> Heat Capacity Ontology

  PURPOSE:
    Represent heat capacity as a measurable thermal quantity describing the amount of energy transfer required to produce a specified temperature change in a body or system under defined thermodynamic constraints, including total and specific heat capacity, molar heat capacity, constant-pressure and constant-volume forms, temperature dependence, calorimetry, phase effects, units, dimensional structure, uncertainty, and distinctions from heat, temperature and thermal conductivity.

  ENTITY HeatCapacity {
    TYPE: DerivedThermalQuantity
    SYMBOL: C
    DIMENSION: M * L^2 * T^-2 * Theta^-1
    SI_UNIT: joule_per_kelvin
    SI_SYMBOL: J/K

    DIFFERENTIAL_DEFINITION:
      C = delta_Q/dT
      UNDER specified_process_constraint

    FINITE_CONSTANT_APPROXIMATION:
      Q = C*delta_T

    PROPERTIES:
      is_scalar
      is_extensive
      has_value
      has_unit
      has_dimension
      depends_on_system_mass_and_composition
      may_depend_on_temperature
      may_depend_on_pressure
      depends_on_process_constraint
      may_change_with_phase
      may_have_uncertainty
  }

  ENTITY SpecificHeatCapacity {
    TYPE: IntensiveMaterialProperty
    SYMBOL: c
    DIMENSION: L^2*T^-2*Theta^-1
    SI_UNIT: joule_per_kilogram_kelvin
    SI_SYMBOL: J/(kg*K)

    RELATION:
      C = m*c
      UNDER homogeneous_or_effectively_uniform_context
  }

  ENTITY MolarHeatCapacity {
    TYPE: MolarThermalProperty
    SYMBOL: C_m
    SI_UNIT: joule_per_mole_kelvin
    SI_SYMBOL: J/(mol*K)

    RELATION:
      C = n*C_m
  }

  ENTITY Heat {
    TYPE: EnergyTransferQuantity
    SYMBOL: Q
    SI_UNIT: joule
    SI_SYMBOL: J

    RELATION:
      heat_transfer_and_temperature_change -> heat_capacity
  }

  ENTITY Temperature {
    TYPE: SIBaseQuantity
    SYMBOL: T
    SI_UNIT: kelvin
    SI_SYMBOL: K
  }

  UNIT_SYSTEM {
    SI {
      canonical_unit: joule_per_kelvin
      symbol: J/K
    }

    COMMON_ALTERNATIVES:
      kilojoule_per_kelvin
      calorie_per_degree_Celsius
      British_thermal_unit_per_degree_Fahrenheit

    TEMPERATURE_INTERVAL_RULE:
      delta_1_K = delta_1_degree_Celsius

    CONVERSION_RULE:
      heat_capacity_value(target_unit)
        = heat_capacity_value(source_unit)
        * conversion_factor(source_unit, target_unit)
  }

  CLASSIFICATION {
    by system basis:
      total_heat_capacity
      specific_heat_capacity
      molar_heat_capacity

    by thermodynamic constraint:
      heat_capacity_at_constant_pressure
      heat_capacity_at_constant_volume

    by behaviour:
      constant_heat_capacity_approximation
      temperature_dependent_heat_capacity
      effective_heat_capacity
  }

  CONSTANT_PRESSURE_VOLUME_MODEL {
    CONSTANT_PRESSURE:
      C_p = (partial_H/partial_T)_p

    CONSTANT_VOLUME:
      C_v = (partial_U/partial_T)_V

    FOR_IDEAL_GAS:
      C_p - C_v = n*R
      FOR total_molar_amount_n

    MOLAR_IDEAL_GAS:
      C_p_molar - C_v_molar = R

    RULE:
      C_p_and_C_v MUST_NOT be treated_as_interchangeable
  }

  SPECIFIC_HEAT_MODEL {
    TOTAL_TO_SPECIFIC:
      c = C/m
      WHEN m != 0

    SPECIFIC_TO_TOTAL:
      C = m*c

    SENSIBLE_HEAT:
      Q = m*c*delta_T
      WHEN c approximately_constant

    GENERAL:
      Q = m*integral(c(T) dT)

    RULE:
      heat_capacity_is_extensive
      specific_heat_capacity_is_intensive
  }

  MOLAR_MODEL {
    TOTAL_TO_MOLAR:
      C_m = C/n
      WHEN n != 0

    MOLAR_TO_TOTAL:
      C = n*C_m

    GENERAL_HEAT:
      Q = n*integral(C_m(T) dT)
      UNDER applicable_process_constraint
  }

  TEMPERATURE_DEPENDENCE_MODEL {
    GENERAL:
      C = C(T, p, composition, phase, constraint)

    CONSTANT_APPROXIMATION:
      Q approximately_equals C*delta_T
      WHEN C_variation_is_negligible

    VARIABLE:
      Q = integral_T1_to_T2(C(T) dT)

    RULE:
      large_temperature_ranges SHOULD use_temperature_dependent_heat_capacity_when_material
  }

  PHASE_CHANGE_MODEL {
    near_phase_transition:
      apparent_or_effective_heat_capacity MAY become_large_or_singular_in_idealised_models

    latent_heat:
      energy_transfer_can_occur_without_corresponding_simple_temperature_change

    RULE:
      Q = C*delta_T MUST_NOT be used_across_phase_change_without_appropriate_phase_model
  }

  CALORIMETRY_MODEL {
    SIMPLE_INFERENCE:
      C = Q/delta_T
      WHEN delta_T != 0 AND applicable_process_defined

    CALORIMETER_SYSTEM:
      C_total =
        C_sample
        + C_container
        + C_sensor
        + other_effective_components

    ENERGY_BALANCE:
      heat_lost + heat_gained + corrections = 0
      UNDER consistent_sign_convention

    REQUIRE:
      initial_temperature
      final_temperature
      system_boundary
      heat_losses_or_corrections
  }

  THERMODYNAMIC_MODEL {
    ENTHALPY_RELATION:
      C_p = (partial_H/partial_T)_p

    INTERNAL_ENERGY_RELATION:
      C_v = (partial_U/partial_T)_V

    STABILITY_CONTEXT:
      equilibrium_heat_capacities_are_typically_nonnegative
      for_stable_macroscopic_systems_under_standard_conditions

    RULE:
      derivative_definition MUST identify_held_constant_variables
  }

  RELATIONSHIPS {
    HeatCapacity -> RELATES -> HeatAndTemperatureChange
    HeatCapacity -> HAS_DIMENSION -> M*L^2*T^-2*Theta^-1
    HeatCapacity -> MEASURED_IN -> JoulePerKelvin
    HeatCapacity -> DEPENDS_ON -> SystemMass
    HeatCapacity -> DEPENDS_ON -> Composition
    HeatCapacity -> MAY_DEPEND_ON -> Temperature
    HeatCapacity -> MAY_DEPEND_ON -> Pressure
    HeatCapacity -> DEPENDS_ON -> ThermodynamicConstraint
    SpecificHeatCapacity -> RELATES_TO -> HeatCapacityPerMass
    MolarHeatCapacity -> RELATES_TO -> HeatCapacityPerMole
    PhaseTransition -> MAY_ALTER -> HeatCapacity
  }

  SEMANTIC_EQUIVALENCE {
    "thermal capacity" ~= heat_capacity WHEN thermal_context
    "joule per kelvin" ~= "J/K"

    heat_capacity != heat
    heat_capacity != temperature
    heat_capacity != specific_heat_capacity
    heat_capacity != thermal_conductivity
    heat_capacity != latent_heat
    C_p != C_v
  }

  CONSTRAINTS {
    dimensional_formula = M*L^2*T^-2*Theta^-1
    SI_unit = J/K
    heat_capacity_is_extensive = true
    specific_heat_capacity_is_intensive = true
    process_constraint_must_be_identified_when_thermodynamically_relevant = true
    finite_ratio_Q_over_delta_T_requires_nonzero_temperature_change = true
    heat_capacity_and_heat_are_not_semantically_equivalent = true
    heat_capacity_and_specific_heat_capacity_are_not_semantically_equivalent = true
    phase_change_requires_special_treatment = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      HeatCapacity

    COMMON_METHODS:
      calorimetry
      differential_scanning_calorimetry
      adiabatic_calorimetry
      relaxation_calorimetry
      AC_calorimetry

    RECORD:
      numerical_value
      unit
      total_specific_or_molar_basis
      constant_pressure_or_constant_volume
      sample_mass
      amount_of_substance
      composition
      phase
      initial_temperature
      final_temperature
      pressure
      heat_input
      system_boundary
      measurement_method
      instrument
      calibration_state
      heat_loss_correction
      uncertainty

    UNCERTAINTY:
      measured_or_inferred_heat_capacity = best_estimate +/- uncertainty
  }

  REASONING_RULES {
    IF heat_transfer_known AND temperature_change_known AND temperature_change != 0
      AND applicable_constant_capacity_process
      THEN heat_capacity = heat_transfer/temperature_change

    IF heat_capacity_known AND temperature_change_known
      AND constant_capacity_approximation_valid
      THEN heat_transfer = heat_capacity*temperature_change

    IF specific_heat_capacity_known AND mass_known
      THEN total_heat_capacity = mass*specific_heat_capacity

    IF total_heat_capacity_known AND mass_known AND mass != 0
      THEN specific_heat_capacity = total_heat_capacity/mass

    IF molar_heat_capacity_known AND amount_of_substance_known
      THEN total_heat_capacity = amount_of_substance*molar_heat_capacity

    IF temperature_dependent_heat_capacity_known
      THEN sensible_heat =
        integral_T1_to_T2(heat_capacity(T) dT)

    IF ideal_gas_context AND amount_of_substance_known
      THEN C_p - C_v = amount_of_substance*gas_constant

    IF phase_change_occurs
      THEN do_not_infer_heat_using_only_C_times_delta_T
      WITHOUT phase_transition_energy_model
  }

  SYSTEM_CONTEXT_MODEL {
    REQUIRE:
      system_identity
      mass_or_amount
      composition
      phase
      pressure
      temperature_range
      process_constraint

    RULE:
      heat_capacity_value without_system_basis_and_conditions
      MAY be semantically_incomplete
  }

  UNCERTAINTY_MODEL {
    sources:
      heat_input_measurement
      temperature_measurement
      sample_mass
      amount_of_substance
      calorimeter_addenda
      heat_loss
      pressure
      composition
      phase purity
      calibration
      baseline_correction
      temperature_nonuniformity

    PROPAGATION:
      derived_heat_capacity_uncertainty
      <- thermal_energy_temperature_sample_and_model_uncertainties
  }

  CONFIDENCE {
    definition_confidence: 1.00
    dimensional_confidence: 1.00
    SI_unit_confidence: 1.00
    thermodynamic_relationship_confidence: 0.99
    calorimetric_relationship_confidence: 0.99
    measurement_context_confidence: 0.98

    RULE:
      confidence decreases when basis, mass, composition, phase,
      temperature range, pressure, process constraint,
      calibration state or uncertainty is missing or ambiguous
  }

  VALIDATION {
    CHECK dimensional_consistency
    CHECK unit_consistency
    CHECK total_specific_or_molar_basis
    CHECK nonzero_mass_or_amount_for_normalised_quantities
    CHECK nonzero_temperature_change_for_finite_ratio
    CHECK constant_pressure_vs_constant_volume
    CHECK heat_capacity_vs_specific_heat_capacity_distinction
    CHECK heat_capacity_vs_heat_distinction
    CHECK phase_change_context
    CHECK temperature_dependence
    CHECK system_boundary
    CHECK calorimeter_addenda_and_heat_losses
    CHECK instrument_calibration
    CHECK uncertainty_representation_when_required
  }

  UPDATE_MODEL {
    ON new_measurement:
      validate_unit
      identify_total_specific_or_molar_basis
      identify_process_constraint
      attach_sample_mass_or_amount
      attach_composition_and_phase
      attach_temperature_range
      attach_pressure
      identify_measurement_method
      normalize_to_J_per_K_when_total_capacity
      preserve_original_value_and_unit
      attach_uncertainty
      update_heat_capacity_state

    ON temperature_or_pressure_change:
      update_state_conditions
      recompute_heat_capacity_when_model_available
      preserve_previous_state

    ON phase_change:
      record_phase_transition
      suspend_simple_C_delta_T_model_when_invalid
      apply_latent_or_transition_model
      preserve_transition_provenance

    ON composition_or_mass_change:
      update_system_basis
      recompute_total_specific_or_molar_relationships
      preserve_previous_system_definition

    ON calibration_revision:
      preserve_provenance
      recompute_affected_measurements
      update_confidence

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: HeatCapacity
    canonical_symbol: C
    canonical_dimension: M*L^2*T^-2*Theta^-1
    canonical_SI_unit: J/K

    interpretation_order:
      identify_quantity
      identify_value
      identify_unit
      identify_total_specific_or_molar_basis
      identify_constant_pressure_or_constant_volume
      identify_mass_or_amount
      identify_composition_and_phase
      identify_temperature_range
      identify_pressure
      identify_heat_transfer_context
      identify_phase_change_context
      identify_measurement_method
      identify_uncertainty
      normalize_units
      validate_dimensions
      infer_thermal_relationships

    ambiguity_controls:
      distinguish_heat_capacity_from_heat
      distinguish_heat_capacity_from_temperature
      distinguish_heat_capacity_from_specific_heat_capacity
      distinguish_heat_capacity_from_molar_heat_capacity
      distinguish_heat_capacity_from_thermal_conductivity
      distinguish_C_p_from_C_v
      distinguish_sensible_heating_from_phase_change
      preserve_system_basis_process_constraint_and_state_conditions
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_thermal_heat_capacity_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Thermal Measurements
      -> Heat Capacity Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      definitions
      dimensions
      units
      relationships
      constraints
      constant_pressure_volume_model
      specific_heat_model
      molar_model
      temperature_dependence_model
      phase_change_model
      calorimetry_model
      thermodynamic_model
      system_context_model
      uncertainty_model
      reasoning_rules
      measurement_model
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      heat_capacity_basis_changes
      thermodynamic_constraint_model_changes
      temperature_dependence_model_changes
      phase_change_model_changes
      calorimetry_model_changes
      system_context_changes
      measurement_model_changes
      constraint_model_changes
      reasoning_rule_changes
      unit_model_changes
  }

}

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