This specification defines the simple topic roll format. This can be used to describe a collection of grouped topics in a very simple format without the overhead of a more complicated topic mapping standard such as XTM. In this sense it is intended to be compatible with the ENT 1.0 specification for encoding topics in RSS2.0 feeds and much of the same terminology is used in each.
The keys to it's simplicity are:
A more complete approach to solving this problem would be use an existing topic map standard such as XTM, XFML or even RDF and we encourage all readers to adopt and use those standards. However for users not comfortable with such advanced and complex standards or in situations which do not justify their complexity we offer topic rolls as a simple, low-cost alternative.
Whilst the topic roll is intended to make creation by non-experts much easier we also appreciate the efforts of domain experts who might wish to work in more advanced formats. In order to allow their work to be leveraged a topic roll can be made to link to another, more sophisticated, document containing further details.
It is intended that users can build an OPML topic roll and that a domain expert could later build a topic map (using XTM for example) and the two can be easily related. This would allow everyone to benefit from the domain experts work, without requiring it to happen in advance.
One final noteworthy feature of the topic roll is the changelog. Because a topic roll is a product of a living system it is subject to frequent change as topics are deleted, renamed, re-classified and so on. For this reason the topic roll provides a changelog mechanism which allows clients to know, unambiguously, what has been changed and act appropriately.
An OPML Topic Roll is created as an OPML outline
The cloud represents the overarching grouping of the topics. The cloud is what external resources will refer to.
<!ATTLIST outline
type CDATA #FIXED "cloud"
serial CDATA #IMPLIED
href CDATA #IMPLIED
fixed ( "true" | "false" ) "false"
text CDATA #IMPLIED
>
The classification represents a related group of topics. Examples of classifications could be person, place, or unit of measurement
<!ATTLIST outline
type CDATA #FIXED "classification"
id CDATA #REQUIRED
description CDATA #IMPLIED
text CDATA #REQUIRED
>
<!ATTLIST outline
type CDATA #FIXED "topic"
id CDATA #REQUIRED
text CDATA #REQUIRED
href CDATA #IMPLIED
>
<ATTLIST outline
type CDATA #FIXED "changelog"
href CDATA #IMPLIED
>
<outline type="cloud" serial="279" href="http://matt.blogs.it/" fixed="false" text="Curiouser and curiouser!">
<outline type="classification" id="generic" description="The catch-all classification" text="generic">
<outline type="topic" id="academia" text="academia" href="http://matt.blogs.it/topics/topicsA.html#academia"/>
<outline type="topic" id="accessability" text="accessability" href="http://matt.blogs.it/topics/topicsA.html#accessability"/>
<outline type="topic" id="aggregators" text="aggregators" href="http://matt.blogs.it/topics/topicsA.html#aggregators"/>
</outline>
<outline type="changelog" href="http://matt.blogs.it/topicrollchanges.cgi?since=#SERIAL#"/>
</outline>