Metadata model

Mar 25, 2024 | 7 min read

The metadata model of the SMS Data Catalogue is designed to provide the right contextual information for data scientist, analysts and app developers alike. In general, we differentiate between Business metadata and Technical metadata. Both are described in the following sub-chapters.

An example of such

Listing 1 DataElementMetaData.json - Example metadata as JSON
  1{
  2  "id": "42",
  3  "name": "ActCastSpeed",
  4  "aliasName": "string",
  5  "descriptions": [
  6    {
  7      "localeCode": "en",
  8      "text": "Speed of the uncut strand. This signal defines the main speed of the plant."
  9    }
 10  ],
 11  "technicalMetadata": {
 12    "format": "SCALAR",
 13    "dataType": "int",
 14    "isNullable": true,
 15    "isPrimaryKey": false,
 16    "isForeignKey": false,
 17    "aggregation": {
 18      "descriptive": "minimum",
 19      "window": 0,
 20      "delay": 0,
 21      "dimension": "string"
 22    },
 23    "sampleInterval": 0
 24  },
 25  "dimensions": [
 26    "string"
 27  ],
 28  "unit": {
 29    "symbol": "m*min-1",
 30    "displayName": "meter per minute",
 31    "physicalQuantities": [
 32      "velocity"
 33    ],
 34    "id": 19
 35  },
 36  "location": {
 37    "tosTag": "CAS01.CVL01.CPE01.LSM01",
 38    "displayName": "Ladle shroud manipulator 1",
 39    "tosDisplayReference": "Casting Plant 1 - Thin slab casting plant VLB 1 - Casting platform equipment 1 - Ladle shroud manipulator 1",
 40    "customerDisplayName": "string",
 41    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
 42  },
 43  "customData": "string",
 44  "sourceItemId": "string",
 45  "valueRange": {
 46    "min": {
 47      "value": 0,
 48      "isOpen": false
 49    },
 50    "max": {
 51      "value": 0,
 52      "isOpen": false
 53    }
 54  },
 55  "range": {
 56    "min": {
 57      "value": 0,
 58      "isOpen": false
 59    },
 60    "max": {
 61      "value": 0,
 62      "isOpen": false
 63    }
 64  },
 65  "installationLocation": "Entry",
 66  "informationKind": "Calculation",
 67  "informationKindProperties": {
 68    "informationKind": "Calculation",
 69    "revision": 0
 70  },
 71  "datasource": {
 72    "id": 0,
 73    "name": "string",
 74    "technology": "SQL Database",
 75    "location": {
 76      "tosTag": "string",
 77    "displayName": "string",
 78    "tosDisplayReference": "string",
 79    "customerDisplayName": "string",
 80    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
 81    },
 82    "connectionDetails": {
 83      "connectionType": "SqlConnection",
 84      "connection": {
 85        "hostname": "string",
 86        "port": 0
 87      },
 88      "credentials": {},
 89      "dbType": "PostgreSQL",
 90      "instanceId": "string",
 91      "databaseName": "string",
 92      "schemaName": "string"
 93    },
 94    "syncDirection": 3
 95  },
 96  "fullLocation": {
 97    "tosTag": "string",
 98    "displayName": "string",
 99    "tosDisplayReference": "string",
100    "customerDisplayName": "string"
101  }
102}

Business metadata

Business metadata gives the domain/business related context in order to interpret the data.

