glam/schemas/20251121/linkml/modules/classes/ServiceArea.yaml
kempersc dfa667c90f Fix LinkML schema for valid RDF generation with proper slot_uri
Summary:
- Create 46 missing slot definition files with proper slot_uri values
- Add slot imports to main schema (01_custodian_name_modular.yaml)
- Fix YAML examples sections in 116+ class and slot files
- Fix PersonObservation.yaml examples section (nested objects → string literals)

Technical changes:
- All slots now have explicit slot_uri mapping to base ontologies (RiC-O, Schema.org, SKOS)
- Eliminates malformed URIs like 'custodian/:slot_name' in generated RDF
- gen-owl now produces valid Turtle with 153,166 triples

New slot files (46):
- RiC-O slots: rico_note, rico_organizational_principle, rico_has_or_had_holder, etc.
- Scope slots: scope_includes, scope_excludes, archive_scope
- Organization slots: organization_type, governance_authority, area_served
- Platform slots: platform_type_category, portal_type_category
- Social media slots: social_media_platform_category, post_type_*
- Type hierarchy slots: broader_type, narrower_types, custodian_type_broader
- Wikidata slots: wikidata_equivalent, wikidata_mapping

Generated output:
- schemas/20251121/rdf/01_custodian_name_modular_20260107_134534_clean.owl.ttl (6.9MB)
- Validated with rdflib: 153,166 triples, no malformed URIs
2026-01-07 13:48:03 +01:00

425 lines
16 KiB
YAML

