# GeoSpatial Place Integration Documentation ## Overview This document describes the integration of geospatial capabilities into the Heritage Custodian Ontology, following the TOOI (Dutch Government Ontology) pattern for geographic data. ## Architecture ``` ┌─────────────────────────────────────┐ │ OrganizationalChangeEvent │ │ (crm:E5_Event) │ └──────────────┬──────────────────────┘ │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ event_location │ │ from_location │ │ affected_territory │ │ (where event │ │ to_location │ │ (jurisdictions, │ │ occurred) │ │ (RELOCATION) │ │ boundaries) │ └────────┬────────┘ └────────┬────────┘ └──────────┬──────────┘ │ │ │ ▼ ▼ │ ┌─────────────────────────────────────────┐ │ │ CustodianPlace │ │ │ (Nominal Reference) │ │ │ │ │ │ place_name: "Rijksmuseum" │ │ │ place_specificity: BUILDING │ │ │ place_language: "nl" │ │ │ │ │ │ has_geospatial_location ────────┼──────┐ │ │ │ │ │ │ ┌───────────────────────────────┐ │ │ │ │ │ auxiliary_places │ │ │ │ │ └───────────────┬───────────────┘ │ │ │ │ │ │ │ │ └──────────────────┼──────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────┐ │ │ │ AuxiliaryPlace │ │ │ │ (org:Site) │ │ │ │ │ │ │ │ place_name: "Depot Amersfoort" │ │ │ │ auxiliary_place_type: STORAGE_FACILITY │ │ │ │ street_address: "Euterpelaan 25" │ │ │ │ │ │ │ │ has_geospatial_location ────────┼──────┤ │ │ │ │ │ └─────────────────────────────────────────┘ │ │ │ │ ▼ ▼ ┌─────────────────────────────┐ │ GeoSpatialPlace │ │ (geosparql:Feature) │ │ │ │ latitude: 52.3600 │ │ longitude: 4.8852 │ │ geometry_wkt: POLYGON(...) │ │ geonames_id: 6930126 │ │ osm_id: "way/27083908" │ │ │ └─────────────────────────────┘ ``` ## Classes ### CustodianPlace (crm:E53_Place) **Purpose**: Nominal place reference used to identify a heritage custodian. **Key Characteristics**: - Emic/contextual naming ("het herenhuis in de Schilderswijk") - May be vague ("the mansion") or specific ("Rijksmuseum") - Captures how people refer to custodians through place - Source: archival documents, oral history, guidebooks **NEW Slot**: `has_geospatial_location` - Links to GeoSpatialPlace for precise coordinates - Multivalued (historical boundaries at different time periods) - Optional (not all nominal references can be geolocated) ### AuxiliaryPlace (org:Site) **Purpose**: Secondary or subordinate physical location of a heritage custodian. **Key Characteristics**: - Branch offices, storage facilities, research centers - Like CustodianAppellation is to CustodianName (alternative → preferred) - W3C Org: `org:Site` for organizational premises - Has precise addresses unlike nominal CustodianPlace **NEW Slot**: `has_geospatial_location` - Links to GeoSpatialPlace for precise coordinates of subordinate sites - Enables mapping entire organizational footprint - Supports building footprints for storage depots - Multivalued (temporal history of boundaries) **Relationship to CustodianPlace**: ``` CustodianPlace (main) └── auxiliary_places → AuxiliaryPlace[] └── has_geospatial_location → GeoSpatialPlace ``` ### GeoSpatialPlace (geosparql:Feature) **Purpose**: Precise geospatial location with coordinates and geometry. **Key Characteristics**: - WGS84 coordinates (lat/lon) - WKT geometry (Point, Polygon, MultiPolygon) - External linking (GeoNames ID, OSM ID, Cadastral ID) - Accuracy metadata (meters) - Temporal validity (valid_from_geo, valid_to_geo) **TOOI Alignment**: - Follows `tooi:BestuurlijkeRuimte` pattern - SubClass of `geosparql:Feature` and `prov:Entity` - Uses `geosparql:hasGeometry` relationship ### OrganizationalChangeEvent (crm:E5_Event) **Purpose**: Documents organizational restructuring events. **NEW Place-Related Slots**: | Slot | Range | Purpose | |------|-------|---------| | `event_location` | CustodianPlace | Where the event occurred (board meeting, ceremony) | | `from_location` | CustodianPlace | Previous location (RELOCATION events) | | `to_location` | CustodianPlace | New location (RELOCATION events) | | `affected_territory` | GeoSpatialPlace | Geographic areas affected by the change | ## TOOI Ontology Pattern The Dutch Government TOOI ontology models administrative territories as `geosparql:Feature` subclasses: ```turtle tooi:BestuurlijkeRuimte a owl:Class ; rdfs:subClassOf geosparql:Feature, prov:Entity . tooi:BestuurlijkeRuimte-hasGeometry rdfs:subPropertyOf geosparql:hasGeometry . ``` Our implementation follows this pattern: ```yaml GeoSpatialPlace: class_uri: geosparql:Feature related_mappings: - prov:Entity - tooi:BestuurlijkeRuimte ``` ## Use Cases ### 1. Museum Building Location ```yaml CustodianPlace: place_name: "Rijksmuseum" place_specificity: BUILDING has_geospatial_location: - geospatial_id: "https://nde.nl/ontology/hc/geo/rijksmuseum-building" latitude: 52.3600 longitude: 4.8852 geometry_wkt: "POLYGON((4.883 52.359, 4.887 52.359, ...))" geometry_type: POLYGON geonames_id: 6930126 osm_id: "way/27083908" accuracy_meters: 1.0 spatial_resolution: "BUILDING" ``` ### 2. Archive Relocation Event ```yaml OrganizationalChangeEvent: id: "https://nde.nl/ontology/hc/event/archive-relocation-2020" event_type: RELOCATION event_date: "2020-06-01" event_description: "Archive relocates to climate-controlled facility" from_location: place_name: "Historic City Hall Basement" place_specificity: BUILDING has_geospatial_location: - latitude: 52.3700 longitude: 4.8900 to_location: place_name: "Modern Archive Building, Amstelveen" place_specificity: BUILDING has_geospatial_location: - latitude: 52.3012 longitude: 4.8631 affected_territory: - geospatial_id: "https://nde.nl/ontology/hc/geo/old-building" valid_to_geo: "2020-06-01" - geospatial_id: "https://nde.nl/ontology/hc/geo/new-building" valid_from_geo: "2020-06-01" ``` ### 3. Regional Archive Merger with Territorial Impact ```yaml OrganizationalChangeEvent: id: "https://nde.nl/ontology/hc/event/noord-hollands-archief-merger-2001" event_type: MERGER event_date: "2001-01-01" event_description: >- Merger of Gemeentearchief Haarlem and Rijksarchief in Noord-Holland to form Noord-Hollands Archief. Combined municipal and provincial archival jurisdictions. affected_territory: - geospatial_id: "https://nde.nl/ontology/hc/geo/haarlem-municipality" geometry_type: POLYGON feature_class: "A" feature_code: "A.ADM2" valid_to_geo: "2001-01-01" # Municipal archive jurisdiction ends - geospatial_id: "https://nde.nl/ontology/hc/geo/noord-holland-province" geometry_type: MULTIPOLYGON feature_class: "A" feature_code: "A.ADM1" valid_from_geo: "2001-01-01" # New combined jurisdiction begins ``` ### 4. Vague Place Reference (No Coordinates) ```yaml CustodianPlace: place_name: "the old mansion" place_specificity: VAGUE place_note: "Mentioned in 1850 letter, exact location unknown" # has_geospatial_location: null (cannot be geolocated) ``` ### 5. Off-Site Storage Facility with Building Footprint ```yaml AuxiliaryPlace: auxiliary_place_id: "https://nde.nl/ontology/hc/aux-place/rijksmuseum-depot-amersfoort" place_name: "Depot Amersfoort" auxiliary_place_type: STORAGE_FACILITY place_description: "Off-site storage facility for overflow collections. Climate-controlled." street_address: "Euterpelaan 25" postal_code: "3824 BK" city: "Amersfoort" country: "https://nde.nl/ontology/hc/country/NL" valid_from: "1995-06-01" is_auxiliary_of: "https://nde.nl/ontology/hc/place/rijksmuseum-main" has_geospatial_location: - geospatial_id: "https://nde.nl/ontology/hc/geo/depot-amersfoort-building" latitude: 52.1561 longitude: 5.3878 geometry_wkt: "POLYGON((5.385 52.154, 5.390 52.154, 5.390 52.158, 5.385 52.158, 5.385 52.154))" geometry_type: POLYGON osm_id: "way/234567890" accuracy_meters: 1.0 geospatial_source: "Kadaster BAG" spatial_resolution: "BUILDING" ``` ### 6. Museum with Multiple Sites (Full Example) ```yaml CustodianPlace: place_id: "https://nde.nl/ontology/hc/place/rijksmuseum-main" place_name: "Rijksmuseum" place_specificity: BUILDING has_geospatial_location: - geospatial_id: "https://nde.nl/ontology/hc/geo/rijksmuseum-building" latitude: 52.3600 longitude: 4.8852 geometry_type: POLYGON osm_id: "way/27083908" spatial_resolution: "BUILDING" auxiliary_places: - place_name: "Depot Amersfoort" auxiliary_place_type: STORAGE_FACILITY city: "Amersfoort" valid_from: "1995-06-01" has_geospatial_location: - latitude: 52.1561 longitude: 5.3878 spatial_resolution: "BUILDING" - place_name: "Rijksmuseum Schiphol" auxiliary_place_type: BRANCH_OFFICE city: "Schiphol" valid_from: "2002-10-01" has_geospatial_location: - latitude: 52.3086 longitude: 4.7639 accuracy_meters: 50.0 spatial_resolution: "BUILDING" ``` ## Ontology Mappings ### CIDOC-CRM Alignment | Slot | Property | Domain | Range | |------|----------|--------|-------| | `event_location` | crm:P7_took_place_at | E5_Event | E53_Place | | `from_location` | crm:P27_moved_from | E9_Move | E53_Place | | `to_location` | crm:P26_moved_to | E9_Move | E53_Place | ### GeoSPARQL Alignment | Slot | Property | Range | |------|----------|-------| | `has_geospatial_location` | geosparql:hasGeometry | geosparql:Feature | | `geometry_wkt` | geosparql:asWKT | geosparql:wktLiteral | ### WGS84 Basic Geo Alignment | Slot | Property | Range | |------|----------|-------| | `latitude` | geo:lat | xsd:float | | `longitude` | geo:long | xsd:float | | `altitude` | geo:alt | xsd:float | ## Files Modified | File | Changes | |------|---------| | `GeoSpatialPlace.yaml` | **NEW** - Geospatial location class | | `CustodianPlace.yaml` | Added `has_geospatial_location` slot | | `AuxiliaryPlace.yaml` | Added `has_geospatial_location` slot for subordinate sites | | `OrganizationalChangeEvent.yaml` | Added `event_location`, `from_location`, `to_location`, `affected_territory` slots | ## Temporal Tracking Both CustodianPlace and GeoSpatialPlace support temporal validity: **CustodianPlace**: - `valid_from` / `valid_to`: When this nominal reference was in use **GeoSpatialPlace**: - `valid_from_geo` / `valid_to_geo`: When this boundary/location was valid This enables tracking: 1. **Name changes**: "Royal Library" → "National Library" (CustodianPlace temporal) 2. **Boundary changes**: Municipal mergers (GeoSpatialPlace temporal) 3. **Relocations**: Building moves (OrganizationalChangeEvent + from/to_location) ## External Linking GeoSpatialPlace supports linking to external knowledge bases: | Field | Source | Purpose | |-------|--------|---------| | `geonames_id` | GeoNames | Hierarchical admin data, multilingual names | | `osm_id` | OpenStreetMap | Building footprints, street-level detail | | `cadastral_id` | National Cadastre | Legal property boundaries | ## Spatial Resolution Levels | Level | Description | Accuracy | Example | |-------|-------------|----------|---------| | BUILDING | Individual building | 1-5m | Museum building footprint | | PARCEL | Cadastral parcel | 5-20m | Property boundary | | STREET | Street address | 20-50m | Geocoded address | | NEIGHBORHOOD | Neighborhood/district | 100-500m | "Schilderswijk" | | CITY | City centroid | 500-2000m | Amsterdam | | REGION | Province/state | 2-10km | Noord-Holland | | COUNTRY | Country centroid | 10-100km | Netherlands | ## Validation Notes - `latitude` must be between -90.0 and 90.0 - `longitude` must be between -180.0 and 180.0 - WKT geometry must follow OGC Simple Features format - GeoNames IDs should resolve at `https://www.geonames.org/{id}/` - OSM IDs should follow format `{type}/{id}` (e.g., "way/27083908") ## See Also - [GeoSPARQL Specification](http://www.opengis.net/ont/geosparql) - [TOOI Ontology](https://identifier.overheid.nl/tooi/def/ont/) - [CIDOC-CRM E53_Place](http://www.cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E53) - [GeoNames API](https://www.geonames.org/) - [OpenStreetMap](https://www.openstreetmap.org/)