FOXML is a simple XML format that directly expresses the Fedora Digital Object Model. Digital objects are stored internally in a Fedora repository in the FOXML format. In addition, FOXML can be used for ingesting and exporting objects to and from Fedora repositories.
On this page:
The introduction of FOXML was motivated by several requirements: (1) simplicity, (2) optimization and performance, and (3) flexibility in evolving Fedora. Regarding simplicity, user feedback called for a conceptually easy mapping of the Fedora concepts to an XML format. Users wanted an obvious sense of how to create Fedora ingest files, especially those who are not familiar with formats such as METS. Regarding optimization and performance, the FOXML schema was designed to improve repository performance, both at ingest and during disseminations. Overall ingest performance was positively affected with the introduction of FOXML, especially in the validation phases. Regarding flexibility, establishing FOXML as the internal storage format for Fedora objects enables easier evolution of functionality in the Fedora repository, without requiring ongoing extensions to other community formats.
At the highest level, the FOXML XML schema defines elements that correspond directly to the fundamental Fedora digital object components (see recent paper on Fedora). Below is a brief sketch of these elements.
<digitalObject PID="uniqueID"> <!-- there are a set of core object properties --> <objectProperties> <property/> <property/> ... </objectProperties> <!-- there can be zero or more datastreams --> <datastream> <datastreamVersion/> <datastreamVersion/> ... </datastream> </digitalObject>
The official version of the FOXML 1.1 XML schema can be found here. A copy of this schema is also provided with the Fedora distribution. Fedora validates all Fedora objects against this schema before objects are permanently stored in the repository.
An example is worth a thousand words. Therefore, we have provided two annotated example digital objects encoded in FOXML.
The Fedora repository service is designed to be able to accommodate different XML formats for encoding digital objects through its ingest and export operations, available via the Fedora management service interface (API-M) and command-line tools.
Currently, Fedora supports ingest and export of objects in the following formats: