Skip to main content

Compliance

CIMXML implements the IEC 61970-552 CIMXML serialization on top of standard RDF/XML, supporting the model-description constructs (full and difference models), CIM-specific UUID and namespace handling, and the three CIM schema versions in current use. This page lists the supported IEC 61970-552 features, the recognized CIM versions, and the standards background.

Supported IEC 61970-552 features​

  • Processing instruction: <?iec61970-552 version="x.x"?>
  • FullModel and DifferenceModel types
  • Model header metadata — Model.profile, Model.Supersedes, Model.DependentOn
  • rdf:parseType="Statements" for difference-model containers
  • UUID normalization (underscore-prefix handling, canonical urn:uuid: IRIs)
  • CIM namespace version detection

CIM versions​

The CIM version is determined by the cim namespace URI declared in the document. CIMXML does not hard-code a fixed set of recognized namespaces — parsing accepts any cim namespace URI, and the namespace is mapped to a CimProfile implementation via CimNamespaceFactoryRegistry (de.soptim.opencgmes.cimxml.graph), a static registry keyed by namespace URI. Three namespaces are registered as built-ins:

VersionNamespace URICGMESCimProfile implementation
CIM 16http://iec.ch/TC57/2013/CIM-schema-cim16#CGMES 2.4.15CimProfile16
CIM 17http://iec.ch/TC57/CIM100#CGMES 3.0CimProfile17
CIM 18https://cim.ucaiug.io/ns#(no matching CGMES yet)CimProfile18

Call CimNamespaceFactoryRegistry.registerProfileFactory(namespace, factory) to map any other namespace URI to a custom CimProfile implementation, e.g. for a vendor extension namespace or a future CIM version. Parsing a document whose cim namespace has no registered factory still succeeds — the parser only logs a warning — but resolving that namespace's profile ontology via CimProfile.wrap throws IllegalArgumentException until a factory is registered for it.

Registering a custom namespace without writing Java

CimProfile16/CimProfile17/CimProfile18 are parsing shapes, not namespace-specific code — they work on whatever cim namespace the graph declares. If your vendor namespace's ontology follows the same conventions (cims:isFixed vs. owl:versionIRI/dcat:keyword), you don't need a custom CimProfile implementation at all: CIMVocabCheck's cimNamespaces config setting maps a namespace URI straight to one of these built-in shapes from opencgmes.jsonc. See Configuration → cimNamespaces.

New to CIM and CGMES?

For background on the Common Information Model, CGMES profiles, and how the versions relate, see the CGMES background reference.

Standards conformance and testing​

CIMXML is based on the Apache Jena RDF/XML parser (ParserRRX_StAX_SR) and extends it with the IEC 61970-552 constructs above, so standard RDF/XML documents parse correctly alongside CIM-specific ones. The test suite includes W3C RDF/XML conformance tests, CIM-specific parsing tests, profile version-detection tests, and difference-model application tests.

W3C RDF/XML test suite acknowledgment​

The module includes example files from the W3C RDF/XML Syntax Specification (W3C Recommendation, 10 February 2004), used under the W3C Software License exclusively to test the parser's conformance with standard RDF/XML syntax. Copyright © 2004 World Wide Web Consortium. These tests ensure that the IEC 61970-552 extensions remain compatible with standard RDF/XML processing.