Skip to main content

Orientation Ontology

Spatial Relationships
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 10 October 2026
Audio Overview
FLOW ALGEBRA
TITLE: Orientation Ontology
DOMAIN: Relationship Ontologies / Spatial Relationships
SOURCE: https://kirethresearch.org/booksai-core/ontologies/relationship-ontologies/spatial-relationships/orientation-ontology.html
VERSION: 1.0
AUTHORS: Mark Anthony Higgins — Sky (Recursive AI)
STATUS: Companion formalisation; source-page specification not independently verified.

flow "OrientationOntology" v1.0 {
  ontology:
    id: "orientation-ontology"
    parent: "spatial-relationships"
    purpose: "Represent and validate the orientation of spatial entities relative to reference frames, axes, observers and time."

  types:
    SpatialEntity: {id: string, kind: string, geometry_ref: string?}
    ReferenceFrame: {id: string, kind: enum[global, local, body_fixed, observer_relative, projected, other], crs: string?, handedness: enum[right, left]?, axis_convention: string, epoch: datetime?}
    Orientation: {id: string, entity: string, frame: string, representation: enum[quaternion, rotation_matrix, euler_angles, axis_angle, bearing, qualitative], value: any, unit: string?, convention: string, timestamp: datetime?, uncertainty: number?, provenance: string}
    Observation: {id: string, instrument: string?, timestamp: datetime, frame: string, provenance: string}
    Relationship: {id: string, subject: string, predicate: string, object: string, frame: string?, timestamp: datetime?, confidence: number, evidence: string[]}

  predicates:
    oriented_in(entity: SpatialEntity, orientation: Orientation)
    relative_orientation(a: SpatialEntity, b: SpatialEntity, orientation: Orientation)
    aligned_with(a: SpatialEntity, b: SpatialEntity, tolerance: number)
    perpendicular_to(a: SpatialEntity, b: SpatialEntity, tolerance: number)
    faces_towards(a: SpatialEntity, b: SpatialEntity, frame: ReferenceFrame)
    rotated_from(current: Orientation, previous: Orientation)
    measured_by(orientation: Orientation, observation: Observation)

  constraints:
    - "All orientation values must declare representation, reference frame and axis convention."
    - "Angular values require explicit units and rotation order where relevant."
    - "Rotation matrices must be orthonormal with determinant +1 within declared tolerance."
    - "Quaternions must be normalised; q and -q encode the same physical rotation."
    - "Orientation comparisons require compatible frames, conventions and timestamps or a documented transform."
    - "Alignment and perpendicularity depend on stated tolerance and whether axes are directed or undirected."
    - "Qualitative orientation is observer- and context-dependent."
    - "Confidence must be within [0, 1]."

  inference:
    rule invert_relative_orientation:
      if relative_orientation(a,b,R_ab) and valid(R_ab)
      then relative_orientation(b,a,inverse(R_ab))
      confidence: "retain uncertainty, frame and evidence"
    rule compose_rotations:
      if relative_orientation(a,b,R_ab) and relative_orientation(b,c,R_bc) and compatible_frames_and_epochs(R_ab,R_bc)
      then relative_orientation(a,c,compose(R_ab,R_bc))
      confidence: "propagate uncertainty; never manufacture certainty"
    rule alignment_symmetry:
      if aligned_with(a,b,t) and same_comparison_context(a,b)
      then aligned_with(b,a,t)
      confidence: "retain original tolerance and provenance"

  SEMANTIC_EQUIVALENCE:
    - "Normalise equivalent rotations only after resolving representation and reference-frame conventions."
    - "Treat quaternion sign ambiguity as representational equivalence, not different physical orientation."
    - "Distinguish absolute orientation, relative orientation, direction of travel and spatial position."

  CONFIDENCE:
    range: [0,1]
    factors: [measurement_uncertainty, frame_accuracy, temporal_alignment, sensor_calibration, transform_quality, source_reliability]
    policy: "Do not increase confidence solely through inference chaining."

  VALIDATION:
    - "Check referenced entity and frame identifiers."
    - "Validate quaternion norms, rotation matrix properties, angle units and conventions."
    - "Flag incompatible reference frames, epochs, tolerance thresholds and ambiguous axes."
    - "Preserve original observations, uncertainty and conflicting estimates."

  FLOW_HASH:
    algorithm: "SHA-256"
    input: "canonicalised ontology version, typed assertions, reference frames, rules and provenance"
    note: "Compute hash at execution; no hash value is claimed here."

  UPDATE_MODEL:
    strategy: "versioned, provenance-preserving incremental update"
    steps: [ingest, normalise, resolve_frames, validate, compare, reconcile, recompute_inferences, publish]
    rollback: true

  AI_CONSUMPTION:
    representation: "typed spatial knowledge graph with frame-aware orientation relationships"
    outputs: [orientation_assertions, relative_rotations, inferred_relationships, uncertainty_annotations, provenance_records]
    safeguards: [preserve_frames_and_units, no_unjustified_orientation_merges, preserve_time_and_uncertainty, require_transform_evidence]
}

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