<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.jenitennison.com/blog" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>web</title>
 <link>http://www.jenitennison.com/blog/taxonomy/term/12</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>en</language>
<item>
 <title>TAG F2F, June 2011</title>
 <link>http://www.jenitennison.com/blog/node/158</link>
 <description>&lt;p&gt;As you may know, I accepted an appointment to the &lt;a href=&quot;http://www.w3.org/2001/tag/&quot;&gt;W3C&amp;#8217;s Technical Architecture Group&lt;/a&gt; earlier this year. Last week was the first face-to-face meeting that I attended, hosted in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Ray_and_Maria_Stata_Center&quot;&gt;Stata Center&lt;/a&gt; at MIT. As you can tell from the &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda&quot;&gt;agenda&lt;/a&gt; (which was in fact revised as we went along) it was a packed three days.&lt;/p&gt;

&lt;p&gt;What I intend to do here is to briefly report on the major areas that we discussed and give a tiny bit of my own personal take on them. In no way should any of what I write here be judged as revealing the official opinion of the TAG, it&amp;#8217;s just me saying what I think, and I&amp;#8217;m not going to go into anything in depth because they&amp;#8217;re all incredibly gnarly and contentious topics and I&amp;#8217;d not only be here all year but also end up in a tar pit.&lt;/p&gt;

&lt;!--break--&gt;

&lt;h2&gt;Role of the TAG&lt;/h2&gt;

&lt;p&gt;Usefully for me as a newcomer, our first session was about the ongoing role of the TAG. The TAG occupies a unique position within the W3C. According to its &lt;a href=&quot;http://www.w3.org/2004/10/27-tag-charter.html&quot;&gt;charter&lt;/a&gt; it was set up&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To improve the effectiveness of Working Groups, to reduce misunderstandings and overlapping work, and to improve the consistency of Web technologies developed inside and outside W3C&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The TAG ultimately has three routes to do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;by providing specific advice on issues that are brought to its attention&lt;/li&gt;
&lt;li&gt;by writing documents on basic web architecture principles that go through community review, particularly through the general review of the W3C standards track and become Recommendations&lt;/li&gt;
&lt;li&gt;by advising the W3C Director (Tim Berners-Lee) about what he should do on the extremely rare occasions when there are issues that he is supposed to adjudicate on&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In none of these cases is there anything that binds the people receiving the advice of the TAG, or reading Findings or Recommendations made by the TAG, to accept them or do anything about them. The power and authority of the TAG depends solely on the quality and utility of its arguments, which is how it should be in my opinion.&lt;/p&gt;

&lt;h2&gt;Client-Side Application State&lt;/h2&gt;

&lt;p&gt;The first technical session was about &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda#clientState&quot;&gt;client-side application state&lt;/a&gt; and was a review of the &lt;a href=&quot;http://www.w3.org/2001/tag/doc/IdentifyingApplicationState-20110515.html&quot;&gt;Identifying Application State draft&lt;/a&gt; that &lt;a href=&quot;http://en.wikipedia.org/wiki/T._V._Raman&quot;&gt;T.V. Raman&lt;/a&gt; began before he left the TAG and that &lt;a href=&quot;http://www.linkedin.com/pub/ashok-malhotra/4/675/6a2&quot;&gt;Ashok Malhotra&lt;/a&gt; has been working on since. This should in the next few months or so be published as a TAG Finding (though it is currently on the Recommendation track).&lt;/p&gt;

&lt;p&gt;This work is essentially about documenting the different ways in which you can identify application state within a URI, why that&amp;#8217;s a useful thing to do, and some of the pitfalls of using &lt;a href=&quot;http://www.jenitennison.com/blog/node/154&quot;&gt;hash URIs&lt;/a&gt; to do so. Most of the discussion was about details to do with wording within the document. One thing I thought particularly interesting was the point that URI-based application state is relevant in all &amp;#8216;active content&amp;#8217;, not just in HTML; for example, scripting in SVG or in PDFs bring the same considerations.&lt;/p&gt;

&lt;h2&gt;Buffer Bloat&lt;/h2&gt;

&lt;p&gt;Over lunch on Monday we listened to and discussed a presentation by &lt;a href=&quot;http://en.wikipedia.org/wiki/Jim_Gettys&quot;&gt;Jim Gettys&lt;/a&gt; on &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda#bufferbloat&quot;&gt;buffer bloat&lt;/a&gt;. Basically (and all the errors here are introduced by me), TCP/IP is designed to route around network blockages, but it can only do so if it detects them quickly. When you have big buffers in place, as in the case of all modern operating systems and hardware, blockages aren&amp;#8217;t detected quickly; they&amp;#8217;re only detected when the buffers fill up. Then buffers empty and the data has to be sent again. The net result is that connections get really slow, not just for upload or download but for both, not just for you but for everyone using the network.&lt;/p&gt;

&lt;p&gt;Jim talked about how this is exacerbated by the large amount of web traffic and the design of HTTP, particularly the lack of use of HTTP pipelining (whereby several HTTP requests and responses are sent over one long-term connection), because it leads to lots of small messages which can&amp;#8217;t be handled effectively. There&amp;#8217;s lots more about this &lt;a href=&quot;http://gettys.wordpress.com/&quot;&gt;on his blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Jim also talked about the failure of certificate authorities and how we should be looking at distributed protocols using digitally signed data, pointing us in particular to &lt;a href=&quot;http://www.ccnx.org/&quot;&gt;CCNx&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Fragment ID Semantics&lt;/h2&gt;

&lt;p&gt;First thing Tuesday was a session that I led on &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda.html#mimefrag&quot;&gt;fragids&lt;/a&gt;, in particular the problems that are arising out of the mime type registration of +xml types (&lt;a href=&quot;http://www.w3.org/2006/02/son-of-3023/draft-murata-kohn-lilley-xml-04.html#frag&quot;&gt;3023bis&lt;/a&gt;) clashing with those that are used for, say, &lt;a href=&quot;http://www.w3.org/TR/2011/WD-media-frags-20110317/&quot;&gt;images&lt;/a&gt;, and what happens when these come together in something like SVG.&lt;/p&gt;

&lt;p&gt;The same issues arise whenever you have documents with types that &amp;#8216;inherit&amp;#8217; fragid semantics from two directions. For example, XHTML documents are XML documents, so constraints on +xml mean you shouldn&amp;#8217;t use interpreted fragids (eg hash-bangs) on them, but they are also &amp;#8216;active content&amp;#8217; which makes interpreted fragids useful. Similarly, in linked data you shouldn&amp;#8217;t really use a hash URI to mean a Person with a primary resource that provides as a response an XML document with embedded RDFa, because according to XML fragid semantics, such a URI should point to an XML element.&lt;/p&gt;

&lt;p&gt;Basically the use of fragids has grown markedly outside their original scope and these situations aren&amp;#8217;t really covered in the specs. I am now tasked to create a document that describes the issues and suggests ways forward. So that will be fun.&lt;/p&gt;

&lt;h2&gt;Telcon with IAB&lt;/h2&gt;

&lt;p&gt;The second session on Tuesday was a telcon with the &lt;a href=&quot;http://www.iab.org/&quot;&gt;IAB&lt;/a&gt; which has a similar role within the &lt;a href=&quot;http://www.ietf.org/&quot;&gt;IETF&lt;/a&gt; as the TAG does within the W3C. This was a bit of a &amp;#8216;getting to know you&amp;#8217; session, covering the work of the two groups on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;versioning and extensibility&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;privacy, including Do Not Track&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and talking about opportunities to meet and work together on various topics like these.&lt;/p&gt;

&lt;h2&gt;URI Definition Discovery and Metadata Architecture&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda#metadata&quot;&gt;afternoon session on Tuesday&lt;/a&gt; was spent on &lt;a href=&quot;http://mumble.net/~jar/&quot;&gt;Jonathan Rees&amp;#8217;s&lt;/a&gt; work on the &lt;a href=&quot;http://www.w3.org/wiki/AwwswHome&quot;&gt;Architecture of the World Wide Semantic Web&lt;/a&gt;, which covers, amongst other things, what people in semantic web circles call &lt;a href=&quot;http://www.w3.org/wiki/HttpRange14Webography&quot;&gt;httpRange-14&lt;/a&gt;. At core, this is about the kinds of URIs we can use to refer to real-world things, what the response to HTTP requests on those URIs should be, and how we find out information about these resources.&lt;/p&gt;

&lt;p&gt;Jonathan has put together a document called &lt;a href=&quot;http://www.w3.org/2001/tag/awwsw/issue57/20110531/&quot;&gt;Providing and discovering definitions of URIs&lt;/a&gt; which covers the various ways that have been suggested over time, including the 303 method that was &lt;a href=&quot;http://lists.w3.org/Archives/Public/www-tag/2005Jun/0039&quot;&gt;recommended by the TAG in 2005&lt;/a&gt; and methods that have been suggested by various people since that time.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s clear that the 303 method has lots of practical shortcomings for people deploying linked data, and isn&amp;#8217;t the way in which URIs are commonly used by Facebook and schema.org, who don&amp;#8217;t currently care about using separate URIs for documents and the things those documents are about. We discussed these alongside concerns that we continue to support people who want to do things like describe the license or provenance of a document (as well as the facts that it contains) and don&amp;#8217;t introduce anything that is incompatible with the ways in which people who have been following recommended practice are publishing their linked data. The general mood was that we need to support some kind of &amp;#8216;punning&amp;#8217;, whereby a single URI could be used to refer to both a document and a real-world thing, with different properties being assigned to different &amp;#8216;views&amp;#8217; of that resource.&lt;/p&gt;

&lt;p&gt;Jonathan is going to continue to work on the draft, incorporating some other possible approaches. It&amp;#8217;s a &lt;a href=&quot;http://lists.w3.org/Archives/Public/public-lod/2011Jun/0186.html&quot;&gt;very contentious topic within the linked data community&lt;/a&gt;. My opinion is while we need to provide some &amp;#8216;good practice&amp;#8217; guides for linked data publishers, we can&amp;#8217;t just stick to a theoretical ideal that experience has shown not to be practical. What I&amp;#8217;d hope is that the TAG can help to pull together the various arguments for and against different options, and document whatever approach the wider community supports.&lt;/p&gt;

&lt;h2&gt;Can publication of hyperlinks cause copyright infringment?&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda.html#linkcopyright&quot;&gt;first session on Wednesday&lt;/a&gt; was another session that I led, discussing the &lt;a href=&quot;http://www.w3.org/2001/tag/doc/publishingAndLinkingOnTheWeb-2011-05-28&quot;&gt;Publishing and Linking on the Web draft&lt;/a&gt; that &lt;a href=&quot;http://torgo.com/blog/&quot;&gt;Dan Appelquist&lt;/a&gt; and I have been working on.&lt;/p&gt;

