<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title property="dct:title">Defining Feeds</title>
    <base href="https://doriantaylor.com/defining-feeds"/>
    <link href="document-stats#EU9w7b3P9TUTCpYGQxvejL" rev="ci:document"/>
    <link href="elsewhere" rel="alternate bookmark" title="Elsewhere"/>
    <link href="this-site" rel="alternate index" title="This Site"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical" title="Defining Feeds"/>
    <link href="lexicon/#Egc4d-5WzcNE5sHqVIaCpK" rel="dct:audience" title="Designer"/>
    <link href="lexicon/#EzqXIsriaILFcWjXdS7FbI" rel="dct:audience" title="Software Developer"/>
    <link href="person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="lexicon/#EnewYu-MeZVXNc97q_-jAI" rel="dct:subject" title="Web Development"/>
    <link href="person/dorian-taylor" rel="meta" title="Who I Am"/>
    <link about="./" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="f07f5044-01bc-472d-9079-9b07771b731c" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="this-site" rel="alternate"/>
    <link about="./" href="elsewhere" rel="alternate"/>
    <link about="./" href="e341ca62-0387-4cea-b69a-cdabc7656871" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="this-site" rel="alternate"/>
    <link about="verso/" href="elsewhere" rel="alternate"/>
    <meta content="defining-feeds" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="This document explores the relationship of Web syndication feeds to conventional hypertext documents." name="description" property="dct:abstract"/>
    <meta content="2009-03-19T18:20:58+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="defining-feeds" property="dct:identifier"/>
    <meta content="2009-03-19T18:13:36+00:00" datatype="xsd:dateTime" property="dct:issued"/>
    <meta content="2009-03-19T19:05:12+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T04:18:52+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T15:10:50+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta about="person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="Defining Feeds" name="twitter:title"/>
    <meta content="This document explores the relationship of Web syndication feeds to conventional hypertext documents." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="colophon" rev="dct:references" typeof="bibo:Note">
              <span property="dct:title">Colophon</span>
            </a>
          </li>
          <li>
            <a href="syndicating-links" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">Syndicating Links</span>
            </a>
          </li>
          <li>
            <a href="document-stats#EU9w7b3P9TUTCpYGQxvejL" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:53dc3b6f-73fd-44d4-b4c2-a58190c6f7a3</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="EO9G-i_IUL1NJpMkFhzy-I" typeof="bibo:Article">
    <p>In this document, I wish to explore how feeds may be implemented in a hypertext artifact such as the one I am designing. In order to define feeds for this site, I must first take a look at what a feed <em>is</em>:</p>
    <aside role="note" id="EsOmnxernfaph82kPyEyjJ">
      <p>A <dfn>feed</dfn> is a type of <a rel="dct:references xhv:glossary" href="lexicon/resource" title="Resource">resource</a> that contains an informative <em>header</em> and an ordered sequence of <em>items</em>. The items each contain a link <em>to</em>, and often meta-data and excerpts <em>from</em> another resource. The sequence depicts <em>changes</em> happening to a resource on a <abbr title="World-Wide Web">Web</abbr> site, a <em>set</em> of resources, or, as a site is inductively a set of resources, an entire site itself.</p>
      <p>The purpose of a feed is to provide a concise and unambiguous <em>summary</em> of changes that <span class="parenthesis" title="people and machines">consumers of a site's data</span> can <em>poll</em> for updates.</p>
      <p>Feeds are <a rel="dct:references xhv:glossary" href="lexicon/representation" title="Representation">represented</a> primarily by <a href="http://en.wikipedia.org/wiki/RSS_(file_format)#Variants" title="RSS (file format) &#x2014; Wikipedia" rel="dct:references">the following, mostly-overlapping data formats</a>:</p>
      <dl>
        <dt><a href="http://web.resource.org/rss/1.0/" title="RDF Site Summary (RSS) 1.0" rel="dct:references"><acronym title="RDF Site Summary">RSS</acronym> 1.0</a></dt>
        <dd><acronym title="RDF Site Summary">RSS</acronym> 1.0 is one of the older extant feed formats. It is also an early <acronym title="Resource Description Framework">RDF</acronym> vocabulary which makes it consumable by <a href="http://www.w3.org/2001/sw/" title="W3C Semantic Web Activity" rel="dct:references">Semantic Web</a> systems, but its widespread use as an <acronym title="Extensible Markup Language">XML</acronym> feed format is sunsetting.</dd>
        <dt><a rel="dct:references" href="http://cyber.law.harvard.edu/rss/rss.html" title="RSS 2.0 Specification (RSS 2.0 at Harvard Law)"> <acronym title="Really Simple Syndication">RSS</acronym> 2.0</a></dt>
        <dd><acronym title="Really Simple Syndication">RSS</acronym> 2.0 was a unilateral effort to simplify what was regarded as <span class="parenthesis" title="valid RDF/XML!">superfluous syntax</span> of <acronym title="RDF Site Summary">RSS</acronym> 1.0. It has been widely adopted and extended on an ad-hoc basis.</dd>
        <dt><a href="http://www.atomenabled.org/" title="AtomEnabled" rel="dct:references">Atom</a></dt>
        <dd>Atom can be seen as an attempt to rein in some of the chaos of <acronym title="Really Simple Syndication">RSS</acronym> 2.0 by establishing an <a href="http://tools.ietf.org/html/rfc4287" title="RFC 4287 - The Atom Syndication Format" rel="dct:references"><acronym title="Internet Engineering Task Force">IETF</acronym> <acronym title="Request for Comments">RFC</acronym></a> and giving some structure to its extensibility. It is also widely adopted.</dd>
      </dl>
    </aside>
    <section id="ECul6s5g96OQELpRC7zgpL">
      <h2>Variants</h2>
      <p>There are three major ways a feed can be serialized. Each of these has semantics that are slightly different, but overlap mostly with the other two. It therefore makes sense to represent feeds internally as the union of these three formats, and then provide functions to access each <a rel="dct:references xhv:glossary" href="lexicon/representation" title="Representation">representation</a> as a <em>facet</em> of the internal structure.</p>
      <p>Clients can request specific feed variants by way of the <a href="http://tools.ietf.org/html/rfc2616#section-14.1" title="RFC 2616 &#x2014; Hypertext Transfer Protocol &#x2014; HTTP/1.1" rel="dct:references"><samp>Accept</samp> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header</a>:</p>
      <ul>
        <li><acronym title="RDF Site Summary">RSS</acronym> 1.0 by requesting <samp>application/rdf+xml</samp> or <samp>text/n3</samp>,</li>
        <li><acronym title="Really Simple Syndication">RSS</acronym> 2.0 by requesting <samp>text/xml</samp> or <samp>application/xml</samp>, and</li>
        <li>Atom by requesting <samp>application/atom+xml</samp>.</li>
      </ul>
      <p>Along with other resources, the system could allow the <samp>Accept</samp> header to be overridden by the <a href="policy/uri-path-and-query-parameter-semantics" title="URI Path and Query Parameter Semantics" rel="dct:references"><acronym title="Uniform Resource Identifier">URI</acronym> query string</a>.</p>
    </section>
    <section id="EoDqUbl7x1sA3eRYK1cN_K">
      <h2>First-Class, or Derived Resources?</h2>
      <p>With an abstract internal structure that depicts events, it becomes extremely attractive to address feeds as derivations of other resources. This way, the system could expose a feed for any resource or set of resources within it. The feed could be accessed, for example, by appending a path parameter to its <acronym title="Uniform Resource Identifier">URI</acronym>, like <samp>http://example.org/some-page;feed</samp>.</p>
      <p>This strategy depends, however, on whether or not a feed could <em>always</em> be defined as being <strong>about</strong> <span class="parenthesis" title="or set of resources, which can be conceived of as a resource in its own right.">another resource</span>.</p>
    </section>
    <section id="EfCypzSIEXORNS3M45oTSK">
      <h2>Feeds on doriantaylor.com</h2>
      <p>To satisfy those that have asked, I have placed a <a rel="dct:references xhv:alternate" href="f07f5044-01bc-472d-9079-9b07771b731c" title="Additions and Updates to doriantaylor.com">provisional feed</a> at a temporary location. I will update this feed when I add new <span class="parenthesis" title="not everything I add to the site will qualify as a document.">documents</span> to the site. Once I have <a href="policy/the-uri-naming-conundrum" title="The URI Naming Conundrum" rel="dct:references">chosen a final location</a> for it, I will permanently redirect all requests, though the feed will be accessible by its <acronym title="Universally Unique Identifier">UUID</acronym> in perpetuity.</p>
    </section>
  </body>
</html>
