Refactor Access schema and related components

- Updated Access.yaml to replace properties with new slots: has_or_had_type, has_or_had_user_category, condition_of_access, and has_or_had_description.
- Introduced AccessTypeEnum for standardized access types.
- Migrated eligible_users to has_or_had_user_category slot.
- Adjusted examples in Access.yaml to reflect new slot structure.
- Modified AuxiliaryPlace, CustodianPlace, GeoSpatialPlace, ServiceArea schemas to use has_or_had_format for geometry representation.
- Added new slots and enums for better categorization and access control.
This commit is contained in:
kempersc 2026-01-28 15:11:20 +01:00
parent 4a518f587c
commit 7b4e113a5a
9 changed files with 103 additions and 88 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-28T14:04:12.253Z",
"generated": "2026-01-28T14:11:21.183Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3000,
"categoryCounts": {

View file

@ -24,6 +24,11 @@ imports:
- ./TimeSpan
- ../slots/has_or_had_frequency
- ./Frequency
- ../slots/condition_of_access
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ../slots/has_or_had_user_category
- ../enums/AccessTypeEnum
classes:
Access:
@ -36,10 +41,10 @@ classes:
data capturing access types, eligible users, conditions, and restrictions.
**Key Properties**:
- `access_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.)
- `eligible_users`: Who can access (public, students, faculty, researchers)
- `access_conditions`: Conditions or requirements for access
- `access_restrictions`: Specific restrictions that apply
- `has_or_had_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.)
- `has_or_had_user_category`: Who can access (public, students, faculty, researchers)
- `condition_of_access`: Conditions or requirements for access
- `has_or_had_description`: Free-text description
- `temporal_extent`: When this access policy applies
**Access Types**:
@ -67,16 +72,22 @@ classes:
- crm:E30_Right
slots:
- eligible_users
- has_or_had_type
- has_or_had_user_category
- condition_of_access
- has_or_had_description
- temporal_extent
- is_digital_access
- has_or_had_frequency
slot_usage:
eligible_users:
has_or_had_type:
range: AccessTypeEnum
required: true
description: Type of access offered
has_or_had_user_category:
required: false
range: string
multivalued: true
description: |
Categories of users eligible for this access.
Examples: "enrolled students", "faculty", "visiting scholars",
@ -97,7 +108,7 @@ classes:
is_digital_access:
required: false
range: boolean
description: Whether this access is for digital materials
description: Whether this is digital access
has_or_had_frequency:
required: false
range: Frequency
@ -121,100 +132,42 @@ classes:
examples:
- value:
access_type: PUBLIC
access_description: "Open to general public during gallery hours"
eligible_users:
has_or_had_type: PUBLIC
has_or_had_description: "Open to general public during gallery hours"
has_or_had_user_category:
- "general public"
access_conditions:
condition_of_access:
- "during posted gallery hours"
description: "Public access during gallery hours"
- value:
access_type: BY_APPOINTMENT
eligible_users:
has_or_had_type: BY_APPOINTMENT
has_or_had_user_category:
- "credentialed researchers"
- "graduate students with faculty sponsor"
access_conditions:
condition_of_access:
- "48-hour advance booking required"
- "handling training required for original materials"
access_restrictions:
- "fragile materials limited to supervised viewing only"
description: "Research access by appointment with conditions"
- value:
access_type: ACADEMIC
access_description: "Open to enrolled students and faculty; public by appointment"
eligible_users:
has_or_had_type: ACADEMIC
has_or_had_description: "Open to enrolled students and faculty; public by appointment"
has_or_had_user_category:
- "enrolled students"
- "faculty"
- "research staff"
access_conditions:
condition_of_access:
- "valid university ID"
is_digital_access: false
description: "Academic community access with public by appointment"
- value:
access_type: DIGITAL_ONLY
access_description: "Collection accessible only through online database"
eligible_users:
has_or_had_type: DIGITAL_ONLY
has_or_had_description: "Collection accessible only through online database"
has_or_had_user_category:
- "anyone with internet access"
is_digital_access: true
description: "Digital-only access"
slots:
access_type:
slot_uri: dcterms:accessRights
description: Type of access offered
range: string
required: true
eligible_users:
slot_uri: schema:eligibleRegion
description: Categories of users eligible for access
range: string
multivalued: true
access_conditions:
slot_uri: schema:termsOfService
description: Conditions for access
range: string
multivalued: true
access_restrictions:
slot_uri: schema:usageInfo
description: Restrictions on access
range: string
multivalued: true
access_description:
slot_uri: schema:description
description: Free-text description of access policy
range: string
is_digital_access:
slot_uri: schema:isAccessibleForFree
description: Whether this is digital access
range: boolean
enums:
AccessTypeEnum:
description: Types of access to collections or services
permissible_values:
PUBLIC:
description: Open to general public
BY_APPOINTMENT:
description: Requires advance appointment
ACADEMIC:
description: Restricted to academic community
RESEARCHER:
description: Restricted to credentialed researchers
MEMBER:
description: Requires membership
RESTRICTED:
description: Limited access with specific conditions
CLOSED:
description: Not currently accessible
DIGITAL_ONLY:
description: Available only in digital form
MIXED:
description: Multiple access types apply

