<?xml version="1.0" encoding="UTF-8"?>
<essay xml:lang="en" version="5.0" 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#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
<info>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
<title>Metadata big bang</title><biblioid class="uri">http://norman.walsh.name/2007/02/18/bigBang</biblioid>
<volumenum>10</volumenum>
<issuenum>14</issuenum>
<pubdate>2007-02-18T19:04:57-05:00</pubdate>
<date>$Date: 2007-02-20 07:37:57 -0500 (Tue, 20 Feb 2007) $</date>
<author>
      <personname>
<firstname>Norman</firstname>
	<surname>Walsh</surname>
</personname>
    </author>
<copyright>
      <year>2007</year>
      <holder>Norman Walsh</holder>
    </copyright>
<abstract>
<para>Hacking httpRange-14.</para>
</abstract>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#RDF"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#SelfReference"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#TAG"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#TheWeb"/>
</info>

<epigraph>
<attribution>
      <personname>
	<firstname>Hubert H.</firstname>
<surname>Humphrey</surname>
      </personname>
    </attribution>
<para xml:id="p2">In real life, unlike in Shakespeare,
the sweetness of the rose depends upon the name it bears. Things are
not only what they are. They are, in very important respects, what
they seem to be.
</para>
</epigraph>

<para xml:id="p1">Semantic web enthusiasts among my readers will have 
encountered the “hash vs. slash” debate, perhaps most famously in 
the <wikipedia page="Technical_Architecture_Group">TAG</wikipedia>'s
attempt to resolve
<link xlink:href="http://norman.walsh.name/2005/06/19/httpRange-14">the
range of HTTP: URIs</link>.</para>

<para xml:id="p3">When I first started this weblog,
<link xlink:href="http://norman.walsh.name/2003/05/14/how">I knew</link>
it was going to be built on top of a semantic web framework, not out of any
fervent belief that it's the future, but out of the conviction that I won't
be able to say whether or not I think it's the future if I don't try it out.</para>

<para xml:id="p4">I also knew
about the hash vs. slash debate.</para>

<para xml:id="p5">While I was never entirely convinced by
the arguments of the “anti-slash” camp, I decided to simply avoid the issue
by using a hash. There's never been any argument about hashed URIs, only slashed
ones. As a result, the identifier for me, my physical person, became:</para>

<programlisting>http://norman.walsh.name/knows/who#norman-walsh</programlisting>

<para xml:id="p6">As time passed, this had a practical consequence. If you dereferenced
that URI, the server would send you the whole “<uri>who</uri>” file that contained
all the metadata about everyone. That file got to be
<emphasis>big</emphasis>.
</para>

<para xml:id="p7">I ignored this problem as long as I could, simply living with
the inconvenience, but when I decided to support “<link xlink:href="../17/onLinking">link groups</link>” I faced a real hurdle.</para>

<para xml:id="p8">The obvious URI for the “link group” about me is the URI that identifies
me. But linking to the hashed URI made following the link way too expensive to
be of practical value. I could have cooked up an alternate URI for the link group,
but that would effectively have been an alias.
<link xlink:href="http://www.w3.org/TR/webarch/#avoid-uri-aliases">Aliases: bad</link>.
</para>

<para xml:id="p9">Unable to come up with a workaround I liked, I decided it was time for a
big bang: I decided to change <emphasis>a whole lot</emphasis> of URIs.
Instead of using a hashed URI to
identify me (and everyone and everything else), I'd use a slashed one:</para>

<programlisting>http://norman.walsh.name/knows/who/norman-walsh</programlisting>

<para xml:id="p10">In order to do this, I felt I needed to implement
<link xlink:href="http://lists.w3.org/Archives/Public/www-tag/2005Jun/0039.html">the
TAG resolution</link> on
<link xlink:href="http://www.w3.org/2001/tag/issues.html#httpRange-14">httpRange-14</link>.
Which I've done:
</para>

<itemizedlist>
<listitem>
<para xml:id="p11">A <code xlink:href="http://en.wikipedia.org/wiki/HTTP#Request_methods">GET</code> on 
<uri>http://norman.walsh.name/knows/who/norman-walsh</uri> returns a
<link xlink:href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4">303
redirect</link>
to 
<uri>http://norman.walsh.name/knows/who/norman-walsh.html</uri>.</para>
</listitem>
<listitem>
<para xml:id="p12">The HTML at
<uri>http://norman.walsh.name/knows/who/norman-walsh.html</uri>
includes a link to the metadata:</para>
<programlisting>&lt;link rel="alternate" type="application/rdf+xml"
      title="Metadata" href="norman-walsh.rdf" /&gt;</programlisting>
<para xml:id="p13">which I hope helps semantic web software find the underlying metadata.</para>
</listitem>
<listitem>
<para xml:id="p14">That metadata in turn contains</para>
<programlisting>&lt;owl:sameAs rdf:resource="http://norman.walsh.name/knows/who#norman-walsh"/&gt;</programlisting>
<para xml:id="p15">which tells the semantic web agent that this URI is entirely equivalent
to the former hashed URI.</para>
</listitem>
</itemizedlist>

<para xml:id="p16">Hopefully this all “just works” in every meaningful way.</para>

</essay>