&lt;p&gt;The aim of this document is to explain the tensions between terms that are commonly used in legal documents such as &amp;#8220;possession&amp;#8221;, &amp;#8220;adaptation&amp;#8221; and &amp;#8220;distribution&amp;#8221; and the way that publication works on the web, in which multiple servers may have copies of the same document (because they cache copies to make the &amp;#8216;net go faster), automated agents may make changes to those documents (such as compressing or resizing documents, or merging Javascript) and people may refer others to those documents through linking.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re particularly keen to argue that linking to something is not the same thing as distributing it. The web&amp;#8217;s power arises through its links, so it&amp;#8217;s important that people are able to link to something without being worried about what happens when/if the domain they link to is taken over by something illegal.&lt;/p&gt;

&lt;p&gt;Dan and I are going to continue to work on this document in response to various suggestions around organisation and terminology, with a view to getting some &amp;#8216;friendly legal experts&amp;#8217; to look it over and then seeking wider review. The intention is for it to eventually become a Recommendation as this will give greater weight to it as a document for a legal audience.&lt;/p&gt;

&lt;h2&gt;API Minimisation and Client-Side Storage&lt;/h2&gt;

&lt;p&gt;There were then a couple of short sessions.&lt;/p&gt;

&lt;p&gt;Dan talked about &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda.html#apis&quot;&gt;API Minimisation&lt;/a&gt;, which is the design principle that to increase privacy we should design APIs that enable people requesting information to say exactly what information they need, and return only that rather that everything known about a think. Dan&amp;#8217;s put together an &lt;a href=&quot;http://www.w3.org/2001/tag/doc/APIMinimization-20100605.html&quot;&gt;draft&lt;/a&gt; and should be calling for review for it soon.&lt;/p&gt;

&lt;p&gt;Ashok then led discussion on &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda.html#webAppStorage&quot;&gt;client-side storage&lt;/a&gt; and we brainstormed around some of the architectural/design issues about which we might want to write if we were to put together a document. This work is at a very early stage.&lt;/p&gt;

&lt;h2&gt;TAG Priorities&lt;/h2&gt;

&lt;p&gt;After lunch, we had a &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda#priorities&quot;&gt;session on TAG priorities&lt;/a&gt; where we discussed which of the various pieces of work that we&amp;#8217;re doing should receive the most attention and had a quick review of who is doing what within the TAG.&lt;/p&gt;

&lt;p&gt;Our basic problem is that a lot of this stuff feels quite urgent, and we want to be responsive, but with only 5-6 of us &amp;#8220;actively involved&amp;#8221; (which means 1 day/week) in drafting documents, and other TAG duties taking up our time, it feels like we have taken on too much work. Our focus for the next little while is going to be on responding to issues where our lack of response might either hold people up or cause longer term problems (for example the publication of contradictory mime type definitions), which means things like the document on publishing and linking on the web will need to bubble in the background rather than being the focus of activity.&lt;/p&gt;

&lt;h2&gt;HTML5 Last Call&lt;/h2&gt;

&lt;p&gt;Our &lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-agenda.html#htmlreview&quot;&gt;final session&lt;/a&gt;, for which we were joined by &lt;a href=&quot;http://www.w3.org/People/LeHegaret/&quot;&gt;Philippe Le Hégaret&lt;/a&gt;, was on the HTML5 Last Call documents. The TAG has raised various issues over the course of HTML5 development and want to follow up on how those issues have been addressed in the documents. Our role means that we&amp;#8217;re responsible for making sure there&amp;#8217;s consistency with other specifications, and that there isn&amp;#8217;t anything that seems like it&amp;#8217;s going to cause problems in the long term.&lt;/p&gt;

&lt;p&gt;The part that we spent most discussion time on was the relationship between &lt;a href=&quot;http://www.w3.org/TR/2011/WD-microdata-20110525/&quot;&gt;Microdata&lt;/a&gt; and &lt;a href=&quot;http://www.w3.org/TR/2011/WD-rdfa-in-html-20110525/&quot;&gt;RDFa&lt;/a&gt;. We talked about the precedents for having two specifications that do very similar things but with different approaches, such as CSS and XSL, and how this isn&amp;#8217;t necessarily a bad thing so long as they don&amp;#8217;t contradict each other and people can move between them easily (because they have the same conceptual foundations).&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m going to save my opinion on this topic for another post. Suffice it to say that microdata and RDFa as currently specified don&amp;#8217;t work well with each other but it&amp;#8217;s not at all clear what the best path forward is. The TAG decided to recommend that the W3C set up a Task Force to look at what the best way forward might be.&lt;/p&gt;

&lt;h2&gt;Final Words&lt;/h2&gt;

&lt;p&gt;If you want links to the minutes of the TAG F2F, they&amp;#8217;re available within the agenda or on separate pages for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/06-minutes&quot;&gt;Monday 6th June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/07-minutes&quot;&gt;Tuesday 7th June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2001/tag/2011/06/08-minutes&quot;&gt;Wednesday 8th June&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have anything to say on any of these topics, please send email to the &lt;a href=&quot;mailto:www-tag@w3.org&quot;&gt;TAG mailing list&lt;/a&gt;. Or you could comment here or &lt;a href=&quot;mailto:jeni@jenitennison.com&quot;&gt;email me directly&lt;/a&gt; if you like. Which leads me on to talking about what I&amp;#8217;d like to do in the TAG.&lt;/p&gt;

&lt;p&gt;One of the guidance notes for new members to the TAG says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;TAG members are elected or appointed not to represent their individual member organizations, but the Web community as a whole. We try to take that responsibility very seriously.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I do take that responsibility seriously. Web architecture has to be a combination of practice and theory, balancing approaches that work right now with a desire to not break anything long term. I do practical work developing web applications with HTML, CSS, Javascript, XML, RDF, XSLT, XQuery and so on and so on every day, but I know I don&amp;#8217;t see all the difficult corners of the open web standard space: no one person can.&lt;/p&gt;

&lt;p&gt;I can listen though, so that&amp;#8217;s what I will try to do: listen, digest, reflect and act.&lt;/p&gt;

&lt;p&gt;But I have limited resources. Unlike most of the members of the TAG, I am not employed by a large organisation that pays me for time I take on the work that I do for the TAG. The W3C kindly paid for my flights to and from F2Fs, but not hotels or expenses. I wouldn&amp;#8217;t have taken this on if I wasn&amp;#8217;t prepared to shoulder the financial burden, but if there is anyone out there who might sponsor my participation, I&amp;#8217;d love to hear from you.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/158#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/44">html5</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/46">linked data</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/71">microdata</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/42">rdfa</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/73">tag</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/69">uris</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Fri, 17 Jun 2011 10:44:12 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">158 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>Opaque URIs != Unreadable URIs</title>
 <link>http://www.jenitennison.com/blog/node/114</link>
 <description>&lt;p&gt;I&amp;#8217;ve been &lt;a href=&quot;http://www.jenitennison.com/blog/node/112&quot;&gt;talking about URIs&lt;/a&gt; a lot recently. One of the things that has bothered me about some of the conversations is the conflation of the concepts of &amp;#8220;opaque URIs&amp;#8221; and &amp;#8220;non-human-readable URIs&amp;#8221;. This is my argument for keeping the concepts separate.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/DesignIssues/Axioms.html#opaque&quot;&gt;opacity of URIs&lt;/a&gt; is an important axiom in web architecture. It states that web applications must not try to pick apart URIs in order to work out information from them. Applications must not, for example, use the fact that a URI has &lt;code&gt;.html&lt;/code&gt; at the end to infer that it resolves to an HTML document. It&amp;#8217;s closely related to &lt;a href=&quot;http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven&quot;&gt;hypertext as engine of application state&lt;/a&gt;, in that opaque URIs should not be generated by web applications either: they must be discovered through links and the submission of forms.&lt;/p&gt;

&lt;p&gt;But this has nothing to do with readability or hackability, both of which are &lt;a href=&quot;http://www.useit.com/alertbox/990321.html&quot;&gt;extremely important for human users&lt;/a&gt;. Readable URIs help human users understand something about the resource that the URI is pointing to. Hackable URIs (by which I mean ones that people might manipulate by altering or removing portions of the path or query) enable human users to locate other resources that they might be interested in.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;Before I go further, a couple of caveats:&lt;/p&gt;

&lt;p&gt;I am not saying that every URI must contain a natural language identifier. An example is the URI for a school, which could include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the name of the school&lt;/li&gt;
&lt;li&gt;the unique reference number for the school&lt;/li&gt;
&lt;li&gt;the record number for the school in the database that is being published on the web&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using the name of the school, as &lt;a href=&quot;http://www.jenitennison.com/blog/node/112&quot;&gt;I&amp;#8217;ve discussed&lt;/a&gt;, is probably a bad idea because of its lack of longevity. Using the record number for the school within the particular database that&amp;#8217;s being published is entirely non-human-readable because there is simply no way of finding out what that would be for a given school. The unique reference number for the school, on the other hand, may be an obscure series of digits, but it is a meaningful one which renders the URI readable and hackable.&lt;/p&gt;

&lt;p&gt;There are also times when uniquely identifying a resource using natural identifiers within the URI leads to incredibly long and complex URIs, in which case the &amp;#8216;human readable&amp;#8217; version isn&amp;#8217;t actually human readable. Introducing non-human-readable components is then the only option.&lt;/p&gt;

&lt;p&gt;Back to my argument:&lt;/p&gt;

&lt;p&gt;Why should URIs support humans doing things that applications must not? Because humans are intelligent. When humans hack a URI, they are aware that they are making a guess, taking a chance and might or might not end up at something useful. If they get a 404, or even more importantly if they get to information about something that they weren&amp;#8217;t expecting, they are intelligent enough to recognise that the chance they took didn&amp;#8217;t pay off. Applications aren&amp;#8217;t intelligent. They can&amp;#8217;t tell the difference between a right guess and a wrong guess, so it&amp;#8217;s best not to let them guess at all.&lt;/p&gt;

&lt;p&gt;Let me give an example. Let&amp;#8217;s say that I&amp;#8217;m creating a URI for a particular house. Here are two possible URIs:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/house/NG9_3HZ/4
http://id.example.org/house/0aef0218
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The first is readable and hackable. A human could change the house number or the postcode. They could remove the house number and expect a list of houses within the postcode. The second is not readable or hackable: there is no way to know what you would get if you changed the identifier within the URI.&lt;/p&gt;

&lt;p&gt;Now it is true that an application accessing a site that used the URIs like the first could create those URIs programmatically whereas it couldn&amp;#8217;t (perhaps) create a URI like the second. But if it did create the URIs programmatically it would be the fault of the application, not the fault of the URI.&lt;/p&gt;

