Unit string of dimensionless quantities? VOUnits ERRATA required

alberto micol amicol.ivoa at googlemail.com
Fri Dec 19 18:15:57 CET 2025


Dear Semantics group,

I have to report some contradictions in the VOUnit v1.1 recommendation regarding the unit string used for unitless quantities.

Here below I quote the related sentences, I then comment on them, ask the fundamental question, and attempt my own way out of those contradictions using the VOTable standard to resolve the issue.

Whatever the answer to my question, it is clear that we need an ERRATA.

-----------------------------------------------------------------
1  Introduction (informative)

1.5  VOUnits syntax summary

  *   The string `1' may be used to represent a dimensionless quantity (Sect. 2.2<https://ivoa.net/documents/VOUnits/20231215/REC-VOUnits-1.1.html#sec:parsing-components>).
2  The VOUnits syntax (normative)

2.2  Parsing unit strings - overview
In each of the grammars here, the empty string is not a valid units string - in particular, it is not taken to indicate a dimensionless quantity. If a particular context wishes to interpret such a string as indicating a dimensionless quantity, or perhaps instead indicating `units unknown', then it should handle that case separately. The VOUnits syntax, though it also deems the empty string to be invalid, recognises the string 1 as positively indicating a dimensionless quantity.

2.8  Other symbols, and other remarks
If there is no unit associated with a quantity (for example a quantity that is a character string, or unitless), data providers should indicate this with an empty string rather than blanks or dashes.

C.4  The VOUnits grammar (normative)

input: complete_expression
        | scalefactor complete_expression
        | LIT1

scalefactor: LIT10 power numeric_power
        | LIT10
        | LIT1
        | VOUFLOAT
-----------------------------------------------------------------

Comments

It is that LIT1 in §C.4 what allows the value ‘1’ to describe a dimensionless unit.

Main issue: the above sections contradict each other multiple times:

  *   Valid unit string for a dimensionless quantity is either:
     *   ‘1’   according to §1.5, §2.2, and §C.4
     *   ‘’ (an empty string) according to §2.8
  *   But an empty string is invalid according to §2.2
§2.2 states that the empty string is not a valid unit string according to the grammars presented in the document. That is true, but what the document does not say is where the FITS grammar was taken from.

Nowhere in the FITS standard it is stated that an empty string is invalid (unless I’m wrong of course).

The FITS standard does not allow ‘1’ as a valid unit string (‘10**0’ is allowed but that’s a different string).

Question: shall ‘1’ or an empty string be used to represent the unit of a dimensionless quantity?

Answer:
The answer is simple noting that the string ‘1’ would break the round-trip FITS-VOTABLE-FITS principle that we have always used and stated in the last paragraph of section 2.9 of the VOTable standard (v1.5).
Because of that, and because the FITS standard allows an empty string,
it seems to me that the VOUnit statement of §2.8 (empty string) is the only one viable.

I understand that there will be some debates about this, but at least on one thing we will agree:
we need to amend the VOUnit document with an ERRATA to remove the contradictions.

Cheers, seasonal greetings to you all,
Alberto







-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/semantics/attachments/20251219/9f00e9a7/attachment.htm>


More information about the semantics mailing list