eXtension Data Interchange Format (eXDI)

Primary tabs

    Contents

    Objectives

    In accordance with the Mission of eXtension, the following areas of content access need to be met.

    1. Data Export from eXtension; also called syndication.
    2. Data Import to eXtension; also called publishing.

    Additionally, the data interchange specification must meet some technical objectives.

    1. The specification should be approved by a recognized standards body.
    2. The specification must be specific; consumers and producers of content must be able to write software against the specification.
    3. The specification must not put undue hardship on development staff at educational institutions or eXtension.

    Syndicate eX Content

    eXtension will provide access to all content (eg. articles, questions and answers, etc.) via web services. Each piece of content hosted at eXtension will have a unique identifier (eg. service + context + object id) and the eXDI will specify:

    1. How to request the content
    2. What the response will contain (metadata + content)
    3. How it will be formatted

    Publish Content to eX

    eXtension will provide web services to publish new content. Each piece of content hosted at eXtension will have a unique identifier (eg. service + context + object id) and the eXDI will specify:

    1. How to obtain a service listing
    2. Format of that service listing
    3. Per-service context listing and format
    4. What metadata will be required
    5. How to format the request to publish

    Proposal

    To meet the objectives set forth above, the Atom 1.0 protocol is the proposed standard for adoption as the eXDI format.

    Atom 1.0 Syndication

    Advantages

    • IETF standard
    • XML-based
    • Richer metadata
    • Full feeds
    • Fully implemented/supported

    Disadvantages

    • Probably not the format states are currently using
    • Will require the entry of more metadata
    • Few states providing any feeds - will require working differently

    Reason for Selection

    Atom 1.0 Request

    The Atom specification does not specify what the request should look like. This provides a wide framework for deploying Atom syndication feeds (hereafter called, feeds). A feed request is simply an HTTP request to a documented URL schema.

    Example Requests:

     http://www.extension.org/
     http://www.extension.org/category/animal_disease/feed
     http://www.extension.org/faq/question/12345/feed
     http://www.extension.org/faq/keyword/finance/feed
    

    Response Content

    Atom 1.0 specifies that the following elements must be included:

    • id (eg. url)
    • title
    • updated (timestamp)

    However, Atom has provisions for:

    • author
    • content (full text)
    • link (eg. url if different from id)
    • summary (abstract)
    • category (multiple allowed - ie. for tags or keywords)
    • contributor
    • published (timestamp)
    • source
    • rights

    Response Format

    The response format is a well-formed XML document that may contain one or more entries that have the elements defined above.

    Atom 1.0 Publishing

    How to obtain a service listing

    Atom 1.0 API (also called the Atom Publishing API or APP) uses <link> tags within XHTML documents to create discoverable publishing (creating/editing) interfaces.

    Format of that service listing

    Atom 1.0 defines three service discovery primitives:

    • service.edit (update, delete)
    • service.post (create)
    • service.feed (list of services and content)

    For creating or updating content a URL is provided. A service listing is in the format of an Atom feed.

    Per-service context listing and format

    Since the service discovery and listing directives are included in XHTML content of a provided resource, this allows for discoverability across all applications.

    Content metadata

    Required
    • id (for update, delete)
    • link (for update, delete)
    • title
    • issued (timestamp)
    Optional
    • summary
    • content
    • modified (timestamp)
    • created (timestamp)
    • author
    • contributor
    • generator

    How to format the request to publish

    The Atom 1.0 specification defines a well-formed XML document containing the elements defined above.

    Alternatives Considered

    RSS

    Definition

    Advantages

    State issues

    Disadvantages

    State issues Reasons for rejection

    Q&A

    What does this mean for state Extension organizations?

    This format will be the primary communications medium between eXtension and Extension organizations.

    Things that will be carried on that medium include:

    1. Syndication
      1. eXtension news releases
      2. eXtension content eg. wiki articles
      3. FAQ data eg. questions by keyword
    1. Publishing
      1. publishing news information to eXtension (related VNR)
      2. update content in eXtension eg. wiki articles

    Why not RSS?

    In a nutshell, the RSS specification is not precise enough for accurate data interchange. Information may get lost.

    Why not clarify the specification? er. oh my. good question.

    Any attempt by eXtension to clarify the RSS specification effectively yields a new specification. We don't believe it is in the best interest for eXtension to be creating standards; only adopting ones to facilitate our mission.

    Why not RSS and Atom both?

    For a couple of reasons; first, eXtension is doing a lot of application development and supporting multiple interfaces that do the same thing doesn't make a lot of sense. This is particularly true when specifications like RSS are not fully specified and turn implementation into guess work.

    What do I need to do to be Atom-compliant?

    Creating syndication feed is very simple; some folks even do it by hand. It is just text-based XML. Many popular tools either a) output Atom 1.0 feeds already, or b) have third-party add-ons to enable Atom 1.0 compliance.

    I already have an RSS feed, can't you use that?

    If you can generate an RSS feed, an Atom feed is simple. Same data in a more precise format.

    How difficult is it to add an Atom feed?

    An Atom feed is an XML file. All you need to create an Atom feed is a text editor. Since it is just text, it is very easy to write simple scripts or modify existing applications to write out data as well.

    Why does any of this matter to me?

    The huge amounts of data available in research and education is not being well utilized on the Internet.

    Why is Lowes Home and Garden Center seen as the authority on bermuda grass howto? Or a seed seller for bermuda grass care?

    1. eXtension mission
    2. collaborative publishing
    3. others?

    How does reading/writing Atom feeds benefit my state/clients/bottom line?

    Will allow institutions to get access to all eXtension data on behalf of their clients.

    Will allow institutions to publish their data to increase their potential audience.

    Delivers targeted news and other educational content to clientele automatically. They do not have to visit a state or eXtension Web site to see new or revised information. Saves them time and keeps them better informed. Can also be used to deliver to a cell phone or chat client -- multiple delivery modalities. For early adopters staying informed via newsreaders has replaced browsing for information retrieval.

    References

    1. AtomEnabled Alliance
      1. Publishing
      2. Syndication
    2. IETF Atompub Status Page
    3. Issues with RSS
      1. Can article titles be HTML?
      2. How many enclosures?
      3. Politics?
      4. RSS Board Member goes ape, er Atom
      5. Comparison of Atom with RSS 2.0
    4. Google
      1. Google Data APIs