&lt;p&gt;As publishers, it is our responsibility to provide humans URIs that are meaningful and hackable, and to provide applications with the means of creating or identifying these URIs through forms and links. But it is not our responsibility to prevent applications from doing things that they should not do by deliberately obfuscating our URIs.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/114#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/22">rest</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/48">uri</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Sat, 25 Jul 2009 20:41:34 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">114 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>Versioning URIs</title>
 <link>http://www.jenitennison.com/blog/node/112</link>
 <description>&lt;p&gt;Yesterday I went along to a workshop on developing URI guidelines for the UK public sector. Because of the current drive to get more UK public sector information online, and the fact that &lt;a href=&quot;http://blogs.cabinetoffice.gov.uk/digitalengagement/post/2009/06/09/Data-So-what-happens-now.aspx&quot;&gt;we have Tim Berners-Lee on board&lt;/a&gt;, there&amp;#8217;s a growing recognition of the fact that we need URIs for the real-world and conceptual things that we talk about in the public sector: schools, roads, hospitals, services, councils, and so on.&lt;/p&gt;

&lt;p&gt;One of the particular points of contention at the meeting was whether URIs for non-information resources (ie for real-world and conceptual things) should contain dates or version numbers, or not.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;Let&amp;#8217;s get some of the argument out of the way first. We are not talking about documents here. Documents will almost always have multiple versions, and if you care at all about maintaining a historical record you will want to refer to the previous version of a document. So dates or version numbers within URIs that refer to documents are often a really good idea. Even better if you have one URI &lt;em&gt;without&lt;/em&gt; a date that consistently redirects (through a &lt;code&gt;307 Temporary Redirect&lt;/code&gt;) to the current version of the document.&lt;/p&gt;

&lt;p&gt;Documents (that people read) are just one form of &lt;strong&gt;&amp;#8220;information resource&amp;#8221;&lt;/strong&gt;: things that are information and therefore can be transmitted electronically. Other things in the world are &lt;strong&gt;&amp;#8220;non-information resources&amp;#8221;&lt;/strong&gt;: things that are more than simple information and therefore cannot be transmitted electronically, such as schools, roads, hospitals and so on. A lot of things that we want to talk about (make RDF assertions about) are non-information resources. We give them URIs to name them, so that we can talk about them unambiguously, and we give them HTTP URIs so that we have a way of finding information resources (documents) that give us information &lt;em&gt;about&lt;/em&gt; them.&lt;/p&gt;

&lt;p&gt;Does the information that you get when you resolve a non-information resource URI change? Absolutely. A request to a non-information resource URI will respond with a &lt;code&gt;303 See Other&lt;/code&gt; that redirects to an information resource (probably without a version number) that itself redirects (&lt;code&gt;307 Temporary Redirect&lt;/code&gt;) to a URI for a particular version of information about the resource. For example an identifier that means a particular school such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/education/school/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;can 303 redirect to the current version of a document that contains information about that school, such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://www.example.org/education/school/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which will 307 redirect to a particular version of information about that school, such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://www.example.org/education/school/78/2008-09-01
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The date is in the URI for the information resource (the information about the school), and therefore it doesn&amp;#8217;t need to be in the URI for the non-information resource (the school).&lt;/p&gt;

&lt;p&gt;OK, but say that the identifier for a school changes over time. Let&amp;#8217;s say that you&amp;#8217;ve designed your URIs for schools like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/school/bracknell-forest/broadmoor-primary
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and the name of the school changes. Now the above identifier isn&amp;#8217;t applicable any more, and any RDF statements out there on the web that have used this identifier are now talking about something that no longer exists. How do you deal with this?&lt;/p&gt;

&lt;p&gt;Well, the first rule is that &lt;strong&gt;non-information resource URIs must not include information that is likely to change&lt;/strong&gt;. That&amp;#8217;s why a lot of URIs contain numbers rather than names. So we shouldn&amp;#8217;t have included the name of the school in the URI? OK, we&amp;#8217;ll use a number instead:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/school/bracknell-forest/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hang on. Bracknell Forest is a council, and historically it&amp;#8217;s been known for councils to change, either in their boundaries (which would mean that a school would move council) or in its name, or they are merged, or&amp;#8230; well, there are lots of things that could happen to a council. So in the face of all these possibilities, and given that we no longer need the council name to disambiguate the school name (because we have a number instead), we can employ a second rule: &lt;strong&gt;non-information resource URIs must not include unnecessary hierarchy&lt;/strong&gt;. We can eliminate part of the path and still identify the school:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/school/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And so we come to the final thing that could change: &amp;#8220;school&amp;#8221;. Now surely, you might say, the concept of a school cannot change. And maybe you&amp;#8217;re right, maybe it won&amp;#8217;t. On the other hand, in the UK we have in the past had things called &lt;a href=&quot;http://en.wikipedia.org/wiki/Polytechnic_(United_Kingdom&quot;&gt;polytechnics&lt;/a&gt;), which are now known as universities, so the types of educational establishments that we have do change over time.&lt;/p&gt;

