glam/schemas/20251121/linkml/modules/classes/AccessPolicy.yaml
kempersc 2d09776856 Refactor StorageCondition schema: Migrate compliance_status to has_or_had_status with ComplianceStatus class
- Removed compliance_status slot and replaced it with has_or_had_status.
- Updated has_or_had_status to use ComplianceStatus for structured representation.
- Adjusted examples to reflect new structure for compliance status.
- Updated documentation to indicate migration and provide details on the ComplianceStatus class.
2026-01-22 16:22:16 +01:00

397 lines
19 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
# Migrated per slot_fixes.yaml (Rule 53) - 2026-01-14
# valid_from + valid_to → temporal_extent + TimeSpan (with begin_of_the_begin/end_of_the_end)
- ../slots/temporal_extent
- ./TimeSpan
- ../slots/embargo_end_date
- ../slots/contact_email
- ../slots/policy_id
- ../slots/policy_name
- ../slots/has_or_had_access_description
- ../slots/has_or_had_access_level
# RESTORED 2026-01-15: requires_appointment has correct semantics (schema:reservationRequired)
# The is_or_was_required slot was incorrectly using schema:isRequired which is for form field validation
# KEPT for backward compatibility - simple boolean for basic use cases
- ../slots/requires_appointment
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- ../slots/poses_or_posed_condition
- ./Condition
- ../slots/credentials_required
- ../slots/cultural_protocol_url
- ../slots/embargo_reason
- ../slots/fee_amount
- ../slots/fee_required
- ../slots/legal_basis
- ../slots/registration_required
- ../slots/review_date
- ../slots/rights_statement
- ../slots/rights_statement_url
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
# ADDED 2026-01-17: Rich appointment modeling per slot_fixes.yaml revision for appointment_required
# These enable structured access conditions with Appointment entities (vs. just boolean)
- ../slots/condition_of_access
- ../slots/requires_or_required
- ./Appointment
classes:
AccessPolicy:
class_uri: premis:RightsStatus
description: "Access policy defining conditions under which heritage collections can be accessed.\n\n**PURPOSE**:\n\n\
AccessPolicy captures the access conditions governing a Collection:\n- WHO can access (public, researchers, staff only)\n\
- HOW access is granted (open, by appointment, with credentials)\n- WHEN access is available (opening hours, embargo\
\ periods)\n- WHAT restrictions apply (fragile materials, privacy, cultural sensitivity)\n\n1. **PREMIS**:\n - `premis:RightsStatus`\
\ - \"Information about the rights status of an object.\"\n - Links\
\ to Collection via premis:rightsStatus\n\n2. **Dublin Core**:\n - `dcterms:accessRights` - \"Information\
\ about who may access the resource\n or an indication of its security status.\"\n\n3. **RiC-O**:\n - `rico:hasOrHadAllMembersWithAccessConditions`\
\ - Links RecordSet to access\n conditions applying to all members\n\n4. **RightsStatements.org**:\n - Standardized\
\ rights statements for cultural heritage\n - E.g., \"In Copyright\", \"No Copyright\", \"Unknown Copyright\"\n\n\
**ACCESS LEVEL TAXONOMY**:\n\n```\nAccessPolicy (root)\n │\n ├── OpenAccess\n │ ├── PUBLIC_OPEN - No restrictions,\
\ walk-in access\n │ ├── PUBLIC_REGISTRATION - Free registration required\n │ └── PUBLIC_ONLINE - Digital\
\ access freely available\n │\n ├── RestrictedAccess\n │ ├── RESEARCHERS_ONLY - Academic researchers with credentials\n\
\ │ ├── BY_APPOINTMENT - Advance booking required\n │ ├── STAFF_ONLY - Internal access only\n │ └── PERMISSION_REQUIRED\
\ - Written permission needed\n │\n ├── ClosedAccess\n │ ├── TEMPORARILY_CLOSED - Renovation, conservation\n\
\ │ ├── EMBARGOED - Time-limited closure\n │ ├── PERMANENTLY_CLOSED - Not accessible\n │ └── REPATRIATED\
\ - Returned to community of origin\n │\n └── ConditionalAccess\n ├── CULTURALLY_SENSITIVE - Indigenous/sacred\
\ materials\n ├── PRIVACY_RESTRICTED - Personal data protection\n ├── FRAGILE_HANDLING - Special handling\
\ required\n └── LEGAL_RESTRICTION - Copyright, legal constraints\n```\n\n**USE CASES**:\n\n1. **Archive Open\
\ Access**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/nationaal-archief-open\"\n access_level:\
\ \"PUBLIC_OPEN\"\n access_description: \"Open to all visitors during reading room hours\"\n conditions: \"\
Valid ID required for registration\"\n ```\n\n2. **Restricted Research Materials**:\n ```yaml\n AccessPolicy:\n\
\ policy_id: \"hc:access-policy/university-special-collections\"\n access_level: \"RESEARCHERS_ONLY\"\n \
\ access_description: \"Academic researchers with institutional affiliation\"\n conditions: \"Letter of introduction\
\ required from supervising institution\"\n requires_appointment: true\n ```\n\n3. **Embargoed Collection**:\n\
\ ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/donor-embargo-2050\"\n access_level: \"EMBARGOED\"\
\n access_description: \"Closed until 2050 per donor agreement\"\n embargo_end_date: \"2050-01-01\"\n embargo_reason:\
\ \"Donor privacy restrictions\"\n ```\n\n4. **Culturally Sensitive**:\n ```yaml\n AccessPolicy:\n policy_id:\
\ \"hc:access-policy/indigenous-protocols\"\n access_level: \"CULTURALLY_SENSITIVE\"\n access_description: \"\
Access governed by Traditional Knowledge protocols\"\n conditions: \"Consultation with originating community required\"\
\n cultural_protocol_url: \"https://localcontexts.org/tk-labels/\"\n ```\n\n**RELATIONSHIP TO DIM ARCHIVE**:\n\
\nDimArchive (Dark archive / Preservation-only storage) uses AccessPolicy to express:\n- Materials stored for preservation,\
\ not current access\n- Access restricted until triggering conditions (time, event)\n- \"Gray literature\" or un-catalogued\
\ backlogs awaiting processing\n"
exact_mappings:
- premis:RightsStatus
- dcterms:accessRights
close_mappings:
- rico:Rule
- schema:ActionAccessSpecification
related_mappings:
- rico:hasOrHadAllMembersWithAccessConditions
slots:
- has_or_had_access_description
- has_or_had_access_level
# RESTORED 2026-01-15: requires_appointment - correct semantics (schema:reservationRequired)
# KEPT for backward compatibility as simple boolean flag
- requires_appointment
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- poses_or_posed_condition
# ADDED 2026-01-17: Rich access condition modeling per slot_fixes.yaml revision
- condition_of_access
- requires_or_required
- 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
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- temporal_extent # was: valid_from + valid_to - migrated per Rule 53
slot_usage:
policy_id:
range: uriorcurie
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/access-policy/open-access
description: Standard open access policy
policy_name:
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
has_or_had_access_level:
range: string
required: true
examples:
- value: PUBLIC_OPEN
- value: RESEARCHERS_ONLY
- value: EMBARGOED
has_or_had_access_description:
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 has_or_had_affiliation
description: University special collections
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
poses_or_posed_condition:
range: Condition
multivalued: true
inlined: true
inlined_as_list: true
description: |
Access conditions or requirements using structured Condition class.
MIGRATED from condition string slot per slot_fixes.yaml (Rule 53, 2026-01-22).
examples:
- value:
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Valid government-issued ID required"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Registration form must be completed"
description: Archive access conditions using Condition class
rights_statement:
range: string
examples:
- value: In Copyright
description: Copyright protected
- value: No Copyright - United States
description: Public domain (US)
rights_statement_url:
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
requires_appointment:
range: boolean
description: |
Whether an appointment is required for access.
Uses schema:reservationRequired which is semantically correct for access policies.
examples:
- value: true
description: Appointment required
- value: false
description: Walk-in access
registration_required:
range: boolean
examples:
- value: true
description: Must register as reader
credentials_required:
range: string
examples:
- value: INSTITUTIONAL
description: Must be affiliated with research institution
fee_required:
range: boolean
examples:
- value: false
description: Free access
- value: true
description: Fee required
fee_amount:
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:
range: date
examples:
- value: '2050-01-01'
description: Embargo lifts January 1, 2050
embargo_reason:
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:
range: uri
examples:
- value: https://localcontexts.org/tk-labels/
description: Traditional Knowledge labels
legal_basis:
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:
range: date
examples:
- value: '2025-12-31'
description: Annual review date
contact_email:
range: string
examples:
- value: access@nationaalarchief.nl
description: Access request contact
temporal_extent: # was: valid_from + valid_to - migrated per Rule 53
description: |
Validity period for this access policy using CIDOC-CRM TimeSpan.
MIGRATED from valid_from + valid_to per slot_fixes.yaml (Rule 53).
Uses begin_of_the_begin for policy start date and end_of_the_end for expiry.
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: '2024-01-01'
end_of_the_end: '2050-12-31'
description: Policy valid from 2024 until end of 2050
# ADDED 2026-01-17: Rich access condition modeling per slot_fixes.yaml revision
condition_of_access:
description: |
Textual conditions or requirements for access (RiC-O style).
Use for human-readable access requirements. For structured appointment
data, use requires_or_required with Appointment instances.
range: string
multivalued: true
examples:
- value:
- "Appointment required 48 hours in advance"
- "Valid researcher credentials required"
- "Materials must be handled with cotton gloves"
description: Multiple access conditions
requires_or_required:
description: |
Links to structured Appointment entities for rich appointment modeling.
ADDED 2026-01-17 per slot_fixes.yaml revision for appointment_required.
Use this for detailed appointment requirements (lead time, booking method,
contact info). For simple boolean, use requires_appointment instead.
range: Appointment
multivalued: true
inlined: true
examples:
- value:
- appointment_id: "hc:appointment/special-collections-48h"
has_or_had_label: "Special Collections Appointment"
has_or_had_description: "Book at least 48 hours in advance for manuscript access"
lead_time_hours: 48
booking_method:
- email
- online_form
booking_contact: "bijzondere.collecties@archive.nl"
appointment_required: true
description: Structured appointment requirement with rich metadata
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/RightsStatus
- https://rightsstatements.org/
- https://localcontexts.org/
- https://www.ica.org/standards/RiC/ontology#Rule
examples:
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- 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
poses_or_posed_condition:
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Valid government-issued ID required"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Registration form must be completed"
- has_or_had_type: HandlingCondition
has_or_had_description:
description_text: "Original materials handled with gloves"
registration_required: true
requires_appointment: false # Walk-in access allowed
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
poses_or_posed_condition:
- has_or_had_type: ProcessingCondition
has_or_had_description:
description_text: "Awaiting processing and cataloging"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Access may be arranged for urgent research needs"
requires_appointment: true # Appointment required for DIM archive access
credentials_required: PROFESSIONAL
contact_email: preservation@archive.org
description: Dark archive / DIM access policy
# ADDED 2026-01-17: Example with rich appointment modeling
- value:
policy_id: https://nde.nl/ontology/hc/access-policy/special-collections-rich
policy_name: Special Collections - Rich Appointment Policy
access_level: RESEARCHERS_ONLY
access_description: Academic researchers with institutional affiliation
condition_of_access:
- "Valid institutional ID required"
- "Letter of introduction from supervisor"
- "Maximum 5 items per visit"
requires_or_required:
- appointment_id: "hc:appointment/special-collections-booking"
has_or_had_label: "Special Collections Appointment"
has_or_had_description: |
Appointments for manuscript and rare book collections must be made
at least 48 hours in advance. Please specify which materials you
wish to consult.
lead_time_hours: 48
booking_method:
- email
- online_form
booking_contact: "bijzondere.collecties@archive.nl"
confirmation_required: true
cancellation_notice_hours: 24
appointment_required: true
registration_required: true
credentials_required: INSTITUTIONAL
fee_required: false
contact_email: special.collections@archive.nl
description: Rich appointment modeling with structured Appointment entity