All numeric quantities in JThermodynamicsCloud, such as enthalpy, entropy, heat capacities, etc., are represented in a ParameterValue, with not only the value and its uncertainty, but also the units specification. In JThermodynamicsCloud every parameter carries with it the units of the parameter. This is done to facilitate different possibilities of units. For example, traditionally in the combustion field energy units have been in calorie based units, but the trend now is toward the SI units of joules. But even if one of these 'standard's is chosen, there is also the problem of distinquishing between, for example, the single value or the kilo- value.
The interpretation of the value and the uncertainty values of the ParameterValue is done through a ParameterSpectification. The parameter specification has the information about the units, the type of uncertainty and the string label for the quantity. The ParameterSpectification is a sub JSON object within the ParameterValue JSON object. Another important use of the ParameterSpectification is the initial interpretation, for example, of input values. The ParameterSpectification provides an interpretation of the values that are read in. For example, when reading in Benson rules that were extracted from Benson's book on thermodynamics and put in text form the ParameterSpectification of the given standard enthalpy, entropy and heat capacity values is specified.
As with all dataobjects in JThermodynamicsCloud, the ParameterValue data object has a corresponding ontology class. It is from this class that the labels for the properties arise. The ontology class describing the parameter value is dataset:ParameterValue. In the annotations, the dcterms:identifier value is qb:ComponentProperty. Within the definition of the ontology class dataset:ParameterValue, the set of data objects that make up the parameter value object are given, each as their corresponding ontology class. If a parameter value is found within a JSON object, then the object would have the property name qb:ComponentProperty have the form shown in the figure.
The boldface text in this illustration are the identifiers. The identifier is specified by the dcterms:identifier in the annotations of that class. If the value, the quantity after the colon, is a string (seen with single quotes), the value is a simple value. If the value, once again after the colon, begins with a curly parentheses, then the value is a compound object, i.e. a nested JSON object. In the top level of qb:ComponentProperty, for example, there are three properties:
dataset:ValueAsString: The actual value of the parameter, a simple string value. This is described by the dataset:ValueAsString class in the ontology. The value expected is any string that can be converted to a number.
qudt:standardUncertainty: The uncertainty value of the parameter, a simple string value. This is described by the dataset:ValueUncertainty class in the ontology.
qb:ComponentSpecification: The specification of the parameter, i.e. the label, the type of parameter, the type of uncertainty and what units are being used. These are the four properties of the nested JSON object and are represented by the dataset:. This is described by dataset:ParameterSpecification class in the ontology.
The parameter value itself is a class within the ontology, namely the dataset:ParameterValue class. Associated with each of the properties of this class is a set of corresponding ontology classes, namely the dataset:ValueAsString, dataset:ValueUncertainty and dataset:ParameterSpecification classes. The ontology defines information about each of these classes. One piece of information is the identifier to be used within the JSON object (dcterms:identifier). Another piece of information is the classes the object is made up of. The dataset:ParameterValue, as pointed out, is made up of three classes. There two simple classes, dataset:ValueAsString and dataset:ValueUncertainty and one compound class, namely dataset:ParameterSpecification describing the nested JSON object.
The ParameterSpectification data object is defined by the dataset:ParameterSpectification class in the ontology and gives the specific details, namely the units, the type of absolute value and the string label to be used for the value. In other other words, it provides the specification of the values of a parameter. In a database where 'standard' values are used, this specification is implicit. Within the database, this specification accompanies all units stored. The specification can also be used when data is inputted to the system. For example, when imputing the Benson rules from Benson's book, the units of energy, entropy and heat capacitly are all the same. When such a file is read, part of the input to the reading of the file is the explicit specification of the units of energy, entropy and heat capacity.
In the figure, the ParameterSpectification JSON object has the property label: qb:ComponentSpecification (the qb prefix means that the label stems from the CUBE ontology). The specification has several parts:
Parameter Label (skos:prefLabel): This is the string label of of the parameter. This gives a human interpretable interpretation of the parameter. In the GUI interface, this is the label that is seen to identify the parameter. In a matrix of values, this would be the column header.
Parameter Type (dataset:dynamicType): There two types of parameters: fixed or dynamic. A 'fixed' type means that the parameter is fixed to one type and one label, for example an energy value with the label ''. A 'dynamic' type covers the situation where there can be multiple parameters and corresponding labels. This allows the situation where, for example, the label is a species name and the corresponding value is the concentration. Thus the parameter represents the set of concentrations for a set of species.
Uncertainty Type: (dataset:uncertainty): Uncertainty can be determined and calculated in multiple ways. For example, an implied uncertainty is determined from the number of digits, relative uncertainty is a percentage, estimated is an estimated uncertainty, etc..
Units: (qudt:Units): This is compound object specifying the units of the parameter. First, there is qudt:SystemOfQuantities, meaning the class of unit, for example qudt:MolarEnergy. Then there is qudt:QuantityKind, meaning which specific unit within the general class is this parameter, for example qudt:J-PER-MOL. The set of possible unit classes and specific units comes from the QUDT ontology.