&lt;p&gt;We could do a bunch of things to help prevent a conceptual change like this from requiring a change to the URI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;we keep the number of concepts named within the URI to a minimum (eg don&amp;#8217;t have both &amp;#8216;education&amp;#8217; and &amp;#8216;school&amp;#8217;)&lt;/li&gt;
&lt;li&gt;we use wide terms rather than narrow terms (eg use a generic &amp;#8216;school&amp;#8217; rather than having separate &amp;#8216;grammar-school&amp;#8217;, &amp;#8216;primary-school&amp;#8217; and so on)&lt;/li&gt;
&lt;li&gt;we could change the term &amp;#8216;school&amp;#8217; to a code (eg use &amp;#8216;C3X0&amp;#8217; instead of &amp;#8216;school&amp;#8217;), but I don&amp;#8217;t think this will help: you&amp;#8217;ll still have problems if &amp;#8216;C3X0&amp;#8217; and &amp;#8216;F9R2&amp;#8217; mean the same thing in the future, whatever they&amp;#8217;re called.&lt;/li&gt;
&lt;li&gt;we could eliminate the concept term from the URI altogether, and label everything under one flat naming scheme, using something that has billions and billions of possible combinations. I know, a UUID! No, I&amp;#8217;m not serious.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And so we come to the question of versioning the URIs themselves. This is what Tim Berners-Lee says in &lt;a href=&quot;http://www.w3.org/Provider/Style/URI&quot;&gt;Cool URIs don&amp;#8217;t change&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I&amp;#8217;ll go into this danger in more detail as it is one of the more difficult things to avoid. Typically, topics end up in URIs when you classify your documents according to a breakdown of the work you are doing. That breakdown will change. Names for areas will change. At W3C we wanted to change &amp;#8220;MarkUp&amp;#8221; to &amp;#8220;Markup&amp;#8221; and then to &amp;#8220;HTML&amp;#8221; to reflect the actual content of the section. Also, beware that this is often a flat name space. In 100 years are you sure you won&amp;#8217;t want to reuse anything? We wanted to reuse &amp;#8220;History&amp;#8221; and &amp;#8220;Stylesheets&amp;#8221; for example in our short life.&lt;/p&gt;
  
  &lt;p&gt;This is a tempting way of organizing a web site - and indeed a tempting way of organizing anything, including the whole web. It is a great medium term solution but has serious drawbacks in the long term&lt;/p&gt;
  
  &lt;p&gt;Part of the reasons for this lie in the philosophy of meaning. every term in the language it a potential clustering subject, and each person can have a different idea of what it means. Because the relationships between subjects are web-like rather than tree-like, even for people who agree on a web may pick a different tree representation. These are my (oft repeated) general comments on the dangers of hierarchical classification as a general solution.&lt;/p&gt;
  
  &lt;p&gt;Effectively, when you use a topic name in a URI you are binding yourself to some classification. You may in the future prefer a different one. Then, the URI will be liable to break.&lt;/p&gt;
  
  &lt;p&gt;A reason for using a topic area as part of the URI is that responsibility for sub-parts of a URI space is typically delegated, and then you need a name for the organizational body - the subdivision or group or whatever - which has responsibility for that sub-space. This is binding your URIs to the organizational structure. It is typically safe only when protected by a date further up the URI (to the left of it): 1998/pics can be taken to mean for your server &amp;#8220;what we meant in 1998 by pics&amp;#8221;, rather than &amp;#8220;what in 1998 we did with what we now refer to as pics.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let&amp;#8217;s spell out the danger with some examples. Let&amp;#8217;s say that in 20 year&amp;#8217;s time, nurseries and primary schools merge into &amp;#8216;schools&amp;#8217; and secondary schools, sixth-form colleges and universities merge into &amp;#8216;academies&amp;#8217;. A particular primary school currently known as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/school/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;will continue to be known by that URI. A particular university currently known as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/university/307
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;is now known as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/academy/79
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To support these changes, we have to set up some &lt;code&gt;301 Moved Permanently&lt;/code&gt; redirects;  &lt;code&gt;http://id.example.org/university/307&lt;/code&gt; has to redirect to &lt;code&gt;http://id.example.org/academy/79&lt;/code&gt;. The RDF found at the end of the new URIs has to include &lt;code&gt;owl:sameAs&lt;/code&gt; triples that link the new URIs back to the old ones, to indicate they are talking about the same institution:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;http://id.example.org/academy/79&amp;gt; owl:sameAs &amp;lt;http://id.example.org/university/307&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or this would be &lt;a href=&quot;http://www.ldodds.com/blog/2007/03/the-semantics-of-301-moved-permanently/&quot;&gt;derived from the 301 response&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Similar changes may or may not happen within the RDF hosted elsewhere that talks about these institutions. Since it can be discovered that they are identical, there&amp;#8217;s no real reason for anyone to start using the new URIs unless they want to.&lt;/p&gt;

&lt;p&gt;Then 30 years later, the government of the time decide to create a new kind of institution which they call a &amp;#8216;university&amp;#8217;. The university of 50 years hence isn&amp;#8217;t actually the same as the &amp;#8216;university&amp;#8217; as we mean it &amp;#8212; they are virtual meeting places for independent researchers, each centered on a particular topic of study rather than a physical location &amp;#8212; but they need URIs. And since they are called &amp;#8216;university&amp;#8217; that is the name that should be used in the URI. Now someone mints the URI:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/university/307
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But disaster! This University 307 is not at all the same as the old University 307, now known as Academy 79. The same URI has been used for two different things. Redirections halt, graphs are smushed, distinctions are lost and fallacies haunt the web.&lt;/p&gt;

&lt;p&gt;TimBL&amp;#8217;s solution to this possibility is for every URI that includes a topic to include the year in which the topic was minted. So we would have:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/2009/school/78
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;that remains the same, and then:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/2009/university/307
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;redirecting to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/2029/academy/79
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and the introduction of:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/2059/university/307
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which can be guaranteed to be distinct from &lt;code&gt;http://id.example.org/2009/university/307&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This, to me, is the crux of the argument for including a version inside the URIs that you use for non-information resources. It means that you can reuse old terms with new meanings within URIs without breaking the web.&lt;/p&gt;

&lt;p&gt;On the other hand, many people, myself among them, really dislike the use of years or version numbers within URIs for non-information resources (unless, I should say, they are used as part of the identification of the resource). I think there are four main reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;they are additional cruft that add to the length of a URI but provide no information about the thing being identified&lt;/li&gt;
&lt;li&gt;they can give a misleading impression about the relevance of a concept; for example &lt;a href=&quot;http://xmlns.com/foaf/spec/&quot;&gt;FOAF&lt;/a&gt; is stuck at version 0.1 (&lt;code&gt;http://xmlns.com/foaf/0.1/&lt;/code&gt;) despite being widely used, while &lt;code&gt;http://www.w3.org/1998/Math/MathML&lt;/code&gt; is feeling distinctly old (in internet time) despite being under active development&lt;/li&gt;
&lt;li&gt;it leads to a proliferation of URIs and creates additional work for people who want to keep their URIs up to date, even when the concepts themselves don&amp;#8217;t change (such as for the primary school&amp;#8217;s URI above)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In essence, the likelihood of a term being reused with a different meaning seems low enough that the cost (in readability, understandability and maintainability) of supporting URIs that contain versions or years doesn&amp;#8217;t seem worthwhile. We can keep the likelihood low by using terms that are unlikely to change their meaning (particularly avoiding those that have more than one meaning) and by disambiguating them (for example by using &amp;#8216;train-station&amp;#8217; rather than just &amp;#8216;station&amp;#8217;).&lt;/p&gt;

&lt;p&gt;There is also, perhaps, a middle way here that can keep the majority of URIs clean without leading to overlapping names. That&amp;#8217;s to start with a URI scheme that does not include a version number or year, and only to start introducing them when it becomes necessary due to the reuse of previous terms. In the example above, in 2059 we might have:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://id.example.org/school/78
http://id.example.org/academy/79
http://id.example.org/university2.0/307
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In other words, we make a decision now that our future selves will have to act upon. All we have to worry about is our future selves caring as much about persisting historical URIs as we do about persisting our current ones.&lt;/p&gt;

&lt;p&gt;What do you think? Should versioning be avoided in URIs at all costs, or always be included just in case? Are there other arguments for or against including versions or years in URIs? What other design considerations are there that help prevent changes to URIs over (long periods of) time?&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/112#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/31">rdf</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/48">uri</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Wed, 22 Jul 2009 22:16:20 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">112 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>Your Website is Your API: Quick Wins for Government Data</title>
 <link>http://www.jenitennison.com/blog/node/100</link>
 <description>&lt;p&gt;&lt;em&gt;This is the talk I prepared for the UKGovWeb Barcamp, in blog form. It&amp;#8217;s probably better this way. Most of what&amp;#8217;s written here seems blindingly obvious to me, and probably to most readers of this blog, but maybe Google will direct someone here who finds it useful.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Working with public-sector information on the web, one of the things that I take an interest in is making government data freely available for anyone to re-present, mash-up, analyse and generally do whatever they want to do. This post is born out of a feeling that the people who control data don&amp;#8217;t realise that the smallest changes can be beneficial: they don&amp;#8217;t need to do &lt;em&gt;everything&lt;/em&gt; right now, just &lt;em&gt;something&lt;/em&gt;.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;There are three fundamental things that you need to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;identify&lt;/strong&gt; the data that you control&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;represent&lt;/strong&gt; that data in a way that people can use&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;expose&lt;/strong&gt; the data to the wider world&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;but you can choose the degree to which you do each of these things.&lt;/p&gt;

&lt;h2&gt;Identify&lt;/h2&gt;

&lt;p&gt;Take a look at what data you have some kind of responsibility for or control over. You might be a PDF containing a table of schools in the local area and their intakes over the last couple of years. You might have a spreadsheet of the amount of money assigned to maintaining the playgrounds within the borough. You might have a database of company information. You might have a set of HTML agendas for court cases.&lt;/p&gt;

&lt;p&gt;The first step is simply to identify what the information is &lt;em&gt;about&lt;/em&gt;. Schools, playgrounds, companies, court cases &amp;#8212; each row in your table or spreadsheet or database, or each section in your document will be about something. We call this a &lt;strong&gt;resource&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To play nicely with the web, every resource should have an &lt;strong&gt;identifier&lt;/strong&gt;. A Uniform Resource Identifier. A URI. That URI tells us where we can find information about the resource (we&amp;#8217;ll get to what those look like later). So your second step is to work out URIs for each of your resources.&lt;/p&gt;

&lt;p&gt;Now, there are actually three levels of URIs that you can care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;identifier URIs&lt;/li&gt;
&lt;li&gt;document URIs&lt;/li&gt;
&lt;li&gt;representation URIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You probably already have document and representation URIs on your web server. Representation URIs are URIs for particular formats and languages and views of the information that you make available. Document URIs are typically the same URI without an extension; web servers use &lt;strong&gt;content negotiation&lt;/strong&gt; to work out which representation to serve up when a web browser asks for the page at a particular document URI.&lt;/p&gt;

&lt;p&gt;So you already have a URI for the PDF that contains the table of schools, for the Excel spreadsheet about the playgrounds. You already have URIs for the results of a particular query on your database, and of course the HTML pages that you deliver have URIs already. That&amp;#8217;s all in place. You don&amp;#8217;t want to change it.&lt;/p&gt;

&lt;p&gt;But identifier URIs are what are really important when it comes to opening up your data. They shift the focus from the documents that you serve to the resources that they are about. &lt;strong&gt;By assigning URIs to resources, you enable other people to talk about them. Even if that&amp;#8217;s all you do, you have done good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, if &lt;a href=&quot;http://www.companieshouse.co.uk/&quot; title=&quot;Companies House&quot;&gt;Companies House&lt;/a&gt; stated that companies could be referred to using URIs of the form &lt;code&gt;http://www.companieshouse.co.uk/id/company/{registeredNumber}&lt;/code&gt; then other people who needed to talk about companies (websites containing customer feedback, monitoring companies going into receivership, displaying stock price information, whatever) could use these URIs whenever they referred to a company. If all websites that make data available about companies point to the same identifier for a company, then it&amp;#8217;s possible to pull that data together very easily.&lt;/p&gt;

&lt;p&gt;Now the URIs that you use should be short, clean, readable, hackable, hierarchical and so on. If you can, &lt;strong&gt;you should use a natural identifier for the resource within the URI for that resource&lt;/strong&gt;. So URIs for registered companies should use their registered number. URIs for schools should use the school&amp;#8217;s unique reference number (URN). URIs for playgrounds could use the name of the playground (scoped within the council responsible for the playground). URIs for court cases should include the court, the year, and the case number. And so on.&lt;/p&gt;

&lt;p&gt;Remember as you&amp;#8217;re creating these identifier URIs that they are nothing to do with the structure of your website or the user&amp;#8217;s experience of navigating through your website. For navigation, you might want to group schools into primary, secondary and sixth-form, but you shouldn&amp;#8217;t do that in the identifier URIs. To help decide, imagine someone wanting to construct a URI and the information that they need to do so. If any of the information they need can be derived from other information (as a school&amp;#8217;s type can be derived from its URN), leave it out.&lt;/p&gt;

&lt;p&gt;When you&amp;#8217;re doing this, you might realise that actually you shouldn&amp;#8217;t be the one in control of these URIs. If you&amp;#8217;re not the one assigning the registered number, URN or case number then there&amp;#8217;s probably a higher authority that does assign those (real-world) identifiers. Don&amp;#8217;t let that stop you creating URIs &amp;#8212; you&amp;#8217;ll still find them useful for identifying &lt;em&gt;your&lt;/em&gt; information about that particular resource &amp;#8212; but do look to see if there are existing URIs that you could point to and reuse whatever scheme they&amp;#8217;re using if there are.&lt;/p&gt;

&lt;h2&gt;Represent&lt;/h2&gt;

&lt;p&gt;So I said in the last section that assigning URIs to resources was useful. And it is. But it&amp;#8217;s even more useful if you provide some kind of response when someone &lt;strong&gt;requests&lt;/strong&gt; those URIs. A request for a URI can be done by a web browser or one of those search-engine-spider-things that crawls the web looking for data. Requests are done on the web using HTTP (hypertext transfer protocol), specifically using a &lt;strong&gt;GET&lt;/strong&gt; request, which means &amp;#8220;get this resource&amp;#8221;.&lt;/p&gt;

&lt;p&gt;When a web server receives a request, it sends back a &lt;strong&gt;response&lt;/strong&gt;. The first part of the response is a &lt;strong&gt;status code&lt;/strong&gt; that tells the browser, spider, or whatever issued the request, generally what kind of response it is. Now when a browser says &amp;#8220;get this company&amp;#8221; or &amp;#8220;get this school&amp;#8221; a web server should either respond with a &lt;code&gt;404 Not Found&lt;/code&gt; response or a &lt;code&gt;303 See Other&lt;/code&gt; response.&lt;/p&gt;

&lt;p&gt;If the company or school doesn&amp;#8217;t exist, a web server should respond with a &lt;code&gt;404 Not Found&lt;/code&gt; response. It&amp;#8217;s actually really useful to give appropriate &lt;code&gt;404 Not Found&lt;/code&gt; responses, because it tells whoever made the request that the resource (company/school/playground/court case) doesn&amp;#8217;t exist. This can act as simple validation: if I&amp;#8217;m building a site that parents can use to rate schools, and a parent enters a URN into a form, I can construct a URI based on that URN, try to GET the information about that school, and if I get a &lt;code&gt;404 Not Found&lt;/code&gt; response then I know that the parent has entered an invalid URN.&lt;/p&gt;

&lt;p&gt;If the company or school exists, a web server should respond with a &lt;code&gt;303 See Other&lt;/code&gt; response that points the browser to a &lt;em&gt;document URI&lt;/em&gt; that contains information about the company or school. After all, the web server can&amp;#8217;t very well deliver the company or school itself into your lap; all it can do is give you &lt;em&gt;information&lt;/em&gt; about it. &lt;code&gt;303 See Other&lt;/code&gt; means &amp;#8220;if you want information about that, see that other thing over there instead&amp;#8221;. The &amp;#8220;other thing over there&amp;#8221; will be a document of some kind. It might be the PDF that contains information about the school, or the spreadsheet that contains information about the playground.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simply giving a yes-this-exists or no-this-doesn&amp;#8217;t-exist response is useful. Even if that&amp;#8217;s all you do, you have done good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s even more useful, though, if you can make the information that you have about the school, playground, company, court case or whatever, available in a format that can be processed by a computer reasonably easily. PDFs are really really hard to extract information from, so do everything you can not to use PDFs. Word documents and Excel spreadsheets are next worse; if you have to use them, keep them really really simple and definitely don&amp;#8217;t use Word Art or embed images to display your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You should always make your data available in HTML.&lt;/strong&gt; Try to make it as clean and regular as you can; use &lt;a href=&quot;http://www.microformats.org/&quot; title=&quot;microformats&quot;&gt;microformats&lt;/a&gt; to indicate information about people, places and events. If you want to push the boat out, use &lt;a href=&quot;http://www.w3.org/TR/xhtml-rdfa-primer/&quot; title=&quot;W3C: RDFa Primer&quot;&gt;RDFa&lt;/a&gt; to mark up the data in your page even more explicitly.&lt;/p&gt;

&lt;p&gt;The great thing about HTML is that it&amp;#8217;s human readable as well as (if you do it well) machine readable. You can also make your data available in explicitly machine-readable forms as well if you want: XML, JSON, RDF/XML, whatever floats your boat. If there are already standard formats or ontologies for the kind of data that you&amp;#8217;re making available, then use them, certainly, but it&amp;#8217;s very likely that there aren&amp;#8217;t. And in comparison to the nightmare of extracting anything useful from a PDF, it&amp;#8217;s easy to transform between different formats, so you only have to concern yourself with different formats if you want to.&lt;/p&gt;

&lt;p&gt;If you do provide multiple formats for your data, you should use server-driven content negotiation to deliver the data in an appropriate format to whatever&amp;#8217;s requesting it. So a web browser will request HTML; a semantic web crawler will request RDF/XML; a Javascript program will request JSON and so on. The &lt;code&gt;200 OK&lt;/code&gt; response that the web server sends with your data should include a &lt;code&gt;Content-Location&lt;/code&gt; header that gives the representation URI of whichever format is being returned, and a &lt;code&gt;Vary&lt;/code&gt; header that tells caches how it&amp;#8217;s decided which representation to serve up.&lt;/p&gt;

&lt;h2&gt;Expose&lt;/h2&gt;

&lt;p&gt;All the good work identifying resources and representing them comes to naught if you don&amp;#8217;t expose it. You can (and should!) tell other people about the URIs that you&amp;#8217;ve developed, but the best way to give them exposure is to use them yourself, within your website. &lt;strong&gt;Simply using the URIs within your website gives them exposure. Even if that&amp;#8217;s all you do, you have done good.&lt;/strong&gt; People who are interested in linking to you will look at your site and they will learn about your URI scheme from your use of it.&lt;/p&gt;

&lt;p&gt;The identifier URIs that you&amp;#8217;ve created might not be particularly easy to generate. For example, with the URI scheme that I suggested above for Companies House, unless you happen to know that Tesco Plc&amp;#8217;s registered company number is &lt;code&gt;00445790&lt;/code&gt;, you&amp;#8217;re not going to be able to get to information about them. So &lt;strong&gt;you should have a way of searching&lt;/strong&gt; based on something that people &lt;em&gt;will&lt;/em&gt; know, such as the name of the company. Use an HTML search form that makes GET requests like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://www.companieshouse.gov.uk/company?name=Tesco Plc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The response should be a &lt;code&gt;302 Found&lt;/code&gt; that redirects (using the &lt;code&gt;Location&lt;/code&gt; header) to the true identifier URI for the company (&lt;code&gt;http://www.companieshouse.gov.uk/id/company/00445790&lt;/code&gt;). If it&amp;#8217;s not possible to identify a single resource from the search string (for example, there are lots of companies with &amp;#8216;Tesco&amp;#8217; in their name), then the correct response is a &lt;code&gt;300 Multiple Choices&lt;/code&gt; that provides a list of links to the possible URIs (in HTML).&lt;/p&gt;

&lt;p&gt;There are other ways to help people find your data. If there aren&amp;#8217;t gazillions of resources, you can list the URIs within your &lt;strong&gt;sitemap&lt;/strong&gt;, which will make them discoverable by search engines. You can also list them on web pages and, especially for data that&amp;#8217;s constantly updating, in (Atom) &lt;strong&gt;feeds&lt;/strong&gt; which you link to from your HTML pages. Use metadata within the pages and feeds to help the consumers of your data work out what&amp;#8217;s relevant to them.&lt;/p&gt;

&lt;p&gt;To help even more, slice your Atom feeds into portions that different consumers of your data are going to be interested in. Slice by type, by area, by subject. That way people can stay up to date with just the resources that they&amp;#8217;re interested in, and not be bothered with information about those that are irrelevant to them.&lt;/p&gt;

&lt;h2&gt;That&amp;#8217;s It&lt;/h2&gt;

&lt;p&gt;What I&amp;#8217;ve tried to describe here is the minimum that you need to do to help people use the information you have, and some of the other things that you can do to make it even more useful. Here are some things that you shouldn&amp;#8217;t do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;don&amp;#8217;t wait for someone else to define a URI scheme for the things that you want to talk about&lt;/li&gt;
&lt;li&gt;don&amp;#8217;t wait for someone else to define an XML schema or RDF ontology for your data&lt;/li&gt;
&lt;li&gt;don&amp;#8217;t wait until you can find the time and money to do it all &amp;#8220;properly&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just do what you can, now.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/100#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/14">xml</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/18">atom</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/42">rdfa</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/22">rest</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/43">ukgc09</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Sun, 01 Feb 2009 09:28:57 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">100 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>The Distributed Web</title>
 <link>http://www.jenitennison.com/blog/node/90</link>
 <description>&lt;p&gt;XTech was subtitled &amp;#8220;the mobile web&amp;#8221;, but one of the major themes for me was that of &lt;strong&gt;the distributed web&lt;/strong&gt;. The &lt;a href=&quot;http://assets.expectnation.com/15/event/3/Why%20%22open%22%20matters%20—%20from%20innovation%20to%20commoditisation%20Paper%201.pdf&quot; title=&quot;XTech 2008: Why &amp;quot;open&amp;quot; matters — from innovation to commoditisation&quot;&gt;first keynote&lt;/a&gt;, by &lt;a href=&quot;http://www.gardeviance.org/about-me&quot; title=&quot;Simon Wardley&quot;&gt;Simon Wardley&lt;/a&gt;, gave a vision of a future in which hardware, frameworks and applications are services in the cloud rather than products on machines we own: where we use &lt;a href=&quot;http://www.flickr.com/&quot; title=&quot;flickr&quot;&gt;flickr&lt;/a&gt; to store our photographs, &lt;a href=&quot;http://code.google.com/appengine/&quot; title=&quot;Google App Engine&quot;&gt;Google App Engine&lt;/a&gt; to host our applications, and &lt;a href=&quot;http://www.amazon.com/gp/browse.html?node=16427261&quot; title=&quot;Amazon Simple Storage Service&quot;&gt;Amazon S3&lt;/a&gt; to store our data. In &lt;a href=&quot;http://www.davidrecordon.com/&quot; title=&quot;David Recordon&quot;&gt;David Recordon&lt;/a&gt;&amp;#8217;s keynote (&lt;a href=&quot;http://adactio.com/journal/1461/&quot; title=&quot;Adactio: David Recordon’s XTech keynote&quot;&gt;written up by Jeremy Keith&lt;/a&gt;), he talked about small, specific services provided by sites that aren&amp;#8217;t &amp;#8220;destination sites&amp;#8221;. The same picture was painted by &lt;a href=&quot;http://morethanseven.net/&quot; title=&quot;Gareth Rushgrove&quot;&gt;Gareth Rushgrove&lt;/a&gt; in his talk on &lt;a href=&quot;http://2008.xtech.org/public/schedule/detail/549&quot; title=&quot;XTech 2008: Design Strategies for a Distributed Web&quot;&gt;Design Strategies for a Distributed Web&lt;/a&gt;.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;So I was surprised at how contentious &lt;a href=&quot;http://www.cwi.nl/~steven/&quot; title=&quot;Steven Pemberton&quot;&gt;Steven Pemberton&lt;/a&gt;&amp;#8217;s talk on &lt;a href=&quot;http://2008.xtech.org/public/schedule/detail/545&quot; title=&quot;XTech 2008: Why you should have a Website&quot;&gt;Why you should have a Website&lt;/a&gt; (thankfully again &lt;a href=&quot;http://adactio.com/journal/1468/&quot; title=&quot;Adactio: Why you should have a Website&quot;&gt;documented by Jeremy Keith&lt;/a&gt;) proved to be. Because to me it seemed to be the logical extension to the distribution of hardware, frameworks and application: the distribution of data. In fact, I&amp;#8217;ve &lt;a href=&quot;http://www.jenitennison.com/blog/node/60&quot; title=&quot;Jeni&#039;s Musings: A sketch: personal APP servers and feed-based web apps&quot;&gt;written about the same idea myself&lt;/a&gt;, &lt;a href=&quot;http://www.ldodds.com/blog/archives/000330.html&quot; title=&quot;Lost Boy: Google AppEngine for Personal Web Presence?&quot;&gt;as has Leigh Dodds&lt;/a&gt;, more recently.&lt;/p&gt;

&lt;p&gt;From the session, the main question seems to be &amp;#8220;how could we do flickr without them holding our data?&amp;#8221; I don&amp;#8217;t want to particularly pick on flickr, especially because it&amp;#8217;s not one of the worst offenders, but the problem of serving and sharing images does illustrate a whole range of issues, so I will use it as an example. I could just as easily be talking about ancestry.com. The way I see it, you need three levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;providers&lt;/strong&gt; which make information available in known formats&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;user interfaces&lt;/strong&gt; which provide the end-user with a way to access and manipulate the information&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;brokers&lt;/strong&gt; which locate information on the web and provide an aggregated interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(It occurs to me that this is similar to a model/view/controller architecture: the providers give the model, the user interfaces give the views and the brokers control the flow between the two.)&lt;/p&gt;

&lt;p&gt;Where flickr is at the moment is a conglomeration of the three: to have your photo appear on flickr, and to gain the advantages that it gives you in terms of tag-based aggregations and social networking, you have to upload it. They are then the provider of the image+metadata (perhaps the only place it is located on the web), the user interface on the image+metadata (the interface through which the image is annotated), and the broker (they provide keyword-based retrieval, for example).&lt;/p&gt;

&lt;p&gt;What would it look like to separate those functions?&lt;/p&gt;

&lt;p&gt;First, you, as the owner of the image+metadata, could put your data anywhere: on a home wireless network box, on a webserver hosted by an ISP of your choice, on a site specifically designed for hosting photos. Your data is exposed to the larger web through a standard read/write protocol (I&amp;#8217;m betting on &lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot; title=&quot;RFC 5023: The Atom Publishing Protocol&quot;&gt;AtomPub&lt;/a&gt;) that allows you to provide metadata both about resources and the links between resources. The point of it being read/write is that it allows other people to add metadata to or links from your resource to others, such as adding a comment on your image.&lt;/p&gt;

&lt;p&gt;Second, an information broker would locate your photos by crawling for them (or perhaps by you submitting the URL somewhere, but mostly that shouldn&amp;#8217;t be necessary). There are already information brokers around: Google provides a &lt;a href=&quot;http://code.google.com/apis/ajaxsearch/documentation/#fonje&quot; title=&quot;Google AJAX Search API&quot;&gt;RESTful API for general search results&lt;/a&gt;, &lt;a href=&quot;http://developer.yahoo.com/search/&quot; title=&quot;Yahoo Search Web Services&quot;&gt;as does Yahoo!&lt;/a&gt;; at XTech, &lt;a href=&quot;http://dowhatimean.net/&quot; title=&quot;Richard Cyganiak&quot;&gt;Richard Cyganiak&lt;/a&gt; talked about &lt;a href=&quot;http://sindice.com/&quot; title=&quot;Sindice&quot;&gt;Sindice&lt;/a&gt;, and &lt;a href=&quot;http://sw.deri.org/~aidanh/&quot; title=&quot;Aidan Hogan&quot;&gt;Aidan Hogan&lt;/a&gt; about the &lt;a href=&quot;http://www.swse.org/&quot; title=&quot;Semantic Web Search Engine&quot;&gt;Semantic Web Search Engine&lt;/a&gt;, both of which crawl for RDF triples and provide an API for querying the results. In an AtomPub-based environment, you&amp;#8217;d want an information broker that located Atom feeds and resources, indexed them, and provided an AtomPub-based API for publishers to use.&lt;/p&gt;

&lt;p&gt;Third, a user interface would provide an attractive and usable front-end that brought together many different sets of information. For example, flickr might combine your friends feed with an image search to provide a view of images recently made available by your friends. There&amp;#8217;s no requirement for your friends to use flickr for this to work: flickr queries a broker for a list of your friends, then queries a broker for images by a particular person, the broker searches its index and points the application to the original resources that are provided by your friends.&lt;/p&gt;

&lt;p&gt;A user interface has another role, though: to add to the web. Flickr wants to make it easy to add tags to photos, to create sets and collections that help you navigate your photos, for others to add comments and so on and on. And that&amp;#8217;s fine, because AtomPub is a read/write API. To add a tag to a photo, flickr simply edits the resource with PUT. To add a comment, it locates the comment feed (which would be referenced from the entry for the particular image) and POSTs to create a new resource. And everyone can see those changes &amp;#8212; the added value that you get from a social network.&lt;/p&gt;

&lt;p&gt;None of this is to say that a single application can&amp;#8217;t act as provider, broker and publisher at the same time, but I&amp;#8217;m certain that users will favour those applications that do &lt;em&gt;all&lt;/em&gt; of each role: provide to the whole web, broker the whole web, provide a user interface to the whole web. Flickr is almost there, but it doesn&amp;#8217;t do the whole brokering job because it only brokers the data it provides, and therefore it doesn&amp;#8217;t provide the whole user interface job.&lt;/p&gt;

&lt;p&gt;This distributed web is a clear win, particularly for users, over walled gardens. They can switch from user interface to user interface, even use more than one at a time (perhaps one application is good for browsing while another is good for categorising), without any cost. They can choose who to use to serve their information on the basis of things that matter when you&amp;#8217;re serving information (low downtime, backups, security, etc.) rather than on how pretty an interface looks or how much functionality it gives you. On the other side of the equation, applications get to do one thing and do it well.&lt;/p&gt;

&lt;p&gt;It seems to me that this is simply how the web works, and the questions we should be asking are about privacy and trust and licensing and revenue models and standards development.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/90#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/18">atom</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/39">xtech2008</category>
 <pubDate>Sun, 11 May 2008 21:07:29 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">90 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>XTech 2008</title>
 <link>http://www.jenitennison.com/blog/node/89</link>
 <description>&lt;p&gt;I finally have some time to write about &lt;a href=&quot;http://2008.xtech.org/&quot; title=&quot;XTech 2008&quot;&gt;XTech&lt;/a&gt;. What a great conference! I know that &lt;a href=&quot;http://times.usefulinc.com/&quot; title=&quot;Edd Dumbill&#039;s blog&quot;&gt;Edd&lt;/a&gt; would like it bigger, but its modest size gives it a family feel. Like a family gathering, there are pontificating oldsters whose wisdom goes largely unappreciated by young upstarts who themselves bring energy and innovation to the crowd. And a bunch in the middle trying to translate across the gap: to explain the vision to the old and the reality to the new.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;Another way of putting it is the divide between the XML crowd and the Web 2.0 crowd. In &lt;a href=&quot;http://seanmcgrath.blogspot.com/&quot; title=&quot;Sean McGrath&#039;s blog&quot;&gt;Sean McGrath&lt;/a&gt;&amp;#8217;s &lt;a href=&quot;http://2008.xtech.org/public/schedule/detail/647&quot; title=&quot;Orangutans, Oxen and Ogham stones. Mulling the movable Web&quot;&gt;closing keynote&lt;/a&gt;, thankfully &lt;a href=&quot;http://adactio.com/journal/1469/&quot; title=&quot;Adactio: Orangutans, Oxen and Ogham stones&quot;&gt;written up by Jeremy Keith&lt;/a&gt;, he talked about navigating the path between the document web and the programmable web, and the danger of tipping the balance too much in either one way or the other. XTech provides a great service in providing that balance, and of giving those of us with feet in both camps a home.&lt;/p&gt;

&lt;p&gt;Particularly encouraging for me was to see some of the principles of the programmable web filtering into sites such as the &lt;a href=&quot;http://2008.xtech.org/public/schedule/detail/577&quot; title=&quot;XTech 2008: Rebuilding guardian.co.uk&quot;&gt;Guardian&lt;/a&gt; and the &lt;a href=&quot;http://2008.xtech.org/public/schedule/detail/536&quot; title=&quot;XTech 2008: Here&#039;s one I prepared earlier: the BBC&#039;s Tech Refresh project&quot;&gt;BBC&lt;/a&gt; which aren&amp;#8217;t part of the Web 2.0 vowel-deprived clique. It gives me hope for the &lt;a href=&quot;http://www.opsi.gov.uk/&quot; title=&quot;Office of Public Sector Information&quot;&gt;public information sector&lt;/a&gt;, in which I happily find myself.&lt;/p&gt;

&lt;p&gt;So many many thanks to Edd and to everyone who supplied me with alcohol, deprived me of sleep, and talked to me about tech. I can&amp;#8217;t wait until next year.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/89#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/39">xtech2008</category>
 <pubDate>Sun, 11 May 2008 10:25:40 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">89 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>APECKS, ten years on</title>
 <link>http://www.jenitennison.com/blog/node/86</link>
 <description>&lt;p&gt;Roughly ten years ago, I was attending &lt;a href=&quot;http://ksi.cpsc.ucalgary.ca/KAW/KAW98/KAW98Proc.html&quot; title=&quot;Proceedings of KAW&#039;98&quot;&gt;KAW&amp;#8217;98&lt;/a&gt;. I remember that conference as one of the best weeks of my life. I had &lt;a href=&quot;http://users.ecs.soton.ac.uk/nrs/&quot; title=&quot;University of Southampton: Nigel Shadbolt&quot;&gt;great&lt;/a&gt; &lt;a href=&quot;http://www.louisecrow.com/blog/&quot; title=&quot;Louise Crow&quot;&gt;company&lt;/a&gt;. I saw &lt;a href=&quot;http://en.wikipedia.org/wiki/Lake_Louise,_Alberta&quot; title=&quot;Lake Louise&quot;&gt;scenery like I&amp;#8217;d never seen before&lt;/a&gt;. I presented &lt;a href=&quot;http://ksi.cpsc.ucalgary.ca/KAW/KAW98/tennison/&quot; title=&quot;KAW&#039;98: APECKS: A Tool to Support Living Ontologies&quot;&gt;my PhD work&lt;/a&gt; for the first time to people who were (at least politely) interested in it. And I learned a lot, both from the presentations and less formal discussions.&lt;/p&gt;

&lt;p&gt;(I remember driving back to Nottingham when we returned; a rainbow appeared in front of us, seeming to arch over our destination in a perfect finale.)&lt;/p&gt;

&lt;p&gt;Looking back at that paper is like looking at my past generally is: much of it makes me cringe, but parts of it are surprisingly good. What&amp;#8217;s interesting is that if you swap a few terms for modern buzzwords, it&amp;#8217;s still a pretty neat idea. It&amp;#8217;s also amazing how far we&amp;#8217;ve come &amp;#8212; how much has become common-place &amp;#8212; in just ten years.&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;In modern terms, what I did was develop web-based &lt;a href=&quot;http://en.wikipedia.org/wiki/Social_software&quot; title=&quot;Wikipedia: Social software&quot;&gt;social software&lt;/a&gt;, called &lt;acronym title=&quot;Adaptive Presentation Environment for Collaborative Knowledge Structuring&quot;&gt;APECKS&lt;/acronym&gt;, for ontology creation. The idea was that people would create their own ontologies (either from scratch or based on others), and the system would find similarities and differences between them, with the aim of starting conversations about and sharing knowledge.&lt;/p&gt;

&lt;p&gt;APECKS was built on top of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_application_framework&quot; title=&quot;Wikipedia: Web application framework&quot;&gt;web application framework&lt;/a&gt; written in a &lt;a href=&quot;http://en.wikipedia.org/wiki/Dynamic_programming_language&quot; title=&quot;Wikipedia: Dynamic programming language&quot;&gt;dynamic programming language&lt;/a&gt;. We didn&amp;#8217;t have &lt;a href=&quot;http://en.wikipedia.org/wiki/Ruby_on_Rails&quot; title=&quot;Wikipedia: Ruby on Rails&quot;&gt;Ruby on Rails&lt;/a&gt; in those days: I turned a MOO (a text-based virtual reality) into a HTTP server (with caching and everything!) and that formed the basis of the application.&lt;/p&gt;

&lt;p&gt;APECKS was designed to use (lowercase) web services. It used &lt;a href=&quot;http://tiger.cpsc.ucalgary.ca/&quot; title=&quot;WebGrid III&quot;&gt;one&lt;/a&gt; for some of the complex ontology comparison that it needed to do. &lt;a href=&quot;http://www.w3.org/TR/1998/WD-rdf-syntax-19980216/&quot; title=&quot;W3C: RDF Working Draft from February 1998&quot;&gt;RDF was nowhere near done&lt;/a&gt;; OWL not even in a twinkle in its parents&amp;#8217; eyes: nowadays, you&amp;#8217;d build around those formats, which fit fairly well onto the &lt;a href=&quot;http://en.wikipedia.org/wiki/Knowledge_Interchange_Format&quot; title=&quot;Wikipedia: Knowledge Interchange Format&quot;&gt;KIF&lt;/a&gt;-based formalism that APECKS used. (The lack of a standard way to make the captured knowledge available was one of the reasons I got interested in XML &amp;#8212; we&amp;#8217;ve just celebrated &lt;em&gt;that&lt;/em&gt; 10-year anniversary too.)&lt;/p&gt;

&lt;p&gt;APECKS captured change history and design rationale as well as supporting unstructured communication between users. It didn&amp;#8217;t provide feeds because, guess what, &lt;a href=&quot;http://en.wikipedia.org/wiki/RSS_(file_format)&quot; title=&quot;Wikipedia: RSS&quot;&gt;feeds hadn&amp;#8217;t been invented yet&lt;/a&gt;. If I were doing it today, they would be a major feature.&lt;/p&gt;

&lt;p&gt;APECKS didn&amp;#8217;t do &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot; title=&quot;Wikipedia: Representation State Transfer&quot;&gt;REST&lt;/a&gt; properly, but that concept wasn&amp;#8217;t around either! APECKS was also rather formal and uninventive in getting knowledge out of people (although it did use those knowledge-acquisition techniques that are automatable, such as card sorts). Now, you could make the interface so much better, because now we have &lt;a href=&quot;http://en.wikipedia.org/wiki/AJAX&quot; title=&quot;Wikipedia: AJAX&quot;&gt;AJAX&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Part of me wants to update it. The semantic web is going to happen, and we&amp;#8217;re going to need tools that help people share and link together the ontologies that they create. Tools that help people create ontologies without being semantic-web experts. &lt;/p&gt;

&lt;p&gt;But I&amp;#8217;ve been there, and done that, and anyway I&amp;#8217;m sure that today&amp;#8217;s students are creating applications that are much more innovative.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/86#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/20">ontologies</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/27">life</category>
 <pubDate>Wed, 16 Apr 2008 20:34:43 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">86 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>PRESTO and the limits of XPath-based URLs</title>
 <link>http://www.jenitennison.com/blog/node/80</link>
 <description>&lt;p&gt;Rick Jelliffe has been writing recently about &lt;a href=&quot;http://www.oreillynet.com/xml/blog/2008/02/presto_a_www_information_archi.html&quot; title=&quot;PRESTO - A WWW Information Architecture for Legislation and Public Information systems&quot;&gt;PRESTO&lt;/a&gt;, most recently about the &lt;a href=&quot;http://www.oreillynet.com/xml/blog/2008/03/presto_urls_as_xpaths_to_views.html&quot; title=&quot;PRESTO: URLs as XPaths to views of information&quot;&gt;design of URLs&lt;/a&gt; based on the PRESTO system. In his latest post, Rick talks about using XPath as the basis of a URL scheme:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Xpath for accessing a particular part’s title would be /law/part[2]/title so the PRESTO URLs would need some kind of convention.&lt;/p&gt;
  
  &lt;p&gt;[snip]&lt;/p&gt;
  
  &lt;p&gt;Now, I am not sure I understand the issues well enough to say which system for indexing is absolutely best. But I think the advantage of &lt;code&gt;http://www.eg.com/law/part2/title&lt;/code&gt; over  &lt;code&gt;http://www.eg.com/law/part2/title&lt;/code&gt; is that it is probably a more common case that your system is interested in &lt;code&gt;/law/part[2]/title&lt;/code&gt; rather than all titles of parts &lt;code&gt;/law/part/title&lt;/code&gt;. But it is a matter of the particular use case and the consequent virtual schema.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!--break--&gt;

&lt;p&gt;This has particular interest to me because I&amp;#8217;ve recently been involved in putting some of the &lt;a href=&quot;http://www.opsi.gov.uk/legislation/about_legislation.htm&quot; title=&quot;OPSI: Legislation&quot;&gt;UK&amp;#8217;s legislation online&lt;/a&gt;. We don&amp;#8217;t expose the parts/sections and so on as individual documents at the moment (although this &lt;em&gt;is&lt;/em&gt; something that you get with the &lt;a href=&quot;http://www.statutelaw.gov.uk/&quot; title=&quot;The Statute Law Database&quot;&gt;Statute Law Database&lt;/a&gt;, albeit with an awful URL scheme).&lt;/p&gt;

&lt;p&gt;Anyway, we do have &lt;em&gt;anchors&lt;/em&gt; for parts/sections within the main legislation which follow a similar scheme to the one that Rick suggests here. But they have a drawback: at least for consolidated legislation (which reflects the &amp;#8220;current state&amp;#8221; of legislation that has been amended by later legislation), the anchors don&amp;#8217;t reflect the semantics of the numbering scheme used by the document. For example, see &lt;a href=&quot;http://www.opsi.gov.uk/RevisedStatutes/Acts/ukpga/1977/cukpga_19770042_en_2#pt1-pb2-l1g6&quot; title=&quot;OPSI: Legislation: Revised: Rent Act 1977: Section 5A&quot;&gt;Section 5A of the Rent Act 1977&lt;/a&gt;, whose URL is:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://www.opsi.gov.uk/RevisedStatutes/Acts/ukpga/1977/cukpga_19770042_en_2#pt1-pb2-l1g6
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As you can see, the URL ends in a 6 rather than 5A because it&amp;#8217;s the 6th Section that appears in the document.&lt;/p&gt;

&lt;p&gt;The thing is that generic, position-based XPaths into content are seldom the ones that make most sense semantically. A friendly XPath to Section 5A would look like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/part[1]/group[2]/section[3]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and even if you just counted sections it would be:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;//section[6]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;when what you really want is the equivalent of:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;//section[number = &#039;5A&#039;]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Given this, I wonder if a &amp;#8220;striped&amp;#8221; URL scheme would be better, by which I mean something that follows the general pattern &lt;code&gt;/name/identifier/name/identifier&lt;/code&gt;. For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/part/I/section/5A
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There are several advantages to this. The resulting URLs are more semantically meaningful than those based on positions. They are more robust to changes in the document (which naturally happen with consolidated legislation). They also provide a neat method of returning &lt;em&gt;all&lt;/em&gt; the sections in a particular part, such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/part/I/section
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(though you could get this advantage with a position-based scheme as well, depending on how you map from XPath to URL).&lt;/p&gt;

&lt;p&gt;The main disadvantage is that you have to provide a custom mapping from XPath to URL, because it&amp;#8217;s not immediately obvious what identifier to use for a given element: it might be a &lt;code&gt;&amp;lt;number&amp;gt;&lt;/code&gt; element child for one kind of element, but an &lt;code&gt;id&lt;/code&gt; attribute for another element, and the position of the child for some other element. Of course you could add annotations to your schema to indicate what acts as the identifier for that particular element type, but it does raise the implementation barrier.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/80#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/36">xpath</category>
 <pubDate>Thu, 13 Mar 2008 20:18:56 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">80 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>Web 2.0 project: privacy in genealogy</title>
 <link>http://www.jenitennison.com/blog/node/69</link>
 <description>&lt;p&gt;There were a couple of comments on my previous post about &lt;a href=&quot;http://www.jenitennison.com/blog/node/67&quot; title=&quot;Jeni&#039;s Musings: Web 2.0 project: RDF and uncertainty&quot;&gt;RDF and uncertainty in our Web 2.0 genealogy project&lt;/a&gt; concerning the problems of privacy in a genealogy app. My ideas about this aren&amp;#8217;t fully thought-through, let alone implemented, but I thought I&amp;#8217;d share them anyway.&lt;/p&gt;

&lt;p&gt;First, the things we could restrict access to are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sources of information (eg birth records)&lt;/li&gt;
&lt;li&gt;personas (eg Charles Darwin) and assertions about them&lt;/li&gt;
&lt;li&gt;events (eg the Beagle Voyage) and assertions about them&lt;/li&gt;
&lt;li&gt;groups (eg the Royal Society) and assertions about them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are different kinds of things you might do to the resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who can know it &lt;em&gt;exists&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;who can &lt;em&gt;read&lt;/em&gt; it?&lt;/li&gt;
&lt;li&gt;who can &lt;em&gt;change&lt;/em&gt; it?&lt;/li&gt;
&lt;li&gt;who can &lt;em&gt;delete&lt;/em&gt; it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and different levels of access for each of those things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;global (public)&lt;/li&gt;
&lt;li&gt;group (restricted)&lt;/li&gt;
&lt;li&gt;user (private)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I imagine that at any point, a user will have a default set of permissions in play. For example, they might be generating information that anyone can know exists and can read, but only a restricted set of people can change, and only the user themselves can delete.&lt;/p&gt;

&lt;h2&gt;Searchability&lt;/h2&gt;

&lt;p&gt;I&amp;#8217;m going to side-track for a second here to explain why I&amp;#8217;ve separated out &amp;#8220;knowing something exists&amp;#8221; from &amp;#8220;readable&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Our genealogy application is evidence-based, which means that to say that someone exists you must have a source for that information, be it a birth certificate or a picture or the transcription of an interview. The &lt;em&gt;persona&lt;/em&gt; that you believe to exist on the basis of one source may or may not be the same persona that you believe to exist on the basis of a different source. A separate step is required to link the two personas together.&lt;/p&gt;

&lt;p&gt;The intention is that our application will help you link personas (and events, groups and anything else that might be quoted in more than one piece of evidence) together through searching through other personas (etc) to find those that are similar. They might have similar names, but most of the evidence for similarity will come from similar assertions having been made about them.&lt;/p&gt;

&lt;p&gt;Now say that I have some evidence about Charles Darwin and enter it into the system, and you similarly have some evidence about Charles Darwin that you enter into the system. We both create &amp;#8220;Charles Darwin&amp;#8221; personas based on our evidence. I&amp;#8217;d like it to be the case that, even if we don&amp;#8217;t want the information we&amp;#8217;ve captured about Charles Darwin to be readable by others, we can still make it searchable so that others can find out we&amp;#8217;re working on that person too so that (after some interpersonal negotiation) the two sets of information can be brought together.&lt;/p&gt;

&lt;p&gt;So the &amp;#8220;who can know it exists?&amp;#8221; access is about making your information searchable, even if the details aren&amp;#8217;t readable.&lt;/p&gt;

&lt;h2&gt;Default access&lt;/h2&gt;

&lt;p&gt;As I understand it, in genealogy circles it would be bad form to make any information about living people publicly available. Some would argue that any information that is currently publicly available (on the web, or even off it, in electoral rolls, phone books, wherever) is fair game: if it&amp;#8217;s already &amp;#8220;out there&amp;#8221; then you can use it. But I don&amp;#8217;t agree with that. There&amp;#8217;s a big difference between there being multiple disparate, human-readable sources of information about an individual &amp;#8220;out there somewhere&amp;#8221; and providing a single aggregated public source for all this data in a computer-readable format. In short, I agree with Jeff &amp;#8220;Coding Horror&amp;#8221; Atwood&amp;#8217;s recent post on privacy in which he characterises &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001027.html&quot; title=&quot;Coding Horror: An Inalienable Right to Privacy&quot;&gt;privacy as an inalienable right&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, some people make money from doing genealogical research, and it would be short-sighted to prevent people from using the application if they simply wanted to keep what they were doing private for their own reasons.&lt;/p&gt;

&lt;p&gt;So there must be a setting such that information can be kept entirely private, to the extent that only the person who constructed it knows that it exists.&lt;/p&gt;

&lt;p&gt;On the other hand, many of the benefits of Web 2.0 applications come from integrating your own material with other people&amp;#8217;s. Genealogy is a good example of this, because there&amp;#8217;s a distinct thrill in hooking into other people&amp;#8217;s research and discovering other branches of the family.&lt;/p&gt;

&lt;p&gt;So there must be a setting such that information can be made globally available to all and sundry, even to the extent of others changing and deleting it.&lt;/p&gt;

&lt;p&gt;I think the default has to be that the information you enter is completely private. I&amp;#8217;d like to encourage people to share their information, but I think that the way to do that is through social mechanisms (eg the more useful information you share, the more kudos you get) rather than technological ones.&lt;/p&gt;

&lt;h2&gt;User Groups&lt;/h2&gt;

&lt;p&gt;Public and private access aside, there&amp;#8217;s a huge middle ground of access that&amp;#8217;s somehow restricted to a subset of users. I don&amp;#8217;t think I&amp;#8217;m being particularly radical if I say that the current state of the art of social software access control isn&amp;#8217;t great, that the &amp;#8220;restricted&amp;#8221; subset is usually to &amp;#8220;my friends&amp;#8221;, but people don&amp;#8217;t have one social circle: they operate in different spheres, and have a different set of friends/colleagues in each.&lt;/p&gt;

&lt;p&gt;The same is true in our genealogy app. A given user might be working (collaboratively) on several projects, with different teams. For example, I might work on a family tree with my mother for her side of the family and my father for his, with no need for either of them to be aware of the other (unless they overlap, in which case &amp;#8220;searchability&amp;#8221; comes into play).&lt;/p&gt;

&lt;p&gt;So I think it makes sense to use the familiar notion from *nix of &amp;#8220;user groups&amp;#8221;, and assign each item (sources/people/events/groups) to one or more user groups. User groups will probably mostly arise from those working on particular projects, but could be more arbitrary. I&amp;#8217;m thinking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;moderated (by-invitation) and open (by-subscription) user groups&lt;/li&gt;
&lt;li&gt;private, public and restricted permissions on the user groups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The other thing I was considering here was having a notion of &amp;#8220;degrees of separation&amp;#8221;. If I entered details about our daughters into a family tree, I might be happy for immediate family, and their immediate family, to see them: a separation of two. I don&amp;#8217;t know whether this kind of network-based user group would be useful or a pain to manage, or even implementable; it&amp;#8217;s just an idea I had.&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/69#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/34">genealogy</category>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Thu, 17 Jan 2008 21:48:58 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">69 at http://www.jenitennison.com/blog</guid>
</item>
<item>
 <title>I am not a number!</title>
 <link>http://www.jenitennison.com/blog/node/65</link>
 <description>&lt;p&gt;Questions of identity and privacy are rather topical at the moment, especially here in Britain where last week a database dump including the names, addresses, bank details of half the country, along with our children&amp;#8217;s names and dates of birth, got &amp;#8220;&lt;a href=&quot;http://www.guardian.co.uk/uk_news/story/0,,2214110,00.html&quot; title=&quot;The Guardian: Personal details of every child in UK lost by Revenue &amp;amp; Customs&quot;&gt;lost in the post&lt;/a&gt;&amp;#8221;.&lt;/p&gt;

&lt;p&gt;So what better time to announce a new online identity metric? My PhD supervisor, &lt;a href=&quot;http://users.ecs.soton.ac.uk/nrs/&quot; title=&quot;Nigel Shadbolt at University of Southampton&quot;&gt;Nigel Shadbolt&lt;/a&gt; is the CTO of &lt;a href=&quot;http://www.garlik.com/&quot; title=&quot;Garlik&quot;&gt;Garlik&lt;/a&gt;, so earlier in the week I got an invite to the launch of &lt;a href=&quot;http://www.qdos.com/&quot; title=&quot;QDOS&quot;&gt;QDOS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Like the &lt;a href=&quot;http://www.careerdistinction.com/onlineid/step1.html&quot; title=&quot;Career Distinction: Online Identity Calculator&quot;&gt;online identity calculator&lt;/a&gt; that I &lt;a href=&quot;http://www.jenitennison.com/blog/node/38&quot; title=&quot;Claiming your online identity&quot;&gt;wrote about before&lt;/a&gt;, QDOS gives you a score based on your online presence. However, this score isn&amp;#8217;t just based on a Google search. It has four components (which are each represented by a different colour, and are combined to give a very pretty pictorial &amp;#8220;fingerprint&amp;#8221;; check out &lt;a href=&quot;http://qdos.com/celeb/2ff3668e49590f7f8429ff7316c76bb8&quot; title=&quot;QDOS: Tim Berners-Lee&quot;&gt;Tim Berners-Lee&amp;#8217;s QDOS&lt;/a&gt;, for example).&lt;/p&gt;

&lt;!--break--&gt;

&lt;p&gt;The four components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;popularity&lt;/strong&gt;: &amp;#8220;They say that it’s not what you do that counts, but who you know. It’s the same online – your digital profile is affected by the number of friends and contacts you have.  So the more friends you have on social or business networking sites, the higher your popularity score.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;impact&lt;/strong&gt;: &amp;#8220;Your online impact is manifested by your credibility and influence across the web.  If your name is widely referenced, or if what you have to say – whether through quotes or a personal blog – is read by a large group of people, then your impact score will be higher.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;activity&lt;/strong&gt;: &amp;#8220;Activity quantifies what you do online – how long you spend there, how many sites you visit, how often you buy and sell things and so on. The more you do, the higher your activity score will be.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;individuality&lt;/strong&gt;: &amp;#8220;In DNA terms we may be individual, but online it’s not so easy. Your individuality depends on the uniqueness of your name and other aspects of your identity.  John Smith, civil servant, living in London, would have a low score because there may be a number of them in the city.  But Xavier du Plessis, tightrope walker, living in Hartlepool, would be more unique and therefore more likely to score higher.&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From the descriptions of these facets, you can guess some of what they&amp;#8217;re searching: friends lists on Facebook, MySpace, LinkedIn; Google searches and feed statistics; electoral rolls; companies house. The activity metric is probably the most perturbing; like the &lt;a href=&quot;http://norman.walsh.name/2007/11/27/facebook&quot; title=&quot;Norm Walsh: Goodbye, Facebook&quot;&gt;Facebook dispossessed&lt;/a&gt;, I don&amp;#8217;t really want my online sales and purchases to be monitored, and it&amp;#8217;s not immediately apparent how they could get hold of that information &amp;#8212; even eBay identifiers are supposed to be &lt;a href=&quot;http://pages.ebay.co.uk/help/newtoebay/resolving-concerns.html#protectingprivacy&quot; title=&quot;eBay: Trust and Safety: Protecting Privacy&quot;&gt;unrelatable to your personal identity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But it&amp;#8217;s all powered by the magic of Semantic Web Technology, so I guess I shouldn&amp;#8217;t be surprised by anything.&lt;/p&gt;

&lt;p&gt;As usual, I found it hard to work out which one of my identities I should use. If you enter &amp;#8220;Jeni Tennison&amp;#8221; in the search box, you&amp;#8217;re told that there&amp;#8217;s one Jeni Tennison with a QDOS score and then get shown the QDOS score of the Coronation Street actor Jane Danson (Q3009). I suppose &amp;#8220;Jeni Tennison&amp;#8221; &lt;em&gt;sounds&lt;/em&gt; similar to &amp;#8220;Jane Danson&amp;#8221; and I&amp;#8217;m sure Jane Danson is more well-known than me &amp;#8212; she has her own Wikipedia page, after all. Perhaps Semantic Web Technologies suffer from foibles we usually associate with slightly deaf elderly relatives.&lt;/p&gt;

&lt;p&gt;My &amp;#8220;Jenifer Tennison&amp;#8221; identity gets translated as &amp;#8220;Jennifer Tennison&amp;#8221; (Q443), who I suppose could be a mis-spelled me, but who knows? There are no automatic links to pages that would help identify the person with that name, so it&amp;#8217;s very hard to work out who it means. It looks like it&amp;#8217;s pretty easy to add links for people, but to do that you have to be sure who the person is, and for most people a name isn&amp;#8217;t going to be enough.&lt;/p&gt;

&lt;p&gt;Of course, adding a postcode should help, but which one to use? We&amp;#8217;ve moved house twice in the past two years, and I imagine a fair amount of data about me is still associated with one or other of my old addresses. Whichever postcode I use, with whichever name I use, I get the same message:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Results for: Jeni Tennison (&lt;em&gt;postcode elided&lt;/em&gt;)&lt;/p&gt;
  
  &lt;p&gt;We have calculated your QDOS based on your name and postcode. To calculate a more accurate QDOS, click on &amp;#8216;Claim your QDOS&amp;#8217; now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The QDOS score that&amp;#8217;s shown at this point seems to be a semi-random number around the 700-900 mark. My children have roughly the same level of QDOS scores as me. I know the almost-four-year-old spends a lot of time on &lt;a href=&quot;http://www.bbc.co.uk/cbeebies&quot; title=&quot;CBeebies&quot;&gt;CBeebies&lt;/a&gt;, but I think I have a little more online popularity, impact, activity and individuality than her (but maybe that&amp;#8217;s just wishful thinking).&lt;/p&gt;

&lt;p&gt;I did try to claim my QDOS, but:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We are currently in beta testing phase. If you would like to become one of our first users please leave us your email address and we will send you an invite as soon as we have space available.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and I haven&amp;#8217;t heard anything in the last 24 hours, so I guess there&amp;#8217;s no space.&lt;/p&gt;

&lt;p&gt;The founders of Garlik (Mike Harris, Tom Ilube and Nigel Shadbolt) can all be found with a simple search. Mike Harris and Nigel Shadbolt have two entries a piece, which implies that the problem of multiple identities isn&amp;#8217;t limited to those of us who commonly abbreviate our True Names. Tom Ilube and Nigel Shadbolt&amp;#8217;s entries are private, which means you can&amp;#8217;t tunnel down into their individual scores (or see any links that would confirm that they were the Tom Ilube or Nigel Shadbolt you were looking for).&lt;/p&gt;

&lt;p&gt;The name &amp;#8220;QDOS&amp;#8221; reminded me of the concept of kudos as described in &lt;a href=&quot;http://www.amazon.co.uk/Algebraist-Iain-M-Banks/dp/1841492299&quot; title=&quot;Amazon: Iain M. Banks: The Algebraist&quot;&gt;Iain M. Banks&amp;#8217; The Algebraist&lt;/a&gt;, where it&amp;#8217;s used as a kind of currency amongst the Dwellers. But unsurprisingly, Garlik aren&amp;#8217;t claiming your QDOS score actually means anything. Rather, they&amp;#8217;re aiming to get people to think about managing their online identity (so they will pay for their online identity management product).&lt;/p&gt;

&lt;p&gt;And I&amp;#8217;m left once again questioning who I really am. Am I Dr Jenifer Tennison the knowledge engineer, or Jeni Tennison the XSLT expert, or Jane Danson the Coronation Street actor? (The latter had actually never occurred to me before, but that&amp;#8217;s the power of QDOS!)&lt;/p&gt;
</description>
 <comments>http://www.jenitennison.com/blog/node/65#comments</comments>
 <category domain="http://www.jenitennison.com/blog/taxonomy/term/12">web</category>
 <pubDate>Fri, 30 Nov 2007 23:06:52 +0000</pubDate>
 <dc:creator>Jeni</dc:creator>
 <guid isPermaLink="false">65 at http://www.jenitennison.com/blog</guid>
</item>
</channel>
</rss>

