3.4 KiB
3.4 KiB
Complete Schema Mermaid Diagram - Quick Reference
TL;DR: We extended LinkML to generate a single comprehensive Mermaid diagram showing the entire schema (53 classes, 149 relationships) instead of 53 individual per-class diagrams.
Quick Start
# Generate complete diagram
cd /Users/kempersc/apps/glam
python3 scripts/generate_complete_mermaid_diagram.py
# Output: schemas/20251121/uml/mermaid/complete_schema_YYYYMMDD_HHMMSS.mmd
View online: Copy .mmd contents to https://mermaid.live/
What Was Generated
File: schemas/20251121/uml/mermaid/complete_schema_20251124_004143.mmd
- ✅ 53 classes
- ✅ 149 relationships (42 inheritance, 107 associations)
- ✅ 697 lines
- ✅ 31 KB
Why This Matters
Before (LinkML default):
- 53 separate
.mmdfiles (one per class) - No holistic view of schema architecture
- Hard to understand cross-class relationships
After (this script):
- 1 comprehensive diagram
- Complete schema overview
- All relationships visible
- Perfect for presentations, onboarding, ontology consultations
Key Architecture Visualized
1. EncompassingBody Hierarchy (NEW!)
EncompassingBody (abstract)
├── UmbrellaOrganisation (legal parent)
├── NetworkOrganisation (service provider)
└── Consortium (peer-to-peer collaboration)
2. Hub Architecture
Custodian (hub) ←─── CustodianObservation
├─── CustodianLegalStatus
├─── CustodianName
├─── CustodianPlace
├─── CustodianCollection
└─── OrganizationalStructure
3. 19 CustodianType Subtypes
CustodianType
├── MuseumType
├── LibraryType
├── ArchiveOrganizationType
├── GalleryType
├── OfficialInstitutionType
├── ResearchOrganizationType
├── CommercialOrganizationType
├── UnspecifiedType
├── BioCustodianType
├── EducationalProviderType
├── CollectingSocietyType
├── FeaturePlaceType
├── IntangibleHeritageType
├── MixedCustodianType
├── PersonalCollectionType
├── HolySiteType
├── DigitalPlatformType
├── NonProfitType
└── TasteScentHeritageType
When to Use What
| Use Case | Tool |
|---|---|
| Schema overview | Complete diagram (this script) |
| Detailed class docs | Per-class diagrams (LinkML gen-yuml) |
| Presentations | Complete diagram → export to SVG |
| Developer reference | Both (overview + details) |
| Ontology consultation | Complete diagram (shows all alignments) |
Extending the Script
Change attributes shown per class (line 72):
for slot_name in class_slots[:10]: # Change 10 to 5, 20, etc.
Filter to specific classes (add after line 69):
if class_name not in ['Custodian', 'CustodianObservation', 'EncompassingBody']:
continue # Only generate diagram for core classes
Files
- Script:
scripts/generate_complete_mermaid_diagram.py - Output:
schemas/20251121/uml/mermaid/complete_schema_YYYYMMDD_HHMMSS.mmd - Documentation:
COMPLETE_SCHEMA_MERMAID_GENERATION.md
See Also
- Per-class diagrams:
schemas/20251121/uml/mermaid/auto_generated/ - Markdown docs:
schemas/20251121/docs/20251124_003435/ - RDF output:
schemas/20251121/rdf/(8 formats)