Translation of the ‘property’ element to different subclasses depending on its use
The translation of the ‘property’ element to ontology classes is a complex interaction between which element is the parent of the property and specific values of attributes of the property element (‘experiment’ was another simpler example). This dictomy exists because in the XML data file, the single keyword ‘property’ used. However, in the description of the ‘property’, there are many different cases, making, for example, an element or attribute ‘mandatory’ or just ‘optional’ or ‘not-handled’. The same applies to attributes. Sometimes, if an attribute has a specific value, then again other attributes or elements can be ‘mandatory’ or just ‘optional’ or ‘not-handled’.
The purpose of the ontology in this instance is to create a class hierarchy of ‘property’ where each subclass represents these different cases. One of the advantages of doing this is that, for example, if the ontology is going to be used to validate an XML data file, it must differentiate between the different cases. Or, for example, if making an interface, given the initial choices, the set of attributes or elements that are mandatory and the ranges of these values can be presented.
The ‘property’ element can be a child of ‘commonProperties’ or of ‘dataGroup’. As a child of ‘commonProperties’, the property element ‘describes an initial condition of the experiment, and its numerical value must be given as the value of the element‘ (from Specification under property). If ‘property’ is a child of ‘dataGroup’ then property ‘defines a physical property that was varied between experiments or measured as a function of another property within a single experiment’ (also from Specification).
As can be seen from the specification, many elements are have several possibilities between ‘optional’, ‘mandatory’ or ‘non-handled’. In terms of the ontology, this means that a ‘property’ as a child of ‘commonProperties’ is different from a ‘property’ from ‘dataGroup’. Each ‘property’ element, depending on what element is the parent, has a different set of attributes and children. In the ontology, the top parent class is reflects the specification element, but subclasses of this top parent class differentiate.
However, it is not just the parent that distinguishes between different ‘property’ classes. The main attribute which can create different subclasses of ‘property’ is the ‘name’ attribute.












As can be seen by the large number of conditions in the ‘description’ (see above), the translation of the ‘property’ element is a particular challenge because its exact form depends specifically on what element is the parent and the values of some of the attributes. Not only are there several classes of ‘property’ that must be formed, but there are also many classes of the attributes of ‘property’. These sets of classes are intertwined in their definition.
The first level of subclasses of property 


The following explanation will break down the dependencies and explain how the final configuration was designed.
Property Attribute: label
In the description, the label is defined by 


The label attribute contains a string that is the short notation of the physical property, e.g. for a temperature property, the label is usually “T”.
It is a property of the top class of ‘property’ (‘Property’) since it is the same for all subclasses.
The label attribute is also used in the ‘plottingInfo’ element, but its purpose is the same and so there is no distinction made.
Property Attribute: name



Depending on the name attribute, what attributes and children are ‘mandatory’ can be different. This will result in further differentiation of subclasses of ‘property’.
In addition, for example, the statement at the top of the table, different values can be grouped together. This means that the classification is not a simple list of values, but a tree of subclasses where the nodes of the trees are the values in this table.
Property Attribute: id
In the property description for id:
The id attribute is mandatory only if the property element is the child of a dataGroup element. Otherwise, it is non-handled


![]()
It contains the name of the child element of the dataPoint elements in which the corresponding numerical values will appear. The id attributes within a dataGroup usually follow the progression “x1”, “x2”, “x3”, but can have any other name.
Name Attribute: value and component of commonproperties
In the specification, the value and component children are determined by the value of the ‘type’ attribute:
Suppose a property element occurs as the child of the ‘commonProperties’ element, and its type (‘name’ value) is not „initial composition”. In that case, it must have a value child element containing its numeric value. If it is an „initial composition” property, it must have component child element(s) that define the component species of the initial composition.



The children of the property dealing with ‘initial concentration’ (‘Initial Concentration Property) has one or more members of ‘component’ (‘initial concentration component’). Note that component can be used in several contexts, so this particular component is for initial concentration. The component not corresponding to ‘initial concentration’ has as member ‘value’ (‘Numeric Value’).





Property: child of a dataGroup species data
In the specification for property, when the property is a child of the ‘dataGroup’ and the property refers to a species:
If a property element occurs as the child of the dataGroup element, and it describes data corresponding to a species (a “concentration” or “composition” type property), then a speciesLink child element is mandatory, which defines the species to which the property corresponds.
This represents a subclass of the ‘dataGroup Property’ element class, namely ‘Data Group Property: Species Data’ class. 


The ‘speciesLink’ (connected through ‘has member’ is annotated with ‘Mandatory’.
Name Attribute: uncertainty






So if the name value is ‘uncertainty’, then the three attributes, ‘reference’, ‘kind’ and ‘bound’ are ‘Mandatory’.
In addition, these values also have requirements on their values. The ‘kind’ is restricted to two values, ‘absolute’ and ‘relative’. 


The ‘bound’ property also has only three possible values (attribute class ‘Uncertainty Bound’).
The ‘reference’ attribute is represented in the ‘Property Reference’ class.
The property ‘uncertainty’ has one ‘mandatory’ property, namely ‘Property Value’. This is the numerical value of the uncertainty.
Name Attribute: evaluated standard deviation






Property attribute: reference
The attribute of ‘reference’ in the ‘property element actually has two distinct meanings. One, when the ‘name’ attribute is ‘uncertainty’, ‘evaluated standard deviation’. In this case, the reference refers to the property to which the uncertainty or standard deviation refers:
For uncertainty:
The attribute reference contains the property name to which the specified uncertainty refers.
For ‘evaluated standard deviation’:
The attribute reference contains the name of the property to which the specified
standard deviation refers.
In the other case:
If the reference property is composition or concentration, a speciesLink child element is mandatory, which defines the species to which the referenced property corresponds.
Property Attribute: Kind
The property attribute ‘kind’ has actually three meanings (and whether it is ‘mandatory’ or not) depending on the name value.
If the value of ‘name’ is 

![]()





![]()
If the ‘name’ of the property is describing a RCM time series in a ‘dataGroup’ and the name is pressure’ or ‘volume’, then:
must be used to describe if the profile corresponds to a reactive or a nonreactive mixture. In this case, it can have “reactive” or “nonreactive” values.



Property Attribute: bound