386 lines
16 KiB
Markdown
386 lines
16 KiB
Markdown
# 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/)
|