Skip to main content

Physical Observation Ontology

AI Semantic Library Physical Entities
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 October 2026
Audio Overview
FLOW ALGEBRA
PHYSICAL OBSERVATION ONTOLOGY
Kireth Semantic Library | Entity Graph > Physical Entities
Source: https://kirethresearch.org/booksai-core/entity-graph/physical-entities/ai-semantic-library-physical-entities/physical-observation-ontology.html
Version: 1.0 | 2026-10-12 | Language: en-GB
Authors: Mark Higgins — Sky (Recursive AI)
Status: Subject-based formalisation; source page content not independently verified.

01. PURPOSE
flow PhysicalObservationOntology v1.0:
  domain: physical_entities
  purpose: represent observations of physical objects, processes, states and properties with provenance, uncertainty and repeatability
  inputs: [observation_records, instruments, observers, targets, contexts, calibrations]
  outputs: [validated_observations, physical_entity_graph, inferred_claims, audit_trail]

02. TYPE SYSTEM
type EntityID = str
type Timestamp = ISO8601
type Quantity = {value: float, unit: str, uncertainty?: float}
type Interval = {start: Timestamp, end: Timestamp}
type Confidence = float in [0,1]
type ObservationStatus = enum{raw, validated, qualified, rejected, superseded}
type ObservationMode = enum{direct, instrumented, remote, inferred}
type EvidenceKind = enum{sensor_reading, image, spectrum, waveform, manual_record, derived_record}

03. TYPED ENTITIES
entity PhysicalEntity {id: EntityID, class: str, identity_confidence: Confidence}
entity PhysicalProperty {id: EntityID, quantity_kind: str, dimension: str}
entity PhysicalState {id: EntityID, entity_id: EntityID, valid_time: Interval}
entity PhysicalProcess {id: EntityID, participants: list[EntityID], valid_time: Interval}
entity Observer {id: EntityID, kind: enum{human, instrument, autonomous_system}}
entity Instrument {id: EntityID, model: str, serial?: str, calibration_id?: EntityID}
entity Sensor {id: EntityID, instrument_id?: EntityID, transfer_function?: str}
entity Observation {id: EntityID, target_id: EntityID, property_id?: EntityID, observer_id: EntityID, time: Timestamp, mode: ObservationMode, status: ObservationStatus}
entity Measurement {id: EntityID, observation_id: EntityID, result: Quantity, method_id: EntityID}
entity ObservationContext {id: EntityID, environment: map, location?: str, frame?: str}
entity Evidence {id: EntityID, kind: EvidenceKind, uri?: str, checksum?: str}
entity Calibration {id: EntityID, instrument_id: EntityID, valid_time: Interval, reference: str, uncertainty?: float}
entity Provenance {id: EntityID, agent_id: EntityID, method_id: EntityID, source_id: EntityID, recorded_at: Timestamp}
entity Claim {id: EntityID, subject_id: EntityID, predicate: str, object: any, confidence: Confidence}

04. SEMANTIC RELATIONSHIPS
relation OBSERVES(Observer, PhysicalEntity)
relation OBSERVATION_OF(Observation, PhysicalEntity)
relation OBSERVES_PROPERTY(Observation, PhysicalProperty)
relation PRODUCES(Observation, Measurement)
relation USES_INSTRUMENT(Observation, Instrument)
relation HAS_CONTEXT(Observation, ObservationContext)
relation SUPPORTED_BY(Observation, Evidence)
relation HAS_PROVENANCE(Observation, Provenance)
relation CALIBRATED_BY(Instrument, Calibration)
relation DESCRIBES_STATE(Observation, PhysicalState)
relation DESCRIBES_PROCESS(Observation, PhysicalProcess)
relation CORROBORATES(Observation, Observation)
relation CONFLICTS_WITH(Observation, Observation)
relation DERIVED_FROM(Claim, Observation)
relation SUPERSEDES(Observation, Observation)

