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.