JThermodynamicsCloud service can be said to be an ontology driven application. Simply put, an ontology, as used in computer science, is a computer readable representation and organization of knowledge. A term often used in connection with ontologies is 'meta-data', extra information that can be attached to data structures. The use of ontologies in JThermodynamicsCloud stems from the ChemConnect implementation on which JThermodynamicsCloud is built upon. JThermodynamicsCloud uses ontologies in three distinct capacities:
Documentation: Through annotations and the hierarchy of ontology classes a level of documentation is provided that is not inherently present within the software definitions. Through the class hierarchy a context is given to each object and through annotations are human and machine readable documentation.
Data Structure Definition: Every data object in JThermodynamicsCloud has a respective ontology definition. This gives a common reference for how each data structure is translated in the different software components of the system. Since the definition is machine readable, this allows a certain amount of automation, for example in the user interface, to take place. For the software engineer, this common reference provides the template for accessing data from the data structures which is not otherwise present because the data structures themselves are inherently non-typed and free format.
Operational Definitions: In addition to data structures within the system, there are also sets of algorithms using these data structures. Certain classes of algorithms have corresponding ontology definitions. For example, all RESTful services have a corresponding ontology definition. In addition, within the background system, certain classes of working algorithms (programmed using the enumeration class in JAVA) have ontology definitions. These are often associated with pull-down list choices within the interface or specific related manipulations dependent on classes of data types.
The use of the ontology is key to uniting the three platforms of the system, namely the user interface, the backend where the calculations are made and finally the database storage. As a user, the influence of the ontology is visible through the definitions of the data objects used by JThermodynamicCloud and the classifications and descriptions seen in the user interface. There is a one-to-one correspondence between a data object and an ontology class. Furthermore, the structure of the data object, meaning what data it contains, has a correspondence to the ontology class structure.
One specialized case of the use of ontologies visible to the user is the units of parameters, for example the units of energy per mole could be joules per mole (this is explained in more detail in Parameter Values). For this JThermodynamicsCloud uses another ontology, the QUDT ontology. Here, the type of unit, such as MolarEnergy, is defined with all the possible specific types of units possible, such as joules-per-mole (qudt:J-PER-MOL) or calories per mole (qudt:CAL-PER-MOL).
Classifications, where the value of the data object can only have a finite number of values, is another example of how the ontology is visible to the user.
In the annotations of each ontology class definition, there are three properties of the ontology representation of the data object that are visible to the user:
dcterms:identifier: Every property in a data object has a label, i.e. the property name. This label signifies that what is to follow is the value of that property. Within the ontology class of the property, this annotation specifies the property name to be used. This is the label used in the JSON representation of the data object.
rdfs:label: This is a short label for the object. Within the user interface, for example, this is the name of the field, meaning property, that is shown. If there is a pull-down list, this is also the name that is shown.
rdfs:comment: This is a longer description of the object, maybe a sentence or two. In the interface, this can be seen in the field description.