Set Operations

latest update 2023-04-12  


The data model of ISO 15926-2 contains a few entity types related to set operations:

These will be explained with a few use cases.
The role of the entity type EnumeratedSetOfClass is important here, because its members are the 'set of class' that is referred to in these three entity types.

A ClassOfClass is a Class that has instances of Class as members. That membership is not enumerated, i.e. it is not explicitly defined, and covers instances of Class in the past, present, and future. EnumeratedSetOfClass is a specialization of ClassOfClass and an instance of it does have an enumerated set of classes as its members. That membership is expressed by classifying those Class instances with that instance of EnumeratedSetOfClass ( further referred to as 'ESOC').


The ISO 15926-2 entity type DifferenceOfSetOfClass plays a role in defining the difference between two Classes, for example to Specifications. It can be represented with a Venn Diagram:

As is shown below, the contents of a specification can be represented by a collection of templates (= Classes).
When you want to model this, use the template DifferenceOf2Classes, where rev. 1 and rev. 2 are that two revisions of the specification you want to diff. As such, that will not determine that difference, you'll have to write some code.

But perhaps you would be better served when you only get the changed data in their rev. 2 state. Then use the template RelativeComplementOf2Classes, that results in:


The ISO 15926-2 entity type IntersectionOfSetOfClass plays a role in defining a Class.
Here is a collection of use cases.

A Template is a (subClassOf) ClassOfInformationRepresentation, and, being a class, it can be intersected as well. This is detailed in, for example the template DefinitionOfClassOfIndividualWithInfoSet:
  • dm:EnumeratedSetOfClass (‘ESOC’) is a subClassOf dm:ClassOfClass (so a Class that has Classes as members).
  • A Template, being a Class, can be made a member of an ESOC, thus being added to the enumeration (a Class, as such, does not have an enumerated set of members, all members in past, presence, and future are constituents of the Class).
  • When an instance of ESOC has a set of templates as members then it is of interest what the combined information content is, e.g. the contents of a specification.
  • We use the relationship dm:IntersectionOfSetOfClass, that indicates that the members of the ESOC are to be intersected to result in a ClassOfExpressInformationRepresentation.


This entity type causes all members of the unionized classes to become members of one common class:

The unionized classes remain what they are, we just added a new class.
This can be used when we want to jointly address the members of both classes, like 'book' + 'movie' unionized to 'media'.

Useful examples from the engineering practice don' t come to mind, but they may be there.
The RDL class INSTRUMENTATION ITEM is in fact a union of all instrumentation hardware classes, but we don't know all relevant classes, so there are not enough inputs to declare that a union.
But all classes that are in that union are subClassOf that union, so DIGITAL INDICATOR is a subClassOf INSTRUMENTATION ITEM.