add draft ED-webid-20111212
authorStephane Corlosquet <scorlosquet@gmail.com>
Mon, 12 Dec 2011 13:21:18 -0500
changeset 25046e0aadef7b6
parent 249 25515f76dfb9
child 251 d89236011eb5
add draft ED-webid-20111212
spec/drafts/ED-webid-20111212/index.html
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/spec/drafts/ED-webid-20111212/index.html	Mon Dec 12 13:21:18 2011 -0500
     1.3 @@ -0,0 +1,1323 @@
     1.4 +<?xml version='1.0' encoding='UTF-8'?>
     1.5 +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML+RDFa 1.0//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd'>
     1.6 +<html dir="ltr" about="" property="dcterms:language" content="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:dcterms='http://purl.org/dc/terms/' xmlns:bibo='http://purl.org/ontology/bibo/' xmlns:foaf='http://xmlns.com/foaf/0.1/' xmlns:xsd='http://www.w3.org/2001/XMLSchema#'>
     1.7 +<head>
     1.8 +    <title>WebID 1.0</title>
     1.9 +    <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
    1.10 +    
    1.11 +<!-- 
    1.12 +      === NOTA BENE ===
    1.13 +      For the three scripts below, if your spec resides on dev.w3 you can check them
    1.14 +      out in the same tree and use relative links so that they'll work offline,
    1.15 +      -->
    1.16 +
    1.17 +<style type="text/css">
    1.18 +code           { font-family: monospace; }
    1.19 +
    1.20 +span.hilite { color: red; /* font-weight: bold */ }
    1.21 +
    1.22 +li p           { margin-top: 0.3em;
    1.23 +                 margin-bottom: 0.3em; }
    1.24 +
    1.25 +div.explanation { background-color: #ADD8E6;
    1.26 +                   width: 80%;
    1.27 +                   margin: 12px; padding: 8px; }
    1.28 +div.explanation li { margin-top: 8px; }
    1.29 +div.explanation dd { margin: 4px; }
    1.30 +
    1.31 +.adef {
    1.32 +	font-family: monospace;
    1.33 +	font-weight: bold;
    1.34 +    color: #ff4500 !important;
    1.35 +}
    1.36 +
    1.37 +.aref {
    1.38 +	font-family: monospace;
    1.39 +	font-weight: bold;
    1.40 +    color: #ff4500 !important;
    1.41 +}
    1.42 +
    1.43 +span.entity { color: red; }
    1.44 +
    1.45 +span.element { color: green; }
    1.46 +</style>
    1.47 +
    1.48 +    
    1.49 +
    1.50 +<!--     <script src='/ReSpec.js/js/respec.js' class='remove'></script>  -->
    1.51 +
    1.52 +    
    1.53 +  <style type="text/css">
    1.54 +/*****************************************************************
    1.55 + * ReSpec CSS
    1.56 + * Robin Berjon (robin at berjon dot com)
    1.57 + * v0.05 - 2009-07-31
    1.58 + *****************************************************************/
    1.59 +
    1.60 +
    1.61 +/* --- INLINES --- */
    1.62 +em.rfc2119 { 
    1.63 +    text-transform:     lowercase;
    1.64 +    font-variant:       small-caps;
    1.65 +    font-style:         normal;
    1.66 +    color:              #900;
    1.67 +}
    1.68 +
    1.69 +h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
    1.70 +h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
    1.71 +    border: none;
    1.72 +}
    1.73 +
    1.74 +dfn {
    1.75 +    font-weight:    bold;
    1.76 +}
    1.77 +
    1.78 +a.internalDFN {
    1.79 +    color:  inherit;
    1.80 +    border-bottom:  1px solid #99c;
    1.81 +    text-decoration:    none;
    1.82 +}
    1.83 +
    1.84 +a.externalDFN {
    1.85 +    color:  inherit;
    1.86 +    border-bottom:  1px dotted #ccc;
    1.87 +    text-decoration:    none;
    1.88 +}
    1.89 +
    1.90 +a.bibref {
    1.91 +    text-decoration:    none;
    1.92 +}
    1.93 +
    1.94 +code {
    1.95 +    color:  #ff4500;
    1.96 +}
    1.97 +
    1.98 +
    1.99 +/* --- WEB IDL --- */
   1.100 +pre.idl {
   1.101 +    border-top: 1px solid #90b8de;
   1.102 +    border-bottom: 1px solid #90b8de;
   1.103 +    padding:    1em;
   1.104 +    line-height:    120%;
   1.105 +}
   1.106 +
   1.107 +pre.idl::before {
   1.108 +    content:    &quot;WebIDL&quot;;
   1.109 +    display:    block;
   1.110 +    width:      150px;
   1.111 +    background: #90b8de;
   1.112 +    color:  #fff;
   1.113 +    font-family:    initial;
   1.114 +    padding:    3px;
   1.115 +    font-weight:    bold;
   1.116 +    margin: -1em 0 1em -1em;
   1.117 +}
   1.118 +
   1.119 +.idlType {
   1.120 +    color:  #ff4500;
   1.121 +    font-weight:    bold;
   1.122 +    text-decoration:    none;
   1.123 +}
   1.124 +
   1.125 +/*.idlModule*/
   1.126 +/*.idlModuleID*/
   1.127 +/*.idlInterface*/
   1.128 +.idlInterfaceID, .idlDictionaryID {
   1.129 +    font-weight:    bold;
   1.130 +    color:  #005a9c;
   1.131 +}
   1.132 +
   1.133 +.idlSuperclass {
   1.134 +    font-style: italic;
   1.135 +    color:  #005a9c;
   1.136 +}
   1.137 +
   1.138 +/*.idlAttribute*/
   1.139 +.idlAttrType, .idlFieldType, .idlMemberType {
   1.140 +    color:  #005a9c;
   1.141 +}
   1.142 +.idlAttrName, .idlFieldName, .idlMemberName {
   1.143 +    color:  #ff4500;
   1.144 +}
   1.145 +.idlAttrName a, .idlFieldName a, .idlMemberName a {
   1.146 +    color:  #ff4500;
   1.147 +    border-bottom:  1px dotted #ff4500;
   1.148 +    text-decoration: none;
   1.149 +}
   1.150 +
   1.151 +/*.idlMethod*/
   1.152 +.idlMethType {
   1.153 +    color:  #005a9c;
   1.154 +}
   1.155 +.idlMethName {
   1.156 +    color:  #ff4500;
   1.157 +}
   1.158 +.idlMethName a {
   1.159 +    color:  #ff4500;
   1.160 +    border-bottom:  1px dotted #ff4500;
   1.161 +    text-decoration: none;
   1.162 +}
   1.163 +
   1.164 +/*.idlParam*/
   1.165 +.idlParamType {
   1.166 +    color:  #005a9c;
   1.167 +}
   1.168 +.idlParamName {
   1.169 +    font-style: italic;
   1.170 +}
   1.171 +
   1.172 +.extAttr {
   1.173 +    color:  #666;
   1.174 +}
   1.175 +
   1.176 +/*.idlConst*/
   1.177 +.idlConstType {
   1.178 +    color:  #005a9c;
   1.179 +}
   1.180 +.idlConstName {
   1.181 +    color:  #ff4500;
   1.182 +}
   1.183 +.idlConstName a {
   1.184 +    color:  #ff4500;
   1.185 +    border-bottom:  1px dotted #ff4500;
   1.186 +    text-decoration: none;
   1.187 +}
   1.188 +
   1.189 +/*.idlException*/
   1.190 +.idlExceptionID {
   1.191 +    font-weight:    bold;
   1.192 +    color:  #c00;
   1.193 +}
   1.194 +
   1.195 +.idlTypedefID, .idlTypedefType {
   1.196 +    color:  #005a9c;
   1.197 +}
   1.198 +
   1.199 +.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
   1.200 +    color:  #c00;
   1.201 +    font-weight:    normal;
   1.202 +}
   1.203 +
   1.204 +.excName a {
   1.205 +    font-family:    monospace;
   1.206 +}
   1.207 +
   1.208 +.idlRaises a.idlType, .excName a.idlType {
   1.209 +    border-bottom:  1px dotted #c00;
   1.210 +}
   1.211 +
   1.212 +.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
   1.213 +    width:  45px;
   1.214 +    text-align: center;
   1.215 +}
   1.216 +.excGetSetTrue, .prmNullTrue, .prmOptTrue { color:  #0c0; }
   1.217 +.excGetSetFalse, .prmNullFalse, .prmOptFalse { color:  #c00; }
   1.218 +
   1.219 +.idlImplements a {
   1.220 +    font-weight:    bold;
   1.221 +}
   1.222 +
   1.223 +dl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {
   1.224 +    margin-left:    2em;
   1.225 +}
   1.226 +
   1.227 +.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
   1.228 +    font-weight:    normal;
   1.229 +}
   1.230 +
   1.231 +.attributes dt code, .methods dt code, .constants dt code, .fields dt code, .dictionary-members dt code {
   1.232 +    font-weight:    bold;
   1.233 +    color:  #000;
   1.234 +    font-family:    monospace;
   1.235 +}
   1.236 +
   1.237 +.attributes dt code, .fields dt code, .dictionary-members dt code {
   1.238 +    background:  #ffffd2;
   1.239 +}
   1.240 +
   1.241 +.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
   1.242 +    color:  #005a9c;
   1.243 +    background:  transparent;
   1.244 +    font-family:    inherit;
   1.245 +    font-weight:    normal;
   1.246 +    font-style: italic;
   1.247 +}
   1.248 +
   1.249 +.methods dt code {
   1.250 +    background:  #d9e6f8;
   1.251 +}
   1.252 +
   1.253 +.constants dt code {
   1.254 +    background:  #ddffd2;
   1.255 +}
   1.256 +
   1.257 +.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {
   1.258 +    margin-bottom:  1em;
   1.259 +}
   1.260 +
   1.261 +table.parameters, table.exceptions {
   1.262 +    border-spacing: 0;
   1.263 +    border-collapse:    collapse;
   1.264 +    margin: 0.5em 0;
   1.265 +    width:  100%;
   1.266 +}
   1.267 +table.parameters { border-bottom:  1px solid #90b8de; }
   1.268 +table.exceptions { border-bottom:  1px solid #deb890; }
   1.269 +
   1.270 +.parameters th, .exceptions th {
   1.271 +    color:  #fff;
   1.272 +    padding:    3px 5px;
   1.273 +    text-align: left;
   1.274 +    font-family:    initial;
   1.275 +    font-weight:    normal;
   1.276 +    text-shadow:    #666 1px 1px 0;
   1.277 +}
   1.278 +.parameters th { background: #90b8de; }
   1.279 +.exceptions th { background: #deb890; }
   1.280 +
   1.281 +.parameters td, .exceptions td {
   1.282 +    padding:    3px 10px;
   1.283 +    border-top: 1px solid #ddd;
   1.284 +    vertical-align: top;
   1.285 +}
   1.286 +
   1.287 +.parameters tr:first-child td, .exceptions tr:first-child td {
   1.288 +    border-top: none;
   1.289 +}
   1.290 +
   1.291 +.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
   1.292 +    width:  100px;
   1.293 +}
   1.294 +
   1.295 +.parameters td.prmType {
   1.296 +    width:  120px;
   1.297 +}
   1.298 +
   1.299 +table.exceptions table {
   1.300 +    border-spacing: 0;
   1.301 +    border-collapse:    collapse;
   1.302 +    width:  100%;
   1.303 +}
   1.304 +
   1.305 +/* --- TOC --- */
   1.306 +.toc a {
   1.307 +    text-decoration:    none;
   1.308 +}
   1.309 +
   1.310 +a .secno {
   1.311 +    color:  #000;
   1.312 +}
   1.313 +
   1.314 +/* --- TABLE --- */
   1.315 +table.simple {
   1.316 +    border-spacing: 0;
   1.317 +    border-collapse:    collapse;
   1.318 +    border-bottom:  3px solid #005a9c;
   1.319 +}
   1.320 +
   1.321 +.simple th {
   1.322 +    background: #005a9c;
   1.323 +    color:  #fff;
   1.324 +    padding:    3px 5px;
   1.325 +    text-align: left;
   1.326 +}
   1.327 +
   1.328 +.simple th[scope=&quot;row&quot;] {
   1.329 +    background: inherit;
   1.330 +    color:  inherit;
   1.331 +    border-top: 1px solid #ddd;
   1.332 +}
   1.333 +
   1.334 +.simple td {
   1.335 +    padding:    3px 10px;
   1.336 +    border-top: 1px solid #ddd;
   1.337 +}
   1.338 +
   1.339 +.simple tr:nth-child(even) {
   1.340 +    background: #f0f6ff;
   1.341 +}
   1.342 +
   1.343 +/* --- DL --- */
   1.344 +.section dd &gt; p:first-child {
   1.345 +    margin-top: 0;
   1.346 +}
   1.347 +
   1.348 +.section dd &gt; p:last-child {
   1.349 +    margin-bottom: 0;
   1.350 +}
   1.351 +
   1.352 +.section dd {
   1.353 +    margin-bottom:  1em;
   1.354 +}
   1.355 +
   1.356 +.section dl.attrs dd, .section dl.eldef dd {
   1.357 +    margin-bottom:  0;
   1.358 +}
   1.359 +
   1.360 +/* --- EXAMPLES --- */
   1.361 +pre.example {
   1.362 +    border-top: 1px solid #ff4500;
   1.363 +    border-bottom: 1px solid #ff4500;
   1.364 +    padding:    1em;
   1.365 +    margin-top: 1em;
   1.366 +}
   1.367 +
   1.368 +pre.example::before {
   1.369 +    content:    &quot;Example&quot;;
   1.370 +    display:    block;
   1.371 +    width:      150px;
   1.372 +    background: #ff4500;
   1.373 +    color:  #fff;
   1.374 +    font-family:    initial;
   1.375 +    padding:    3px;
   1.376 +    font-weight:    bold;
   1.377 +    margin: -1em 0 1em -1em;
   1.378 +}
   1.379 +
   1.380 +/* --- EDITORIAL NOTES --- */
   1.381 +.issue {
   1.382 +    padding:    1em;
   1.383 +    margin: 1em 0em 0em;
   1.384 +    border: 1px solid #f00;
   1.385 +    background: #ffc;
   1.386 +}
   1.387 +
   1.388 +.issue::before {
   1.389 +    content:    &quot;Issue&quot;;
   1.390 +    display:    block;
   1.391 +    width:  150px;
   1.392 +    margin: -1.5em 0 0.5em 0;
   1.393 +    font-weight:    bold;
   1.394 +    border: 1px solid #f00;
   1.395 +    background: #fff;
   1.396 +    padding:    3px 1em;
   1.397 +}
   1.398 +
   1.399 +.note {
   1.400 +    margin: 1em 0em 0em;
   1.401 +    padding:    1em;
   1.402 +    border: 2px solid #cff6d9;
   1.403 +    background: #e2fff0;
   1.404 +}
   1.405 +
   1.406 +.note::before {
   1.407 +    content:    &quot;Note&quot;;
   1.408 +    display:    block;
   1.409 +    width:  150px;
   1.410 +    margin: -1.5em 0 0.5em 0;
   1.411 +    font-weight:    bold;
   1.412 +    border: 1px solid #cff6d9;
   1.413 +    background: #fff;
   1.414 +    padding:    3px 1em;
   1.415 +}
   1.416 +
   1.417 +/* --- Best Practices --- */
   1.418 +div.practice {
   1.419 +    border: solid #bebebe 1px;
   1.420 +    margin: 2em 1em 1em 2em;
   1.421 +}
   1.422 +
   1.423 +span.practicelab {
   1.424 +    margin: 1.5em 0.5em 1em 1em;
   1.425 +    font-weight: bold;
   1.426 +    font-style: italic;
   1.427 +}
   1.428 +
   1.429 +span.practicelab   { background: #dfffff; }
   1.430 +
   1.431 +span.practicelab {
   1.432 +    position: relative;
   1.433 +    padding: 0 0.5em;
   1.434 +    top: -1.5em;
   1.435 +}
   1.436 +
   1.437 +p.practicedesc {
   1.438 +    margin: 1.5em 0.5em 1em 1em;
   1.439 +}
   1.440 +
   1.441 +@media screen {
   1.442 +    p.practicedesc {
   1.443 +        position: relative;
   1.444 +        top: -2em;
   1.445 +        padding: 0;
   1.446 +        margin: 1.5em 0.5em -1em 1em;
   1.447 +    }
   1.448 +}
   1.449 +
   1.450 +/* --- SYNTAX HIGHLIGHTING --- */
   1.451 +pre.sh_sourceCode {
   1.452 +  background-color: white;
   1.453 +  color: black;
   1.454 +  font-style: normal;
   1.455 +  font-weight: normal;
   1.456 +}
   1.457 +
   1.458 +pre.sh_sourceCode .sh_keyword { color: #005a9c; font-weight: bold; }           /* language keywords */
   1.459 +pre.sh_sourceCode .sh_type { color: #666; }                            /* basic types */
   1.460 +pre.sh_sourceCode .sh_usertype { color: teal; }                             /* user defined types */
   1.461 +pre.sh_sourceCode .sh_string { color: red; font-family: monospace; }        /* strings and chars */
   1.462 +pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; }     /* regular expressions */
   1.463 +pre.sh_sourceCode .sh_specialchar { color: 	#ffc0cb; font-family: monospace; }  /* e.g., \n, \t, \\ */
   1.464 +pre.sh_sourceCode .sh_comment { color: #A52A2A; font-style: italic; }         /* comments */
   1.465 +pre.sh_sourceCode .sh_number { color: purple; }                             /* literal numbers */
   1.466 +pre.sh_sourceCode .sh_preproc { color: #00008B; font-weight: bold; }       /* e.g., #include, import */
   1.467 +pre.sh_sourceCode .sh_symbol { color: blue; }                            /* e.g., *, + */
   1.468 +pre.sh_sourceCode .sh_function { color: black; font-weight: bold; }         /* function calls and declarations */
   1.469 +pre.sh_sourceCode .sh_cbracket { color: red; }                              /* block brackets (e.g., {, }) */
   1.470 +pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: #00FFFF; }   /* TODO and FIXME */
   1.471 +
   1.472 +/* Predefined variables and functions (for instance glsl) */
   1.473 +pre.sh_sourceCode .sh_predef_var { color: #00008B; }
   1.474 +pre.sh_sourceCode .sh_predef_func { color: #00008B; font-weight: bold; }
   1.475 +
   1.476 +/* for OOP */
   1.477 +pre.sh_sourceCode .sh_classname { color: teal; }
   1.478 +
   1.479 +/* line numbers (not yet implemented) */
   1.480 +pre.sh_sourceCode .sh_linenum { display: none; }
   1.481 +
   1.482 +/* Internet related */
   1.483 +pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; }
   1.484 +
   1.485 +/* for ChangeLog and Log files */
   1.486 +pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; }
   1.487 +pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: #00008B; font-weight: bold; }
   1.488 +pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: #006400; }
   1.489 +
   1.490 +/* for Prolog, Perl... */
   1.491 +pre.sh_sourceCode .sh_variable { color: #006400; }
   1.492 +
   1.493 +/* for LaTeX */
   1.494 +pre.sh_sourceCode .sh_italics { color: #006400; font-style: italic; }
   1.495 +pre.sh_sourceCode .sh_bold { color: #006400; font-weight: bold; }
   1.496 +pre.sh_sourceCode .sh_underline { color: #006400; text-decoration: underline; }
   1.497 +pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; }
   1.498 +pre.sh_sourceCode .sh_argument { color: #006400; }
   1.499 +pre.sh_sourceCode .sh_optionalargument { color: purple; }
   1.500 +pre.sh_sourceCode .sh_math { color: orange; }
   1.501 +pre.sh_sourceCode .sh_bibtex { color: blue; }
   1.502 +
   1.503 +/* for diffs */
   1.504 +pre.sh_sourceCode .sh_oldfile { color: orange; }
   1.505 +pre.sh_sourceCode .sh_newfile { color: #006400; }
   1.506 +pre.sh_sourceCode .sh_difflines { color: blue; }
   1.507 +
   1.508 +/* for css */
   1.509 +pre.sh_sourceCode .sh_selector { color: purple; }
   1.510 +pre.sh_sourceCode .sh_property { color: blue; }
   1.511 +pre.sh_sourceCode .sh_value { color: #006400; font-style: italic; }
   1.512 +
   1.513 +/* other */
   1.514 +pre.sh_sourceCode .sh_section { color: black; font-weight: bold; }
   1.515 +pre.sh_sourceCode .sh_paren { color: red; }
   1.516 +pre.sh_sourceCode .sh_attribute { color: #006400; }
   1.517 +
   1.518 +</style><link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css" charset="utf-8" /></head>
   1.519 +  <body style="display: inherit;"><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" alt="W3C" src="http://www.w3.org/Icons/w3c_home" /></a></p><h1 id="title" class="title" property="dcterms:title">WebID 1.0</h1><h2 id="subtitle" property="bibo:subtitle">Web Identification and Discovery</h2><h2 content="2011-12-12T18:14:25+0000" datatype="xsd:dateTime" property="dcterms:issued" id="w3c-editor-s-draft-12-december-2011"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft 12 December 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111212">http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111212</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111212">http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20111212</a></dd><dt>Previous version:</dt><dd><a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-2011-11-23/" rel="dcterms:replaces">http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-2011-11-23/</a></dd><dt>Editors:</dt><dd rel="bibo:editor"><span typeof="foaf:Person"><a href="http://bblfish.net/" content="Henry Story" property="foaf:name" rel="foaf:homepage">Henry Story</a> <span class="ed_mailto"><a href="mailto:henry.story@bblfish.net" rel="foaf:mbox">henry.story@bblfish.net</a></span> </span>
   1.520 +</dd>
   1.521 +<dd rel="bibo:editor"><span typeof="foaf:Person"><span property="foaf:name">Stéphane Corlosquet</span>, <a href="http://massgeneral.org/" rel="foaf:workplaceHomepage">Massachusetts General Hospital</a> <span class="ed_mailto"><a href="mailto:scorlosquet@gmail.com" rel="foaf:mbox">scorlosquet@gmail.com</a></span> </span>
   1.522 +</dd>
   1.523 +<dt>Authors:</dt><dd rel="dcterms:contributor"><span typeof="foaf:Person"><span property="foaf:name">Manu Sporny</span>, <a href="http://blog.digitalbazaar.com/" rel="foaf:workplaceHomepage">Digital Bazaar, Inc.</a> <span class="ed_mailto"><a href="mailto:msporny@digitalbazaar.com" rel="foaf:mbox">msporny@digitalbazaar.com</a></span> </span>
   1.524 +</dd>
   1.525 +<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a href="http://tobyinkster.co.uk/" content="Toby Inkster" property="foaf:name" rel="foaf:homepage">Toby Inkster</a></span>
   1.526 +</dd>
   1.527 +<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a href="http://bblfish.net/" content="Henry Story" property="foaf:name" rel="foaf:homepage">Henry Story</a></span>
   1.528 +</dd>
   1.529 +<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a href="http://blog.distributedmatter.net/" content="Bruno Harbulot" property="foaf:name" rel="foaf:homepage">Bruno Harbulot</a></span>
   1.530 +</dd>
   1.531 +<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a href="http://trialox.org/" content="Reto Bachmann-Gmür" property="foaf:name" rel="foaf:homepage">Reto Bachmann-Gmür</a></span>
   1.532 +</dd>
   1.533 +</dl><p>This document is also available in this non-normative format: <a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-20110210/diff-20100809.html">Diff from previous Editors Draft</a>.</p><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright" rel="license">Copyright</a> © 2010-2011 <span rel="dcterms:publisher"><span typeof="foaf:Organization"><a href="http://www.w3.org/" content="World Wide Web Consotrium" property="foaf:name" rel="foaf:homepage"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup></span></span> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <acronym title="World Wide Web Consortium">W3C</acronym> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p><hr /></div>
   1.534 +    <div id="abstract" class="introductory section" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" about="#abstract"><h2>Abstract</h2>
   1.535 +
   1.536 +<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. By making distributed authentication easy one can allow everybody to protect their resources and enable their preferred privacy settings.</p>
   1.537 +<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.
   1.538 +It does this by applying the best practices of Web Architecture whilst building on well established widely deployed protocols and standards including HTML, XHTML, URIs, HTTP, TLS, X509 Certificates, and RDF Semantics.
   1.539 +</p>
   1.540 +
   1.541 +<div typeof="bibo:Chapter" about="#how-to-read-this-document" class="section">
   1.542 +<h3 id="how-to-read-this-document">How to Read this Document</h3>
   1.543 +
   1.544 +<p>There are a number of concepts that are covered in this document that the
   1.545 +reader may want to be aware of before continuing. General knowledge of
   1.546 +<a href="http://en.wikipedia.org/wiki/Public_key_cryptography">public key cryptography</a>
   1.547 +and RDF [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-PRIMER">RDF-PRIMER</a></cite>] is necessary to understand how
   1.548 +to implement this specification. WebID uses a number of specific technologies
   1.549 +like HTTP over TLS [<cite><a class="bibref" rel="biblioentry" href="#bib-HTTP-TLS">HTTP-TLS</a></cite>], X.509 certificates [<cite><a class="bibref" rel="biblioentry" href="#bib-X509V3">X509V3</a></cite>],
   1.550 +RDF/XML [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SYNTAX-GRAMMAR">RDF-SYNTAX-GRAMMAR</a></cite>] and XHTML+RDFa [<cite><a class="bibref" rel="biblioentry" href="#bib-XHTML-RDFA">XHTML-RDFA</a></cite>].</p>
   1.551 +
   1.552 +<p>A general <a href="#introduction">Introduction</a> is provided for all that
   1.553 +would like to understand why this specification is necessary to simplify usage
   1.554 +of the Web.</p>
   1.555 +
   1.556 +<p>The terms used throughout this specification are listed in the section
   1.557 +titled <a href="#terminology">Terminology</a>.</p>
   1.558 +
   1.559 +<p>Developers that are interested in implementing this specification will be
   1.560 +most interested in the sections titled
   1.561 +<a href="#authentication-sequence">Authentication Sequence</a> and
   1.562 +<a href="#authentication-sequence-details">Authentication Sequence Details</a>.</p>
   1.563 +
   1.564 +</div>
   1.565 +</div><div class="introductory section" id="sotd" typeof="bibo:Chapter" about="#sotd"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current <acronym title="World Wide Web Consortium">W3C</acronym> publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><acronym title="World Wide Web Consortium">W3C</acronym> technical reports index</a> at http://www.w3.org/TR/.</em></p>
   1.566 +
   1.567 +<!--  <p>This document has been reviewed by W3C Members, by software
   1.568 +developers, and by other W3C groups and interested parties, and is
   1.569 +endorsed by the Director as a W3C Recommendation. It is a stable
   1.570 +document and may be used as reference material or cited from another
   1.571 +document. W3C's role in making the Recommendation is to draw attention
   1.572 +to the specification and to promote its widespread deployment. This
   1.573 +enhances the functionality and interoperability of the Web.</p>  -->
   1.574 +
   1.575 +
   1.576 +This document is produced from work by the
   1.577 +<a href="http://www.w3.org/2005/Incubator/webid/"><acronym title="World Wide Web Consortium">W3C</acronym> WebID Incubator Group</a>.
   1.578 +This is an internal draft document and may not even end up being officially
   1.579 +published. It may also be updated, replaced or obsoleted by other documents
   1.580 +at any time. It is inappropriate to cite this document as other than
   1.581 +work in progress.
   1.582 +The source code for this document is available at the following
   1.583 +URI: <a href="https://dvcs.w3.org/hg/WebID">https://dvcs.w3.org/hg/WebID</a>
   1.584 +
   1.585 +<p>This document was published by the <a href="http://www.w3.org/2005/Incubator/webid/">WebID XG</a> as an Editor's Draft. If you wish to make comments regarding this document, please send them to <a href="mailto:public-xg-webid@w3.org">public-xg-webid@w3.org</a> (<a href="mailto:public-xg-webid-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-xg-webid/">archives</a>). All feedback is welcome.</p><p>Publication as an Editor's Draft does not imply endorsement by the <acronym title="World Wide Web Consortium">W3C</acronym> Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>. <acronym title="World Wide Web Consortium">W3C</acronym> maintains a <a rel="disclosure" href="http://www.w3.org/2004/01/pp-impl/46065/status">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>.</p></div><div id="toc" typeof="bibo:Chapter" about="#toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#outline" class="tocxref"><span class="secno">1.1 </span>Outline</a></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">1.2 </span>Terminology</a></li><li class="tocline"><a href="#namespaces" class="tocxref"><span class="secno">1.3 </span>Namespaces</a></li></ul></li><li class="tocline"><a href="#preconditions" class="tocxref"><span class="secno">2. </span>Preconditions</a><ul class="toc"><li class="tocline"><a href="#the-certificate" class="tocxref"><span class="secno">2.1 </span>The certificate</a><ul class="toc"><li class="tocline"><a href="#creating-a-certificate" class="tocxref"><span class="secno">2.1.1 </span>Creating a Certificate</a></li></ul></li><li class="tocline"><a href="#publishing-the-webid-profile-document" class="tocxref"><span class="secno">2.2 </span>Publishing the WebID Profile Document</a><ul class="toc"><li class="tocline"><a href="#turtle" class="tocxref"><span class="secno">2.2.1 </span>Turtle</a></li><li class="tocline"><a href="#rdfa-html-notation" class="tocxref"><span class="secno">2.2.2 </span>RDFa HTML notation</a></li><li class="tocline"><a href="#in-rdf-xml" class="tocxref"><span class="secno">2.2.3 </span>In RDF/XML</a></li><li class="tocline"><a href="#in-portable-contacts-format-using-grddl" class="tocxref"><span class="secno">2.2.4 </span>In Portable Contacts format using GRDDL</a></li></ul></li><li class="tocline"><a href="#disabling-a-webid-certificate" class="tocxref"><span class="secno">2.3 </span>Disabling a WebID Certificate</a></li></ul></li><li class="tocline"><a href="#the-webid-protocol" class="tocxref"><span class="secno">3. </span>The WebID Protocol</a><ul class="toc"><li class="tocline"><a href="#authentication-sequence" class="tocxref"><span class="secno">3.1 </span>Authentication Sequence</a></li><li class="tocline"><a href="#authentication-sequence-details" class="tocxref"><span class="secno">3.2 </span>Authentication Sequence Details</a><ul class="toc"><li class="tocline"><a href="#initiating-a-tls-connection" class="tocxref"><span class="secno">3.2.1 </span>Initiating a TLS Connection</a></li><li class="tocline"><a href="#connecting-at-the-application-layer" class="tocxref"><span class="secno">3.2.2 </span>Connecting at the Application Layer</a></li><li class="tocline"><a href="#requesting-the-client-certificate" class="tocxref"><span class="secno">3.2.3 </span>Requesting the Client Certificate</a></li><li class="tocline"><a href="#verifying-the-webids" class="tocxref"><span class="secno">3.2.4 </span>Verifying the WebIDs</a><ul class="toc"><li class="tocline"><a href="#processing-the-webid-profile" class="tocxref"><span class="secno">3.2.4.1 </span>Processing the WebID Profile</a></li><li class="tocline"><a href="#verifying-the-webid-claim" class="tocxref"><span class="secno">3.2.4.2 </span>Verifying the WebID Claim</a></li><li class="tocline"><a href="#authorization" class="tocxref"><span class="secno">3.2.4.3 </span>Authorization</a></li></ul></li><li class="tocline"><a href="#the-webid-profile" class="tocxref"><span class="secno">3.2.5 </span>The WebID Profile</a><ul class="toc"><li class="tocline"><a href="#personal-information" class="tocxref"><span class="secno">3.2.5.1 </span>Personal Information</a></li><li class="tocline"><a href="#cryptographic-details" class="tocxref"><span class="secno">3.2.5.2 </span>Cryptographic Details</a></li></ul></li></ul></li></ul></li><li class="tocline"><a href="#history" class="tocxref"><span class="secno">A. </span>Change History</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">B. </span>Acknowledgments</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></div>
   1.586 +
   1.587 +
   1.588 +
   1.589 +<div class="informative section" id="introduction" typeof="bibo:Chapter" about="#introduction">
   1.590 +
   1.591 +<!-- OddPage -->
   1.592 +<h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
   1.593 +
   1.594 +<p>
   1.595 +The WebID protocol enables secure, efficient and maximally user friendly authentication on the Web. 
   1.596 +It enables people to authenticate onto any site by simply clicking on one of the certificates proposed to them by their browser. 
   1.597 +These certificates can be created by any Web Site for their users in one click.
   1.598 +The identifier, known as the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a>, is a URI whose sense can be found in the associated <a class="tref internalDFN" title="Profile_Page" href="#dfn-profile_page">Profile Page</a>, a type of web page that any Social Network user is familiar with.</p>
   1.599 +<p>
   1.600 +These 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. 
   1.601 +Such a web of trust can then be used by a <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a> to make authorization decisions, by allowing access to resource depending on the properties of an agent, such that the he is known by some relevant people, works at a given company, is a family member, is part of some group, ...</p>
   1.602 +<p>
   1.603 +The WebID protocol specifies how a <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a> can authenticate a user after requesting his <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> without needing to rely on this being signed by a well known Certificate Authority. This is done by dereferencing the <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a>, and checking if it describes the user as being in control of the the private key related to the <a class="tref internalDFN" title="Public_Key" href="#dfn-public_key">Public Key</a> published in the <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> she used to authenticate.
   1.604 +</p>
   1.605 +<p>WebID authentication can also be used for automatic authentication by robots, such as web crawlers of linked data repositories, which could be agents working on behalf of users to help them in their daily tasks. The WebID protocol is not limited to authentication on the World Wide Web, but can work with any TLS based protocol.</p>
   1.606 +<div id="outline" typeof="bibo:Chapter" about="#outline" class="section">
   1.607 +<h3><span class="secno">1.1 </span>Outline</h3>
   1.608 +<p>This specification is divided in the following sections.</p>
   1.609 +<p><a href="#introduction">This section</a> gives a high level overview of the WebID Protocol, and presents the organisation of the specification and the conventions used throughout the document.</p>
   1.610 +<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 of a <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> and the creation of a <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a></p>
   1.611 +<p><a href="#the-webid-protocol">Section 3</a> on the WebID Protocol describes in detail how a server can authenticate a user.</p>
   1.612 +</div>
   1.613 +<div id="terminology" typeof="bibo:Chapter" about="#terminology" class="section">
   1.614 +<h3><span class="secno">1.2 </span>Terminology</h3>
   1.615 +<dl>
   1.616 +<dt><dfn title="Alice" id="dfn-alice">Alice</dfn></dt>
   1.617 +<dd>Alice is an agent who owns a Server which runs a Service which Bob wishes to Access</dd>
   1.618 +
   1.619 +<dt><dfn title="Bob" id="dfn-bob">Bob</dfn></dt>
   1.620 +<dd>Bob is an agent who uses a <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> to connect to <a class="tref internalDFN" title="Alice" href="#dfn-alice">Alice</a>'s Service, and who is responsible for the private key the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> uses to authenticate to <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a>s.
   1.621 +If he notices the private key was compromised he needs to take action to disable the public key.
   1.622 +</dd>
   1.623 +<dt><dfn title="Subject" id="dfn-subject">Subject</dfn></dt>
   1.624 +<dd>The Subject is the Agent that is identified by the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a>.
   1.625 +When used legally it is the Subject who wishes to authenticate to a <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a>.
   1.626 +We will name him <a class="tref internalDFN" title="Bob" href="#dfn-bob">Bob</a> throughout this document to improve readability.
   1.627 +The Subject is distinct from the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> which is used to connect to the <a class="tref internalDFN" title="Server" href="#dfn-server">Server</a>.
   1.628 +</dd>
   1.629 +<dt><dfn title="Client" id="dfn-client">Client</dfn></dt>
   1.630 +<dd>The Client initiates a request to a Service listening on a specific port using a given protocol on a given Server. It can request authentication credentials from a <a class="tref internalDFN" title="Key_Chain" href="#dfn-key_chain">Key Chain</a> to send to a server
   1.631 +</dd>
   1.632 +
   1.633 +<dt><dfn title="Key_Chain" id="dfn-key_chain">Key Chain</dfn> agent</dt>
   1.634 +<dd>A Key Chain agent can return certificates to authorized <a class="tref" title="Clients">Clients</a> and can sign cryptographic tokens with the corresponding key. This protocol does not specify where that agent is: it could be that the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> contains his own Key Chain or it could be that the Key Chain is a separate process on the Operating System.</dd> 
   1.635 +
   1.636 +<dt><dfn title="Server" id="dfn-server">Server</dfn></dt>
   1.637 +<dd>A Server is a machine contactable at a domain name or IP address that hosts a number of globally accessible Services.</dd>
   1.638 +
   1.639 +<dt><dfn title="Service" id="dfn-service">Service</dfn></dt>
   1.640 +<dd>A Service is a an agent listening for requests at a given IP address on a given Server</dd>  
   1.641 +
   1.642 +<dt><dfn title="TLS_Service" id="dfn-tls_service">TLS Service</dfn></dt>
   1.643 +<dd>A TLS Service is a transport level service listening on the <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a> port. 
   1.644 +It secures the transport layer before passing messages to the Application layer <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a> itself.
   1.645 +The TLS protocol [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC5246">RFC5246</a></cite>] is applied to incoming connections: it identifies the server to the client, securing the channel and is able to request authentication credentials from the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> if needed. 
   1.646 +Server Credentials and Client credentials traditionally take the form of X509 Certificates containing a public key. 
   1.647 +The TLS protocol enables the TLS Service to verify that the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> controls the private key of the <a class="tref internalDFN" title="Public_Key" href="#dfn-public_key">Public Key</a> published in the certificate.
   1.648 +Trust decisions on other attributes of the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> published in the Certificate - such as his name - are traditionally based on the trust in the Agent that signed the Certificate - known as a <a class="tref internalDFN" title="Certificate_Authority" href="#dfn-certificate_authority">Certificate Authority</a>.
   1.649 +</dd>
   1.650 +<dt><dfn title="Certificate" id="dfn-certificate">Certificate</dfn></dt><dt>
   1.651 +</dt><dd>A Certificate is a document that affirms statements about a <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> such as its <a class="tref internalDFN" title="public_key" href="#dfn-public_key">public key</a> and its name, and that is signed by a <a class="tref internalDFN" title="Certificate_Authority" href="#dfn-certificate_authority">Certificate Authority</a> using the private key that corresponds to the public key published in its certificate. The Certificate Authority's own Certificate is self signed. Certificates used by TLS are traditionally X509 [<cite><a class="bibref" rel="biblioentry" href="#bib-X509V3">X509V3</a></cite>] Certificates. </dd>
   1.652 +<dt><dfn title="Certificate_Authority" id="dfn-certificate_authority">Certificate Authority</dfn> (<dfn title="CA" id="dfn-ca">CA</dfn>)</dt>
   1.653 +<dd>
   1.654 +A Certificate Authority is a Subject that signs <a class="tref" title="Certificates">Certificates</a>. 
   1.655 +It is an Authority for what is written in the Certificate for any Agent that trusts it to be truthful in what it signs.
   1.656 +Such agents use the knowledge of the CA's public key to verify the statements made by that CA in any of the Certificates it signed.
   1.657 +<a class="tref internalDFN" title="Service" href="#dfn-service">Service</a>s usually identify themselves with Certificates signed by well known and widely deployed CAs available in all agents. 
   1.658 +</dd>
   1.659 +<dt><dfn title="TLS-Light_Service" id="dfn-tls-light_service">TLS-Light Service</dfn></dt>
   1.660 +<dd>A TLS-Light Service is a standard TLS Service, except that it does not do CA Based Client Certificate Authentication.
   1.661 +If on requesting a Certificate from a Client it receives one, it simply verifies that the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> knows the private key of the public key published in the Certificate it received.
   1.662 +Verification of attributes in the certificate is left to other services such as the <a class="tref internalDFN" title="WebID_Verifier" href="#dfn-webid_verifier">WebID Verifier</a>.
   1.663 +</dd>
   1.664 +
   1.665 +<dt><dfn title="Guard" id="dfn-guard">Guard</dfn></dt><dt>
   1.666 +</dt><dd>A guard is an agent, usually on the <a class="tref internalDFN" title="Server" href="#dfn-server">Server</a> that can look at a request from the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> and decide if it needs Authentication by looking at the Access control Rules. 
   1.667 +If it needs Authentication it can request it, and it can use the <a class="tref internalDFN" title="WebID_Verifier" href="#dfn-webid_verifier">WebID Verifier</a> to complete identity checks. 
   1.668 +Finally it can grant or deny access.
   1.669 +</dd>
   1.670 +
   1.671 +<dt><dfn title="Verification_Agent" id="dfn-verification_agent">Verification Agent</dfn> or <dfn title="WebID_Verifier" id="dfn-webid_verifier">WebID Verifier</dfn></dt>
   1.672 +<dd>A WebID Verifier takes a <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> and verifies that the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> of the Certificate is indeed identified by the <code>Subject Alternative Name</code> <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> published there. 
   1.673 +This is usually done, because the <a class="tref" title="TLS_Service_Light">TLS Service Light</a> did not verify the SAN using a <a class="tref internalDFN" title="Certificate_Authority" href="#dfn-certificate_authority">Certificate Authority</a> signature. 
   1.674 +But it can also be done to verify that the <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> is still valid.
   1.675 +</dd>
   1.676 +
   1.677 +<dt><dfn title="WebID_Certificate" id="dfn-webid_certificate">WebID Certificate</dfn></dt>
   1.678 +<dd>An X.509 [<cite><a class="bibref" rel="biblioentry" href="#bib-X509V3">X509V3</a></cite>] <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> that will identify an Agent using a <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a>.
   1.679 +The Certificate need not be signed by a well known Certificate Authority.
   1.680 +Indeed it can be signed by the server which hosts the certificate, or it can even be self signed. 
   1.681 +The Certificate <em class="rfc2119" title="must">must</em> contain a <code>Subject Alternative Name</code> extension with at least one URI entry identifying the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a>. 
   1.682 +This URI <em class="rfc2119" title="should">should</em> be one of the URIs with a dereferenceable secure scheme, such as https:// .   Dereferencing this URI should return a representation containing RDF data.
   1.683 +For example, a certificate identifying the WebID URI <code>https://bob.example/profile#me</code> would contain the following:
   1.684 +<pre class="example">X509v3 extensions:
   1.685 +   ...
   1.686 +   X509v3 Subject Alternative Name:
   1.687 +      URI:https://bob.example/profile#me</pre>
   1.688 +And it would have a <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> at <code>https://bob.example/profile</code>
   1.689 +Such a URI is known as a <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a>.
   1.690 +</dd>
   1.691 +
   1.692 +<dt><dfn title="WebID" id="dfn-webid">WebID</dfn></dt>
   1.693 +<dd>A URI that refers to an Agent - Person, Robot, Group or other thing that can have Intentions. The WebID should be a URI which when dereferenced returns a representation whose description uniquely identifies the Agent as the controller of a public key. In our example the WebID refers to Bob. A WebID is usually a URL with a #tag, as the meaning of such a URL is defined in the document.</dd> 
   1.694 +
   1.695 +
   1.696 +<dt><dfn title="Public_Key" id="dfn-public_key">Public Key</dfn></dt>
   1.697 +<dd>A cryptographic key that can be published and can be used to verify the possession of a private key. A public
   1.698 +key is always included in a <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a>.</dd>
   1.699 +
   1.700 +<dt><dfn title="WebID_Profile" id="dfn-webid_profile">WebID Profile</dfn> or <dfn title="Profile_Page" id="dfn-profile_page">Profile Page</dfn></dt>
   1.701 +<dd>
   1.702 +A structured document asserting the relationship between the Subject (identified by his WebID) and his <a class="tref internalDFN" title="Public_Key" href="#dfn-public_key">Public Key</a>s using relationships as defined by the Resource Description Framework [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>] and published at the URL location of the Subject's WebID. 
   1.703 +Dereferencing the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> should return the Profile Document in one of a number of formats. 
   1.704 +The Server <em class="rfc2119" title="must">must</em> publish the document in at least the XHTML+RDFa 1.1 [<cite><a class="bibref" rel="biblioentry" href="#bib-XHTML-RDFA">XHTML-RDFA</a></cite>] serialization format or in RDF/XML [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SYNTAX-GRAMMAR">RDF-SYNTAX-GRAMMAR</a></cite>]. 
   1.705 +The document may be published in a number of other RDF serialization formats, such as N3 [<cite><a class="bibref" rel="biblioentry" href="#bib-N3">N3</a></cite>] or Turtle [<cite><a class="bibref" rel="biblioentry" href="#bib-TURTLE">TURTLE</a></cite>].
   1.706 +Any serialisation <em class="rfc2119" title="must">must</em> be transformable automatically and in a standard manner to an RDF Graph, using technologies such as GRDDL [<cite><a class="bibref" rel="biblioentry" href="#bib-GRDDL-PRIMER">GRDDL-PRIMER</a></cite>].
   1.707 +<p class="issue">Most profiles are currently written out in either of those formats. Whether or not XHTML+RDFa 1.1, both either serialization of RDF should be required serialization formats in the specification is currently under heavy debate and is open to change. </p>
   1.708 +</dd>
   1.709 +
   1.710 +</dl>
   1.711 +</div>
   1.712 +
   1.713 +<div class="normative section" id="namespaces" typeof="bibo:Chapter" about="#namespaces">
   1.714 +<h3><span class="secno">1.3 </span>Namespaces</h3>
   1.715 +<p>Examples assume the following namespace prefix bindings unless otherwise stated:</p>
   1.716 +<table cellpadding="5" border="1" style="text-align: left; border-color: rgb(0, 0, 0); border-collapse: collapse;">
   1.717 + <thead>
   1.718 +  <tr>
   1.719 +    <th>Prefix</th>
   1.720 +    <th>IRI</th>
   1.721 +  </tr>
   1.722 + </thead>
   1.723 + <tbody>
   1.724 +  <tr>
   1.725 +    <td><code>cert</code></td>
   1.726 +    <td>http://www.w3.org/ns/auth/cert#</td>
   1.727 +  </tr>
   1.728 +
   1.729 +  <tr>
   1.730 +    <td><code>xsd</code></td>
   1.731 +    <td>http://www.w3.org/2001/XMLSchema#</td>
   1.732 +  </tr>
   1.733 +  <tr>
   1.734 +    <td><code>foaf</code></td>
   1.735 +    <td>http://xmlns.com/foaf/0.1/</td>
   1.736 +  </tr>
   1.737 +  <tr>
   1.738 +    <td><code>ex</code></td>
   1.739 +    <td>https://bob.example/profile#</td>
   1.740 +  </tr>
   1.741 +  </tbody>
   1.742 +</table>
   1.743 +
   1.744 +<p>The ex: namespace is a URI that refers to Bob's profile, where Bob is an imaginary character well known in security circles.</p>
   1.745 +</div>
   1.746 +</div>
   1.747 +
   1.748 +<div id="preconditions" typeof="bibo:Chapter" about="#preconditions" class="section">
   1.749 +
   1.750 +<!-- OddPage -->
   1.751 +<h2><span class="secno">2. </span>Preconditions</h2>
   1.752 +
   1.753 +
   1.754 +<div class="normative section" id="the-certificate" typeof="bibo:Chapter" about="#the-certificate">
   1.755 +<h3><span class="secno">2.1 </span>The certificate</h3>
   1.756 +
   1.757 +<p>The <a class="tref internalDFN" title="Key_Chain" href="#dfn-key_chain">Key Chain</a> must have a <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> with a <code>Subject Alternative Name</code> URI entry. 
   1.758 +This URI must be one that dereferences to a document the user controls so that he can publish the
   1.759 +public key for that <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> at this URI.</p>
   1.760 +<p>For example, if a user Bob controls <code>https://bob.example/profile</code>,
   1.761 +then his WebID can be <code>https://bob.example/profile#me</code></p>
   1.762 +<p>When creating a certificate it is very important to choose a user friendly Common Name (CN) for the user, that will allow him to distinguish between different certificates he may have, such as a personal or a business certificate, when selecting one from his browser. 
   1.763 +In the example below the CN is <code>Bob (personal)</code>. 
   1.764 +This name can then also be displayed by any server authenticating the user as a human friendly label. 
   1.765 +The <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> URL itself should not usually be used as a visible identifier for human users, rather it should be thought of as a hyperlink in an <code>&lt;a href=&quot;https://...&quot;&gt;</code> anchor. 
   1.766 +That is the CN should be a label and the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> a pointer. </p> 
   1.767 +
   1.768 +<p>As an example to use throughout this specification here is the
   1.769 +following certificate as an output of the openssl program.</p>
   1.770 +<pre class="example">Certificate:
   1.771 +    Data:
   1.772 +        Version: 3 (0x2)
   1.773 +        Serial Number:
   1.774 +            5f:df:d6:be:2c:73:c1:fb:aa:2a:2d:23:a6:91:3b:5c
   1.775 +        Signature Algorithm: sha1WithRSAEncryption
   1.776 +        <span style="color: red">Issuer:</span> O=FOAF+SSL, OU=The Community of Self Signers, CN=Not a Certification Authority
   1.777 +        Validity
   1.778 +            Not Before: Jun  8 14:16:14 2010 GMT
   1.779 +            Not After : Jun  8 16:16:14 2010 GMT
   1.780 +        <span style="color: red">Subject:</span> O=FOAF+SSL, OU=The Community Of Self Signers, CN=Bob (Personal)
   1.781 +        Subject Public Key Info:
   1.782 +<span style="color: red">            Public Key Algorithm:</span> rsaEncryption
   1.783 +                <span style="color: red">Public-Key:</span> (2048 bit)
   1.784 +                <span style="color: red">Modulus:</span>
   1.785 +                    00:cb:24:ed:85:d6:4d:79:4b:69:c7:01:c1:86:ac:
   1.786 +                    c0:59:50:1e:85:60:00:f6:61:c9:32:04:d8:38:0e:
   1.787 +                    07:19:1c:5c:8b:36:8d:2a:c3:2a:42:8a:cb:97:03:
   1.788 +                    98:66:43:68:dc:2a:86:73:20:22:0f:75:5e:99:ca:
   1.789 +                    2e:ec:da:e6:2e:8d:15:fb:58:e1:b7:6a:e5:9c:b7:
   1.790 +                    ac:e8:83:83:94:d5:9e:72:50:b4:49:17:6e:51:a4:
   1.791 +                    94:95:1a:1c:36:6c:62:17:d8:76:8d:68:2d:de:78:
   1.792 +                    dd:4d:55:e6:13:f8:83:9c:f2:75:d4:c8:40:37:43:
   1.793 +                    e7:86:26:01:f3:c4:9a:63:66:e1:2b:b8:f4:98:26:
   1.794 +                    2c:3c:77:de:19:bc:e4:0b:32:f8:9a:e6:2c:37:80:
   1.795 +                    f5:b6:27:5b:e3:37:e2:b3:15:3a:e2:ba:72:a9:97:
   1.796 +                    5a:e7:1a:b7:24:64:94:97:06:6b:66:0f:cf:77:4b:
   1.797 +                    75:43:d9:80:95:2d:2e:85:86:20:0e:da:41:58:b0:
   1.798 +                    14:e7:54:65:d9:1e:cf:93:ef:c7:ac:17:0c:11:fc:
   1.799 +                    72:46:fc:6d:ed:79:c3:77:80:00:0a:c4:e0:79:f6:
   1.800 +                    71:fd:4f:20:7a:d7:70:80:9e:0e:2d:7b:0e:f5:49:
   1.801 +                    3b:ef:e7:35:44:d8:e1:be:3d:dd:b5:24:55:c6:13:
   1.802 +                    91:a1
   1.803 +                <span style="color: red">Exponent:</span> 65537 (0x10001)
   1.804 +        X509v3 extensions:
   1.805 +            X509v3 Basic Constraints: critical
   1.806 +                CA:FALSE
   1.807 +            X509v3 Key Usage: critical
   1.808 +                Digital Signature, Non Repudiation, Key Encipherment, Key Agreement
   1.809 +            Netscape Cert Type:
   1.810 +                SSL Client, S/MIME
   1.811 +            X509v3 Subject Key Identifier:
   1.812 +                08:8E:A5:5B:AE:5D:C3:8B:00:B7:30:62:65:2A:5A:F5:D2:E9:00:FA
   1.813 +            <span style="color: red">X509v3 Subject Alternative Name:</span> critical
   1.814 +                <span style="color: red">URI:</span>https://bob.example/profile#me
   1.815 +    Signature Algorithm: sha1WithRSAEncryption
   1.816 +        cf:8c:f8:7b:b2:af:63:f0:0e:dc:64:22:e5:8a:ba:03:1e:f1:
   1.817 +        ee:6f:2c:f5:f5:10:ad:4c:54:fc:49:2b:e1:0d:cd:be:3d:7c:
   1.818 +        78:66:c8:ae:42:9d:75:9f:2c:29:71:91:5c:29:5b:96:ea:e1:
   1.819 +        e4:ef:0e:5c:f7:07:a0:1e:9c:bf:50:ca:21:e6:6c:c3:df:64:
   1.820 +        29:6b:d3:8a:bd:49:e8:72:39:dd:07:07:94:ac:d5:ec:85:b1:
   1.821 +        a0:5c:c0:08:d3:28:2a:e6:be:ad:88:5e:2a:40:64:59:e7:f2:
   1.822 +        45:0c:b9:48:c0:fd:ac:bc:fb:1b:c9:e0:1c:01:18:5e:44:bb:
   1.823 +        d8:b8</pre>
   1.824 +<p class="issue">Should we formally require the Issuer to be
   1.825 +O=FOAF+SSL, OU=The Community of Self Signers, CN=Not a Certification Authority.
   1.826 +This was discussed on the list as allowing servers to distinguish certificates
   1.827 +that are foaf+SSL enabled from others. Will probably need some very deep TLS
   1.828 +thinking to get this right.</p>
   1.829 +<p class="issue">The above certificate is no longer valid, as I took an valid
   1.830 +certificate and change the time and WebID. As a result the signature is now
   1.831 +false. A completely valid certificate should be generated to avoid nit-pickers
   1.832 +picking nits.</p>
   1.833 +<div class="normative section" id="creating-a-certificate" typeof="bibo:Chapter" about="#creating-a-certificate">
   1.834 +<h4><span class="secno">2.1.1 </span>Creating a Certificate</h4>
   1.835 +<p>Many tools exist to create a Certificate. 
   1.836 +Some keychains allow a user to create the Certificate directly with a friendly User Interface. 
   1.837 +But using a keychain on the client still requires the public key to be published on the server as detailed in the next section.
   1.838 +It is possible to combine the creation of the key with its publication in one step in such a way as to allow the server to make the decision of what the WebID should be, by using the <a href="http://www.w3.org/TR/html5/the-button-element.html#the-keygen-element">HTML 5 keygen</a> element. 
   1.839 +This element can be placed in an HTML5 form, where on submitting the form, the browser asks the <a class="tref internalDFN" title="Key_Chain" href="#dfn-key_chain">Key Chain</a> to create a public and private key pair, and on receiving the public part of that keypair  the Client can sends a keyrequest as part of the form to the <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a>. The <a class="tref internalDFN" title="Service" href="#dfn-service">Service</a> can then create a <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> and return it to the <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> to pass onto the <a class="tref" title="KeyChain">KeyChain</a>. In that way the Server is in the position to best make the decisions of what the <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> should say and what the WebID should be without the private key ever leaving the secure <a class="tref internalDFN" title="Key_Chain" href="#dfn-key_chain">Key Chain</a>. The user experience for this Certificate creation is a one click operation.
   1.840 +</p></div>
   1.841 +</div>
   1.842 +
   1.843 +<div class="normative section" id="publishing-the-webid-profile-document" typeof="bibo:Chapter" about="#publishing-the-webid-profile-document">
   1.844 +<h3><span class="secno">2.2 </span>Publishing the WebID Profile Document</h3>
   1.845 +
   1.846 +<p>The <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> document <em class="rfc2119" title="must">must</em> expose the relation between the <a class="tref" title="WebID_URI">WebID URI</a> and the <a class="tref" title="Identification_Agent">Identification Agent</a>'s <a class="tref internalDFN" title="public_key" href="#dfn-public_key">public key</a>s using the <code>cert</code> ontology as well as the standard <code>xsd</code> datatypes.
   1.847 +The set of relations to be published at the <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> document can be presented in a graphical notation as follows.</p>
   1.848 +<img width="90%" src="img/WebIdGraph.jpg" alt="Web ID graph" />
   1.849 +<p>The document can publish many more relations than are of interest to the WebID protocol, as shown in the above graph by the grayed out relations. 
   1.850 +For example Bob can publish a depiction or logo, so that sites he authenticates to can personalise the user experience. He can post links to people he knows, where those are have WebIDs published on other sites, in order to create a distributed Social Web. 
   1.851 +He can also publish relations to protected documents, where he keeps more information for people who authenticate, such as his friend Alois or his friends friends who may not yet know him personally, such as Alice.</p>
   1.852 +<p>
   1.853 +The protocol does not depend on any particular serialisation of the graph, provided that agents are able to parse that serialisation and obtain the graph automatically.  
   1.854 +Technologies such as GRDDL [<cite><a class="bibref" rel="biblioentry" href="#bib-GRDDL-PRIMER">GRDDL-PRIMER</a></cite>] for example permit any XML format to be transformed automatically to a graph of relations.
   1.855 +Yet for reasons of interoperability is has been decided that the document <em class="rfc2119" title="must">must</em> be published at least in one of RDFa [XHTML-RDFA] or RDF/XML [RDF-SYNTAX-GRAMMAR]. 
   1.856 +HTTP Content Negotiation [SWBP-VOCAB-PUB] can be employed to aid in publication and discovery of multiple distinct serialisations of the same graph at the same URL. </p>
   1.857 +<p>
   1.858 +Irrespective of whether content negotiation can or not 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:
   1.859 +</p>
   1.860 +
   1.861 +<pre class="example">&lt;html&gt;
   1.862 +&lt;head&gt;
   1.863 +&lt;link rel=&quot;alternate&quot; type=&quot;application/rdf+xml&quot; href=&quot;profile.rdf&quot;/&gt;
   1.864 +&lt;link rel=&quot;alternate&quot; type=&quot;text/turtle&quot; href=&quot;profile.ttl&quot;/&gt;
   1.865 +...
   1.866 +&lt;/head&gt; ...</pre>
   1.867 +<p>It is particularly useful to have one of the representations be in HTML or
   1.868 +XHTML even if it is not marked up in RDFa as this allows people using a
   1.869 +web browser to understand what the information at that URI represents.</p>
   1.870 +<div class="normative section" id="turtle" typeof="bibo:Chapter" about="#turtle">
   1.871 +<h4><span class="secno">2.2.1 </span>Turtle</h4>
   1.872 +<p>A widely used format for writing RDF graphs by hand is the Turtle notation. 
   1.873 +It is easy to learn to use, is very handy for communicating over e-mail and on mailing lists, and can then be transformed into RDF/XML automatically. 
   1.874 +It is also very similar to the SPARQL query language.
   1.875 +</p>
   1.876 +<pre style="word-wrap: break-word; white-space: pre-wrap;" class="example">@prefix : &lt;http://www.w3.org/ns/auth/cert#&gt; .
   1.877 +@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .
   1.878 +@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
   1.879 +@prefix bob: &lt;https://bob.example/profile#&gt; .
   1.880 +@prefix rdfs: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
   1.881 +
   1.882 +bob:me a foaf:Person;
   1.883 +  foaf:name &quot;Bob&quot;;
   1.884 +  foaf:knows &lt;https://example.edu/p/Alois#MSc&gt;;
   1.885 +  foaf:weblog &lt;http://bob.example/blog&gt;;
   1.886 +  :key [ a :RSAPublicKey;
   1.887 +    rdfs:label &quot;made on 23 November 2011 on my laptop&quot;;
   1.888 +    :modulus &quot;cb24ed85d64d794b69c701c186acc059501e856000f661c93204d8380e07191c5c8b368d2ac32a428acb970398664368dc2a867320220f755e99ca2eecdae62e8d15fb58e1b76ae59cb7ace8838394d59e7250b449176e51a494951a1c366c6217d8768d682dde78dd4d55e613f8839cf275d4c8403743e7862601f3c49a6366e12bb8f498262c3c77de19bce40b32f89ae62c3780f5b6275be337e2b3153ae2ba72a9975ae71ab724649497066b660fcf774b7543d980952d2e8586200eda4158b014e75465d91ecf93efc7ac170c11fc7246fc6ded79c37780000ac4e079f671fd4f207ad770809e0e2d7b0ef5493befe73544d8e1be3dddb52455c61391a1&quot;^^xsd:hexBinary;
   1.889 +    :exponent 65537 ;
   1.890 +   ] .</pre>
   1.891 +</div>
   1.892 +<div id="rdfa-html-notation" typeof="bibo:Chapter" about="#rdfa-html-notation" class="section">
   1.893 +<h4><span class="secno">2.2.2 </span>RDFa HTML notation</h4>
   1.894 +<p>There are many ways of writing out the above graph using RDFa in
   1.895 +HTML. Here is just one example of what a WebID profile could look like.</p>
   1.896 +<pre style="word-wrap: break-word; white-space: pre-wrap;" class="example">&lt;!DOCTYPE html PUBLIC &quot;-//<acronym title="World Wide Web Consortium">W3C</acronym>//DTD XHTML+RDFa 1.0//EN&quot;
   1.897 +  &quot;http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd&quot;&gt;
   1.898 +&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; version=&quot;XHTML+RDFa 1.0&quot; dir=&quot;ltr&quot;
   1.899 +      xmlns:cert=&quot;http://www.w3.org/ns/auth/cert#&quot;
   1.900 +      xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;
   1.901 +      xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema#&quot;&gt;
   1.902 +&lt;head&gt;
   1.903 +   &lt;title&gt;Welcome to Bob's Home Page&lt;/title&gt;
   1.904 +&lt;/head&gt;
   1.905 +&lt;body&gt;
   1.906 +&lt;!-- WebID HTML snippet. The xmlns declarations above can be moved into the div below if needed--&gt;
   1.907 +&lt;div about=&quot;#me&quot; typeof=&quot;foaf:Person&quot;&gt;
   1.908 +  &lt;span property=&quot;foaf:name&quot;&gt;Bob&lt;/span&gt;
   1.909 +  &lt;h2&gt;My Good Friends&lt;/h2&gt;
   1.910 +  &lt;ul&gt;
   1.911 +
   1.912 +    &lt;li rel=&quot;foaf:knows&quot; href=&quot;https://example.edu/p/Alois#MSc&quot;&gt;Alois&lt;/li&gt;
   1.913 +  &lt;/ul&gt;
   1.914 +  &lt;h2&gt;My RSA Public Keys&lt;/h2&gt;
   1.915 +  &lt;div rel=&quot;cert:key&quot;&gt;
   1.916 +    &lt;p&gt;I made this key on the 23 November 2011 from my laptop.&lt;/p&gt;
   1.917 +    &lt;div typeof=&quot;cert:RSAPublicKey&quot;&gt;
   1.918 +      &lt;dl&gt;
   1.919 +
   1.920 +      &lt;dt&gt;Modulus (hexadecimal)&lt;/dt&gt;
   1.921 +      &lt;dd style=&quot;word-wrap: break-word; white-space: pre-wrap;&quot;
   1.922 +         property=&quot;cert:modulus&quot; datatype=&quot;xsd:hexBinary&quot;&gt;cb24ed85d64d794b69c701c186acc059501e856000f661c93204d8380e07191c5c8b368d2ac32a428acb970398664368dc2a867320220f755e99ca2eecdae62e8d15fb58e1b76ae59cb7ace8838394d59e7250b449176e51a494951a1c366c6217d8768d682dde78dd4d55e613f8839cf275d4c8403743e7862601f3c49a6366e12bb8f498262c3c77de19bce40b32f89ae62c3780f5b6275be337e2b3153ae2ba72a9975ae71ab724649497066b660fcf774b7543d980952d2e8586200eda4158b014e75465d91ecf93efc7ac170c11fc7246fc6ded79c37780000ac4e079f671fd4f207ad770809e0e2d7b0ef5493befe73544d8e1be3dddb52455c61391a1&lt;/dd&gt;
   1.923 +      &lt;dt&gt;Exponent (decimal)&lt;/dt&gt;
   1.924 +      &lt;dd property=&quot;cert:exponent&quot; datatype=&quot;xsd:integer&quot;&gt;65537&lt;/dd&gt;
   1.925 +      &lt;/dl&gt;
   1.926 +    &lt;/div&gt;
   1.927 +  &lt;/div&gt;
   1.928 +
   1.929 +&lt;/div&gt;
   1.930 +&lt;!-- WebID HTML snippet --&gt;
   1.931 +&lt;/body&gt;
   1.932 +&lt;/html&gt;</pre>
   1.933 +<p>The <code>style=&quot;word-wrap: break-word; white-space: pre-wrap;&quot;</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>
   1.934 +<p class="issue">In order to make the above modulus easy to read for humans who may wish to compare it with the modulus in their browser, one can add some javascript. Add some javascript here that adds a : between every two characters, and that splits the line up in chunks.</p>
   1.935 +<p>If a WebID provider would rather prefer not to mark up his data in RDFa, but
   1.936 +just provide a human readable format for users and have the RDF graph appear
   1.937 +in a machine readable format such as RDF/XML then he <em class="rfc2119" title="may">may</em> publish the link from
   1.938 +the HTML to a machine readable format (it this is available at a dedicated URI)
   1.939 +as follows:</p>
   1.940 + <p class="example">
   1.941 +</p><pre>&lt;html&gt;
   1.942 +&lt;head&gt;
   1.943 +&lt;link rel=&quot;alternate&quot; type=&quot;application/rdf+xml&quot; href=&quot;profile.rdf&quot;/&gt;
   1.944 +&lt;/head&gt;
   1.945 +&lt;body&gt; ...  &lt;/body&gt;
   1.946 +&lt;/html&gt;
   1.947 +</pre>
   1.948 +<p></p>
   1.949 +</div>
   1.950 +<div id="in-rdf-xml" typeof="bibo:Chapter" about="#in-rdf-xml" class="section">
   1.951 +<h4><span class="secno">2.2.3 </span>In RDF/XML</h4>
   1.952 +<p>RDF/XML is easy to generate automatically from structured data, be it in
   1.953 +object notation or in relational databases. Parsers for it are also widely
   1.954 +available.</p>
   1.955 +
   1.956 +<pre style="word-wrap: break-word; white-space: pre-wrap;" class="example">&lt;?xml version=&quot;1.0&quot;?&gt;
   1.957 +&lt;rdf:RDF
   1.958 + xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
   1.959 + xmlns:rdfs=&quot;http://www.w3.org/2000/01/rdf-schema#&quot;
   1.960 + xmlns:cert=&quot;http://www.w3.org/ns/auth/cert#&quot;
   1.961 + xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema#&quot;
   1.962 + xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;&gt;
   1.963 +  &lt;foaf:Person rdf:about=&quot;https://bob.example/profile#me&quot;&gt;
   1.964 +    &lt;foaf:name&gt;Bob&lt;/foaf:name&gt;
   1.965 +    &lt;foaf:weblog rdf:resource=&quot;http://bob.example/blog&quot;/&gt;
   1.966 +    &lt;cert:key&gt;
   1.967 +      &lt;cert:RSAPublicKey&gt;
   1.968 +        &lt;rdfs:label&gt;made on 23 November 2011 on my laptop&lt;/rdfs:label&gt;
   1.969 +        &lt;cert:modulus rdf:datatype=&quot;http://www.w3.org/ns/auth/cert#hexBinary&quot;&gt;
   1.970 +cb24ed85d64d794b69c701c186acc059501e856000f661c93204d8380e07191c5c8b368d2ac32a428acb970398664368dc2a867320220f755e99ca2eecdae62e8d15fb58e1b76ae59cb7ace8838394d59e7250b449176e51a494951a1c366c6217d8768d682dde78dd4d55e613f8839cf275d4c8403743e7862601f3c49a6366e12bb8f498262c3c77de19bce40b32f89ae62c3780f5b6275be337e2b3153ae2ba72a9975ae71ab724649497066b660fcf774b7543d980952d2e8586200eda4158b014e75465d91ecf93efc7ac170c11fc7246fc6ded79c37780000ac4e079f671fd4f207ad770809e0e2d7b0ef5493befe73544d8e1be3dddb52455c61391a1
   1.971 +       &lt;/cert:modulus&gt;
   1.972 +        &lt;cert:exponent rdf:datatype=&quot;http://www.w3.org/ns/auth/cert#integer&quot;&gt;65537&lt;/cert:exponent&gt;
   1.973 +      &lt;/cert:RSAPublicKey&gt;
   1.974 +    &lt;/cert:key&gt;
   1.975 +  &lt;/foaf:Person&gt;
   1.976 +
   1.977 +&lt;/rdf:RDF&gt;</pre>
   1.978 +<p class="issue">TODO: the dsa ontology</p>
   1.979 +<p class="todo">What should the time to live be on a WebID document?</p>
   1.980 +</div>
   1.981 +<div id="in-portable-contacts-format-using-grddl" typeof="bibo:Chapter" about="#in-portable-contacts-format-using-grddl" class="section">
   1.982 +<h4><span class="secno">2.2.4 </span>In Portable Contacts format using GRDDL</h4>
   1.983 +<p class="issue">TODO: discuss other formats and GRDDL, XSPARQL options for xml formats</p>
   1.984 +<p class="issue">summarize and point to content negotiation documents</p>
   1.985 +</div>
   1.986 +</div>
   1.987 +<div class="normative section" id="disabling-a-webid-certificate" typeof="bibo:Chapter" about="#disabling-a-webid-certificate">
   1.988 +<h3><span class="secno">2.3 </span>Disabling a WebID Certificate</h3>
   1.989 +<p>A <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> identifies the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> alone and no one else, if and only if she is the only one to control the corresponding private key. 
   1.990 +It is very important therefore that the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> take care of keeping the <a class="tref" title="private_key">private key</a> secure.
   1.991 +This can be done by keeping it in the <a class="tref internalDFN" title="Key_Chain" href="#dfn-key_chain">Key Chain</a> of a personal machine in an account that is password protected and free of viruses, or best of all on some physical device where the private key is inaccessible to be read by any software. 
   1.992 +In the second case having the device implies that the <a class="tref" title="private_key">private key</a> has not been lost or copied. 
   1.993 +In the first case the user has to be more careful for signals of misuse.</p><p>
   1.994 +</p><p>In either situation if the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> is suspicious that his private key has been taken, then he can disable future authentications for that certificate by removing the corresponding <a class="tref internalDFN" title="public_key" href="#dfn-public_key">public key</a> from his <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a>.
   1.995 + If the profile contains more than one public key for the <a class="tref internalDFN" title="Subject" href="#dfn-subject">Subject</a> then it is suggested that each public key contain a label to help the user locate the key. In the examples above an <code>rdfs:label</code> with a creation date was used for this purpose. 
   1.996 +</p>
   1.997 +</div>
   1.998 +</div>
   1.999 +
  1.1000 +<div class="normative section" id="the-webid-protocol" typeof="bibo:Chapter" about="#the-webid-protocol">
  1.1001 +
  1.1002 +<!-- OddPage -->
  1.1003 +<h2><span class="secno">3. </span>The WebID Protocol</h2>
  1.1004 +
  1.1005 +<div class="normative section" id="authentication-sequence" typeof="bibo:Chapter" about="#authentication-sequence">
  1.1006 +<h3><span class="secno">3.1 </span>Authentication Sequence</h3>
  1.1007 +
  1.1008 +<p>In order to give the full context of a <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> interaction with a <a class="tref internalDFN" title="Server" href="#dfn-server">Server</a> we will illustrate the protocol with the following sequence diagram.
  1.1009 + <a class="tref internalDFN" title="Bob" href="#dfn-bob">Bob</a> initiates a connection to <a class="tref internalDFN" title="Alice" href="#dfn-alice">Alice</a>'s server via a TLS enabled protocol such as HTTPS in order to access a Protected Resource or a Protected Service.
  1.1010 + The Protected Resource <em class="rfc2119" title="must">must</em> be served over a <a class="tref internalDFN" title="TLS-Light_Service" href="#dfn-tls-light_service">TLS-Light Service</a>, that will not do full <a class="tref internalDFN" title="CA" href="#dfn-ca">CA</a> authentication of <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a>s it receives.
  1.1011 +The Protected Resource may be a document served over HTTPS, but it could also be a SOAP service, or some other resource.
  1.1012 +This resource is protected by a Guard, which uses a <a class="tref internalDFN" title="WebID_Verifier" href="#dfn-webid_verifier">WebID Verifier</a> to verify the non Certified WebIDs found in the certificate.
  1.1013 + Once the verification succeeds the Guard checks to see if the Agent identified by the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> is allowed access to the resource, by using trusted information from the Web and access control rules. 
  1.1014 +</p>
  1.1015 +
  1.1016 +<img width="90%" src="img/WebIDSequence-friendly.jpg" />
  1.1017 +<p>The steps in detail are as follows:</p>
  1.1018 +<ol>
  1.1019 +<li><a class="tref internalDFN" title="Bob" href="#dfn-bob">Bob</a>'s <a class="tref internalDFN" title="Client" href="#dfn-client">Client</a> <em class="rfc2119" title="must">must</em> open a TLS [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC5246">RFC5246</a></cite>] connection with the server which authenticates itself using well known TLS mechanisms. This <em class="rfc2119" title="may">may</em> be done as the first part of an HTTPS connection [<cite><a class="bibref" rel="biblioentry" href="#bib-HTTP-TLS">HTTP-TLS</a></cite>].</li>
  1.1020 +<li>Once the Transport Layer Security [TLS] has been set up, the application protocol exchange can start. If the protocol is HTTP then the client can request an HTTP GET, PUT, POST, DELETE, ... action on a resource as detailed by [<cite><a class="bibref" rel="biblioentry" href="#bib-HTTP11">HTTP11</a></cite>]. The <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> can then intercept that request and by checking some access control rules determine if the client needs authentication. We will consider the case here where the client does need to be authenticated.</li>
  1.1021 +<li>The Guard <em class="rfc2119" title="must">must</em> requests the client to authenticate itself using public key cryptography by signing a token with its private key and have the Client send its Certificate. This has been carefully defined in the TLS protocol and can be summarised by the following steps:
  1.1022 +<ol>
  1.1023 +<li>The guard requests of the TLS agent that it make a Certificate Request to the client. The TLS layer does this. Because the WebID protocol does not rely on Certificate Authorities to verify the contents of the <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a>, the TLS Agent can ask for any Certificate from the Client. More details in <a href="#requesting-the-client-certificate">Requesting the Client Certificate</a></li>
  1.1024 +<li>The Client asks Bob to choose a certificate if the choice has not been automated. We will assume that Bob does choose a <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> and sends it to the client.</li>
  1.1025 +<li>The <a class="tref" title="TLS_Agent">TLS Agent</a> <em class="rfc2119" title="must">must</em> verify that the client is indeed in possession of the private key. What is important here is that the TLS Agent need not know the Issuer of the Certificate, or need not have any trust relation with the Issuer. Indeed if the TLS Layer could verify the signature of the Issuer and trusted the statements it signed, then step 4 and 5 would not be needed - other than perhaps as a way to verify that the key was still valid.</li>
  1.1026 +<li>The <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> is then passed on to the <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> with the proviso that the WebIDs still needs to be verified.</li>
  1.1027 +</ol>
  1.1028 +</li>
  1.1029 +<li>The <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> then <em class="rfc2119" title="must">must</em> ask the <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> to verify that the WebIDs do identify the agent who knows the given public key.</li>
  1.1030 +<li>The WebID is verified by looking up the definition of the URL at its canonical location. This can be done by dereferencing it. The <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> <em class="rfc2119" title="must">must</em> extract the <a class="tref internalDFN" title="public_key" href="#dfn-public_key">public key</a> and all the URI entries contained in the <code>Subject Alternative Name</code> extension of the <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a>.  A <a class="tref internalDFN" title="WebID_Certificate" href="#dfn-webid_certificate">WebID Certificate</a> <em class="rfc2119" title="may">may</em> contain multiple URI entries
  1.1031 +which are considered claimed <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a>s at this point, since they have not been verified. The <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> may verify as many or as few WebIDs it has time for. It may do it in parallel and asynchronously. However that is done, a claimed WebIDs can only be considered verified if the following steps have been accomplished successfully:</li>
  1.1032 +<ol>
  1.1033 +<li>If the <a class="tref internalDFN" title="WebID_Verifier" href="#dfn-webid_verifier">WebID Verifier</a> does not have an up to date version of the WebID profile in the cache, then it <em class="rfc2119" title="must">must</em> dereference the WebID using the canonical method for dereferencing a URL of that scheme. For an https://... WebID this would be done using the [<cite><a class="bibref" rel="biblioentry" href="#bib-HTTP-TLS">HTTP-TLS</a></cite>] protocol. </li>
  1.1034 +<li>The returned representation is then transformed into an RDF graph as specified in <a href="#processing-the-webid-profile">Processing the WebID Profile</a> </li>
  1.1035 +<li>That graph is then queried as explained in <a href="#querying-the-graph">Querying the Graph</a>. If the query succeeds, then that WebID is verified.
  1.1036 +</li>
  1.1037 +</ol>
  1.1038 +<li>With the set of verified WebIDs the Guard can then check its access control rules using information from the web and other information available to it, to verify if the referent of the WebID is indeed allowed access to the protected resource. The exact nature of those Access Control Rules is left for another specification. Suffice it to say that it can be something as simple as a lookup in a table.</li>
  1.1039 +<li>If access is granted, then the guard can pass on the request to the protected resource, which can then interact unimpeded with the client.</li>
  1.1040 +</ol>
  1.1041 +<ol>
  1.1042 +</ol></div>
  1.1043 +
  1.1044 +<div class="normative section" id="authentication-sequence-details" typeof="bibo:Chapter" about="#authentication-sequence-details">
  1.1045 +<h3><span class="secno">3.2 </span>Authentication Sequence Details</h3>
  1.1046 +
  1.1047 +<p>This section covers details about each step in the authentication process.
  1.1048 +</p>
  1.1049 +
  1.1050 +<div class="normative section" id="initiating-a-tls-connection" typeof="bibo:Chapter" about="#initiating-a-tls-connection">
  1.1051 +<h4><span class="secno">3.2.1 </span>Initiating a TLS Connection</h4>
  1.1052 +
  1.1053 +<p>Standard SSLv3 and TLSv1 and upwards can be used to establish the connection between
  1.1054 +the Client and the TLS Agent listening on the Service's port. </p>
  1.1055 +<p class="note">Many servers allow a simple form of TLS client side authentication to be setup when configuring a <a class="tref" title="TLS_Agent">TLS Agent</a>: they permit the agent to be authenticated in WANT or NEED mode.
  1.1056 +If the client sends a certificate, then neither of these have an impact on the <a class="tref" title="WebID_Verification">WebID Verification</a> steps (4) and (5).
  1.1057 +Nevertheless, from a user interaction perspective both of these are problematic as they either force (NEED) or ask the user to authenticate himself even if the resource he wishes to interact with is public and requires no authentication. 
  1.1058 +People don't usually feel comfortable authenticating to a web site on the basis of a certificate alone. 
  1.1059 +They prefer human readable text, and detailed error messages which the HTTP layer deliver.
  1.1060 +
  1.1061 +It is better to move the authentication to the application layer <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> as it has a lot more information about the application state. 
  1.1062 +Please see the <a href="http://www.w3.org/2005/Incubator/webid/wiki/">WebID Wiki</a> for implementation pointers in different programming languages and platforms to learn about how this can be done and to share your experience.</p>
  1.1063 +</div>
  1.1064 +
  1.1065 +<div class="normative section" id="connecting-at-the-application-layer" typeof="bibo:Chapter" about="#connecting-at-the-application-layer">
  1.1066 +<h4><span class="secno">3.2.2 </span>Connecting at the Application Layer</h4>
  1.1067 +
  1.1068 +<p>Once the TLS connection has been setup, the application layer protocol interaction can start.
  1.1069 +This could be an HTTP GET request on the protected resource for example.
  1.1070 +</p><p>If the protocol permits it, the Client can let the Application layer, and especially the <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> know that the client can authenticate with a WebID Certificate, and even if it wishes to do so. This may be useful both to allow the Server to know that it can request the client certificate, and also in order to make life easier for Robots that may find it a lot more convenient to be authenticated at the TLS layer.
  1.1071 +</p>
  1.1072 +<p class="issue">Bergi proposed a header for HTTP which could do this. Please summarise it. </p>
  1.1073 +</div>
  1.1074 +
  1.1075 +
  1.1076 +<div class="normative section" id="requesting-the-client-certificate" typeof="bibo:Chapter" about="#requesting-the-client-certificate">
  1.1077 +<h4><span class="secno">3.2.3 </span>Requesting the Client Certificate</h4>
  1.1078 +
  1.1079 +<p>TLS allows the server to request a Certificate from the Client using the <code>CertificateRequest</code> message [section 7.4.4] of TLS v1.1 [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC5246">RFC5246</a></cite>].  Since WebID TLS authentication does not rely on CA's signing the certificate to verify the WebID Claims made therein, the Server does not need to restrict the certificate it receives by the CA's they were signed by. It can therefore leave the  <code>certificate_authorities</code> field blank in the request. </p>
  1.1080 +<p class="note">From our experience leaving the certificate_authorities field empty leads to the correct behavior on all browsers and all TLS versions.</p>
  1.1081 +<p class="note">A security issue with TLS renegotiation was discovered in 2009, and an IETF fix was proposed in [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC5746">RFC5746</a></cite>] which is widely implemented.</p>
  1.1082 +<p>If the Client does not send a certificate, because either it does not have one or it does not wish to send one, other authentication procedures can be pursued at the application layer with protocols such as OpenID, OAuth, BrowserID, etc... </p>
  1.1083 +<p>As far as possible it is important for the server to request the client certificate in <code>WANT</code> mode, not in <code>NEED</code> mode. 
  1.1084 +If the request is made in <code>NEED</code> mode then connections will be broken off if the client does not send a certificate. 
  1.1085 +This will break the connection at the application protocol layer, and so will lead to a very bad user experience.  The server should therefore avoid doing this unless it can be confident that the client has a certificate - which it may be because the client advertised that in some other way to the server. 
  1.1086 +</p>
  1.1087 +<p class="issue">Is there some normative spec about what NEED and WANT refer to?</p>
  1.1088 +
  1.1089 +</div>
  1.1090 +<div class="normative section" id="verifying-the-webids" typeof="bibo:Chapter" about="#verifying-the-webids">
  1.1091 +<h4><span class="secno">3.2.4 </span>Verifying the WebIDs</h4>
  1.1092 +<p>The <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> is given a list of WebIDs associated with a public key. It needs to verify that the agent identified by that WebID is indeed the agent that controls the private key of the given public key. It does this by looking up the definition of the WebID. A WebID is a URI, and it's meaning can be had by dereferencing it using the protocol indicated in its scheme. </p>
  1.1093 +<p>If we first consider WebIDs with fragment identifiers, we can explain the logic of this as follows. As is explained in the  RFC defining URIs [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC3986">RFC3986</a></cite>]
  1.1094 +</p><blockquote>
  1.1095 +The fragment identifier component of a URI allows indirect identification of a secondary resource by reference to a primary resource and additional identifying information.  
  1.1096 +The identified secondary resource may be some portion or subset of the primary resource, some view on representations of the primary resource, or some other resource defined or described by those representations. 
  1.1097 +[...]
  1.1098 +The semantics of a fragment identifier are defined by the set of representations that might result from a retrieval action on the primary resource.
  1.1099 +</blockquote>
  1.1100 +<p>In order therefore to know the meaning of WebID containing a fragment identifier, one needs to dereference the resource referred to without the fragment identifier. 
  1.1101 +This resource will describe the referent of the WebID in some way. 
  1.1102 +If it says that the referent of the WebID is the agent that controls the private key of the given public key, then this is a  definite description that can be considered to be a definition of the WebID: it gives its meaning.
  1.1103 +</p>
  1.1104 +<p>The trust that can be had in that statement is therefore the trust that one can have in one's having received the correct representation of the document that defined that WebID. 
  1.1105 +An HTTPS WebID will therefore be a lot more trustworthy than an HTTP WebID by a factor of the likelihood of man in the middle attacks.</p>
  1.1106 +<p>Once that is proven then the trust one can have in the agent at the end of the TLS connection being the referent of the WebID is related to the trust one has in the cryptography, and the likelihood that the private key could have been stolen.</p>
  1.1107 +<p class="issue">Add explanation for URI with redirect.</p>
  1.1108 +<div class="normative section" id="processing-the-webid-profile" typeof="bibo:Chapter" about="#processing-the-webid-profile">
  1.1109 +<h5><span class="secno">3.2.4.1 </span>Processing the WebID Profile</h5>
  1.1110 +
  1.1111 +<p>The Verification Agent needs to fetch the document, if it does not have a valid one in cache.  The <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> <em class="rfc2119" title="must">must</em> be able to process documents in RDF/XML [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SYNTAX-GRAMMAR">RDF-SYNTAX-GRAMMAR</a></cite>] and RDFa in XHTML [<cite><a class="bibref" rel="biblioentry" href="#bib-XHTML-RDFA">XHTML-RDFA</a></cite>]. The result of this processing should be a graph of RDF relations that is queryable, as explained in the next section.</p>
  1.1112 +<p class="note">
  1.1113 +It is suggested that the <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a> should set the Accept-Header to request <code>application/rdf+xml</code> with a higher priority than <code>text/html</code> and <code>application/xhtml+xml</code>.  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.
  1.1114 +</p>
  1.1115 +<p>If the <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> 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>
  1.1116 +</div>
  1.1117 +
  1.1118 +<div class="normative section" id="verifying-the-webid-claim" typeof="bibo:Chapter" about="#verifying-the-webid-claim">
  1.1119 +<h5><span class="secno">3.2.4.2 </span>Verifying the WebID Claim</h5>
  1.1120 +
  1.1121 +<p>
  1.1122 +To check a WebID claim one has to find if the graph returned by the profile  relates the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> to the  <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a> <a class="tref internalDFN" title="Public_Key" href="#dfn-public_key">Public Key</a> with the <code>cert:key</code> relation. In other words one has to check if those statements are present in the graph.</p>
  1.1123 +
  1.1124 +<div class="normative section" typeof="bibo:Chapter" about="#verifying-the-webid-claim-with-sparql">
  1.1125 +<h6 id="verifying-the-webid-claim-with-sparql">Verifying the WebID Claim with SPARQL</h6>
  1.1126 +<p>Testing for patterns in graphs is what the SPARQL query language is designed to do [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>]. We will first look at how to use this as it is also the simplest method, and then what some other programmatic options may be.</p>
  1.1127 +<p>Below is the SPARQL Query Template which should be used for an RSA public key. It contains three variables <code>?webid</code>, <code>?mod</code> and <code>?exp</code> that need to be replaced by the appropriate values:</p>
  1.1128 +<pre style="word-wrap: break-word; white-space: pre-wrap;">PREFIX : &lt;http://www.w3.org/ns/auth/cert#&gt;
  1.1129 +PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
  1.1130 +ASK {
  1.1131 +   ?webid :key [
  1.1132 +      :modulus ?mod;
  1.1133 +      :exponent ?exp;
  1.1134 +   ] .
  1.1135 +}
  1.1136 +</pre>
  1.1137 +<p>The variables to be replaced for each WebID claim are:</p>
  1.1138 +<table cellpadding="5" border="1" style="text-align: left; border-color: rgb(0, 0, 0); border-collapse: collapse; word=wrap: break-word; white-psace: pre-wrap">
  1.1139 +<thead>
  1.1140 + <tr>
  1.1141 +   <th>Variable</th>
  1.1142 +   <th>Details on its value.</th>
  1.1143 + </tr>
  1.1144 +</thead>
  1.1145 +<tbody>
  1.1146 +<tr><td><code>?webid</code></td><td>should be replaced by the WebID Resource. In the SPARQL notation that is the URL string would be placed between <code>&lt;...&gt;</code> in the position of the <code>?webid</code> variable. </td></tr>
  1.1147 +<tr><td><code>?mod</code></td><td>should be replaced by the modulus written as a xsd:hexBinary as specified by the <a href="http://www.w3.org/ns/auth/cert#modulus">cert:modulus</a> relation. All leading double 0 bytes (written  &quot;00&quot; in hexadecimal) should be removed. The resulting hexadecimal should then be placed in the space of the XXX in <code>&quot;XXX&quot;^^xsd:hexBinary</code> </td></tr>
  1.1148 +<tr><td><code>?exp</code></td><td>should be replaced by the public exponent written as an xsd:integer typed literal. In SPARQL as in Turtle notation this can just be written directly as an integer.</td></tr>
  1.1149 +</tbody>
  1.1150 +</table>
  1.1151 +
  1.1152 +<p>Assuming that we received Bob's key whose modulus starts with <code>cb24ed85d64d794b6...</code> and whose exponent is <code>65537</code> then the following query should be used:
  1.1153 +</p>
  1.1154 +<pre style="word-wrap: break-word; white-space: pre-wrap;" class="example">PREFIX : &lt;http://www.w3.org/ns/auth/cert#&gt;
  1.1155 +PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
  1.1156 +ASK {
  1.1157 +   &lt;https://bob.example/profile#me&gt; :key [
  1.1158 +      :modulus &quot;cb24ed85d64d794b69c701c186acc059501e856000f661c93204d8380e07191c5c8b368d2ac32a428acb970398664368dc2a867320220f755e99ca2eecdae62e8d15fb58e1b76ae59cb7ace8838394d59e7250b449176e51a494951a1c366c6217d8768d682dde78dd4d55e613f8839cf275d4c8403743e7862601f3c49a6366e12bb8f498262c3c77de19bce40b32f89ae62c3780f5b6275be337e2b3153ae2ba72a9975ae71ab724649497066b660fcf774b7543d980952d2e8586200eda4158b014e75465d91ecf93efc7ac170c11fc7246fc6ded79c37780000ac4e079f671fd4f207ad770809e0e2d7b0ef5493befe73544d8e1be3dddb52455c61391a1&quot;^^xsd:hexBinary;
  1.1159 +      :exponent 65537;
  1.1160 +   ] .
  1.1161 +}</pre>
  1.1162 +<p>An ASK query simply returns true or false. If it returns true, then the key was found in the graph with the proper relation and the claim is verified.</p>
  1.1163 +<p>In order to allow the class of queries defined by the template above to return true when asked of graphs where the hexBinary or the exponent contains whitespace characters in initial and final position, the query engine <em class="rfc2119" title="must">must</em> support the D-entailment regime for <code>xsd:hexBinary</code> and <code>xsd:integer</code> as specified in <a href="http://www.w3.org/TR/sparql11-entailment/#DEntRegime">SPARQL 1.1 Entailment Regimes</a>.</p>
  1.1164 +<p>For verifiers that do not have access to a SPARQL query engine but can query the RDF data programmatically, it is relatively easy to emulate the above SPARQL query programmatically. There are a number of ways of doing this, some more efficient than others.</p><p>
  1.1165 +</p></div>
  1.1166 +<div class="normative section" typeof="bibo:Chapter" about="#verifying-the-webid-claim-without-sparql">
  1.1167 +<h6 id="verifying-the-webid-claim-without-sparql">Verifying the WebID claim without SPARQL</h6>
  1.1168 +<p>If the RDF library does datatype normalisation of all literals before loading them, then the most efficient way to execute this would be to start by searching for all triples whose subjects have relation <code>cert:modulus</code> to the literal which in our example was <code>&quot;cb24ed...&quot;^^xsd:hexBinary</code>. One would then iterate through all the subjects of the relations that satisfied that condition, which would most likely never number more than one, and from there filter out all those that were the object of the <code>cert:modulus</code> relation of the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> - in the example <code>bob:me</code>. Finally one would verify that one of the keys that had satisfied those relations also had the <code>cert:exponent</code> relation to the number which in the example above is <code>&quot;65537&quot;^^xsd:integer</code>.  
  1.1169 +</p>
  1.1170 +<p>For triples stores that do not normalise literals on loading a graph, the normalization will need to be done after the query results and before matching those with the values from the <a class="tref internalDFN" title="Certificate" href="#dfn-certificate">Certificate</a>. Because one could not rely on the modulus having been normalized, one would have to start with the <a class="tref internalDFN" title="WebID" href="#dfn-webid">WebID</a> - <code>bob:me</code> and find all it's <code>cert:key</code> relations to objects - which we know to be keys - and then iterate through each of those keys' modulus and exponent, and verify if the normalised version of the value of those relation is equal to the numbers found in the certificate. If one such key is found then the answer is <code>true</code>, otherwise the answer will be <code>false</code>.</p>
  1.1171 +</div>
  1.1172 +</div>
  1.1173 +<div class="normative section" id="authorization" typeof="bibo:Chapter" about="#authorization">
  1.1174 +<h5><span class="secno">3.2.4.3 </span>Authorization</h5>
  1.1175 +
  1.1176 +<p>The Authorization step may  be as simple as just allowing everybody read access. The authentication phase may then just have been useful in order to gain some extra information from the <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> in order to personalise a site.</p>
  1.1177 +<p>Once the <a class="tref internalDFN" title="Guard" href="#dfn-guard">Guard</a> has a WebID he can do a lookup in a database to see if the agent is allowed the required access to the given resource. 
  1.1178 +Up to this point we are not much more advanced that with a user name and password, except that the user did not have to create an account on Alice's server to identify himself and that the server has some claimed attributes to personalise the site for the requestor.
  1.1179 +But the interesting thing about such a WebID is that because it is a global linkable URI, one can  build webs of trust that can be crawled the same way the web can be crawled: by following links from one document to another. 
  1.1180 +It is therefore possible to have very flexible access control rules where parts of the space of the user's machine is given access to friend and those friends friends (FOAF), stated by them at their domains.
  1.1181 +It is even be possible to allow remote agents to define their own access control rules for parts of the machine's namespace.
  1.1182 +There are too many possibilities to list them all here.
  1.1183 +</p>
  1.1184 +
  1.1185 +</div>
  1.1186 +</div>
  1.1187 +
  1.1188 +<div class="normative section" id="the-webid-profile" typeof="bibo:Chapter" about="#the-webid-profile">
  1.1189 +<h4><span class="secno">3.2.5 </span>The WebID Profile</h4>
  1.1190 +
  1.1191 +<p>The <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> is a structured document that contains
  1.1192 +identification credentials for the <a class="tref" title="Identification_Agent">Identification Agent</a> expressed
  1.1193 +using the Resource Description Framework [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]. The following
  1.1194 +sections describe how to express certain common properties that could be used
  1.1195 +by <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a>s and other entities that consume a
  1.1196 +<a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a>.</p>
  1.1197 +
  1.1198 +<div class="normative section" id="personal-information" typeof="bibo:Chapter" about="#personal-information">
  1.1199 +<h5><span class="secno">3.2.5.1 </span>Personal Information</h5>
  1.1200 +
  1.1201 +<p>Personal details are the most common requirement when registering an
  1.1202 +account with a website. Some of these pieces of information include an e-mail
  1.1203 +address, a name and perhaps an avatar image. This section includes
  1.1204 +properties that <em class="rfc2119" title="should">should</em> be used when conveying key pieces of personal information
  1.1205 +but are <em class="rfc2119" title="not required">not required</em> to be present in a <a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a>:</p>
  1.1206 +
  1.1207 +<dl>
  1.1208 +  <dt>foaf:mbox</dt>
  1.1209 +  <dd>The e-mail address that is associated with the WebID URI.</dd>
  1.1210 +  <dt>foaf:name</dt>
  1.1211 +  <dd>The name that is most commonly used to refer to the individual
  1.1212 +    or agent.</dd>
  1.1213 +  <dt>foaf:depiction</dt>
  1.1214 +  <dd>An image representation of the individual or agent.</dd>
  1.1215 +</dl>
  1.1216 +</div>
  1.1217 +
  1.1218 +<div class="normative section" id="cryptographic-details" typeof="bibo:Chapter" about="#cryptographic-details">
  1.1219 +<h5><span class="secno">3.2.5.2 </span>Cryptographic Details</h5>
  1.1220 +
  1.1221 +<p>Cryptographic details are important when <a class="tref internalDFN" title="Verification_Agent" href="#dfn-verification_agent">Verification Agent</a>s
  1.1222 +and <a class="tref" title="Identification_Agent">Identification Agent</a>s interact. The following properties
  1.1223 +<em class="rfc2119" title="should">should</em> be used when conveying cryptographic information in
  1.1224 +<a class="tref internalDFN" title="WebID_Profile" href="#dfn-webid_profile">WebID Profile</a> documents:</p>
  1.1225 +
  1.1226 +<dl>
  1.1227 +  <dt>cert:RSAPublicKey</dt>
  1.1228 +  <dd>Expresses an RSA public key. The RSAPublicKey <em class="rfc2119" title="must">must</em> specify the
  1.1229 +  cert:modulus and cert:exponent properties.</dd>
  1.1230 +  <dt>cert:key</dt>
  1.1231 +  <dd>Used to associate a WebID URI with an RSAPublicKey. A WebID Profile
  1.1232 +  <em class="rfc2119" title="must">must</em> contain at least one RSAPublicKey that is associated with the
  1.1233 +  corresponding WebID URI.</dd>
  1.1234 +</dl>
  1.1235 +<p class="note">cert:identity was previously used to associate an RSAPublicKey
  1.1236 +with a WebID URI. cert:identity has been deprecated in favor of its inverse
  1.1237 +property cert:key. Implementors are encouraged to publish WebID Profile
  1.1238 +Documents using cert:key. During this transitional period, implementations
  1.1239 +consuming WebID Profile Documents might still support the deprecated
  1.1240 +cert:identity as well as the stable cert:key.</p>
  1.1241 +</div>
  1.1242 +
  1.1243 +</div>
  1.1244 +
  1.1245 +</div>
  1.1246 +
  1.1247 +</div>
  1.1248 +
  1.1249 +<div id="history" class="appendix informative section" typeof="bibo:Chapter" about="#history">
  1.1250 +
  1.1251 +<!-- OddPage -->
  1.1252 +<h2><span class="secno">A. </span>Change History</h2><p><em>This section is non-normative.</em></p>
  1.1253 +<p><a href="">2011-12-12</a>
  1.1254 +Fixed several errors in examples and diagrams, clarified TLS-Light, added SSL renegotiation, key chain and cache control, updated list people in acknowledgments.
  1.1255 +</p>
  1.1256 +<p><a href="http://www.w3.org/2005/Incubator/webid/spec/drafts/ED-webid-2011-11-23/">2011-11-23</a>
  1.1257 +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.
  1.1258 +</p>
  1.1259 +<p><a href="https://dvcs.w3.org/hg/WebID/rev/6b60d7335151">2011-02-10</a>
  1.1260 +Move to <a href="http://www.w3.org/2005/Incubator/webid/"><acronym title="World Wide Web Consortium">W3C</acronym> WebID XG</a>.
  1.1261 +Updates from previous unofficial WebID group include changes on
  1.1262 +RDF/XML publishing in HTML, clarification on multiple SAN URIs and
  1.1263 +WebID verification steps.
  1.1264 +</p>
  1.1265 +<p><a href="https://dvcs.w3.org/hg/WebID/rev/dc93b6bbc538">2010-08-09</a>
  1.1266 +Updates from WebID community: moved OpenID/OAuth sections to separate document,
  1.1267 +switched to the URI terminology instead of URL, added &quot;Creating the certificate&quot;
  1.1268 +and &quot;Publishing the WebID Profile document&quot; sections with a WebID graph and
  1.1269 +serializations in Turtle and RDFa, improved SPARQL queries using literal
  1.1270 +notation with cert datatypes, updated list of contributors,
  1.1271 +and many other fixes.</p>
  1.1272 +<p><a href="https://dvcs.w3.org/hg/WebID/rev/4aef27947dec">2010-07-25</a>
  1.1273 +Added WebID Profile section.</p>
  1.1274 +<p><a href="https://dvcs.w3.org/hg/WebID/rev/805d44635286">2010-07-18</a>
  1.1275 +Updates from WebID community related to RDF/XML support, authentication sequence
  1.1276 +corrections, abstract and introduction updates.</p>
  1.1277 +<p><a href="https://dvcs.w3.org/hg/WebID/rev/25ba7f596f07">2010-07-11</a>
  1.1278 +Initial version.</p>
  1.1279 +</div>
  1.1280 +
  1.1281 +<div id="acknowledgements" class="informative section" typeof="bibo:Chapter" about="#acknowledgements">
  1.1282 +
  1.1283 +<!-- OddPage -->
  1.1284 +<h2><span class="secno">B. </span>Acknowledgments</h2><p><em>This section is non-normative.</em></p>
  1.1285 +
  1.1286 +<p>The following people have been instrumental in providing thoughts, feedback,
  1.1287 +reviews, criticism and input in the creation of this specification:</p>
  1.1288 +
  1.1289 +<ul>
  1.1290 +<li>Thomas Bergwinkl</li>
  1.1291 +<li>Tim Berners-Lee</li>
  1.1292 +<li>Sarven Capadisli</li>
  1.1293 +<li>Melvin Carvalho</li>
  1.1294 +<li>Martin Gaedke</li>
  1.1295 +<li>Michael Hausenblas</li>
  1.1296 +<li>Kingsley Idehen</li>
  1.1297 +<li>Ian Jacobi</li>
  1.1298 +<li>Nathan Rixham</li>
  1.1299 +<li>Seth Russell</li>
  1.1300 +<li>Andrei Sambra</li>
  1.1301 +<li>Jeff Sayre</li>
  1.1302 +<li>Dominik Tomaszuk</li>
  1.1303 +<li>Peter Williams</li>
  1.1304 +</ul>
  1.1305 +
  1.1306 +</div>
  1.1307 +  
  1.1308 +
  1.1309 +
  1.1310 +<div id="references" class="appendix section" typeof="bibo:Chapter" about="#references">
  1.1311 +<!-- OddPage -->
  1.1312 +<h2><span class="secno">C. </span>References</h2><div id="normative-references" typeof="bibo:Chapter" about="#normative-references" class="section"><h3><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-GRDDL-PRIMER">[GRDDL-PRIMER]</dt><dd rel="dcterms:requires">Harry Halpin; Ian Davis. <a href="http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628"><cite>GRDDL Primer.</cite></a> 28 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628">http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628</a> 
  1.1313 +</dd><dt id="bib-HTTP-TLS">[HTTP-TLS]</dt><dd rel="dcterms:requires">E. Rescorla. <a href="http://www.ietf.org/rfc/rfc2818.txt"><cite>HTTP Over TLS.</cite></a> May 2000. Internet RFC 2818. URL: <a href="http://www.ietf.org/rfc/rfc2818.txt">http://www.ietf.org/rfc/rfc2818.txt</a> 
  1.1314 +</dd><dt id="bib-HTTP11">[HTTP11]</dt><dd rel="dcterms:requires">R. Fielding; et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1.</cite></a> June 1999. Internet RFC 2616. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a> 
  1.1315 +</dd><dt id="bib-N3">[N3]</dt><dd rel="dcterms:requires">Tim Berners-Lee; Dan Connolly. <a href="http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/"><cite>Notation3 (N3): A readable RDF syntax.</cite></a> 14 January 2008. W3C Team Submission. URL: <a href="http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/">http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/</a> 
  1.1316 +</dd><dt id="bib-RDF-PRIMER">[RDF-PRIMER]</dt><dd rel="dcterms:requires">Frank Manola; Eric Miller. <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/"><cite>RDF Primer.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">http://www.w3.org/TR/2004/REC-rdf-primer-20040210/</a> 
  1.1317 +</dd><dt id="bib-RDF-SPARQL-QUERY">[RDF-SPARQL-QUERY]</dt><dd rel="dcterms:requires">Andy Seaborne; Eric Prud'hommeaux. <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115"><cite>SPARQL Query Language for RDF.</cite></a> 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115">http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115</a> 
  1.1318 +</dd><dt id="bib-RDF-SYNTAX-GRAMMAR">[RDF-SYNTAX-GRAMMAR]</dt><dd rel="dcterms:requires">Dave Beckett. <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210"><cite>RDF/XML Syntax Specification (Revised).</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210">http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210</a> 
  1.1319 +</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:requires">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax.</cite></a> January 2005. Internet RFC 3986. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a> 
  1.1320 +</dd><dt id="bib-RFC5246">[RFC5246]</dt><dd rel="dcterms:requires">T. Dierks; E. Rescorla. <a href="http://tools.ietf.org/html/rfc5246"><cite>The Transport Layer Security (TLS) Protocol Version 1.2</cite></a> August 2008. Internet RFC 5246. URL: <a href="http://tools.ietf.org/html/rfc5246">http://tools.ietf.org/html/rfc5246</a> 
  1.1321 +</dd><dt id="bib-RFC5746">[RFC5746]</dt><dd rel="dcterms:requires">E. Rescorla, M. Ray, S. Dispensa, N. Oskov,  <a href="http://tools.ietf.org/html/rfc5746"><cite>Transport Layer Security (TLS) Renegotiation Indication Extension</cite></a> February 2010. Internet RFC 5246. URL: <a href="http://tools.ietf.org/html/rfc5746">http://tools.ietf.org/html/rfc5746</a> 
  1.1322 +</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:requires">David Beckett, Tim Berners-Lee. <a href="http://www.w3.org/TeamSubmission/turtle/"><cite>Turtle: Terse RDF Triple Language.</cite></a> January 2008. W3C Team Submission. URL: <a href="http://www.w3.org/TeamSubmission/turtle/">http://www.w3.org/TeamSubmission/turtle/</a> 
  1.1323 +</dd><dt id="bib-X509V3">[X509V3]</dt><dd rel="dcterms:requires"><cite>ITU-T Recommendation X.509 version 3 (1997). &quot;Information Technology - Open Systems Interconnection - The Directory Authentication Framework&quot;  ISO/IEC 9594-8:1997</cite>.
  1.1324 +</dd><dt id="bib-XHTML-RDFA">[XHTML-RDFA]</dt><dd rel="dcterms:requires">Shane McCarron; et. al. <a href="http://www.w3.org/TR/2011/WD-xhtml-rdfa-20111215"><cite>XHTML+RDFa 1.1.</cite></a> 15 December 2011. W3C Working Draft. URL: <a href="http://www.w3.org/TR/2011/WD-xhtml-rdfa-20111215">http://www.w3.org/TR/2011/WD-xhtml-rdfa-20111215</a> 
  1.1325 +</dd></dl></div><div id="informative-references" typeof="bibo:Chapter" about="#informative-references" class="section"><h3><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd rel="dcterms:references">Graham Klyne; Jeremy J. Carroll. <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210</a> 
  1.1326 +</dd></dl></div></div></body></html>