Volume 6, Issue 12; 14 May 2003

How does this site work?

To probe a hole we first use a straight stick to see how far it takes us. To probe the visible world we use the assumption that things are simple until they prove to be otherwise.

E. H. Gombrich

This site uses RDF to manage a collection of mostly XML resources. These resources are transformed using XSLT and presented in HTML and RSS. Most of the pages are built in a staging area so that mostly static pages are served. Server-side includes are used to keep the navigation information on each page up-to-date without rebuilding every page every time the navigation changes.

Every resource on the site contributes RDF metadata to a central store. This article, for example, has intrinsic metadata.

This metadata is extracted by the build process. In addition to the intrinsic metadata, each article on the site is catagorized into one or more topics. The set of topics is taken from a defined taxonomy.

This metadata is collected into an RDF description about each resource:

<t:Article rdf:about="...">
  <t:indexterm rdf:resource="..."/>
  <t:indexterm rdf:resource="..."/>
  <dc:creator rdf:resource="..."/>
  <dc:subject rdf:resource="..."/>
  <dc:subject rdf:resource="..."/>
  <dc:type rdf:resource="..."/>

The site navigation (topics, subjects, and dates) is constructed from the metadata collection. The central RSS feed is built along with the navigation.

Each individual article is validated, using RELAX NG, against a customization of the DocBook schema.

Finally, each page is assembled by the server for presentation. The article, navigation, and page footer are pulled together and shipped to the browser with some CSS. (You can add my voice to the general rant about CSS support in browsers. This site looks pretty good in Mozilla and other browsers with good CSS support. It looks pretty bland in IE, but I think it's legible.)

Pages that are served directly in XML (RDF pages, the RSS feed, and the FOAF page) include a pointer to an XSL stylesheet. They are rendered on the client side by browsers that support the xml-stylesheet processing instruction.

If that all sounds interesting, you can build it yourself.