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
Download Code
Copy to Clipboard