================================================================================ Heritage Custodian Schema - Modular Architecture (v0.2.0) ================================================================================ ┌─────────────────────────────────┐ │ heritage_custodian.yaml │ │ (Main Schema - 62 lines) │ │ │ │ Imports all modules below │ └────────────┬────────────────────┘ │ ┌───────────────┼───────────────┬─────────────────┐ │ │ │ │ ▼ ▼ ▼ ▼ ┌────────────────┐ ┌────────────────┐ ┌──────────────┐ ┌─────────────┐ │ enums.yaml │ │ core.yaml │ │ provenance │ │ collections │ │ (241 lines) │ │ (494 lines) │ │ .yaml │ │ .yaml │ │ │ │ │ │ (237 lines) │ │ (177 lines)│ │ 7 Enumerations │ │ 5 Core Classes │ │ 3 Provenance │ │ 3 Collection│ │ │ │ │ │ Classes │ │ Classes │ └────────────────┘ └────────────────┘ └──────────────┘ └─────────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ┌────────────────┐ ┌────────────────┐ ┌──────────────┐ ┌─────────────┐ │InstitutionType │ │HeritageCustodian│ │Provenance │ │Collection │ │OrganizationStat│ │Location │ │GHCIDHistory │ │DigitalPlatfm│ │DataSource │ │ContactInfo │ │ChangeEvent │ │Partnership │ │DataTier │ │Identifier │ │ │ │ │ │MetadataStandard│ │OrgUnit │ │ │ │ │ │PlatformType │ │ │ │ │ │ │ │ChangeType │ │ │ │ │ │ │ └────────────────┘ └────────────────┘ └──────────────┘ └─────────────┘ │ ▼ ┌─────────────────────┐ │ dutch.yaml │ │ (142 lines) │ │ │ │ Country-specific │ │ extension module │ └─────────────────────┘ │ ▼ ┌─────────────────────┐ │DutchHeritageCustod. │ │ extends: │ │ HeritageCustodian │ │ │ │ + kvk_number │ │ + gemeente_code │ │ + provincie │ │ + platform flags │ └─────────────────────┘ ================================================================================ Future Extensions (Planned) ================================================================================ More country modules following the dutch.yaml pattern: ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ brazil.yaml │ │vietnam.yaml │ │ japan.yaml │ │ (planned) │ │ (planned) │ │ (planned) │ │ │ │ │ │ │ │BrazilianHC │ │VietnameseHC │ │JapaneseHC │ │ + cnpj │ │ + mst_code │ │ + nacsis_cat │ │ + ibram_reg │ │ + archives │ │ + isil_jp │ └──────────────┘ └──────────────┘ └──────────────┘ ================================================================================ Module Dependency Graph ================================================================================ enums.yaml [no dependencies] ↑ │ core.yaml [imports: enums] ↑ ├────────────┐ │ │ provenance.yaml collections.yaml [imports: enums, core] ↑ ↑ └────┬───────┘ │ dutch.yaml [imports: core] ↑ │ heritage_custodian.yaml [imports: all modules] ================================================================================ Usage Patterns ================================================================================ 1. Full schema (all features): from linkml_runtime import SchemaView sv = SchemaView('schemas/heritage_custodian.yaml') 2. Core classes only (minimal): sv = SchemaView('schemas/core.yaml') 3. Custom subset: # my_schema.yaml imports: - enums - core # Omit provenance, collections, dutch 4. Extension development: # brazil.yaml imports: - core classes: BrazilianHeritageCustodian: is_a: HeritageCustodian ================================================================================ Benefits ================================================================================ ✓ Modularity - Use only what you need ✓ Clarity - Each module has clear purpose ✓ Maintainability - Changes isolated to specific modules ✓ Extensibility - Easy to add country/domain modules ✓ Compatibility - 100% backward compatible (53 tests pass) ✓ Efficiency - Smaller files, faster IDE loading ================================================================================