View file

@ -282,7 +282,8 @@ classes:
latitude: 52.1561
longitude: 5.3878
has_or_had_geometry:
- as_wkt: POLYGON((5.385 52.154, 5.390 52.154, 5.390 52.158, 5.385 52.158, 5.385 52.154))
- has_or_had_format:
has_or_had_value: POLYGON((5.385 52.154, 5.390 52.154, 5.390 52.158, 5.385 52.158, 5.385 52.154))
has_or_had_type:
has_or_had_label: POLYGON
osm_id: way/234567890
@ -296,7 +297,8 @@ classes:
latitude: 52.3086
longitude: 4.7639
has_or_had_geometry:
- as_wkt: POINT(4.7639 52.3086)
- has_or_had_format:
has_or_had_value: POINT(4.7639 52.3086)
has_or_had_type:
has_or_had_label: POINT
geonames_id: 2747891

View file

@ -284,7 +284,8 @@ classes:
latitude: 52.36
longitude: 4.8852
has_or_had_geometry:
- as_wkt: POLYGON((4.8830 52.3590, 4.8870 52.3590, 4.8870 52.3610, 4.8830 52.3610, 4.8830 52.3590))
- has_or_had_format:
has_or_had_value: POLYGON((4.8830 52.3590, 4.8870 52.3590, 4.8870 52.3610, 4.8830 52.3610, 4.8830 52.3590))
has_or_had_type:
has_or_had_label: POLYGON
geonames_id: 6930126

View file

@ -10,12 +10,17 @@ default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
classes:
DetectedLandmark:
class_uri: schema:LandmarksOrHistoricalBuildings
description: Detected landmark.
slots:
- has_or_had_label
- is_or_was_generated_by
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration

View file

@ -158,7 +158,8 @@ classes:
precision: 1.0
altitude: 0.0
has_or_had_geometry:
- as_wkt: POLYGON((4.8830 52.3590, 4.8870 52.3590, 4.8870 52.3610, 4.8830 52.3610, 4.8830 52.3590))
- has_or_had_format:
has_or_had_value: POLYGON((4.8830 52.3590, 4.8870 52.3590, 4.8870 52.3610, 4.8830 52.3610, 4.8830 52.3590))
has_or_had_type:
has_or_had_label: POLYGON
coordinate_reference_system: EPSG:4326
@ -196,7 +197,8 @@ classes:
longitude: 4.8
precision: 1000.0
has_or_had_geometry:
- as_wkt: MULTIPOLYGON(((4.5 52.2, 5.2 52.2, 5.2 52.8, 4.5 52.8, 4.5 52.2)))
- has_or_had_format:
has_or_had_value: MULTIPOLYGON(((4.5 52.2, 5.2 52.2, 5.2 52.8, 4.5 52.8, 4.5 52.2)))
has_or_had_type:
has_or_had_label: MULTIPOLYGON
coordinate_reference_system: EPSG:4326

View file

@ -162,7 +162,8 @@ classes:
has_boundary:
- geospatial_id: https://nde.nl/ontology/hc/geo/nha-boundary
has_or_had_geometry:
- as_wkt: MULTIPOLYGON(((4.5 52.2, 5.0 52.2, 5.0 52.5, 4.5 52.5, 4.5 52.2)))
- has_or_had_format:
has_or_had_value: MULTIPOLYGON(((4.5 52.2, 5.0 52.2, 5.0 52.5, 4.5 52.5, 4.5 52.2)))
has_or_had_type:
has_or_had_label: MULTIPOLYGON
temporal_extent:

View file

@ -0,0 +1,28 @@
id: https://nde.nl/ontology/hc/enum/AccessTypeEnum
name: AccessTypeEnum
title: Access Type Enum
description: Types of access to collections or services.
prefixes:
linkml: https://w3id.org/linkml/
enums:
AccessTypeEnum:
description: Types of access to collections or services
permissible_values:
ACADEMIC:
description: Restricted to academic community
BY_APPOINTMENT:
description: Requires advance appointment
CLOSED:
description: Not currently accessible
DIGITAL_ONLY:
description: Available only in digital form
MEMBER:
description: Requires membership
MIXED:
description: Multiple access types apply
PUBLIC:
description: Open to general public
RESEARCHER:
description: Restricted to credentialed researchers
RESTRICTED:
description: Limited access with specific conditions

View file

@ -0,0 +1,23 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_user_category
name: has_or_had_user_category
title: Has or Had User Category
description: >-
Categories of users eligible for access.
MIGRATED from eligible_users.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
has_or_had_user_category:
slot_uri: schema:eligibleRegion
description: Categories of users eligible for access.
range: string
multivalued: true
inlined: true
annotations:
custodian_types: ["*"]
custodian_types_rationale: "Universal utility concept"