glam/schemas/20251121/linkml/modules/classes/AccessPolicy.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

473 lines
17 KiB
YAML

id: https://nde.nl/ontology/hc/class/AccessPolicy
name: access_policy_class
title: AccessPolicy Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
premis: http://www.loc.gov/premis/rdf/v3/
dcterms: http://purl.org/dc/terms/
rico: https://www.ica.org/standards/RiC/ontology#
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/valid_from
- ../slots/valid_to
- ../slots/embargo_end_date
- ../slots/contact_email
- ../slots/policy_id
- ../slots/policy_name
- ../slots/class_metadata_slots
classes:
AccessPolicy:
class_uri: premis:RightsDeclaration
description: |
Access policy defining conditions under which heritage collections can be accessed.
**PURPOSE**:
AccessPolicy captures the access conditions governing a Collection:
- WHO can access (public, researchers, staff only)
- HOW access is granted (open, by appointment, with credentials)
- WHEN access is available (opening hours, embargo periods)
- WHAT restrictions apply (fragile materials, privacy, cultural sensitivity)
1. **PREMIS**:
- `premis:RightsDeclaration` - "An assertion of one or more rights or
permissions pertaining to an object and/or its content."
- Links to Collection via premis:hasRightsDeclaration
2. **Dublin Core**:
- `dcterms:accessRights` - "Information about who may access the resource
or an indication of its security status."
3. **RiC-O**:
- `rico:hasOrHadAllMembersWithAccessConditions` - Links RecordSet to access
conditions applying to all members
4. **RightsStatements.org**:
- Standardized rights statements for cultural heritage
- E.g., "In Copyright", "No Copyright", "Unknown Copyright"
**ACCESS LEVEL TAXONOMY**:
```
AccessPolicy (root)
├── OpenAccess
│ ├── PUBLIC_OPEN - No restrictions, walk-in access
│ ├── PUBLIC_REGISTRATION - Free registration required
│ └── PUBLIC_ONLINE - Digital access freely available
├── RestrictedAccess
│ ├── RESEARCHERS_ONLY - Academic researchers with credentials
│ ├── BY_APPOINTMENT - Advance booking required
│ ├── STAFF_ONLY - Internal access only
│ └── PERMISSION_REQUIRED - Written permission needed
├── ClosedAccess
│ ├── TEMPORARILY_CLOSED - Renovation, conservation
│ ├── EMBARGOED - Time-limited closure
│ ├── PERMANENTLY_CLOSED - Not accessible
│ └── REPATRIATED - Returned to community of origin
└── ConditionalAccess
├── CULTURALLY_SENSITIVE - Indigenous/sacred materials
├── PRIVACY_RESTRICTED - Personal data protection
├── FRAGILE_HANDLING - Special handling required
└── LEGAL_RESTRICTION - Copyright, legal constraints
```
**USE CASES**:
1. **Archive Open Access**:
```yaml
AccessPolicy:
policy_id: "hc:access-policy/nationaal-archief-open"
access_level: "PUBLIC_OPEN"
access_description: "Open to all visitors during reading room hours"
conditions: "Valid ID required for registration"
```
2. **Restricted Research Materials**:
```yaml
AccessPolicy:
policy_id: "hc:access-policy/university-special-collections"
access_level: "RESEARCHERS_ONLY"
access_description: "Academic researchers with institutional affiliation"
conditions: "Letter of introduction required from supervising institution"
appointment_required: true
```
3. **Embargoed Collection**:
```yaml
AccessPolicy:
policy_id: "hc:access-policy/donor-embargo-2050"
access_level: "EMBARGOED"
access_description: "Closed until 2050 per donor agreement"
embargo_end_date: "2050-01-01"
embargo_reason: "Donor privacy restrictions"
```
4. **Culturally Sensitive**:
```yaml
AccessPolicy:
policy_id: "hc:access-policy/indigenous-protocols"
access_level: "CULTURALLY_SENSITIVE"
access_description: "Access governed by Traditional Knowledge protocols"
conditions: "Consultation with originating community required"
cultural_protocol_url: "https://localcontexts.org/tk-labels/"
```
**RELATIONSHIP TO DIM ARCHIVE**:
DimArchive (Dark archive / Preservation-only storage) uses AccessPolicy to express:
- Materials stored for preservation, not current access
- Access restricted until triggering conditions (time, event)
- "Gray literature" or un-catalogued backlogs awaiting processing
exact_mappings:
- premis:RightsDeclaration
- dcterms:accessRights
close_mappings:
- rico:Rule
- schema:ActionAccessSpecification
related_mappings:
- rico:hasOrHadAllMembersWithAccessConditions
slots:
- access_description
- access_level
- appointment_required
- conditions
- contact_email
- credentials_required
- cultural_protocol_url
- embargo_end_date
- embargo_reason
- fee_amount
- fee_required
- legal_basis
- policy_id
- policy_name
- registration_required
- review_date
- rights_statement
- rights_statement_url
- specificity_annotation
- template_specificity
- valid_from
- valid_to
slot_usage:
policy_id:
slot_uri: dcterms:identifier
description: |
Unique identifier for this access policy.
range: uriorcurie
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/access-policy/open-access
description: Standard open access policy
policy_name:
slot_uri: skos:prefLabel
description: |
Human-readable name for this policy.
range: string
required: true
examples:
- value: Open Access
description: Public open access
- value: Researchers Only
description: Restricted to researchers
- value: Embargoed until 2050
description: Time-limited closure
access_level:
slot_uri: dcterms:accessRights
description: |
Primary access level classification.
Values:
- PUBLIC_OPEN: No restrictions, walk-in access
- PUBLIC_REGISTRATION: Free registration required
- PUBLIC_ONLINE: Digital access freely available
- RESEARCHERS_ONLY: Academic researchers with credentials
- BY_APPOINTMENT: Advance booking required
- STAFF_ONLY: Internal access only
- PERMISSION_REQUIRED: Written permission needed
- TEMPORARILY_CLOSED: Renovation, conservation
- EMBARGOED: Time-limited closure
- PERMANENTLY_CLOSED: Not accessible
- CULTURALLY_SENSITIVE: Indigenous/sacred materials
- PRIVACY_RESTRICTED: Personal data protection
- FRAGILE_HANDLING: Special handling required
- LEGAL_RESTRICTION: Copyright, legal constraints
range: string
required: true
examples:
- value: PUBLIC_OPEN
- value: RESEARCHERS_ONLY
- value: EMBARGOED
access_description:
slot_uri: dcterms:description
description: |
Narrative description of access conditions.
range: string
examples:
- value: Open to all visitors during reading room hours (Mon-Fri 9-17)
description: Archive public access
- value: Access restricted to academic researchers with institutional affiliation
description: University special collections
conditions:
slot_uri: rico:conditionOfAccess
description: |
Specific conditions or requirements for access.
RiC-O: conditionOfAccess for access requirements.
range: string
multivalued: true
examples:
- value:
- Valid government-issued ID required
- Registration form must be completed
- Bags and coats must be stored in lockers
description: Archive access conditions
rights_statement:
slot_uri: dcterms:rights
description: |
Rights statement text (from RightsStatements.org or similar).
range: string
examples:
- value: In Copyright
description: Copyright protected
- value: No Copyright - United States
description: Public domain (US)
rights_statement_url:
slot_uri: dcterms:rights
description: |
URL to standardized rights statement (RightsStatements.org).
range: uri
examples:
- value: http://rightsstatements.org/vocab/InC/1.0/
description: In Copyright
- value: http://rightsstatements.org/vocab/NoC-US/1.0/
description: No Copyright - United States
appointment_required:
slot_uri: schema:requiresAppointment
description: |
Whether advance appointment is required.
range: boolean
examples:
- value: true
description: Appointment required
- value: false
description: Walk-in access
registration_required:
slot_uri: schema:eligibleCustomerType
description: |
Whether registration is required (even for free access).
range: boolean
examples:
- value: true
description: Must register as reader
credentials_required:
slot_uri: schema:eligibleCustomerType
description: |
Type of credentials required for access.
Values:
- NONE: No credentials needed
- INSTITUTIONAL: Affiliation with research institution
- PROFESSIONAL: Professional membership (archivist, librarian)
- ACADEMIC: Academic degree or enrollment
- GOVERNMENT: Government clearance
range: string
examples:
- value: INSTITUTIONAL
description: Must be affiliated with research institution
fee_required:
slot_uri: schema:isAccessibleForFree
description: |
Whether access requires payment.
range: boolean
examples:
- value: false
description: Free access
- value: true
description: Fee required
fee_amount:
slot_uri: schema:price
description: |
Fee amount if access requires payment.
range: string
examples:
- value: €5.00 per day
description: Daily reading room fee
- value: Free for researchers, €10 for general public
description: Tiered fee structure
embargo_end_date:
slot_uri: premis:endDate
description: |
Date when embargo ends (for EMBARGOED access level).
PREMIS: endDate for rights expiration.
range: date
examples:
- value: '2050-01-01'
description: Embargo lifts January 1, 2050
embargo_reason:
slot_uri: premis:determinationBasis
description: |
Reason for embargo (donor restriction, legal, etc.).
range: string
examples:
- value: Donor privacy restrictions per deed of gift
description: Donor-imposed embargo
- value: Contains personal data protected under GDPR
description: Privacy law embargo
cultural_protocol_url:
slot_uri: dcterms:conformsTo
description: |
URL to cultural protocol (for CULTURALLY_SENSITIVE materials).
E.g., Local Contexts Traditional Knowledge labels.
range: uri
examples:
- value: https://localcontexts.org/tk-labels/
description: Traditional Knowledge labels
legal_basis:
slot_uri: premis:statute
description: |
Legal basis for access restriction.
PREMIS: statute for legal foundation.
range: string
examples:
- value: General Data Protection Regulation (GDPR)
description: EU privacy law
- value: Freedom of Information Act exemption 6
description: US FOIA exemption
review_date:
slot_uri: dcterms:modified
description: |
Date when access policy should be reviewed.
range: date
examples:
- value: '2025-12-31'
description: Annual review date
contact_email:
slot_uri: schema:email
description: |
Email contact for access inquiries.
range: string
examples:
- value: access@nationaalarchief.nl
description: Access request contact
valid_from:
slot_uri: schema:validFrom
description: |
Date when this policy became effective.
range: date
valid_to:
slot_uri: schema:validThrough
description: |
Date when this policy expires (if applicable).
range: date
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- AccessPolicy defines access conditions for Collection instances
- Used by Collection.access_policy_ref to link policies to holdings
- Supports RightsStatements.org and Local Contexts protocols
- Temporal validity enables policy versioning and embargo expiration
- DimArchive (dark archive) uses AccessPolicy to express preservation-only access
see_also:
- http://www.loc.gov/premis/rdf/v3/RightsDeclaration
- https://rightsstatements.org/
- https://localcontexts.org/
- https://www.ica.org/standards/RiC/ontology#Rule
examples:
- value:
policy_id: https://nde.nl/ontology/hc/access-policy/nationaal-archief-open
policy_name: Nationaal Archief Public Access
access_level: PUBLIC_OPEN
access_description: Open to all visitors during reading room hours
conditions:
- Valid government-issued ID required
- Registration form must be completed
- Original materials handled with gloves
registration_required: true
appointment_required: false
fee_required: false
contact_email: studiezaal@nationaalarchief.nl
description: Standard archive public access policy
- value:
policy_id: https://nde.nl/ontology/hc/access-policy/donor-embargo-2050
policy_name: Embargoed until 2050
access_level: EMBARGOED
access_description: Collection closed until 2050 per donor agreement
embargo_end_date: '2050-01-01'
embargo_reason: Donor privacy restrictions per deed of gift
legal_basis: Deed of Gift clause 4.2
review_date: '2049-06-01'
description: Time-limited embargo policy
- value:
policy_id: https://nde.nl/ontology/hc/access-policy/dim-archive-preservation
policy_name: DIM Archive - Preservation Only
access_level: TEMPORARILY_CLOSED
access_description: Materials in preservation storage, not currently accessible
conditions:
- Awaiting processing and cataloging
- Access may be arranged for urgent research needs
appointment_required: true
credentials_required: PROFESSIONAL
contact_email: preservation@archive.org
description: Dark archive / DIM access policy
slots:
access_level:
description: Primary access level classification
range: string
access_description:
description: Narrative description of access
range: string
conditions:
description: Specific access conditions
range: string
multivalued: true
rights_statement:
description: Rights statement text
range: string
rights_statement_url:
description: URL to standardized rights statement
range: uri
appointment_required:
description: Whether appointment is required
range: boolean
registration_required:
description: Whether registration is required
range: boolean
credentials_required:
description: Type of credentials required
range: string
fee_required:
description: Whether fee is required
range: boolean
fee_amount:
description: Fee amount description
range: string
embargo_reason:
description: Reason for embargo
range: string
cultural_protocol_url:
description: URL to cultural protocol
range: uri
legal_basis:
description: Legal basis for restriction
range: string
review_date:
description: Policy review date
range: date