- Created PlantUML diagrams for custodian types, full schema, legal status, and organizational structure. - Implemented a script to generate GraphViz DOT diagrams from OWL/RDF ontology files. - Developed a script to generate UML diagrams from modular LinkML schema, supporting both Mermaid and PlantUML formats. - Enhanced class definitions and relationships in UML diagrams to reflect the latest schema updates.
9.1 KiB
EncompassingBody RDF and UML Generation Complete
Date: 2025-11-23
Timestamp: 20251123_225622 (RDF), 20251123_225712 (UML)
Status: ✅ COMPLETE
Generated Files
RDF Formats (6 formats)
All generated with timestamp 20251123_225622:
-
OWL/Turtle -
EncompassingBody_20251123_225622.owl.ttl(11K)- Primary OWL ontology in Turtle syntax
- Contains class definitions, properties, restrictions
- Includes ontology mappings (org:, schema:, skos:)
-
N-Triples -
EncompassingBody_20251123_225622.nt(36K)- Simple triple format for easy parsing
- One triple per line
-
RDF/XML -
EncompassingBody_20251123_225622.rdf(29K)- XML serialization of RDF
- Compatible with legacy RDF tools
-
N3 -
EncompassingBody_20251123_225622.n3(11K)- Notation3 format (superset of Turtle)
-
TriG -
EncompassingBody_20251123_225622.trig(16K)- Named graphs extension of Turtle
-
TriX -
EncompassingBody_20251123_225622.trix(60K)- XML-based RDF format with named graphs
Location: /schemas/20251121/rdf/
UML/Mermaid Diagrams (4 class diagrams)
All generated with timestamp 20251123_225712:
-
EncompassingBody -
EncompassingBody_20251123_225712.mmd(1.2K)- Abstract parent class diagram
- Shows inheritance hierarchy (3 subclasses)
- Displays all slots/properties
- Links to EncompassingBodyTypeEnum
-
UmbrellaOrganisation -
UmbrellaOrganisation_20251123_225712.mmd(1.1K)- Legal parent organization class diagram
- Inherits from EncompassingBody
- Mapped to org:FormalOrganization
-
NetworkOrganisation -
NetworkOrganisation_20251123_225712.mmd(1.1K)- Service provider network class diagram
- Inherits from EncompassingBody
- Mapped to schema:Organization
-
Consortium -
Consortium_20251123_225712.mmd(955B)- Mutual assistance body class diagram
- Inherits from EncompassingBody
- Mapped to schema:Consortium
Location: /schemas/20251121/uml/mermaid/
RDF Ontology Content
Classes Defined
-
EncompassingBody (abstract)
class_uri: org:Organization- Parent class for all encompassing body types
-
UmbrellaOrganisation
class_uri: org:FormalOrganizationskos:exactMatch schema:GovernmentOrganization- Legal parent organizations
-
NetworkOrganisation
class_uri: schema:Organization- Service provider networks
-
Consortium
class_uri: schema:Consortium- Peer-to-peer mutual assistance bodies
Properties Defined
| Property | Slot URI | Range | Cardinality |
|---|---|---|---|
id |
(identifier) | uriorcurie | 1..1 (required) |
organization_name |
skos:prefLabel |
string | 1..1 (required) |
organization_type |
- | EncompassingBodyTypeEnum | 1..1 (required) |
description |
- | string | 0..1 |
legal_form |
org:classification |
string | 0..1 (required for Umbrella) |
founding_date |
schema:foundingDate |
date | 0..1 |
dissolution_date |
schema:dissolutionDate |
date | 0..1 |
member_custodians |
org:hasSubOrganization |
string | 0..* |
governance_authority |
- | string | 0..1 (required for Umbrella) |
service_offerings |
- | string | 0..* (required for Network/Consortium) |
membership_criteria |
- | string | 0..1 |
identifiers |
dcterms:identifier |
string | 0..* |
website |
schema:url |
uri | 0..1 |
Enumeration
EncompassingBodyTypeEnum:
UMBRELLA→org:FormalOrganizationNETWORK→schema:OrganizationCONSORTIUM→schema:Consortium
OWL Restrictions
Each subclass has OWL restrictions enforcing required fields:
UmbrellaOrganisation
governance_authority: minCardinality 1 (required)legal_form: minCardinality 1 (required)
NetworkOrganisation
service_offerings: minCardinality 1 (required, multivalued)
Consortium
- No additional restrictions (inherits from EncompassingBody)
Mermaid Diagram Features
Each diagram includes:
✅ Inheritance hierarchy - Shows <|-- relationship to parent class
✅ Properties list - All slots displayed on class
✅ Relationship to enums - Links to EncompassingBodyTypeEnum
✅ Clickable links - Navigate between related classes (in web view)
Example: EncompassingBody Hierarchy
classDiagram
class EncompassingBody
EncompassingBody <|-- UmbrellaOrganisation
EncompassingBody <|-- NetworkOrganisation
EncompassingBody <|-- Consortium
EncompassingBody : id
EncompassingBody : organization_name
EncompassingBody : organization_type
EncompassingBody : description
EncompassingBody : legal_form
EncompassingBody : founding_date
EncompassingBody : dissolution_date
EncompassingBody : member_custodians
EncompassingBody : governance_authority
EncompassingBody : service_offerings
EncompassingBody : membership_criteria
EncompassingBody : identifiers
EncompassingBody : website
EncompassingBody --> "1" EncompassingBodyTypeEnum : organization_type
Generation Process
Step 1: Create Standalone Schema
Created /tmp/EncompassingBody_standalone.yaml with:
- Self-contained schema (no external dependencies)
- Inline enum definitions
- Simplified ranges (string instead of complex types)
- All necessary prefixes
Step 2: Generate RDF with gen-owl
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
gen-owl -f ttl /tmp/EncompassingBody_standalone.yaml \
> schemas/20251121/rdf/EncompassingBody_${TIMESTAMP}.owl.ttl
Output: OWL/Turtle (11K, 284 lines)
Step 3: Convert to Other RDF Formats with rdfpipe
rdfpipe EncompassingBody_${TIMESTAMP}.owl.ttl -o nt > ...nt
rdfpipe EncompassingBody_${TIMESTAMP}.owl.ttl -o xml > ...rdf
rdfpipe EncompassingBody_${TIMESTAMP}.owl.ttl -o n3 > ...n3
rdfpipe EncompassingBody_${TIMESTAMP}.owl.ttl -o trig > ...trig
rdfpipe EncompassingBody_${TIMESTAMP}.owl.ttl -o trix > ...trix
Note: JSON-LD plugin not available in current rdflib installation
Step 4: Generate Mermaid Diagrams with gen-mermaid-class-diagram
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
gen-mermaid-class-diagram -d /tmp/mermaid_out_${TIMESTAMP} \
/tmp/EncompassingBody_standalone.yaml
Output: 4 Mermaid diagrams (one per class)
Step 5: Copy with Timestamps
Copied all generated files to schema directories with full timestamps in filenames.
Ontology Mappings in RDF
EncompassingBody
<hc:EncompassingBody> a owl:Class ;
rdfs:label "EncompassingBody" ;
skos:exactMatch org:Organization .
UmbrellaOrganisation
<hc:UmbrellaOrganisation> a owl:Class ;
rdfs:label "UmbrellaOrganisation" ;
rdfs:subClassOf <hc:EncompassingBody> ;
skos:exactMatch org:FormalOrganization .
NetworkOrganisation
<hc:NetworkOrganisation> a owl:Class ;
rdfs:label "NetworkOrganisation" ;
rdfs:subClassOf <hc:EncompassingBody> ;
skos:exactMatch schema:Organization .
Consortium
<hc:Consortium> a owl:Class ;
rdfs:label "Consortium" ;
rdfs:subClassOf <hc:EncompassingBody> ;
skos:exactMatch schema:Consortium .
File Sizes Summary
RDF Files (Total: ~163K)
- OWL/Turtle: 11K (284 lines)
- N-Triples: 36K (largest - verbose format)
- RDF/XML: 29K
- N3: 11K (compact)
- TriG: 16K
- TriX: 60K (verbose XML)
Mermaid Files (Total: ~4.3K)
- EncompassingBody: 1.2K (52 lines)
- UmbrellaOrganisation: 1.1K
- NetworkOrganisation: 1.1K
- Consortium: 955B
Validation
RDF Validation
✅ Successfully parsed by rdfpipe (no syntax errors)
✅ Multiple serialization formats generated without errors
✅ OWL restrictions properly defined
✅ SKOS mappings included for interoperability
UML Validation
✅ Valid Mermaid syntax
✅ Inheritance hierarchy correctly displayed
✅ All properties listed on parent class
✅ Clickable links for web rendering
Usage Examples
Loading RDF into Triple Store
# Load into Apache Jena Fuseki
curl -X POST \
--data-binary @EncompassingBody_20251123_225622.owl.ttl \
-H "Content-Type: text/turtle" \
http://localhost:3030/dataset/data
Rendering Mermaid Diagram
<!-- In Markdown file -->

Or in GitHub/GitLab:
```mermaid
[contents of .mmd file]
---
## Next Steps
1. **Integrate with Main Schema**: Import EncompassingBody into main custodian schema
2. **Add to Documentation**: Include diagrams in schema documentation
3. **SPARQL Queries**: Create example SPARQL queries using generated ontology
4. **Validation Rules**: Add SHACL shapes for data validation
5. **JSON-LD Context**: Create JSON-LD context file (when plugin available)
---
## Files Modified/Generated
**Generated**:
- 6 RDF files in `/schemas/20251121/rdf/`
- 4 Mermaid diagrams in `/schemas/20251121/uml/mermaid/`
- Standalone LinkML schema in `/tmp/` (temporary)
**Total**: 10 files (~167K)
---
**Generation Status**: ✅ COMPLETE
**All formats have proper timestamps**: ✅ YES
**Ready for integration**: ✅ YES