FLOW ALGEBRA
TITLE: Adjacency Ontology
DOMAIN: Relationship Ontologies / Spatial Relationships
SOURCE: https://kirethresearch.org/booksai-core/ontologies/relationship-ontologies/spatial-relationships/adjacency-ontology.html
VERSION: 1.0
AUTHORS: Mark Anthony Higgins — Sky (Recursive AI)
STATUS: Companion formalisation; source-page specification not independently verified.
flow "AdjacencyOntology" v1.0 {
ontology:
id: "adjacency-ontology"
parent: "spatial-relationships"
purpose: "Represent evidence-backed spatial adjacency between entities and regions while preserving topology, scale, time and reference systems."
types:
SpatialEntity: {id: string, kind: enum[point, line, polygon, volume, region, object, other], geometry_ref: string?, crs: string?, valid_time: string?}
Boundary: {id: string, entity_id: string, geometry_ref: string, crs: string}
Observation: {id: string, method: string, timestamp: datetime?, uncertainty: number?, provenance: string}
AdjacencyRelation: {id: string, a: string, b: string, mode: enum[boundary_contact, edge_contact, vertex_contact, network_neighbour, asserted], tolerance: number?, tolerance_unit: string?, context: string?, confidence: number, evidence: string[]}
predicates:
adjacent_to(a: SpatialEntity, b: SpatialEntity, context: string)
shares_boundary_with(a: SpatialEntity, b: SpatialEntity)
touches_at_vertex(a: SpatialEntity, b: SpatialEntity)
network_neighbour_of(a: SpatialEntity, b: SpatialEntity, network: string)
disjoint_from(a: SpatialEntity, b: SpatialEntity)
overlaps(a: SpatialEntity, b: SpatialEntity)
constraints:
- "Every relation endpoint must resolve to a typed spatial entity."
- "Confidence must lie within [0, 1]."
- "Specify adjacency semantics: shared boundary, vertex contact, network connection or explicit assertion."
- "Compare geometries in compatible coordinate reference systems and compatible observation times."
- "A tolerance-based adjacency test must declare tolerance units and method."
- "Adjacency is not automatically transitive: A adjacent B and B adjacent C does not imply A adjacent C."
- "Symmetry applies to undirected topological adjacency under the same context, not automatically to directed network relations."
- "Proximity alone does not establish topological adjacency."
- "Different spatial dimensions and topology conventions may produce different valid adjacency results."
inference:
rule symmetric_topological_adjacency:
if adjacent_to(a,b,c) and undirected_topological_context(c)
then adjacent_to(b,a,c)
confidence: "retain original evidence and uncertainty"
rule shared_boundary_adjacency:
if shares_boundary_with(a,b) and valid_geometry(a,b)
then adjacent_to(a,b,"boundary_contact")
confidence: "dependent on geometry precision and topology model"
rule vertex_contact_adjacency:
if touches_at_vertex(a,b) and adjacency_model_allows_vertex_contact(a,b)
then adjacent_to(a,b,"vertex_contact")
confidence: "dependent on declared adjacency convention"
SEMANTIC_EQUIVALENCE:
- "Distinguish adjacency, proximity, overlap, containment and network connectivity."
- "Map neighbouring, bordering and touching terms only when their spatial definitions match."
- "Preserve reference system, topology convention, spatial resolution and time."
CONFIDENCE:
range: [0,1]
factors: [geometry_accuracy, boundary_uncertainty, observation_quality, topology_convention, temporal_validity, provenance]
policy: "Do not increase confidence solely through inference chaining."
VALIDATION:
- "Check endpoint identity, geometry validity, reference systems, timestamps and provenance."
- "Reject unsupported transitive adjacency and unjustified proximity-to-adjacency conversions."
- "Flag conflicts between adjacency assertions and independently verified topology."
- "Retain alternate interpretations when boundary models or resolutions differ."
FLOW_HASH:
algorithm: "SHA-256"
input: "canonicalised ontology version, typed assertions, topology conventions, 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, validate, reconcile_geometry, recompute_adjacency, compare, publish]
rollback: true
AI_CONSUMPTION:
representation: "typed spatial knowledge graph with context-qualified adjacency edges"
outputs: [adjacency_triples, geometry_references, topology_context, uncertainty_annotations, provenance_records]
safeguards: [no_unsupported_transitivity, no_proximity_equivalence, preserve_crs_and_time, retain_topology_convention]
}
END FLOW ALGEBRA
Download Code
Copy to Clipboard