Fedora Atom is a serialization of a Fedora Digital Object using the Atom Syndication Format RFC 4287 in conjunction with the Atom Threading Extensions RFC 4685.

Many of the programming languages and platforms used with Fedora already provide libraries and tools for working with Atom feeds. By offering an Atom serialization of Fedora objects, these now become tools and libraries for authoring, browsing and validating Fedora digital objects as well.

On this page:

Serialization Formats

Fedora Atom

A Fedora Digital Object is represented as an atom:feed element and Datastreams are represented as an atom:entry elements.

<feed xmlns="http://www.w3.org/2005/Atom">
  <id>info:fedora/demo:5</id>
  <title type="text">Simple Image Demo</title>
  <updated>2008-07-02T05:09:42.015Z</updated>
  <author><name>fedoraAdmin</name></author>
  <category scheme="info:fedora/fedora-system:def/model#state" 
                 term="Active"/>
  <category scheme="info:fedora/fedora-system:def/model#createdDate" 
                 term="2008-07-02T05:09:42.015Z"/>

Object properties are represented using various atom:feed elements. In the abbreviated example above, the object's pid, label, ownerId and lastModifiedDate are represented using the feed's id, title, author, and updated elements respectively. atom:category elements are used to represent object properties such as state and createdDate.

 
  <entry>
    <id>info:fedora/demo:5/DC</id>
    <title type="text">DC</title>
    <updated>2008-07-02T05:09:43.375Z</updated>
    <link href="info:fedora/demo:5/DC/2008-07-02T05:09:43.375Z" rel="alternate"/>
    <category scheme="info:fedora/fedora-system:def/model#state" 
                   term="A"/>
    <category scheme="info:fedora/fedora-system:def/model#controlGroup"
                   term="X"/>
    <category scheme="info:fedora/fedora-system:def/model#versionable"
                   term="true"/>
  </entry>

  <entry xmlns:thr="http://purl.org/syndication/thread/1.0">
    <id>info:fedora/demo:5/DC/2008-07-02T05:09:43.375Z</id>
    <title type="text">DC1.0</title>
    <updated>2008-07-02T05:09:43.375Z</updated>
    <thr:in-reply-to ref="info:fedora/demo:5/DC"/>
    <category scheme="info:fedora/fedora-system:def/model#formatURI" 
                   term="http://www.openarchives.org/OAI/2.0/oai_dc/"/>
    <category scheme="info:fedora/fedora-system:def/model#label" 
                   term="Dublin Core Record for this object"/>
    <content type="text/xml">
      <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" 
                      xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
        <dc:title>Coliseum in Rome</dc:title>
      </oai_dc:dc>
    </content>
  </entry>

The hierarchy of Datastreams and their Datastream versions is represented via the Atom Threading Extensions. For convenience, a Datastream entry references its latest Datastream version entry with an atom:link element. In the example above, the DC datastream entry refers to its most recent version as follows:

  <link href="info:fedora/demo:5/DC/2008-07-02T05:09:43.375Z" rel="alternate"/>

Each Datastream version refers to its parent Datastream via a thr:in-reply-to element. In the example above, the entry for the DC Datastream version refers to its parent as follows:

  <thr:in-reply-to ref="info:fedora/demo:5/DC"/>

Fedora Atom Zip

Fedora Atom Zip is a serialization of a Fedora digital object using the ZIP file format and a Fedora Atom manifest document. Inline and managed datastream content are packaged in the ZIP archive as individual files.

The manifest must be a Fedora Atom document named "atommanifest.xml".

Format URIs

Fedora Atom and Fedora Atom Zip are identified respectively with the following URIs:

Examples

A complete set of demonstration objects in both Fedora Atom and Fedora Atom Zip are included in the Fedora distribution. Please see the Demonstrations documentation for more information.

References

[RFC 4287] – The Atom Syndication Format, Mark Nottingham, Robert Sayre, 2005.
[RFC 4685] – Atom Threading Extensions, James Snell, 2006.