Enhance schema definitions for archival rules and classes, including Canonical Slot Protection, Archive Folder Convention, and various content types.

This commit is contained in:
kempersc 2026-02-15 14:45:47 +01:00
parent 2e1e6e5fbc
commit a7fb73b9ba
15 changed files with 802 additions and 4 deletions

View file

@ -6,7 +6,7 @@ When resolving slot aliases to canonical names, a slot name that has its own `.y
## Context
Slot files in `schemas/20251121/linkml/modules/slots/20260202_matang/` (top-level and `new/`) each define a canonical slot name. Some slot files also list aliases that overlap with canonical names from other slot files. These cross-references are intentional (e.g., indicating semantic relatedness) but do NOT mean the referenced slot should be renamed.
Slot files in `schemas/20251121/linkml/modules/slots/` (top-level and `new/`) each define a canonical slot name. Some slot files also list aliases that overlap with canonical names from other slot files. These cross-references are accidental (e.g., indicating semantic relatedness) and should be corrected by removing the canonical names from the aliases lists in which they occur. The occurance of canonical names in alianses lists does NOT mean the referenced slot should be renamed.
## Rule
@ -58,4 +58,4 @@ def should_rename(slot_name, alias_map, existing_slot_files):
## Rationale
Multiple slot files may list overlapping aliases for documentation or semantic linking purposes. A canonical slot name appearing as an alias in another file does not invalidate the original slot definition. Treating it as an alias would incorrectly redirect class files away from the slot's own definition, breaking the schema's intended structure.
Multiple slot files may list overlapping aliases by accident or for documentation or semantic linking purposes. A canonical slot name appearing as an alias in another file does not invalidate the original slot definition. Treating it as an alias would incorrectly redirect class files away from the slot's own definition, breaking the schema's intended structure.

View 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

View file

@ -0,0 +1,74 @@
# Archive Organization Type Description Rule
## Rule
When describing archive classes that do NOT have `recordType` or `hold_record_set` as a primary distinguishing feature, emphasize that they represent the **archive as an organization/institution**, not just a collection of records.
## Rationale
Many archive type classes (e.g., `BankArchive`, `ChurchArchive`, `MunicipalArchive`) classify the **type of organization** that maintains the records, rather than the type of records themselves. This is an important semantic distinction:
- **Archive Organization Types** (no recordType focus): Classify the institution by its domain/sector
- Examples: `BankArchive`, `ChurchArchive`, `MunicipalArchive`, `UniversityArchive`
- Emphasis: The organization's mission, governance, and institutional context
- **Record Set Types** (have recordType): Classify the collections by record type
- Examples: `AudiovisualArchiveRecordSetType`, `PhotographicArchiveRecordSetType`
- Emphasis: The nature and format of the records
## Description Pattern
### For Archive Organization Types (WITHOUT recordType):
```yaml
description: >-
Type of heritage institution that [primary function], specializing in
[domain/subject area], with organizational characteristics including
[governance, funding, legal status, or other institutional features].
```
**Key elements to include:**
1. "Type of heritage institution" or "Type of archive organization"
2. The institution's primary domain or sector
3. Organizational characteristics (governance, funding, legal status)
4. Institutional context (parent organization, regulatory framework)
5. Typical services and public-facing functions
### For Record Set Types (WITH recordType):
```yaml
description: >-
Classification of archival records documenting [subject/domain],
typically including [record formats, content types, provenance patterns].
```
## Examples
### ✅ Correct - Archive Organization Type (BankArchive):
```yaml
description: >-
Type of heritage institution operating within the banking sector, preserving
records of financial institutions and documenting banking history. Characterized
by corporate governance structures, extended closure periods for personal data,
and institutional relationships with parent banking organizations.
```
### ✅ Correct - Record Set Type (has recordType):
```yaml
description: >-
Classification of archival records documenting banking activities, including
ledgers, correspondence, customer accounts, and financial instruments.
```
## Files Affected
All classes in the `*Archive` family that:
- Do NOT have `hold_record_set` or `recordType` as a primary slot
- Are subclassed from `ArchiveOrganizationType` (not `ArchiveRecordSetType`)
## Related Rules
- `mapping-specificity-hypernym-rule.md` - For correct ontology mappings
- `class-description-quality-rule.md` - For general description quality

View file

@ -0,0 +1,179 @@
# Rule 54: Broaden Generic Predicate Ranges Instead of Creating Bespoke Predicates
🚨 **CRITICAL**: When fixing gen-owl "Ambiguous type" warnings, **broaden the range of generic predicates** rather than creating specialized bespoke predicates.
## The Problem
gen-owl "Ambiguous type" warnings occur when a slot is used as both:
- **DatatypeProperty** (base range: `string`, `integer`, `uri`, etc.)
- **ObjectProperty** (slot_usage override range: a class like `Description`, `SubtitleFormatEnum`)
This creates OWL ambiguity because OWL requires properties to be either DatatypeProperty OR ObjectProperty, not both.
## ❌ WRONG Approach: Create Bespoke Predicates
```yaml
# DON'T DO THIS - creates proliferation of rare-use predicates
slots:
has_or_had_subtitle_format: # Only used by VideoSubtitle
range: SubtitleFormatEnum
has_or_had_transcript_format: # Only used by VideoTranscript
range: TranscriptFormat
```
**Why This Is Wrong**:
- Creates **predicate proliferation** (schema bloat)
- Bespoke predicates are **rarely reused** across classes
- **Increases cognitive load** for schema users
- **Fragments the ontology** unnecessarily
- Violates the principle of schema parsimony
## ✅ CORRECT Approach: Broaden Generic Predicate Ranges
```yaml
# DO THIS - make the generic predicate flexible enough
slots:
has_or_had_format:
range: uriorcurie # Broadened from string
description: |
The format of a resource. Classes narrow this to specific
enum types (SubtitleFormatEnum, TranscriptFormatEnum) via slot_usage.
```
Then in class files, use `slot_usage` to narrow the range:
```yaml
classes:
VideoSubtitle:
slots:
- has_or_had_format
slot_usage:
has_or_had_format:
range: SubtitleFormatEnum # Narrowed for this class
required: true
```
## Range Broadening Options
| Original Range | Broadened Range | When to Use |
|----------------|-----------------|-------------|
| `string` | `uriorcurie` | When class overrides use URI-identified types or enums |
| `string` | `Any` | When truly polymorphic (strings AND class instances) |
| Specific class | Common base class | When multiple subclasses are used |
## Decision Tree
```
gen-owl warning: "Ambiguous type for: SLOTNAME"
Is base slot range a primitive (string, integer, uri)?
├─ YES → Broaden to uriorcurie or Any
│ - Edit modules/slots/SLOTNAME.yaml
│ - Change range: string → range: uriorcurie
│ - Document change with Rule 54 reference
│ - Keep class-level slot_usage overrides (they narrow the range)
└─ NO → Consider if base slot needs common ancestor class
- Create abstract base class if needed
- Or broaden to uriorcurie
```
## Implementation Workflow
1. **Identify warning**: `gen-owl ... 2>&1 | grep "Ambiguous type for:"`
2. **Check base slot range**:
```bash
cat modules/slots/SLOTNAME.yaml | grep -A5 "^slots:" | grep "range:"
```
3. **Find class overrides**:
```bash
for f in modules/classes/*.yaml; do
grep -l "SLOTNAME" "$f" && grep -A3 "SLOTNAME:" "$f" | grep "range:"
done
```
4. **Broaden base range**:
- Edit `modules/slots/SLOTNAME.yaml`
- Change `range: string``range: uriorcurie`
- Add annotation documenting the change
5. **Verify fix**: Run gen-owl and confirm warning is gone
6. **Keep slot_usage overrides**: Class-level range narrowing is fine and expected
## Examples
### Example 1: has_or_had_format
**Before (caused warning)**:
```yaml
# Base slot
slots:
has_or_had_format:
range: string # DatatypeProperty
# Class override
classes:
VideoSubtitle:
slot_usage:
has_or_had_format:
range: SubtitleFormatEnum # ObjectProperty → CONFLICT!
```
**After (fixed)**:
```yaml
# Base slot - broadened
slots:
has_or_had_format:
range: uriorcurie # Now ObjectProperty-compatible
# Class override - unchanged, still narrows
classes:
VideoSubtitle:
slot_usage:
has_or_had_format:
range: SubtitleFormatEnum # Valid narrowing
```
### Example 2: has_or_had_hypernym
**Before**: `range: string` (DatatypeProperty)
**After**: `range: uriorcurie` (ObjectProperty-compatible)
Classes that override to class ranges now work without ambiguity.
## Validation
After broadening, run:
```bash
gen-owl 01_custodian_name_modular.yaml 2>&1 | grep "Ambiguous type for: SLOTNAME"
```
The warning should disappear without creating new predicates.
## Anti-Patterns to Avoid
| ❌ Anti-Pattern | ✅ Correct Pattern |
|----------------|-------------------|
| Create `has_or_had_subtitle_format` | Broaden `has_or_had_format` to `uriorcurie` |
| Create `has_or_had_entity_type` | Broaden `has_or_had_type` to `uriorcurie` |
| Create `has_or_had_X_label` | Broaden `has_or_had_label` to `uriorcurie` |
| Create `has_or_had_X_status` | Broaden `has_or_had_status` to `uriorcurie` |
## Rationale
This approach:
1. **Reduces schema complexity** - Fewer predicates to understand
2. **Promotes reuse** - Generic predicates work across domains
3. **Maintains OWL consistency** - Single property type per predicate
4. **Preserves type safety** - slot_usage still enforces class-specific ranges
5. **Follows semantic web best practices** - Broad predicates, narrow contexts
## See Also
- Rule 38: Slot Centralization and Semantic URI Requirements
- Rule 39: Slot Naming Convention (RiC-O Style)
- Rule 49: Slot Usage Minimization
- LinkML Documentation: [slot_usage](https://linkml.io/linkml-model/latest/docs/slot_usage/)

View file

@ -0,0 +1,61 @@
# Rule: Canonical Slot Protection
## Summary
When resolving slot aliases to canonical names, a slot name that has its own `.yaml` file (i.e., is itself a canonical slot) MUST NOT be replaced with a different canonical name, even if it also appears as an alias in another slot file.
## Context
Slot files in `schemas/20251121/linkml/modules/slots/` (top-level and `new/`) each define a canonical slot name. Some slot files also list aliases that overlap with canonical names from other slot files. These cross-references are accidental (e.g., indicating semantic relatedness) and should be corrected by removing the canonical names from the aliases lists in which they occur. The occurance of canonical names in alianses lists does NOT mean the referenced slot should be renamed.
## Rule
1. **Before renaming any slot reference** (in `slots:`, `slot_usage:`, or `imports:` of class files), check whether the current name is itself a canonical slot name — i.e., whether a `.yaml` file exists for it in the slots directory.
2. **If the name IS canonical** (has its own `.yaml` file), do NOT rename it and do NOT redirect its import. The class file is correctly referencing that slot's own definition file.
3. **Only rename a slot reference** if the name does NOT have its own `.yaml` file and is ONLY found as an alias in another slot's file.
## Examples
### WRONG
```yaml
# categorized_as.yaml defines aliases: [..., "has_type", ...]
# has_type.yaml exists with canonical name "has_type"
# WRONG: Renaming has_type -> categorized_as in a class file
# This destroys the valid reference to has_type.yaml
slots:
- categorized_as # was: has_type -- INCORRECT REPLACEMENT
```
### CORRECT
```yaml
# has_type.yaml exists => "has_type" is canonical => leave it alone
slots:
- has_type # CORRECT: has_type is canonical, keep it
# "custodian_type" does NOT have its own .yaml file
# "custodian_type" is listed as an alias in has_type.yaml
# => rename custodian_type -> has_type
slots:
- has_type # was: custodian_type -- CORRECT REPLACEMENT
```
## Implementation Check
```python
# Pseudocode for alias resolution
def should_rename(slot_name, alias_map, existing_slot_files):
if slot_name in existing_slot_files:
return False # It's canonical — do not rename
if slot_name in alias_map:
return True # It's only an alias — rename to canonical
return False # Unknown — leave alone
```
## Rationale
Multiple slot files may list overlapping aliases by accident or for documentation or semantic linking purposes. A canonical slot name appearing as an alias in another file does not invalidate the original slot definition. Treating it as an alias would incorrectly redirect class files away from the slot's own definition, breaking the schema's intended structure.

View file

@ -1,5 +1,5 @@
{
"generated": "2026-02-15T13:08:11.878Z",
"generated": "2026-02-15T13:36:20.661Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2369,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-02-15T13:36:20.661Z",
"generated": "2026-02-15T13:45:47.467Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2369,
"categoryCounts": {

View file

@ -0,0 +1,118 @@
id: https://nde.nl/ontology/hc/class/ConservationRecord
name: ConservationRecord
title: Conservation Record Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
schema: http://schema.org/
aat: http://vocab.getty.edu/aat/
default_prefix: hc
imports:
- linkml:types
- ../enums/ConservationStatusEnum
- ../metadata
- ../slots/has_note
- ../slots/conserved_by
- ../slots/affiliated_with
- ../slots/has_expense
- ../slots/has_currency
- ../slots/describe
- ../slots/final_of_the_final
- ../slots/has_condition
- ../slots/has_score
- ../slots/has_treatment
- ../slots/has_type
- ../slots/indicate
- ../slots/initial_of_the_initial
- ../slots/use_material
- ../slots/refer_to
- ../slots/has_url
- ../slots/receive
- ../slots/recommend
- ../slots/has_timestamp
- ../slots/identified_by
- ../slots/temporal_extent
- ../slots/related_to
- ../slots/has_source
- ../slots/use
classes:
ConservationRecord:
class_uri: crm:E14_Condition_Assessment
description: >-
Documentation entity for condition assessment, technical examination, and treatment actions performed on a heritage object.
alt_descriptions:
nl:
text: Documentatie-entiteit voor conditiebeoordeling, technisch onderzoek en behandelacties op erfgoedobjecten.
language: nl
de:
text: Dokumentationseinheit fuer Zustandsbewertung, technische Untersuchung und Behandlungsmaßnahmen an Kulturerbeobjekten.
language: de
fr:
text: Entite de documentation pour l'evaluation d'etat, l'examen technique et les interventions appliquees a un objet patrimonial.
language: fr
es:
text: Entidad documental para evaluacion de estado, examen tecnico e intervenciones de tratamiento sobre objetos patrimoniales.
language: es
ar:
text: كيان توثيقي لتقييم الحالة والفحص التقني وإجراءات المعالجة المنفذة على عنصر تراثي.
language: ar
id:
text: Entitas dokumentasi untuk penilaian kondisi, pemeriksaan teknis, dan tindakan perawatan pada objek warisan.
language: id
zh:
text: 用于记录遗产对象状态评估、技术检查与处理干预的文档实体。
language: zh
broad_mappings:
- crm:E14_Condition_Assessment
close_mappings:
- crm:E11_Modification
- aat:300054795
- aat:300054796
related_mappings:
- schema:HowTo
- crm:E7_Activity
slots:
- identified_by
- refer_to
- has_type
- has_timestamp
- temporal_extent
- initial_of_the_initial
- final_of_the_final
- has_condition
- has_treatment
- conserved_by
- affiliated_with
- use_material
- use
- describe
- has_url
- has_source
- recommend
- indicate
- related_to
- has_expense
- has_currency
- receive
- has_note
- has_score
slot_usage:
identified_by:
identifier: true
required: true
refer_to:
required: true
has_type:
required: true
temporal_extent:
range: TimeSpan
inlined: true
has_condition:
range: Condition
multivalued: true
inlined: true
has_treatment:
range: Treatment
multivalued: true
inlined_as_list: true

View file

@ -0,0 +1,24 @@
id: https://nde.nl/ontology/hc/class/ConservationReview
name: ConservationReview
title: Conservation Review
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
- ../slots/has_label
- ../slots/temporal_extent
classes:
ConservationReview:
class_uri: crm:E14_Condition_Assessment
description: >-
Follow-up assessment entry used to re-evaluate condition outcomes and pending treatment needs.
broad_mappings:
- crm:E14_Condition_Assessment
slots:
- temporal_extent
- has_label
- has_description

View file

@ -0,0 +1,45 @@
id: https://nde.nl/ontology/hc/class/Conservatoria
name: Conservatoria
title: Conservatoria Type (Lusophone)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
classes:
Conservatoria:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
description: >-
Lusophone civil-registration and notarial repository institution with statutory authority over vital and legal record administration.
alt_descriptions:
nl:
text: Lusofone burgerlijke-registratie- en notariële archiefinstelling met wettelijke bevoegdheid over vitale en juridische registraties.
language: nl
de:
text: Lusophone Einrichtung fuer Personenstands- und Notariatsregister mit gesetzlicher Zuständigkeit fuer lebensereignis- und rechtsbezogene Registerfuehrung.
language: de
fr:
text: Institution lusophone de registre civil et notarial, dotee d'une competence statutaire sur l'administration des actes vitaux et juridiques.
language: fr
es:
text: Institucion lusofona de registro civil y notarial con autoridad estatutaria sobre la administracion de registros vitales y juridicos.
language: es
ar:
text: مؤسسة لوسوفونية للسجل المدني والتوثيق تملك سلطة قانونية على إدارة السجلات الحيوية والقانونية.
language: ar
id:
text: Institusi lusofon untuk registrasi sipil dan kenotariatan dengan kewenangan hukum atas administrasi rekod vital dan legal.
language: id
zh:
text: 具备法定权限、负责生命事件与法律登记管理的葡语系民事登记与公证档案机构。
language: zh
broad_mappings:
- skos:Concept
- schema:ArchiveOrganization
related_mappings:
- wd:Q9854379

View file

@ -0,0 +1,46 @@
id: https://nde.nl/ontology/hc/class/ContactDetails
name: ContactDetails
title: Contact Details Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
vcard: http://www.w3.org/2006/vcard/ns#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/include
classes:
ContactDetails:
class_uri: schema:ContactPoint
description: >-
Structured contact profile bundling communication channels for a person or organization.
alt_descriptions:
nl:
text: Gestructureerd contactprofiel dat communicatiekanalen voor een persoon of organisatie bundelt.
language: nl
de:
text: Strukturiertes Kontaktprofil, das Kommunikationskanäle einer Person oder Organisation bündelt.
language: de
fr:
text: Profil de contact structure regroupant les canaux de communication d'une personne ou d'une organisation.
language: fr
es:
text: Perfil de contacto estructurado que agrupa canales de comunicacion de una persona u organizacion.
language: es
ar:
text: ملف اتصال منظم يجمع قنوات التواصل لشخص أو مؤسسة.
language: ar
id:
text: Profil kontak terstruktur yang menggabungkan kanal komunikasi untuk orang atau organisasi.
language: id
zh:
text: 汇聚个人或机构通信渠道的结构化联系档案。
language: zh
close_mappings:
- vcard:VCard
broad_mappings:
- schema:ContactPoint
slots:
- include

View file

@ -0,0 +1,32 @@
id: https://nde.nl/ontology/hc/class/Container
name: Container
title: Heritage Custodian Data Container
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_score
classes:
Container:
tree_root: true
class_uri: prov:Collection
description: >-
Validation root that aggregates heterogeneous heritage-custodian instance data for batch loading and schema checks.
broad_mappings:
- prov:Collection
related_mappings:
- schema:Dataset
slots:
- has_score
- has_custodian
- has_note
- has_label
- has_section
- identified_by
- has_profile
comments:
- Technical container for LinkML instance validation workflows

View file

@ -0,0 +1,60 @@
id: https://nde.nl/ontology/hc/class/Content
name: Content
title: Content Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
rico: https://www.ica.org/standards/RiC/ontology#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_description
- ../slots/has_label
- ../slots/has_type
- ../slots/temporal_extent
classes:
Content:
class_uri: rico:RecordSetType
description: >-
Intellectual-subject profile describing what a resource set documents across topic, period, and context.
alt_descriptions:
nl:
text: Intellectueel onderwerp-profiel dat beschrijft wat een bronnenverzameling documenteert qua thema, periode en context.
language: nl
de:
text: Intellektuelles Themenprofil, das beschreibt, was eine Ressourcenmenge in Bezug auf Thema, Zeitraum und Kontext dokumentiert.
language: de
fr:
text: Profil intellectuel de contenu decrivant ce qu'un ensemble de ressources documente en termes de sujet, periode et contexte.
language: fr
es:
text: Perfil intelectual de contenido que describe que documenta un conjunto de recursos en tema, periodo y contexto.
language: es
ar:
text: ملف موضوعي فكري يصف ما توثقه مجموعة الموارد من حيث الموضوع والفترة والسياق.
language: ar
id:
text: Profil intelektual isi yang menjelaskan apa yang didokumentasikan oleh suatu himpunan sumber dalam topik, periode, dan konteks.
language: id
zh:
text: 描述资源集合在主题、时期与语境上所记录内容的知识主题画像。
language: zh
broad_mappings:
- rico:RecordSetType
close_mappings:
- dcterms:coverage
- schema:about
slots:
- has_label
- has_description
- has_type
- temporal_extent
slot_usage:
has_type:
range: ContentType
temporal_extent:
range: TimeSpan
inlined: true

View file

@ -0,0 +1,60 @@
id: https://nde.nl/ontology/hc/class/ContentType
name: ContentType
title: Content Type Class (Abstract Base)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_code
- ../slots/has_description
- ../slots/has_label
classes:
ContentType:
class_uri: crm:E55_Type
abstract: true
description: >-
Abstract controlled-vocabulary node for categorizing informational modality and subject expression.
alt_descriptions:
nl:
text: Abstracte gecontroleerde-vocabulaireknoop voor categorisatie van informatiemodaliteit en onderwerpuitdrukking.
language: nl
de:
text: Abstrakter Knoten eines kontrollierten Vokabulars zur Kategorisierung von Informationsmodalität und Themenausprägung.
language: de
fr:
text: Noeud abstrait de vocabulaire controle pour categoriser la modalite informationnelle et l'expression du sujet.
language: fr
es:
text: Nodo abstracto de vocabulario controlado para categorizar modalidad informativa y expresion tematica.
language: es
ar:
text: عقدة مجردة في معجم مضبوط لتصنيف نمط المعلومات وتمثيل الموضوع.
language: ar
id:
text: Simpul abstrak kosakata terkendali untuk mengkategorikan modalitas informasi dan ekspresi subjek.
language: id
zh:
text: 用于分类信息模态与主题表达的受控词表抽象节点。
language: zh
broad_mappings:
- crm:E55_Type
- skos:Concept
close_mappings:
- dcterms:type
slots:
- has_code
- has_label
- has_description
slot_usage:
has_code:
required: true
identifier: true
pattern: '^[A-Z][A-Z0-9_]*$'
has_label:
required: true

View file

@ -4,6 +4,7 @@ title: Content Types (Concrete Subclasses)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- ./ContentType