OpenCGMES
A suite of open-source tools for working with CGMES / CIM (IEC 61970) RDF — RDFS profiles, SHACL constraints, and CIMXML model exchange. Apache 2.0 licensed, built on Apache Jena.
OpenCGMES is three products that share a common foundation:
- CIMXML — a Java library that parses IEC 61970-552 CIMXML (full models and difference models) into Apache Jena RDF graphs.
- CIMVocabCheck — static SPARQL and SHACL validation against RDFS / CIM profile schemas. It answers "does this query or shapes graph make sense for the schema I'm working with?" — without executing anything and without needing RDF data. Ships as a library, a CLI, and an LSP language server (CIMLangServer).
- CIMNotebook — editor integrations (a VS Code extension and an IntelliJ plugin) that bring CIMVocabCheck's validation into the editor as you type.
How the pieces fit together
CIMXML provides the profile-aware RDF foundation. CIMVocabCheck's core builds a schema index from CIM/RDFS profiles and validates SPARQL and SHACL against it. The CLI and the CIMLangServer wrap that core; CIMNotebook fronts the language server inside editors.
Who should read what
| If you are… | Start with | Then read |
|---|---|---|
| Parsing or generating CIMXML in Java | CIMXML overview | Quick start, Library usage |
| Writing SPARQL / SHACL for CGMES profiles | CIMVocabCheck overview | Configuration, Validation checks |
| Validating queries/shapes in Java unit tests | Library & tests | API reference |
| Adding validation in CI | CLI | Configuration, Endpoints |
| Working in an editor (VS Code / IntelliJ) | CIMNotebook overview | VS Code, IntelliJ |
| Contributing to OpenCGMES | Developer guide | Building, Testing |
| New to CIM / CGMES / RDF | CGMES background | the product overviews above |
What you can do with it
- Parse CIMXML — read full models and difference models per IEC 61970-552 into Jena graphs, with profile-aware datatype resolution and UUID normalization.
- Catch query and shape mistakes early — unknown classes/properties, domain/range violations, datatype mismatches, and invalid SHACL cardinalities, all statically, with no dataset and no query execution.
- Validate in your editor — squiggly underlines, hover docs, completion, and go-to-definition
for CIM terms in
.rq,.sparql,.ttl,.shacl, and SPARQL Notebook cells. - Validate in CI — fail a pipeline on query/shape errors with the CLI, or from your own JUnit tests via the library.
- Load the schema from a SPARQL endpoint — point at an Apache Jena Fuseki that hosts the CGMES profiles and have the schema and per-graph profile scope discovered automatically.
Coming soon: QueryAndValidationUI
A web application for uploading RDFS schemas, SHACL shapes, and CIMXML files, querying with SPARQL, and validating against SHACL — currently in development.
License
OpenCGMES is released under the Apache License 2.0.
Commercial support
OpenCGMES is actively developed and maintained by SOPTIM AG. The project is free to use under Apache 2.0; commercial support — maintenance, integration services, custom extensions, and CIM/CGMES advisory — is available on request. Contact opencgmes@soptim.de.