[Cache version from http://internetalchemy.org/ocs/directory/0.5/; see the canonical document if possible.]

Internet Alchemy Weblog

Open Content Syndication Directory Format (Version 0.5)

This Version: http://InternetAlchemy.org/ocs/directory/0.5/
Latest Version: http://InternetAlchemy.org/ocs/directory/
Editor: Ian Davis <iand@internetalchemy.org>, Internet Alchemy

Status of This Document

This document is a public working draft for review by the Internet community. Comments and alterations should be directed to the editor. Discussion of this draft and related topics should be directed to the syndication mailing list.


Table of Contents

  1. Introduction
  2. Changes From Previous Draft
  3. Model
  4. Elements
  5. Standard Formats
  6. Standard Schedules
  7. Modules
  8. Examples
  9. References
  10. Version History
  11. Copyright and License Notes

1. Introduction

The Open Content Directory Format is intended to provide a concise, machine readable-listing of a set of syndicated services. The directory format is capable of supporting multiple sites, each with multiple services. Each service can have muliple formats such as RSS (RDF Site Summary), XHTML, Plain Text, Avantgo or WML format as well as separate publishing schedules or languages.

2. Changes From Previous Draft

Version 0.5 is a complete revision of the OCS directory format. While still RDF, the format now uses a clearer expression of its components which should make it easier to get started with and less verbose for large files. A number of redundancies present in earlier versions have been consolidated so that elements such as schedules and formats can be shared between channels.

3. Model

The OCS Directory format is intended to allow providers of syndicated content the means to describe the content available. Each OCS file contains information about the directory itself and sub sections for each of the content channels available at that site. Each channel may be syndicated in multiple formats, languages or frequencies of publication. For example, the OCS Directory format could be used to provide two syndicated versions of a site, the first in RSS format, containing only headlines and updated hourly, the second in a more extensive format such as scriptingNews, updated daily and more suitable for downloading to read offline.

The Dublin Core elements take their accepted meanings. The <dc:subject> element should consist of a comma separated list of keywords.

The namespace for the OCS Directory format is http://purl.org/ocs/directory/0.5/#

4. Elements

directory

channels

This element is a container for the list of channels described by this directory.

channel

Each channel

image

This element contains the URL of an image that should be used when displaying the service. The image should be 88 pixels wide, 31 pixels high.

formats

This element is a container for the list of supported formats for a particular service.

format

This element contains information about the format of the service such as schema, contentType and encoding. In the context of a service description element the format element has a single attribute rdf:about containing the uri of the full description of the format.

schema

This element contains the public identifier of the schema describing the format. Typical examples could be http://purl.org/rss/1.0/ for RSS, and -//W3C//DTD XHTML 1.0 Strict//EN for XHTML.

contentType

This element contains a standard MIME [MIME] type for the content such as text/html or text/plain.

encoding

This element contains the name of a character encoding such as UTF-8, UTF-16, EUC-JP etc.

schedule

This element contains information about the publishing schedule of the service such as updatePeriod, updateFrequency and updateBase. In the context of a service description element the schedule element has a single attribute rdf:about containing the uri of the full description of the publishing schedule.

updatePeriod

This element is used to describe the period over which the service format is updated. Acceptable values are: Hourly, Daily, Weekly, Monthly, Yearly. If omitted, daily is assumed.

updateFrequency

This element is used to describe the frequency of updates in relation to the update period. The value indicates how many times in that period the service is updated. For example, an updatePeriod of daily, and an updateFrequency of 2 indicates the service format is updated twice daily. If omitted a value of 1 is assumed for this element. Note, this element's value must be a positive integer greater than zero.

updateBase

This element defines a base date which can be used to calculate the publishing schedule. The date format is as specified in ISO8601 [ISO8601] and takes the form: yyyy-mm-ddThh:mm

5. Standard Formats

The following URIs can be used to refer to common formats. Definitions for these and future formats will be published at http://purl.org/ocs/formats/.

6. Standard Schedules

The following URIs can be used to refer to common publishing schedules. Definitions for these and future schedules will be published at http://purl.org/ocs/schedules/.

7. Modules

The OCS directory format can be extended through the use of modules. The core modules are:

8. Examples

8.1 Single channel with one format

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc  = "http://purl.org/metadata/dublin_core#"
  xmlns = "http://purl.org/ocs/directory/0.5/#">
  
  <directory rdf:about="http://InternetAlchemy.org/ocs/ocsdirectory.rdf">

    <!-- This section contains information about the channel directory listing -->
    <dc:title>Internet Alchemy OCS Directory</dc:title>
    <dc:description>This is a list of channels available at Internet Alchemy</dc:description>

    <channels>
      <rdf:Bag>
        <rdf:li rdf:resource="http://InternetAlchemy.org/" />
      </rdf:Bag>
    </channels>          
  </directory>
  
  <channel rdf:about="http://InternetAlchemy.org/">
    <dc:title>Internet Alchemy</dc:title>
    <dc:description>Internet Alchemy is a random collection of elements</dc:description>
    <image>http://InternetAlchemy.org/images/alchemylogo.gif</image>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/index.rss">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss10" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>

      </rdf:Alt>
    </formats>             

  </channel>

</rdf:RDF>

8.2 Multiple Channels

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc  = "http://purl.org/metadata/dublin_core#"
  xmlns = "http://purl.org/ocs/directory/0.5/#">
  
  <directory rdf:about="http://InternetAlchemy.org/ocs/ocsdirectory.rdf">

    <!-- This section contains information about the channel directory listing -->
    <dc:title>Internet Alchemy OCS Directory</dc:title>
    <dc:description>This is a list of channels available at Internet Alchemy</dc:description>

    <channels>
      <rdf:Bag>
        <rdf:li rdf:resource="http://InternetAlchemy.org/" />
        <rdf:li rdf:resource="http://InternetAlchemy.org/ocs/" />
        <rdf:li rdf:resource="http://InternetAlchemy.org/rss/" />
      </rdf:Bag>
    </channels>          
  </directory>
  
  <channel rdf:about="http://InternetAlchemy.org/">
    <dc:title>Internet Alchemy</dc:title>
    <dc:description>Internet Alchemy is a random collection of elements</dc:description>
    <image>http://InternetAlchemy.org/images/alchemylogo.gif</image>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/index.rss">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss10" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/index.rss91">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss091" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>

      </rdf:Alt>
    </formats>             

  </channel>

  <channel rdf:about="http://InternetAlchemy.org/">
    <dc:title>Internet Alchemy</dc:title>
    <dc:description>OCS News from Internet Alchemy</dc:description>
    <image>http://InternetAlchemy.org/images/alchemylogo.gif</image>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/ocs/index.rss">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss10" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/ocs/index.rss91">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss091" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>

      </rdf:Alt>
    </formats>             

  </channel>

  <channel rdf:about="http://InternetAlchemy.org/rss/">
    <dc:title>Internet Alchemy</dc:title>
    <dc:description>RSS News from Internet Alchemy</dc:description>
    <image>http://InternetAlchemy.org/images/alchemylogo.gif</image>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/rss/index.rss">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss10" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/rss/index.rss91">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#rss091" />
            <schedule rdf:resource="http://purl.org/ocs/schedules/#daily" />
          </rdf:Description>
        </rdf:li>

      </rdf:Alt>
    </formats>             

  </channel>


</rdf:RDF>

8.3 Single channel with several custom formats

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc  = "http://purl.org/metadata/dublin_core#"
  xmlns = "http://purl.org/ocs/directory/0.5/#">
  
  <directory rdf:about="http://InternetAlchemy.org/ocs/ocsdirectory.rdf">

    <!-- This section contains information about the channel directory listing -->
    <dc:title>Internet Alchemy OCS Directory</dc:title>
    <dc:creator>Ian Davis (mailto:iand@InternetAlchemy.org)</dc:creator>
    <dc:description>This is a list of channels available at Internet Alchemy</dc:description>
    <dc:publisher>Ian Davis</dc:publisher>
    <dc:date>2001-04-01T12:00+00:00</dc:date>

    <channels>
      <rdf:Bag>
        <rdf:li rdf:resource="http://InternetAlchemy.org/" />
      </rdf:Bag>
    </channels>          
  </directory>
  
  <channel rdf:about="http://InternetAlchemy.org/">
    <dc:title>Internet Alchemy</dc:title>
    <dc:creator>Ian Davis (mailto:iand@InternetAlchemy.org)</dc:creator>
    <dc:description>Internet Alchemy is a random collection of elements</dc:description>
    <dc:subject>Technology, Java, XML, Web Design</dc:subject>
    <image>http://InternetAlchemy.org/images/alchemylogo.gif</image>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <!-- This is the first format for this channel -->
          <!-- Information about the RSS 1.0, ascii only version of Internet Alchemy -->
          <rdf:Description rdf:about="http://InternetAlchemy.org/index.rss">
            <dc:language>en</dc:language>
            <format rdf:resource="#rss10ascii" />
            <schedule rdf:resource="#twicehourly" />
          </rdf:Description>
        </rdf:li>

        <rdf:li>
          <!-- This is the second format for this channel -->
          <!-- Information about the RSS 0.91, cyrillic version of Internet Alchemy -->
          <rdf:Description rdf:about="http://InternetAlchemy.org/index.rss91">
            <dc:language>en</dc:language>
            <format rdf:resource="#rss10cyrillic" />
            <schedule rdf:resource="#twicehourly" />
          </rdf:Description>
        </rdf:li>
        
      </rdf:Alt>
    </formats>             

  </channel>
  
  <schedule rdf:about="#twicehourly">
    <updatePeriod>Hourly</updatePeriod>
    <updateFrequency>2</updateFrequency>
    <updateBase>1999-05-30T00:00</updateBase>
  </schedule>

  <format rdf:about="#rss10ascii">
    <schema>http://purl.org/rss/1.0/</schema>
    <encoding>us-ascii</encoding>
    <dc:title>RSS 1.0, just ASCII characters</dc:title>
  </format>

  <format rdf:about="#rss10cyrillic">
    <schema>http://purl.org/rss/1.0/</schema>
    <encoding>ISO-8859-5</encoding>
    <dc:title>RSS 1.0, including cyrillic characters</dc:title>
  </format>


</rdf:RDF>

8.4 OCS in OCS

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc  = "http://purl.org/metadata/dublin_core#"
  xmlns = "http://purl.org/ocs/directory/0.5/#">
  
  <directory rdf:about="http://InternetAlchemy.org/ocs/masterocs.rdf">

    <dc:title>Master OCS Directory</dc:title>
    <dc:description>This is a list of other OCS files available at Internet Alchemy</dc:description>

    <channels>
      <rdf:Bag>
        <rdf:li rdf:resource="http://InternetAlchemy.org/" />
      </rdf:Bag>
    </channels>          
  </directory>
  
  <channel rdf:about="http://InternetAlchemy.org/ocs/ocs-ag.rdf">
    <dc:title>OCS for channels A-G</dc:title>
    <formats>
     <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/ocs/ocs-ag.rdf">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#ocs05" />
          </rdf:Description>
        </rdf:li>
      </rdf:Alt>
    </formats>             

  </channel>
  
  <channel rdf:about="http://InternetAlchemy.org/ocs/ocs-hp.rdf">
    <dc:title>OCS for channels H-P</dc:title>
    <formats>
     <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/ocs/ocs-hp.rdf">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#ocs05" />
          </rdf:Description>
        </rdf:li>
      </rdf:Alt>
    </formats>             

  </channel>
 
  <channel rdf:about="http://InternetAlchemy.org/ocs/ocs-qz.rdf">
    <dc:title>OCS for channels Q-Z</dc:title>
    <formats>
      <rdf:Alt>
        <rdf:li>
          <rdf:Description rdf:about="http://InternetAlchemy.org/ocs/ocs-qz.rdf">
            <dc:language>en</dc:language>
            <format rdf:resource="http://purl.org/ocs/formats/#ocs05" />
          </rdf:Description>
        </rdf:li>
      </rdf:Alt>
    </formats>             

  </channel>
 
</rdf:RDF>

9. References

[DCMI]
Dublin Core Metadata Initiative, OCLC, Dublin Ohio. http://purl.org/dc/

[ISO8601]
M. Wolf and C. Wicksteed, 1997, Date and Time Formats. http://www.w3.org/TR/NOTE-datetime

[MIME]
List of registered content types (MIME types). ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types

[RDF-syntax]
Ora Lassila, Ralph Swick, 1999 Resource Description Framework (RDF) Model and Syntax Specification. http://www.w3.org/TR/REC-rdf-syntax/

[RFC1766]
H. Alvestrand, 1995 Tags for the Identification of Languages. http://info.internet.isi.edu/in-notes/rfc/files/rfc1766.txt

[XML]
Extensible Markup Language http://www.w3.org/XML/

10. Version History

Version 0.4
Added <ocs:contentType>
Replaced the <ocs:language> element with the Dublin Core equivilent.
Version 0.3
Removed <ocs:service> and <ocs:directory> elements
Allowed any Dublic Core elements
Version 0.2
Redefined OCS in terms of RDF and Dublic Core
Version 0.1
Initial draft version

11. Copyright and License Notes

Copyright (C) Ian Davis (2002). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to Ian Davis or Internet Alchemy.

The limited permissions granted above are perpetual and will not be revoked by Ian Davis or assigns.

This document and the information contained herein is provided on an "AS IS" basis and IAN DAVIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

bio

British; software developer; former CTO of Calaba; author of OCS; co-author of RSS 1.0; developer of myRSS and Pepys.

navigation

home
subscribe
about
xLinkage
referers
prospecting
other news

search

microsites

OCS
RSS
FOAF
WAP
Usenet

colophon

Copyright 1999-2002 Ian Davis. My FOAF File
Powered by Moveable Type