Refactor schema slots and classes for improved organization and clarity
- Removed deprecated slots: appraisal_notes, branch_id, is_or_was_real. - Introduced new slots: has_or_had_notes, has_or_had_provenance. - Created Notes class to encapsulate note-related metadata. - Archived removed slots and classes in accordance with the new archive folder convention. - Updated slot_fixes.yaml to reflect migration status and details. - Enhanced documentation for new slots and classes, ensuring compliance with ontology alignment. - Added new slots for note content, date, and type to support the Notes class.
This commit is contained in:
parent
b8914761b8
commit
b13674400f
112 changed files with 3043228 additions and 6716 deletions
98
.opencode/rules/archive-folder-convention.md
Normal file
98
.opencode/rules/archive-folder-convention.md
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
# Rule: Archive Folder Convention
|
||||
|
||||
**Rule ID**: archive-folder-convention
|
||||
**Created**: 2026-01-14
|
||||
**Status**: Active
|
||||
|
||||
## Summary
|
||||
|
||||
All archived files MUST be placed in an `/archive/` subfolder within their parent directory, NOT at the same level as active files.
|
||||
|
||||
## Rationale
|
||||
|
||||
1. **Clean separation**: Active files are clearly distinguished from deprecated/archived files
|
||||
2. **Discoverability**: Developers can easily find current files without wading through archived versions
|
||||
3. **Git history**: Archive folder can be `.gitignore`d for lightweight clones if needed
|
||||
4. **Consistent pattern**: Same structure across all schema module types (slots, classes, enums)
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
modules/
|
||||
├── slots/
|
||||
│ ├── archive/ # Archived slot files go HERE
|
||||
│ │ ├── branch_id_archived_20260114.yaml
|
||||
│ │ ├── all_data_real_archived_20260114.yaml
|
||||
│ │ └── ...
|
||||
│ ├── has_or_had_identifier.yaml # Active slots at this level
|
||||
│ └── ...
|
||||
├── classes/
|
||||
│ ├── archive/ # Archived class files go HERE
|
||||
│ │ └── ...
|
||||
│ └── ...
|
||||
└── enums/
|
||||
├── archive/ # Archived enum files go HERE
|
||||
│ └── ...
|
||||
└── ...
|
||||
```
|
||||
|
||||
## Naming Convention for Archived Files
|
||||
|
||||
```
|
||||
{original_filename}_archived_{YYYYMMDD}.yaml
|
||||
```
|
||||
|
||||
**Examples**:
|
||||
- `branch_id.yaml` → `archive/branch_id_archived_20260114.yaml`
|
||||
- `RealnessStatus.yaml` → `archive/RealnessStatus_archived_20260114.yaml`
|
||||
|
||||
## Migration Workflow
|
||||
|
||||
When archiving a file during slot migration:
|
||||
|
||||
```bash
|
||||
# 1. Copy to archive folder with timestamp suffix
|
||||
cp modules/slots/branch_id.yaml modules/slots/archive/branch_id_archived_20260114.yaml
|
||||
|
||||
# 2. Remove from active location
|
||||
rm modules/slots/branch_id.yaml
|
||||
|
||||
# 3. Update manifest counts
|
||||
# (Decrement slot count in manifest.json)
|
||||
|
||||
# 4. Update slot_fixes.yaml
|
||||
# (Mark migration as processed: true)
|
||||
```
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
**WRONG** - Archived files at same level as active:
|
||||
```
|
||||
modules/slots/
|
||||
├── branch_id_archived_20260114.yaml # NO - clutters active directory
|
||||
├── has_or_had_identifier.yaml
|
||||
└── ...
|
||||
```
|
||||
|
||||
**CORRECT** - Archived files in subdirectory:
|
||||
```
|
||||
modules/slots/
|
||||
├── archive/
|
||||
│ └── branch_id_archived_20260114.yaml # YES - clean separation
|
||||
├── has_or_had_identifier.yaml
|
||||
└── ...
|
||||
```
|
||||
|
||||
## Validation
|
||||
|
||||
Before committing migrations, verify:
|
||||
- [ ] No `*_archived_*.yaml` files at module root level
|
||||
- [ ] All archived files are in `archive/` subdirectory
|
||||
- [ ] Archive folder exists for each module type with archived files
|
||||
- [ ] Manifest counts updated to exclude archived files
|
||||
|
||||
## See Also
|
||||
|
||||
- Rule 53: Full Slot Migration (`full-slot-migration-rule.md`)
|
||||
- Rule 9: Enum-to-Class Promotion (`ENUM_TO_CLASS_PRINCIPLE.md`)
|
||||
- slot_fixes.yaml for migration tracking
|
||||
292
.opencode/rules/podman-containerization-rule.md
Normal file
292
.opencode/rules/podman-containerization-rule.md
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
# Rule 54: RAG API Podman Containerization
|
||||
|
||||
🚨 **CRITICAL**: The GLAM RAG API MUST be deployed via Podman container, NOT via venv/rsync. This solves Python import consistency issues between local development and production.
|
||||
|
||||
---
|
||||
|
||||
## Why Podman (Not venv)
|
||||
|
||||
### The Problem
|
||||
|
||||
Python import behavior differs between local development and gunicorn:
|
||||
|
||||
| Context | Import Style | Works? |
|
||||
|---------|--------------|--------|
|
||||
| Local development (`uvicorn main:app`) | `from .provenance import` | ✅ |
|
||||
| Production (`gunicorn main:app`) | `from .provenance import` | ❌ |
|
||||
| Production (`gunicorn main:app`) | `from provenance import` | ✅ |
|
||||
|
||||
When syncing code via rsync to a server venv, the import style that works locally may fail in production with gunicorn.
|
||||
|
||||
### The Solution
|
||||
|
||||
Containerization with Podman ensures:
|
||||
1. **Consistent import resolution** - Same Python environment locally and in production
|
||||
2. **Isolation** - RAG API dependencies don't conflict with other services
|
||||
3. **Reproducibility** - Dockerfile defines exact environment
|
||||
4. **Rootless security** - Podman runs as non-root user inside container
|
||||
|
||||
---
|
||||
|
||||
## Deployment Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Server: 91.98.224.44 (bronhouder.nl) │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ Podman Container: glam-rag-api │ │
|
||||
│ │ │ │
|
||||
│ │ - python:3.11-slim base │ │
|
||||
│ │ - gunicorn + uvicorn workers │ │
|
||||
│ │ - Port 8010 (host network mode) │ │
|
||||
│ │ - Non-root user (glam:1000) │ │
|
||||
│ │ │ │
|
||||
│ │ Connects to (all on localhost): │ │
|
||||
│ │ - Qdrant :6333 │ │
|
||||
│ │ - Oxigraph SPARQL :7878 │ │
|
||||
│ │ - TypeDB :1729 │ │
|
||||
│ │ - PostGIS :5432 │ │
|
||||
│ │ - Valkey :8090 │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ Caddy Reverse Proxy │ │
|
||||
│ │ https://bronhouder.nl/api/rag/* → :8010 │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Key Files
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `backend/rag/Dockerfile` | Container image definition |
|
||||
| `backend/rag/requirements.txt` | Python dependencies (includes gunicorn) |
|
||||
| `backend/rag/main.py` | FastAPI application |
|
||||
| `infrastructure/deploy.sh` | Deployment script (`--rag` flag) |
|
||||
|
||||
---
|
||||
|
||||
## Deployment Commands
|
||||
|
||||
### Deploy RAG API
|
||||
|
||||
```bash
|
||||
# From project root - deploys via Podman
|
||||
./infrastructure/deploy.sh --rag
|
||||
```
|
||||
|
||||
This will:
|
||||
1. Sync `backend/rag/` to `/opt/glam-backend/rag/` on server
|
||||
2. Build Podman image `glam-rag-api:latest`
|
||||
3. Create/update systemd service `glam-rag-api.service`
|
||||
4. Start the container
|
||||
|
||||
### Manual Operations (on server)
|
||||
|
||||
```bash
|
||||
# Check service status
|
||||
systemctl status glam-rag-api
|
||||
|
||||
# View container logs
|
||||
podman logs glam-rag-api
|
||||
|
||||
# Restart service
|
||||
systemctl restart glam-rag-api
|
||||
|
||||
# Rebuild image manually
|
||||
cd /opt/glam-backend/rag
|
||||
podman build -t glam-rag-api:latest .
|
||||
|
||||
# Clean up old images
|
||||
podman image prune -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Systemd Service Configuration
|
||||
|
||||
The service file is created by `deploy.sh` at `/etc/systemd/system/glam-rag-api.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=GLAM Heritage RAG API (Podman)
|
||||
After=network.target qdrant.service
|
||||
Wants=qdrant.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
EnvironmentFile=/var/lib/glam/.env
|
||||
|
||||
ExecStart=/usr/bin/podman run --rm --name glam-rag-api \
|
||||
--network host \
|
||||
-e OPENAI_API_KEY \
|
||||
-e ZAI_API_TOKEN \
|
||||
-e QDRANT_HOST=localhost \
|
||||
-e QDRANT_PORT=6333 \
|
||||
-e QDRANT_COLLECTION=heritage_custodians_minilm \
|
||||
-e EMBEDDING_MODEL=all-MiniLM-L6-v2 \
|
||||
-e EMBEDDING_DIM=384 \
|
||||
-e TYPEDB_HOST=localhost \
|
||||
-e TYPEDB_PORT=1729 \
|
||||
-e TYPEDB_DATABASE=glam \
|
||||
-e SPARQL_ENDPOINT=http://localhost:7878/query \
|
||||
-e VALKEY_CACHE_URL=http://localhost:8090 \
|
||||
-e POSTGIS_HOST=localhost \
|
||||
-e POSTGIS_PORT=5432 \
|
||||
-e POSTGIS_DATABASE=glam \
|
||||
-e LLM_PROVIDER=openai \
|
||||
-e LLM_MODEL=gpt-4.1-mini \
|
||||
-v glam-rag-optimized-models:/app/optimized_models:z \
|
||||
glam-rag-api:latest
|
||||
|
||||
ExecStop=/usr/bin/podman stop glam-rag-api
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
**Key Configuration**:
|
||||
- `--network host`: Container uses host networking (accesses localhost services directly)
|
||||
- `EnvironmentFile`: Loads API keys from `/var/lib/glam/.env`
|
||||
- `-v ...:/app/optimized_models:z`: Persistent volume for DSPy optimized models
|
||||
- `Restart=always`: Auto-restart on failure
|
||||
|
||||
---
|
||||
|
||||
## Dockerfile Structure
|
||||
|
||||
The Dockerfile at `backend/rag/Dockerfile`:
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.11-slim
|
||||
|
||||
# Non-root user for security
|
||||
RUN useradd -m -u 1000 -s /bin/bash glam
|
||||
|
||||
# Install dependencies first (layer caching)
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy application code
|
||||
COPY --chown=glam:glam . .
|
||||
|
||||
USER glam
|
||||
|
||||
# Gunicorn with uvicorn workers for async
|
||||
CMD ["gunicorn", "main:app", \
|
||||
"--bind", "0.0.0.0:8010", \
|
||||
"--workers", "2", \
|
||||
"--worker-class", "uvicorn.workers.UvicornWorker", \
|
||||
"--timeout", "120"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Import Style for Container Deployment
|
||||
|
||||
**CRITICAL**: Use absolute imports in RAG API Python files:
|
||||
|
||||
```python
|
||||
# CORRECT - Works in container with gunicorn
|
||||
from provenance import ProvenanceTracker, format_provenance_chain
|
||||
|
||||
# WRONG - Fails with gunicorn
|
||||
from .provenance import ProvenanceTracker, format_provenance_chain
|
||||
```
|
||||
|
||||
This is because gunicorn doesn't recognize the directory as a package, so relative imports fail.
|
||||
|
||||
---
|
||||
|
||||
## Health Check Verification
|
||||
|
||||
```bash
|
||||
# Local test (from server)
|
||||
curl http://localhost:8010/health
|
||||
|
||||
# External test
|
||||
curl https://bronhouder.nl/api/rag/health
|
||||
```
|
||||
|
||||
Expected response:
|
||||
```json
|
||||
{
|
||||
"status": "healthy",
|
||||
"backends": {
|
||||
"qdrant": {"status": "connected", "collections": {...}},
|
||||
"sparql": {"status": "connected", "triples": 30421},
|
||||
"typedb": {"status": "connected", "observations": 27741}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Container Won't Start
|
||||
|
||||
```bash
|
||||
# Check systemd logs
|
||||
journalctl -u glam-rag-api -n 50
|
||||
|
||||
# Check container logs directly
|
||||
podman logs glam-rag-api
|
||||
```
|
||||
|
||||
### Import Errors
|
||||
|
||||
If you see `ModuleNotFoundError` or `ImportError`:
|
||||
1. Check imports use absolute style (not relative)
|
||||
2. Verify all dependencies in `requirements.txt`
|
||||
3. Rebuild image: `podman build -t glam-rag-api:latest .`
|
||||
|
||||
### Backend Connection Issues
|
||||
|
||||
Container uses `--network host`, so backends must be on localhost:
|
||||
- Qdrant: `localhost:6333`
|
||||
- TypeDB: `localhost:1729`
|
||||
- Oxigraph: `localhost:7878`
|
||||
|
||||
Check backend services:
|
||||
```bash
|
||||
systemctl status qdrant typedb oxigraph
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Migration from venv (Historical)
|
||||
|
||||
The old venv-based deployment has been deprecated:
|
||||
|
||||
| Old (Deprecated) | New (Current) |
|
||||
|------------------|---------------|
|
||||
| `/var/lib/glam/api/backend/rag/` | `/opt/glam-backend/rag/` |
|
||||
| `glam-rag-api.service` (venv) | `glam-rag-api.service` (Podman) |
|
||||
| Manual pip install | Dockerfile-based |
|
||||
| rsync + systemd restart | rsync + podman build + restart |
|
||||
|
||||
The old service and venv can be removed:
|
||||
```bash
|
||||
# Already done - for reference only
|
||||
systemctl stop glam-rag-api-venv # if exists
|
||||
systemctl disable glam-rag-api-venv
|
||||
rm /etc/systemd/system/glam-rag-api-venv.service
|
||||
rm -rf /var/lib/glam/api/backend/rag/venv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- Rule 7: Deployment is LOCAL via SSH/rsync (NO CI/CD)
|
||||
- `backend/rag/README.md` - RAG API documentation
|
||||
- `infrastructure/deploy.sh` - Full deployment script
|
||||
44
AGENTS.md
44
AGENTS.md
|
|
@ -47,7 +47,7 @@ This is NOT a simple data extraction project. This is an **ontology engineering
|
|||
|
||||
---
|
||||
|
||||
This section summarizes 53 critical rules. Each rule has complete documentation in `.opencode/` files.
|
||||
This section summarizes 54 critical rules. Each rule has complete documentation in `.opencode/` files.
|
||||
|
||||
### Rule 0: LinkML Schemas Are the Single Source of Truth
|
||||
|
||||
|
|
@ -1656,6 +1656,48 @@ classes:
|
|||
|
||||
---
|
||||
|
||||
### Rule 54: RAG API Podman Containerization
|
||||
|
||||
🚨 **CRITICAL**: The GLAM RAG API MUST be deployed via Podman container, NOT via venv/rsync. This solves Python import consistency issues between local development and production gunicorn.
|
||||
|
||||
**Why Podman**:
|
||||
- **Import consistency**: gunicorn requires absolute imports (`from provenance import`) not relative (`from .provenance import`)
|
||||
- **Isolation**: RAG API dependencies don't conflict with other server services
|
||||
- **Reproducibility**: Dockerfile defines exact Python environment
|
||||
- **Security**: Container runs as non-root user
|
||||
|
||||
**Deployment**:
|
||||
```bash
|
||||
# Deploy RAG API via Podman
|
||||
./infrastructure/deploy.sh --rag
|
||||
```
|
||||
|
||||
**Key Files**:
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `backend/rag/Dockerfile` | Container image definition |
|
||||
| `backend/rag/requirements.txt` | Python dependencies (includes gunicorn) |
|
||||
| `infrastructure/deploy.sh` | Deployment script (`--rag` flag) |
|
||||
|
||||
**Server Configuration**:
|
||||
- Container image: `glam-rag-api:latest`
|
||||
- Systemd service: `glam-rag-api.service`
|
||||
- Network: Host mode (accesses localhost backends)
|
||||
- Health endpoint: `https://bronhouder.nl/api/rag/health`
|
||||
|
||||
**Import Style** (for container deployment):
|
||||
```python
|
||||
# CORRECT - Works in container with gunicorn
|
||||
from provenance import ProvenanceTracker
|
||||
|
||||
# WRONG - Fails with gunicorn
|
||||
from .provenance import ProvenanceTracker
|
||||
```
|
||||
|
||||
**See**: `.opencode/rules/podman-containerization-rule.md` for complete documentation
|
||||
|
||||
---
|
||||
|
||||
## Appendix: Full Rule Content (No .opencode Equivalent)
|
||||
|
||||
The following rules have no separate .opencode file and are preserved in full:
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"generated": "2026-01-14T08:50:13.029Z",
|
||||
"generated": "2026-01-14T10:31:53.486Z",
|
||||
"schemaRoot": "/schemas/20251121/linkml",
|
||||
"totalFiles": 2913,
|
||||
"totalFiles": 2896,
|
||||
"categoryCounts": {
|
||||
"main": 4,
|
||||
"class": 671,
|
||||
"enum": 147,
|
||||
"slot": 2087,
|
||||
"slot": 2070,
|
||||
"module": 4
|
||||
},
|
||||
"categories": [
|
||||
|
|
@ -1945,6 +1945,11 @@
|
|||
"path": "modules/classes/NotarialArchiveRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Notes",
|
||||
"path": "modules/classes/Notes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "OAIPMHEndpoint",
|
||||
"path": "modules/classes/OAIPMHEndpoint.yaml",
|
||||
|
|
@ -2405,11 +2410,6 @@
|
|||
"path": "modules/classes/ReadingRoomAnnex.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "RealnessStatus",
|
||||
"path": "modules/classes/RealnessStatus.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "ReconstructedEntity",
|
||||
"path": "modules/classes/ReconstructedEntity.yaml",
|
||||
|
|
@ -4157,51 +4157,11 @@
|
|||
"path": "modules/slots/accepts_or_accepted_visiting_scholar.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "activities_societies",
|
||||
"path": "modules/slots/activities_societies.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "actual_end",
|
||||
"path": "modules/slots/actual_end.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "actual_start",
|
||||
"path": "modules/slots/actual_start.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "address_formatted",
|
||||
"path": "modules/slots/address_formatted.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "address_type",
|
||||
"path": "modules/slots/address_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "admin_office_id",
|
||||
"path": "modules/slots/admin_office_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "administrative_functions",
|
||||
"path": "modules/slots/administrative_functions.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "affects_or_affected",
|
||||
"path": "modules/slots/affects_or_affected.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "aggregates_from",
|
||||
"path": "modules/slots/aggregates_from.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "aggregates_or_aggregated_from",
|
||||
"path": "modules/slots/aggregates_or_aggregated_from.yaml",
|
||||
|
|
@ -4247,11 +4207,6 @@
|
|||
"path": "modules/slots/appointment_required.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "appraisal_notes",
|
||||
"path": "modules/slots/appraisal_notes.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "approved_by",
|
||||
"path": "modules/slots/approved_by.yaml",
|
||||
|
|
@ -4377,16 +4332,6 @@
|
|||
"path": "modules/slots/binding_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "binding_provenance",
|
||||
"path": "modules/slots/binding_provenance.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "binding_type",
|
||||
"path": "modules/slots/binding_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "bio_custodian_subtype",
|
||||
"path": "modules/slots/bio_custodian_subtype.yaml",
|
||||
|
|
@ -4452,31 +4397,6 @@
|
|||
"path": "modules/slots/branch_head.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_id",
|
||||
"path": "modules/slots/branch_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_name",
|
||||
"path": "modules/slots/branch_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_description",
|
||||
"path": "modules/slots/branch_office_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_id",
|
||||
"path": "modules/slots/branch_office_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_name",
|
||||
"path": "modules/slots/branch_office_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_service_area",
|
||||
"path": "modules/slots/branch_service_area.yaml",
|
||||
|
|
@ -4487,11 +4407,6 @@
|
|||
"path": "modules/slots/branch_staff_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_type",
|
||||
"path": "modules/slots/branch_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "broader_concept",
|
||||
"path": "modules/slots/broader_concept.yaml",
|
||||
|
|
@ -4532,11 +4447,6 @@
|
|||
"path": "modules/slots/budget_status.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "budget_type",
|
||||
"path": "modules/slots/budget_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "building_floor_area_sqm",
|
||||
"path": "modules/slots/building_floor_area_sqm.yaml",
|
||||
|
|
@ -4557,11 +4467,6 @@
|
|||
"path": "modules/slots/cached_token.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "cadastral_id",
|
||||
"path": "modules/slots/cadastral_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "call_description",
|
||||
"path": "modules/slots/call_description.yaml",
|
||||
|
|
@ -7482,21 +7387,11 @@
|
|||
"path": "modules/slots/has_activity_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_end_date",
|
||||
"path": "modules/slots/has_actual_end_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_return_date",
|
||||
"path": "modules/slots/has_actual_return_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_start_date",
|
||||
"path": "modules/slots/has_actual_start_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_address",
|
||||
"path": "modules/slots/has_address.yaml",
|
||||
|
|
@ -8682,6 +8577,11 @@
|
|||
"path": "modules/slots/has_or_had_note.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_notes",
|
||||
"path": "modules/slots/has_or_had_notes.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_open_access_endpoint",
|
||||
"path": "modules/slots/has_or_had_open_access_endpoint.yaml",
|
||||
|
|
@ -8767,6 +8667,11 @@
|
|||
"path": "modules/slots/has_or_had_project.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_provenance",
|
||||
"path": "modules/slots/has_or_had_provenance.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_provenance_event",
|
||||
"path": "modules/slots/has_or_had_provenance_event.yaml",
|
||||
|
|
@ -9712,11 +9617,6 @@
|
|||
"path": "modules/slots/is_or_was_platform_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_real",
|
||||
"path": "modules/slots/is_or_was_real.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_related_to",
|
||||
"path": "modules/slots/is_or_was_related_to.yaml",
|
||||
|
|
@ -10777,6 +10677,21 @@
|
|||
"path": "modules/slots/note.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_content",
|
||||
"path": "modules/slots/note_content.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_date",
|
||||
"path": "modules/slots/note_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_type",
|
||||
"path": "modules/slots/note_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "oai_pmh_endpoint",
|
||||
"path": "modules/slots/oai_pmh_endpoint.yaml",
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ classes:
|
|||
\n preferred_label: \"Rijksmuseum\"\n place_designation:\n place_name: \"Rijksmuseum\" # Main building on Museumplein\n\
|
||||
\ auxiliary_places:\n - place_name: \"Depot Amersfoort\"\n auxiliary_place_type: STORAGE_FACILITY\n \
|
||||
\ street_address: \"Euterpelaan 25, Amersfoort\"\n - place_name: \"Rijksmuseum Schiphol\"\n auxiliary_place_type:\
|
||||
\ BRANCH_OFFICE\n street_address: \"Schiphol Airport, Lounge 2\"\n hosts_branch:\n branch_name:\
|
||||
\ BRANCH_OFFICE\n street_address: \"Schiphol Airport, Lounge 2\"\n hosts_branch:\n has_or_had_label:\
|
||||
\ \"Schiphol Exhibition Space\"\n```\n\n**TEMPORAL VALIDITY**:\n\nAuxiliary places can open/close independently:\n-\
|
||||
\ Storage facility opened 1995, closed 2010 (moved to new location)\n- Branch office valid_from 2000, valid_to null\
|
||||
\ (still active)\n\nTrack with valid_from/valid_to or temporal_extent (for fuzzy dates).\n"
|
||||
|
|
@ -279,7 +279,7 @@ classes:
|
|||
inlined_as_list: true
|
||||
examples:
|
||||
- value:
|
||||
branch_name: Conservation Division - Amersfoort
|
||||
has_or_had_label: Conservation Division - Amersfoort
|
||||
branch_type: CONSERVATION_LAB
|
||||
description: Conservation branch at depot site
|
||||
is_auxiliary_of_place:
|
||||
|
|
@ -358,7 +358,7 @@ classes:
|
|||
country: https://nde.nl/ontology/hc/country/NL
|
||||
valid_from: '2002-10-01'
|
||||
hosts_branch:
|
||||
- branch_name: Schiphol Exhibition Team
|
||||
- has_or_had_label: Schiphol Exhibition Team
|
||||
branch_type: EXHIBITION_SPACE
|
||||
is_auxiliary_of_place: https://nde.nl/ontology/hc/place/rijksmuseum-main
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ imports:
|
|||
- ./ReconstructedEntity
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ../slots/branch_office_description
|
||||
- ../slots/branch_office_id
|
||||
- ../slots/branch_office_name
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/branch_service_area
|
||||
- ../slots/branch_staff_count
|
||||
- ../slots/has_local_collection
|
||||
|
|
@ -50,8 +50,8 @@ classes:
|
|||
\ Zaanstreek-Waterland branch\n - Serves researchers in Zaandam area\n - Holds local municipal records\n\n2. **Library\
|
||||
\ Satellite Locations**:\n - University library branch at satellite campus\n - Public library neighborhood branches\n\
|
||||
\n3. **Museum Study Centers**:\n - Off-site study/research center for scholars\n - Rijksmuseum Schiphol (airport\
|
||||
\ exhibition space)\n\n**Example - Regional Archive Branch**:\n```yaml\nBranchOffice:\n branch_office_id: \"https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch\"\
|
||||
\n branch_office_name: \"Noord-Hollands Archief - Zaanstreek-Waterland\"\n branch_office_description: |\n Regional\
|
||||
\ exhibition space)\n\n**Example - Regional Archive Branch**:\n```yaml\nBranchOffice:\n has_or_had_identifier: \"https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch\"\
|
||||
\n has_or_had_label: \"Noord-Hollands Archief - Zaanstreek-Waterland\"\n has_or_had_description: |\n Regional\
|
||||
\ branch serving Zaanstreek-Waterland area.\n Holds municipal records from Zaandam, Wormerland, Purmerend.\n Open\
|
||||
\ to researchers Tuesday-Thursday.\n branch_service_area: \"Zaanstreek-Waterland region\"\n is_public_facing: true\n\
|
||||
\ services_offered:\n - \"Archival research access\"\n - \"Genealogical consultations\"\n - \"Local history\
|
||||
|
|
@ -66,9 +66,9 @@ classes:
|
|||
- org:OrganizationalUnit
|
||||
- schema:branch
|
||||
slots:
|
||||
- branch_office_description
|
||||
- branch_office_id
|
||||
- branch_office_name
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- branch_service_area
|
||||
- branch_staff_count
|
||||
- has_local_collection
|
||||
|
|
@ -80,16 +80,24 @@ classes:
|
|||
- was_derived_from
|
||||
- was_generated_by
|
||||
slot_usage:
|
||||
branch_office_id:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
description: >-
|
||||
Unique identifier for this branch office.
|
||||
MIGRATED from branch_office_id (2026-01-14) per Rule 53.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
description: Noord-Hollands Archief regional branch
|
||||
branch_office_name:
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: false
|
||||
description: >-
|
||||
Name of this branch office.
|
||||
MIGRATED from branch_office_name (2026-01-14) per Rule 53.
|
||||
Typically includes parent organization name + branch location/function.
|
||||
examples:
|
||||
- value: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
description: Regional archive branch
|
||||
|
|
@ -97,8 +105,12 @@ classes:
|
|||
description: Airport exhibition branch
|
||||
- value: Universiteitsbibliotheek Science Park
|
||||
description: University library satellite
|
||||
branch_office_description:
|
||||
has_or_had_description:
|
||||
range: string
|
||||
description: >-
|
||||
Description of this branch office, including services offered,
|
||||
target audience, and distinguishing features.
|
||||
MIGRATED from branch_office_description (2026-01-15) per Rule 53.
|
||||
examples:
|
||||
- value: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam, Wormerland, Purmerend.
|
||||
Open to researchers Tuesday-Thursday.
|
||||
|
|
@ -161,9 +173,9 @@ classes:
|
|||
- https://schema.org/branch
|
||||
examples:
|
||||
- value:
|
||||
branch_office_id: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
branch_office_name: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
branch_office_description: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam,
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
has_or_had_label: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
has_or_had_description: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam,
|
||||
Wormerland, Purmerend.
|
||||
branch_service_area: Zaanstreek-Waterland region
|
||||
is_public_facing: true
|
||||
|
|
@ -176,9 +188,9 @@ classes:
|
|||
has_local_collection: true
|
||||
description: Regional archive branch
|
||||
- value:
|
||||
branch_office_id: https://nde.nl/ontology/hc/aux/rijksmuseum-schiphol
|
||||
branch_office_name: Rijksmuseum Schiphol
|
||||
branch_office_description: Exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/aux/rijksmuseum-schiphol
|
||||
has_or_had_label: Rijksmuseum Schiphol
|
||||
has_or_had_description: Exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum
|
||||
collection. Free admission.
|
||||
branch_service_area: Amsterdam Schiphol Airport travelers
|
||||
is_public_facing: true
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ imports:
|
|||
- ../slots/has_accession_date
|
||||
- ../slots/has_accumulation_end_date
|
||||
- ../slots/has_accumulation_start_date
|
||||
- ../slots/appraisal_notes
|
||||
- ../slots/has_or_had_notes
|
||||
- ./Notes
|
||||
- ../slots/has_archive_description
|
||||
- ../slots/has_archive_name
|
||||
- ../slots/arrangement_notes
|
||||
|
|
@ -75,7 +76,7 @@ classes:
|
|||
- has_accession_number
|
||||
- has_accumulation_end_date
|
||||
- has_accumulation_start_date
|
||||
- appraisal_notes
|
||||
- has_or_had_notes
|
||||
- has_archive_description
|
||||
- has_archive_name
|
||||
- arrangement_notes
|
||||
|
|
@ -258,12 +259,17 @@ classes:
|
|||
examples:
|
||||
- value: Closed - Contains personnel files with personal data
|
||||
description: Privacy restriction
|
||||
has_appraisal_note:
|
||||
range: string
|
||||
has_or_had_notes:
|
||||
range: Notes
|
||||
multivalued: true
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value: Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05
|
||||
description: Appraisal decisions documented
|
||||
- value: |
|
||||
- note_type: appraisal
|
||||
note_content: "Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05"
|
||||
note_date: "2024-03-15"
|
||||
description: Appraisal decisions documented as typed note
|
||||
has_arrangement_note:
|
||||
range: string
|
||||
required: false
|
||||
|
|
@ -344,6 +350,9 @@ classes:
|
|||
estimated_extent: 85 linear meters
|
||||
assigned_processor: Dr. Jan de Vries
|
||||
processing_started_date: '2024-01-10'
|
||||
appraisal_notes: Retained all policy files; weeded duplicate copies per retention schedule.
|
||||
has_or_had_notes:
|
||||
- note_type: appraisal
|
||||
note_content: "Retained all policy files; weeded duplicate copies per retention schedule."
|
||||
note_date: "2024-01-10"
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-na
|
||||
description: Government records in active processing (9 years after accession)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ imports:
|
|||
- ../slots/has_altitude
|
||||
- ../slots/has_accuracy_in_meters
|
||||
- ../slots/bounding_box
|
||||
- ../slots/cadastral_id
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/coordinate_reference_system
|
||||
- ../slots/feature_class
|
||||
- ../slots/feature_code
|
||||
|
|
@ -159,7 +159,7 @@ classes:
|
|||
- has_accuracy_in_meters
|
||||
- has_altitude
|
||||
- bounding_box
|
||||
- cadastral_id
|
||||
- has_or_had_identifier
|
||||
- coordinate_reference_system
|
||||
- feature_class
|
||||
- feature_code
|
||||
|
|
@ -203,6 +203,17 @@ classes:
|
|||
examples:
|
||||
- value: 6930126
|
||||
description: Rijksmuseum GeoNames ID
|
||||
has_or_had_identifier:
|
||||
description: >-
|
||||
Cadastral identifiers for this geospatial place.
|
||||
MIGRATION NOTE (2026-01-14): Replaces cadastral_id per slot_fixes.yaml.
|
||||
Use Identifier with identifier_scheme='cadastral' for parcel IDs.
|
||||
Netherlands: Kadaster perceelnummer format {gemeente}-{sectie}-{perceelnummer}
|
||||
examples:
|
||||
- value:
|
||||
identifier_scheme: cadastral
|
||||
identifier_value: ASD04-H-4567
|
||||
description: Amsterdam cadastral parcel identifier
|
||||
comments:
|
||||
- Follows TOOI BestuurlijkeRuimte pattern using GeoSPARQL
|
||||
- 'CRITICAL: NOT a nominal reference - this is measured/surveyed location data'
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ imports:
|
|||
- ../slots/has_archival_reference
|
||||
- ../slots/has_arrangement_level
|
||||
- ../slots/binding_description
|
||||
- ../slots/binding_provenance
|
||||
- ../slots/has_or_had_provenance
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/bookplate
|
||||
- ./BindingType
|
||||
|
|
@ -110,7 +110,7 @@ classes:
|
|||
- archival_reference
|
||||
- arrangement_level
|
||||
- binding_description
|
||||
- binding_provenance
|
||||
- has_or_had_provenance
|
||||
- has_or_had_type
|
||||
- bookplate
|
||||
- call_number
|
||||
|
|
@ -338,11 +338,18 @@ classes:
|
|||
multivalued: true
|
||||
examples:
|
||||
- value: British Museum stamp on verso of title page
|
||||
binding_provenance:
|
||||
has_or_had_provenance:
|
||||
required: false
|
||||
range: string
|
||||
description: >-
|
||||
Provenance information related to the physical binding of this information carrier.
|
||||
MIGRATED from binding_provenance (2026-01-15) per Rule 53.
|
||||
|
||||
Describes the historical ownership or commissioning context of the binding,
|
||||
such as royal presentation bindings or notable previous owners' bindings.
|
||||
examples:
|
||||
- value: Bound for presentation to Elizabeth I, royal arms in gold
|
||||
description: Royal presentation binding provenance
|
||||
isbn:
|
||||
required: false
|
||||
range: string
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ imports:
|
|||
- ./HeritageRelevance
|
||||
- ./LanguageProficiency
|
||||
- ../slots/has_or_had_about_text
|
||||
- ../slots/is_or_was_real
|
||||
- ./RealnessStatus
|
||||
- ../slots/has_or_had_provenance
|
||||
- ./ProvenanceBlock
|
||||
- ../slots/has_assessment_date
|
||||
- ../slots/connections_text
|
||||
- ../slots/data_source_whatsapp
|
||||
|
|
@ -332,7 +332,7 @@ classes:
|
|||
|
||||
'
|
||||
slots:
|
||||
- is_or_was_real
|
||||
- has_or_had_provenance
|
||||
- data_source_whatsapp
|
||||
- enriched_date
|
||||
- enrichment_method_whatsapp
|
||||
|
|
@ -352,14 +352,16 @@ classes:
|
|||
- value: public_linkedin_profile
|
||||
no_fabrication:
|
||||
range: boolean
|
||||
is_or_was_real:
|
||||
range: RealnessStatus
|
||||
has_or_had_provenance:
|
||||
range: ProvenanceBlock
|
||||
inlined: true
|
||||
description: >-
|
||||
Realness status of the enrichment data.
|
||||
Indicates whether the enrichment data is real production data or test/synthetic.
|
||||
Provenance information for the enrichment data.
|
||||
Contains data source, extraction method, confidence score, and verification status.
|
||||
examples:
|
||||
- value:
|
||||
status: REAL
|
||||
description: "Verified production data from LinkedIn profile"
|
||||
description: Real production enrichment data
|
||||
data_source: "public_linkedin_profile"
|
||||
extraction_date: "2025-01-14T12:00:00Z"
|
||||
confidence_score: 0.95
|
||||
note: "Verified production data from LinkedIn profile"
|
||||
description: Real production enrichment data with provenance
|
||||
|
|
|
|||
|
|
@ -0,0 +1,122 @@
|
|||
# Notes class
|
||||
# Generic class for typed notes with provenance
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization)
|
||||
# Migration: Supports has_or_had_notes slot (replaces appraisal_notes)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Notes
|
||||
name: notes_class
|
||||
title: Notes Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/note_type
|
||||
- ../slots/note_content
|
||||
- ../slots/note_date
|
||||
- ../slots/language
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/template_specificity
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScores
|
||||
|
||||
classes:
|
||||
Notes:
|
||||
class_uri: skos:note
|
||||
description: |
|
||||
A typed note with optional provenance metadata.
|
||||
|
||||
**Purpose**:
|
||||
Notes provides a reusable class for representing documentation notes
|
||||
across the heritage custodian schema. Supports typed notes (appraisal,
|
||||
arrangement, conservation, etc.) with language tagging and dates.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `skos:note` - general note
|
||||
- **Close**: `rdfs:comment` - comment on resource
|
||||
|
||||
**Use Cases**:
|
||||
- Appraisal notes documenting retention decisions
|
||||
- Arrangement notes documenting physical organization
|
||||
- Conservation notes documenting treatments
|
||||
- Processing notes documenting archival workflow
|
||||
- General documentation notes
|
||||
|
||||
**Replaces**:
|
||||
- `appraisal_notes` (string) - now typed with note_type
|
||||
|
||||
exact_mappings:
|
||||
- skos:note
|
||||
|
||||
close_mappings:
|
||||
- rdfs:comment
|
||||
- dcterms:description
|
||||
|
||||
slots:
|
||||
- note_type
|
||||
- note_content
|
||||
- note_date
|
||||
- language
|
||||
- specificity_annotation
|
||||
- template_specificity
|
||||
|
||||
slot_usage:
|
||||
note_type:
|
||||
description: |
|
||||
The type of note (appraisal, arrangement, conservation, processing, general).
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: appraisal
|
||||
description: Appraisal decision documentation
|
||||
- value: arrangement
|
||||
description: Physical organization notes
|
||||
- value: conservation
|
||||
description: Treatment documentation
|
||||
note_content:
|
||||
description: The textual content of the note.
|
||||
range: string
|
||||
required: true
|
||||
note_date:
|
||||
description: Date the note was created or last updated.
|
||||
range: date
|
||||
required: false
|
||||
language:
|
||||
description: |
|
||||
ISO 639-1 two-letter language code for this note.
|
||||
Examples: "en", "nl", "de", "fr"
|
||||
range: string
|
||||
required: false
|
||||
pattern: "^[a-z]{2}$"
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Generic notes class applicable to all types.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.3
|
||||
specificity_rationale: Broadly applicable generic class for documentation notes.
|
||||
|
||||
examples:
|
||||
- value: |
|
||||
note_type: appraisal
|
||||
note_content: "Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05"
|
||||
note_date: "2024-03-15"
|
||||
language: en
|
||||
description: "Appraisal note documenting retention decisions"
|
||||
- value: |
|
||||
note_type: arrangement
|
||||
note_content: "Maintained original order by correspondent. Created 5 series by function. Rehoused into acid-free folders and boxes."
|
||||
note_date: "2024-06-01"
|
||||
language: en
|
||||
description: "Arrangement note documenting physical organization"
|
||||
|
|
@ -14,8 +14,8 @@ imports:
|
|||
- ../slots/located_at
|
||||
- ../slots/branch_description
|
||||
- ../slots/branch_head
|
||||
- ../slots/branch_id
|
||||
- ../slots/branch_name
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/contact_point
|
||||
- ../slots/has_operational_unit
|
||||
|
|
@ -68,8 +68,8 @@ classes:
|
|||
\ Satellite Galleries**:\n - Main museum → Contemporary Art Wing (off-site)\n - Separate building, curated exhibitions\n\
|
||||
\ \n4. **Conservation/Research Centers**:\n - Main institution → Conservation Lab (different building)\n - Specialized\
|
||||
\ facility with own staff\n\n**Example - National Archives Branch**:\n```yaml\nAuxiliaryPlace:\n place_name: \"Regionaal\
|
||||
\ Historisch Centrum Noord-Holland\"\n auxiliary_place_type: BRANCH_OFFICE\n hosts_branch:\n - branch_id: \"https://nde.nl/ontology/hc/branch/na-rhc-noord-holland\"\
|
||||
\n branch_name: \"RHC Noord-Holland\"\n branch_type: REGIONAL_OFFICE\n has_operational_unit:\n \
|
||||
\ Historisch Centrum Noord-Holland\"\n auxiliary_place_type: BRANCH_OFFICE\n hosts_branch:\n - has_or_had_identifier: \"https://nde.nl/ontology/hc/branch/na-rhc-noord-holland\"\
|
||||
\n has_or_had_label: \"RHC Noord-Holland\"\n branch_type: REGIONAL_OFFICE\n has_operational_unit:\n \
|
||||
\ - unit_name: \"Reading Room Services\"\n - unit_name: \"Digitization Team\"\n is_branch_of: \"https://nde.nl/ontology/hc/nl-na\"\
|
||||
\n```\n\n**DISTINCTION FROM schema:branchOf**:\n\nSchema.org `branchOf` links commercial branches (e.g., bank branches).\n\
|
||||
`org:unitOf` is more appropriate for heritage institutions as it:\n- Models public sector organizational hierarchies\n\
|
||||
|
|
@ -86,8 +86,8 @@ classes:
|
|||
slots:
|
||||
- branch_description
|
||||
- branch_head
|
||||
- branch_id
|
||||
- branch_name
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- has_or_had_type
|
||||
- contact_point
|
||||
- has_operational_unit
|
||||
|
|
@ -104,16 +104,24 @@ classes:
|
|||
- was_derived_from
|
||||
- was_generated_by
|
||||
slot_usage:
|
||||
branch_id:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
description: >-
|
||||
Unique identifier for this organizational branch.
|
||||
MIGRATED from branch_id (2026-01-14) per Rule 53.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/branch/rm-schiphol-exhibition
|
||||
description: Rijksmuseum Schiphol exhibition branch
|
||||
branch_name:
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: false
|
||||
description: >-
|
||||
Official name of this organizational branch.
|
||||
MIGRATED from branch_name (2026-01-15) per Rule 53.
|
||||
This is the formal name of the branch as used in official documents.
|
||||
examples:
|
||||
- value: Rijksmuseum Schiphol
|
||||
description: Airport branch name
|
||||
|
|
@ -179,7 +187,7 @@ classes:
|
|||
inlined_as_list: true
|
||||
examples:
|
||||
- value:
|
||||
branch_name: Schiphol Terminal 2 Kiosk
|
||||
has_or_had_label: Schiphol Terminal 2 Kiosk
|
||||
description: Sub-branch of Schiphol exhibition
|
||||
branch_head:
|
||||
range: string
|
||||
|
|
@ -241,8 +249,8 @@ classes:
|
|||
- https://www.w3.org/TR/vcard-rdf/
|
||||
examples:
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/rm-schiphol
|
||||
branch_name: Rijksmuseum Schiphol
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/rm-schiphol
|
||||
has_or_had_label: Rijksmuseum Schiphol
|
||||
branch_type: EXHIBITION_SPACE
|
||||
branch_description: Small exhibition space at Schiphol Airport featuring rotating highlights from the collection.
|
||||
located_at:
|
||||
|
|
@ -258,8 +266,8 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Rijksmuseum Schiphol exhibition branch
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/rm-depot-operations
|
||||
branch_name: Collection Storage Operations - Amersfoort
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/rm-depot-operations
|
||||
has_or_had_label: Collection Storage Operations - Amersfoort
|
||||
branch_type: STORAGE_MANAGEMENT
|
||||
branch_description: Off-site collection storage facility managing overflow objects and art storage.
|
||||
located_at:
|
||||
|
|
@ -275,8 +283,8 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Rijksmuseum off-site storage operations branch
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/na-rhc-nh
|
||||
branch_name: Regionaal Historisch Centrum Noord-Holland
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/na-rhc-nh
|
||||
has_or_had_label: Regionaal Historisch Centrum Noord-Holland
|
||||
branch_type: REGIONAL_OFFICE
|
||||
branch_description: Regional archives center serving Noord-Holland province, providing reading room services and archival
|
||||
research support.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
# has_or_had_notes - Generic temporal notes slot
|
||||
#
|
||||
# Following RiC-O style naming convention (Rule 39):
|
||||
# - has_or_had_* indicates temporal relationship
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 43 (singular nouns - but spec requires plural)
|
||||
# Migration: Replaces appraisal_notes (per slot_fixes.yaml)
|
||||
#
|
||||
# NOTE: This slot uses plural "notes" as specified in slot_fixes.yaml,
|
||||
# though Rule 43 typically requires singular nouns. The spec is authoritative.
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_notes
|
||||
name: has_or_had_notes_slot
|
||||
title: Has Or Had Notes Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/Notes
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
has_or_had_notes:
|
||||
slot_uri: skos:note
|
||||
range: Notes
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: |
|
||||
Typed notes associated with an entity.
|
||||
|
||||
**Replaces**: `appraisal_notes` (string-valued)
|
||||
|
||||
**Purpose**:
|
||||
Generic slot for attaching typed notes (appraisal, arrangement,
|
||||
conservation, processing) with optional language and date metadata.
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Property | Notes |
|
||||
|----------|----------|-------|
|
||||
| **SKOS** | `skos:note` | Primary - general note |
|
||||
| **RDFS** | `rdfs:comment` | Related - comment |
|
||||
|
||||
**RiC-O Context**:
|
||||
Archival notes follow RiC-O patterns for documenting processing
|
||||
activities and decisions (appraisal, arrangement, description).
|
||||
|
||||
exact_mappings:
|
||||
- skos:note
|
||||
close_mappings:
|
||||
- rdfs:comment
|
||||
examples:
|
||||
- value: |
|
||||
- note_type: appraisal
|
||||
note_content: "Retained all policy files; destroyed duplicate copies per retention schedule RS-2020-05"
|
||||
note_date: "2024-03-15"
|
||||
description: Appraisal note documenting retention decisions
|
||||
- value: |
|
||||
- note_type: arrangement
|
||||
note_content: "Maintained original order by correspondent. Created 5 series by function."
|
||||
note_date: "2024-06-01"
|
||||
description: Arrangement note documenting physical organization
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_provenance
|
||||
name: has_or_had_provenance_slot
|
||||
title: Has Or Had Provenance Slot
|
||||
description: >-
|
||||
Generic slot for attaching provenance information to any data element.
|
||||
|
||||
**MIGRATION NOTE** (2026-01-14):
|
||||
Created as replacement for `all_data_real`, `is_or_was_real`, and `has_all_data_real_flag` slots.
|
||||
Uses `ProvenanceBlock` class for comprehensive provenance tracking including data realness,
|
||||
extraction metadata, confidence scores, and verification status.
|
||||
See slot_fixes.yaml for migration specification.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
dct: http://purl.org/dc/terms/
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
has_or_had_provenance:
|
||||
description: >-
|
||||
Provenance information for this data element.
|
||||
|
||||
Links to a ProvenanceBlock that contains comprehensive provenance tracking
|
||||
including data sources, extraction methods, confidence scores, timestamps,
|
||||
and verification status.
|
||||
|
||||
**TEMPORAL SEMANTICS** (RiC-O style):
|
||||
The "has_or_had" naming follows RiC-O convention indicating that provenance
|
||||
associations can change over time:
|
||||
- Additional provenance may be added as data is enriched
|
||||
- Provenance may be updated when verification occurs
|
||||
- Historical provenance preserved through versioning
|
||||
|
||||
**REPLACES**:
|
||||
- `all_data_real` (auto-generated stub, string range)
|
||||
- `is_or_was_real` (RealnessStatus typed class)
|
||||
- `has_all_data_real_flag` (boolean flag, no provenance)
|
||||
|
||||
**EXAMPLE**:
|
||||
```yaml
|
||||
has_or_had_provenance:
|
||||
data_source: "public_linkedin_profile"
|
||||
extraction_date: "2025-01-14T12:00:00Z"
|
||||
confidence_score: 0.95
|
||||
note: "Verified production data"
|
||||
```
|
||||
|
||||
range: ProvenanceBlock
|
||||
slot_uri: prov:wasGeneratedBy
|
||||
inlined: true
|
||||
|
||||
exact_mappings:
|
||||
- prov:wasGeneratedBy
|
||||
|
||||
close_mappings:
|
||||
- dct:provenance
|
||||
- prov:hadPrimarySource
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: >-
|
||||
Provenance metadata applicable to all custodian types.
|
||||
custodian_types_primary: "*"
|
||||
specificity_score: 0.2
|
||||
specificity_rationale: >-
|
||||
Very low specificity - universal metadata applicable everywhere.
|
||||
template_specificity:
|
||||
general_heritage: 0.2
|
||||
archive_search: 0.2
|
||||
museum_search: 0.2
|
||||
library_search: 0.2
|
||||
|
||||
comments:
|
||||
- Created from slot_fixes.yaml migration (2026-01-14)
|
||||
- Replaces all_data_real, is_or_was_real, and has_all_data_real_flag slots
|
||||
- Uses ProvenanceBlock class for comprehensive provenance tracking
|
||||
|
||||
see_also:
|
||||
- http://www.w3.org/ns/prov#wasGeneratedBy
|
||||
- https://nde.nl/ontology/hc/class/ProvenanceBlock
|
||||
|
|
@ -3,16 +3,9 @@
|
|||
"accepts_or_accepted_external_work.yaml",
|
||||
"accepts_or_accepted_payment_method.yaml",
|
||||
"accepts_or_accepted_visiting_scholar.yaml",
|
||||
"activities_societies.yaml",
|
||||
"activity_id.yaml",
|
||||
"actual_end.yaml",
|
||||
"actual_start.yaml",
|
||||
"address_formatted.yaml",
|
||||
"address_type.yaml",
|
||||
"admin_office_id.yaml",
|
||||
"administrative_functions.yaml",
|
||||
|
||||
"affects_or_affected.yaml",
|
||||
"aggregates_from.yaml",
|
||||
"aggregates_or_aggregated_from.yaml",
|
||||
"is_or_was_real.yaml",
|
||||
"allocates_or_allocated.yaml",
|
||||
|
|
@ -23,7 +16,6 @@
|
|||
"applicable_countries.yaml",
|
||||
"applies_to_call.yaml",
|
||||
"appointment_required.yaml",
|
||||
"appraisal_notes.yaml",
|
||||
"approved_by.yaml",
|
||||
"approximate.yaml",
|
||||
"archive_branches.yaml",
|
||||
|
|
@ -53,7 +45,6 @@
|
|||
"binding.yaml",
|
||||
"binding_description.yaml",
|
||||
"binding_provenance.yaml",
|
||||
"binding_type.yaml",
|
||||
"bio_custodian_subtype.yaml",
|
||||
"bio_type_classification.yaml",
|
||||
"birth_date.yaml",
|
||||
|
|
@ -74,7 +65,6 @@
|
|||
"branch_office_name.yaml",
|
||||
"branch_service_area.yaml",
|
||||
"branch_staff_count.yaml",
|
||||
"branch_type.yaml",
|
||||
"broader_concept.yaml",
|
||||
"broader_concept_label.yaml",
|
||||
"broader_type.yaml",
|
||||
|
|
@ -83,7 +73,6 @@
|
|||
"budget_description.yaml",
|
||||
"budget_name.yaml",
|
||||
"budget_status.yaml",
|
||||
"budget_type.yaml",
|
||||
"building_floor_area_sqm.yaml",
|
||||
"business_criticality.yaml",
|
||||
"business_model.yaml",
|
||||
|
|
@ -677,9 +666,7 @@
|
|||
"has_activity_name.yaml",
|
||||
"has_activity_timespan.yaml",
|
||||
"has_activity_type.yaml",
|
||||
"has_actual_end_date.yaml",
|
||||
"has_actual_return_date.yaml",
|
||||
"has_actual_start_date.yaml",
|
||||
"has_address.yaml",
|
||||
"has_admin_office_description.yaml",
|
||||
"has_admin_office_identifier.yaml",
|
||||
|
|
@ -911,6 +898,7 @@
|
|||
"has_or_had_member.yaml",
|
||||
"has_or_had_member_custodian.yaml",
|
||||
"has_or_had_music_segment.yaml",
|
||||
"has_or_had_notes.yaml",
|
||||
"has_or_had_open_access_endpoint.yaml",
|
||||
"has_or_had_operate.yaml",
|
||||
"has_or_had_operates_platform_type.yaml",
|
||||
|
|
@ -1324,6 +1312,9 @@
|
|||
"notary_name.yaml",
|
||||
"notary_office.yaml",
|
||||
"note.yaml",
|
||||
"note_content.yaml",
|
||||
"note_date.yaml",
|
||||
"note_type.yaml",
|
||||
"oai_pmh_endpoint.yaml",
|
||||
"object_alternate_name.yaml",
|
||||
"object_bbox.yaml",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
# note_content - Textual content of a note
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 38 (slot centralization)
|
||||
# Migration: Supports Notes class (replaces appraisal_notes)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/note_content
|
||||
name: note_content_slot
|
||||
title: Note Content Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
note_content:
|
||||
slot_uri: rdf:value
|
||||
range: string
|
||||
description: |
|
||||
The textual content of a note.
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Property | Notes |
|
||||
|----------|----------|-------|
|
||||
| **RDF** | `rdf:value` | Primary - literal value |
|
||||
| **SKOS** | `skos:note` | Related - note text |
|
||||
|
||||
exact_mappings:
|
||||
- rdf:value
|
||||
close_mappings:
|
||||
- skos:note
|
||||
examples:
|
||||
- value: "Retained all policy files; destroyed duplicate copies per retention schedule."
|
||||
description: Appraisal note content
|
||||
- value: "Maintained original order by correspondent. Created 5 series by function."
|
||||
description: Arrangement note content
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# note_date - Date a note was created or updated
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 38 (slot centralization)
|
||||
# Migration: Supports Notes class (replaces appraisal_notes)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/note_date
|
||||
name: note_date_slot
|
||||
title: Note Date Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
schema: http://schema.org/
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
note_date:
|
||||
slot_uri: dcterms:date
|
||||
range: date
|
||||
description: |
|
||||
The date when the note was created or last updated.
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Property | Notes |
|
||||
|----------|----------|-------|
|
||||
| **DCTerms** | `dcterms:date` | Primary - date |
|
||||
| **Schema.org** | `schema:dateCreated` | Related - creation date |
|
||||
|
||||
exact_mappings:
|
||||
- dcterms:date
|
||||
close_mappings:
|
||||
- schema:dateCreated
|
||||
examples:
|
||||
- value: "2024-03-15"
|
||||
description: Note created March 15, 2024
|
||||
- value: "2024-06-01"
|
||||
description: Note updated June 1, 2024
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# note_type - Type classification for notes
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 38 (slot centralization)
|
||||
# Migration: Supports Notes class (replaces appraisal_notes)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/note_type
|
||||
name: note_type_slot
|
||||
title: Note Type Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
note_type:
|
||||
slot_uri: dcterms:type
|
||||
range: string
|
||||
description: |
|
||||
The type or category of the note.
|
||||
|
||||
**Common Types**:
|
||||
- appraisal: Retention/destruction decisions
|
||||
- arrangement: Physical organization notes
|
||||
- conservation: Treatment documentation
|
||||
- processing: Archival workflow notes
|
||||
- general: General documentation
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Property | Notes |
|
||||
|----------|----------|-------|
|
||||
| **DCTerms** | `dcterms:type` | Primary - nature/genre |
|
||||
| **SKOS** | `skos:inScheme` | Related - controlled vocab |
|
||||
|
||||
exact_mappings:
|
||||
- dcterms:type
|
||||
examples:
|
||||
- value: "appraisal"
|
||||
description: Appraisal decision documentation
|
||||
- value: "arrangement"
|
||||
description: Physical organization notes
|
||||
- value: "conservation"
|
||||
description: Treatment documentation
|
||||
|
|
@ -30,24 +30,34 @@ fixes:
|
|||
status: true
|
||||
timestamp: '2026-01-14T16:00:00Z'
|
||||
session: "session-2026-01-14-type-migration"
|
||||
notes: "FULLY MIGRATED: TemporaryLocation - actual_end REMOVED, using temporal_extent with TimeSpan.end_of_the_end (Rule 53)"
|
||||
notes: "FULLY MIGRATED: TemporaryLocation - actual_end REMOVED. Use temporal_extent (range: TimeSpan) which contains end_of_the_end. CIDOC-CRM pattern: P4_has_time-span → E52_Time-Span → P82b_end_of_the_end"
|
||||
revision:
|
||||
- label: end_of_the_end
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
description: "Slot with range TimeSpan (crm:P4_has_time-span)"
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
description: "Class containing begin_of_the_begin, end_of_the_begin, begin_of_the_end, end_of_the_end slots"
|
||||
- label: end_of_the_end
|
||||
type: slot
|
||||
description: "Nested within TimeSpan - latest possible end time (crm:P82b_end_of_the_end)"
|
||||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/actual_start
|
||||
processed:
|
||||
status: true
|
||||
timestamp: '2026-01-14T16:00:00Z'
|
||||
session: "session-2026-01-14-type-migration"
|
||||
notes: "FULLY MIGRATED: TemporaryLocation - actual_start REMOVED, using temporal_extent with TimeSpan.begin_of_the_begin (Rule 53)"
|
||||
notes: "FULLY MIGRATED: TemporaryLocation - actual_start REMOVED. Use temporal_extent (range: TimeSpan) which contains begin_of_the_begin. CIDOC-CRM pattern: P4_has_time-span → E52_Time-Span → P82a_begin_of_the_begin"
|
||||
revision:
|
||||
- label: begin_of_the_begin
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
description: "Slot with range TimeSpan (crm:P4_has_time-span)"
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
description: "Class containing begin_of_the_begin, end_of_the_begin, begin_of_the_end, end_of_the_end slots"
|
||||
- label: begin_of_the_begin
|
||||
type: slot
|
||||
description: "Nested within TimeSpan - earliest possible start time (crm:P82a_begin_of_the_begin)"
|
||||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/address_formatted
|
||||
processed:
|
||||
|
|
@ -171,16 +181,17 @@ fixes:
|
|||
- original_slot_id: https://nde.nl/ontology/hc/slot/all_data_real
|
||||
processed:
|
||||
status: true
|
||||
timestamp: '2026-01-14T22:30:00Z'
|
||||
session: "session-2026-01-14-realness-migration"
|
||||
timestamp: '2026-01-14T23:30:00Z'
|
||||
session: "session-2026-01-14-provenance-migration"
|
||||
notes: >-
|
||||
FULLY MIGRATED: all_data_real and has_all_data_real_flag REMOVED and archived.
|
||||
Created is_or_was_real slot and RealnessStatus class per slot_fixes.yaml revision.
|
||||
LinkedInProfile.yaml updated - WhatsAppEnrichmentMetadata now uses is_or_was_real.
|
||||
FULLY MIGRATED: all_data_real, is_or_was_real, and has_all_data_real_flag REMOVED and archived.
|
||||
Created has_or_had_provenance slot pointing to existing ProvenanceBlock class.
|
||||
LinkedInProfile.yaml updated - WhatsAppEnrichmentMetadata now uses has_or_had_provenance.
|
||||
Archived: is_or_was_real.yaml (slot), RealnessStatus.yaml (class) to archive/ folders.
|
||||
revision:
|
||||
- label: is_or_was_real
|
||||
- label: has_or_had_provenance
|
||||
type: slot
|
||||
- label: RealnessStatus
|
||||
- label: ProvenanceBlock
|
||||
type: class
|
||||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/all_links
|
||||
|
|
@ -408,10 +419,10 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/appraisal_notes
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to Notes class"
|
||||
status: true
|
||||
timestamp: "2026-01-14T10:30:00Z"
|
||||
session: "claude-opus-4-20250514"
|
||||
notes: "Migrated to has_or_had_notes slot with Notes class. Created Notes.yaml, has_or_had_notes.yaml, note_type.yaml, note_content.yaml, note_date.yaml. Updated CustodianArchive.yaml."
|
||||
revision:
|
||||
- label: has_or_had_notes
|
||||
type: slot
|
||||
|
|
@ -608,10 +619,10 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/auxiliary_platform_id
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Identifier class"
|
||||
status: true
|
||||
timestamp: "2026-01-14T12:15:00Z"
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: "Migrated to has_or_had_identifier. Updated AuxiliaryDigitalPlatform.yaml class. Archived auxiliary_platform_id.yaml and has_auxiliary_platform_identifier.yaml"
|
||||
revision:
|
||||
- label: has_or_had_identifier
|
||||
type: slot
|
||||
|
|
@ -757,10 +768,16 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/binding_provenance
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Provenance class"
|
||||
status: true
|
||||
timestamp: '2026-01-15T00:20:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: binding_provenance REMOVED and archived.
|
||||
InformationCarrier.yaml updated to use has_or_had_provenance slot.
|
||||
Updated imports, slots list, and slot_usage with migration note.
|
||||
Note: This slot described physical binding provenance (e.g., royal presentation bindings),
|
||||
which is semantically different from data extraction provenance.
|
||||
Archived: binding_provenance.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_provenance
|
||||
type: slot
|
||||
|
|
@ -957,10 +974,13 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_id
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Identifier class"
|
||||
status: true
|
||||
timestamp: '2026-01-14T23:45:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: branch_id REMOVED and archived.
|
||||
OrganizationBranch.yaml updated to use has_or_had_identifier slot.
|
||||
Archived: branch_id.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_identifier
|
||||
type: slot
|
||||
|
|
@ -969,10 +989,14 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_name
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Label class"
|
||||
status: true
|
||||
timestamp: '2026-01-15T00:10:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: branch_name REMOVED and archived.
|
||||
OrganizationBranch.yaml updated to use has_or_had_label slot.
|
||||
AuxiliaryPlace.yaml examples updated (hosts_branch references).
|
||||
Archived: branch_name.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
|
|
@ -981,10 +1005,14 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_office_description
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Description class"
|
||||
status: true
|
||||
timestamp: '2026-01-15T00:15:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: branch_office_description REMOVED and archived.
|
||||
BranchOffice.yaml updated to use has_or_had_description slot.
|
||||
Updated imports, slots list, slot_usage, class description example, and 2 class examples.
|
||||
Archived: branch_office_description.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_description
|
||||
type: slot
|
||||
|
|
@ -993,10 +1021,13 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_office_id
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Identifier class"
|
||||
status: true
|
||||
timestamp: '2026-01-14T23:50:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: branch_office_id REMOVED and archived.
|
||||
BranchOffice.yaml updated to use has_or_had_identifier slot.
|
||||
Archived: branch_office_id.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_identifier
|
||||
type: slot
|
||||
|
|
@ -1005,10 +1036,14 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_office_name
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Label class"
|
||||
status: true
|
||||
timestamp: '2026-01-15T00:00:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: branch_office_name REMOVED and archived.
|
||||
BranchOffice.yaml updated to use has_or_had_label slot.
|
||||
Updated imports, slots list, slot_usage, class description example, and 2 class examples.
|
||||
Archived: branch_office_name.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
|
|
@ -1237,12 +1272,17 @@ fixes:
|
|||
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/cadastral_id
|
||||
processed:
|
||||
status: false
|
||||
timestamp: null
|
||||
session: null
|
||||
notes: "Maps to existing Identifier class"
|
||||
status: true
|
||||
timestamp: '2026-01-14T23:55:00Z'
|
||||
session: "session-2026-01-14-identifier-migrations"
|
||||
notes: >-
|
||||
FULLY MIGRATED: cadastral_id REMOVED and archived.
|
||||
GeoSpatialPlace.yaml updated to use has_or_had_identifier slot.
|
||||
Use Identifier with identifier_scheme='cadastral' for parcel IDs.
|
||||
Archived: cadastral_id.yaml to archive/ folder per Rule 53.
|
||||
revision:
|
||||
- label: has_or_had_identifier
|
||||
type: slot
|
||||
- label: Identifier
|
||||
type: class
|
||||
|
||||
|
|
|
|||
|
|
@ -402,10 +402,11 @@ export default function EntityReviewPage() {
|
|||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
wcms_ppid: selectedProfile.ppid,
|
||||
name: selectedProfile.name,
|
||||
email: selectedProfile.email || undefined,
|
||||
email_domain: selectedProfile.email_domain || undefined,
|
||||
institution_name: selectedProfile.wcms_identifiers?.institution_name || undefined,
|
||||
institution: selectedProfile.wcms_identifiers?.institution_name || undefined,
|
||||
}),
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
# --all Deploy everything
|
||||
# --status Check server status only
|
||||
# --clear Clear Oxigraph store before loading (use with --data)
|
||||
# --sync-reviews Sync entity resolution review data FROM server to local
|
||||
|
||||
set -e
|
||||
|
||||
|
|
@ -69,9 +70,10 @@ DEPLOY_VALKEY=false
|
|||
DEPLOY_RAG=false
|
||||
CLEAR_OXIGRAPH=false
|
||||
STATUS_ONLY=false
|
||||
SYNC_REVIEWS=false
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 [--infra] [--data] [--frontend] [--archief] [--api] [--ducklake] [--qdrant] [--valkey] [--rag] [--all] [--status] [--clear]"
|
||||
echo "Usage: $0 [--infra] [--data] [--frontend] [--archief] [--api] [--ducklake] [--qdrant] [--valkey] [--rag] [--all] [--status] [--clear] [--sync-reviews]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -121,6 +123,9 @@ for arg in "$@"; do
|
|||
--status)
|
||||
STATUS_ONLY=true
|
||||
;;
|
||||
--sync-reviews)
|
||||
SYNC_REVIEWS=true
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $arg"
|
||||
exit 1
|
||||
|
|
@ -585,6 +590,11 @@ if [ "$DEPLOY_API" = true ]; then
|
|||
echo -e "${BLUE} Deploying FastAPI Backend (DSPy SPARQL Generation)${NC}"
|
||||
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
|
||||
# CRITICAL: Backup review data before deployment to prevent data loss
|
||||
echo -e "${YELLOW}Creating backup of review data before deployment...${NC}"
|
||||
ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" \
|
||||
"/var/lib/glam/api/backup-reviews.sh 2>/dev/null || echo 'No backup script yet - will be created'"
|
||||
|
||||
# Ensure remote directories exist with proper Python package structure
|
||||
echo -e "${YELLOW}Setting up API directory on server...${NC}"
|
||||
ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" \
|
||||
|
|
@ -1088,6 +1098,70 @@ ENDSSH
|
|||
echo -e " External: https://bronhouder.nl/api/rag/"
|
||||
fi
|
||||
|
||||
# Sync review data from server
|
||||
if [ "$SYNC_REVIEWS" = true ]; then
|
||||
echo ""
|
||||
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo -e "${BLUE} Syncing Entity Resolution Review Data FROM Server${NC}"
|
||||
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
|
||||
LOCAL_ER_DIR="$PROJECT_ROOT/data/entity_resolution"
|
||||
SERVER_ER_DIR="/var/lib/glam/api/data/entity_resolution"
|
||||
BACKUP_DIR="$LOCAL_ER_DIR/backups"
|
||||
|
||||
# Create backup directory if needed
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Check if server file exists
|
||||
echo -e "${YELLOW}Checking server data...${NC}"
|
||||
SERVER_FILE_EXISTS=$(ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" \
|
||||
"test -f $SERVER_ER_DIR/entity_resolution_candidates.json && echo 'yes' || echo 'no'")
|
||||
|
||||
if [ "$SERVER_FILE_EXISTS" = "yes" ]; then
|
||||
# Get stats from server
|
||||
echo -e "${YELLOW}Server review stats:${NC}"
|
||||
ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" \
|
||||
"cat $SERVER_ER_DIR/entity_resolution_candidates.json | python3 -c '
|
||||
import json,sys
|
||||
d=json.load(sys.stdin)
|
||||
reviewed=[c for c in d.get(\"candidates\",[]) if c.get(\"reviewed\")]
|
||||
matches=[c for c in reviewed if c.get(\"review_decision\")==\"match\"]
|
||||
print(f\" Total candidates: {len(d.get(\"candidates\",[]))}\" )
|
||||
print(f\" Reviewed: {len(reviewed)} ({len(matches)} matches)\")
|
||||
print(f\" Last review: {d.get(\"metadata\",{}).get(\"last_review_at\",\"N/A\")}\")
|
||||
'"
|
||||
|
||||
# Backup local file
|
||||
if [ -f "$LOCAL_ER_DIR/entity_resolution_candidates.json" ]; then
|
||||
BACKUP_FILE="$BACKUP_DIR/entity_resolution_candidates_local_$(date +%Y%m%d_%H%M%S).json"
|
||||
echo -e "${YELLOW}Backing up local file to: $BACKUP_FILE${NC}"
|
||||
cp "$LOCAL_ER_DIR/entity_resolution_candidates.json" "$BACKUP_FILE"
|
||||
fi
|
||||
|
||||
# Download server file
|
||||
echo -e "${YELLOW}Downloading server data...${NC}"
|
||||
rsync -avz --progress \
|
||||
-e "ssh -o StrictHostKeyChecking=no" \
|
||||
"$SERVER_USER@$SERVER_IP:$SERVER_ER_DIR/entity_resolution_candidates.json" \
|
||||
"$LOCAL_ER_DIR/entity_resolution_candidates.json"
|
||||
|
||||
echo -e "${GREEN}Review data synced successfully${NC}"
|
||||
|
||||
# Show local stats
|
||||
echo -e "${YELLOW}Local file now contains:${NC}"
|
||||
cat "$LOCAL_ER_DIR/entity_resolution_candidates.json" | python3 -c '
|
||||
import json,sys
|
||||
d=json.load(sys.stdin)
|
||||
reviewed=[c for c in d.get("candidates",[]) if c.get("reviewed")]
|
||||
matches=[c for c in reviewed if c.get("review_decision")=="match"]
|
||||
print(f" Reviewed: {len(reviewed)} ({len(matches)} matches)")
|
||||
'
|
||||
else
|
||||
echo -e "${RED}No entity resolution data found on server${NC}"
|
||||
echo "Server path: $SERVER_ER_DIR/entity_resolution_candidates.json"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Final status
|
||||
echo ""
|
||||
echo -e "${BLUE}════════════════════════════════════════════════════════════════${NC}"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"generated": "2026-01-14T08:51:14.564Z",
|
||||
"generated": "2026-01-14T11:14:08.309Z",
|
||||
"schemaRoot": "/schemas/20251121/linkml",
|
||||
"totalFiles": 2913,
|
||||
"totalFiles": 2896,
|
||||
"categoryCounts": {
|
||||
"main": 4,
|
||||
"class": 671,
|
||||
"enum": 147,
|
||||
"slot": 2087,
|
||||
"slot": 2070,
|
||||
"module": 4
|
||||
},
|
||||
"categories": [
|
||||
|
|
@ -1945,6 +1945,11 @@
|
|||
"path": "modules/classes/NotarialArchiveRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Notes",
|
||||
"path": "modules/classes/Notes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "OAIPMHEndpoint",
|
||||
"path": "modules/classes/OAIPMHEndpoint.yaml",
|
||||
|
|
@ -2405,11 +2410,6 @@
|
|||
"path": "modules/classes/ReadingRoomAnnex.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "RealnessStatus",
|
||||
"path": "modules/classes/RealnessStatus.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "ReconstructedEntity",
|
||||
"path": "modules/classes/ReconstructedEntity.yaml",
|
||||
|
|
@ -4157,51 +4157,11 @@
|
|||
"path": "modules/slots/accepts_or_accepted_visiting_scholar.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "activities_societies",
|
||||
"path": "modules/slots/activities_societies.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "actual_end",
|
||||
"path": "modules/slots/actual_end.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "actual_start",
|
||||
"path": "modules/slots/actual_start.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "address_formatted",
|
||||
"path": "modules/slots/address_formatted.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "address_type",
|
||||
"path": "modules/slots/address_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "admin_office_id",
|
||||
"path": "modules/slots/admin_office_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "administrative_functions",
|
||||
"path": "modules/slots/administrative_functions.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "affects_or_affected",
|
||||
"path": "modules/slots/affects_or_affected.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "aggregates_from",
|
||||
"path": "modules/slots/aggregates_from.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "aggregates_or_aggregated_from",
|
||||
"path": "modules/slots/aggregates_or_aggregated_from.yaml",
|
||||
|
|
@ -4247,11 +4207,6 @@
|
|||
"path": "modules/slots/appointment_required.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "appraisal_notes",
|
||||
"path": "modules/slots/appraisal_notes.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "approved_by",
|
||||
"path": "modules/slots/approved_by.yaml",
|
||||
|
|
@ -4377,16 +4332,6 @@
|
|||
"path": "modules/slots/binding_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "binding_provenance",
|
||||
"path": "modules/slots/binding_provenance.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "binding_type",
|
||||
"path": "modules/slots/binding_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "bio_custodian_subtype",
|
||||
"path": "modules/slots/bio_custodian_subtype.yaml",
|
||||
|
|
@ -4452,31 +4397,6 @@
|
|||
"path": "modules/slots/branch_head.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_id",
|
||||
"path": "modules/slots/branch_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_name",
|
||||
"path": "modules/slots/branch_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_description",
|
||||
"path": "modules/slots/branch_office_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_id",
|
||||
"path": "modules/slots/branch_office_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_office_name",
|
||||
"path": "modules/slots/branch_office_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_service_area",
|
||||
"path": "modules/slots/branch_service_area.yaml",
|
||||
|
|
@ -4487,11 +4407,6 @@
|
|||
"path": "modules/slots/branch_staff_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "branch_type",
|
||||
"path": "modules/slots/branch_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "broader_concept",
|
||||
"path": "modules/slots/broader_concept.yaml",
|
||||
|
|
@ -4532,11 +4447,6 @@
|
|||
"path": "modules/slots/budget_status.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "budget_type",
|
||||
"path": "modules/slots/budget_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "building_floor_area_sqm",
|
||||
"path": "modules/slots/building_floor_area_sqm.yaml",
|
||||
|
|
@ -4557,11 +4467,6 @@
|
|||
"path": "modules/slots/cached_token.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "cadastral_id",
|
||||
"path": "modules/slots/cadastral_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "call_description",
|
||||
"path": "modules/slots/call_description.yaml",
|
||||
|
|
@ -7482,21 +7387,11 @@
|
|||
"path": "modules/slots/has_activity_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_end_date",
|
||||
"path": "modules/slots/has_actual_end_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_return_date",
|
||||
"path": "modules/slots/has_actual_return_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_actual_start_date",
|
||||
"path": "modules/slots/has_actual_start_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_address",
|
||||
"path": "modules/slots/has_address.yaml",
|
||||
|
|
@ -8682,6 +8577,11 @@
|
|||
"path": "modules/slots/has_or_had_note.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_notes",
|
||||
"path": "modules/slots/has_or_had_notes.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_open_access_endpoint",
|
||||
"path": "modules/slots/has_or_had_open_access_endpoint.yaml",
|
||||
|
|
@ -8767,6 +8667,11 @@
|
|||
"path": "modules/slots/has_or_had_project.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_provenance",
|
||||
"path": "modules/slots/has_or_had_provenance.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_provenance_event",
|
||||
"path": "modules/slots/has_or_had_provenance_event.yaml",
|
||||
|
|
@ -9712,11 +9617,6 @@
|
|||
"path": "modules/slots/is_or_was_platform_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_real",
|
||||
"path": "modules/slots/is_or_was_real.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_related_to",
|
||||
"path": "modules/slots/is_or_was_related_to.yaml",
|
||||
|
|
@ -10777,6 +10677,21 @@
|
|||
"path": "modules/slots/note.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_content",
|
||||
"path": "modules/slots/note_content.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_date",
|
||||
"path": "modules/slots/note_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "note_type",
|
||||
"path": "modules/slots/note_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "oai_pmh_endpoint",
|
||||
"path": "modules/slots/oai_pmh_endpoint.yaml",
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ imports:
|
|||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/broader_concept
|
||||
- ../slots/broader_concept_label
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/template_specificity
|
||||
- ../slots/wikidata_alignment
|
||||
|
|
@ -36,7 +36,7 @@ classes:
|
|||
- dual_class_link
|
||||
- has_or_had_holds_record_set_type
|
||||
- broader_concept
|
||||
- broader_concept_label
|
||||
- has_or_had_label
|
||||
- specificity_annotation
|
||||
- template_specificity
|
||||
- wikidata_alignment
|
||||
|
|
@ -84,7 +84,11 @@ classes:
|
|||
inlined: true
|
||||
broader_concept:
|
||||
equals_expression: '["wd:Q166118"]'
|
||||
broader_concept_label:
|
||||
has_or_had_label:
|
||||
description: >-
|
||||
Human-readable label for the broader concept.
|
||||
Stored for display to avoid repeated lookups.
|
||||
MIGRATED from broader_concept_label (2026-01-15) per Rule 53.
|
||||
equals_string: archive
|
||||
dual_class_link:
|
||||
range: DualClassLink
|
||||
|
|
|
|||
|
|
@ -21,7 +21,9 @@ imports:
|
|||
- ../slots/policy_name
|
||||
- ../slots/has_or_had_access_description
|
||||
- ../slots/has_or_had_access_level
|
||||
- ../slots/appointment_required
|
||||
# REMOVED 2026-01-15: ../slots/appointment_required - migrated to is_or_was_required
|
||||
# REMOVED 2026-01-15: ../slots/has_appointment_required_flag - consolidated to is_or_was_required
|
||||
- ../slots/is_or_was_required
|
||||
- ../slots/condition
|
||||
- ../slots/credentials_required
|
||||
- ../slots/cultural_protocol_url
|
||||
|
|
@ -37,7 +39,6 @@ imports:
|
|||
- ../slots/template_specificity
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScores
|
||||
- ../slots/has_appointment_required_flag
|
||||
classes:
|
||||
AccessPolicy:
|
||||
class_uri: premis:RightsStatus
|
||||
|
|
@ -64,7 +65,7 @@ classes:
|
|||
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 appointment_required: true\n ```\n\n3. **Embargoed Collection**:\n\
|
||||
\ required from supervising institution\"\n is_or_was_required: 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:\
|
||||
|
|
@ -85,7 +86,8 @@ classes:
|
|||
slots:
|
||||
- has_or_had_access_description
|
||||
- has_or_had_access_level
|
||||
- appointment_required
|
||||
# REMOVED 2026-01-15: appointment_required - migrated to is_or_was_required
|
||||
- is_or_was_required
|
||||
- condition
|
||||
- contact_email
|
||||
- credentials_required
|
||||
|
|
@ -160,8 +162,12 @@ classes:
|
|||
description: In Copyright
|
||||
- value: http://rightsstatements.org/vocab/NoC-US/1.0/
|
||||
description: No Copyright - United States
|
||||
has_appointment_required_flag:
|
||||
is_or_was_required:
|
||||
range: boolean
|
||||
description: |
|
||||
Whether an appointment is required for access.
|
||||
MIGRATED 2026-01-15: Replaces appointment_required and has_appointment_required_flag per Rule 53.
|
||||
Consolidated to generic is_or_was_required slot.
|
||||
examples:
|
||||
- value: true
|
||||
description: Appointment required
|
||||
|
|
@ -251,7 +257,7 @@ classes:
|
|||
- Registration form must be completed
|
||||
- Original materials handled with gloves
|
||||
registration_required: true
|
||||
appointment_required: false
|
||||
is_or_was_required: false # MIGRATED 2026-01-15: was appointment_required
|
||||
fee_required: false
|
||||
contact_email: studiezaal@nationaalarchief.nl
|
||||
description: Standard archive public access policy
|
||||
|
|
@ -273,7 +279,7 @@ classes:
|
|||
condition:
|
||||
- Awaiting processing and cataloging
|
||||
- Access may be arranged for urgent research needs
|
||||
appointment_required: true
|
||||
is_or_was_required: true # MIGRATED 2026-01-15: was appointment_required
|
||||
credentials_required: PROFESSIONAL
|
||||
contact_email: preservation@archive.org
|
||||
description: Dark archive / DIM access policy
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ classes:
|
|||
\n preferred_label: \"Rijksmuseum\"\n place_designation:\n place_name: \"Rijksmuseum\" # Main building on Museumplein\n\
|
||||
\ auxiliary_places:\n - place_name: \"Depot Amersfoort\"\n auxiliary_place_type: STORAGE_FACILITY\n \
|
||||
\ street_address: \"Euterpelaan 25, Amersfoort\"\n - place_name: \"Rijksmuseum Schiphol\"\n auxiliary_place_type:\
|
||||
\ BRANCH_OFFICE\n street_address: \"Schiphol Airport, Lounge 2\"\n hosts_branch:\n branch_name:\
|
||||
\ BRANCH_OFFICE\n street_address: \"Schiphol Airport, Lounge 2\"\n hosts_branch:\n has_or_had_label:\
|
||||
\ \"Schiphol Exhibition Space\"\n```\n\n**TEMPORAL VALIDITY**:\n\nAuxiliary places can open/close independently:\n-\
|
||||
\ Storage facility opened 1995, closed 2010 (moved to new location)\n- Branch office valid_from 2000, valid_to null\
|
||||
\ (still active)\n\nTrack with valid_from/valid_to or temporal_extent (for fuzzy dates).\n"
|
||||
|
|
@ -279,7 +279,7 @@ classes:
|
|||
inlined_as_list: true
|
||||
examples:
|
||||
- value:
|
||||
branch_name: Conservation Division - Amersfoort
|
||||
has_or_had_label: Conservation Division - Amersfoort
|
||||
branch_type: CONSERVATION_LAB
|
||||
description: Conservation branch at depot site
|
||||
is_auxiliary_of_place:
|
||||
|
|
@ -358,7 +358,7 @@ classes:
|
|||
country: https://nde.nl/ontology/hc/country/NL
|
||||
valid_from: '2002-10-01'
|
||||
hosts_branch:
|
||||
- branch_name: Schiphol Exhibition Team
|
||||
- has_or_had_label: Schiphol Exhibition Team
|
||||
branch_type: EXHIBITION_SPACE
|
||||
is_auxiliary_of_place: https://nde.nl/ontology/hc/place/rijksmuseum-main
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ imports:
|
|||
- ./ReconstructedEntity
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ../slots/branch_office_description
|
||||
- ../slots/branch_office_id
|
||||
- ../slots/branch_office_name
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/branch_service_area
|
||||
- ../slots/branch_staff_count
|
||||
- ../slots/has_local_collection
|
||||
|
|
@ -50,8 +50,8 @@ classes:
|
|||
\ Zaanstreek-Waterland branch\n - Serves researchers in Zaandam area\n - Holds local municipal records\n\n2. **Library\
|
||||
\ Satellite Locations**:\n - University library branch at satellite campus\n - Public library neighborhood branches\n\
|
||||
\n3. **Museum Study Centers**:\n - Off-site study/research center for scholars\n - Rijksmuseum Schiphol (airport\
|
||||
\ exhibition space)\n\n**Example - Regional Archive Branch**:\n```yaml\nBranchOffice:\n branch_office_id: \"https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch\"\
|
||||
\n branch_office_name: \"Noord-Hollands Archief - Zaanstreek-Waterland\"\n branch_office_description: |\n Regional\
|
||||
\ exhibition space)\n\n**Example - Regional Archive Branch**:\n```yaml\nBranchOffice:\n has_or_had_identifier: \"https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch\"\
|
||||
\n has_or_had_label: \"Noord-Hollands Archief - Zaanstreek-Waterland\"\n has_or_had_description: |\n Regional\
|
||||
\ branch serving Zaanstreek-Waterland area.\n Holds municipal records from Zaandam, Wormerland, Purmerend.\n Open\
|
||||
\ to researchers Tuesday-Thursday.\n branch_service_area: \"Zaanstreek-Waterland region\"\n is_public_facing: true\n\
|
||||
\ services_offered:\n - \"Archival research access\"\n - \"Genealogical consultations\"\n - \"Local history\
|
||||
|
|
@ -66,9 +66,9 @@ classes:
|
|||
- org:OrganizationalUnit
|
||||
- schema:branch
|
||||
slots:
|
||||
- branch_office_description
|
||||
- branch_office_id
|
||||
- branch_office_name
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- branch_service_area
|
||||
- branch_staff_count
|
||||
- has_local_collection
|
||||
|
|
@ -80,16 +80,24 @@ classes:
|
|||
- was_derived_from
|
||||
- was_generated_by
|
||||
slot_usage:
|
||||
branch_office_id:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
description: >-
|
||||
Unique identifier for this branch office.
|
||||
MIGRATED from branch_office_id (2026-01-14) per Rule 53.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
description: Noord-Hollands Archief regional branch
|
||||
branch_office_name:
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: false
|
||||
description: >-
|
||||
Name of this branch office.
|
||||
MIGRATED from branch_office_name (2026-01-14) per Rule 53.
|
||||
Typically includes parent organization name + branch location/function.
|
||||
examples:
|
||||
- value: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
description: Regional archive branch
|
||||
|
|
@ -97,8 +105,12 @@ classes:
|
|||
description: Airport exhibition branch
|
||||
- value: Universiteitsbibliotheek Science Park
|
||||
description: University library satellite
|
||||
branch_office_description:
|
||||
has_or_had_description:
|
||||
range: string
|
||||
description: >-
|
||||
Description of this branch office, including services offered,
|
||||
target audience, and distinguishing features.
|
||||
MIGRATED from branch_office_description (2026-01-15) per Rule 53.
|
||||
examples:
|
||||
- value: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam, Wormerland, Purmerend.
|
||||
Open to researchers Tuesday-Thursday.
|
||||
|
|
@ -161,9 +173,9 @@ classes:
|
|||
- https://schema.org/branch
|
||||
examples:
|
||||
- value:
|
||||
branch_office_id: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
branch_office_name: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
branch_office_description: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam,
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/aux/nha-zaanstreek-branch
|
||||
has_or_had_label: Noord-Hollands Archief - Zaanstreek-Waterland
|
||||
has_or_had_description: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam,
|
||||
Wormerland, Purmerend.
|
||||
branch_service_area: Zaanstreek-Waterland region
|
||||
is_public_facing: true
|
||||
|
|
@ -176,9 +188,9 @@ classes:
|
|||
has_local_collection: true
|
||||
description: Regional archive branch
|
||||
- value:
|
||||
branch_office_id: https://nde.nl/ontology/hc/aux/rijksmuseum-schiphol
|
||||
branch_office_name: Rijksmuseum Schiphol
|
||||
branch_office_description: Exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/aux/rijksmuseum-schiphol
|
||||
has_or_had_label: Rijksmuseum Schiphol
|
||||
has_or_had_description: Exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum
|
||||
collection. Free admission.
|
||||
branch_service_area: Amsterdam Schiphol Airport travelers
|
||||
is_public_facing: true
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ imports:
|
|||
- ../slots/has_or_had_acquisition_budget
|
||||
- ../slots/approved_by
|
||||
- ../slots/budget_currency
|
||||
- ../slots/budget_description
|
||||
- ../slots/budget_name
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/budget_status
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/capital_budget
|
||||
|
|
@ -94,8 +94,8 @@ classes:
|
|||
- has_approval_date
|
||||
- approved_by
|
||||
- budget_currency
|
||||
- budget_description
|
||||
- budget_name
|
||||
- has_or_had_description
|
||||
- has_or_had_label
|
||||
- budget_status
|
||||
- has_or_had_type
|
||||
- capital_budget
|
||||
|
|
@ -129,9 +129,39 @@ classes:
|
|||
budget_name:
|
||||
range: string
|
||||
required: true
|
||||
description: >-
|
||||
DEPRECATED: Use has_or_had_label instead.
|
||||
MIGRATION: 2026-01-15 - Replaced by has_or_had_label slot per Rule 53.
|
||||
deprecated: "Use has_or_had_label instead"
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
description: >-
|
||||
Name/title for this budget document.
|
||||
MIGRATED from budget_name (2026-01-15) per Rule 53.
|
||||
Maps to dcterms:title as a formal title for a financial planning resource.
|
||||
examples:
|
||||
- value: Rijksmuseum Operating Budget FY2024
|
||||
description: Major museum annual budget
|
||||
- value: Noord-Hollands Archief Annual Budget 2024-2025
|
||||
description: Provincial archive budget
|
||||
budget_description:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
DEPRECATED: Use has_or_had_description instead.
|
||||
MIGRATION: 2026-01-15 - Replaced by has_or_had_description slot per Rule 53.
|
||||
deprecated: "Use has_or_had_description instead"
|
||||
has_or_had_description:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
Narrative description of this budget document's scope and purpose.
|
||||
MIGRATED from budget_description (2026-01-15) per Rule 53.
|
||||
Maps to dcterms:description for financial planning documentation.
|
||||
examples:
|
||||
- value: Annual operating budget for fiscal year 2024, including major exhibition initiatives and digitization expansion.
|
||||
description: Comprehensive budget description
|
||||
budget_type:
|
||||
range: string
|
||||
multivalued: true
|
||||
|
|
@ -265,8 +295,8 @@ classes:
|
|||
examples:
|
||||
- value:
|
||||
id: https://nde.nl/ontology/hc/budget/rm/fy2024
|
||||
budget_name: Rijksmuseum Operating Budget FY2024
|
||||
budget_description: Annual operating budget for fiscal year 2024, including major exhibition initiatives and digitization
|
||||
has_or_had_label: Rijksmuseum Operating Budget FY2024
|
||||
has_or_had_description: Annual operating budget for fiscal year 2024, including major exhibition initiatives and digitization
|
||||
expansion.
|
||||
budget_type:
|
||||
- OPERATING
|
||||
|
|
@ -292,8 +322,8 @@ classes:
|
|||
description: Major museum annual operating budget
|
||||
- value:
|
||||
id: https://nde.nl/ontology/hc/budget/nha/fy2024-2025
|
||||
budget_name: Noord-Hollands Archief Annual Budget 2024-2025
|
||||
budget_description: Provincial archive annual budget aligned with government fiscal year.
|
||||
has_or_had_label: Noord-Hollands Archief Annual Budget 2024-2025
|
||||
has_or_had_description: Provincial archive annual budget aligned with government fiscal year.
|
||||
budget_type:
|
||||
- OPERATING
|
||||
- CONSOLIDATED
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../slots/record_equivalent
|
||||
- ../slots/bibframe_equivalent
|
||||
# REMOVED: ../slots/bibframe_equivalent - Use LinkML close_mappings instead (2026-01-15)
|
||||
- ../slots/collection_broader_type
|
||||
- ../slots/has_or_had_collection_narrower_type
|
||||
- ../slots/collection_type_description
|
||||
|
|
@ -49,10 +49,10 @@ classes:
|
|||
\ | rico:Fonds | Provenance-based archival unit |\n| SERIES | rico:Series | Subdivision of fonds |\n| FILE | rico:File\
|
||||
\ | Individual file/dossier |\n| ITEM | rico:Item | Single record |\n| ARTIFICIAL_COLLECTION | rico:Collection | Non-provenance\
|
||||
\ assemblage |\n\n**USE CASES**:\n\n1. **Archival Classification**:\n ```yaml\n CollectionType:\n type_id: \"\
|
||||
hc:collection-type/fonds\"\n type_name: \"Fonds\"\n record_equivalent: \"rico:Fonds\"\n description: \"\
|
||||
hc:collection-type/fonds\"\n type_name: \"Fonds\"\n record_equivalent: \"rico:Fonds\"\n description: \"\
|
||||
Provenance-based archival unit\"\n ```\n\n2. **Library Special Collection**:\n ```yaml\n CollectionType:\n \
|
||||
\ type_id: \"hc:collection-type/special-collection\"\n type_name: \"Special Collection\"\n bibframe_equivalent:\
|
||||
\ \"bf:Collection\"\n description: \"Named library special collection\"\n ```\n\n3. **Museum Named Collection**:\n\
|
||||
\ type_id: \"hc:collection-type/special-collection\"\n type_name: \"Special Collection\"\n # BIBFRAME mapping at class level via close_mappings: [bf:CollectionType]\n description:\
|
||||
\ \"Named library special collection\"\n ```\n\n3. **Museum Named Collection**:\n\
|
||||
\ ```yaml\n CollectionType:\n type_id: \"hc:collection-type/named-collection\"\n type_name: \"Named Collection\"\
|
||||
\n description: \"Collection named for donor or subject\"\n ```\n"
|
||||
exact_mappings:
|
||||
|
|
@ -62,7 +62,7 @@ classes:
|
|||
- bf:CollectionType
|
||||
- dcterms:DCMIType
|
||||
slots:
|
||||
- bibframe_equivalent
|
||||
# REMOVED: bibframe_equivalent - Use LinkML close_mappings instead (2026-01-15)
|
||||
- collection_broader_type
|
||||
- has_or_had_collection_narrower_type
|
||||
- collection_type_description
|
||||
|
|
@ -107,13 +107,8 @@ classes:
|
|||
description: RiC-O Series
|
||||
- value: rico:Collection
|
||||
description: RiC-O Collection (assembled)
|
||||
bibframe_equivalent:
|
||||
range: uriorcurie
|
||||
examples:
|
||||
- value: bf:Collection
|
||||
description: BIBFRAME Collection
|
||||
- value: bf:Archival
|
||||
description: BIBFRAME Archival
|
||||
# REMOVED: bibframe_equivalent slot_usage - Use LinkML close_mappings instead (2026-01-15)
|
||||
# BIBFRAME mappings are now at class level: close_mappings: [bf:CollectionType]
|
||||
wikidata_equivalent:
|
||||
range: string
|
||||
pattern: ^Q[0-9]+$
|
||||
|
|
@ -173,6 +168,6 @@ classes:
|
|||
collection_type_name: Special Collection
|
||||
collection_type_description: A named special collection within a library, often focusing on a particular subject,
|
||||
format, or provenance.
|
||||
bibframe_equivalent: bf:Collection
|
||||
# BIBFRAME mapping at class level via close_mappings: [bf:CollectionType]
|
||||
domain_context: LIBRARY
|
||||
description: Library special collection type
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
# Keeps curation-specific slots:
|
||||
# - curated_holding, objects_affected, objects_added, objects_removed
|
||||
# - responsible_actor, responsible_department, spectrum_procedure
|
||||
# - budget, funding_source, deliverable, documentation_produced
|
||||
# - is_or_was_allocated_budget (MIGRATED 2026-01-15: was budget), funding_source, deliverable, documentation_produced
|
||||
#
|
||||
# Rule compliance: 38, 39, 42, 43, 48
|
||||
|
||||
|
|
@ -38,7 +38,8 @@ imports:
|
|||
- ./ExhibitedObject
|
||||
- ./PersonObservation
|
||||
- ../enums/CurationActivityTypeEnum
|
||||
- ../slots/budget
|
||||
# REMOVED 2026-01-15: ../slots/budget - migrated to is_or_was_allocated_budget
|
||||
- ../slots/is_or_was_allocated_budget
|
||||
- ../slots/curated_holding
|
||||
- ../slots/deliverable
|
||||
- ../slots/documentation_produced
|
||||
|
|
@ -168,7 +169,8 @@ classes:
|
|||
|
||||
# Curation-specific slots (in addition to inherited Activity slots)
|
||||
slots:
|
||||
- budget
|
||||
# REMOVED 2026-01-15: budget - migrated to is_or_was_allocated_budget
|
||||
- is_or_was_allocated_budget
|
||||
- curated_holding
|
||||
- has_or_had_custodian_type
|
||||
- deliverable
|
||||
|
|
@ -323,9 +325,12 @@ classes:
|
|||
- value: Friends of the Museum donation
|
||||
description: Donor-funded
|
||||
|
||||
budget:
|
||||
is_or_was_allocated_budget:
|
||||
range: string
|
||||
description: Budget allocated for this activity.
|
||||
description: |
|
||||
Budget allocated for this activity.
|
||||
MIGRATED 2026-01-15: Replaces budget slot per Rule 53.
|
||||
For structured budget information, override range to Budget class.
|
||||
examples:
|
||||
- value: EUR 125,000
|
||||
description: Digitization project budget
|
||||
|
|
@ -439,7 +444,7 @@ classes:
|
|||
deliverable:
|
||||
- https://www.nationaalarchief.nl/onderzoeken/archief/1.04.02/digital
|
||||
funding_source: Metamorfoze National Digitization Programme
|
||||
budget: EUR 850,000
|
||||
is_or_was_allocated_budget: EUR 850,000 # MIGRATED 2026-01-15: was budget
|
||||
status: IN_PROGRESS
|
||||
priority: HIGH
|
||||
spectrum_procedure: documentation
|
||||
|
|
@ -466,7 +471,7 @@ classes:
|
|||
- Before/after condition photographs
|
||||
- Updated location records in CMS
|
||||
funding_source: Andrew W. Mellon Foundation Grant
|
||||
budget: EUR 95,000
|
||||
is_or_was_allocated_budget: EUR 95,000 # MIGRATED 2026-01-15: was budget
|
||||
status: PLANNED
|
||||
priority: HIGH
|
||||
spectrum_procedure: object-storage
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ imports:
|
|||
- ../slots/has_or_had_access_control
|
||||
- ../slots/has_administration_description
|
||||
- ../slots/has_administration_name
|
||||
- ../slots/backup_status
|
||||
# REMOVED 2026-01-15: ../slots/backup_status - migrated to has_or_had_status with BackupStatus
|
||||
- ../slots/has_or_had_status
|
||||
- ./BackupStatus
|
||||
- ../slots/business_criticality
|
||||
|
|
@ -107,7 +107,7 @@ classes:
|
|||
- is_or_was_active_since
|
||||
- has_administration_description
|
||||
- has_administration_name
|
||||
- backup_status
|
||||
# REMOVED 2026-01-15: backup_status - migrated to has_or_had_status with BackupStatus
|
||||
- has_or_had_status
|
||||
- business_criticality
|
||||
- creating_function
|
||||
|
|
@ -303,7 +303,11 @@ classes:
|
|||
data_sensitivity: CONFIDENTIAL
|
||||
gdpr_relevant: true
|
||||
business_criticality: HIGH
|
||||
backup_status: Daily backup to Azure, replicated to secondary site
|
||||
has_or_had_status:
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: DAILY_AUTOMATED
|
||||
- has_or_had_short_code: CLOUD_AZURE
|
||||
has_or_had_description: Daily backup to Azure, replicated to secondary site
|
||||
access_control: 'AD Group: RM-Directors-Staff'
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Active director's correspondence system
|
||||
|
|
@ -327,7 +331,11 @@ classes:
|
|||
data_sensitivity: SPECIAL_CATEGORY - Personnel data
|
||||
gdpr_relevant: true
|
||||
business_criticality: CRITICAL
|
||||
backup_status: Real-time replication, encrypted at rest
|
||||
has_or_had_status:
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: REALTIME_REPLICATION
|
||||
- has_or_had_short_code: ENCRYPTED_AT_REST
|
||||
has_or_had_description: Real-time replication, encrypted at rest
|
||||
access_control: HR Department only, individual file permissions
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Active HR personnel records system
|
||||
|
|
@ -353,6 +361,10 @@ classes:
|
|||
data_sensitivity: INTERNAL
|
||||
gdpr_relevant: false
|
||||
business_criticality: HIGH
|
||||
backup_status: Daily backup, 10-year retention, linked to object records
|
||||
has_or_had_status:
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: DAILY_AUTOMATED
|
||||
- has_or_had_short_code: LONG_RETENTION
|
||||
has_or_had_description: Daily backup, 10-year retention, linked to object records
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Active conservation treatment documentation
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ imports:
|
|||
- ../slots/has_accession_date
|
||||
- ../slots/has_accumulation_end_date
|
||||
- ../slots/has_accumulation_start_date
|
||||
- ../slots/appraisal_notes
|
||||
- ../slots/has_or_had_notes
|
||||
- ./Notes
|
||||
- ../slots/has_archive_description
|
||||
- ../slots/has_archive_name
|
||||
- ../slots/arrangement_notes
|
||||
|
|
@ -75,7 +76,7 @@ classes:
|
|||
- has_accession_number
|
||||
- has_accumulation_end_date
|
||||
- has_accumulation_start_date
|
||||
- appraisal_notes
|
||||
- has_or_had_notes
|
||||
- has_archive_description
|
||||
- has_archive_name
|
||||
- arrangement_notes
|
||||
|
|
@ -258,12 +259,17 @@ classes:
|
|||
examples:
|
||||
- value: Closed - Contains personnel files with personal data
|
||||
description: Privacy restriction
|
||||
has_appraisal_note:
|
||||
range: string
|
||||
has_or_had_notes:
|
||||
range: Notes
|
||||
multivalued: true
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value: Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05
|
||||
description: Appraisal decisions documented
|
||||
- value: |
|
||||
- note_type: appraisal
|
||||
note_content: "Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05"
|
||||
note_date: "2024-03-15"
|
||||
description: Appraisal decisions documented as typed note
|
||||
has_arrangement_note:
|
||||
range: string
|
||||
required: false
|
||||
|
|
@ -344,6 +350,9 @@ classes:
|
|||
estimated_extent: 85 linear meters
|
||||
assigned_processor: Dr. Jan de Vries
|
||||
processing_started_date: '2024-01-10'
|
||||
appraisal_notes: Retained all policy files; weeded duplicate copies per retention schedule.
|
||||
has_or_had_notes:
|
||||
- note_type: appraisal
|
||||
note_content: "Retained all policy files; weeded duplicate copies per retention schedule."
|
||||
note_date: "2024-01-10"
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-na
|
||||
description: Government records in active processing (9 years after accession)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ imports:
|
|||
- ../slots/created
|
||||
- ../slots/modified
|
||||
- ../slots/wikidata_entity
|
||||
- ../slots/applicable_countries
|
||||
# - ../slots/applicable_countries # MIGRATED 2026-01-15: replaced by has_applicable_country
|
||||
- ../slots/glamorcubesfixphdnt_code
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/template_specificity
|
||||
|
|
@ -66,7 +66,8 @@ classes:
|
|||
- org:classification
|
||||
- schema:additionalType
|
||||
slots:
|
||||
- applicable_countries
|
||||
# - applicable_countries # MIGRATED 2026-01-15: replaced by has_applicable_country
|
||||
- has_applicable_country
|
||||
- created
|
||||
- custodian_type_broader
|
||||
- custodian_type_narrower
|
||||
|
|
@ -112,6 +113,7 @@ classes:
|
|||
multivalued: true
|
||||
required: false
|
||||
has_applicable_country:
|
||||
description: "ISO 3166-1 alpha-2 country codes where this type applies. Empty = worldwide. (MIGRATED 2026-01-15: was applicable_countries)"
|
||||
range: string
|
||||
multivalued: true
|
||||
required: false
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@ imports:
|
|||
- ./DataServiceEndpointType
|
||||
- ../slots/protocol
|
||||
- ../slots/response_format
|
||||
- ../slots/authentication_required
|
||||
# REMOVED 2026-01-15: ../slots/authentication_required - migrated to is_or_was_required
|
||||
- ../slots/is_or_was_required
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/template_specificity
|
||||
- ./SpecificityAnnotation
|
||||
|
|
@ -28,7 +29,8 @@ classes:
|
|||
abstract: true
|
||||
class_uri: dcat:DataService
|
||||
slots:
|
||||
- authentication_required
|
||||
# REMOVED 2026-01-15: authentication_required - migrated to is_or_was_required
|
||||
- is_or_was_required
|
||||
- protocol
|
||||
- response_format
|
||||
- specificity_annotation
|
||||
|
|
@ -136,7 +138,7 @@ classes:
|
|||
range: uri
|
||||
authentication_method:
|
||||
slot_uri: schema:potentialAction
|
||||
description: 'Authentication method required (if authentication_required is true).
|
||||
description: 'Authentication method required (if is_or_was_required is true).
|
||||
|
||||
|
||||
Values from AuthenticationMethodEnum:
|
||||
|
|
@ -289,7 +291,7 @@ classes:
|
|||
\nThis slot links an INSTANCE (DataServiceEndpoint) to its TYPE classification\n(DataServiceEndpointType), following\
|
||||
\ the same architectural pattern as\nCustodian/CustodianType.\n\n```\nDataServiceEndpoint (INSTANCE) DataServiceEndpointType\
|
||||
\ (TYPE)\n├── endpoint_url ├── protocol_name\n├── status ├── protocol_version\n\
|
||||
├── authentication_required ├── specification_url\n└── endpoint_type ────────────────►└── typical_response_formats\n\
|
||||
├── is_or_was_required ├── specification_url\n└── endpoint_type ────────────────►└── typical_response_formats\n\
|
||||
```\n\n**Why Both `protocol` and `endpoint_type`?**\n\n- `protocol` (enum): Simple string classification for quick\
|
||||
\ filtering\n- `endpoint_type` (class reference): Rich type metadata with SKOS hierarchy,\n specification URLs,\
|
||||
\ and semantic relationships\n\n**Example:**\n\n```yaml\ndata_service_endpoint:\n endpoint_id: \"https://nde.nl/hc/endpoint/na-oai-pmh\"\
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ imports:
|
|||
- ../enums/EducationProviderTypeEnum
|
||||
- ../slots/has_or_had_accessibility_feature
|
||||
- ../slots/annual_participants
|
||||
- ../slots/booking_required
|
||||
# REMOVED 2026-01-15: ../slots/booking_required - migrated to is_or_was_required
|
||||
- ../slots/is_or_was_required
|
||||
- ../slots/classroom_count
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/education_center_description
|
||||
|
|
@ -79,7 +80,8 @@ classes:
|
|||
slots:
|
||||
- has_or_had_accessibility_feature
|
||||
- annual_participants
|
||||
- booking_required
|
||||
# REMOVED 2026-01-15: booking_required - migrated to is_or_was_required
|
||||
- is_or_was_required
|
||||
- classroom_count
|
||||
- has_or_had_custodian_type
|
||||
- education_center_description
|
||||
|
|
@ -197,11 +199,14 @@ classes:
|
|||
examples:
|
||||
- value: 8
|
||||
description: Education team size
|
||||
booking_required:
|
||||
is_or_was_required:
|
||||
range: boolean
|
||||
description: |
|
||||
Whether advance booking is required for education programs.
|
||||
MIGRATED 2026-01-15: Replaces booking_required slot.
|
||||
examples:
|
||||
- value: true
|
||||
description: Booking required
|
||||
description: Booking required for programs
|
||||
education_contact_email:
|
||||
range: string
|
||||
examples:
|
||||
|
|
@ -252,7 +257,7 @@ classes:
|
|||
- Hearing loop
|
||||
annual_participants: 75000
|
||||
staff_count: 12
|
||||
booking_required: true
|
||||
is_or_was_required: true
|
||||
education_contact_email: educatie@rijksmuseum.nl
|
||||
description: Major museum education center
|
||||
- value:
|
||||
|
|
@ -272,5 +277,5 @@ classes:
|
|||
classroom_count: 2
|
||||
max_group_size: 20
|
||||
has_av_equipment: true
|
||||
booking_required: true
|
||||
is_or_was_required: true
|
||||
description: Archive learning center
|
||||
|
|
|
|||
|
|
@ -21,7 +21,9 @@ imports:
|
|||
- ../slots/language
|
||||
- ../slots/price
|
||||
- ../slots/authors
|
||||
- ../slots/binding
|
||||
# REMOVED: ../slots/binding - Use has_or_had_type with BindingType instead (2026-01-15)
|
||||
- ../slots/has_or_had_type
|
||||
- ./BindingType
|
||||
- ../slots/catalog_description
|
||||
- ../slots/catalog_entries_count
|
||||
- ../slots/catalog_for
|
||||
|
|
@ -79,7 +81,8 @@ classes:
|
|||
- bibo:Book
|
||||
slots:
|
||||
- authors
|
||||
- binding
|
||||
# REMOVED: binding - Use has_or_had_type with BindingType instead (2026-01-15)
|
||||
- has_or_had_type
|
||||
- catalog_description
|
||||
- catalog_entries_count
|
||||
- catalog_for
|
||||
|
|
@ -217,12 +220,24 @@ classes:
|
|||
examples:
|
||||
- value: 280 color illustrations
|
||||
- value: 150 color plates, 50 b/w figures
|
||||
binding:
|
||||
# DEPRECATED: binding slot - Use has_or_had_type with BindingType instead (2026-01-15)
|
||||
# binding:
|
||||
# required: false
|
||||
# range: string
|
||||
# deprecated: "Use has_or_had_type with BindingType instead"
|
||||
has_or_had_type:
|
||||
required: false
|
||||
range: string
|
||||
range: BindingType
|
||||
description: >-
|
||||
The binding type of the catalog (hardcover, paperback, etc.).
|
||||
MIGRATED from binding slot (2026-01-15) per Rule 53.
|
||||
|
||||
Uses BindingType class hierarchy for structured binding classification.
|
||||
examples:
|
||||
- value: hardcover
|
||||
- value: paperback
|
||||
- value: hc:HardcoverBinding
|
||||
description: Hardcover binding type
|
||||
- value: hc:PaperbackBinding
|
||||
description: Paperback binding type
|
||||
language:
|
||||
required: false
|
||||
range: string
|
||||
|
|
@ -336,7 +351,7 @@ classes:
|
|||
isbn_13: '9789491714962'
|
||||
pages: 320
|
||||
illustrations: 280 color illustrations
|
||||
binding: hardcover
|
||||
has_or_had_type: hc:HardcoverBinding # Migrated from binding: hardcover
|
||||
language:
|
||||
- en
|
||||
catalog_url: https://www.rijksmuseum.nl/nl/webshop/catalogus-vermeer
|
||||
|
|
@ -365,7 +380,7 @@ classes:
|
|||
isbn_13: '9780870709159'
|
||||
pages: 298
|
||||
illustrations: 230 illustrations
|
||||
binding: hardcover
|
||||
has_or_had_type: hc:HardcoverBinding # Migrated from binding: hardcover
|
||||
language:
|
||||
- en
|
||||
price: $60.00
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ imports:
|
|||
- ../slots/has_altitude
|
||||
- ../slots/has_accuracy_in_meters
|
||||
- ../slots/bounding_box
|
||||
- ../slots/cadastral_id
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/coordinate_reference_system
|
||||
- ../slots/feature_class
|
||||
- ../slots/feature_code
|
||||
|
|
@ -159,7 +159,7 @@ classes:
|
|||
- has_accuracy_in_meters
|
||||
- has_altitude
|
||||
- bounding_box
|
||||
- cadastral_id
|
||||
- has_or_had_identifier
|
||||
- coordinate_reference_system
|
||||
- feature_class
|
||||
- feature_code
|
||||
|
|
@ -203,6 +203,17 @@ classes:
|
|||
examples:
|
||||
- value: 6930126
|
||||
description: Rijksmuseum GeoNames ID
|
||||
has_or_had_identifier:
|
||||
description: >-
|
||||
Cadastral identifiers for this geospatial place.
|
||||
MIGRATION NOTE (2026-01-14): Replaces cadastral_id per slot_fixes.yaml.
|
||||
Use Identifier with identifier_scheme='cadastral' for parcel IDs.
|
||||
Netherlands: Kadaster perceelnummer format {gemeente}-{sectie}-{perceelnummer}
|
||||
examples:
|
||||
- value:
|
||||
identifier_scheme: cadastral
|
||||
identifier_value: ASD04-H-4567
|
||||
description: Amsterdam cadastral parcel identifier
|
||||
comments:
|
||||
- Follows TOOI BestuurlijkeRuimte pattern using GeoSPARQL
|
||||
- 'CRITICAL: NOT a nominal reference - this is measured/surveyed location data'
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ imports:
|
|||
- ../slots/has_annotation_by
|
||||
- ../slots/has_archival_reference
|
||||
- ../slots/has_arrangement_level
|
||||
- ../slots/binding_description
|
||||
- ../slots/binding_provenance
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_provenance
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/bookplate
|
||||
- ./BindingType
|
||||
|
|
@ -109,8 +109,8 @@ classes:
|
|||
- has_annotation_by
|
||||
- archival_reference
|
||||
- arrangement_level
|
||||
- binding_description
|
||||
- binding_provenance
|
||||
- has_or_had_description
|
||||
- has_or_had_provenance
|
||||
- has_or_had_type
|
||||
- bookplate
|
||||
- call_number
|
||||
|
|
@ -220,9 +220,27 @@ classes:
|
|||
binding_description:
|
||||
required: false
|
||||
range: string
|
||||
description: >-
|
||||
DEPRECATED: Use has_or_had_description instead for binding descriptions.
|
||||
MIGRATION: 2026-01-15 - Replaced by has_or_had_description slot per Rule 53.
|
||||
deprecated: "Use has_or_had_description instead"
|
||||
examples:
|
||||
- value: "Contemporary blind-stamped pigskin over wooden boards, \nwith brass clasps and corner pieces. Spine with\
|
||||
\ five raised bands.\n"
|
||||
has_or_had_description:
|
||||
required: false
|
||||
range: string
|
||||
description: >-
|
||||
Detailed description of the physical binding of this information carrier.
|
||||
MIGRATED from binding_description (2026-01-15) per Rule 53.
|
||||
|
||||
Describes binding style, materials, decorative elements, and condition.
|
||||
For carriers like codices, bound manuscripts, and books.
|
||||
examples:
|
||||
- value: "Contemporary blind-stamped pigskin over wooden boards, with brass clasps and corner pieces. Spine with five raised bands."
|
||||
description: Medieval manuscript binding
|
||||
- value: "Rebound in the 18th century in red morocco with gold tooling."
|
||||
description: Later rebinding of early printed book
|
||||
cover_material:
|
||||
required: false
|
||||
range: string
|
||||
|
|
@ -338,11 +356,18 @@ classes:
|
|||
multivalued: true
|
||||
examples:
|
||||
- value: British Museum stamp on verso of title page
|
||||
binding_provenance:
|
||||
has_or_had_provenance:
|
||||
required: false
|
||||
range: string
|
||||
description: >-
|
||||
Provenance information related to the physical binding of this information carrier.
|
||||
MIGRATED from binding_provenance (2026-01-15) per Rule 53.
|
||||
|
||||
Describes the historical ownership or commissioning context of the binding,
|
||||
such as royal presentation bindings or notable previous owners' bindings.
|
||||
examples:
|
||||
- value: Bound for presentation to Elizabeth I, royal arms in gold
|
||||
description: Royal presentation binding provenance
|
||||
isbn:
|
||||
required: false
|
||||
range: string
|
||||
|
|
@ -463,7 +488,7 @@ classes:
|
|||
- Paper (handmade, watermarked)
|
||||
folio_count: 641
|
||||
binding_type: 18th-century full leather
|
||||
binding_description: 'Rebound in the 18th century in red morocco with gold tooling.
|
||||
has_or_had_description: 'Rebound in the 18th century in red morocco with gold tooling.
|
||||
|
||||
Five raised bands on spine with gilt lettering.
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ imports:
|
|||
- ./HeritageRelevance
|
||||
- ./LanguageProficiency
|
||||
- ../slots/has_or_had_about_text
|
||||
- ../slots/is_or_was_real
|
||||
- ./RealnessStatus
|
||||
- ../slots/has_or_had_provenance
|
||||
- ./ProvenanceBlock
|
||||
- ../slots/has_assessment_date
|
||||
- ../slots/connections_text
|
||||
- ../slots/data_source_whatsapp
|
||||
|
|
@ -332,7 +332,7 @@ classes:
|
|||
|
||||
'
|
||||
slots:
|
||||
- is_or_was_real
|
||||
- has_or_had_provenance
|
||||
- data_source_whatsapp
|
||||
- enriched_date
|
||||
- enrichment_method_whatsapp
|
||||
|
|
@ -352,14 +352,16 @@ classes:
|
|||
- value: public_linkedin_profile
|
||||
no_fabrication:
|
||||
range: boolean
|
||||
is_or_was_real:
|
||||
range: RealnessStatus
|
||||
has_or_had_provenance:
|
||||
range: ProvenanceBlock
|
||||
inlined: true
|
||||
description: >-
|
||||
Realness status of the enrichment data.
|
||||
Indicates whether the enrichment data is real production data or test/synthetic.
|
||||
Provenance information for the enrichment data.
|
||||
Contains data source, extraction method, confidence score, and verification status.
|
||||
examples:
|
||||
- value:
|
||||
status: REAL
|
||||
description: "Verified production data from LinkedIn profile"
|
||||
description: Real production enrichment data
|
||||
data_source: "public_linkedin_profile"
|
||||
extraction_date: "2025-01-14T12:00:00Z"
|
||||
confidence_score: 0.95
|
||||
note: "Verified production data from LinkedIn profile"
|
||||
description: Real production enrichment data with provenance
|
||||
|
|
|
|||
122
schemas/20251121/linkml/modules/classes/Notes.yaml
Normal file
122
schemas/20251121/linkml/modules/classes/Notes.yaml
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# Notes class
|
||||
# Generic class for typed notes with provenance
|
||||
#
|
||||
# Generation date: 2026-01-14
|
||||
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization)
|
||||
# Migration: Supports has_or_had_notes slot (replaces appraisal_notes)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Notes
|
||||
name: notes_class
|
||||
title: Notes Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/note_type
|
||||
- ../slots/note_content
|
||||
- ../slots/note_date
|
||||
- ../slots/language
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/template_specificity
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScores
|
||||
|
||||
classes:
|
||||
Notes:
|
||||
class_uri: skos:note
|
||||
description: |
|
||||
A typed note with optional provenance metadata.
|
||||
|
||||
**Purpose**:
|
||||
Notes provides a reusable class for representing documentation notes
|
||||
across the heritage custodian schema. Supports typed notes (appraisal,
|
||||
arrangement, conservation, etc.) with language tagging and dates.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `skos:note` - general note
|
||||
- **Close**: `rdfs:comment` - comment on resource
|
||||
|
||||
**Use Cases**:
|
||||
- Appraisal notes documenting retention decisions
|
||||
- Arrangement notes documenting physical organization
|
||||
- Conservation notes documenting treatments
|
||||
- Processing notes documenting archival workflow
|
||||
- General documentation notes
|
||||
|
||||
**Replaces**:
|
||||
- `appraisal_notes` (string) - now typed with note_type
|
||||
|
||||
exact_mappings:
|
||||
- skos:note
|
||||
|
||||
close_mappings:
|
||||
- rdfs:comment
|
||||
- dcterms:description
|
||||
|
||||
slots:
|
||||
- note_type
|
||||
- note_content
|
||||
- note_date
|
||||
- language
|
||||
- specificity_annotation
|
||||
- template_specificity
|
||||
|
||||
slot_usage:
|
||||
note_type:
|
||||
description: |
|
||||
The type of note (appraisal, arrangement, conservation, processing, general).
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: appraisal
|
||||
description: Appraisal decision documentation
|
||||
- value: arrangement
|
||||
description: Physical organization notes
|
||||
- value: conservation
|
||||
description: Treatment documentation
|
||||
note_content:
|
||||
description: The textual content of the note.
|
||||
range: string
|
||||
required: true
|
||||
note_date:
|
||||
description: Date the note was created or last updated.
|
||||
range: date
|
||||
required: false
|
||||
language:
|
||||
description: |
|
||||
ISO 639-1 two-letter language code for this note.
|
||||
Examples: "en", "nl", "de", "fr"
|
||||
range: string
|
||||
required: false
|
||||
pattern: "^[a-z]{2}$"
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Generic notes class applicable to all types.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.3
|
||||
specificity_rationale: Broadly applicable generic class for documentation notes.
|
||||
|
||||
examples:
|
||||
- value: |
|
||||
note_type: appraisal
|
||||
note_content: "Retained all policy files; destroyed duplicate copies and routine correspondence per retention schedule RS-2020-05"
|
||||
note_date: "2024-03-15"
|
||||
language: en
|
||||
description: "Appraisal note documenting retention decisions"
|
||||
- value: |
|
||||
note_type: arrangement
|
||||
note_content: "Maintained original order by correspondent. Created 5 series by function. Rehoused into acid-free folders and boxes."
|
||||
note_date: "2024-06-01"
|
||||
language: en
|
||||
description: "Arrangement note documenting physical organization"
|
||||
|
|
@ -12,10 +12,10 @@ imports:
|
|||
- ./ReconstructedEntity
|
||||
- ./BranchType
|
||||
- ../slots/located_at
|
||||
- ../slots/branch_description
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/branch_head
|
||||
- ../slots/branch_id
|
||||
- ../slots/branch_name
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/contact_point
|
||||
- ../slots/has_operational_unit
|
||||
|
|
@ -68,8 +68,8 @@ classes:
|
|||
\ Satellite Galleries**:\n - Main museum → Contemporary Art Wing (off-site)\n - Separate building, curated exhibitions\n\
|
||||
\ \n4. **Conservation/Research Centers**:\n - Main institution → Conservation Lab (different building)\n - Specialized\
|
||||
\ facility with own staff\n\n**Example - National Archives Branch**:\n```yaml\nAuxiliaryPlace:\n place_name: \"Regionaal\
|
||||
\ Historisch Centrum Noord-Holland\"\n auxiliary_place_type: BRANCH_OFFICE\n hosts_branch:\n - branch_id: \"https://nde.nl/ontology/hc/branch/na-rhc-noord-holland\"\
|
||||
\n branch_name: \"RHC Noord-Holland\"\n branch_type: REGIONAL_OFFICE\n has_operational_unit:\n \
|
||||
\ Historisch Centrum Noord-Holland\"\n auxiliary_place_type: BRANCH_OFFICE\n hosts_branch:\n - has_or_had_identifier: \"https://nde.nl/ontology/hc/branch/na-rhc-noord-holland\"\
|
||||
\n has_or_had_label: \"RHC Noord-Holland\"\n branch_type: REGIONAL_OFFICE\n has_operational_unit:\n \
|
||||
\ - unit_name: \"Reading Room Services\"\n - unit_name: \"Digitization Team\"\n is_branch_of: \"https://nde.nl/ontology/hc/nl-na\"\
|
||||
\n```\n\n**DISTINCTION FROM schema:branchOf**:\n\nSchema.org `branchOf` links commercial branches (e.g., bank branches).\n\
|
||||
`org:unitOf` is more appropriate for heritage institutions as it:\n- Models public sector organizational hierarchies\n\
|
||||
|
|
@ -84,10 +84,10 @@ classes:
|
|||
- schema:branchOf
|
||||
- schema:department
|
||||
slots:
|
||||
- branch_description
|
||||
- has_or_had_description
|
||||
- branch_head
|
||||
- branch_id
|
||||
- branch_name
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- has_or_had_type
|
||||
- contact_point
|
||||
- has_operational_unit
|
||||
|
|
@ -104,16 +104,24 @@ classes:
|
|||
- was_derived_from
|
||||
- was_generated_by
|
||||
slot_usage:
|
||||
branch_id:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
description: >-
|
||||
Unique identifier for this organizational branch.
|
||||
MIGRATED from branch_id (2026-01-14) per Rule 53.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/branch/rm-schiphol-exhibition
|
||||
description: Rijksmuseum Schiphol exhibition branch
|
||||
branch_name:
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: false
|
||||
description: >-
|
||||
Official name of this organizational branch.
|
||||
MIGRATED from branch_name (2026-01-15) per Rule 53.
|
||||
This is the formal name of the branch as used in official documents.
|
||||
examples:
|
||||
- value: Rijksmuseum Schiphol
|
||||
description: Airport branch name
|
||||
|
|
@ -148,9 +156,26 @@ classes:
|
|||
description: Conservation facility type
|
||||
branch_description:
|
||||
range: string
|
||||
description: >-
|
||||
DEPRECATED: Use has_or_had_description instead.
|
||||
MIGRATION: 2026-01-15 - Replaced by has_or_had_description slot per Rule 53.
|
||||
deprecated: "Use has_or_had_description instead"
|
||||
examples:
|
||||
- value: Small exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum collection.
|
||||
description: Branch purpose description
|
||||
has_or_had_description:
|
||||
range: string
|
||||
description: >-
|
||||
Narrative description of the branch's purpose, role, and activities.
|
||||
MIGRATED from branch_description (2026-01-15) per Rule 53.
|
||||
|
||||
Describes what this branch does, its scope of operations,
|
||||
and its relationship to the parent organization.
|
||||
examples:
|
||||
- value: Small exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum collection.
|
||||
description: Exhibition branch description
|
||||
- value: Off-site collection storage facility managing overflow objects and art storage.
|
||||
description: Storage operations branch
|
||||
located_at:
|
||||
range: AuxiliaryPlace
|
||||
multivalued: true
|
||||
|
|
@ -179,7 +204,7 @@ classes:
|
|||
inlined_as_list: true
|
||||
examples:
|
||||
- value:
|
||||
branch_name: Schiphol Terminal 2 Kiosk
|
||||
has_or_had_label: Schiphol Terminal 2 Kiosk
|
||||
description: Sub-branch of Schiphol exhibition
|
||||
branch_head:
|
||||
range: string
|
||||
|
|
@ -241,10 +266,10 @@ classes:
|
|||
- https://www.w3.org/TR/vcard-rdf/
|
||||
examples:
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/rm-schiphol
|
||||
branch_name: Rijksmuseum Schiphol
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/rm-schiphol
|
||||
has_or_had_label: Rijksmuseum Schiphol
|
||||
branch_type: EXHIBITION_SPACE
|
||||
branch_description: Small exhibition space at Schiphol Airport featuring rotating highlights from the collection.
|
||||
has_or_had_description: Small exhibition space at Schiphol Airport featuring rotating highlights from the collection.
|
||||
located_at:
|
||||
- https://nde.nl/ontology/hc/aux-place/rijksmuseum-schiphol
|
||||
has_operational_unit:
|
||||
|
|
@ -258,10 +283,10 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Rijksmuseum Schiphol exhibition branch
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/rm-depot-operations
|
||||
branch_name: Collection Storage Operations - Amersfoort
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/rm-depot-operations
|
||||
has_or_had_label: Collection Storage Operations - Amersfoort
|
||||
branch_type: STORAGE_MANAGEMENT
|
||||
branch_description: Off-site collection storage facility managing overflow objects and art storage.
|
||||
has_or_had_description: Off-site collection storage facility managing overflow objects and art storage.
|
||||
located_at:
|
||||
- https://nde.nl/ontology/hc/aux-place/rijksmuseum-depot-amersfoort
|
||||
has_operational_unit:
|
||||
|
|
@ -275,10 +300,10 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Rijksmuseum off-site storage operations branch
|
||||
- value:
|
||||
branch_id: https://nde.nl/ontology/hc/branch/na-rhc-nh
|
||||
branch_name: Regionaal Historisch Centrum Noord-Holland
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/branch/na-rhc-nh
|
||||
has_or_had_label: Regionaal Historisch Centrum Noord-Holland
|
||||
branch_type: REGIONAL_OFFICE
|
||||
branch_description: Regional archives center serving Noord-Holland province, providing reading room services and archival
|
||||
has_or_had_description: Regional archives center serving Noord-Holland province, providing reading room services and archival
|
||||
research support.
|
||||
is_branch_of: https://nde.nl/ontology/hc/nl-na
|
||||
staff_count: 25
|
||||
|
|
|
|||
207
schemas/20251121/linkml/modules/classes/RequirementStatus.yaml
Normal file
207
schemas/20251121/linkml/modules/classes/RequirementStatus.yaml
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
# RequirementStatus - Status class for structured requirement information
|
||||
#
|
||||
# Following the BackupStatus pattern:
|
||||
# This is a STATUS class that represents the current state of a requirement,
|
||||
# with structured type classification via RequirementType.
|
||||
#
|
||||
# Generation date: 2026-01-15 (created for booking_required migration)
|
||||
# Rule compliance: 37 (specificity scores), 38 (slot centralization), 39 (RiC-O naming)
|
||||
#
|
||||
# ONTOLOGY ALIGNMENT: PROV-O prov:Entity for status with provenance
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/RequirementStatus
|
||||
name: requirement_status_class
|
||||
title: Requirement Status Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
# Shared slots (centralized)
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_note
|
||||
- ../slots/is_or_was_required
|
||||
- ../slots/begin_of_the_begin
|
||||
- ../slots/end_of_the_end
|
||||
# Import the RequirementType for type references
|
||||
- ./RequirementType
|
||||
|
||||
classes:
|
||||
RequirementStatus:
|
||||
class_uri: prov:Entity
|
||||
description: |
|
||||
Represents the status of a requirement (e.g., booking, registration, appointment).
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
RequirementStatus captures structured requirement information including:
|
||||
- Whether the requirement is active (is_or_was_required boolean)
|
||||
- The type(s) of requirement (via has_or_had_type → RequirementType)
|
||||
- Status description (free text details)
|
||||
- Temporal validity (when this requirement was in effect)
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Class/Property | Notes |
|
||||
|----------|----------------|-------|
|
||||
| **PROV-O** | `prov:Entity` | Primary - entity with provenance |
|
||||
| **Schema.org** | `schema:isRequired` | Boolean requirement |
|
||||
| **SKOS** | `skos:Concept` | For type classification |
|
||||
|
||||
**RELATIONSHIP TO OTHER CLASSES**:
|
||||
|
||||
```
|
||||
EducationCenter / ReadingRoom / etc.
|
||||
│
|
||||
└── has_or_had_status → RequirementStatus (THIS CLASS)
|
||||
│
|
||||
├── is_or_was_required (boolean - is booking required?)
|
||||
├── has_or_had_type → RequirementType (what kind of requirement)
|
||||
├── has_or_had_description (free text details)
|
||||
└── begin_of_the_begin / end_of_the_end (validity period)
|
||||
```
|
||||
|
||||
**SLOT MIGRATION** (2026-01-15):
|
||||
|
||||
This class replaces domain-specific boolean slots:
|
||||
- booking_required (boolean) → has_or_had_status: RequirementStatus
|
||||
- appointment_required (boolean) → has_or_had_status: RequirementStatus
|
||||
- registration_required (boolean) → has_or_had_status: RequirementStatus
|
||||
|
||||
**SIMPLE VS STRUCTURED USAGE**:
|
||||
|
||||
For simple boolean requirement (just true/false):
|
||||
```yaml
|
||||
is_or_was_required: true
|
||||
```
|
||||
|
||||
For structured requirement with details:
|
||||
```yaml
|
||||
has_or_had_status:
|
||||
is_or_was_required: true
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: ADVANCE_BOOKING
|
||||
has_or_had_description: "Advance booking required for groups of 10+"
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- prov:Entity
|
||||
|
||||
close_mappings:
|
||||
- schema:Action
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- is_or_was_required
|
||||
- has_or_had_type
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_note
|
||||
- begin_of_the_begin
|
||||
- end_of_the_end
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
identifier: true
|
||||
pattern: "^https://nde\\.nl/ontology/hc/requirement-status/[a-z0-9-]+$"
|
||||
|
||||
is_or_was_required:
|
||||
range: boolean
|
||||
required: true
|
||||
description: "Whether this requirement is active/mandatory."
|
||||
examples:
|
||||
- value: true
|
||||
description: Booking is required
|
||||
- value: false
|
||||
description: Booking is optional (walk-ins welcome)
|
||||
|
||||
has_or_had_type:
|
||||
range: RequirementType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: "The type(s) of requirement (advance booking, group booking, etc.)."
|
||||
examples:
|
||||
- value:
|
||||
- has_or_had_short_code: ADVANCE_BOOKING
|
||||
description: Advance booking required
|
||||
|
||||
has_or_had_description:
|
||||
range: string
|
||||
description: "Free text description of the requirement details."
|
||||
examples:
|
||||
- value: "Advance booking required for groups of 10 or more. Individual visitors welcome without booking."
|
||||
|
||||
has_or_had_note:
|
||||
range: string
|
||||
multivalued: true
|
||||
description: "Additional notes about the requirement."
|
||||
examples:
|
||||
- value: "Online booking available at www.museum.nl/book"
|
||||
- value: "Phone bookings: +31 20 123 4567"
|
||||
|
||||
begin_of_the_begin:
|
||||
range: datetime
|
||||
description: "When this requirement came into effect."
|
||||
|
||||
end_of_the_end:
|
||||
range: datetime
|
||||
description: "When this requirement ended (if no longer in effect)."
|
||||
|
||||
annotations:
|
||||
specificity_score: "0.55"
|
||||
specificity_rationale: "Requirement status applicable to many heritage contexts (education, reading rooms, visits)."
|
||||
template_specificity: '{"collection_discovery": 0.60, "location_browse": 0.75, "general_heritage": 0.50}'
|
||||
slot_migration: |
|
||||
2026-01-15: Created to replace domain-specific requirement boolean slots
|
||||
- booking_required (boolean) → has_or_had_status (RequirementStatus)
|
||||
- appointment_required (boolean) → has_or_had_status (RequirementStatus)
|
||||
|
||||
comments:
|
||||
- "RequirementStatus represents structured requirement information"
|
||||
- "Linked to RequirementType for type classification"
|
||||
- "Supports temporal validity tracking"
|
||||
- "CREATED 2026-01-15: Enables migration from domain-specific boolean slots"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/requirement-status/rijksmuseum-edu-booking
|
||||
is_or_was_required: true
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: ADVANCE_BOOKING
|
||||
has_or_had_label:
|
||||
- Booking required for education programs@en
|
||||
- Reservering verplicht voor educatieprogramma's@nl
|
||||
has_or_had_description: |
|
||||
Advance booking required for all school groups and educational programs.
|
||||
Minimum 2 weeks advance booking for groups of 20+.
|
||||
has_or_had_note:
|
||||
- "Online booking: educatie@rijksmuseum.nl"
|
||||
begin_of_the_begin: "2020-01-01T00:00:00Z"
|
||||
description: Example booking requirement for museum education center
|
||||
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/requirement-status/archive-reading-room
|
||||
is_or_was_required: true
|
||||
has_or_had_type:
|
||||
- has_or_had_short_code: APPOINTMENT_REQUIRED
|
||||
has_or_had_description: |
|
||||
Appointment required for reading room access.
|
||||
Walk-in visits not possible due to limited seating.
|
||||
description: Appointment requirement for archive reading room
|
||||
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/requirement-status/library-open-access
|
||||
is_or_was_required: false
|
||||
has_or_had_description: "No booking required. Open access during public hours."
|
||||
description: No requirement (open access)
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue