Glyphs for HDF5 datatypes are shown here. HDF5 supports a rich collection of datatypes—atomic ones where the data element is an indivisible unit of storage, and composite datatypes that are aggregates of any other datatypes, either atomic or composites.

An HDF5 dataset bravo is used to illustrate the different visual elements1-4of the datatype. The graph display in H5s strictly represents the hierarchy of the HDF5 data objects—by design it does not descend into nested composite types. However, by visually combining the rank glyph and the data element type glyph,2,3 it very clearly shows where nested composite types are used, as in this "array of arrays" example:

### The Visual Vocabulary of Datatypes

The illustration is composed from screen snippets where real testing values are used. As such, where you see the number '2' used, you can generalize this to 'N', i.e. what is given as a 2-dimensional array could be any N-dimensional array.

The rank of a 1-dimensional array of variable length is distinguished from the rank of a 1-dimension array of fixed size using a lambda-1 notation.

Now we can easily differentiate the variable-length datatypes in the graph.

This is a special suffix that is attached to the data object name only for compound (structured) types, enumerated types, and strings. In each instance, the suffix provides an additional piece of info (actually recorded as a "length" in the HDF5 API) that is a structural part of the datatype, yet not part of its dimensional shape. It has one of the following interpretations:

- The number of members in a compound/structured datatype,
- The number of distinct values held by an enumerated datatype, or
- The length of a string datatype, where the * wildcard is used for variable-length strings.

The rank of a composite array datatype is shown here. Note the lambda-1 notation for the rank of variable-lenth 1-dimensional arrays as described above.

A complete list (excepting "TIME") of the glyphs for all datatypes. In the case of array datatypes, we show three variants: a fixed-length vector, an N-dimensional array, and the variable-length 1-dimensional array with lambda-1 notation. These representations are used when the datatype itself is an array (as in the nexted composite case of "arrays of arrays").

The shape of the datatype: an n-dimensional fixed shape, a variable-length 1-dimentional shape, a or a scalar value.

Arrays and variable-length vectors are indicated by combining the rank prefix with the glyph of its constituent data type. Here, an array of floats and a variable-length vector of floats are shown.

Enumerated and structured types, both as single composite datatypes as well as in array composites.

Glyphs for arrays when used as element of another composite. The rank of the array is shown as a subscripted suffix, again with the lambda-1 notation denoting a nested variable-length vector.

All manner of variable-length and fixed-length strings as well as their array composites.