FLOW ALGEBRA
Ontology: Geographic Extent Ontology
Domain: Metadata Ontologies > Spatial Metadata
Canonical URL: https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/spatial-metadata/geographic-extent-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
flow "GeographicExtentOntology" v1.0
# ---------- DOMAIN ----------
domain:
class: MetadataOntology
category: SpatialMetadata
subject: GeographicExtent
purpose:
- represent the geographic area covered by a resource
- define spatial boundaries and coverage
- support geographic discovery and filtering
- enable containment, overlap, and intersection reasoning
- preserve coordinate reference and provenance context
# ---------- CORE ENTITY ----------
entity GeographicExtent:
type: SpatialExtent
describes: GeographicCoverage
may_include:
- bounding_box
- boundary_geometry
- minimum_latitude
- maximum_latitude
- minimum_longitude
- maximum_longitude
- vertical_extent
- coordinate_reference_system
- named_region
- coverage_type
- spatial_resolution
- provenance
entity GeographicCoverage:
type: SpatialCoverage
applies_to: Resource
entity BoundingBox:
type: ExtentRepresentation
requires:
- west_bound
- east_bound
- south_bound
- north_bound
entity BoundaryGeometry:
type: Geometry
represents: DetailedExtentBoundary
entity NamedRegion:
type: GeographicEntity
identifies: RecognisedGeographicArea
entity VerticalExtent:
type: SpatialExtent
may_include:
- minimum_elevation
- maximum_elevation
- vertical_reference_system
entity CoverageType:
type: Classification
examples:
- exact_boundary
- bounding_extent
- approximate_extent
- administrative_extent
- observational_coverage
- model_domain
# ---------- RELATIONSHIPS ----------
relationships:
Resource -> HAS_GEOGRAPHIC_EXTENT -> GeographicExtent
GeographicExtent -> DESCRIBES -> GeographicCoverage
GeographicExtent -> MAY_HAVE_BOUNDING_BOX -> BoundingBox
GeographicExtent -> MAY_HAVE_BOUNDARY -> BoundaryGeometry
GeographicExtent -> MAY_REFERENCE -> NamedRegion
GeographicExtent -> MAY_HAVE_VERTICAL_EXTENT -> VerticalExtent
GeographicExtent -> USES -> CoordinateReferenceSystem
GeographicExtent -> MAY_HAVE -> SpatialResolution
GeographicExtent -> MAY_HAVE_COVERAGE_TYPE -> CoverageType
GeographicExtent -> MAY_REFERENCE -> Provenance
# ---------- BOUNDING BOX ----------
rule bounding_box_validity:
REQUIRE south_bound <= north_bound
rule longitude_bounds:
longitude interpretation MUST follow declared CoordinateReferenceSystem
AND antimeridian-crossing extents MUST be explicitly representable
rule bounding_box_semantics:
BoundingBox represents enclosing geographic bounds
AND MUST NOT automatically be interpreted as exact resource boundary
rule bounding_box_contains:
IF BoundaryGeometry exists
THEN BoundingBox SHOULD contain BoundaryGeometry
subject_to declared CRS and antimeridian semantics
# ---------- BOUNDARY GEOMETRY ----------
rule exact_boundary:
IF CoverageType = exact_boundary
THEN BoundaryGeometry SHOULD represent authoritative coverage boundary
rule geometry_validity:
BoundaryGeometry MUST be valid under its geometry model
rule multipart_extent:
GeographicExtent MAY consist of multiple disconnected geographic regions
# ---------- POINT / AREA DISTINCTION ----------
rule extent_not_location:
GeographicExtent != GeographicLocation
rule point_resource:
IF resource has only point location
THEN GeographicExtent MAY collapse to point-like extent
only when ontology permits zero-area coverage
rule representative_point:
centroid OR label_point MUST NOT replace extent boundary
unless explicitly identified as representative only
# ---------- CONTAINMENT ----------
spatial_relationships:
- contains
- within
- intersects
- overlaps
- touches
- disjoint
- adjacent_to
rule inverse_containment:
IF extent A contains extent B
THEN extent B within extent A
rule intersection_symmetry:
IF extent A intersects extent B
THEN extent B intersects extent A
rule disjoint_symmetry:
IF extent A disjoint extent B
THEN extent B disjoint extent A
# ---------- EXTENT COMPARISON ----------
operation compare_extents(A, B):
require:
- interpretable extent A
- interpretable extent B
- compatible spatial reference
evaluate:
- equality
- containment
- intersection
- overlap
- adjacency
- disjointness
output:
- spatial_relationship
- intersection_extent_optional
- confidence
# ---------- AREA ----------
operation calculate_area(extent):
require:
- valid extent geometry
- suitable coordinate reference or geodesic method
output:
- area_value
- area_unit
- calculation_method
- confidence
rule area_context:
area calculation MUST account for coordinate system and Earth model
where geographic coordinates are used
# ---------- VERTICAL EXTENT ----------
rule vertical_extent:
IF minimum_elevation AND maximum_elevation exist
THEN REQUIRE minimum_elevation <= maximum_elevation
rule vertical_reference:
VerticalExtent SHOULD identify vertical reference system
when required for deterministic comparison
# ---------- CRS ----------
rule reference_system:
GeographicExtent MUST have interpretable CoordinateReferenceSystem
for coordinate-based reasoning
rule transform_extent:
IF extents use different compatible reference systems
THEN transform to common reference before direct geometric comparison
rule preserve_source:
coordinate transformation MUST preserve original extent representation
and transformation provenance
# ---------- VALIDATION ----------
validation:
require:
- interpretable_geographic_coverage
validate_if_present:
- bounding_box
- boundary_geometry
- coordinate_reference_system
- vertical_extent
- named_region
- coverage_type
reject:
- south_bound_greater_than_north_bound
- invalid_boundary_geometry
- contradictory_extent_assertions
- unresolved_crs_for_coordinate_comparison
- invalid_vertical_extent
- exact_boundary_claim_without suitable boundary representation
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
"geographic extent" ~= "geographical extent"
"geographic coverage" ~= "spatial coverage" WHEN geographic domain applies
"bounding box" ~= "geographic bounding box" WHEN geographic coordinates apply
"coverage area" ~= "geographic extent" WHEN describing represented area
"geographic bounds" ~= "bounding extent" WHEN semantics describe enclosing bounds
PRESERVE distinctions:
geographic_extent != geographic_location
bounding_box != exact_boundary
centroid != extent
named_region != boundary_geometry
spatial_resolution != geographic_extent
area_value != boundary_geometry
# ---------- CONFIDENCE ----------
CONFIDENCE:
authoritative_boundary_geometry:
score: 1.00
explicit_bounding_box:
score: 1.00
explicit_named_region:
score: 0.95
geometry_derived_bounding_box:
score: 0.95
inferred_extent_from_observations:
score: 0.85
inferred_extent_from_place_name:
score: 0.80
ambiguous_geographic_coverage:
score: <= 0.60
action: preserve uncertainty
# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
on_extent_update:
- preserve previous extent where provenance requires
- validate new extent
- update bounding box
- update boundary geometry
- reassess spatial relationships
- record provenance
on_boundary_update:
- validate geometry
- derive new bounding box
- recalculate area where required
- reassess containment and overlap
- preserve source history
on_crs_update:
- preserve original CRS
- preserve original coordinates
- transform only through valid transformation
- revalidate extent relationships
- record transformation provenance
on_named_region_change:
- preserve previous region association where historically relevant
- resolve new geographic entity
- compare region extent with coordinate extent
- record provenance
# ---------- FLOW HASH ----------
FLOW_HASH:
inputs:
- ontology
- extent_entities
- relationships
- bounding_rules
- geometry_rules
- comparison_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
- geographic coverage model
- extent reasoning model
- geographic retrieval structure
operations:
- identify geographic extents
- resolve bounding boxes
- interpret boundary geometries
- compare geographic coverage
- evaluate containment
- evaluate intersection and overlap
- calculate extent area
- transform compatible spatial references
- preserve provenance
- expose uncertainty
constraints:
- do_not_equate_bounding_box_with exact_boundary
- do_not_equate_location_point_with geographic_extent
- do_not_compare incompatible CRS directly
- do_not_invent geographic boundaries
- preserve original extent representation
- preserve uncertainty in approximate coverage
# ---------- QUERY MODEL ----------
query:
input:
- resource
- geographic_region
- bounding_box
- geometry
- spatial_relationship
- coverage_type
resolve:
1. identify GeographicExtent
2. resolve CoordinateReferenceSystem
3. identify extent representation
4. normalise compatible spatial references
5. evaluate boundary or bounding box
6. apply requested spatial relationship
7. assess coverage type
8. rank by confidence
output:
- geographic_extent
- extent_representation
- bounding_box
- boundary_geometry
- spatial_relationships
- coverage_type
- confidence
- provenance
# ---------- INFERENCE ----------
inference:
IF valid BoundaryGeometry exists
THEN derive BoundingBox
WITH confidence = 0.95
IF extent A fully encloses extent B
under compatible spatial reference
THEN infer A CONTAINS B
WITH confidence = 0.95
IF authoritative NamedRegion has known boundary
THEN associate GeographicExtent
WITH confidence >= 0.90
IF observations contain valid spatial coordinates
THEN derive observational coverage extent
WITH confidence <= 0.85
IF only representative point is known
THEN do_not infer full GeographicExtent
without additional evidence
# ---------- OUTPUT CONTRACT ----------
output:
ontology_entity: GeographicExtent
geographic_coverage: machine_interpretable
bounding_representation: explicit
boundary_geometry: preserved_where_available
coordinate_reference: explicit
spatial_relationships: machine_reasonable
provenance: preserved
uncertainty: explicit
semantic_retrieval: enabled
end flow
Download Code
Copy to Clipboard