NCSA

[ HDF5 Tutorial Top ]

Creating Groups using Absolute/Relative Names


Contents:


Absolute vs. Relative Names

Recall that to create an HDF5 object, we have to specify the location where the object is to be created. This location is determined by the identifier of an HDF5 object and the name of the object to be created. The name of the created object can be either an absolute name or a name relative to the specified identifier. In Example 5, we used the file identifier and the absolute name "/MyGroup" to create a group. The file identifier and the name "/" specifies the location where the group "MyGroup" was created.

In this section, we discuss HDF5 names and show how to use absolute/relative names by giving an example of creating groups in a file.

Names

HDF5 object names are a slash-separated list of components. There are few restrictions on names: component names may be any length except zero and may contain any character except slash ("/") and the null terminator. A full name may be composed of any number of component names separated by slashes, with any of the component names being the special name ".". A name which begins with a slash is an absolute name which is accessed beginning with the root group of the file while all other relative names are accessed beginning with the specified group. Multiple consecutive slashes in a full name are treated as single slashes and trailing slashes are not significant. A special case is the name "/" (or equivalent) which refers to the root group.

Functions which operate on names generally take a location identifier which is either a file ID or a group ID and perform the lookup with respect to that location. Some possibilities are:
Location Type Object Name Description
File ID
/foo/bar
The object bar in group foo in the root group.
Group ID
/foo/bar
The object bar in group foo in the root group of the file containing the specified group. In other words, the group ID's only purpose is to supply a file.
File ID
/
The root group of the specified file.
Group ID
/
The root group of the file containing the specified group.
Group ID
foo/bar
The object bar in group foo in the specified group.
File ID
.
The root group of the file.
Group ID
.
The specified group.
Other ID
.
The specified object.

Programming Example

Description

The following example code shows how to create groups using absolute and relative names. It creates three groups: the first two groups are created using the file identifier and the group absolute names, and the third group is created using a group identifier and the name relative to the specified group.
[
Download h5_crtgrpar.c ]

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include <hdf5.h>
#define FILE "groups.h5"

main() {

   hid_t       file_id, group1_id, group2_id, group3_id;  /* identifiers */
   herr_t      status;

   /* Create a new file using default properties. */
   file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

   /* Create group "MyGroup" in the root group using absolute name. */
   group1_id = H5Gcreate(file_id, "/MyGroup", 0);

   /* Create group "Group_A" in group "MyGroup" using absolute name. */
   group2_id = H5Gcreate(file_id, "/MyGroup/Group_A", 0);

   /* Create group "Group_B" in group "MyGroup" using relative name. */
   group3_id = H5Gcreate(group1_id, "Group_B", 0);

   /* Close groups. */
   status = H5Gclose(group1_id);
   status = H5Gclose(group2_id);
   status = H5Gclose(group3_id);

   /* Close the file. */
   status = H5Fclose(file_id);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Remarks

File Contents

The file contents are shown below:

Fig. 9.1   The Contents of 'groups.h5'

Fig. 9.2   'groups.h5' in DDL

      HDF5 "groups.h5" {
      GROUP "/" {
         GROUP "MyGroup" {
            GROUP "Group_A" {
            }
            GROUP "Group_B" {
            }
         }
      }
      }


NCSA
The National Center for Supercomputing Applications

University of Illinois at Urbana-Champaign

hdfhelp@ncsa.uiuc.edu
Last Modified: August 27, 1999