Problem
The current SHACL validation setup requires manual knowledge of which SHACL rules to load for which instance files, and which RDFS profiles are needed for cross-profile validation. This information should be formally declared in PROF descriptors and SHACL headers to enable automated validation pipelines.
Current PROF role structure
Each PROF file declares resources with four roles:
prof:role/vocabulary → RDFS vocabulary file (*-Voc-RDFS2020.rdf)
prof:role/constraints → Simple and Complex SHACL files (*-Con-Simple-SHACL.ttl, *-Con-Complex-SHACL.ttl)
prof:role/validation → Validation SHACL file (*-Con-Validation-SHACL.ttl) — referenced by URL but not shipped in repo
prof:role/specification → PDF specification document
The validation role is the key one — it should define the complete validation setup.
Proposal
1. prof:role/validation — what to load for full validation
The Validation SHACL files are referenced in PROF but don't exist in the repo. These should either be created or the validation role should explicitly declare:
- Which
constraints SHACL files to apply (Simple, Complex, CrossProfile)
- Which instance profiles must be loaded together (e.g., SV validation needs EQ+SSH+TP)
- Which RDFS vocabularies are needed for class resolution
2. Cross-profile dependency declarations
- Simple rules: single profile only (e.g., AE rules → AE instance)
- Complex/CrossProfile rules need multiple profiles:
- SV CrossProfile → EQ+SSH+TP+SV
- SSH Complex (resolved) → EQ+SSH
- DY CrossProfile → EQ+SV+TP+SSH+DY
- Currently this is implicit in file naming (
-CrossProfile-, -NotSolvedMAS-) — no machine-readable declaration
- SHACL headers should declare required profiles via
dcterms:requires or owl:imports
3. RDFS dependency chain (abstract class resolution)
- SHACL rules reference abstract CIM classes (
IdentifiedObject, PowerSystemResource) defined in shared RDFS
- Each profile's RDFS should declare which other RDFS vocabularies are needed for class hierarchy resolution
4. Validation use cases (levels of scope)
Each level requires progressively more data and SHACL rule sets:
| Level |
Scope |
Example |
SHACL rules |
| 1 |
Single instance file |
Belgovia_AE.xml alone |
Profile Simple + Complex |
| 2 |
Instance with resolved references |
SSH + EQ it references via dcterms:requires |
Profile Simple + Complex + CrossProfile |
| 3 |
Full IGM |
Complete EQ+SSH+TP+SV for one TSO |
All profile rules + cross-profile + MAS |
| 4 |
CGM |
Merged grid model across TSOs + boundary data |
All IGM rules + cross-border + boundary constraints |
The prof:role/validation resource should define which level(s) it targets and what must be loaded.
5. Current SHACL naming convention
- NCP:
{Profile}-AP-Con-{Simple|Complex}-SHACL.ttl
- CGMES:
{IECStandard}_{Profile}-AP-Con-{Complexity}[-{Variant}]-SHACL.ttl
- Variants:
CrossProfile (Explicit/Implicit), NotSolvedMAS, SolvedMAS, InverseAssociation
- Simple = cardinality, datatype, association type validation
- Complex = business rules, allowed values, cross-profile constraints
This naming convention should be documented in the repository README.
Related issues
Problem
The current SHACL validation setup requires manual knowledge of which SHACL rules to load for which instance files, and which RDFS profiles are needed for cross-profile validation. This information should be formally declared in PROF descriptors and SHACL headers to enable automated validation pipelines.
Current PROF role structure
Each PROF file declares resources with four roles:
prof:role/vocabulary→ RDFS vocabulary file (*-Voc-RDFS2020.rdf)prof:role/constraints→ Simple and Complex SHACL files (*-Con-Simple-SHACL.ttl,*-Con-Complex-SHACL.ttl)prof:role/validation→ Validation SHACL file (*-Con-Validation-SHACL.ttl) — referenced by URL but not shipped in repoprof:role/specification→ PDF specification documentThe
validationrole is the key one — it should define the complete validation setup.Proposal
1.
prof:role/validation— what to load for full validationThe Validation SHACL files are referenced in PROF but don't exist in the repo. These should either be created or the validation role should explicitly declare:
constraintsSHACL files to apply (Simple, Complex, CrossProfile)2. Cross-profile dependency declarations
-CrossProfile-,-NotSolvedMAS-) — no machine-readable declarationdcterms:requiresorowl:imports3. RDFS dependency chain (abstract class resolution)
IdentifiedObject,PowerSystemResource) defined in shared RDFS4. Validation use cases (levels of scope)
Each level requires progressively more data and SHACL rule sets:
dcterms:requiresThe
prof:role/validationresource should define which level(s) it targets and what must be loaded.5. Current SHACL naming convention
{Profile}-AP-Con-{Simple|Complex}-SHACL.ttl{IECStandard}_{Profile}-AP-Con-{Complexity}[-{Variant}]-SHACL.ttlCrossProfile(Explicit/Implicit),NotSolvedMAS,SolvedMAS,InverseAssociationThis naming convention should be documented in the repository README.
Related issues