1998-10-30 09:09:28 +08:00
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
1998-07-15 03:00:46 +08:00
< html >
< head >
1998-10-30 09:09:28 +08:00
< title > DDL for HDF5< / title >
1998-07-15 03:00:46 +08:00
< / head >
1998-12-22 06:52:56 +08:00
< body bgcolor = "#FFFFFF" >
< hr >
< center >
< table border = 0 width = 98% >
< tr > < td valign = top align = left >
< a href = "H5.intro.html" > Introduction to HDF5< / a > < br >
< a href = "RM_H5Front.html" > HDF5 Reference Manual< / a > < br >
< a href = "index.html" > Other HDF5 documents and links< / a > < br >
<!--
< a href = "Glossary.html" > Glossary< / a > < br >
-->
< / td >
< td valign = top align = right >
And in this document, the
< a href = "H5.user.html" > HDF5 User's Guide< / a > :
< a href = "Files.html" > Files< / a >
< br >
< a href = "Datasets.html" > Datasets< / a >
< a href = "Datatypes.html" > Data Types< / a >
< a href = "Dataspaces.html" > Dataspaces< / a >
< a href = "Groups.html" > Groups< / a >
< a href = "References.html" > References< / a >
< br >
< a href = "Attributes.html" > Attributes< / a >
< a href = "Properties.html" > Property Lists< / a >
< a href = "Errors.html" > Error Handling< / a >
< a href = "Filters.html" > Filters< / a >
< a href = "Caching.html" > Caching< / a >
< br >
< a href = "Chunking.html" > Chunking< / a >
< a href = "Debugging.html" > Debugging< / a >
< a href = "Environment.html" > Environment< / a >
DDL
< a href = "Ragged.html" > Ragged Arrays< / a >
<!--
< hr >
And in this document, the
< a href = "H5.user.html" > HDF5 User's Guide< / a > :
< a href = "Attributes.html" > H5A< / a >
< a href = "Datasets.html" > H5D< / a >
< a href = "Errors.html" > H5E< / a >
< a href = "Files.html" > H5F< / a >
< a href = "Groups.html" > H5G< / a >
< a href = "Properties.html" > H5P< / a >
< a href = "References.html" > H5R & H5I< / a >
< a href = "Ragged.html" > H5RA< / a >
< a href = "Dataspaces.html" > H5S< / a >
< a href = "Datatypes.html" > H5T< / a >
< a href = "Filters.html" > H5Z< / a >
< a href = "Caching.html" > Caching< / a >
< a href = "Chunking.html" > Chunking< / a >
< a href = "Debugging.html" > Debugging< / a >
< a href = "Environment.html" > Environment< / a >
< a href = "ddl.html" > DDL< / a >
-->
< / td > < / tr >
< / table >
< / center >
< hr >
1998-10-30 09:09:28 +08:00
< h1 > DDL in BNF for HDF5< / h1 >
< h2 > 1. Introduction< / h2 >
This document contains the data description language (DDL) for an HDF5 file.
The description is in Backus-Naur Form.
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< h2 > 2. Explanation of Symbols< / h2 >
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
This section contains a brief explanation of the symbols used in the DDL.
1998-07-15 03:00:46 +08:00
< PRE >
1998-10-30 09:09:28 +08:00
::= defined as
< tname> a token with the name tname
< a> | < b> one of < a> or < b>
< a> < FONT SIZE = 1.7 > opt< / FONT > zero or one occurrence of < a>
< a> * zero or more occurrence of < a>
< a> + one or more occurrence of < a>
TBD To Be Decided
< / pre >
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< h2 > 3. The DDL< / h2 >
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< dir >
< pre >
< file> ::= HDF5 "< file_name> " { < file_boot_block> < FONT SIZE = 1.7 > opt< / FONT > < root_group> }
1998-07-15 03:00:46 +08:00
< file_name> ::= < identifier>
1998-10-30 09:09:28 +08:00
< file_boot_block> ::= BOOT_BLOCK { < boot_block_content> }
1998-07-15 03:00:46 +08:00
< boot_block_content> ::= TBD
1998-10-30 09:09:28 +08:00
< root_group> ::= GROUP "/" { < unamed_datatype> * < group_attribute> * < group_member> * }
< unamed_datatype& gt ::= DATATYPE "< unamed_type_name> " { < compound_type_def> + }
< unamed_type_name> ::= the assigned name for unamed type is in the form of
#oid1:oid2, where oid1 and oid2 are the object ids of the type
< compound_type_def> ::= < named_scalar_type> | < named_array_type>
1998-08-28 05:44:08 +08:00
1998-10-30 09:09:28 +08:00
< named_scalar_type> ::= < scalar_type> < field_name> ;
1998-08-28 05:44:08 +08:00
1998-10-30 09:09:28 +08:00
< scalar_type> ::= H5T_STD_I8BE | H5T_STD_I8LE | ...
< field_name> ::= < identifier>
< named_array_type> ::= < scalar_type> < field_name> < dim_sizes> ;
< dim_sizes> ::= dimension sizes in the form of [dimsize1][dimzise2]...,
where dimsize1, dimsize2 are integers
1998-07-15 03:00:46 +08:00
< group_attribute> ::= < attribute>
1998-10-30 09:09:28 +08:00
< attribute> ::= ATTRIBUTE "< attr_name& gt" { < datatype>
< dataspace>
< data> < FONT SIZE = 1.7 > opt< / FONT > }
// < datatype> and < dataspace> must appear before < data> .
1998-07-15 03:00:46 +08:00
< attr_name> ::= < identifier>
1998-10-30 09:09:28 +08:00
< datatype> ::= DATATYPE { < named_type> } |
DATATYPE { "< scalar_type> " } |
DATATYPE { < compound_type_def> + }
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< named_type> ::= < hardlink>
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< hardlink> ::= HARDLINK { "< abs_name> " }
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< abs_name> ::= object absolute name
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< dataspace> ::= DATASPACE { "< dataspace_name> " } |
DATASPACE { ARRAY < current_dims> < max_dims> } |
DATASPACE { OTHER < ds_definition> + }
1998-07-15 03:00:46 +08:00
< dataspace_name> ::= < identifier>
1998-10-30 09:09:28 +08:00
< current_dims> ::= a list of integers in the form of (< i > i< FONT SIZE = 1.0 > 1< / i > < / FONT > , < i > i< FONT SIZE = 1.0 > 2< / i > < / FONT > , ... ),
where < i > i< FONT SIZE = 1.0 > k< / i > < / FONT > is an integer, < i > k< / i > = 1,2,...
1998-07-15 03:00:46 +08:00
1998-08-21 23:44:36 +08:00
< max_dims> ::= (< i > i< FONT SIZE = 1.0 > 1< / i > < / FONT > , < i > i< FONT SIZE = 1.0 > 2< / i > < / FONT > , ... ) where < i > i< FONT SIZE = 1.0 > k< / i > < / FONT > is an integer or H5S_UNLIMITED
1998-07-15 03:00:46 +08:00
< ds_definition> ::= TBD
1998-08-21 23:44:36 +08:00
< data> ::= data {TBD}
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< group_member> ::= < named_datatype> | < named_dataspace> | < group> | < dataset> |
< softlink>
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< named_datatype> ::= DATATYPE "< type_name> " { < compound_type_def> + }
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< type_name> ::= "< identifier> "
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< named_dataspace> ::= DATASPACE "< dataspace_name> " { ARRAY < current_dims> < max_dims> } |
DATASPACE "< dataspace_name> " { OTHER < ds_definition> + }
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< group> ::= GROUP "< group_name> " { < hardlink> } |
GROUP "< group_name> " { < group_attribute> * < group_member> * }
1998-07-15 03:00:46 +08:00
< group_name> ::= < identifier>
1998-10-30 09:09:28 +08:00
< dataset> ::= DATASET "< dataset_name> " { < hardlink> } |
DATASET "< dataset_name> " { < datatype>
1998-07-15 03:00:46 +08:00
< dataspace>
< storagelayout> < FONT SIZE = 1.7 > opt< / FONT >
< compression> < FONT SIZE = 1.7 > opt< / FONT >
< dataset_attribute> *
< data> < FONT SIZE = 1.7 > opt< / FONT > }
1998-10-30 09:09:28 +08:00
// Tokens within {} can be in any order as long as < data> and < dataset_attribute>
// are after < datatype> and < dataspace> .
1998-07-15 03:00:46 +08:00
< dataset_name> ::= < identifier>
1998-10-30 09:09:28 +08:00
< storagelayout> :: = STORAGELAYOUT < contiguous_layout> |
STORAGELAYOUT < chunked_layout> |
STORAGELAYOUT < compact_layout> |
STORAGELAYOUT < external_layout>
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< contiguous_layout> ::= {CONTIGUOUS} // default
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< chunked_layout> ::= {CHUNKED < dims> }
1998-07-15 03:00:46 +08:00
1998-08-21 23:44:36 +08:00
< dims> ::= (< i > i< FONT SIZE = 1.0 > 1< / i > < / FONT > , < i > i< FONT SIZE = 1.0 > 2< / i > < / FONT > , ... ), < i > i< FONT SIZE = 1.0 > k< / i > < / FONT > is an integer, < i > k< / i > = 1,2,...
1998-07-15 03:00:46 +08:00
1998-08-21 23:44:36 +08:00
< compact_layout> ::= TBD
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< external_layout> ::= {EXTERNAL < external_file> + }
1998-07-15 03:00:46 +08:00
< external_file> ::= (< file_name> < offset> < size> )
< offset> ::= an integer
< size> ::= an integer
1998-10-30 09:09:28 +08:00
< compression> :: = COMPRESSION { TBD }
1998-07-15 03:00:46 +08:00
1998-08-21 23:44:36 +08:00
< dataset_attribute> ::= < attribute>
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< softlink> ::= SOFTLINK "< softlink_name> " { LINKTARGET "< target> " }
1998-07-15 03:00:46 +08:00
< softlink_name> ::= < identifier>
1998-08-28 05:44:08 +08:00
< target> ::= < identifier>
1998-07-15 03:00:46 +08:00
< identifier> ::= string
1998-10-30 09:09:28 +08:00
// character '/' should be used with care.
1998-07-15 03:00:46 +08:00
< / PRE >
1998-10-30 09:09:28 +08:00
< / dir >
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< h2 > 4. An Example of an HDF5 File in DDL< / h2 >
1998-07-15 03:00:46 +08:00
1998-10-30 09:09:28 +08:00
< dir >
< PRE >
HDF5 "example.h5" {
GROUP "/" {
DATASET "dset1" {
DATATYPE {
H5T_STD_I32BE int_name;
H5T_IEEE_F32BE float_name;
H5T_IEEE_F64BE double_name;
}
DATASPACE { ARRAY ( 5 ) ( 5 ) }
DATA {{0,0,1}, {1,1,0.5}, {2,4,0.333333}, {3,9,0.25}, {4,16,0.2}}
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
GROUP "group1" {
DATASET "dset2" {
DATATYPE {
HARDLINK { "/type1" }
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
DATASPACE { ARRAY ( 5 ) ( 5 ) }
DATA {{0,0}, {1,1.1}, {2,2.2}, {3,3.3}, {4,4.4}}
}
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
GROUP "group2" {
HARDLINK { "/group1" }
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
SOFTLINK "slink1" {
LINKTARGET "somevalue"
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
DATATYPE "type1" {
H5T_STD_I32BE int_name;
H5T_IEEE_F32BE float_name;
}
}
1998-07-15 03:00:46 +08:00
}
1998-10-30 09:09:28 +08:00
< / pre >
< / dir >
1998-12-22 06:52:56 +08:00
< hr >
< center >
< table border = 0 width = 98% >
< tr > < td valign = top align = left >
< a href = "H5.intro.html" > Introduction to HDF5< / a > < br >
< a href = "RM_H5Front.html" > HDF5 Reference Manual< / a > < br >
< a href = "index.html" > Other HDF5 documents and links< / a > < br >
<!--
< a href = "Glossary.html" > Glossary< / a > < br >
-->
< / td >
< td valign = top align = right >
And in this document, the
< a href = "H5.user.html" > HDF5 User's Guide< / a > :
< a href = "Files.html" > Files< / a >
< br >
< a href = "Datasets.html" > Datasets< / a >
< a href = "Datatypes.html" > Data Types< / a >
< a href = "Dataspaces.html" > Dataspaces< / a >
< a href = "Groups.html" > Groups< / a >
< a href = "References.html" > References< / a >
< br >
< a href = "Attributes.html" > Attributes< / a >
< a href = "Properties.html" > Property Lists< / a >
< a href = "Errors.html" > Error Handling< / a >
< a href = "Filters.html" > Filters< / a >
< a href = "Caching.html" > Caching< / a >
< br >
< a href = "Chunking.html" > Chunking< / a >
< a href = "Debugging.html" > Debugging< / a >
< a href = "Environment.html" > Environment< / a >
DDL
< a href = "Ragged.html" > Ragged Arrays< / a >
<!--
< hr >
And in this document, the
< a href = "H5.user.html" > HDF5 User's Guide< / a > :
< a href = "Attributes.html" > H5A< / a >
< a href = "Datasets.html" > H5D< / a >
< a href = "Errors.html" > H5E< / a >
< a href = "Files.html" > H5F< / a >
< a href = "Groups.html" > H5G< / a >
< a href = "Properties.html" > H5P< / a >
< a href = "References.html" > H5R & H5I< / a >
< a href = "Ragged.html" > H5RA< / a >
< a href = "Dataspaces.html" > H5S< / a >
< a href = "Datatypes.html" > H5T< / a >
< a href = "Filters.html" > H5Z< / a >
< a href = "Caching.html" > Caching< / a >
< a href = "Chunking.html" > Chunking< / a >
< a href = "Debugging.html" > Debugging< / a >
< a href = "Environment.html" > Environment< / a >
< a href = "ddl.html" > DDL< / a >
-->
< / td > < / tr >
< / table >
< / center >
1998-10-30 09:09:28 +08:00
< hr >
< address >
< a href = "mailto:hdfhelp@ncsa.uiuc.edu" > HDF Help Desk< / a >
< / address >
1998-12-22 06:52:56 +08:00
Last modified: 30 October 1998
1998-10-30 09:09:28 +08:00
< / body >
< / html >