Skip to content

Representation of numeric values

steveraysteveray edited this page Dec 13, 2023 · 4 revisions

The cases where numerical values are given in QUDT are for conversion multipliers and conversion offsets in conjuction with Units, and for absolute values and uncertainties in conjunction with Physical Constants.

There are tradeoffs regarding how numeric values are represented in QUDT. Some of the factors that have been considered include accuracy, precision, archival value, and implementation consequences. This page presents the rationale for the choices made for the QUDT ontologies.

First, some definitions to clarify some of the issues:

  • Precision (Number of Significant Figures) - The number of decimal places that specify the precision with which a numerical value is given
  • Scale (Number of Zeroes) - When representing a number as a simple decimal, the number of consecutive zeroes after the decimal point (for numbers smaller than 1.0 in magnitude, or the number of consecutive zeroes before the decimal point (for numbers larger than 1.0 in magnitude)

1. QUDT aims primarily to accurately and precisely record numerical values lexically, captured in the Turtle (.ttl) files.

The implication of this position is that implementation consequences are not the principal responsibility of QUDT. As technology evolves, the implementation consequences can also change, but the lexical representation of numerical values is unaffected.

2. Readability of the numerical values for human consumption is desirable, provided it does not affect the accuracy and precision of the value.

This means that, for scientifically measured values, scientific notation will be preferred over a decimal notation containing a large number of zeroes. Such values usually include an uncertainty after some number of significant figures. The stated value will not be provided beyond the known number of significant figures. The uncertainty may be also given using scientific notation, using the qudt:standardUncertainty relation. In contrast, definitional values that have zero uncertainty (such as the conversion multiplier for a prefixed SI unit, like KiloM) will be represented using decimal notation, with the scientific notation given in the dcterms:description field for easier human comprehension. Thus, the conversion multiplier for KiloM will be given as 1000.0, and the description will include 1.0 x 10³.

Known implementation issues

  • It is known that some implementations cannot parse decimal numbers with more than 62 digits. Using scientific notation avoids this problem.
  • At the same time, since scientific notation representations are by default interpreted as xsd:double (at the time of this writing) by many implementations, there will be problems with numerical stability that introduce very small, but real, errors in values. This is why QUDT has adopted position (1.) above, to stand behind the lexical representation.

Other unresolved issues

  • Some values are known exactly when expressed as rational numbers (i.e. fractions), but QUDT does not yet support a means of representing these values exactly.