05. INVARIANTS
invariant observation.target_id exists in PhysicalEntity
invariant observation.observer_id exists in Observer
invariant observation.time is timezone-aware
invariant measurement.observation_id exists in Observation
invariant measurement.result.unit compatible_with property.dimension
invariant confidence >= 0 and confidence <= 1
invariant rejected_observations not used as validated evidence
invariant every validated observation has provenance and method
invariant evidence checksum verified when supplied

06. OBSERVATION ACQUISITION
flow AcquireObservation(target, observer, property, context, method):
  assert identity_resolved(target)
  t := clock.now_utc()
  raw := method.capture(target, context)
  observation := Observation(target, observer, property, t, method.mode, raw)
  link observation HAS_CONTEXT context
  link observation SUPPORTED_BY raw.evidence
  return observation

07. NORMALISATION
flow NormaliseObservation(observation):
  preserve raw_payload
  canonicalise timestamps to UTC
  map units to canonical SI representation where possible
  retain original units and conversion metadata
  align coordinate reference frames
  validate type and dimension compatibility
  return normalised_observation

08. CALIBRATION
flow ApplyCalibration(observation, instrument, time):
  calibration := find_valid_calibration(instrument, time)
  if calibration absent: flag uncalibrated; do not assert calibrated accuracy
  else: apply traceable correction and uncertainty contribution
  return qualified_result

09. UNCERTAINTY MODEL
model measured_value = true_value + systematic_error + random_error
model combined_standard_uncertainty = sqrt(sum(sensitivity_i^2 * variance_i) + covariance_terms)
rule report expanded_uncertainty only with stated coverage_factor
rule preserve distinction between precision, accuracy, resolution and uncertainty
rule instrument_uncertainty != observer_confidence

10. TEMPORAL SEMANTICS
rule observation_time != ingestion_time unless explicitly identical
rule observation_of_state valid only for specified temporal interval
rule successive observations do not imply continuous monitoring
rule delayed evidence retains original acquisition timestamp

11. SPATIAL SEMANTICS
rule each spatial measurement specifies reference frame where relevant
rule coordinate transformations preserve source frame and transform version
rule spatial proximity alone does not prove object identity

12. VALIDATION
flow ValidateObservation(o):
  check schema, target identity, provenance, timestamp, method
  check units, calibration status, range and sensor saturation
  check duplicate identifiers and evidence integrity
  if critical failure: status := rejected
  else if material caveat: status := qualified
  else: status := validated
  emit validation_report

13. REPEATABILITY AND REPRODUCIBILITY
rule repeated observations share controlled method and comparable context
rule independent observations may corroborate a claim
rule reproducibility requires accessible method and sufficient metadata
rule agreement is evaluated against combined uncertainty, not exact equality

14. CONFLICT RESOLUTION
flow Reconcile(a, b):
  if different_targets_or_properties: return non_comparable
  align units, times, contexts and calibration references
  if statistically_compatible(a, b): link CORROBORATES(a,b)
  else: link CONFLICTS_WITH(a,b); request investigation
  never silently overwrite contradictory evidence

15. PHYSICAL STATE INFERENCE
rule OBSERVATION_OF(o,e) and OBSERVES_PROPERTY(o,p) and validated(o)
  => candidate_state_property(e,p,o.value,o.time)
rule inference must retain provenance and uncertainty
rule inferred physical state is not equivalent to directly observed state

16. PROCESS INFERENCE
rule ordered observations of same entity may support a state transition
rule state_transition does not by itself establish a causal mechanism
rule causal claim requires independent assumptions or experimental evidence

17. SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE:
  exact: same target, property, time interval, method semantics and compatible values
  approximate: comparable target/property with tolerances and uncertainty overlap
  prohibited: equating observations solely by label similarity
  output: {equivalence_type, mapping, assumptions, confidence}

