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
- Introduction
- Changes From Previous Draft
- Model
- Elements
- Standard Formats
- Standard Schedules
- Modules
- Examples
- References
- Version History
- 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
- Identifier - directory
- Obligation - Mandatory
channels
- Identifier - channels
- Obligation - Mandatory
This element is a container for the list of channels described by this directory.
channel
- Identifier - channel
- Obligation - Mandatory
Each channel
image
- Identifier - image
- Obligation - Optional
- Datatype - URI
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
- Identifier - formats
- Obligation - Mandatory
This element is a container for the list of supported formats for a particular service.
format
- Identifier - format
- Obligation - Mandatory
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
- Identifier - schema
- Obligation - Optional
- Datatype - Text
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
- Identifier - contentType
- Obligation - Optional
- Datatype - Text
This element contains a standard MIME [MIME] type for the content such as text/html or text/plain.
encoding
- Identifier - encoding
- Obligation - Optional
- Datatype - Text
This element contains the name of a character encoding such as UTF-8, UTF-16, EUC-JP etc.
schedule
- Identifier - schedule
- Obligation - Optional
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
- Identifier - updatePeriod
- Obligation - Optional
- Datatype - Value List (Hourly, Daily, Weekly, Monthly, Yearly)
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
- Identifier - updateFrequency
- Obligation - Optional
- Datatype - Positive Integer
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
- Identifier - updateBase
- Obligation - Optional
- Datatype - Date
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/.
- http://purl.org/ocs/formats/#rss09 - RSS 0.9
- http://purl.org/ocs/formats/#rss091 - RSS 0.91
- http://purl.org/ocs/formats/#rss092 - RSS 0.92
- http://purl.org/ocs/formats/#rss093 - RSS 0.93
- http://purl.org/ocs/formats/#rss10 - RSS 1.0
- http://purl.org/ocs/formats/#ocs05 - OCS 0.5
- http://purl.org/ocs/formats/#avantgo - Avantgo
- http://purl.org/ocs/formats/#scripting - Scripting News
- http://purl.org/ocs/formats/#opml - OPML
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/.
- http://purl.org/ocs/schedules/#hourly - Every Hour
- http://purl.org/ocs/schedules/#twohourly - Every Two Hours
- http://purl.org/ocs/schedules/#daily - Every Day
- http://purl.org/ocs/schedules/#twicedaily - Twice a Day
- http://purl.org/ocs/schedules/#monday - Every Monday
- http://purl.org/ocs/schedules/#tuesday - Every Tuesday
- http://purl.org/ocs/schedules/#wednesday - Every Wednesday
- http://purl.org/ocs/schedules/#thursday - Every Thursday
- http://purl.org/ocs/schedules/#friday - Every Friday
- http://purl.org/ocs/schedules/#saturday - Every Saturday
- http://purl.org/ocs/schedules/#sunday - Every Sunday
- http://purl.org/ocs/schedules/#monthly - Once a Month
7. Modules
The OCS directory format can be extended through the use of modules. The core modules are:
- Alias - allows alternative urls to be specified for channels
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.