Skip to main content

Orbital Period Ontology

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

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/astronomical-measurements/orbital-period-ontology.html

FLOW OrbitalPeriodOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Astronomical Measurements
    -> Orbital Period Ontology

  PURPOSE:
    Represent orbital period as the time required for an orbiting body or system to complete a defined orbital cycle relative to a declared reference frame, including sidereal, synodic, anomalistic and draconitic periods, Keplerian relationships, mean motion, semimajor axis, central and total system mass, binary systems, exoplanets, satellites, observational period determination, transit and radial-velocity periodicity, perturbations, reference epochs, calibration, uncertainty, provenance, and strict distinctions between orbital period, rotation period, recurrence interval and observed periodic signal.

  ENTITY OrbitalPeriod {
    TYPE: AstronomicalTimeQuantity
    SYMBOL: P
    DIMENSION: T
    SI_UNIT: second
    SI_SYMBOL: s

    DEFINITION:
      orbital_period :=
        elapsed_time_required_for_defined_orbital_phase
        to_repeat_relative_to_declared_reference

    PROPERTIES:
      is_positive
      depends_on_period_definition
      depends_on_reference_frame
      may_be_constant_in_ideal_two_body_model
      may_change_under_perturbation_or_evolution
      may_be_measured_or_inferred
      may_have_uncertainty
  }

  ENTITY SiderealPeriod {
    TYPE: OrbitalPeriod

    DEFINITION:
      orbital_period_relative_to_inertial_or_distant_star_reference
  }

  ENTITY SynodicPeriod {
    TYPE: OrbitalPeriod

    DEFINITION:
      recurrence_period_of_relative_configuration_between_orbiting_objects
      as_seen_from_declared_observer_or_reference
  }

  ENTITY AnomalisticPeriod {
    TYPE: OrbitalPeriod

    DEFINITION:
      time_between_successive_passages_through_periapsis
  }

  ENTITY DraconiticPeriod {
    TYPE: OrbitalPeriod

    DEFINITION:
      time_between_successive_passages_through_same_orbital_node
  }

  UNIT_SYSTEM {
    SI:
      second

    common:
      minute
      hour
      day
      Julian_year

    conversions:
      1 minute = 60 s
      1 hour = 3600 s
      1 day = 86400 s
      1 Julian_year = 31557600 s

    RULE:
      preserve_original_time_unit_and_normalized_SI_value
  }

  PERIOD_TYPE_MODEL {
    possible_types:
      sidereal
      synodic
      anomalistic
      draconitic
      tropical_or_context_specific
      osculating_Keplerian_period

    RULE:
      orbital_period_type MUST be identified_when_precision_or_precession_is_material
  }

  KEPLER_TWO_BODY_MODEL {
    relation:
      P^2 =
        4*pi^2*a^3/
        (G*(M_1+M_2))

    equivalent:
      P =
        2*pi*sqrt(
          a^3/(G*(M_1+M_2))
        )

    REQUIRE:
      semimajor_axis > 0
      total_mass > 0
      approximately_two_body_Keplerian_context

    RULE:
      use_relative_orbit_semimajor_axis_for_two_body_total_mass_relation
  }

  CENTRAL_MASS_APPROXIMATION_MODEL {
    condition:
      m_orbiting << M_central

    approximation:
      P approximately_equals
        2*pi*sqrt(
          a^3/(G*M_central)
        )

    RULE:
      approximation_validity_depends_on_mass_ratio
  }

  KEPLER_THIRD_LAW_MODEL {
    same_central_mass:
      P^2 proportional_to a^3

    ratio:
      (P_1/P_2)^2 =
        (a_1/a_2)^3
      under_same_effective_central_mass

    RULE:
      proportional_relation_requires_compatible_system_mass
  }

  SOLAR_SYSTEM_UNIT_MODEL {
    approximate_classical_form:
      P_years^2 approximately_equals a_au^3
      for_small_body_orbiting_Sun
      under_solar_mass_dominance_and_consistent_units

    RULE:
      simplified_form_is_not_universal_for_arbitrary_system_mass
  }

  MEAN_MOTION_MODEL {
    mean_motion:
      n =
        2*pi/P

    inverse:
      P =
        2*pi/n
      WHEN n != 0

    units:
      rad/s
      rad/day
      degree/day

    RULE:
      mean_motion_is_angular_rate_not_period
  }

  ORBITAL_FREQUENCY_MODEL {
    frequency:
      f_orb =
        1/P

    angular_frequency:
      omega_orb =
        2*pi/P

    RULE:
      frequency_and_period_are_reciprocal_quantities
  }

  SEMIMAJOR_AXIS_MODEL {
    symbol:
      a
    DIMENSION:
      L

    inverse_from_period_and_mass:
      a =
        (
          G*(M_1+M_2)*P^2/
          (4*pi^2)
        )^(1/3)

    RULE:
      semimajor_axis != instantaneous_separation
  }

  MASS_INFERENCE_MODEL {
    total_mass:
      M_total =
        4*pi^2*a^3/
        (G*P^2)

    REQUIRE:
      P > 0
      a > 0
      correct_relative_orbit_geometry

    RULE:
      inferred_mass_depends_on_orbital_scale_and_geometry
  }

  SYNODIC_PERIOD_MODEL {
    circular_coplanar_rate_relation:
      1/P_syn =
        abs(
          1/P_1 - 1/P_2
        )

    REQUIRE:
      P_1 > 0
      P_2 > 0
      compatible_sidereal_periods
      simple_relative_angular_motion_context

    RULE:
      synodic_period != sidereal_period
  }

  PRECESSION_MODEL {
    apsidal_precession:
      changes_periapsis_direction

    nodal_precession:
      changes_orbital_node

    consequence:
      anomalistic_draconitic_and_sidereal_periods_can_differ

    RULE:
      precessing_orbits_require_period_type_specific_semantics
  }

  ECCENTRIC_ORBIT_MODEL {
    period:
      depends_on_semimajor_axis_and_system_mass
      not_directly_on_eccentricity
      in_ideal_Newtonian_two_body_problem

    instantaneous_speed:
      varies_along_orbit

    RULE:
      varying_orbital_speed_does_not_imply_varying_Keplerian_period_within_same_fixed_orbit
  }

  BINARY_SYSTEM_MODEL {
    bodies:
      M_1
      M_2

    relative_orbit:
      semimajor_axis =
        a_1+a_2

    period:
      shared_orbital_period_about_barycentre

    barycentric_relation:
      M_1*a_1 =
        M_2*a_2

    RULE:
      component_and_relative_semimajor_axes MUST be distinguished
  }

  EXOPLANET_MODEL {
    observables:
      transit_times
      radial_velocity
      astrometry
      direct_imaging_positions

    inferred:
      orbital_period

    RULE:
      observed_periodicity_requires_orbital_interpretation_before_being_labelled_orbital_period
  }

  TRANSIT_PERIOD_MODEL {
    transit_times:
      t_k

    linear_ephemeris:
      t_k =
        T_0 + k*P

    inferred:
      P from_slope_of_transit_epoch_vs_cycle_number

    RULE:
      transit_period_can_differ_from_simple_constant_ephemeris_under_TTVs_or_precession
  }

  TRANSIT_TIMING_VARIATION_MODEL {
    observed_minus_calculated:
      O_minus_C =
        t_observed -
        (T_0+k*P_reference)

    causes:
      additional_bodies
      orbital_decay
      apsidal_precession
      dynamical_interactions

    RULE:
      TTV_signal_requires_dynamical_model_for_period_evolution_interpretation
  }

  RADIAL_VELOCITY_PERIOD_MODEL {
    radial_velocity:
      v_r(t)

    Keplerian_signal:
      periodic_with_orbital_period
      under_single_orbit_model

    RULE:
      aliases_stellar_activity_and_sampling_window_can_mimic_or_modify_periodicity
  }

  ASTROMETRIC_ORBIT_MODEL {
    position:
      sky_projected_orbit_as_function_of_time

    inferred:
      period
      semimajor_axis
      inclination
      node
      eccentricity

    RULE:
      astrometric_period_fit_requires_reference_frame_and_motion_model
  }

  DIRECT_IMAGING_MODEL {
    repeated_positions:
      relative_astrometry_over_time

    inferred:
      orbital_elements_and_period

    RULE:
      short_orbital_arc_can_produce_large_period_uncertainty
  }

  ECLIPSE_BINARY_MODEL {
    light_curve:
      periodic_eclipses

    orbital_period:
      interval_for_orbital_configuration_repeat

    RULE:
      primary_to_secondary_eclipse_interval_is_not_generally_full_orbital_period
  }

  ROTATION_DISTINCTION_MODEL {
    rotation_period:
      time_for_body_to_rotate_about_its_axis

    orbital_period:
      time_for_body_to_complete_orbital_cycle

    RULE:
      rotation_period != orbital_period
  }

  RESONANCE_MODEL {
    period_ratio:
      P_2/P_1

    mean_motion_resonance:
      ratio_near_small_integer_relation

    RULE:
      resonance_classification_requires_defined_periods_and_tolerance
  }

  PERTURBATION_MODEL {
    causes:
      additional_bodies
      oblateness
      tides
      relativity
      drag
      mass_loss
      radiation_forces

    effects:
      orbital_elements_and_period_may_evolve

    RULE:
      osculating_period_may_change_with_epoch
  }

  ORBITAL_DECAY_MODEL {
    period_derivative:
      P_dot =
        dP/dt

    finite:
      P_dot approximately_equals
        (P_2-P_1)/(t_2-t_1)

    RULE:
      period_derivative_is_rate_quantity_not_period
  }

  EPHEMERIS_MODEL {
    linear:
      phase_or_event_time =
        T_0 + N*P

    quadratic:
      MAY include_period_change_term

    REQUIRE:
      reference_epoch
      cycle_number
      time_standard

    RULE:
      ephemeris_and_orbital_period_are_related_but_not_identical
  }

  TIME_STANDARD_MODEL {
    possible_scales:
      UTC
      TAI
      TT
      TDB

    corrections:
      barycentric_light_time
      leap_seconds_when_applicable

    RULE:
      precision_period_measurement_requires_consistent_time_standard
  }

  BARYCENTRIC_TIME_MODEL {
    purpose:
      correct_observation_times_to_common_Solar_System_barycentric_reference

    REQUIRE:
      observatory_location
      target_coordinates
      ephemeris
      time_scale

    RULE:
      uncorrected_topocentric_timing_can_introduce_apparent_period_variation
  }

  PERIAPSIS_MODEL {
    anomalistic_period:
      successive_periapsis_passages

    RULE:
      anomalistic_period_requires_defined_periapsis_in_precessing_orbit
  }

  NODE_MODEL {
    draconitic_period:
      successive_passages_through_same_node

    RULE:
      node_reference_plane MUST be defined
  }

  OBSERVATIONAL_SAMPLING_MODEL {
    timestamps:
      t_i

    values:
      y_i

    issues:
      gaps
      irregular_sampling
      seasonal_windows
      aliases

    RULE:
      detected_periodicity MUST be evaluated_against_sampling_window
  }

  PERIODOGRAM_MODEL {
    possible_methods:
      Lomb_Scargle
      Fourier
      phase_dispersion_minimisation
      Bayesian_period_search

    output:
      candidate_periods

    RULE:
      periodogram_peak != confirmed_orbital_period_without_model_validation
  }

  PHASE_FOLDING_MODEL {
    phase:
      phi =
        fractional_part(
          (t-T_0)/P
        )

    RULE:
      phase_fold_quality_can_support_but_not_by_itself_prove_orbital_interpretation
  }

  UNCERTAINTY_MODEL {
    sources:
      timing_precision
      cycle_count
      aliasing
      observational_baseline
      semimajor_axis
      stellar_or_system_mass
      dynamical_perturbations
      model_selection
      time_standard
      barycentric_correction

    PROPAGATION:
      orbital_period_uncertainty
      <- timing_sampling_geometry_mass_and_model_uncertainties
  }

  RELATIONSHIPS {
    OrbitalPeriod -> IS_A -> TimeQuantity
    OrbitalPeriod -> RECIPROCAL_OF -> OrbitalFrequency
    OrbitalPeriod -> RELATES_TO -> MeanMotion
    OrbitalPeriod -> RELATES_TO -> SemimajorAxisAndSystemMass
    SiderealPeriod -> REFERENCED_TO -> InertialFrame
    SynodicPeriod -> DESCRIBES -> RelativeOrbitalConfiguration
    AnomalisticPeriod -> REFERENCES -> Periapsis
    DraconiticPeriod -> REFERENCES -> OrbitalNode
    TransitTimes -> MAY_INFER -> OrbitalPeriod
    RadialVelocitySeries -> MAY_INFER -> OrbitalPeriod
    AstrometricOrbit -> MAY_INFER -> OrbitalPeriod
    Perturbation -> MAY_CHANGE -> OrbitalPeriod
  }

  SEMANTIC_EQUIVALENCE {
    "orbital period" ~= revolution_period WHEN orbital_cycle_context
    "sidereal orbital period" ~= sidereal_period

    orbital_period != rotation_period
    orbital_period != orbital_frequency
    orbital_period != mean_motion
    sidereal_period != synodic_period
    sidereal_period != anomalistic_period
    sidereal_period != draconitic_period
    observed_periodicity != confirmed_orbital_period
    ephemeris != orbital_period
  }

  CONSTRAINTS {
    orbital_period_dimension = T
    orbital_period_must_be_positive = true
    orbiting_system_identity_must_be_defined = true
    period_type_should_be_defined_when_relevant = true
    reference_frame_should_be_defined = true
    time_standard_should_be_defined_for_precision_measurement = true
    semimajor_axis_and_mass_units_must_be_consistent_for_Kepler_relation = true
    orbital_and_rotation_period_are_not_semantically_equivalent = true
    observed_periodicity_requires_orbital_model_for_orbital_classification = true
    uncertainty_should_include_timing_sampling_dynamical_and_model_components = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      OrbitalPeriod
      SiderealPeriod
      SynodicPeriod
      AnomalisticPeriod
      DraconiticPeriod
      PeriodDerivative

    COMMON_METHODS:
      transit_timing
      eclipse_timing
      radial_velocity
      astrometry
      direct_imaging_astrometry
      pulse_timing
      orbital_ephemeris_fit
      periodogram_analysis

    RECORD:
      system_identifier
      primary_body
      secondary_body
      period_value
      unit
      period_type
      reference_frame
      reference_epoch
      time_standard
      observation_times
      cycle_numbers
      semimajor_axis
      eccentricity
      inclination
      component_masses
      total_mass
      measurement_method
      period_search_method
      alias_information
      perturbation_model
      ephemeris_model
      quality_flag
      uncertainty
      provenance

    UNCERTAINTY:
      measured_or_inferred_orbital_period =
        best_estimate +/- uncertainty
  }

  REASONING_RULES {
    IF semimajor_axis_and_total_mass_known
      AND semimajor_axis > 0
      AND total_mass > 0
      THEN orbital_period =
        2*pi*sqrt(
          semimajor_axis^3/
          (G*total_mass)
        )
      under_two_body_Keplerian_model

    IF orbital_period_and_total_mass_known
      AND orbital_period > 0
      AND total_mass > 0
      THEN semimajor_axis =
        (
          G*total_mass*orbital_period^2/
          (4*pi^2)
        )^(1/3)

    IF orbital_period_and_semimajor_axis_known
      AND both_positive
      THEN total_mass =
        4*pi^2*semimajor_axis^3/
        (G*orbital_period^2)

    IF orbital_period > 0
      THEN orbital_frequency =
        1/orbital_period
      AND mean_motion =
        2*pi/orbital_period

    IF two_sidereal_periods_known
      AND both_positive
      AND simple_relative_angular_motion_context
      THEN synodic_period =
        1/abs(1/P_1-1/P_2)
      WHEN denominator_nonzero

    IF transit_times_and_cycle_numbers_known
      THEN fit_ephemeris_to_infer_period
      preserving_time_standard_and_uncertainty

    IF periodic_observational_series_known
      THEN candidate_periods =
        period_search(data,timestamps)
      BUT require_orbital_model_validation_before_classification

    IF periods_at_multiple_epochs_known
      THEN MAY infer_period_derivative
      under_declared_evolution_model
  }

  VALIDATION {
    CHECK system_identity
    CHECK time_unit
    CHECK positive_period
    CHECK period_type
    CHECK reference_frame
    CHECK reference_epoch
    CHECK time_standard
    CHECK orbital_vs_rotation_period
    CHECK sidereal_vs_synodic_period
    CHECK anomalistic_and_draconitic_context
    CHECK semimajor_axis_definition
    CHECK component_vs_relative_orbit
    CHECK total_system_mass
    CHECK Kepler_model_applicability
    CHECK observed_periodicity_vs_orbital_interpretation
    CHECK sampling_aliases
    CHECK barycentric_time_correction
    CHECK perturbation_or_period_change
    CHECK quality_flag
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    dimensional_confidence: 1.00
    Kepler_relationship_confidence: 1.00
    frequency_period_relationship_confidence: 1.00
    synodic_relationship_confidence: 0.99
    transit_period_confidence: 0.99
    observational_period_confidence: 0.97
    measurement_context_confidence: 0.98

    RULE:
      confidence decreases when period type, reference frame,
      time standard, cycle count, semimajor axis, system mass,
      sampling aliases, perturbations or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_period_measurement:
      identify_orbiting_system
      identify_period_type
      validate_time_unit
      attach_reference_frame_and_epoch
      attach_time_standard
      identify_measurement_method
      preserve_observation_times
      attach_orbital_parameters
      attach_quality_flag
      attach_uncertainty
      update_orbital_period_state

    ON new_transit_or_eclipse_time:
      append_event_time
      assign_cycle_number
      fit_or_update_ephemeris
      recompute_period_and_timing_residuals
      update_uncertainty

    ON orbital_solution_revision:
      preserve_observations
      update_semimajor_axis_mass_eccentricity_and_other_elements
      recompute_Keplerian_period_when_valid
      update_uncertainty

    ON perturbation_model_revision:
      preserve_previous_orbital_solution
      update_dynamical_model
      recompute_osculating_or_evolving_period
      preserve_epoch_and_model_version

    ON time_standard_revision:
      preserve_original_timestamps
      convert_to_target_time_standard
      apply_barycentric_correction_when_required
      recompute_precision_period_solution

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: OrbitalPeriod
    canonical_symbol: P
    canonical_dimension: T
    canonical_SI_unit: second

    interpretation_order:
      identify_orbiting_system
      identify_period_value_and_unit
      identify_sidereal_synodic_anomalistic_draconitic_or_other_period
      identify_reference_frame
      identify_reference_epoch_and_time_standard
      identify_semimajor_axis_and_system_mass
      identify_eccentricity_and_orbital_geometry
      identify_measurement_or_period_search_method
      identify_observation_times_and_cycle_numbers
      identify_alias_or_sampling_context
      identify_perturbation_or_period_change
      identify_quality_flag
      identify_uncertainty
      normalize_units
      validate_period_semantics
      infer_orbital_relationships

    ambiguity_controls:
      distinguish_orbital_period_from_rotation_period
      distinguish_period_from_orbital_frequency
      distinguish_period_from_mean_motion
      distinguish_sidereal_from_synodic_period
      distinguish_sidereal_from_anomalistic_and_draconitic_periods
      distinguish_observed_periodicity_from_confirmed_orbital_period
      distinguish_ephemeris_from_period
      preserve_system_period_type_frame_epoch_time_standard_model_and_provenance_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_astronomical_orbital_period_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Astronomical Measurements
      -> Orbital Period Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      period_type_model
      Kepler_two_body_model
      central_mass_approximation_model
      Kepler_third_law_model
      Solar_System_unit_model
      mean_motion_model
      orbital_frequency_model
      semimajor_axis_model
      mass_inference_model
      synodic_period_model
      precession_model
      eccentric_orbit_model
      binary_system_model
      exoplanet_model
      transit_period_model
      transit_timing_variation_model
      radial_velocity_period_model
      astrometric_orbit_model
      direct_imaging_model
      eclipse_binary_model
      rotation_distinction_model
      resonance_model
      perturbation_model
      orbital_decay_model
      ephemeris_model
      time_standard_model
      barycentric_time_model
      periapsis_model
      node_model
      observational_sampling_model
      periodogram_model
      phase_folding_model
      uncertainty_model
      relationships
      constraints
      measurement_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      orbital_period_type_changes
      Keplerian_or_mass_model_changes
      synodic_or_precession_model_changes
      observational_period_model_changes
      perturbation_or_period_evolution_model_changes
      ephemeris_or_time_standard_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