Old Release

This documentation covers an old version of Fedora. Looking for another version? See all documentation.

What is FOXML?

FOXML is a simple XML format that directly expresses the Fedora Digital Object Model. As of Fedora 2.0, 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. The Fedora extension of METS will continue to be supported as an ingest and export format.

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>

Why FOXML?

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.

What does a FOXML instance document look like?

An example is worth a thousand words. Therefore, we have provided a fully-annotated digital object encoded in FOXML. This example is presented from the perspective of how a digital object looks when it is stored inside a Fedora repository. However, the documentation also indicates how to encode an object in FOXML for ingesting into the repository. There are certain data attributes that can be omitted in ingest files since the Fedora Repository service assigns them.

To learn more, please consult the FOXML reference example now!

Where is the FOXML XML schema?

An offical published version of the FOXML XML schema is also published on the Fedora Commons web site. Also, a copy of the schema is provided with the Fedora open-source distribution. The Fedora repository service validates all Fedora objects against this schema before objects are permanently stored in the repository.

Are other XML Formats supported by Fedora?

Yes! 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:

  • FOXML 1.1 (info:fedora/fedora-system:FOXML-1.1)
  • FOXML 1.0 (info:fedora/fedora-system:FOXML-1.0)
  • METS 1.1 (info:fedora/fedora-system:METSFedoraExt-1.1)
  • METS 1.0 (info:fedora/fedora-system:METSFedoraExt-1.0)
  • ATOM 1.1 (info:fedora/fedora-system:ATOM-1.1)
  • ATOM Zip 1.1 (info:fedora/fedora-system:ATOMZip-1.1)