Skip to main content

Geographic Extent Ontology

Spatial Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
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
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