Created first draft of the WebID Identity spec, to avoid confusion between WebID and WebID-TLS.
authorAndrei Sambra <andrei@fcns.eu>
Sun, 18 Nov 2012 18:07:23 -0500
changeset 289 ab6c8dd292d3
parent 288 7076a5009bbb
child 290 2bb917261ef7
Created first draft of the WebID Identity spec, to avoid confusion between WebID and WebID-TLS.
Added a new diagram to reflect the latest changes.
spec/identity-respec.html
spec/img/WebID-overview.png
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/identity-respec.html	Sun Nov 18 18:07:23 2012 -0500
@@ -0,0 +1,617 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>WebID 1.1</title>
+    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
+    <!--
+      === NOTA BENE ===
+      For the three scripts below, if your spec resides on dev.w3 you can check them
+      out in the same tree and use relative links so that they'll work offline,
+     -->
+<style type='text/css'>
+
+code {
+    font-family: monospace;
+}
+
+span.hilite {
+    color: red; /* font-weight: bold */
+}
+
+li p {
+    margin-top: 0.3em;
+    margin-bottom: 0.3em;
+}
+
+div.explanation {
+    background-color: #ADD8E6;
+    width: 80%;
+    margin: 12px; padding: 8px;
+}
+
+div.explanation li { margin-top: 8px; }
+div.explanation dd { margin: 4px; }
+
+.adef {
+	font-family: monospace;
+	font-weight: bold;
+    color: #ff4500 !important;
+}
+
+.aref {
+	font-family: monospace;
+	font-weight: bold;
+    color: #ff4500 !important;
+}
+
+span.entity { color: red; }
+
+span.element { color: green; }
+</style>
+
+    <script src='http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js' class='remove'></script>
+<!--    <script src='/ReSpec.js/js/respec.js' class='remove'></script> -->
+    <script class='remove'>
+      var preProc = {
+          apply:  function(c) {
+                    // extend the bibliography entries
+                    berjon.biblio["SWBP-VOCAB-PU"] = "Diego Berrueta, Jon Phipps <a href='http://www.w3.org/TR/swbp-vocab-pub/'><cite>Best Practice Recipes for Publishing RDF Vocabularies</cite></a> W3C Working Group Note 28 August 2008";
+                    berjon.biblio["TURTLE-TR"] =  "David Beckett, Tim Berners-Lee. <a href='http://www.w3.org/TR/turtle/'><cite>Turtle: Terse RDF Triple Language.</cite></a> W3C Working Draft 09 August 2011 URL: <a href='http://www.w3.org/TR/turtle/'>http://www.w3.org/TR/turtle/</a> ";
+                    // process the document before anything else is done
+                    var refs = document.querySelectorAll('adef') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var sp = document.createElement( 'dfn' ) ;
+                        var tit = item.getAttribute('title') ;
+                        if (!tit) {
+                            tit = con;
+                        }
+                        sp.className = 'adef' ;
+                        sp.title=tit ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    refs = document.querySelectorAll('aref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'aref' ;
+                        sp.setAttribute('title', con);
+                        sp.innerHTML = '@'+con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // local datatype references
+                    refs = document.querySelectorAll('ldtref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'datatype';
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // external datatype references
+                    refs = document.querySelectorAll('dtref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'externalDFN';
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // now do terms
+                    refs = document.querySelectorAll('tdef') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'dfn' ) ;
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // now term references
+                    refs = document.querySelectorAll('tref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+
+                        var sp = document.createElement( 'a' ) ;
+                        var id = item.textContent ;
+                        sp.className = 'tref' ;
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                }
+        } ;
+
+
+      var respecConfig = {
+          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+          // embed RDFa data in the output
+          doRDFa: true,
+          specStatus:   "ED",
+          diffTool:     "http://www5.aptest.com/standards/htmldiff/htmldiff.pl",
+
+          // the specifications short name, as in http://www.w3.org/TR/short-name/
+          shortName:    "webid",
+          subtitle:     "Web Identity and Discovery",
+
+          // if you wish the publication date to be other than today, set this
+          // publishDate:  "2009-08-06",
+          copyrightStart: "2010",
+
+          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+          // and its maturity status
+          previousPublishDate:  "2011-11-23",
+          previousMaturity:     "ED",
+          previousURI:          "http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111123/",
+
+
+          // if there a publicly available Editors Draft, this is the link
+          edDraftURI: "http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20121118",
+
+          // if this is a LCWD, uncomment and set the end of its review period
+          // lcEnd: "2009-08-05",
+
+          // if you want to have extra CSS, append them to this list
+          // it is recommended that the respec.css stylesheet be kept
+          extraCSS: ['http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css'],
+
+          // editors, add as many as you like
+          // only "name" is required
+          editors:  [
+                  { name: "Andrei Sambra",
+                     mailto: "[email protected]",
+                     url: "https://my-profile.eu/people/deiu/card#me" }
+               ],
+
+          // authors, add as many as you like.
+          // This is optional, uncomment if you have authors as well as editors.
+          // only "name" is required. Same format as editors.
+
+          authors:  [
+              { name: "Andrei Sambra", url: "https://my-profile.eu/people/deiu/card#me" },
+              { name: "Henry Story", url: "http://bblfish.net/people/henry/card#me" },
+              { name: "Tim Berners-Lee", url: "http://www.w3.org/People/Berners-Lee/card#i" }
+          ],
+
+//          errata: 'http://www.w3.org/MarkUp/2008/REC-rdfa-syntax-20081014-errata',
+
+          // name of the WG
+          wg:           "WebID CG",
+
+          // URI of the public WG page
+          wgURI:        "http://www.w3.org/community/webid/",
+
+          // name (with the @w3c.org) of the public mailing to which comments are due
+          wgPublicList: "public-webid",
+
+          // alternate formats for this document
+          //alternateFormats: [
+          //    { uri: 'http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111212/diff-20111123.html',
+          //        label: "Diff from previous Editors Draft" }],
+
+          // URI of the patent status for this WG, for Rec-track documents
+          // !!!! IMPORTANT !!!!
+          // This is important for Rec-track documents, do not copy a patent URI from a random
+          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+          // Team Contact.
+          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46065/status",
+          maxTocLevel: 4,
+          preProcess: [ preProc ]
+      };
+
+
+      function updateExample(doc, content) {
+        // perform transformations to make it render and prettier
+        content = content.replace(/<!--/, '');
+        content = content.replace(/-->/, '');
+        content = doc._esc(content);
+        content = content.replace(/\*\*\*\*([^*]*)\*\*\*\*/g, '<span class="hilite">$1</span>') ;
+        return content ;
+      }
+
+      function updateDTD(doc, content) {
+        // perform transformations to
+        // make it render and prettier
+        content = '<pre class="dtd">' + doc._esc(content) + '</pre>';
+        content = content.replace(/!ENTITY % ([^ \t\r\n]*)/g, '!ENTITY <span class="entity">% $1</span>');
+        content = content.replace(/!ELEMENT ([^ \t$]*)/mg, '!ELEMENT <span class="element">$1</span>');
+        return content;
+      }
+
+      function updateSchema(doc, content) {
+        // perform transformations to
+        // make it render and prettier
+        content = '<pre class="dtd">' + doc._esc(content) + '</pre>';
+        content = content.replace(/&lt;xs:element\s+name=&quot;([^&]*)&quot;/g, '&lt;xs:element name="<span class="element" id="schema_element_$1">$1</span>"') ;
+        return content;
+      }
+
+      function updateTTL(doc, content) {
+        // perform transformations to
+        // make it render and prettier
+        content = '<pre class="sh_sourceCode">' + doc._esc(content) + '</pre>';
+        content = content.replace(/@prefix/g, '<span class="sh_keyword">@prefix</span>');
+        return content;
+      }
+    </script>
+  </head>
+  <body>
+    <section id='abstract'>
+
+    <p>A global distributed Social Web requires that each person be able to 
+    control their identity, that this identity be linkable across sites - 
+    placing each person in a Web of relationships - and that it be possible to 
+    authenticate globally with such identities.
+    </p>
+    <p>This specification outlines a simple universal identification mechanism 
+    that is distributed, openly extensible, improves privacy, security and 
+    control over how each person can identify themselves in order to allow fine 
+    grained  access control to their information on the Web.
+    It does this by applying the best practices of Web Architecture whilst 
+    building on well established widely deployed protocols and standards 
+    including HTML, URIs, HTTP, and RDF Semantics.
+    </p>
+
+    <section>
+    <h2>How to Read this Document</h2>
+
+    <p>There are a number of concepts that are covered in this document that the
+    reader may want to be aware of before continuing. General knowledge of RDF 
+    [[!RDF-PRIMER]] is necessary to understand how to implement this specification. 
+    WebID uses a number of specific technologies like Turtle [[!TURTLE-TR]] and RDFa 
+    [[!RDFA-CORE]].</p>
+
+    <p>A general <a href="#introduction">Introduction</a> is provided for all that
+    would like to understand why this specification is necessary to simplify usage
+    of the Web.</p>
+
+    <p>The terms used throughout this specification are listed in the section
+    titled <a href="#terminology">Terminology</a>.</p>
+
+    </section>
+</section>
+
+<section id='sotd'>
+<!-- <p>This document has been reviewed by W3C Members, by software
+developers, and by other W3C groups and interested parties, and is
+endorsed by the Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited from another
+document. W3C's role in making the Recommendation is to draw attention
+to the specification and to promote its widespread deployment. This
+enhances the functionality and interoperability of the Web.</p> -->
+
+This document is produced from work by the
+<a href="http://www.w3.org/community/webid/">W3C WebID Community Group</a>.
+This is an internal draft document and may not even end up being officially
+published. It may also be updated, replaced or obsoleted by other documents
+at any time. It is inappropriate to cite this document as other than work in progress.
+The source code for this document is available at the following
+URI: <a href="https://dvcs.w3.org/hg/WebID">https://dvcs.w3.org/hg/WebID</a>
+
+</section>
+
+<section class='informative'>
+<h1>Introduction</h1>
+
+<p>
+A WebID is an HTTP URI containing a URI fragment identifier (i.e. a # symbol) and which uniquely denotes an Agent (Person, Organisation, Group, Device, etc.). The URI without the fragment identifier denotes the WebID <tref>Profile Page</tref> document.</p>
+<p>
+A WebID Profile is a Web resource that MUST be available as Turtle [[!TURTLE-TR]], but MAY be available in other RDF serialisation formats (e.g. [[!RDFA-CORE]]) if so requested through content negotiation. 
+</p>
+<p>
+WebIDs can be used to build a Web of trust using vocabularies such as <a href="http://xmlns.com/foaf/0.1/">FOAF</a> by allowing people to link together their profiles in a public or protected manner. 
+Such a web of trust can then be used by a <tref>Service</tref> to make authorization decisions, by allowing access to resource depending on the properties of an agent, such that he/she is known by some relevant people, works at a given company, is a family member, is part of some group, etc..
+</p>
+</section>
+<section>
+<h1>Outline</h1>
+<p>This specification is divided in the following sections.</p>
+<p><a href="#introduction">This section</a> gives a high level overview of WebID, and presents the organization of the specification and the conventions used throughout the document.</p>
+<p><a href="#preconditions">Section 2</a> lists the preconditions that need to be in place for any authentication sequence to be successful: which include the creation and publishing of a <tref>WebID Profile</tref>.</p>
+</section>
+<section>
+<h1>Terminology</h1>
+<dl>
+<dt><tdef>Alice</tdef></dt>
+<dd>Alice is an agent who owns a Server which runs a Service which Bob wishes to Access.</dd>
+
+<dt><tdef>Bob</tdef></dt>
+<dd>Bob is an agent who uses a <tref>Client</tref> to connect to <tref>Alice</tref>'s Service.</dd>
+<dt><tdef>Subject</tdef></dt>
+<dd>The Subject is the Agent that is identified by the <tref>WebID</tref>.
+We will name him <tref>Bob</tref> throughout this document to improve readability.
+The Subject is distinct from the <tref>Client</tref> which is used to connect to the <tref>Server</tref>.
+</dd>
+<dt><tdef>Requesting Agent</tdef></dt>
+<dd>The Requesting Agent initiates a request to a Service listening on a specific port using a given protocol on a given Server.</dd>
+
+<dt><tdef>Server</tdef></dt>
+<dd>A Server is a machine contactable at a domain name or IP address that hosts a number of globally accessible Services.</dd>
+
+<dt><tdef>Service</tdef></dt>
+<dd>A Service is a an agent listening for requests at a given IP address on a given Server.</dd>  
+
+<dt><tdef>WebID</tdef></dt>
+<dd>A WebID is a URI with an HTTP or HTTPS scheme, containing a URI fragment identifier (i.e. a # symbol) and which uniquely denotes an Agent (Person, Organisation, Group, Device, etc.). The URI without the fragment identifier denotes the WebID <tref>Profile page</tref>.
+
+<p class="issue">Due to legacy support for URIs which do not contain URI fragment identifiers, verifiers MUST not fail when dereferencing hashless URIs, though they MAY flag them as potentially impacting on performance. The use of hashless URIs is deprecated and must be avoided when creating new WebIDs.</p>
+</dd>
+
+<dt><tdef>WebID Profile</tdef> or <tdef>Profile Page</tdef></dt>
+<dd>
+A WebID Profile is an RDF document that MUST be available as Turtle [[!TURTLE-TR]]. The document MAY be available in other RDF serialisation formats, such as RDFa [[!RDFA-CORE]], RDF/XML [[!RDF-PRIMER]], or N3 [[!N3]] if so requested through content negotiation.
+
+Any other serializations that intend to be used by WebID MUST be transformable automatically and in a standard manner to an RDF Graph, using technologies such as GRDDL [[!GRDDL-PRIMER]].
+</dd>
+
+</dl>
+</section>
+
+<section class="normative">
+<h1>Namespaces</h1>
+<p>Examples assume the following namespace prefix bindings unless otherwise stated:</p>
+<table style="text-align: left; border-color: rgb(0, 0, 0); border-collapse: collapse;" border="1" cellpadding="5">
+ <thead>
+  <tr>
+    <th>Prefix</th>
+    <th>IRI</th>
+  </tr>
+ </thead>
+ <tbody>
+  <tr>
+    <td><code>foaf</code></td>
+    <td>http://xmlns.com/foaf/0.1/</td>
+  </tr>
+  </tbody>
+</table>
+
+</section>
+
+<section>
+<h1>Preconditions</h1>
+
+<section class='normative'>
+<h1>The HTTP URI</h1>
+
+<p>This URI must be one that dereferences to a document the user controls.</p>
+<p>For example, if a user Bob controls <code>https://bob.example/profile</code>,
+then his WebID can be <code>https://bob.example/profile#me</code></p>
+
+<section class='normative'>
+<h1>Publishing the WebID Profile Document</h1>
+
+<p>The set of relations to be published in the <tref>WebID Profile</tref> document can be presented in a graphical notation as follows.</p>
+<img alt="WebID overview" width="90%" src="img/WebID-overview.png"/>
+<p>The document can publish many more relations than are of interest to the WebID protocol, as shown in the above graph. 
+For example Bob can publish a depiction or logo, so that sites he authenticates to can personalize the user experience. He can post links to people he knows, where those have WebIDs published on other sites, in order to create a distributed Social Web. 
+He can also publish one or more authentication principals. More information on authentication principals can be found on the <a href="http://www.w3.org/2005/Incubator/webid/wiki/Identity_Interoperability">WebID Identity Interoperability</a> page.
+</p>
+<p>
+The protocol does not depend on any particular serialization of the graph, provided that agents are able to parse that serialization and obtain the graph automatically.  
+Technologies such as GRDDL [[!GRDDL-PRIMER]] for example permit any XML format to be transformed automatically to a graph of relations.
+HTTP Content Negotiation can be employed to aid in publication and discovery of multiple distinct serializations of the same graph at the same URL, as explained by the working group note <a href="http://www.w3.org/TR/2008/NOTE-swbp-vocab-pub-20080828/">Best Practice Recipes for Publishing RDF Vocabularies</a> [[!SWBP-VOCAB-PUB]]</p>
+
+<p class="issue">HTTP 303 redirects should be avoided (needs further discussion). Since WebIDs contain a URI fragment identifier, there is no longer necessary to use HTTP 303 redirects in order to make the difference between the identifier and the document it points to; the relationship becomes obvious.</p>
+
+<p class="issue">TODO: Irrespective of whether content negotiation can or cannot be employed, if an HTML representation of the WebID profile is published, it is suggested that the provider uses the HTML <code>&lt;link&gt;</code> element to allow discovery of the various alternate representations of the graph which may be available:
+</p>
+
+<pre class="example">
+&lt;html&gt;
+&lt;head&gt;
+&lt;link rel="alternate" type="text/turtle" href="profile.ttl"/&gt;
+&lt;link rel="alternate" type="application/rdf+xml" href="profile.rdf"/&gt;
+...
+&lt;/head&gt; ...
+</pre>
+<p>It is particularly useful to have one of the representations be in HTML
+even if it is not marked up in RDFa as this allows people using a
+web browser to understand what the information at that URI represents.</p>
+
+<section class='normative'>
+<h2>WebID Profile Vocabulary</h2>
+
+<p>RDF graphs are built using vocabularies defined by URIs, that can be placed in subject, predicate or object position.
+    The definition of each URI should be found at the namespace of the URI, by dereferencing it. 
+</p>
+
+<section class="informative">
+<h2>Personal Information</h2>
+
+<p>Personal details are the most common requirement when registering an
+account with a website. Some of these pieces of information include an e-mail
+address, a name and perhaps an avatar image. This section includes
+properties that SHOULD be used when conveying key pieces of personal information
+but are NOT REQUIRED to be present in a <tref>WebID Profile</tref>:</p>
+<dl>
+  <dt>foaf:mbox</dt>
+  <dd>The e-mail address that is associated with the WebID URI.</dd>
+  <dt>foaf:name</dt>
+  <dd>The name of the individual
+    or agent.</dd>
+  <dt>foaf:depiction</dt>
+  <dd>An image representation of the individual or agent.</dd>
+</dl>
+</section>
+</section>
+
+<section class='informative'>
+<h1>Turtle</h1>
+<p>A widely used format for writing RDF graphs by hand is the <a href="http://www.w3.org/TR/turtle/">Turtle</a> [[!TURTLE-TR]] notation.
+    It is easy to learn, and very handy for communicating over e-mail and on mailing lists.
+    The syntax is very similar to the SPARQL query language.
+    Turtle should be served with the <code>text/turtle</code> content type.
+</p>
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+ @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+ @prefix rdfs: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
+
+ &lt;https://bob.example/profile#me&gt; a foaf:Person;
+   foaf:name "Bob";
+   foaf:knows &lt;https://example.edu/p/Alice#MSc&gt;;
+   foaf:weblog &lt;http://bob.example/blog&gt;.
+</pre>
+</section>
+<section>
+<h1>RDFa HTML notation</h1>
+<p>RDFa in HTML [[!RDFA-CORE]] is a way to markup HTML with relations that have a well defined semantics and
+    mapping to an RDF graph.  There are many ways of writing out the above graph using RDFa in
+HTML. Here is just one example of what a WebID profile could look like.
+    It would have to be served with the mime type <code>application/xhtml+xml</code>.
+</p>
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+  "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr"
+      xmlns:foaf="http://xmlns.com/foaf/0.1/"
+      xmlns:rdfs="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+&lt;head&gt;
+   &lt;title&gt;Welcome to Bob's Home Page&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;!-- WebID HTML snippet. The xmlns declarations above can be moved into the div below if needed--&gt;
+&lt;div about="https://bob.example/profile#me" typeof="foaf:Person"&gt;
+  &lt;p&gt; My name is  &lt;span xml:lang="" property="foaf:name"&gt;Bob&lt;/span&gt; and I like to &lt;a rel="foaf:weblog" href="http://bob.example/blog"&gt;blog fun stuff&lt;/a&gt;
+  &lt;/p&gt;
+  &lt;h2&gt;My Good Friends&lt;/h2&gt;
+  &lt;ul&gt;
+    &lt;li rel="foaf:knows" href="https://example.edu/p/Alice#MSc"&gt;Alice&lt;/li&gt;
+  &lt;/ul&gt;
+
+&lt;/div&gt;
+&lt;!-- WebID HTML snippet --&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+<p>The <code>style="word-wrap: break-word; white-space: pre-wrap;"</code> attributes allow the number to be displayed on more than one line so that it will wrapped across lines and not just continue off to the right of the screen.</p>
+<p>If a WebID provider would rather prefer not to mark up his data in RDFa, but
+just provide a human readable format for users and have the RDF graph appear
+in a machine readable format such as RDF/XML then a link from
+the HTML to a machine readable format MAY be published
+as follows:</p>
+
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+&lt;html&gt;
+&lt;head&gt;
+&lt;link rel="alternate" type="application/rdf+xml" href="profile.rdf"/&gt;
+&lt;/head&gt;
+&lt;body&gt; ... &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</section>
+<section>
+<h1>In Portable Contacts format using GRDDL</h1>
+<p class="issue">TODO: discuss other formats and GRDDL, XSPARQL options for xml formats</p>
+</section>
+</section>
+
+<section class='normative'>
+<h2>Processing the WebID Profile</h2>
+
+<p>The <tref>Requesting Agent</tref> needs to fetch the document, if it does not have a valid one in cache.  
+The Agent requesting the WebID document MUST be able to parse documents in Turtle [[!TURTLE-TR]], but MAY also be able to parse documents in RDF/XML [[!RDF-SYNTAX-GRAMMAR]] and RDFa [[!RDFA-CORE]].
+The result of this processing should be a graph of RDF relations that is queryable, as explained in the next section.</p>
+<p class="note">
+It is suggested that the <tref>Requesting Agent</tref> should set the Accept-Header to request <code>text/turtle</code> with a higher priority than <code>application/xhtml+xml</code>(RDFa) and <code>application/rdf+xml</code> (RDF/XML). The reason is that it is quite likely that many sites will produce non marked up HTML and leave the graph to the pure rdf formats.
+</p>
+<p>If the <tref>Requesting Agent</tref> wishes to have the most up-to-date Profile document for an HTTPS URL, it can use the HTTP cache control headers to get the latest versions.</p>
+</section>
+</section>
+</section>
+
+<section class='appendix informative' id="history">
+<h1>Change History</h1>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/46e0aadef7b6">2012-11-18</a>
+First radical change in the WebID spec, which now deals exclusively with identity.
+</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/46e0aadef7b6">2011-12-12</a>
+Fixed several errors in examples and diagrams, clarified TLS-Light, added SSL renegotiation, key chain and cache control, updated list people in acknowledgments.
+</p>
+<p><a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111123/">2011-11-23</a>
+Wide ranging changes: Rewrote the Verification algorithm now enhanced with a detailed sequence diagram.  Moved to new ontology using xsd:hexBinary datatypes and removed rsa: ontology. Rewrote vocabulary section using clearer names. All these changes required serious rewriting everywhere.
+</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/6b60d7335151">2011-02-10</a>
+Move to <a href="http://www.w3.org/2005/Incubator/webid/">W3C WebID XG</a>.
+Updates from previous unofficial WebID group include changes on
+RDF/XML publishing in HTML, clarification on multiple SAN URIs and
+WebID verification steps.
+</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/dc93b6bbc538">2010-08-09</a>
+Updates from WebID community: moved OpenID/OAuth sections to separate document,
+switched to the URI terminology instead of URL, added "Creating the certificate"
+and "Publishing the WebID Profile document" sections with a WebID graph and
+serializations in Turtle and RDFa, improved SPARQL queries using literal
+notation with cert datatypes, updated list of contributors,
+and many other fixes.</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/4aef27947dec">2010-07-25</a>
+Added WebID Profile section.</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/805d44635286">2010-07-18</a>
+Updates from WebID community related to RDF/XML support, authentication sequence
+corrections, abstract and introduction updates.</p>
+<p><a href="https://dvcs.w3.org/hg/WebID/rev/25ba7f596f07">2010-07-11</a>
+Initial version.</p>
+</section>
+
+<section class='informative' id="acknowledgements">
+<h1>Acknowledgments</h1>
+
+<p>The following people have been instrumental in providing thoughts, feedback,
+reviews, criticism and input in the creation of this specification:
+
+Tim Berners-Lee, Melvin Carvalho, Kingsley Idehen, Nathan Rixham, Ted Thibodeau, Alexandre Bertails, Olivier Berger, Sebastian TrĂ¼g.
+
+</section>
+  </body>
+</html>
+
Binary file spec/img/WebID-overview.png has changed