18. CONFIDENCE
CONFIDENCE:
  components: [identity_quality, provenance_quality, calibration_quality, measurement_quality, replication_support]
  aggregation: declared, documented and calibrated for intended domain
  caution: confidence is not a replacement for physical measurement uncertainty
  output: {score: Confidence, rationale: str, limitations: list[str]}

19. GRAPH INTEGRATION
flow BuildObservationGraph(records):
  for o in records:
    upsert target, observer, context, instrument, evidence, provenance
    upsert observation with stable identifier
    create typed edges; validate domain/range
    preserve revisions as separate versions
  return versioned_physical_entity_graph

20. QUERY SEMANTICS
query observations_by_entity(entity_id, time_window)
query observations_by_property(property_id, context_filter)
query evidence_for_claim(claim_id)
query conflicting_observations(entity_id, property_id)
query calibration_lineage(observation_id)
query state_at_time(entity_id, timestamp)

21. FLOW_HASH
FLOW_HASH:
  algorithm: SHA-256
  canonical_payload: [ontology_version, normalised_entities, typed_edges, rules, provenance]
  exclude: [non_semantic_whitespace, volatile_rendering_metadata]
  output: lowercase_hex_digest
  requirement: deterministic canonical serialisation before hashing

22. UPDATE_MODEL
UPDATE_MODEL:
  strategy: append_only_versioning
  changes: [new_observation, correction, calibration_revision, identity_resolution, retraction]
  on_update:
    - validate new record
    - retain historical record and lineage
    - recompute affected claims and confidence
    - refresh impacted graph edges and FLOW_HASH
    - record reason, timestamp and responsible agent
  rule: never erase original evidence to conceal a correction

23. AI_CONSUMPTION
AI_CONSUMPTION:
  representation: typed machine-readable observations and evidence-linked claims
  required_fields: [entity_id, observation_id, observed_property, timestamp, value_or_state, provenance, status]
  optional_fields: [unit, uncertainty, confidence, spatial_context, calibration, semantic_mapping]
  reasoning_constraints:
    - distinguish observation from inference
    - distinguish correlation from causation
    - retain units and time qualifiers
    - expose conflicting evidence
    - avoid unsupported certainty
  output: grounded_answer_with_traceable_evidence

24. ERROR HANDLING
error MissingTargetIdentity => quarantine observation
error IncompatibleUnits => reject conversion until resolved
error ExpiredCalibration => qualify observation and flag review
error MissingProvenance => prohibit validated status
error EvidenceMismatch => reject and audit
error TimestampAmbiguity => request explicit time reference

25. EXECUTION PIPELINE
flow PhysicalObservationPipeline(input):
  raw := AcquireObservation(input.target, input.observer, input.property, input.context, input.method)
  normalised := NormaliseObservation(raw)
  calibrated := ApplyCalibration(normalised, input.instrument, raw.time)
  validated := ValidateObservation(calibrated)
  graph := BuildObservationGraph([validated])
  claims := infer_supported_claims(graph)
  return {observation: validated, graph: graph, claims: claims, flow_hash: FLOW_HASH(graph)}

26. TEST CASES
test valid_temperature_observation -> canonical_unit_kelvin_and_original_unit_preserved
test missing_calibration -> qualified_not_falsely_calibrated
test incompatible_dimensions -> validation_failure
test duplicate_observation_id -> idempotent_upsert_or_version_conflict
test conflicting_measurements -> both_retained_with_conflict_edge
test missing_evidence_provenance -> not_validated
test stable_canonical_graph -> identical_FLOW_HASH
test revised_calibration -> dependent_claims_recomputed

27. SCOPE AND LIMITATIONS
This algebra is an ontology-oriented specification, not an executable program without a compatible runtime and concrete schema bindings.
Observation validity depends on instrument specifications, scientific method, and domain-specific tolerances.
The source URL identifies the intended library page; this file does not claim to reproduce unseen page text.

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