id: https://nde.nl/ontology/hc/class/ServiceArea
name: service_area_class
title: ServiceArea Class
prefixes:
schema: http://schema.org/
tooi: https://identifier.overheid.nl/tooi/def/ont/
geosparql: http://www.opengis.net/ont/geosparql#
dcterms: http://purl.org/dc/terms/
org: http://www.w3.org/ns/org#
prov: http://www.w3.org/ns/prov#
rico: https://www.ica.org/standards/RiC/ontology#
imports:
- linkml:types
- ../metadata
- ./GeoSpatialPlace
- ./CustodianLegalStatus
- ./Country
- ./Subregion
- ./Settlement
- ./TimeSpan
- ../enums/ServiceAreaTypeEnum
- ../slots/temporal_extent
- ../slots/served_by
- ../slots/class_metadata_slots
slots:
service_area_id:
identifier: true
range: uriorcurie
description: Unique identifier for this service area
service_area_name:
range: string
slot_uri: schema:name
description: |
Human-readable name for the service area.
Examples:
- "Noord-Holland Province" (provincial archive service area)
- "Amsterdam Municipal Libraries Service District"
- "Veluwe Regional Heritage Area"
examples:
- value: Noord-Hollands Archief Werkgebied
description: Service area of the Noord-Hollands Archief
service_area_description:
range: string
slot_uri: dcterms:description
description: |
Description of the service area, including historical context if relevant.
May include:
- Historical boundaries and changes
- Relationship to administrative divisions
- Special notes about service scope
examples:
- value: Serves the municipalities of Haarlem, Heemskerk, Beverwijk, and surrounding
areas. Area expanded in 2001 after merger with Gemeentearchief Haarlem.
service_area_type:
range: ServiceAreaTypeEnum
slot_uri: dcterms:type
description: |
Classification of the service area type.
Types include:
- MUNICIPAL: Single municipality service area
- PROVINCIAL: Entire province coverage
- REGIONAL: Multi-municipality regional area
- HISTORICAL: Historical administrative boundary (no longer current)
- NATIONAL: Country-wide service area
- CUSTOM: Non-standard or negotiated service area
examples:
- value: PROVINCIAL
description: Covers entire province
covers_country:
range: Country
slot_uri: schema:addressCountry
description: |
Country that this service area is within.
Links to Country class with ISO 3166-1 codes.
examples:
- value: https://nde.nl/ontology/hc/country/NL
description: Service area in Netherlands
covers_subregions:
range: Subregion
multivalued: true
inlined_as_list: true
slot_uri: schema:addressRegion
description: |
Subregion(s) covered by this service area.
Links to Subregion class with ISO 3166-2 codes.
A service area may cover:
- Single subregion (provincial archive covering one province)
- Multiple subregions (regional archive spanning provinces)
- Part of a subregion (municipal archive within province)
examples:
- value:
- https://nde.nl/ontology/hc/subregion/NL-NH
description: Covers Noord-Holland province
covers_settlements:
range: Settlement
multivalued: true
inlined_as_list: true
slot_uri: schema:containsPlace
description: |
Specific settlements (cities, towns, villages) covered by this service area.
Links to Settlement class with GeoNames identifiers.
Use when:
- Service area covers specific municipalities (not entire province)
- Municipal archive serving one or more cities
- Regional archive with defined list of served settlements
GeoNames IDs disambiguate settlements with same name.
examples:
- value:
- https://nde.nl/ontology/hc/settlement/2755003
- https://nde.nl/ontology/hc/settlement/2754669
description: Covers Haarlem (2755003) and Heemskerk (2754669)
has_boundary:
range: GeoSpatialPlace
multivalued: true
inlined_as_list: true
slot_uri: geosparql:hasGeometry
description: |
Geospatial boundary/geometry of the service area.
Links to GeoSpatialPlace with coordinates, WKT, and boundary polygons.
**TOOI Alignment**:
Following tooi:BestuurlijkeRuimte-hasGeometry pattern.
**Multiple Boundaries**:
A service area may have multiple boundaries:
- Current boundary (valid_to_geo = null)
- Historical boundaries (valid_to_geo set to boundary change date)
**Temporal Tracking**:
Use GeoSpatialPlace.valid_from_geo and valid_to_geo to track
boundary changes over time (e.g., municipal mergers).
**Example - Archive Service Area Change**:
```yaml
has_boundary:
- geospatial_id: "boundary-nha-pre-2001"
geometry_wkt: "POLYGON(...)"
valid_to_geo: "2001-01-01"
- geospatial_id: "boundary-nha-post-2001"
geometry_wkt: "POLYGON(...)"
valid_from_geo: "2001-01-01"
```
examples:
- value:
geospatial_id: https://nde.nl/ontology/hc/geo/nha-service-area
geometry_wkt: MULTIPOLYGON(((4.5 52.2, 5.2 52.2, 5.2 52.8, 4.5 52.8, 4.5 52.2)))
geometry_type: MULTIPOLYGON
coordinate_reference_system: EPSG:4326
description: Noord-Hollands Archief service area boundary
is_historical_boundary:
range: boolean
description: |
Indicates if this service area represents a historical boundary
that no longer exists in current administrative geography.
Use for:
- Pre-merger municipal boundaries
- Historical territories (e.g., HALC data from 1500)
- Dissolved provinces or regions
When true:
- has_boundary should use historical GeoSpatialPlace data
- temporal_extent should indicate the period of validity
- Display styling should indicate historical nature (e.g., brown/sepia)
ifabsent: boolean(false)
examples:
- value: true
description: Historical boundary from pre-1800 territory
source_dataset:
range: string
slot_uri: dcterms:source
description: |
Source dataset for boundary data.
Common sources:
- "CBS Wijken en Buurten" (Dutch municipality boundaries)
- "HALC Historical Boundaries" (Historical Atlas of Low Countries)
- "Kadaster" (Dutch cadastral authority)
- "OpenStreetMap"
- "GADM" (Global Administrative Areas)
examples:
- value: HALC Historical Boundaries 1500
description: Historical boundary from HALC dataset
halc_adm1_code:
range: string
description: |
HALC (Historical Atlas of Low Countries) ADM1 territory code.
Used for mapping to historical boundary GeoJSON data.
Examples:
- "VI" for Vianen
- "TH" for Tholen
- "WA" for Wassenaar
examples:
- value: VI
description: HALC territory code for Vianen
halc_adm2_name:
range: string
description: |
HALC (Historical Atlas of Low Countries) ADM2 district name.
Used for more specific historical boundary matching.
examples:
- value: Vianen
description: HALC district name
classes:
ServiceArea:
class_uri: schema:AdministrativeArea
description: |
Geographic area served by a heritage custodian institution.
**Dutch Term**: "Werkgebied" - the operational territory of an archive,
library, or museum where they provide services and collect materials.
**CRITICAL DISTINCTION: ServiceArea vs Jurisdiction**
ServiceArea and Jurisdiction are fundamentally different concepts:
| Aspect | ServiceArea | Jurisdiction |
|--------|-------------|--------------|
| **Definition** | Geographic area where a SPECIFIC custodian operates ("werkgebied") | Geographic area where specific LAWS AND POLICIES apply |
| **Scope** | Operational territory | Legal framework scope |
| **Sharing** | UNIQUE to each custodian | SHARED by multiple custodians operating under same legal framework |
| **Example** | Each municipal archive has its own municipality as service area | Dutch national law creates a jurisdiction for all municipal archives in NL |
**Key Example**:
A national law (e.g., Archiefwet) creates a JURISDICTION covering the entire Netherlands.
ALL Dutch municipal archives operate within this SAME jurisdiction - they share it!
But each municipal archive has a DIFFERENT ServiceArea (werkgebied) - typically
their own municipality or region.
- Noord-Hollands Archief: ServiceArea = Haarlem + surrounding municipalities, Jurisdiction = NL (Dutch national law)
- Gemeentearchief Amsterdam: ServiceArea = Amsterdam municipality, Jurisdiction = NL (same!)
- Regionaal Archief Tilburg: ServiceArea = Tilburg region, Jurisdiction = NL (same!)
All three have DIFFERENT service areas but share the SAME jurisdiction.
**Purpose**:
ServiceArea captures the geographic jurisdiction/coverage of heritage institutions:
1. **Archives**: The municipalities whose records they manage
- Provincial archives cover entire province
- Regional archives cover specific municipalities
- Municipal archives cover single city
2. **Libraries**: The service district for lending/access
- Public libraries serve defined municipalities
- Academic libraries may have national scope
3. **Museums**: Geographic scope of collection mandate
- Regional museums collect from specific area
- National museums have country-wide scope
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **Schema.org** | `schema:areaServed` | Primary property linking Organization → ServiceArea |
| **Schema.org** | `schema:AdministrativeArea` | Class for geographic regions under jurisdiction |
| **TOOI** | `tooi:BestuurlijkeRuimte` | Dutch government pattern for administrative spaces |
| **TOOI** | `tooi:JuridischeRuimte` | Operational/effect area of legal instruments |
| **GeoSPARQL** | `geosparql:Feature` | Geospatial representation base class |
| **W3C Org** | `org:hasSite` | Related concept for organizational presence |
**Relationship to Other Classes**:
```
CustodianLegalStatus --schema:areaServed--> ServiceArea
|
├──> GeoSpatialPlace (boundary polygon)
├──> Country (covered country)
├──> Subregion (covered provinces)
└──> Settlement (covered cities)
```
**Historical vs Current Boundaries**:
Service areas may change over time due to:
- Municipal mergers (gemeentelijke herindeling)
- Archive reorganizations
- Administrative boundary changes
Use `is_historical_boundary: true` and `temporal_extent` to track historical areas.
**Display Styling**:
| Boundary Type | Border Color | Fill Color | Opacity |
|---------------|--------------|------------|---------|
| Current | Blue (#3498db) | Blue (#3498db) | 20% |
| Historical | Brown (#8b4513) | Goldenrod (#daa520) | 20% |
**Example - Noord-Hollands Archief**:
The NHA serves multiple municipalities in Noord-Holland province.
Before the 2001 merger, Gemeentearchief Haarlem and Rijksarchief Noord-Holland
had separate service areas. After merger, the combined service area includes
both the city and provincial scope.
exact_mappings:
- schema:AdministrativeArea
close_mappings:
- tooi:BestuurlijkeRuimte
- tooi:JuridischeRuimte
- geosparql:Feature
related_mappings:
- schema:Place
- dcterms:Location
- rico:Place
slots:
- covers_country
- covers_settlements
- covers_subregions
- halc_adm1_code
- halc_adm2_name
- has_boundary
- is_historical_boundary
- served_by
- service_area_description
- service_area_id
- service_area_name
- service_area_type
- source_dataset
- specificity_annotation
- template_specificity
- temporal_extent
slot_usage:
service_area_id:
identifier: true
required: true
description: Unique identifier for this service area
examples:
- value: https://nde.nl/ontology/hc/servicearea/nha-werkgebied
- value: https://nde.nl/ontology/hc/servicearea/vianen-historical-1500
service_area_name:
required: true
description: Human-readable name (REQUIRED)
service_area_type:
required: false
description: Type classification helps determine display and query behavior
has_boundary:
description: |
Links to GeoSpatialPlace for actual boundary geometry.
Multiple boundaries support temporal tracking.
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- Represents the geographic SERVICE AREA ('werkgebied') of a heritage custodian
- UNIQUE to each custodian - each archive/library/museum has its own service area
- NOT to be confused with Jurisdiction, which is the legal framework scope SHARED
by multiple custodians
- 'Example: All Dutch municipal archives share the same Jurisdiction (NL/Archiefwet)
but each has a DIFFERENT ServiceArea'
- 'ServiceArea answers: ''Which geographic area does this specific custodian serve?'''
- 'Jurisdiction answers: ''Under which legal framework does this entity operate?'''
- Links to GeoSpatialPlace for actual boundary polygons
- Supports historical boundaries via is_historical_boundary and temporal_extent
- HALC fields (halc_adm1_code, halc_adm2_name) enable historical boundary lookups
- 'Display styling: current=blue, historical=brown/goldenrod'
- Archives use werkgebied to define which municipalities they serve
- Museums may have service areas indicating collection geographic scope
see_also:
- https://schema.org/areaServed
- https://schema.org/AdministrativeArea
- https://identifier.overheid.nl/tooi/def/ont/
- http://www.opengis.net/ont/geosparql
examples:
- value:
service_area_id: https://nde.nl/ontology/hc/servicearea/nha-werkgebied
service_area_name: Noord-Hollands Archief Werkgebied
service_area_description: Service area covering Haarlem and surrounding municipalities
in Noord-Holland province
service_area_type: REGIONAL
covers_country:
alpha_2: NL
covers_subregions:
- iso_3166_2_code: NL-NH
name: Noord-Holland
covers_settlements:
- geonames_id: 2755003
name: Haarlem
- geonames_id: 2754669
name: Heemskerk
has_boundary:
- geospatial_id: https://nde.nl/ontology/hc/geo/nha-boundary
geometry_type: MULTIPOLYGON
geometry_wkt: MULTIPOLYGON(((4.5 52.2, 5.0 52.2, 5.0 52.5, 4.5 52.5, 4.5
52.2)))
valid_from_geo: '2001-01-01'
is_historical_boundary: false
served_by: https://nde.nl/ontology/hc/legal/noord-hollands-archief
description: Current service area for Noord-Hollands Archief
- value:
service_area_id: https://nde.nl/ontology/hc/servicearea/vianen-historical-1500
service_area_name: Graafschap Vianen (Historical)
service_area_description: Historical territory of the County of Vianen, circa
1500
service_area_type: HISTORICAL
covers_country:
alpha_2: NL
has_boundary:
- geospatial_id: https://nde.nl/ontology/hc/geo/vianen-1500
geometry_type: POLYGON
source_dataset: HALC
valid_from_geo: '1500-01-01'
valid_to_geo: '1795-01-01'
is_historical_boundary: true
temporal_extent:
begin_of_the_begin: '1500-01-01'
end_of_the_end: '1795-01-01'
halc_adm1_code: VI
halc_adm2_name: Vianen
served_by: https://nde.nl/ontology/hc/legal/gemeentearchief-vianen
source_dataset: HALC Historical Boundaries 1500
description: Historical service area for Gemeentearchief Vianen based on 1500
territory