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
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.
feedbackcommand
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:
productsetuporderequipmentinstallation_locationcrewshiftother
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,
alarmwarning
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.
lowhighabsolute
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.
minmaxaim
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.
minmaxaim
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/minvs.min^-1vs.min-1Force - Newton-meters:
Nmvs.N·mvs.N*mArea - Square meters:
m^2vs.m²vs.m2Flow - Gallons per minute:
gpmvs.gal/minvs.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
kfor kilo,Mfor mega.BaseSymbol the base symbol (letter) of the unit, for example
mfor meter,Pafor Pascal.Exponent the exponent of unit, for example
2for squared,-1for divided by,-2for divided by squared.Composite units (for example speed = length divided by time) are combined by asterisk
*.The degree
°symbol is replaced bydegC.
Here are examples on how to format some well known units of measurements:
Pressure
Newton per square millimeter:
N*mm-2Kilo pascal:
kPa
Speed
Kilometer per hour:
km*h-1inches 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 locatedtosDisplayReference: Provides the display name of the full path provided in thetosTagcustomerDisplayName: the display name of the full path provided by the customerid: the internal id of the location in the Data Catalogue
in addition the metadata model provide two location attributes:
locationof the source : the location provided by for the source in the configurationfullLocation: 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.
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,
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": {