In order to support different data access APIs, DODS must effectively
translate between data models (See Section
and the DODS--Data Access Protocol
sections titled ``Dataset Descriptor Structure''
and
``Dataset Attribute Structure''
). It is often the case
that the information about a data set available from an API is not sufficient
to translate that data set's access to another API which implements a
different data model. What is needed is some additional information about the
organization and relationships of the variables within the data set. This
information is contained in the Ancillary Data store of a data set
(Figure
).
The ancillary data for a given data set is stored in text files and is completely separate from the data set itself. A user who wishes to provide data to the DODS community can store the extra information in one of these text files without modifying the original data set.
There are two types of ancillary data supported by the data access protocol. Information about the data types of the variables contained in a data set may be provided using the Dataset Descriptor Structure (DDS). This structure is used to describe the name, type, shape, and structural relation of the variables in a given data set. Whenever the client library needs to translate information from its network form (i.e., the form the information takes when it is encoded using the data access protocol) it will use information in the DDS structure to decide how to perform those transformations. Similarly, the Dataset Attribute Structure can be used to affect the translation of variable attributes in a given data set.
The ancillary data files contain knowledge about the variables for use by the data server during translation. Data set translation is effectively the translation of each variable in a given data set and API combination to one or more variable(s) in a different API. The translation of each variable is a transformation of data type and that transformation is directed by the knowledge the translating software has about the API and the specific types and organization of a given data set. For a data server, the ancillary data structures are the only source of knowledge available beyond the API and the data set itself.
When the information reaches a client library, all content specific to a given API is lost. All information from the data set that is not actual data is coded in a structure that is the catenation of the ancillary data structures and information that can be extracted from the data set itself. This information is structured just like the ancillary data files stored on the server side. These files are the only source of knowledge about the data set the client library can access.
Ancillary information is a data type description language. Knowledge about the data set not available to the data server must be stored in one of the two ancillary data files if it is to be available to the server upon translation. The data server combines information evident from the data set with that in the ancillary files to create the two structures sent to the server. These two structures have the same form as an ancillary data.