Ontological annotation of data¶
Basic annotation knowledge with OEM¶
Ontological annotation of data means that data is linked to ontological concepts in the metadata.
In SEDOS we use the oemetadata v.1.5.1 (OEM) as metadata standard. For more context about the OEM-keys in oemetadata v.1.5.1, see here.
In energy systems modelling, data is fed into a model via parameters and their associated values. In the following, when we speak about ontological annotation, we, therefore, speak of parameter names, which are linked to an ontological concept for definition.
The linkage of parameter name and ontological concept in OEM has three elements:
- user-defined parameter name
- human-readable ontological concept name
- Internationalized Resource Identifier (IRI)
Below the general section of the oemetadata v1.5.1 is shown, relevant for the ontological annotation of the table content itself.
- The general content of the table is annotated in the
subject
key
{
"name": null,
"title": null,
"id": null,
"description": null,
"language": [
null
],
"subject": [
{
"name": null,
"path": null
}
],
"keywords": [
null
],
"publicationDate": null
}
Link a parameter name to a suitable ontology concept¶
Background know-how¶
Parameters can occur in the column header or as column value when dealing with tabular data.
- A) Parameters in the column headers are annotated in the
isAbout
key. - B) Parameters occurring within a column are annotated in the
valueReference
key.
{
"resources": [
{
"profile": null,
"name": null,
"path": null,
"format": null,
"encoding": null,
"schema": {
"fields": [
{
"name": null,
"description": null,
"type": null,
"unit": null,
"isAbout": [
{
"name": null,
"path": null
}
],
"valueReference": [
{
"value": null,
"name": null,
"path": null
}
]
}
]
}
}
]
}
A) Parameters in the column headers - using isAbout
:
- user-defined parameter name is put in name (OEM-key 15.6.1.1),
- a suitable human-readable ontological concept name is put in name (OEM-key 15.6.1.5.1),
- Internationalized Resource Identifier (IRI) is put in path (OEM-key 15.6.1.5.2)
For example: A column with values for the rotor diameter of a wind turbine:
id | wind_turbine | ro_diam |
---|---|---|
1 | type A | 50 |
2 | type A | 60 |
3 | type A | 70 |
4 | type B | 80 |
5 | type B | 110 |
{
"resources": [
{
"profile": null,
"name": null,
"path": null,
"format": null,
"encoding": null,
"schema": {
"fields": [
{
"name": "wind_turbine",
"description": null,
"type": null,
"unit": null,
"isAbout": [
{
"name": "wind energy converting unit",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00000044"
}
],
"valueReference": [
{
"value": null,
"name": null,
"path": null
}
]
},
{
"name": "ro_diam",
"description": null,
"type": null,
"unit": "meter",
"isAbout": [
{
"name": "rotor diameter",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00020144"
}
],
"valueReference": [
{
"value": null,
"name": null,
"path": null
}
]
}
]
}
}
]
}
B) Parameters within a column - using valueReference
and isAbout
:
valueReference
- user-defined parameter name is put in value (OEM-key 15.6.1.6.1),
- a suitable human-readable ontological concept name is put in name (OEM-key 15.6.1.6.2),
- Internationalized Resource Identifier (IRI) is put in path (OEM-key 15.6.1.6.3)
isAbout
When annotating using valueReference
, don't forget to annotate the column itself in isAbout
, as described in A).
For example: A column containing various types of fuels:
id | various_types_of_energy_carriers |
---|---|
1 | coal_HCV |
2 | green_diesel |
3 | coal_LCV |
{
"resources": [
{
"profile": null,
"name": null,
"path": null,
"format": null,
"encoding": null,
"schema": {
"fields": [
{
"name": "various_types_of_energy_carriers",
"description": null,
"type": null,
"unit": null,
"isAbout": [
{
"name": "portion of matter",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00000331"
}
],
"valueReference": [
{
"value": "coal_HCV",
"name": "anthracite",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00000058"
},
{
"value": "green_diesel",
"name": "biodiesel",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00000071"
},
{
"value": "coal_LCV",
"name": "lignite",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00000251"
}
]
}
]
}
}
]
}
With oemetadata builder¶
Annotation conventions for automatic data processing¶
In SEDOS, automatic data reasoning and processing are based mainly on ontological annotations in the metadata. Thus, thorough annotation and following the conventions are important for frictionless data processing.
- A) technology and technology_type (oem-key 6.1-2)
- B) for MiMo technologies the input and output energy vectors (oem-key 15.6.1.5.1-2)
- C) parameter names (oem-key 15.6.1.6.1-3)
A) technology and technology_type¶
The technology and technology_type columns from the oedatamodel-concrete are filled with the information from the subject
key.
B) parameter names¶
Case1¶
In cases where there is a single suitable ontology concept in the OEO we'll use the keys isAbout
, valueReference
as explained above.
Case2¶
In cases where there are multiple ontology concepts in the OEO that are suitable by using them in composition we'll use them as list in the name
key.
For example: thermal efficiency of a heat power plant (as column in a tabular data set)
The concept thermal efficiency is not (yet, as of 23.09.22) available in the OEO, but the concepts:
- 'heat generation process' http://openenergy-platform.org/ontology/oeo/oeo-physical/OEO_00010248
- 'energy conversion efficiency' http://openenergy-platform.org/ontology/oeo/OEO_00140049
{
"resources": [
{
"profile": null,
"name": null,
"path": null,
"format": null,
"encoding": null,
"schema": {
"fields": [
{
"name": "thermal efficiency",
"description": "The column holds the values of the thermal efficiency of a heat power plant",
"type": null,
"unit": null,
"isAbout": [
{
"name": "heat generation process",
"path": "http://openenergy-platform.org/ontology/oeo/oeo-physical/OEO_00010248"
},
{
"name": "energy conversion efficiency",
"path": "http://openenergy-platform.org/ontology/oeo/OEO_00140049"
}
],
"valueReference": [
{
"value": null,
"name": null,
"path": null
}
]
}
]
}
}
]
}
Case3¶
In cases where there is NO suitable ontology concept in the OEO we'll copy the term used in the data directly to the name
key for further data processing in SEDOS.
Note
This is SEDOS-specific and needed for data processing. Normally one would leave the annotation in `isAbout` empty.
For example: fantasy power plant parameter
{
"resources": [
{
"profile": null,
"name": null,
"path": null,
"format": null,
"encoding": null,
"schema": {
"fields": [
{
"name": "fantasy power plant paramter",
"description": "The column holds values of a parameter, whose concept is not yet available in the OEO, of a fantasy power plant ",
"type": null,
"unit": null,
"isAbout": [
{
"name": "fantasy power plant parameter",
"path": null
}
],
"valueReference": [
{
"value": null,
"name": null,
"path": null
}
]
}
]
}
}
]
}