This section describes all the functions used for reading, writing, modifying and querying provenance information in an NDF.
The provenance information in an NDF encapsulates details of all the other NDFs that were used in the creation of the NDF. The information is hierarchical and includes parents, grandparents, great-grandparents, etc., all the way back to ``root ancestors'' (a root ancestor is an ancestor NDF that has no recorded parents).
On disk, the provenance information is stored in an NDF extension called
``PROVENANCE'' (for details see the section ``The PROVENANCE Extension''
below). The ndgReadProv function reads this information and copies it
into an in-memory structure for faster access. All the other public
functions defined by this module accept an identifier for such an
in-memory structure as their first argument. The ndgWriteProv function
can be used to write the in-memory structure back out to disk as a
PROVENANCE extension in an NDF. The in-memory structure should be freed
when no longer needed, using ndgFreeProv.
NDG [1ex