- Implemented `owl_to_mermaid.py` to convert OWL/Turtle files into Mermaid class diagrams. - Implemented `owl_to_plantuml.py` to convert OWL/Turtle files into PlantUML class diagrams. - Added two new PlantUML files for custodian multi-aspect diagrams.
3.8 KiB
3.8 KiB
Quick Reference: Regenerating RDF & UML
Last Generated: 2025-11-22 15:53:19 (Timestamp: 20251122_155319)
One-Command Regeneration
# Set timestamp
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 1. Generate all RDF formats
cd schemas/20251121/linkml && \
gen-owl -f ttl 01_custodian_name_modular.yaml 2>/dev/null > ../rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl && \
cd ../rdf && \
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o nt 2>/dev/null > custodian_multi_aspect_${TIMESTAMP}.nt && \
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o json-ld 2>/dev/null > custodian_multi_aspect_${TIMESTAMP}.jsonld && \
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o xml 2>/dev/null > custodian_multi_aspect_${TIMESTAMP}.rdf && \
cd ../../.. && \
echo "✅ RDF generated: $TIMESTAMP"
# 2. Generate UML visualizations
python3 scripts/owl_to_plantuml.py \
schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl \
schemas/20251121/uml/plantuml/custodian_multi_aspect_${TIMESTAMP}.puml && \
python3 scripts/owl_to_mermaid.py \
schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl \
schemas/20251121/uml/mermaid/custodian_multi_aspect_${TIMESTAMP}.mmd && \
cd schemas/20251121/uml/plantuml && \
plantuml custodian_multi_aspect_${TIMESTAMP}.puml && \
plantuml -tsvg custodian_multi_aspect_${TIMESTAMP}.puml && \
cd ../../../.. && \
echo "✅ UML generated: $TIMESTAMP"
# 3. Verify
ls -lh schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.* && \
ls -lh schemas/20251121/uml/*/custodian_multi_aspect_${TIMESTAMP}.*
Individual Commands
Generate RDF Only
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
cd schemas/20251121/linkml
gen-owl -f ttl 01_custodian_name_modular.yaml 2>/dev/null \
> ../rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl
Convert RDF Formats
cd schemas/20251121/rdf
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o nt 2>/dev/null \
> custodian_multi_aspect_${TIMESTAMP}.nt
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o json-ld 2>/dev/null \
> custodian_multi_aspect_${TIMESTAMP}.jsonld
rdfpipe custodian_multi_aspect_${TIMESTAMP}.owl.ttl -o xml 2>/dev/null \
> custodian_multi_aspect_${TIMESTAMP}.rdf
Generate UML Only
# PlantUML
python3 scripts/owl_to_plantuml.py \
schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl \
schemas/20251121/uml/plantuml/custodian_multi_aspect_${TIMESTAMP}.puml
cd schemas/20251121/uml/plantuml
plantuml custodian_multi_aspect_${TIMESTAMP}.puml
plantuml -tsvg custodian_multi_aspect_${TIMESTAMP}.puml
# Mermaid
python3 scripts/owl_to_mermaid.py \
schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl \
schemas/20251121/uml/mermaid/custodian_multi_aspect_${TIMESTAMP}.mmd
Expected Output
- 4 RDF files (~1.3MB total):
.owl.ttl,.nt,.jsonld,.rdf - 4 UML files:
.puml,.png,.svg,.mmd
Troubleshooting
"gen-owl: command not found"
pip install linkml
"rdfpipe: command not found"
pip install rdflib
"plantuml: command not found"
brew install plantuml # macOS
# or download from https://plantuml.com
JSON-LD file is 0 bytes
Use json-ld (hyphenated) not jsonld:
rdfpipe input.ttl -o json-ld > output.jsonld
Validation
# Check file sizes (should be non-zero)
ls -lh schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.*
# Count RDF triples (should be ~3,027)
wc -l schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.nt
# Validate RDF syntax (optional, requires rapper)
rapper -i turtle -c schemas/20251121/rdf/custodian_multi_aspect_${TIMESTAMP}.owl.ttl
Documentation
- Full guide:
RDF_UML_GENERATION_COMPLETE_20251122_155319.md - RDF usage:
RDF_GENERATION_SUMMARY.md - Schema rules:
.opencode/SCHEMA_GENERATION_RULES.md