dotTC57 is an open-source .NET library that provides a complete, strongly-typed object model for the IEC 61970/61968 Common Information Model (CIM) standard. It makes working with the CIM standard as natural as working with any other .NET API—no XML hell, no RDFS wrangling, just clean C# objects.
The CIM standard is the foundation for electrical utility data interoperability, covering everything from power system equipment to network topology to operational planning. Everything from the generators to the meter on your wall is in the CIM, as well as every class needed to define every bit of metadata for the whole electrical grid. But working directly with CIM's native RDF/XML format is painful and error-prone.
dotTC57 solves this problem by providing a native .NET object model that's generated directly from the official CIM UML definition, ensuring 100% compliance while giving developers the productivity of strongly-typed C# code.
CIM Classes Modeled
Code Generated from UML classes
Permissive MIT License
The CIM standard is essential for electrical utility data interoperability, but it's notoriously difficult to work with. The canonical representation is RDF/XML, which is verbose, error-prone, hostile and just painful for modern development workflows.
I built dotTC57 to solve this problem: give .NET developers a native object model that feels natural, is strongly-typed (catching errors at compile time), and integrates seamlessly with Entity Framework, ASP.NET Core, and other .NET tools.
Here's how easy it is to work with CIM objects using dotTC57:
<cim:Substation rdf:ID="_12345">
<cim:IdentifiedObject.mRID>abc-123</cim:IdentifiedObject.mRID>
<cim:IdentifiedObject.name>Main St Sub</cim:IdentifiedObject.name>
<cim:Location rdf:resource="#loc_456"/>
</cim:Substation>
<!-- Manual parsing, namespace handling, error-prone -->
using dotTC57.CIM;
// Create a substation
var substation = new Substation
{
mRID = Guid.NewGuid().ToString(),
name = "Main Street Substation",
};
// Add equipment
var breaker = new Breaker
{
mRID = Guid.NewGuid().ToString(),
name = "CB-101",
EquipmentContainer = substation
};
// Serialize to RDF/XML for interop
var rdfXml = CIMSerializer.Serialize(substation);
All classes are generated from the official CIM standard, ensuring 100% compliance. Updates to new CIM versions will be available with new versions of the Nuget package.
Catch CIM modeling errors at compile time, not runtime. IntelliSense guides you through available properties and relationships.
Future release will provide support for RDF/XML, JSON-LD, and Turtle formats. Seamlessly convert between in-memory objects and interoperable formats.
Use CIM objects directly with Entity Framework Core for persistence. Map CIM classes to relational databases with full LINQ support.
Query CIM models using familiar LINQ syntax. Filter, project, and transform CIM data with the full power of Language Integrated Query.
Supports multiple CIM versions (CIM14, CIM15, CIM16, CIM17, CIM100). Work with legacy systems and modern implementations.
dotTC57 can be used by utility companies, engineering firms, and software vendors building applications for the electrical utility industry. It's maintained as an open source project under a permissive MIT license, making it easy to integrate into both commercial and internal tools.
Build internal tools for asset management, network analysis, and operational planning using standardized CIM data models.
Develop power system design and analysis applications with native CIM support for client interoperability.
Integrate CIM compliance into commercial products for the electrical utility market without reinventing the wheel.
The library is actively maintained and has been used by me for years. It has proven its reliability and value in real-world utility environments.
dotTC57 is just one example of how I approach complex technical challenges: understand the domain deeply, build tools that make developers productive, and share knowledge with the community.
This library demonstrates my ability to work with complex standards, generate production-quality code, and contribute to the open-source ecosystem; skills that directly translate to enterprise software development.