CTS – CIM Topology Store Implementation of an RDF-based versioning system for the CIM using the topology difference model Mathias Uslar Arnhem, Netherlands xx.06.2007
Agenda Adressed problem Use Cases Used technologies Solving the problem Implementation Results Further work
Adressed problem Data must be exchanged between grid providers Narrowly meshed grids New challenges for utilities Power grids are constantly evolving Changes have to be tracked and made persistent Serializing the grid using XMl leads to bloat High amounts of data Difficult to be validated
Use Cases We have identified four main use cases for our system Regular exchange of full topology models Exchange of partial topology models Recombining partial topologies to create a full one Tracking and versioning topology histories
Used technologies – Semantic Web XML eXtensible Markup Language RDF Resource Description Framework OWL Web Ontology Language SPARQL SPARQL Protocol And RDF Query Language Query language for RDF Semantic Web Stack (Quelle: W3C)
Technologies – Common Information Model Focus: Representing topology data CIM is serialized in RDF Markup of the PsyCor-SmallModel (Source: CIMPhony by Dr. Alan McMorran, University of Strathclyde) <?xml version="1.0" encoding="UTF8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22rdfsyntaxns#" xmlns:cim="http://iec.ch/TC57/2000/CIMschemacimu09b#"> <cim:SubControlArea rdf:ID="_1"> <cim:Naming.name>HANGER18</cim:Naming.name> <cim:SubControlArea.HostControlArea rdf:resource="#_14"/> </cim:SubControlArea> <cim:Substation rdf:ID="_2"> <cim:Naming.name>AIRPORT</cim:Naming.name> <cim:Substation.MemberOf_SubControlArea rdf:resource="#_1"/> <cim:Substation.LoadArea rdf:resource="#_15"/> </cim:Substation> <cim:VoltageLevel rdf:ID="_3"> <cim:VoltageLevel.highVoltageLimit>350</cim:VoltageLevel.highVoltageLimit> <cim:VoltageLevel.lowVoltageLimit>340</cim:VoltageLevel.lowVoltageLimit> <cim:Naming.name>VL_AIRP_345</cim:Naming.name> <cim:VoltageLevel.MemberOf_Substation rdf:resource="#_2"/> . . . .
Solving the problem – the difference model Evaluating the existing format according to deVos Non-conform to the RDF-standard Uses syntax with insertion and deletion operations Developed and evaluated two new formats Conforming the RDF-standard Evaluating replacement and insertion and deletion approaches Improved parsing for machines More robust due to pre- and postconditions
Solving the problem – Difference model Example: changing a load <cim:EnergyConsumer rdf:ID="_242C8FDFE7334E9BA603449C87D89903"> <cim:Naming.name>BRADFD</cim:Naming.name> <cim:EnergyConsumer.qfixed>0</cim:EnergyConsumer.qfixed> <cim:EnergyConsumer.conformingLoadFlag>true</cim:EnergyConsumer.conformingLoadFlag> <cim:EnergyConsumer.pfixed>0.2</cim:EnergyConsumer.pfixed> <cim:Equipment.MemberOf_EquipmentContainer rdf:resource="#_95D88A1500A4E7EB95B01E23C2FEF7D"/> <cim:EnergyConsumer.LoadArea rdf:resource="#_BA2173878B0645A7AC8EA57B6249D537"/> </cim:EnergyConsumer> <cim:EnergyConsumer rdf:ID="_242C8FDFE7334E9BA603449C87D89903"> <cim:Naming.name>BRADFD</cim:Naming.name> <cim:EnergyConsumer.qfixed>0</cim:EnergyConsumer.qfixed> <cim:EnergyConsumer.conformingLoadFlag>true</cim:EnergyConsumer.conformingLoadFlag> <cim:EnergyConsumer.pfixed>0.2</cim:EnergyConsumer.pfixed> <cim:Equipment.MemberOf_EquipmentContainer rdf:resource="#_95D88A1500A4E7EB95B01E23C2FEF7D"/> <cim:EnergyConsumer.LoadArea rdf:resource="#_BA2173878B0645A7AC8EA57B6249D537"/> </cim:EnergyConsumer> Differenzformat dahlem <dm:DifferenceModel rdf:about="http://cim.dahlem.eu.org/"> <dm:reverseDifferences> <rdf:Statement> <rdf:subject rdf:resource="http://cim.dahlem.eu.org/#_242C8FDFE7334E9BA603449C87D89903"/> <rdf:predicate rdf:resource="http://iec.ch/TC57/2003/CIM-schema-cim10#EnergyConsumer.pfixed"/> <rdf:object>0.2</rdf:object> </rdf:Statement> </dm:reverseDifferences> <dm:forwardDifferences> <rdf:object>30</rdf:object> </dm:forwardDifferences> </dm:DifferenceModel> Differenzformat nach deVos <dm:DifferenceModel rdf:about="http://cim.dahlem.eu.org/"> <dm:forwardDifferences rdf:parseType="Statements"> <rdf:Description rdf:about="#_242C8FDFE7334E9BA603449C87D89903"> <cim:EnergyConsumer.pfixed>30</cim:EnergyConsumer.pfixed> </rdf:Description> </dm:forwardDifferences> <dm:reverseDifferences rdf:parseType="Statements"> <cim:EnergyConsumer.pfixed>0.2</cim:EnergyConsumer.pfixed> </dm:reverseDifferences> </dm:DifferenceModel> Difference format dahlem2 <rdf:Statement> <rdf:subject rdf:resource="http://cim.dahlem.eu.org/#_242C8FDFE7334E9BA603449C87D89903"/> <rdf:predicate rdf:resource="http://iec.ch/TC57/2003/CIM-schema-cim10#EnergyConsumer.pfixed"/> <rdf:object>30</rdf:object> <dm:replaces> <rdf:object>0.2</rdf:object> </rdf:Statement> </dm:replaces> <cim:EnergyConsumer rdf:ID="_242C8FDFE7334E9BA603449C87D89903"> <cim:Naming.name>BRADFD</cim:Naming.name> <cim:EnergyConsumer.qfixed>0</cim:EnergyConsumer.qfixed> <cim:EnergyConsumer.conformingLoadFlag>true</cim:EnergyConsumer.conformingLoadFlag> <cim:EnergyConsumer.pfixed>30</cim:EnergyConsumer.pfixed> <cim:Equipment.MemberOf_EquipmentContainer rdf:resource="#_95D88A1500A4E7EB95B01E23C2FEF7D"/> <cim:EnergyConsumer.LoadArea rdf:resource="#_BA2173878B0645A7AC8EA57B6249D537"/> </cim:EnergyConsumer>
Solving the problem – regional model According to Britton: Designing Model Exchange Processes with CIM and ’RMA Sets’ Three types of regions: Base region Border region Aggregated region Regional model (Source: Britton, Areva T&D
Solving the problem – Versioning and SPARQL Versioning system Absed on the difference format Implements the regional model SPARQL query system Querying of versioned topologies Supports aggregated regions
Our solution The new formats are more standard-compliant (RDF), more robust than the existing one and incorporated more information There was no known existing solutions for versioning topologies in CIM (end of 2006) There was no known implementation of the regional model for CIM (end of 2006)
Implementation Backend system Web Services Database MySQL Jena Apache Tomcat Apache Axis Database MySQL Jena RDF-Triple-Store for MySQL Java API SPARQL implementation Command line client VMWare for Windows/Linux System overview (Source: Own graphic)
Results Compatibility to other CIM implementations Interop #6 tests have been passed completetely Improved difference formats: More robust RDF-compliant More information Implementation fo a versioning system and the regional model More functionality: Validating against CPSM (2.0, experimental 3.0) Notification (eMail, Jabber)
Further work Improving the client Keeping data solely as RDF GUI for endusers Keeping data solely as RDF Technology breach: versioning data is kept in a relational database Benchmarks RDF-Triple-Stores are too slow nowadays SPARQL has a lot potential for improvements „The next SQL“ Current research: DML & DDL, algebra
Thanks for listening Time for questions