CIM-Graph Library Structure¶
CIMantic Graphs uses the layered architecture shown below:

Database Layer¶
CIMantic Graphs currently supports the following databases and interfaces:
Blazegraph Database
GraphDB Database
Neo4J Database
MySQL Database (in progress)
GridAPPS-D Platform
AVEVA PI Asset Framework (in progress)
RDFLib File Parser
XML Flat Files
JSON-LD Flat Files (in progress)
CSV Flat Files (in progress)
The library uses a unified syntax for all upper-level calls and routines. The databases can be swapped interchangeably by changing the environment variables specified during application startup, with no other changes to any other application syntax or methods
Data Profile Layer¶
CIMantic Graphs is able to support any standard or custom CIM profile. The CIM profile needs to be exported as an XSD data profile / schema. CIMantic Graphs is then able to ingest the data profile and convert all UML classes and attributes to python dataclasses, which power all of the routines and unified API syntax
API Layer¶
CIMantic Graphs offers a breakthrough in terms of ease-of-use through a unified API with two core methods.
Access to labeled property graph objects:
network.graph[cim.ClassName]: This offers access to a catalog of CIM object instances stored in memory and sorted by class type and mRID forming the named property graph.
Universal database query method:
network.get_all_edges(cim.ClassName): This is a universal query method that gets all attributes and all objects one edge away from instances of the specified class. This method works for all CIM classes, CIM profiles, serialization formats, and supported databases.
Knowledge Graph Layer¶
CIMantic Graphs offers three core knowledge graph classes for handing various kinds of power system models:
BusBranchModel: Transmission bus-branch models commonly used for planning and power flow studiesNodeBreakerModel: Transmission node-breaker models commonly used inside energy management systemsFeederModel: Distribution feeder models with support for single-phase unbalanced networks used in North America.
Centralized or distributed representations of the power system network model can be used. Centralized models use a single labeled property graph for the network. Distributed models use nested DistributedArea class instances to represent the grouping of equipment inside a Substation, VoltageLevel, Bay, Feeder, and switch-delimited topological area inside a combined T+D model.
Application Layer¶
T+D applications are able to access all of the power system objects through knowledge graph, without any need to connect to the database or perform any custom i/o operations.