UCAIug open source library
The UCAIug’s community repository of publicly available CIMTool builders
CIM Model Management

xsd-part100-ed2.xsl

This builder currently ships with CIMTool.

Builder Description

The xsd-part100-ed2.xsl builder is similar to the xsd.xsl builder in that it generates an XSD schema that is compliant with the IEC 62361-100:2016 “CIM Profiles to XML Schema Mapping” published standard. The IEC 62361-100:2016 standard describes a mapping from CIM profiles to W3C XML Schemas, intended to facilitate the exchange of information in the form of XML documents whose semantics are defined by the IEC CIM and whose syntax is defined by a W3C XML schema.

The XSD schemas generated by this builder are uniquely compatible with the new IEC 61968-100:2022 “Implementation Profiles” Ed 2.0 published standard. This latest publication, however, is no longer backwards compatible and thus the need for this builder in generating new XSD schemas compatible with IEC 61968-100:2022.

Again, refer to the xsd.xsl builder for generating XSD schemas compatible with the older IEC 61968-100:2013 “Implementation Profiles” Ed 1.0.

The following is an extract of the XSD schema generated from the GetUsagePointGroups profile in the CIMTool-Test-Project:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:m="http://ucaiug.org/2022/GetUsagePointGroups#"
           xmlns:part100="http://iec.ch/TC57/2021/schema/message"
           xmlns:sawsdl="http://www.w3.org/ns/sawsdl"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://ucaiug.org/2022/GetUsagePointGroups#"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
   ...
   <xs:annotation/>
   <xs:import namespace="http://iec.ch/TC57/2021/schema/message"
              schemaLocation="AbstractPayloadType.xsd"/>
   <xs:element name="GetUsagePointGroups"
               type="m:GetUsagePointGroups"
               substitutionGroup="part100:AbstractPayload"/>
   <xs:complexType name="GetUsagePointGroups">
      <xs:complexContent>
         <xs:extension base="part100:AbstractPayloadType">
            <xs:sequence>
               <xs:element name="DemandResponseProgram"
                           type="m:DemandResponseProgram"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="UsagePoint"
                           type="m:UsagePoint"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="UsagePointGroup"
                           type="m:UsagePointGroup"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DemandResponseProgram"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#DemandResponseProgram">
      <xs:annotation>
         <xs:documentation>Demand response program.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="mRID"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.mRID">
            <xs:annotation>
               <xs:documentation>Master resource identifier issued by a model authority. The mRID is unique within an exchange context. Global uniqueness is easily achieved by using a UUID, as specified in RFC 4122, for the mRID. The use of UUID is strongly recommended.</xs:documentation>
               <xs:documentation>For CIMXML data files in RDF syntax conforming to IEC 61970-552, the mRID is mapped to rdf:ID or rdf:about attributes that identify CIM object elements.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="type"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#DemandResponseProgram.type">
            <xs:annotation>
               <xs:documentation>Type of demand response program; examples are CPP (critical-peak pricing), RTP (real-time pricing), DLC (direct load control), DBP (demand bidding program), BIP (base interruptible program). Note that possible types change a lot and it would be impossible to enumerate them all.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Names"
                     minOccurs="0"
                     maxOccurs="unbounded"
                     type="m:Name"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.Names">
            <xs:annotation>
               <xs:documentation>All names of this identified object.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   ...
</xs:schema>

XSLT Version

This builder is XSLT 1.0 compliant.

Release History

CIMTool Release Release Date Changes
2.3.0 08-Jun-2026 Compound attributes are now supported, and properties with the <<XSDattribute>> stereotype are generated as XSD attributes and classes with the <<XSDattributeGroup>> stereotype as XSD attribute groups (#247). Enumerations with the <<CodeList>> stereotype now emit their codes in place of their names (#250).
1.12.0 21-Feb-2024 Root elements and their complex types are now named after the profile class rather than the underlying CIM class (#77).
1.10.0 26-Aug-2022 Added to CIMTool (#7).

Author

Todd Viegut [@tviegut] on behalf of UCAIug.

Submission Date

20-Jun-2022

Builder NTE Configuration

Given this builder ships with CIMTool the below screenshot highlights the existing NTE (Name/Type/Extension) settings for the builder. We strongly recommend that you do not import customized versions of this shipped builder over the original in your local CIMTool installation. Doing so will force regeneration of any existing builder-generated artifacts for projects in your workspace that have this builder enabled.

The recommended best practice is to rename the builder file (from xsd-part100-ed2.xsl to custom-xsd-part100-ed2.xsl for example) before importing. On import this will be interpreted as a new builder and you will be allowed to enter values in the Type and Extension fields.

NOTE: </br>CIMTool requires that file extensions be unique and will prevent you from entering an extension already assigned to a builder. This is because an artifact’s name is derived by concatenating the base name of the CIMTool .owl profile with the file extension assigned to the builder. Therefore, a unique file extension must be assigned to each builder when imported. The file extension for a builder can be modified later from within the “Maintain XSLT Transform Builders” screen.

image

License

This builder is released under the Apache 2.0 license and was developed under sponsorship of the UCAIug.