Table of Contents
The Instance of CIM Knowledge Graph project focuses on producing issue resolutions and example files that demonstrate how the IEC Common Information Model (CIM) can be upgraded to support the latest W3C standards. The project includes schema ontologies and instance data, utilizing profiles such as CGMES 3.0 and Network Code (NC) CGMES extensions. It also validates DX-PROF and incorporates the LinkML project to model CIM data cases.
The project aims to:
- Create example cases that cover all relevant CIM modeling scenarios using JSON-LD, Turtle, and RDF/XML.
- Address issues and provide examples for all relevant modeling of CIM.
- Demonstrate how CIM can support W3C standards for both schema and instance data.
- .github: issue templates for creating 5 types of issues
- .vscode: settings for the VSCode IDE
- archive (
DiagramLayoutExample_v15July2020\, PROF-AP-CIM_v15July2020\
) - rdf-improved: improved representation of CIM instance data (Trig and JSON-LD)
- rdfs-improved: improved representation of CIM ontologies (Turtle and JSON-LD)
- shacl-improved: improvement proposals for CIM SHACL validation shapes
- schemas: draft LinkML schemas (for now has only 6)
- source: OCL, RDFS2020, RDFSEd2Beta, SHACL files for the CGMES and CGMES-NC ontologies
- voc: currently empty
- .gitignore: files that will not be committed to github
- LICENSE: this work is licensed under the Apache 2.0 License
- README.md: this file
- issue-gh-list.png: shows using the
gh
CLI utility to list issues - issue-labels.png: shows issue labels defined for this repository
- Makefile:
make issues
makes the issue lists below (see also Issue Tracking) - issues-all.tsv: all issues in github
- issues-README.txt: issues described in README files
- issues-missing.tsv: issues missing from README files
- CGMES 3.0 Profile: Applying the latest CIM profiles in compliance with CGMES standards.
- NC CGMES Extensions: Extending the existing Network Code CGMES to support specific use cases.
- LinkML: LinkML project to produce CGMES 3.0 and Network Code (NC) extensions.
- Example model: Example of all relevant CIM modelling concept.
The project will show example of the generation of RDFS-plus based vocabulary and Shapes Constraints Language (SHACL) from LinkML with the profile structure according to W3C DX-PROF:.
The CIM profiles should be possible to be described with all RDF Syntaxed. However, the following RDF Syntaxes are planed to be generated and tested:
- JSON-LD 1.1 Specification The most advance syntax. Support multiple graphs. Primary for machine-understandable. There could be some feature that would only be supported in JSON-LD and most like will the other syntax be generated based on an JSON-LD instance.
- Turtle 1.1 Specification: Focused on human readability.
- RDF/XML 1.1 Specification: Focused to provide backwards support. For application that support todays profile syntax to have a smaller upgrading path.
The folder rdfs-improved discusses a number of needed improvements to CIM/CGMES ontologies
- It implements many of them through SPARQL Updates
- It also includes Turtle and JSON-LD renditions of the latest CGMES and CGMES-NC ontologies
Today CIM instance data is exchanged in CIM RDF (a variand of RDF XML) specified according to IEC 61970-553 (IEC 61970-600-1:2021 do deviate from this standard on some items). We would like to look into how we can create a converter from CIM XML to JSON-LD and reversal. There should be no loss going from CIM XML to JSON-LD, but it is assumed that there might be losses going the other way.
- The focus is on how to use JSON-LD for exchanging structure data, however it could also be looked at how to do scheduling and streaming data. The goal would be to have one syntax that can handle all relevant exchange types.
- The current focus is Trig (Turtle with graphs) and JSON-LD 1.1, but in general is should be possible to use any of the other RDF syntax as long as the required features (including named graphs) are supported in the given RDF syntax.
- We expect to leverage Trig and JSON-LD features to be able to exchange difference models.
The folder rdf-improved discusses a number of needed improvements to CIM/CGMES instance data
- It implements conversion from the custom CIM XML format to standard Trig, and thereon JSON-LD
- It includes Trig and JSON-LD examples in the "test" subfolder
We practice meticulous issue management to post and discuss all relevant issues.
- Whenever a new topic spawns off from an existing issue, we raise a new related issue to better organize the work:
- We use labels for a better overview:
For easier Github and issue management from the command line, you can try this tool:
- Install the Github CLI from https://cli.github.com/
- Do the
gh auth login
workflow - Ensure you have
-R
in your less settings so that ANSI-color escape sequences are interpreted in your shell. Eg in my case:
set LESS=efij3wMqsx2R
- Try
gh issue ls -s all -L 1000
:
In most cases, we describe issues in relevant README files to discuss deeper conceptual questions, and to record decisions. We periodically compare issues in READMEs against issues in Github:
gh issue ls -s all -L 1000 --json url,title -q 'sort_by(.url) | .[] | [.url, .title] | @tsv' > issues-all.tsv
perl -ne 'print "$1\n" while m{(https://github.com/Sveino/Inst4CIM-KG/issues/\d+)}g' README.md */README.md | sort | uniq > issues-README.txt
cut -f1 issues-all.tsv | comm -3 - issues-README.txt | join - issues-all.tsv > issues-missing.tsv
Running this on 7-Dec-2024 showed these counts:
wc -l issues-*
72 issues-README.txt
119 issues-all.tsv
47 issues-missing.tsv
So now I need to go through 65 issues to put them in READMEs and summarize or describe them in more detail.
Note: make issues
runs all these commands.
labels/pm (or gh issue ls --label pm -s all
) lists issues that pertain to Project Management:
- #48 review issue labels (tags): considerations for label evolution
- #54 migrate Vladimir's issues from CIM4NoUtility: this is an older project, and we need to ensure all relevant issues have been reflected here
- #79 approve all closed issues: periodically go through closed issues assigned to Sveino that have no label
approved
, and approve the resolution - #142 describe all issues in READMEs
DONE:
- Primary Sources for Instance Data:
Contributions to this project are welcome. If you'd like to help with documentation, standards alignment, or the creation of examples, please follow the contribution guidelines.
This project is licensed under the Apache-2.0 license. Please see the LICENSE file for more information.