Closed paulzierep closed 2 years ago
I noticed another point to take care of regarding the use of EMMO units in the ABox.
I am currently using the units by creating unit individuals and assigning the unit class as their type. The initial idea was to instantiate just one individual and use it as reference unit for all measurements.
However, the hasReferenceUnit
relationship is inverse functional (alpha2). This means that I must use a different unit individual for each measurement. Is this the intended design?
If the above is not the intended deisgn, would it make sense to include individuals for the units already in the ontology file, just like a universe is included?
@kysrpex, thanks for pointing out the issue. We have now changed BasedQuantity hasReferenceUnit only BaseUnit
to BasedQuantity hasReferenceUnit some BaseUnit
.
@paulzierep. Quantities in EMMO have two direct spatial parts, a numerical (number, array, ...) and a reference unit. An individual quantity like "1.0 metre" would have quantity value the number individual 1.0 and reference unit a Metre individual.
The reason that quantities and units are classes in EMMO is because of its physicalistic/nominalistic nature. This allows to express that the 1 metre I am measuring does not necessarily the same 1 metre you are measuring, since they are the result of two different measurement processes.
@jesper-friis Thank you for your reply. In this case, I assume that if I want to add a quantity individual of a unit that is not yet part of EMMO to the ABox, I need to introduce the corresponding unit class in the TBox?
I have another question concerning this issue. We would like to annotate data using EMMO. For time series data we would not like to store the data as RDF but rather reference the data using standard mappings like: csvw and CSV-LD patterns. In this case, we would use a class that has a unit and a relation to another class that stores the location of the time series data. However, if we use the hasReferenceUnit of EMMO. The Fact++ reasoner infers, that the individual is a Quantity. A Quantity needs a hasQuantityValue (correct?). But in our case, we rather have an entire array that has a unit. How could this be implemented using EMMO ?
In this case, I assume that if I want to add a quantity individual of a unit that is not yet part of EMMO to the ABox, I need to introduce the corresponding unit class in the TBox?
Correct
A Quantity has a Numerical part, which can be a single scalar or a large array. My suggestion is to create a Numerical individual that stands for your time series. Using e.g. dcat you, can associate this individual to your data source.
OK to close this issue?
Sorry that I have to open this up again. But according to the csvw standard, you would describe a column in a csvw file as shown below. According to their example: https://www.w3.org/TR/tabular-data-primer/#units-of-measure you would relate the unit directly with the column. How would something like this work if one would like to use EMMO units, since EMMO units can only relate to quantities, not numerics ?
"csvw:tableSchema": {
"@id": "fileid:schema",
"@type": "csvw:Schema",
"csvw:columns": [
{
"@id": "fileid:column-0",
"@type": "csvw:Column",
"csvw:titles": "Pr\u00fcfzeit",
"http://emmo.info/emmo/middle/metrology#EMMO_67fc0a36_8dcb_4ffa_9a43_31074efa3296": {
"@id": "fileid:unit-18",
"@type": "http://emmo.info/emmo/middle/siunits#EMMO_314ba716_2d3d_4462_9a4f_d3419ae1df43"
}
},
The units in Emmo are defined as classes. How can this be used to instantiate flexible Abox data. For example, there can be a large amount of mixed units (m/kg^2). How could one proceed to add these units to a specific data value.