The representation of all data objects in JThermodynamicCloud has JSON like structure, i.e. property name with a corresponding value. The JSON format is non typed and free-format, meaning it is a very flexible data representation. When the user uses JThermodynamicsCloud through the user interface, this representation is not apparent. However, all the data structures have this form and all the communication between the user interface, the back-end (where the calculations take place) and Google Firestore database.
At a given level, a JSON object has a list of properties. The properties have either a simple value, like a string value or a number, or is a compound object made of another element, which itself is a JSON object. Each property is identified with a unique label. In JThermodynamicsCloud the labels come from the ontology definition of the corresponding ontology class. For example, the label for a value of a quantity, for example standard enthalpy, is dataset:ValueAsString. In the Figure, for example, the value associated with this label is '30.0'.
The figure shows an example of a JSON object. The total JSON object is begins and ends with a curly brackets. Each nested JSON object also begins and ends with curly brackets. In the figure, one level of properties is show at the same indentation. At the top level of this JSON object is one object: 'qb:ComponentProperty'. This object is a compound object, as evidenced by the beginning of a sub JSON object beginning with a curly bracket. This sub JSON object has three properties, two simple objects, namely dataset:ValueAsString and qudt:standardUncertainty and a compound object, namely and qb:ComponentSpecification.
{
qb:ComponentProperty: {
dataset:ValueAsString: '30.0',
qudt:standardUncertainty: '0.1',
qb:ComponentSpecification: {
skos:prefLabel: 'StandardEnthalpy'
dataset:dynamicType: 'dataset:FixedParameter',
dataset:uncertainty: 'dataset:EstimatedAbsoluteUncertainty',
qudt:Unit: {
qudt:SystemOfQuantities: 'qudt:MolarEnergy',
qudt:QuantityKind: 'qudt:J-PER-MOL'
}
}
}
}
Figure JSON object example: This is an illustration of a JSON data object where the properties can be simple string objects or a nested JSON sub-object. In this illustration, the nested objects are indented. Curly brackets surround a given JSON object (or sub-object). Square brackets signify an array of objects.
{
"prov:activity": "dataset:TransactionInterpretTextBlock",
"dataset:activityinfo": {
"dataset:datasettransactionspecification": {
"dataset:catalogobjectmaintainer": "Administrator",
"dataset:datasetname": "Standard",
"dataset:datasetversion": "1.0",
"dataset:uniquegenericname": "tableA1CarbonBensonRules"
},
"dataset:filesourceformat": "dataset:TherGasBensonRules",
"dataset:blockinterpretationmethod": "dataset:ParseLinesJThermodynamicsBensonRules",
"dcterms:title": "Carbon-Hydrogen Benson Rules set from Table A1 from Benson Thermochemical Kinetics",
"dataset:dataobjstatus": "CatalogObjectStatusCurrent",
"dataset:speciespectype": "NANCY",
"dataset:bensontemperaturelist": [
300,400,500,600,800,1000,1500
],
"dataset:paramspecenthalpy": {
"qudt:Unit": {
"qudt:SystemOfQuantities": "quantitykind:MolarEnergy",
"qudt:QuantityKind": "unit:KiloCAL-PER-MOL"
},
"dataset:dynamicType": "FixedParameter",
"skos:prefLabel": "Enthaply",
"dataset:uncertainty": "dataset:ImpliedDigitsUncertainty"
},
"dataset:paramspecentropy": {
"qudt:Unit": {
"qudt:SystemOfQuantities": "quantitykind:MolarEntropy",
"qudt:QuantityKind": "unit:J-PER-MOL-K"
},
"dataset:dynamicType": "FixedParameter",
"skos:prefLabel": "Entropy",
"dataset:uncertainty": "dataset:ImpliedDigitsUncertainty"
},
"dataset:paramspecheatcapacity": {
"qudt:Unit": {
"qudt:SystemOfQuantities": "quantitykind:MolarHeatCapacity",
"qudt:QuantityKind": "unit:J-PER-MOL-K"
},
"dataset:dynamicType": "FixedParameter",
"skos:prefLabel": "Heat Capacity",
"dataset:uncertainty": "dataset:ImpliedDigitsUncertainty"
}
}
}