Handle HDF data simpler, cleaner, faster

Scientists, data managers, engineers, and students using the data format HDF currently waste a lot of unecessary time managing HDF files. That is because to date, the APIs available for HDF have been highly complex. With HDF becoming increasingly common in the big data arena, a faster and simpler solution is needed.

HDFql stands for "Hierarchical Data Format query language" and is the first high-level language for HDF. Designed to be simple and similar to SQL, HDFql dramatically reduces users' learning effort and time needed to manage HDF files. HDFql can be seen as a clean interface alternative to the C API (which contains more than 400 low-level functions that are far from easy to use!) and to existing wrappers for C++, Java, Python, C# and Fortran.

As an example, imagine that one needs to create an HDF file named "myFile.h5" and, inside it, a group named "myGroup" containing an attribute named "myAttribute" of type float with a value of 12.4. Using the C API, it could be implemented like this:

hid_t file;
hid_t group;
hid_t dataspace;
hid_t attribute;
hsize_t dimension;
float value;
H5Fcreate("myFile.h5", H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
file = H5Fopen("myFile.h5", H5F_ACC_RDWR, H5P_DEFAULT);
group = H5Gcreate(file, "myGroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
dimension = 1;
dataspace = H5Screate_simple(1, &dimension, NULL);
attribute = H5Acreate(group, "myAttribute", H5T_NATIVE_FLOAT, dataspace, H5P_DEFAULT, H5P_DEFAULT);
value = 12.4;
H5Awrite(attribute, H5T_NATIVE_FLOAT, &value);

In HDFql, the same example can easily be implemented just by doing this:

create file myFile.h5
use file myFile.h5
create group myGroup
create attribute myGroup/myAttribute as float default 12.4

More examples...