--- a/spec/identity-respec.html Wed Feb 06 17:02:42 2013 +0100
+++ b/spec/identity-respec.html Thu Feb 07 10:53:05 2013 +0100
@@ -351,7 +351,7 @@
<h1>Introduction</h1>
<p>
-A WebID is an HTTP URI which uniquely refers to an Agent (Person, Organization, Group, Device, etc.). A description of the WebID can be found in the <tref>Profile Document</tref>, a type of web page that any Social Network user is familiar with.</p>
+A WebID is an HTTP URI which refers to an Agent (Person, Organization, Group, Device, etc.). A description of the WebID can be found in the <tref>Profile Document</tref>, a type of web page that any Social Network user is familiar with.</p>
<p>
A WebID <tref>Profile Document</tref> is a Web resource that MUST be available as Turtle [[!TURTLE-TR]], but MAY be available in other RDF serialization formats (e.g. [[!RDFA-CORE]]) if requested through content negotiation.
</p>
@@ -386,12 +386,12 @@
<dd>A Service is 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 which uniquely refers to an Agent (Person, Organization, Group, Device, etc.). For WebIDs with fragment identifiers (e.g. #me), the URI without the fragment denotes the Profile Document. For WebIDs without fragment identifiers an HTTP request on the WebID MUST return a 303 with a Location header URI denoting the Profile Document.
+<dd>A WebID is a URI with an HTTP or HTTPS scheme which denotes an Agent (Person, Organization, Group, Device, etc.). For WebIDs with fragment identifiers (e.g. #me), the URI without the fragment denotes the Profile Document. For WebIDs without fragment identifiers an HTTP request on the WebID MUST return a 303 with a Location header URI referring to the Profile Document.
</dd>
<dt><tdef>WebID Profile</tdef> or <tdef>Profile Document</tdef></dt>
<dd>
-A WebID Profile is an RDF document which MUST uniquely describe the referent of the WebID HTTP URI. This document MUST be available as Turtle [[!TURTLE-TR]]. This document MAY be available in other RDF serialization formats, such as RDFa [[!RDFA-CORE]], RDF/XML [[!RDF-PRIMER]], or N3 [[!N3]] if so requested through content negotiation.
+A WebID Profile is an RDF document which MUST uniquely describe the Agent denoted by the WebID in relation to that WebID. This document MUST be available as Turtle [[!TURTLE-TR]]. This document MAY be available in other RDF serialization 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>
--- a/spec/index-respec.html Wed Feb 06 17:02:42 2013 +0100
+++ b/spec/index-respec.html Thu Feb 07 10:53:05 2013 +0100
@@ -369,15 +369,623 @@
<h1>Terminology</h1>
<dl>
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>WebID 1.0</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'>
+#webid-diagram {
+ width: 90%;
+}
+
+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='https://www.w3.org/Tools/respec/respec-w3c-common' 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> ";
+ berjon.biblio["FOAF"] = "Dan Brickley, Libby Miller. <a href='http://xmlns.com/foaf/0.1/'><cite>FOAF: Vocabulary Specification 0.98.</cite></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: "andrei@fcns.eu",
+ url: "https://my-profile.eu/people/deiu/card#me" },
+ { name: "Stéphane Corlosquet",
+ mailto: "scorlosquet@gmail.com" }
+ ],
+
+ // 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(/<xs:element\s+name="([^&]*)"/g, '<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 which refers to an Agent (Person, Organization, Group, Device, etc.). A description of the WebID can be found in the <tref>Profile Document</tref>, a type of web page that any Social Network user is familiar with.</p>
+<p>
+A WebID <tref>Profile Document</tref> is a Web resource that MUST be available as Turtle [[!TURTLE-TR]], but MAY be available in other RDF serialization formats (e.g. [[!RDFA-CORE]]) if requested through content negotiation.
+</p>
+<p>
+WebIDs can be used to build a Web of trust using vocabularies such as FOAF [[!FOAF]] 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>
+<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="#terminology">Section 2</a> provides a short description for the most commonly used terms in this document.</p>
+<p><a href="#the-http-uri">Section 3</a> describes what a WebID URI is.</p>
+<p><a href="#overview">Section 4</a> presents an overview of WebID.</p>
+<p><a href="#publishing-the-webid-profile-document">Section 5</a> deals with the publishing of a <tref>WebID Profile</tref>.</p>
+<p><a href="#processing-the-webid-profile">Section 6</a> describes how a request for a <tref>WebID Profile</tref> should be handled.</p>
+</section>
+</section>
+
+<section>
+<h1>Terminology</h1>
+<p>This section provides definitions for several important terms used in this document.</p>
+<dl>
+<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 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 which uniquely refers to an Agent (Person, Organization, Group, Device, etc.). For WebIDs with fragment identifiers (e.g. #me), the URI without the fragment denotes the Profile Document. For WebIDs without fragment identifiers an HTTP request on the WebID MUST return a 303 with a Location header URI denoting the Profile Document.
+<dd>A WebID is a URI with an HTTP or HTTPS scheme which denotes an Agent (Person, Organization, Group, Device, etc.).
+For WebIDs with fragment identifiers (e.g. #me), the URI without the fragment denotes the Profile Document.
+For WebIDs without fragment identifiers an HTTP request on the WebID MUST return a 303 with a Location header URI denoting the Profile Document.
</dd>
<dt><tdef>WebID Profile</tdef> or <tdef>Profile Document</tdef></dt>
<dd>
-A WebID Profile is an RDF document which MUST uniquely describe the referent of the <tref>WebID</tref> HTTP URI. This document MUST be available as Turtle [[!TURTLE-TR]]. This document MAY be available in other RDF serialization formats, such as RDFa [[!RDFA-CORE]], RDF/XML [[!RDF-PRIMER]], or N3 [[!N3]] if so requested through content negotiation.
+A WebID Profile is an RDF document which MUST uniquely describe the Agent denoted by the WebID in terms of relations to that WebID.
+This document MUST be available as Turtle [[!TURTLE-TR]].
+This document MAY be available in other RDF serialization 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 <tref>Requesting Agent</tref>s MUST be transformable automatically and in a standard manner to an RDF Graph, using technologies such as GRDDL [[!GRDDL-PRIMER]].
+</dd>
+</dl>
-Any other serializations that intend to be used by <tref>WebID</tref> MUST be transformable automatically and in a standard manner to an RDF Graph, using technologies such as GRDDL [[!GRDDL-PRIMER]].
+
+<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>
+
+<section class='normative'>
+<h1>The WebID HTTP URI</h1>
+
+<p>The WebID HTTP 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>
+
+<p class="note">Hash URIs are encouraged when choosing a WebID since 303 redirects impact performance for clients. All examples in the spec will use such hash URIs.</p>
+
+</section>
+
+<section class='informative'>
+<h1>Overview</h1>
+
+<p>The relation between the <tref>WebID</tref> URI and the <tref>WebID Profile</tref> document is illustrated below.</p>
+<img id='webid-diagram' alt="WebID overview" src="img/WebID-overview.png"/>
+
+<p>The WebID URI - <em>http://www.w3.org/People/Berners-Lee/card</a><strong>#i</strong></em> - is an Identifier that refers to person or more generally an agent, in this case to Tim Bernsers Lee.
+<p>The WebID Profile URI - <em><a href="http://www.w3.org/People/Berners-Lee/card">http://www.w3.org/People/Berners-Lee/card</a></em> - denotes the document describing the person or agent to which the WebID URI refers.<br/>
+The WebID profile can contain any number of relations describing the agent, as shown in the above diagram.
+For example a user can publish a depiction of himself, so that sites he authenticates to can personalize the user experience.
+He can post links to people he knows, who in turn have WebIDs published on other sites, in order to create a distributed Social Web.
+He can also publish one or more relations to Principals used by different authentication protocols.
+More information on WebID and other authentication protocols can be found on the <a href="http://www.w3.org/2005/Incubator/webid/wiki/Identity_Interoperability">WebID Identity Interoperability</a> page.
+</p>
+</section>
+
+<section class='normative'>
+<h1>Publishing the WebID Profile Document</h1>
+
+<p>
+WebID requires that servers MUST at least be able to provide Turtle representation of profile documents, but other serialization formats of the graph are allowed, 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>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>WebID RDF graphs are built using vocabularies identified by URIs, that can be placed in subject, predicate or object position of the relations constituting the graph.
+ 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:name</dt>
+ <dd>The name of the individual or agent.</dd>
+ <dt>foaf:knows</dt>
+ <dd>The WebID URI of a known person.</dd>
+ <dt>foaf:img</dt>
+ <dd>An image representing a person.</dd>
+</dl>
+</section>
+</section>
+
+<section class='informative'>
+<h1>Publishing a WebID Profile using 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 <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> query language.
+ Turtle profile documents should be served with the <code>text/turtle</code> content type.
+</p>
+<p>
+Take for example the WebID <em>https://bob.example/profile#me</em>, for which the WebID Profile document contains the following Turtle representation:
+</p>
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+ <#me> a foaf:Person;
+ foaf:name "Bob";
+ foaf:knows <https://example.edu/p/Alice#MSc>;
+ foaf:img <http://bob.example/picture.jpg>.
+</pre>
+</section>
+<section class="informative">
+<h1>Publishing a WebID Profile using the 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.
+</p>
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+<div vocab="http://xmlns.com/foaf/0.1/" about="#me" typeof="foaf:Person">
+ <p>My name is <span property="name">Bob</span> and this is how I look like: <img property="img" src="http://bob.example/picture.jpg" title="Bob" alt="Bob" /></p>
+ <h2>My Good Friends</h2>
+ <ul>
+ <li property="knows" href="https://example.edu/p/Alice#MSc">Alice</li>
+ </ul>
+</div>
+</pre>
+<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;">
+<html>
+<head>
+<link rel="alternate" type="application/rdf+xml" href="profile.rdf"/>
+</head>
+<body> ... </body>
+</html>
+</pre>
+</section>
+
+<section class="informative">
+<h1>Privacy</h1>
+<p>A WebID Profile document does not need to contain only public resources. A possible way of protecting its contents can be achieved by separating parts of the profile information into separate documents, each protected by access control policies. In the following example, Bob is limiting access to his list of friends, by placing all foaf:knows relations into a separate document.</p>
+
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ <#me> a foaf:Person;
+ foaf:name "Bob";
+ <strong>rdfs:seeAlso <https://bob.example/friends>;</strong>
+ foaf:img <http://bob.example/picture.jpg>.
+</pre>
+
+<p>Where https://bob.example/friends is a reference to an ACL protected document containing:</p>
+
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+ <https://bob.example/profile#me> a foaf:Person;
+ foaf:knows <https://example.edu/p/Alice#MSc>;
+ foaf:knows <https://example.com/people/Mary/card#me>.
+</pre>
+
+<p>Having the following corresponding ACL rule, expressed using the <a href="http://www.w3.org/wiki/WebAccessControl">WebAccessControl</a> ontology:</p>
+
+<pre class="example" style="word-wrap: break-word; white-space: pre-wrap;">
+ @prefix acl: <http://www.w3.org/ns/auth/acl#> .
+
+ <#FriendsOnly>
+ <acl:accessTo> <https://bob.example/friends>;
+ <acl:agent> <http://example.edu/p/Alice#Msc>, <http://example.com/people/Mary/card#me>;
+ <acl:mode> <acl:Read>.
+</pre>
+</section>
+
+<section class="informative">
+<h1>Security Considerations</h1>
+Given that this section is non-normative, and due to the fact that additional attacks may be discovered at a later time, a collection of security considerations has been made available on the <a href="http://www.w3.org/2005/Incubator/webid/wiki/Identity_Security">WebID Wiki</a>.
+</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 important 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 in 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 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:</p>
+<p>Stéphane Corlosquet, Kingsley Idehen, Ted Thibodeau, Alexandre Bertails, Thomas Bergwinkl.</p>
+
+</section>
+ </body>
+</html>
+
+<dt><tdef>WebID</tdef></dt>
+<dd>A WebID is a URI with an HTTP or HTTPS scheme which denotes an Agent (Person, Organization, Group, Device, etc.).
+For WebIDs with fragment identifiers (e.g. #me), the URI without the fragment denotes the Profile Document.
+For WebIDs without fragment identifiers an HTTP request on the WebID MUST return a 303 with a Location header URI denoting the Profile Document.
+</dd>
+
+<dt><tdef>WebID Profile</tdef> or <tdef>Profile Document</tdef></dt>
+<dd>
+A WebID Profile is an RDF document which MUST uniquely describe the Agent denoted by the WebID in terms of relations to that WebID.
+This document MUST be available as Turtle [[!TURTLE-TR]].
+This document MAY be available in other RDF serialization 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 <tref>Verification Agent</tref>s MUST be transformable automatically and in a standard manner to an RDF Graph, using technologies such as GRDDL [[!GRDDL-PRIMER]].
</dd>
<dt><tdef>Alice</tdef></dt>