<?xml version="1.0" encoding="UTF-8"?>
<essay xml:lang="en" version="pto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:gal="http://norman.walsh.name/rdf/gallery#">
<info>
    
    
    
    
    
    
    
    
    
<title>RSS and RDF</title><biblioid class="uri">http://norman.walsh.name/2003/05/22/rssrdf</biblioid>
<volumenum>6</volumenum>
<issuenum>21</issuenum>
<pubdate>2003-05-22</pubdate>
<date>$Date: 2005-09-11 10:27:02 -0400 (Sun, 11 Sep 2005) $</date>
<author>
      <personname>
<firstname>Norman</firstname>
	<surname>Walsh</surname>
</personname>
    </author>
<copyright>
      <year>2003</year>
      <holder>Norman Walsh</holder>
    </copyright>
<abstract>
<para>On RSS, RDF, and making the former an instance of the latter.</para>
</abstract>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#RDF"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#RSS"/>
</info>

<para xml:id="p1">This morning,
<personname>
      <firstname>Tim</firstname>
      <surname>Bray</surname>
    </personname>
posted <link xlink:href="http://www.tbray.org/ongoing/When/200x/2003/05/21/RDFNet">some
thoughts</link> on RDF, including a passing mention of
<link xlink:href="http://www.purl.org/rss/1.0/spec">RDFifying RSS</link>.</para>

<para xml:id="p2">Tim argues that the problem with RDF is the syntax, the XML
serialization syntax in particular. He may be right. In the general
case, or at least in some of the examples from the specification, it does
suck.</para>

<para xml:id="p3">But in practice, it boils down to name/value pairs, and it's not really
that hard to grok. Consider this example from my own personal collection:</para>

<programlisting>&lt;gn_:<emphasis role="bold">City</emphasis>
     rdf:about="mb-uuid-...eb72a8"&gt;
  &lt;rdf:type rdf:resource="http://..."/&gt;
  &lt;gn_:id&gt;france-castelnaudary&lt;/gn_:id&gt;
  &lt;gn_:name&gt;<emphasis role="bold">Castelnaudary</emphasis>&lt;/gn_:name&gt;
  &lt;gn_:country&gt;<emphasis role="bold">FR</emphasis>&lt;/gn_:country&gt;
  &lt;geo:lat&gt;<emphasis role="bold">43.3</emphasis>&lt;/geo:lat&gt;
  &lt;geo:long&gt;<emphasis role="bold">1.95</emphasis>&lt;/geo:long&gt;
  &lt;p:uri&gt;<emphasis role="bold">http://www.getty.edu/...</emphasis>&lt;/p:uri&gt;
  &lt;mb:category rdf:resource="..."/&gt;
  &lt;mb:text&gt;France/Castelnaudary&lt;/mb:text&gt;
  &lt;mb:uuid&gt;c23478aa-...eb72a8&lt;/mb:uuid&gt;
  &lt;xmb:modified&gt;1&lt;/xmb:modified&gt;
  &lt;palm:id&gt;A3164A&lt;/palm:id&gt;
&lt;/gn_:City&gt;</programlisting>

<para xml:id="p4">Which, modulo a couple of obscure
namespace prefixes, I don't think is all that difficult to figure out through simple
inspection. (The <quote>view source</quote> paradigm.) It says there's
a city named Castelnaudary in France at a particular latitude and longitude
and points to a URI that describes it more completely (from the
<link xlink:href="http://www.getty.edu/">Getty</link>
<link xlink:href="http://www.getty.edu/research/tools/vocabulary/tgn/">Thesaurus
of Geographic Names</link>). The primary source for this information is a record
in my Palm memo book, so says a few other things about my Palm, but they
aren't really relevant here.</para>

<para xml:id="p5">What does this have to do with RSS?</para>

<para xml:id="p6">I have a possibly odd RSS application: I use RSS to keep track
of my schedule. I have an <quote>RSS feed</quote> that shows me my
todo items, upcoming calendar events, and some other stuff.
</para>

<para xml:id="p7">I have a feeling that using RSS for this is either a really
clever idea or a really stupid one, but I'm not sure which. Anyway,
it's working for me. It means that everytime I peek at my RSS viewer,
I see my schedule.</para>

<para xml:id="p8">The problem is, I want to put additional metadata in the feed.
Consider:</para>

<programlisting>&lt;item&gt;
&lt;title&gt;Todo: Application/xslt+xml&lt;/title&gt;
&lt;link&gt;tb-uuid-ecd57cf8...a944c6&lt;/link&gt;
&lt;dc:subject&gt;Todo&lt;/dc:subject&gt;
&lt;p:category&gt;Business&lt;/p:category&gt;
&lt;p:priority&gt;1&lt;/p:priority&gt;
&lt;tb:due&gt;2003-04-01&lt;/tb:due&gt;
&lt;description&gt;Do the paper work for the
XSL WG to register application/xslt+xml
&lt;/description&gt;
&lt;/item&gt;</programlisting>

<para xml:id="p9">The point of the extra metadata is that it allows my RSS viewer
to display the data in meaningful ways. (The as-yet
unimplemented plan is to filter the feeds through XSLT to HTML for
display. If I hadn't spent the last couple of weeks hacking this
site into shape, I'd have finished that by now :-)</para>

<para xml:id="p10">The point is, this extra metadata is really easy to add with the
RDF version of RSS. In point of fact, the example above is valid
<link xlink:href="http://backend.userland.com/rss">RSS 2.0</link> as well,
because 2.0 allows foreign namespaced elements even though it isn't in
RDF.</para>

<para xml:id="p11">So what's my problem?</para>

<para xml:id="p12">My problem is that <quote>almost RDF</quote> formats are a pain
in the ass, just like all the other <quote>almost</quote> formats
you've ever encountered. Yes, the transformation to RDF is easy with
XSLT, but it's still an extra step.</para>

<para xml:id="p13">From my perspective, the added complexity of RDF in RSS seems
pretty minor and the payoff is less irritation for me. I call that a
win. But I'm prepared to believe my perspective is a bit skewed.</para>

</essay>