Description

 5  "aliasName": "string",
 6  "descriptions": [
 7    {
 8      "localeCode": "en",
 9      "text": "Speed of the uncut strand. This signal defines the main speed of the plant."
10    }
11  ],
12  "technicalMetadata": {
13    "format": "SCALAR",

This attribute shall provide a textual/human-readable description of the signal. When providing descriptions, make sure to avoid duplication of information with other metadata attributes. The following 2 examples show this on an example:

Good example

  • ActCastSpeed

    Actual speed of the uncut strand. This signal defines the main speed of the plant.

Bad example

  • ActCastSpeed

    Actual casting speed

The description attributes provides a list, that allows the storing and fetching of multilanguage description. Adding multilanguage description is achieved by adding in the list of description a JSON string including description and locale attributes. The locale should match the language locale of the description and from the list of Languages in configured.

Information Kind

65  "installationLocation": "Entry",
66  "informationKind": "Calculation",
67  "informationKindProperties": {
68    "informationKind": "Calculation",
69    "revision": 0
70  },
71  "datasource": {

The Information Kind is a special set of metadata that categorizes the data by the nature of the data.

Following different Information Kinds are available:

Based on these Information Kinds additional metadata may be specified.

Information kind properties

This section documents the individual properties depending on the Information Kind.

Calculation

Indicates that the value is a result of a calculation/model. Consumers of such data need to be aware, that the underlying formula or model may change in the future and thus the expected values.

1{
2  "informationKind": "Calculation",
3  "informationKindProperties": {
4    "revision": "1.2.3"
5  }
6}
Attributes
revision

The version or revision of the calculation. This is required to react on changes in calculated values.

Control

Indicates that the signal is used for controlling.

1{
2  "informationKind": "Control",
3  "informationKindProperties": {
4    "Kind": "feedback"
5  }
6}
Attributes
Kind

The Command is used to tell the low-level equipment what to do. The Feedback is used by the low-level equipment to react on a send Command.

  • feedback

  • command

Counter

Indicates that the signal is counting something. This could be no of produces products, working hours, etc.

1{
2  "informationKind": "Counter",
3  "informationKindProperties": {
4    "entityType": "Number of warning"
5  }
6}
Attributes
entityType

What is being counted?, for example:

  • Number of warning

  • Working hours

Enum

Indicates that this signal may have only very specific values with special meaning.

 1{
 2  "informationKind": "Enum",
 3  "informationKindProperties": {
 4    "mappings": [
 5      {
 6        "value": "1",
 7        "shortName": "lose side",
 8        "description": "Top side of the slab"
 9      },
10      {
11        "value": "2",
12        "shortName": "fixed side",
13        "description": "Bottom side of the slab"
14      },
15      {
16        "value": "3",
17        "shortName": "left side",
18        "description": "Right narrow side of the slab"
19      },
20      {
21        "value": "4",
22        "shortName": "right side",
23        "description": "Right narrow side of the slab"
24      }
25    ]
26  }
27}
Attributes
Value

A list of available values and their meaning

shortName

Short name of the value (one word).

description

An extensive descriptions of the value.

Identifier

Indicates that this signal identifies something.

1{
2  "informationKind": "Identifier",
3  "informationKindProperties": {
4    "entityKind": "crew",
5    "isUnique": true
6  }
7}
Attributes
entityKind

The kind of entity that is identified:

  • product

  • setup

  • order

  • equipment

  • installation_location

  • crew

  • shift

  • other

isUnique

Bool, if true, each value of this identifier exists only once! If not there might be multiple with the same name

Limit

Indicates that this signal acts as a limit for another signal.

1{
2  "informationKind": "Limit",
3  "informationKindProperties": {
4    "severity": "warning",
5    "kind": "high",
6    "isOpen": true
7  }
8}
Attributes
severity

The severity of threshold,

  • alarm

  • warning

kind

Defines whether this limit (or threshold) represents the lower or upper boundary to trigger an alarm or warning.
When the threshold is a upper and lower boundary for a absolute value please select absolute.

  • low

  • high

  • absolute

isOpen

Defines if the threshold is open. A open threshold is similar to an open interval. It means that the value is not part of the accepted range. The values have to be “greater-than” (gt) or “less-then” (lt) compared to the defined value: x < value or x >  value. For closed Thresholds the values can be greater-than-or-equal-to (ge) or less-than-or-equal-to (le): x <= value or x >= value.

Measurement

Indicates that this signals is measured (directly or indirectly) by an actual physical sensor.

1{
2  "informationKind": "Measurement",
3  "informationKindProperties": {
4    "sensorType": "Speed sensor"
5  }
6}
Attributes
sensorType

The unique type of the sensor

Planned

Indicates that this data represents a planned state. They are typically found in order data.

1{
2  "informationKind": "Planned",
3  "informationKindProperties": {
4    "Kind": "aim",
5    "actualValueId": "A42"
6  }
7}
Attributes
kind

Defines the type of the target/planned value.

  • min

  • max

  • aim

actualValueId

The actual value corresponding to the target/planned value.

Target

Indicates that value is a target that shall be achieved. Such a target could be a set-point for a closed loop controller, an aim chemistry, …

1{
2  "informationKind": "Target",
3  "informationKindProperties": {
4    "Kind": "aim",
5    "actualValueId": "BD154"
6  }
7}
Attributes
kind

Defines the type of the target/planned value.

  • min

  • max

  • aim

actualValueId

The actual value corresponding to the target/planned value.

Timestamp

Indicates that this data represents a point in time.

1{
2  "informationKind": "Timestamp",
3  "informationKindProperties": {
4    "timezone": "UTC +00:00"
5  }
6}
Attributes
timezone

The timezone of the timestamp as UTC offset.

Constant

Indicates that this signal contains constants that are used in the calculation of mathematical models.

1{
2  "informationKind": "Constant",
3  "informationKindProperties": {
4  }
5}

FreeText

Indicates that this signal contains free text information written by the users such as comments, warning messages, etc.

1{
2  "informationKind": "FreeText",
3  "informationKindProperties": {
4  }
5}

Other

Refers to the signals which cannot be categorized under any of the information kind introduce above.

1{
2  "informationKind": "Other",
3  "informationKindProperties": {
4  }
5}

Unit of measurement

27  ],
28  "unit": {
29    "symbol": "m*min-1",
30    "displayName": "meter per minute",
31    "physicalQuantities": [
32      "velocity"
33    ],
34    "id": 19
35  },
36  "location": {

Specifying a unit of measurement is optional. Some signals do not have a unit they are expressed in.

Formatting of the unit symbol

The formatting and interpretation of unit symbols can be quite different based on your location:

  • Rotation speed - Revolutions per minute: 1/min vs. min^-1 vs. min-1

  • Force - Newton-meters: Nm vs. N·m vs. N*m

  • Area - Square meters: m^2 vs. vs. m2

  • Flow - Gallons per minute: gpm vs. gal/min vs. gal*min-1

The SMS Data Catalogues harmonizes this by introducing a normalized unit format in the data model: {SI-Prefix}{BaseSymbol}{Exponent}.

  • SI-Prefix or metric prefix, for example k for kilo, M for mega.

  • BaseSymbol the base symbol (letter) of the unit, for example m for meter, Pa for Pascal.

  • Exponent the exponent of unit, for example 2 for squared, -1 for divided by, -2 for divided by squared.

  • Composite units (for example speed = length divided by time) are combined by asterisk *.

  • The degree ° symbol is replaced by degC.

Here are examples on how to format some well known units of measurements:

  • Pressure

    • Newton per square millimeter: N*mm-2

    • Kilo pascal: kPa

  • Speed

    • Kilometer per hour: km*h-1

    • inches per minute: in*min-1

  • Temperature

    • Degrees Celsius: degC

  • Torque

    • Newton meter: N*m

Location

45  },
46  "location": {
47    "tosTag": "CAS01.CVL01.CPE01.LSM01",
48    "displayName": "Ladle shroud manipulator 1",
49    "tosDisplayReference": "Casting Plant 1 - Thin slab casting plant VLB 1 - Casting platform equipment 1 - Ladle shroud manipulator 1",
50    "customerDisplayName": "string",
51    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
52  },
53  "customData": "string",

Defines the location of the origin of the signal. For a measurement this is the location of the sensor within the plant hierarchy (for example Segment no. 5 of Caster no. 2). For higher level information such as product data (for example Id of a slab) this might be Caster no. 3.

  • tosTag: Provides the tag/id representing the location and seperated by a dot.

  • displayName: Provides the display name of the equipment where the signal is located

  • tosDisplayReference: Provides the display name of the full path provided in the tosTag

  • customerDisplayName: the display name of the full path provided by the customer

  • id: the internal id of the location in the Data Catalogue

in addition the metadata model provide two location attributes:

  • location of the source : the location provided by for the source in the configuration

  • fullLocation: combines the location of the signal in the plant with the location of the srouce from the configuration

Range

44  "sourceItemId": "string",
45  "valueRange": {
46    "min": {
47      "value": 0,
48      "isOpen": false
49    },
50    "max": {
51      "value": 0,
52      "isOpen": false
53    }
54  },
55  "range": {
56    "min": {
57      "value": 0,
58      "isOpen": false
59    },
60    "max": {
61      "value": 0,
62      "isOpen": false
63    }
64  },
65  "installationLocation": "Entry",

The range represents the plausible value range a certain signal has. It is not the absolute value range.

Table 1 shows the difference between the plausibility range and value range. We can see that the value range defines the possible values obtained by a physical sensor - type K thermocouple. The plausibility range defines the range in which the values are expected to be. In this example of a cooling water temperature a value below +0°C is not plausible, as the water would freeze. On the other side a value above +100°C is also not plausible, as this would result in vapor under atmospheric pressure. In reality the plausible range may even be narrowed down further (for example +20°C to +70°C for mold cooling water), depending on the type of cooling water measurement.

Table 1 Comparison between value and plausibility range for a cooling water measurement done with a type K Termocouple

Value Range

Plausible Range

Defines the range of the underlying measurement range of the physical sensor.

Defines the range in which the values are to be expected during operation of the machine.

Example: –200°C to +1250°C

Example: +0°C to +100°C

The range as a isOpen attribute for both the min and max value. It refers to the resulting interval to be open or closed. Table 2 explains this,

Table 2 Explanation of “isOpen” flag.

math. intervall

intervall

min value

min isOpen

max value

max isOpen

]0,1[ or (0,1)

0 < x < 1

0

True

1

True

[0,1[ or [0,1)

0 ≤ x < 1

0

False

1

True

]0,1] or (0,1]

0 < x ≤ 1

0

True

1

False

[0,1]

0 ≤ x ≤ 1

0

True

1

True

Technical metadata

10  ],
11  "technicalMetadata": {
12    "format": "SCALAR",
13    "dataType": "int",
14    "isNullable": true,
15    "isPrimaryKey": false,
16    "isForeignKey": false,
17    "aggregation": {
18      "descriptive": "minimum",
19      "window": 0,
20      "delay": 0,
21      "dimension": "string"
22    },
23    "sampleInterval": 0
24  },
25  "dimensions": [

The technical metadata describes the technical details of the data. This data describe how the data is structured from an IT perspective. It is defined by the used technology and thus not editable and only exposed for reference and better understanding.

Some selected attributes are only filled based on the given format.

Format

The format attribute defines the structure of the data. Possible values are:

  • SCALAR - Represents a individual value (column of a table)

  • SCALAR_STRUCT - Represents a collection of scalar (table)

  • DATA_1D - Can be a time series, a measurement attached to a position or any other value attached to a dimension.

  • DATA_2D - Can be a flatness measurement, thickness profile or any other measurement attached to two dimensions.

  • EVENT_DATA_2D - A collection of scalars attached to two dimensions.

  • BLOB - An unstructured binary representation of data, for example images.

SCALAR attributes

The example below highlights the attributes that can only be filled if the format is SCALAR.

10  ],
11  "technicalMetadata": {
12    "format": "SCALAR",
13    "dataType": "int",
14    "isNullable": true,
15    "isPrimaryKey": false,
16    "isForeignKey": false,
17    "aggregation": {
18      "descriptive": "minimum",
19      "window": 0,
20      "delay": 0,
21      "dimension": "string"
22    },
23    "sampleInterval": 0
24  },
25  "dimensions": [

Datasource

The Datasource attributes provides the information about the data source of the signal. It provide along with the ID, name, and type of the datasource its location information and connection details.

10  },
11  "datasource": {
12    "id": 0,
13    "name": "string",
14    "technology": "SQL Database",
15    "location": {
16      "tosTag": "string",
17    "displayName": "string",
18    "tosDisplayReference": "string",
19    "customerDisplayName": "string",
20    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
21    },
22    "connectionDetails": {
23      "connectionType": "SqlConnection",
24      "connection": {
25        "hostname": "string",
26        "port": 0
27      },
28      "credentials": {},
29      "dbType": "PostgreSQL",
30      "instanceId": "string",
31      "databaseName": "string",
32      "schemaName": "string"
33    },
34    "syncDirection": 3
35  },
36  "fullLocation": {