FLOW ALGEBRA
Ontology: Geospatial Reference Ontology
Domain: Metadata Ontologies > Spatial Metadata
Canonical URL: https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/spatial-metadata/geospatial-reference-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
flow "GeospatialReferenceOntology" v1.0
# ---------- DOMAIN ----------
domain:
class: MetadataOntology
category: SpatialMetadata
subject: GeospatialReference
purpose:
- represent reference frameworks for Earth-related spatial information
- connect coordinates to datums, coordinate systems, and projections
- preserve geodetic and geographic reference context
- support interoperable spatial transformation and comparison
- enable machine reasoning over georeferenced resources
# ---------- CORE ENTITY ----------
entity GeospatialReference:
type: SpatialReferenceEntity
applies_to: GeospatialResource
may_include:
- coordinate_reference_system
- coordinate_system
- datum
- ellipsoid
- projection
- vertical_reference
- reference_identifier
- authority
- area_of_use
- epoch
- units
- axis_order
- transformation
- provenance
entity GeospatialResource:
type: SpatialResource
referenced_by: GeospatialReference
entity CoordinateReferenceSystem:
type: SpatialReferenceSystem
composed_from:
- CoordinateSystem
- Datum
may_include:
- Projection
entity CoordinateSystem:
type: CoordinateFramework
defines:
- axes
- axis_order
- units
- dimensions
entity Datum:
type: GeodeticReference
anchors: CoordinateReferenceSystem
entity Ellipsoid:
type: EarthModel
may_define:
- semi_major_axis
- semi_minor_axis
- inverse_flattening
entity Projection:
type: SpatialTransformationModel
maps:
- geographic_coordinates
- projected_coordinates
entity VerticalReference:
type: SpatialReferenceSystem
applies_to: HeightOrDepth
entity ReferenceIdentifier:
type: Identifier
identifies: GeospatialReference
entity ReferenceAuthority:
type: Authority
assigns: ReferenceIdentifier
entity AreaOfUse:
type: GeographicExtent
describes: ValidOrRecommendedReferenceRegion
entity CoordinateEpoch:
type: TemporalReference
contextualises: DynamicGeospatialReference
# ---------- REFERENCE TYPES ----------
geospatial_reference_types:
- GeographicReference
- GeodeticReference
- ProjectedReference
- VerticalReference
- CompoundReference
- EngineeringReference
- DynamicReference
# ---------- RELATIONSHIPS ----------
relationships:
GeospatialResource -> HAS_REFERENCE -> GeospatialReference
GeospatialReference -> MAY_USE -> CoordinateReferenceSystem
CoordinateReferenceSystem -> USES -> CoordinateSystem
CoordinateReferenceSystem -> USES -> Datum
Datum -> MAY_USE -> Ellipsoid
ProjectedReference -> USES -> Projection
Projection -> MAY_REFERENCE -> Datum
GeospatialReference -> MAY_HAVE_VERTICAL_REFERENCE -> VerticalReference
GeospatialReference -> IDENTIFIED_BY -> ReferenceIdentifier
ReferenceIdentifier -> ASSIGNED_BY -> ReferenceAuthority
GeospatialReference -> HAS_AREA_OF_USE -> AreaOfUse
DynamicReference -> MAY_HAVE_EPOCH -> CoordinateEpoch
GeospatialReference -> MAY_HAVE_TRANSFORMATION -> CoordinateTransformation
GeospatialReference -> MAY_REFERENCE -> Provenance
# ---------- REFERENCE IDENTITY ----------
rule reference_identity:
IF authoritative ReferenceIdentifier exists
THEN resolve reference definition through associated authority
rule identifier_context:
ReferenceIdentifier MUST be interpreted with ReferenceAuthority
when identifier namespace is not globally unique
rule explicit_reference:
coordinates SHOULD carry or inherit an interpretable GeospatialReference
for deterministic spatial reasoning
# ---------- CRS STRUCTURE ----------
rule crs_components:
CoordinateReferenceSystem MUST define sufficient:
- coordinate_system
- datum_or_reference_basis
for coordinate interpretation
rule projected_reference:
IF reference type = ProjectedReference
THEN Projection MUST be available
rule geographic_reference:
IF reference type = GeographicReference
THEN angular coordinate axes and geodetic reference MUST be interpretable
rule compound_reference:
IF reference type = CompoundReference
THEN preserve each component reference independently
# ---------- DATUM / ELLIPSOID ----------
rule datum_context:
coordinates using different datums MUST NOT be assumed equivalent
rule ellipsoid_context:
IF Datum depends on Ellipsoid
THEN Ellipsoid definition SHOULD be preserved
rule dynamic_datum:
IF Datum is dynamic
THEN CoordinateEpoch MAY be required for high-accuracy transformation
# ---------- AXES AND UNITS ----------
rule axis_order:
coordinates MUST follow axis order declared by CoordinateSystem
rule axis_units:
coordinate values MUST be interpreted using declared axis units
rule unit_conversion:
IF references differ only in compatible units
THEN valid unit conversion MAY establish comparable representation
# ---------- AREA OF USE ----------
rule area_of_use:
GeospatialReference SHOULD declare AreaOfUse where applicable
rule suitability:
IF coordinate lies outside AreaOfUse
THEN reference MAY remain mathematically defined
BUT suitability confidence SHOULD be reduced
# ---------- VERTICAL REFERENCE ----------
rule vertical_context:
IF elevation or depth is represented
THEN VerticalReference SHOULD be declared where vertical interpretation depends on datum
rule height_types:
distinguish:
- ellipsoidal_height
- orthometric_height
- depth
- local_vertical_height
# ---------- TRANSFORMATION ----------
entity CoordinateTransformation:
type: SpatialTransformation
maps:
- SourceGeospatialReference
- TargetGeospatialReference
may_include:
- transformation_method
- parameters
- accuracy
- area_of_use
- epoch
- provenance
operation transform_coordinate(source_coordinate, target_reference):
require:
- source_coordinate
- source_geospatial_reference
- target_reference
- valid_transformation_path
process:
1. validate source reference
2. resolve axes and units
3. resolve datum and ellipsoid
4. resolve projection if applicable
5. resolve epoch if required
6. apply transformation
7. validate target representation
preserve:
- source_coordinate
- source_reference
- target_reference
- transformation_method
- transformation_parameters
- provenance
output:
- transformed_coordinate
- target_reference
- transformation_accuracy
- confidence
# ---------- COMPATIBILITY ----------
rule direct_comparison:
coordinates MAY be directly compared
ONLY IF their geospatial references are compatible
rule transformation_required:
IF datum, projection, coordinate system, or reference epoch differs materially
THEN transformation SHOULD occur before direct spatial comparison
rule unknown_reference:
IF geospatial reference is unknown
THEN coordinate semantics MUST be treated as uncertain
# ---------- VALIDATION ----------
validation:
require:
- interpretable_reference_context
validate_if_present:
- coordinate_reference_system
- coordinate_system
- datum
- ellipsoid
- projection
- vertical_reference
- reference_identifier
- authority
- area_of_use
- epoch
reject:
- unresolved_reference_identifier
- contradictory_crs_components
- incompatible_axis_definition
- missing_projection_for_projected_reference
- missing_required_epoch_for_dynamic_transformation
- direct_comparison_of_incompatible_references
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
"geospatial reference" ~= "spatial reference" WHEN Earth-referenced spatial semantics apply
"CRS" ~= "coordinate reference system"
"reference system" ~= "spatial reference system" WHEN context is geospatial
"geodetic reference" ~= "geodetic datum context" WHEN semantics match
"reference identifier" ~= "CRS identifier" WHEN identifier specifically resolves CRS
PRESERVE distinctions:
geospatial_reference != coordinate_system
coordinate_reference_system != coordinate_system
datum != ellipsoid
projection != datum
projection != coordinate_reference_system
vertical_reference != horizontal_reference
coordinate_epoch != observation_time
reference_identifier != reference_definition
# ---------- CONFIDENCE ----------
CONFIDENCE:
authoritative_reference_identifier:
score: 1.00
explicit_complete_crs:
score: 1.00
validated_transformation:
score: 0.95
inferred_reference_from_unique_metadata:
score: 0.90
inferred_reference_from_coordinate_pattern:
score: 0.65
unknown_or_ambiguous_reference:
score: <= 0.50
action: preserve uncertainty
# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
on_reference_change:
- preserve original reference
- validate new reference
- determine whether coordinate transformation is required
- transform only through valid transformation path
- update provenance
on_datum_change:
- preserve source datum
- resolve transformation parameters
- account for epoch where required
- recompute affected coordinates
- update provenance
on_projection_change:
- preserve original projection
- preserve source coordinates
- recompute projected representation
- update provenance
on_epoch_change:
- preserve previous epoch
- reassess dynamic reference transformation
- recompute coordinates where required
- update provenance
# ---------- FLOW HASH ----------
FLOW_HASH:
inputs:
- ontology
- reference_entities
- relationships
- crs_rules
- datum_rules
- transformation_rules
- validation
- semantic_equivalence
- confidence
- update_model
canonicalisation:
- normalise_whitespace
- preserve_case_sensitive_identifiers
- sort_unordered_property_sets
- preserve_rule_order
output:
deterministic_semantic_hash
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION:
interpret_as:
- spatial metadata ontology
- geospatial reference model
- coordinate interpretation model
- transformation reasoning structure
operations:
- identify geospatial references
- resolve CRS identifiers
- interpret coordinate systems
- resolve datums and ellipsoids
- resolve projections
- evaluate area of use
- resolve vertical references
- transform compatible coordinates
- account for coordinate epoch
- preserve provenance
- expose uncertainty
constraints:
- do_not_assume_reference_system_without evidence
- do_not_assume_axis_order
- do_not_equate_datum_with ellipsoid
- do_not_equate_projection_with CRS
- do_not_compare incompatible references directly
- preserve original coordinates and reference definitions
- preserve epoch context for dynamic references
# ---------- QUERY MODEL ----------
query:
input:
- coordinate
- reference_identifier
- authority
- coordinate_reference_system
- datum
- projection
- target_reference
- area_of_use
- epoch
resolve:
1. identify GeospatialReference
2. resolve authoritative identifier
3. resolve CoordinateReferenceSystem
4. resolve CoordinateSystem axes and units
5. resolve Datum and Ellipsoid
6. resolve Projection if applicable
7. resolve VerticalReference if applicable
8. resolve CoordinateEpoch if required
9. determine transformation path
10. validate result
output:
- geospatial_reference
- reference_identifier
- coordinate_reference_system
- datum
- projection
- vertical_reference
- transformation_path
- confidence
- provenance
# ---------- INFERENCE ----------
inference:
IF authoritative reference identifier uniquely resolves definition
THEN identify GeospatialReference
WITH confidence = 1.00
IF complete CRS components uniquely identify known reference
THEN infer GeospatialReference
WITH confidence >= 0.90
IF source and target references differ only by compatible units
THEN infer unit_conversion_required
IF source and target references differ by datum or projection
THEN infer CoordinateTransformation required
IF dynamic reference is used without required epoch
THEN reduce confidence
AND preserve temporal reference uncertainty
IF reference remains ambiguous
THEN do_not_force_resolution
AND return candidate interpretations
# ---------- OUTPUT CONTRACT ----------
output:
ontology_entity: GeospatialReference
reference_context: machine_interpretable
crs_structure: explicit
datum_context: preserved
projection_context: preserved
vertical_context: preserved_where_applicable
transformation_history: traceable
provenance: preserved
uncertainty: explicit
semantic_retrieval: enabled
end flow
Download Code
Copy to Clipboard