Added information about the testing process and about how to describe testing artifacts.
authorRaúl García Castro <rgarcia@fi.upm.es>
Fri, 10 May 2013 14:39:52 +0200
changeset 106 3e59d43671df
parent 105 6f2f1329086d
child 107 e35e3ea7be90
Added information about the testing process and about how to describe testing artifacts.
Test Cases/LDP Test Cases.html
Test Cases/TestingProcess.svg
--- a/Test Cases/LDP Test Cases.html	Wed May 08 11:25:11 2013 -0400
+++ b/Test Cases/LDP Test Cases.html	Fri May 10 14:39:52 2013 +0200
@@ -1,1234 +1,22 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.1.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-prefix="td: http://www.w3.org/2006/03/test-description# tn: http://ldp.example.org/NewTestDefinitions# ht: http://www.w3.org/2011/http#">
-  <head>
-    <base href="http://www.w3.org/TR/ldp/TestCases" />
-    <meta content="text/html; charset=utf-8" http-equiv="content-type" />
-    <title>LDP Test Cases</title>
-    <link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css"
-    charset="utf-8" />
-  </head>
-  <body>
-    <p> <a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home"
-          alt="W3C"
-          height="48"
-          width="72" /></a>
-    </p>
-    <h1>Linked Data Platform 1.0 Test Cases</h1>
-    <h2>Table of Contents</h2>
-    <p><a href="#Tests-LDPRs"><strong>Tests for L</strong><strong>DP</strong></a><strong><a
-          href="#Tests-LDPRs">Rs</a>:</strong></p>
-    <ul>
-      <li><a href="#TC-R1">TC-R1. GET on an LDPR</a></li>
-      <li><a href="#TC-R2">TC-R2. GET on an LDPR without content type</a></li>
-      <li><a href="#TC-R3">TC-R3. GET on a non-existing LDPR</a></li>
-      <li><a href="#TC-R4">TC-R4. PUT on an LDPR</a></li>
-      <li><a href="#TC-R5">TC-R5. PUT on an LDPR without matching ETags</a></li>
-      <li><a href="#TC-R6">TC-R6. DELETE on an LDPR</a></li>
-      <li><a href="#TC-R7">TC-R7. HEAD on an LDPR</a></li>
-    </ul>
-    <p><a href="#Tests-LDPCs"><strong>Tests for L</strong><strong>DP</strong></a><strong><a
-          href="#Tests-LDPCs">Cs</a>:</strong></p>
-    <ul>
-      <li><a href="#TC-C1">TC-C1. GET on an LDPC</a></li>
-      <li><a href="#TC-C2">TC-C2. GET on an LDPC without content type</a></li>
-      <li><a href="#TC-C3">TC-C3. GET on a non-existing LDPC</a></li>
-      <li><a href="#TC-C4">TC-C4. PUT on an LDPC</a></li>
-      <li><a href="#TC-C5">TC-C5. PUT on an LDPC without matching ETags</a></li>
-      <li><a href="#TC-C6">TC-C6. DELETE on an LDPC</a></li>
-      <li><a href="#TC-C7">TC-C7. DELETE on an LDPR in an LDPC</a></li>
-      <li><a href="#TC-C8">TC-C8. HEAD on an LDPC</a></li>
-      <li><a href="#TC-C9">TC-C9. POST an LDPR on an LDPC</a></li>
-    </ul>
-    <p><a href="#Feedback">Feedback to recommendation</a></p>
-    <p><a href="#EditorNotes">Editor TODOs and notes</a></p>
-    <hr/>
-    <h2>Introduction</h2>
-    <p>This document describes...</p>
-    <h2>Design issues </h2>
-    <h3>Generic vs domain-specific servers</h3>
-    <p>There will be two types of systems implementing the LDP specification:</p>
-    <ul>
-      <li>Generic RDF storage systems that allow interacting with their
-        resources by means of the LDP specification. These servers do not impose
-        any restriction on LDPRs.</li>
-      <li>Systems exposing their data using the LDP specification. These systems
-        impose restrictions on LDPRs since they have an underlying business
-        logic and data model.</li>
-    </ul>
-    <p>In order to cover both types of systems, we do not provide concrete input
-      data in the test suite. It is up to the evaluator to define concrete input
-      data for a certain system. Evaluators must include these input data along
-      with the results when reporting the results of a certain system.</p>
-    <h3>Protocol evaluation vs data evaluation</h3>
-    <p>The LDP specification includes restrictions on LDP servers at the
-      protocol level and at the data level. Currently, the restrictions at the
-      data level are minimal and servers are not forced to have a concrete
-      behaviour when processing LDPR representations. Therefore, the test suite
-      evaluates LDP servers at a protocol level; the only exception is in the
-      case of LDPCs, since they are required to include an rdf.type statement in
-      their representation.</p>
-    <p>It is out of the scope of the test suite to test LDP servers in terms of
-      the restrictions imposed by their underlying data models.</p>
-    <h3>Test suite coverage</h3>
-    <p>This test suite only covers those absolute requirements present in the
-      LDP specification (as stated by the use of the MUST key word). This set of
-      absolute requirements identifies the core subset of the LDP specification,
-      LDP Core from now on, and any LDP server that satisfies these absolute
-      requirements will be an LDP Core conformant server.</p>
-    <p>It is out of the scope of this test suite to test other levels of
-      conformance in terms of optional capabilities (e.g., paging).</p>
-    <h3>Separation of results and assertions</h3>
-    <p>Instead of defining expected results for tests, which will be dependent
-      on concrete implementations, we have defined the assertions to be made
-      over test results. In order to successfully pass a test all the assertions
-      must be satisfied.</p>
-    <p>Separating test outputs and assertions has other benefits: it makes
-      simpler to report tool results and assertions can be made by a third
-      party.</p>
-    <h2><a id="Tests-LDPRs"></a>Tests for LDPRs</h2>
-    <p>These tests involve only LDPRs.</p>
-    <div resource="#TCR1" typeof="td:TestCase">
-      <h3><a id="TC-R1"><span property="rdfs:label">TC-R1</span>. <span property="dc:title">GET on an LDPR</span></a></h3>
-      <p property="dc:description">Tests making a GET request on an existing LDPR.</p>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-      <h4>Related specification</h4>
-      <p><em><a target="_blank" href="http://www.w3.org/TR/ldp/" property="rdfs:seeAlso">Linked Data
-            Platform 1.0</a>:</em></p>
-      <ul>
-        <li property="td:specificationReference" typeof="tn:Excerpt"><div><span property="tn:includesText">4.1.12 LDPR server responses MUST use entity tags (either weak or strong ones) as response ETag header values.</span><span property="rdfs:seeAlso" href="http://www.w3.org/TR/ldp/"/></div></li>
-        <li property="td:specificationReference" typeof="tn:Excerpt"><div><span property="tn:includesText">4.2.1 LDPR servers MUST support the HTTP GET Method for LDPRs.</span><span property="rdfs:seeAlso" href="http://www.w3.org/TR/ldp/"/></div></li>
-        <li property="td:specificationReference" typeof="tn:Excerpt"><div><span property="tn:includesText">4.2.2 LDPR servers MUST provide a text/turtle representation of the requested LDPR.</span><span property="rdfs:seeAlso" href="http://www.w3.org/TR/ldp/"/></div></li>
-      </ul>
-      <h4>Input</h4>
-      <ul>
-        <li property="td:input" resource="#TCR1-I1-LDPR-URI" typeof="tn:TestInput"><em property="dc:title">&lt;LDPR URI&gt;</em>. <span property="dc:description">The URI of an LDPR.</span></li>
-      </ul>
-      <h4>Preconditions</h4>
-      <ul>
-        <li property="td:precondition">The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-      </ul>
-      <h4>Process</h4>
-      <ol>
-        <li inlist="" property="tn:testProcess" resource="#TCR1-RQ1-GET-LDPR-URI" typeof="ht:Request">
-          <div property="dc:description">
-          GET &lt;LDPR URI&gt;
-          <ul>
-            <li>[request-header].Accept = text/turtle</li>
-          </ul>
-          </div>
-          <span property="tn:usesInput" resource="#TCR1-I1-LDPR-URI" />
-        </li>
-      </ol>
-      <h4>Output</h4>
-      <ul>
-        <li property="td:output" resource="#TCR1-RP1-Response-1-GET" typeof="tn:TestOutput ht:Response"> <em property="dc:title">&lt;Response 1 GET&gt;</em>. 
-          <span property="dc:description">The response of the GET request in step 1.</span>
-          <span property="tn:fromRequest" resource="#TCR1-RQ1-GET-LDPR-URI" />
-        </li>
-      </ul>
-      <h4>Assertions</h4>
-      <ul>
-        <li property="tn:testAssertion" resource="#TCR1-A1-Response-1-GET" typeof="tn:TestAssertion"><span property="tn:resultAsserted" resource="TCR1-O1-Response-1-GET"/>Assert &lt;Response 1 GET&gt; (<span property="dc:title">GET correct</span>): 
-          <ul property="dc:description">
-            <li>[Status-Line].Status-Code = 2xx</li>
-            <li>[response-header].ETag exists</li>
-            <li>[entity-header].Content-Type = text/turtle</li>
-          </ul>
-        </li>
-      </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR2" typeof="td:TestCase">
-    <h3><a id="TC-R2">TC-R2. GET on an LDPR without content type</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.2.3 [...] If the client does not indicate a preference, text/turtle
-        MUST be returned. </li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPR URI&gt;</li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET correct): 
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR3" typeof="td:TestCase">
-    <h3><a id="TC-R3">TC-R3. GET on a non-existing LDPR</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.5.1 LDPR servers MUST remove the resource identified by the
-        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
-        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
-        status code.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of a non-existing LDPR. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server does not contain an LDPR at &lt;LDPR URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET incorrect): 
-        <ul>
-          <li>[Status-Line].Status-Code = 404 or 410</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR4" typeof="td:TestCase">
-    <h3><a id="TC-R4">TC-R4. PUT on an LDPR</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><a target="_blank" href="http://tools.ietf.org/html/rfc2616">Hypertext
-          Transfer Protocol -- HTTP/1.1</a>:</em></p>
-    <ul>
-      <li>3.11 [...] An entity tag MUST be unique across all versions of all
-        entities associated with a particular resource.</li>
-    </ul>
-    <h4>Input </h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR</li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-      <li>The LDPR at &lt;LDPR URI&gt; allows PUT</li>
-      <li>The LDP server allows updating in the LDPR the current representation
-        at &lt;LDPR URI&gt;</li>
-      <li>The LDP server does not desire that the request be applied to a
-        different URI</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>PUT &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].If-Match = &lt;Response GET
-            1&gt;.[response-header].ETag</li>
-          <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
-        </ul>
-      </li>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em>&lt;Response 1 GET&gt;</em></li>
-      <li> <em> &lt;Response 2 PUT&gt;</em></li>
-      <li> <em> &lt;Response 3 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (LDPR updated):
-        <ul>
-          <li>[response-header].ETag != &lt;Response 1
-            GET&gt;.[response-header].ETag</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR5" typeof="td:TestCase">
-    <h3><a id="TC-R5">TC-R5. PUT on an LDPR without matching ETags</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.4.2 [...] LDPR servers MUST respond with status code 412 (Condition
-        Failed) if ETags fail to match if there are no other errors with the
-        request. </li>
-    </ul>
-    <h4>Input </h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR</li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-      <li>The LDPR at &lt;LDPR URI&gt; allows PUT</li>
-      <li>The LDP server allows updating in the LDPR the current representation
-        at &lt;LDPR URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>PUT &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].If-Match = &lt;Response GET
-            1&gt;.[response-header].ETag + 'M'</li>
-          <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-      <li> <em> &lt;Response 2 PUT&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 412</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR6" typeof="td:TestCase">
-    <h3><a id="TC-R6">TC-R6. DELETE on an LDPR</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.5.1 LDPR servers MUST remove the resource identified by the
-        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
-        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
-        status code.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-      <li>The LDPR at &lt;LDPR URI&gt; allows DELETE</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>DELETE &lt;LDPR URI&gt;</li>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 DELETE&gt;</em></li>
-      <li> <em> &lt;Response 2 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE
-        correct): 
-        <ul>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204
-            and &lt;Response 2 GET&gt;.[Status-Line].Status-Code = 404 or 410<strong>
-            </strong></li>
-          <li>or&nbsp;</li>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except
-            200 and 204) </li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCR7" typeof="td:TestCase">
-    <h3><a id="TC-R7">TC-R7. HEAD on an LDPR</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.6.1 LDPR servers MUST support the HTTP HEAD method.</li>
-      <li>4.6.2 LDPR servers MUST indicate their support for HTTP Methods by
-        responding to a HTTP HEAD request on the LDPR’s URL with the HTTP Method
-        tokens in the HTTP response header “Allow”. </li>
-    </ul>
-    <p><a target="_blank" href="http://tools.ietf.org/html/rfc2616"><em>Hypertext
-          Transfer Protocol -- HTTP/1.1</em></a>:</p>
-    <ul>
-      <li>9.4 The HEAD method is identical to GET except that the server MUST
-        NOT return a message-body in the response.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>HEAD &lt;LDPR URI&gt;</li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 HEAD&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 HEAD&gt; (HEAD correct): 
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx<strong> </strong></li>
-          <li>[entity-header].Allow exists</li>
-          <li>[message-body] not exists</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <h2><a id="Tests-LDPCs"></a>Tests for LDPCs</h2>
-    <p>These tests involve LDPCs and LDPRs.</p>
-    <div resource="#TCC1" typeof="td:TestCase">
-    <h3><a id="TC-C1">TC-C1. GET on an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.1.12 LDPR server responses MUST use entity tags (either weak or
-        strong ones) as response ETag header values. </li>
-      <li>4.2.1 LDPR servers MUST support the HTTP GET Method for LDPRs. </li>
-      <li>4.2.2 LDPR servers MUST provide a text/turtle representation of the
-        requested LDPR. </li>
-      <li>5.2.7 The representation of a LDPC MUST have rdf:type of
-        ldp:Container, but it MAY have additional rdf:types. </li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET resource correct): 
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC2" typeof="td:TestCase">
-    <h3><a id="TC-C2">TC-C2. GET on an LDPC without content type</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.2.3 [...] If the client does not indicate a preference, text/turtle
-        MUST be returned. </li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;</li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET resource correct): 
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC3" typeof="td:TestCase">
-    <h3><a id="TC-C3">TC-C3. GET on a non-existing LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.5.1 LDPR servers MUST remove the resource identified by the
-        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
-        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
-        status code.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of a non-existing LDPC. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server does not contain an LDPC at &lt;LDPC URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET incorrect): 
-        <ul>
-          <li>[Status-Line].Status-Code = 404 or 410</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC4" typeof="td:TestCase">
-    <h3><a id="TC-C4">TC-C4. PUT on an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><a target="_blank" href="http://tools.ietf.org/html/rfc2616">Hypertext
-          Transfer Protocol -- HTTP/1.1</a>:</em></p>
-    <ul>
-      <li>3.11 [...] An entity tag MUST be unique across all versions of all
-        entities associated with a particular resource.</li>
-    </ul>
-    <h4>Input </h4>
-    <ul>
-      <li><em> &lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-      <li>The LDPC at &lt;LDPC URI&gt; allows PUT</li>
-      <li>The LDP server allows updating in the LDPC the current representation
-        at &lt;LDPC URI&gt;</li>
-      <li>The LDP server does not desire that the request be applied to a
-        different URI</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>PUT &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].If-Match = &lt;Response GET
-            1&gt;.[response-header].ETag</li>
-          <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
-        </ul>
-      </li>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-      <li> <em> &lt;Response 2 PUT&gt;</em></li>
-      <li> <em> &lt;Response 3 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li> Assert &lt;Response 3 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (LDPC updated):
-        <ul>
-          <li>[response-header].ETag != &lt;Response 1
-            GET&gt;.[response-header].ETag</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC5" typeof="td:TestCase">
-    <h3><a id="TC-C5">TC-C5. PUT on an LDPC without matching ETags</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.4.2 [...] LDPR servers MUST respond with status code 412 (Condition
-        Failed) if ETags fail to match if there are no other errors with the
-        request. </li>
-    </ul>
-    <h4>Input<em> </em></h4>
-    <ul>
-      <li><em> &lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-      <li>The LDPC at &lt;LDPC URI&gt; allows PUT</li>
-      <li>The LDP server allows updating in the LDPC the current representation
-        at &lt;LDPC URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>PUT &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].If-Match = &lt;Response GET
-            1&gt;.[response-header].ETag + 'M'</li>
-          <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 GET&gt;</em></li>
-      <li> <em> &lt;Response 2 PUT&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 412</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC6" typeof="td:TestCase">
-    <h3><a id="TC-C6">TC-C6. DELETE on an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.5.1 LDPR servers MUST remove the resource identified by the
-        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
-        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
-        status code.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-      <li>The LDPC at &lt;LDPC URI&gt; allows DELETE</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>DELETE &lt;LDPC URI&gt;</li>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 DELETE&gt;</em></li>
-      <li> <em> &lt;Response 2 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE
-        correct):
-        <ul>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204
-            and &lt;Response 2 GET&gt;.[Status-Line].Status-Code = 404 or 410<strong>
-            </strong></li>
-          <li>or&nbsp;</li>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except
-            200 and 204) </li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC7" typeof="td:TestCase">
-    <h3><a id="TC-C7">TC-C7. DELETE on an LDPR in an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>5.6.1 When a LDPC member resource originally created by the LDPC (for
-        example, one referenced by a membership triple) is deleted, and the LDPC
-        server is aware of the member's deletion (for example, the member is
-        managed by the same server), the LDPC server MUST also remove it from
-        the LDPC by removing the corresponding membership triple. </li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li><em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
-      <li><em>&lt;LDPR URI&gt;</em>. The URI of an LDPR that is a member of the
-        LDPC. </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-      <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
-      <li>The LDPR is a member of the LDPC</li>
-      <li>The LDPR at &lt;LDPR URI&gt; allows DELETE</li>
-      <li>The LDPR was originally created by the LDPC</li>
-      <li>The LDPC is aware of the member's deletion</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>DELETE &lt;LDPR URI&gt;</li>
-      <li>GET &lt;LDPR URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 DELETE&gt;</em></li>
-      <li> <em> &lt;Response 2 GET&gt;</em></li>
-      <li> <em> &lt;Response 3 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE
-        correct):
-        <ul>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204
-            and &lt;Response 2 GET&gt;.[Status-Line].Status-Code = 404 or 410<strong>
-            </strong></li>
-          <li>or&nbsp;</li>
-          <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except
-            200 and 204)</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (member removed from container)
-        <ul>
-          <li>[message-body] not contains the member identified by &lt;LDPR
-            URI&gt;</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC8" typeof="td:TestCase">
-    <h3><a id="TC-C8">TC-C8. HEAD on an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.6.1 LDPR servers MUST support the HTTP HEAD method.</li>
-      <li>4.6.2 LDPR servers MUST indicate their support for HTTP Methods by
-        responding to a HTTP HEAD request on the LDPR’s URL with the HTTP Method
-        tokens in the HTTP response header “Allow”. </li>
-    </ul>
-    <p><a target="_blank" href="http://tools.ietf.org/html/rfc2616"><em>Hypertext
-          Transfer Protocol -- HTTP/1.1</em></a>:</p>
-    <ul>
-      <li>9.4 The HEAD method is identical to GET except that the server MUST
-        NOT return a message-body in the response.</li>
-    </ul>
-    <h4>Input</h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC </li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>HEAD &lt;LDPC URI&gt;</li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em> &lt;Response 1 HEAD&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 HEAD&gt; (HEAD correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx<strong> </strong></li>
-          <li>[entity-header].Allow exists</li>
-          <li>[message-body] not exists</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <div resource="#TCC9" typeof="td:TestCase">
-    <h3><a id="TC-C9">TC-C9. POST an LDPR on an LDPC</a></h3>
-      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong>
-        <span property="rdfs:label">Raúl García-Castro</span>
-        <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/~rgarcia/#me"/></p>
-      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
-      </p>
-    <h4>Related specification</h4>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>5.4.1 [...] If the resource was created successfully, LDPC servers
-        MUST respond with status code 201 (Created) and the Location header set
-        to the new resource’s URL. [...] </li>
-      <li>5.4.2 After a successful HTTP POST request to a LDPC, the new resource
-        MUST appear as a member of the LDPC until the new resource is deleted or
-        removed by other methods. [...] </li>
-      <li>5.4.4 For servers that support create, LDPC servers MUST create an
-        LDPR from a RDF representation in the request entity body. [...]</li>
-      <li>5.4.5 LDPC servers MUST accept a request entity body with a request
-        header of Content-Type with value of text/turtle. </li>
-    </ul>
-    <h4>Input </h4>
-    <ul>
-      <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
-      <li><em>&lt;LDPR representation&gt;</em>. The representation of the LDPR
-        to be created</li>
-    </ul>
-    <h4>Preconditions</h4>
-    <ul>
-      <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
-      <li>The LDPC at &lt;LDPC URI&gt; allows POST</li>
-      <li>The LDP server does not desire to direct the user agent to retrieve a
-        cacheable resource</li>
-      <li>&lt;LDPR representation&gt; is in text/turtle</li>
-      <li>&lt;LDPR representation&gt; is a valid representation for a resource
-        to be created in the LDPC</li>
-      <li>&lt;LDPR representation&gt; uses null relative URI as the entity in
-        the request body</li>
-    </ul>
-    <h4>Process</h4>
-    <ol>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>POST &lt;LDPC URI&gt;
-        <ul>
-          <li>[entity-header].Content-type = text/turtle</li>
-          <li>[message-body] = &lt;LDPR representation&gt;</li>
-        </ul>
-      </li>
-      <li>GET &lt;LDPC URI&gt;
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-      <li>GET &lt;Response 2 POST&gt;.[response-header].Location
-        <ul>
-          <li>[request-header].Accept = text/turtle</li>
-        </ul>
-      </li>
-    </ol>
-    <h4>Output</h4>
-    <ul>
-      <li> <em><em> &lt;Response 1 GET&gt;</em></em></li>
-      <li><em><em></em>&lt;Response 2 POST&gt;</em></li>
-      <li> <em> &lt;Response 3 GET&gt;</em></li>
-      <li> <em> &lt;Response 4 GET&gt;</em></li>
-    </ul>
-    <h4>Assertions</h4>
-    <ul>
-      <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 1 GET&gt; (container does not have member):
-        <ul>
-          <li>[message-body] does not contain a member identified by
-            &lt;Response 2 POST&gt;.[response-header].Location</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 2 POST&gt; (POST correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 201</li>
-          <li>[response-header].Location exists</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (GET container correct):
-        <ul>
-          <li>[message-body] contains rdf:type ldp:Container</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 3 GET&gt; (container has member):
-        <ul>
-          <li>[message-body] contains a member identified by &lt;Response 2
-            POST&gt;.[response-header].Location</li>
-        </ul>
-      </li>
-      <li>Assert &lt;Response 4 GET&gt; (GET resource correct):
-        <ul>
-          <li>[Status-Line].Status-Code = 2xx</li>
-          <li>[response-header].ETag exists</li>
-          <li>[entity-header].Content-Type = text/turtle</li>
-        </ul>
-      </li>
-    </ul>
-    </div>
-    <hr/>
-    <h2><a id="Feedback">Feedback to recommendation</a></h2>
-    <ul>
-      <li>LDP 1.0. 4.4.1 If HTTP PUT is performed on an existing resource, LDPR
-        servers MUST replace the entire persistent state of the identified
-        resource with the entity representation in the body of the request.
-        <ul>
-          <li>Raúl: Currently there are no restrictions on the representation of
-            resources allowed by a server. Therefore, an LDPR representation
-            submitted by a client may include properties that will be ignored by
-            the server and properties that will not be ignored by the server.
-            Besides, the LDPR representation provided by a server may include
-            properties submitted by the client and properties not managed by the
-            client (e.g., timestamp). Right now it may happen that all the
-            properties in the client representation are ignored and the server
-            representation includes only server managed properties (i.e., the
-            specification does not restrict this).</li>
-          <li> Miguel: Requiring the complete replacement of a resource state
-            with the input representation included on the body of the PUT
-            request implies that all the properties exposed for an LDPR can be
-            freely modified by the client. <br/>
-            While this can be the case for vanilla LDP servers, which don’t take
-            into account the contents of the resources, it does not hold for
-            domain-dependent LDP servers that expose data for whom specific
-            restrictions apply, i.e., certain properties are not under the
-            control of the client. <br/>
-            At the same time, this MUST clause does not align with what is said
-            in the next MAY clause on the same point, which asserts that LDP
-            servers can ignore server managed properties. <br/>
-            My proposal would be to rewrite the clause making clear that only
-            the part of the LDPR state that is under the control of the client
-            will be updated with the contents of the representation, and that it
-            is the responsibility of the LDP Server to define which parts of the
-            representation are under its control. </li>
-        </ul>
-      </li>
-      <li>LDP 1.0. 4.4.2 [...] LDPR servers MUST respond with status code 412
-        (Condition Failed) if ETags fail to match if there are no other errors
-        with the request.
-        <ul>
-          <li>Miguel: There are other alternatives for using ETags apart from
-            using the If-Match header, i.e., If-None-Match header. The
-            specification should be clear about this, either disallowing its
-            usage, advising against its usage or allowing its usage. </li>
-        </ul>
-      </li>
-      <li>LDP 1.0. 4.5.1 LDPR servers MUST remove the resource identified by the
-        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
-        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
-        status code.
-        <ul>
-          <li>Raúl: A successful HTTP DELETE request (i.e., 2xx) does not imply
-            that the resource has been deleted, the request may be accepted
-            (i.e., status code 202) but not enacted.</li>
-          <li>Miguel: Does the LDP specification want to allow any other status
-            code for the DELETE operation beyond the HTTP/1.1 recommended 200,
-            202, and 204? The other status codes do not make sense, and as the
-            HTTP/1.1 specification does not enforce but recommend these three,
-            it might be worthy making this a strong requirement in LDP.</li>
-          <li>Miguel: The second MUST clause implies that URIs will not be
-            reusable. This has strong implications and should be clarified
-            somewhere else in the specification.</li>
-        </ul>
-      </li>
-      <li>LDP 1.0. 4.6.1 LDPR servers MUST support the HTTP HEAD method.
-        <ul>
-          <li>Miguel: The HEAD method has been confused with the OPTIONS one. <br/>
-            According to section 9.4 in the HTTP/1.1 specification, the HEAD
-            method “is identical to GET except that the server MUST NOT return a
-            message-body in the response. The metainformation contained in the
-            HTTP headers in response to a HEAD request SHOULD be identical to
-            the information sent in response to a GET request. This method can
-            be used for obtaining metainformation about the entity implied by
-            the request without transferring the entity-body itself. This method
-            is often used for testing hypertext links for validity,
-            accessibility, and recent modification”. <br/>
-            In contrast, according to section 9.2 of the same specification, the
-            OPTIONS method “represents a request for information about the
-            communication options available on the request/response chain
-            identified by the Request-URI. This method allows the client to
-            determine the options and/or requirements associated with a
-            resource, or the capabilities of a server, without implying a
-            resource action or initiating a resource retrieval”. </li>
-          <li>Miguel: Given the point before, point 4.6.2 should be also updated
-            accordingly.</li>
-        </ul>
-      </li>
-      <li>The current specification does not impose any absolute (MUST)
-        restriction on LDPR representations. Therefore, "almost" any server
-        returning text/turtle and satisfying some other protocol restrictions
-        would be an LDP-conformant server. The proposal is to require, similarly
-        as for LDPCs, that LDPR representations are typed (i.e., "The
-        representation of a LDPR MUST have rdf:type of ldp:Resource, but it MAY
-        have additional rdf:types."). One advantage of having this restriction
-        is that a client can discover whether the resource is in an LDP server
-        or not; if not, no one ensures the client that other resources appearing
-        in the representation can be dereferenced and so on.</li>
-    </ul>
-    <h3>MUSTs currently not tested</h3>
-    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data
-            Platform 1.0</a></em>:</em></p>
-    <ul>
-      <li>4.4.1 If HTTP PUT is performed on an existing resource, LDPR servers
-        MUST replace the entire persistent state of the identified resource with
-        the entity representation in the body of the request. </li>
-      <li>5.4.7 In RDF representations, LDPC servers MUST interpret the null
-        relative URI for the subject of triples in the LDPR representation in
-        the request entity body as referring to the entity in the request body.
-        [...]</li>
-    </ul>
-    <h2><a id="EditorNotes">Editor TODOs and notes</a></h2>
-    <ul>
-      <li>Add tests for MUSTs related to containers when the issue about
-        aggregation and composition is solved</li>
-      <li>Include RDFa annotations</li>
-      <li>Include a section describing the RDF Schema for test suite and results</li>
-      <li>Include a section describing how to describe results</li>
-      <li>Format document as a specification</li>
-    </ul>
-  </body>
-</html>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.1.dtd">
<html
  xmlns="http://www.w3.org/1999/xhtml"
prefix="td: http://www.w3.org/2006/03/test-description# tn: http://ldp.example.org/NewTestDefinitions# ht: http://www.w3.org/2011/http#">
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type" />
    <!--    rgarcia: Had to uncomment it so it can read the local image
<base href="http://www.w3.org/TR/ldp/TestCases">-->
    <title>LDP Test Cases</title>
    <link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css" charset="utf-8" />
  </head>
  <body>
    <p> <a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home"
          alt="W3C"
          height="48"
          width="72" /></a>
    </p>
    <h1>Linked Data Platform 1.0 Test Cases</h1>
    <h2>Table of Contents</h2>
    <p><a href="#Introduction"><strong>Introduction</strong></a></p>
    <p><a href="#DesignIssues"><strong>Design issues</strong></a></p>
    <ul>
      <li><a href="#GenericVsDomain">Generic vs domain-specific servers</a></li>
      <li><a href="#ProtocolVsData">Protocol evaluation vs data evaluation</a></li>
      <li><a href="#Coverage">Test suite coverage</a></li>
      <li><a href="#ResultVsAssertion">Separation of results and assertions</a></li>
      <li><a href="#Traceability">Traceability of test cases</a></li>
    </ul>
    <p><a href="#TestingProcess"><strong>Testing process</strong></a></p>
    <p><a href="#DescribingArtifacts"><strong>Describing testing artifacts in RDF</strong></a></p>
    <ul>
      <li><a href="#Namespaces">Namespaces used</a></li>
      <li><a href="#TestSuiteDescription">Test suite description</a></li>
      <li><a href="#TestCaseDescription">Test case description</a></li>
      <li><a href="#ExecutionReportDescription">Execution report description</a></li>
      <li><a href="#AssertionDescription">Test case assertion description</a></li>
    </ul>
    <p><a href="#Tests-LDPRs"><strong>Tests for LDPRs</strong></a>:</p>
    <ul>
      <li><a href="#TC-R1">TC-R1. GET on an LDPR</a></li>
      <li><a href="#TC-R2">TC-R2. GET on an LDPR without content type</a></li>
      <li><a href="#TC-R3">TC-R3. GET on a non-existing LDPR</a></li>
      <li><a href="#TC-R4">TC-R4. PUT on an LDPR</a></li>
      <li><a href="#TC-R5">TC-R5. PUT on an LDPR without matching ETags</a></li>
      <li><a href="#TC-R6">TC-R6. DELETE on an LDPR</a></li>
      <li><a href="#TC-R7">TC-R7. HEAD on an LDPR</a></li>
    </ul>
    <p><a href="#Tests-LDPCs"><strong>Tests for LDPCs</strong></a>:</p>
    <ul>
      <li><a href="#TC-C1">TC-C1. GET on an LDPC</a></li>
      <li><a href="#TC-C2">TC-C2. GET on an LDPC without content type</a></li>
      <li><a href="#TC-C3">TC-C3. GET on a non-existing LDPC</a></li>
      <li><a href="#TC-C4">TC-C4. PUT on an LDPC</a></li>
      <li><a href="#TC-C5">TC-C5. PUT on an LDPC without matching ETags</a></li>
      <li><a href="#TC-C6">TC-C6. DELETE on an LDPC</a></li>
      <li><a href="#TC-C7">TC-C7. DELETE on an LDPR in an LDPC</a></li>
      <li><a href="#TC-C8">TC-C8. HEAD on an LDPC</a></li>
      <li><a href="#TC-C9">TC-C9. POST an LDPR on an LDPC</a></li>
    </ul>
    <p><a href="#Feedback">Feedback to recommendation</a></p>
    <p><a href="#EditorNotes">Editor TODOs and notes</a></p>
    <hr/>
    <h2><a id="Introduction">Introduction</a></h2>
    <p>This document describes...</p>
    <h2><a id="DesignIssues">Design issues </a></h2>
    <h3><a id="GenericVsDomain">Generic vs domain-specific servers</a></h3>
    <p>There will be two types of systems implementing the LDP specification:</p>
    <ul>
      <li>Generic RDF storage systems that allow interacting with their resources by means of the LDP specification.
        These servers do not impose any restriction on LDPRs.</li>
      <li>Systems exposing their data using the LDP specification. These systems impose restrictions on LDPRs since they
        have an underlying business logic and data model.</li>
    </ul>
    <p>In order to cover both types of systems, we do not provide concrete input data in the test suite. It is up to the
      evaluator to define concrete input data for a certain system. Evaluators must include these input data along with
      the results when reporting the results of a certain system.</p>
    <h3><a id="ProtocolVsData">Protocol evaluation vs data evaluation</a></h3>
    <p>The LDP specification includes restrictions on LDP servers at the protocol level and at the data level.
      Currently, the restrictions at the data level are minimal and servers are not forced to have a concrete behaviour
      when processing LDPR representations. Therefore, the test suite evaluates LDP servers at a protocol level; the
      only exception is in the case of LDPCs, since they are required to include an rdf.type statement in their
      representation.</p>
    <p>It is out of the scope of the test suite to test LDP servers in terms of the restrictions imposed by their
      underlying data models.</p>
    <h3><a id="Coverage">Test suite coverage</a></h3>
    <p>This test suite only covers those absolute requirements present in the LDP specification (as stated by the use of
      the MUST key word). This set of absolute requirements identifies the core subset of the LDP specification, LDP
      Core from now on, and any LDP server that satisfies these absolute requirements will be an LDP Core conformant
      server.</p>
    <p>It is out of the scope of this test suite to test other levels of conformance in terms of optional capabilities
      (e.g., paging).</p>
    <h3><a id="ResultVsAssertion">Separation of results and assertions</a></h3>
    <p>Instead of defining expected results for tests, which will be dependent on concrete implementations, we have
      defined the assertions to be made over test results. In order to successfully pass a test all the assertions must
      be satisfied.</p>
    <p>Separating test outputs and assertions has other benefits: it makes simpler to report tool results and assertions
      can be made by a third party.</p>
    <h3><a id="Traceability">Traceability of test cases</a></h3>
    <p>Any test case and its produced results and assertions should be related to those documents that are relevant for
      it (e.g., specifications, uses cases, etc.).</p>
    <h2><a id="TestingProcess">Testing process</a></h2>
    <p>The LDP Test Cases are defined in this same page, which is annotated using RDFa so that it can be consumed both by
    persons and machines. The testing process is composed of two steps, depicted in the figure below.</p>
    <ol>
      <li>The person or agent in charge of executing the test cases in a concrete LDP server will take the test case
        definitions and run every test case on the LDP server. It is recommended (but not compulsory) that test
        execution is automated. The execution of test cases must produce a test execution report for the LDP server, in
        RDF format, that contains for every test case the concrete inputs used during its execution and the produced
        outputs. The test execution report must be available in the Web.</li>
      <li>A validator software will take all the LDP server execution reports and, according to the test inputs and
        outputs in them, will assert whether test cases are passed or not. The validator will generate an implementation
        report that includes the results of all the LDP servers and is annotated using RDFa.</li>
    </ol>
    <p>
    <object data="TestingProcess.svg" type="image/svg+xml">Your browser does not support SVG.</object>
    </p>
    <h2><a id="DescribingArtifacts">Describing testing artifacts in RDF</a></h2>
    <h3><a id="Namespaces">Namespaces used</a></h3>
    <p>The following vocabularies are reused for describing the testing artifacts: DOAP (<em>doap</em>), Dublin Core (<em>dc</em>),
+      FOAF (<em>foa</em><em>f</em>), HTTP Vocabulary in RDF (<em>ht</em>), and W3C Test Metadata (<em>td</em>).</p>
    <p>All the new required entities that are not covered by those vocabularies have been defined under a new namespace
      (<em>tn</em>). Besides, the LDP test cases have been defined under their own namespace (<em>ldptc</em>).</p>
    <p>Next we present the definition of these namespaces and of all the namespaces used in the examples.</p>
    <pre>cnt: &lt;http://www.w3.org/2011/content#&gt; 
dc: &lt;http://purl.org/dc/terms/&gt;
doap: &lt;http://usefulinc.com/ns/doap#&gt;
earl: &lt;http://www.w3.org/ns/earl#&gt;
foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
ht: &lt;http://www.w3.org/2011/http#&gt;
httph: &lt;http://www.w3.org/2011/http-headers#&gt;
ldptc: &lt;http://www.w3.org/TR/ldp/TestCases#&gt; 
td: &lt;http://www.w3.org/2006/03/test-description#&gt;
tn: &lt;http://ldp.example.org/NewTestDefinitions#&gt;</pre>
    <h3><a id="TestSuiteDescription">Test suite description</a></h3>
    <p><em>To be comnpleted</em></p>
    <h3><a id="TestCaseDescription">Test case description</a></h3>
    <p>A <strong>test case</strong> is defined as an instance of the <em>td:TestCase</em> class and it can be further
      described using the following properties:</p>
    <ul>
      <li><em>rdfs:label</em>. The human-readable label of the test.</li>
      <li><em>dc:title</em>. The name of the test.</li>
      <li><em>dc:description</em>. The description of the test.</li>
      <li><em>dc:contributor</em>. The person (<em>foaf:Person</em>) contributing the test.</li>
      <li><em>td:reviewStatus</em>. The status of the test; possible status are: <em>td:unreviewed</em>, <em>td:approved</em>
        or <em>td:rejected</em>.</li>
      <li><em>rdfs:seeAlso</em>. A link to the specification it refers to.</li>
      <li><em>td:specificationReference</em>. An excerpt (<em>tn:E</em><em>xcerpt</em>) of the specification that is
        relevant to the test.</li>
      <li><em>td:input</em>. An input (<em>tn:TestInput</em>) used in the test.</li>
      <li><em>td:precondition</em>. A precondition that must be satisfied before running the test.</li>
      <li><em>tn:output</em>. An output (<em>tn:TestOutput</em>) to be produced by the test.</li>
      <li><em>tn:testProcess</em>. The list of steps (<em>tn:Step</em>) to be performed during the test.</li>
      <li><em>tn:testAssertion</em>. An assertion (<em>tn:TestAssertion</em>) to be performed over the test output.</li>
    </ul>
    <p>A <strong>test input</strong> is defined as an instance of the <em>td:TestInput </em>class and it can be
      further described using the following properties:</p>
    <ul>
      <li><em>dc:title</em>: The name of the test input.</li>
      <li><em>dc:description</em>. The description of the test input.</li>
    </ul>
    <div class="example">
      <div class="example-title">A <strong>test output</strong> is defined as an instance of the <em>td:TestOutput</em>
        class and it can be further described using the following properties:
        <ul>
          <li><em>dc:title</em>: The name of the test output.</li>
          <li><em>dc:description</em>. The description of the test output.</li>
          <li><em>tn:fromStep</em>. The step in the process in which the output is produced.</li>
        </ul>
        <p>In the LDP test cases, test outputs are expected to be HTTP responses (<em>ht:Response</em>).</p>
        <p>A <strong>step</strong> in the test process is defined as an instance of the <em>td:Step</em> class and it
          can be further described using the following properties:</p>
        <ul>
          <li><em>dc:description</em>. The description of the step.</li>
          <li><em>tn:usesInput</em>. A test input used in the step.</li>
        </ul>
        <p>In the LDP test cases, steps are expected to be HTTP requests (<em>ht:Request</em>).</p>
        <p>A <strong>test assertion</strong> is defined as an instance of the <em>td:TestAssertion</em> class and it
          can be further described using the following properties:</p>
        <ul>
          <li><em>dc:title</em>: The name of the test assertion.</li>
          <li><em>dc:description</em>. The description of the test assertion.</li>
          <li><em>tn:outputAsserted</em>. An output under assertion.</li>
        </ul>
        <p>The following example contains the description of one of the LDP test cases.</p>
        <span>Example 1</span></div>
      <pre class="example" id="test-case-example">:TCR1 a td:TestCase;
         rdfs:label "TC-R1";
         dc:title "GET on an LDPR";
         dc:description "Tests making a GET request on an existing LDPR";
         dc:contributor :RaulGarciaCastro;
         td:reviewStatus td:unreviewed;
         rdfs:seeAlso &lt;http://www.w3.org/TR/ldp/&gt;;
         td:specificationReference [
             a tn:Excerpt;
             rdfs:seeAlso &lt;http://www.w3.org/TR/ldp/&gt;;
             tn:includesText "4.1.12 LDPR server responses MUST use entity tags (either weak or strong ones) as response ETag header values.".
           ], 
         	                       [
         	 a tn:Excerpt;
             rdfs:seeAlso &lt;http://www.w3.org/TR/ldp/&gt;;
             tn:includesText "4.2.1 LDPR servers MUST support the HTTP GET Method for LDPRs.".
           ],
         	                       [
         	 a tn:Excerpt;
             rdfs:seeAlso &lt;http://www.w3.org/TR/ldp/&gt;;
             tn:includesText "4.2.2 LDPR servers MUST provide a text/turtle representation of the requested LDPR.".
           ];
         td:input :TCR1-I1-LDPR-URI;
         td:precondition "The LDP server contains an LDPR at &lt;LDPR URI&gt;";
         tn:output :TCR1-RP1-Response-1-GET;
         tn:testProcess (:TCR1-RQ1-GET-LDPR-URI);
         tn:testAssertion :TCR1-A1-Response-1-GET.
         
:RaulGarciaCastro a foaf:Person;
                    rdfs:label "Raúl García-Castro";
                    owl:sameAs &lt;http://delicias.dia.fi.upm.es/~rgarcia/#me&gt;.
                    
:TCR1-I1-LDPR-URI a tn:TestInput;
           dc:title "&lt;LDPR URI&gt;";
           dc:description "The URI of an LDPR".
              
:TCR1-RP1-Response-1-GET a tn:TestOutput;
            a ht:Response;
            tn:fromStep :TCR1-RQ1-GET-LDPR-URI;
            dc:title "&lt;Response 1 GET&gt;";
            dc:description "The response of the GET request in step 1".

:TCR1-RQ1-GET-LDPR-URI a tn:Step;
            a ht:Request;
            dc:description """GET &lt;LDPR URI&gt;
                [request-header].Accept = text/turtle""";
            tn:usesInput :TCR1-I1-LDPR-URI.

:TCR1-A1-Response-1-GET a tn:TestAssertion;
            tn:outputAsserted :TCR1-O1-Response-1-GET;
            dc:title "GET correct";
            dc:description """[Status-Line].Status-Code = 2xx
        [response-header].ETag exists
        [entity-header].Content-Type = text/turtle""".
</pre></div>
    <h3><a id="ExecutionReportDescription">Execution report description</a></h3>
    <p>A <strong>test execution</strong> is defined as an instance of the <em>tn:TestExecution</em> class and it can
      be further described using the following properties:</p>
    <ul>
      <li><em>tn:testExecuted</em>. The test case (<em>td:TestCase</em>) used in the execution.</li>
      <li><em>tn:subjectTested</em>. The subject (<em>doap:Project</em>) tested.</li>
      <li><em>dc:date</em>. The date when the test was executed.</li>
      <li><em>tn:inputUsed</em>. The input value (<em>tn:TestInputValue</em>) used in the execution.</li>
      <li><em>tn:outputProduced</em>. The output value (<em>tn:TestOutputValue</em>) produced in the execution.</li>
    </ul>
    <p>A <strong>test input value</strong> is defined as an instance of the <em>tn:TestInputValue</em> class and it
      can be further described using the following properties:</p>
    <ul>
      <li><em>tn:relatedInput</em>. The input in the test definition (<em>tn:TestInput</em>) for which the value is
        defined.</li>
      <li><em>tn:inputValue</em>. The concrete input defined for the execution.</li>
    </ul>
    <p>A <strong>test output value</strong> is defined as an instance of the <em>tn:TestOutputValue</em> class and it
      can be further described using the following properties:</p>
    <ul>
      <li><em>tn:relatedOutput</em>. The output in the test definition (<em>tn:TestOutput</em>) for which the value is
        defined.</li>
      <li><em>tn:outputValue</em>. The concrete output defined for the execution.</li>
    </ul>
    <p>In the LDP test cases, test output values are expected to be HTTP responses (<em>ht:Response</em>).</p>
    <p>The following example contains the description of one test execution.</p>
    <p><span>Example 2</span> </p>
    <pre class="example" id="execution-report-example">:TCR1-Execution a tn:TestExecution;
                tn:testExecuted ldptc:TCR1;
                tn:subjectTested :SomeServer;
                dc:date "2013-03-30T09:30:10";
                tn:inputUsed [
                  a tn:TestInputValue ;
                  tn:relatedInput :TCR1-I1-LDPR-URI ;
                  tn:inputValue &lt;http://www.example.org/MyResource&gt; .
                ];
                tn:outputProduced [
                  a tn:TestOutputValue ;
                  tn:relatedOutput :TCR1-RP1-Response-1-GET ;
                  tn:outputValue :TCR1-Exec-Response-1-GET .    
                ].

:SomeServer a doap:Project;
            doap:name "Sample server".

:TCR1-Exec-Response-1-GET a ht:Response;
    ht:httpVersion "1.1";
    dc:date "2013-03-30T09:30:10";
    ht:sc &lt;http://www.w3.org/2011/http-statusCodes#OK&gt;;
    ht:statusCodeValue "200";
    ht:reasonPhrase "OK";
    ht:headers (  
      [ 
        a ht:ResponseHeader;
        ht:hdrName httph:etag;
        ht:fieldName "ETag";
        ht:fieldValue "hd73hck43".
      ]
      [ 
        a ht:EntityHeader;
        ht:hdrName httph:content-type;
        ht:fieldName "Content-Type";
        ht:fieldValue "text/turtle; charset=utf-8".
      ]
    ); 
    ht:body [
      a cnt:ContentAsText ;
      cnt:chars """
			@prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;.
			@prefix dc: &lt;http://purl.org/dc/terms/&gt;.
			@prefix ldp: &lt;http://www.w3.org/ns/ldp#&gt;.

			&lt;http://example.org/MyResource&gt;
			   a ldp:Resource;
			   dc:title "My LDP resource".
      """;
      cnt:characterEncoding "UTF-8".       
    ].
</pre>
    <h3><a id="AssertionDescription">Test case assertion description</a></h3>
    <p>An <strong>assertion</strong> is defined as an instance of the <em>earl:Assertion</em> class and it can be
      further described using the following properties:</p>
    <ul>
      <li><em>earl:subject</em>.The subject (<em>doap:Project</em>) asserted.</li>
      <li><em>earl:test</em>. The test case (<em>td:TestCase</em>) to which the assertion refers to.</li>
      <li><em>tn:fromTestExecution</em>. The test execution (<em>td:TestExecution</em>) used in the assertion.</li>
      <li><em>dc:date</em>. The date when the assertion was performed.</li>
      <li><em>earl:assertedBy</em>. The validator (<em>doap:Project</em>) that makes the assertion.</li>
      <li><em><em>earl:mode</em>.</em> The execution mode of the validator. In this case it will always be <em>earl:automatic</em>.
        <em><em></em></em></li>
      <li><em><em></em>earl:result</em>. The outcome value (<em>earl:OutcomeValue</em>) of the assertion.</li>
    </ul>
    <p>The following example contains the description of one test assertion.</p>
    <p><span>Example 3</span> </p>
    <pre class="example" id="test-assertion-example">:TCR1-Assertion-SomeServer a earl:Assertion;
                earl:subject sr:SomeServer;
                earl:test ldptc:TCR1;
                tn:fromTestExecution sr:TCR1-Execution;
                dc:date "2013-03-30T09:30:10";
                earl:assertedBy :Validator;
                earl:mode:  earl:automatic;
                earl:result [
                  a earl:OutcomeValue ;
                  earl:outcome earl:passed .
                ].

:Validator a doap:Project;
            doap:name "Some validator".</pre>
    <h2><a id="Tests-LDPRs"></a>Tests for LDPRs</h2>
    <p>These tests involve only LDPRs.</p>
    <div resource="#TCR1" typeof="td:TestCase">
      <h3><a id="TC-R1"><span property="rdfs:label">TC-R1</span>. <span property="dc:title">GET on an LDPR</span></a></h3>
      <p property="dc:description">Tests making a GET request on an existing LDPR.</p>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl 
+García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><a target="_blank" href="http://www.w3.org/TR/ldp/" property="rdfs:seeAlso">Linked Data Platform 1.0</a>:</em></p>
      <ul>
        <li property="td:specificationReference" typeof="tn:Excerpt">
          <div><span property="tn:includesText">4.1.12 LDPR server responses MUST use entity tags (either weak or strong
              ones) as response ETag header values.</span><span property="rdfs:seeAlso" href="http://www.w3.org/TR/ldp/"></span></div>
        </li>
        <li property="td:specificationReference" typeof="tn:Excerpt">
          <div><span property="tn:includesText">4.2.1 LDPR servers MUST support the HTTP GET Method for LDPRs.</span><span
              property="rdfs:seeAlso"
              href="http://www.w3.org/TR/ldp/"></span></div>
        </li>
        <li property="td:specificationReference" typeof="tn:Excerpt">
          <div><span property="tn:includesText">4.2.2 LDPR servers MUST provide a text/turtle representation of the
              requested LDPR.</span><span property="rdfs:seeAlso" href="http://www.w3.org/TR/ldp/"></span></div>
        </li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li property="td:input" resource="#TCR1-I1-LDPR-URI" typeof="tn:TestInput"><em property="dc:title">&lt;LDPR
            URI&gt;</em>. <span property="dc:description">The URI of an LDPR.</span></li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li property="td:precondition">The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li inlist="" property="tn:testProcess" resource="#TCR1-RQ1-GET-LDPR-URI" typeof="tn:Step ht:Request">
          <div property="dc:description"> GET &lt;LDPR URI&gt;
            <ul>
              <li>[request-header].Accept = text/turtle</li>
            </ul>
          </div>
          <span property="tn:usesInput" resource="#TCR1-I1-LDPR-URI"> </span></li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li property="td:output" resource="#TCR1-RP1-Response-1-GET" typeof="tn:TestOutput ht:Response"> <em property="dc:title">&lt;Response
+            1 GET&gt;</em>. <span property="dc:description">The response of the GET request in step 1.</span> <span property="tn:fromStep"
            resource="#TCR1-RQ1-GET-LDPR-URI">
          </span></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li property="tn:testAssertion" resource="#TCR1-A1-Response-1-GET" typeof="tn:TestAssertion"><div property="tn:outputAsserted"
            resource="TCR1-O1-Response-1-GET">Assert
+  &lt;Response 1 GET&gt; (<span property="dc:title">GET correct</span>):
            <div property="dc:description">
            <ul>
              <li>[Status-Line].Status-Code = 2xx</li>
              <li>[response-header].ETag exists</li>
              <li>[entity-header].Content-Type = text/turtle</li>
            </ul>
            </div>
          </div></li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR2" typeof="td:TestCase">
      <h3><a id="TC-R2">TC-R2. GET on an LDPR without content type</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl
+ García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.2.3 [...] If the client does not indicate a preference, text/turtle MUST be returned. </li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPR URI&gt;</li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR3" typeof="td:TestCase">
      <h3><a id="TC-R3">TC-R3. GET on a non-existing LDPR</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.5.1 LDPR servers MUST remove the resource identified by the Request-URI. After a successful HTTP DELETE, a
          subsequent HTTP GET on the same Request-URI MUST result in a 404 (Not found) or 410 (Gone) status code.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of a non-existing LDPR. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server does not contain an LDPR at &lt;LDPR URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET incorrect):
          <ul>
            <li>[Status-Line].Status-Code = 404 or 410</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR4" typeof="td:TestCase">
      <h3><a id="TC-R4">TC-R4. PUT on an LDPR</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><a target="_blank" href="http://tools.ietf.org/html/rfc2616">Hypertext Transfer Protocol -- HTTP/1.1</a>:</em></p>
      <ul>
        <li>3.11 [...] An entity tag MUST be unique across all versions of all entities associated with a particular
          resource.</li>
      </ul>
      <h4>Input </h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR</li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
        <li>The LDPR at &lt;LDPR URI&gt; allows PUT</li>
        <li>The LDP server allows updating in the LDPR the current representation at &lt;LDPR URI&gt;</li>
        <li>The LDP server does not desire that the request be applied to a different URI</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>PUT &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].If-Match = &lt;Response GET 1&gt;.[response-header].ETag</li>
            <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
          </ul>
        </li>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em>&lt;Response 1 GET&gt;</em></li>
        <li> <em> &lt;Response 2 PUT&gt;</em></li>
        <li> <em> &lt;Response 3 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (LDPR updated):
          <ul>
            <li>[response-header].ETag != &lt;Response 1 GET&gt;.[response-header].ETag</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR5" typeof="td:TestCase">
      <h3><a id="TC-R5">TC-R5. PUT on an LDPR without matching ETags</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.4.2 [...] LDPR servers MUST respond with status code 412 (Condition Failed) if ETags fail to match if
          there are no other errors with the request. </li>
      </ul>
      <h4>Input </h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR</li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
        <li>The LDPR at &lt;LDPR URI&gt; allows PUT</li>
        <li>The LDP server allows updating in the LDPR the current representation at &lt;LDPR URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>PUT &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].If-Match = &lt;Response GET 1&gt;.[response-header].ETag + 'M'</li>
            <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
        <li> <em> &lt;Response 2 PUT&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
          <ul>
            <li>[Status-Line].Status-Code = 412</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR6" typeof="td:TestCase">
      <h3><a id="TC-R6">TC-R6. DELETE on an LDPR</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.5.1 LDPR servers MUST remove the resource identified by the Request-URI. After a successful HTTP DELETE, a
          subsequent HTTP GET on the same Request-URI MUST result in a 404 (Not found) or 410 (Gone) status code.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
        <li>The LDPR at &lt;LDPR URI&gt; allows DELETE</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>DELETE &lt;LDPR URI&gt;</li>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 DELETE&gt;</em></li>
        <li> <em> &lt;Response 2 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE correct):
          <ul>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204 and &lt;Response 2
              GET&gt;.[Status-Line].Status-Code = 404 or 410<strong> </strong></li>
            <li>or&nbsp;</li>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except 200 and 204) </li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCR7" typeof="td:TestCase">
      <h3><a id="TC-R7">TC-R7. HEAD on an LDPR</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.6.1 LDPR servers MUST support the HTTP HEAD method.</li>
        <li>4.6.2 LDPR servers MUST indicate their support for HTTP Methods by responding to a HTTP HEAD request on the
          LDPR’s URL with the HTTP Method tokens in the HTTP response header “Allow”. </li>
      </ul>
      <p><a target="_blank" href="http://tools.ietf.org/html/rfc2616"><em>Hypertext Transfer Protocol -- HTTP/1.1</em></a>:</p>
      <ul>
        <li>9.4 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the
          response.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPR URI&gt;</em>. The URI of an LDPR. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>HEAD &lt;LDPR URI&gt;</li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 HEAD&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 HEAD&gt; (HEAD correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx<strong> </strong></li>
            <li>[entity-header].Allow exists</li>
            <li>[message-body] not exists</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <h2><a id="Tests-LDPCs"></a>Tests for LDPCs</h2>
    <p>These tests involve LDPCs and LDPRs.</p>
    <div resource="#TCC1" typeof="td:TestCase">
      <h3><a id="TC-C1">TC-C1. GET on an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.1.12 LDPR server responses MUST use entity tags (either weak or strong ones) as response ETag header
          values. </li>
        <li>4.2.1 LDPR servers MUST support the HTTP GET Method for LDPRs. </li>
        <li>4.2.2 LDPR servers MUST provide a text/turtle representation of the requested LDPR. </li>
        <li>5.2.7 The representation of a LDPC MUST have rdf:type of ldp:Container, but it MAY have additional
          rdf:types. </li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC2" typeof="td:TestCase">
      <h3><a id="TC-C2">TC-C2. GET on an LDPC without content type</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.2.3 [...] If the client does not indicate a preference, text/turtle MUST be returned. </li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;</li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC3" typeof="td:TestCase">
      <h3><a id="TC-C3">TC-C3. GET on a non-existing LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.5.1 LDPR servers MUST remove the resource identified by the Request-URI. After a successful HTTP DELETE, a
          subsequent HTTP GET on the same Request-URI MUST result in a 404 (Not found) or 410 (Gone) status code.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of a non-existing LDPC. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server does not contain an LDPC at &lt;LDPC URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET incorrect):
          <ul>
            <li>[Status-Line].Status-Code = 404 or 410</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC4" typeof="td:TestCase">
      <h3><a id="TC-C4">TC-C4. PUT on an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><a target="_blank" href="http://tools.ietf.org/html/rfc2616">Hypertext Transfer Protocol -- HTTP/1.1</a>:</em></p>
      <ul>
        <li>3.11 [...] An entity tag MUST be unique across all versions of all entities associated with a particular
          resource.</li>
      </ul>
      <h4>Input </h4>
      <ul>
        <li><em> &lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
        <li>The LDPC at &lt;LDPC URI&gt; allows PUT</li>
        <li>The LDP server allows updating in the LDPC the current representation at &lt;LDPC URI&gt;</li>
        <li>The LDP server does not desire that the request be applied to a different URI</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>PUT &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].If-Match = &lt;Response GET 1&gt;.[response-header].ETag</li>
            <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
          </ul>
        </li>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
        <li> <em> &lt;Response 2 PUT&gt;</em></li>
        <li> <em> &lt;Response 3 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li> Assert &lt;Response 3 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (LDPC updated):
          <ul>
            <li>[response-header].ETag != &lt;Response 1 GET&gt;.[response-header].ETag</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC5" typeof="td:TestCase">
      <h3><a id="TC-C5">TC-C5. PUT on an LDPC without matching ETags</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.4.2 [...] LDPR servers MUST respond with status code 412 (Condition Failed) if ETags fail to match if
          there are no other errors with the request. </li>
      </ul>
      <h4>Input<em> </em></h4>
      <ul>
        <li><em> &lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
        <li>The LDPC at &lt;LDPC URI&gt; allows PUT</li>
        <li>The LDP server allows updating in the LDPC the current representation at &lt;LDPC URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>PUT &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].If-Match = &lt;Response GET 1&gt;.[response-header].ETag + 'M'</li>
            <li>[message-body] = &lt;Response GET 1&gt;.[message-body]</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 GET&gt;</em></li>
        <li> <em> &lt;Response 2 PUT&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 2 PUT&gt; (PUT correct):
          <ul>
            <li>[Status-Line].Status-Code = 412</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC6" typeof="td:TestCase">
      <h3><a id="TC-C6">TC-C6. DELETE on an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.5.1 LDPR servers MUST remove the resource identified by the Request-URI. After a successful HTTP DELETE, a
          subsequent HTTP GET on the same Request-URI MUST result in a 404 (Not found) or 410 (Gone) status code.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
        <li>The LDPC at &lt;LDPC URI&gt; allows DELETE</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>DELETE &lt;LDPC URI&gt;</li>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 DELETE&gt;</em></li>
        <li> <em> &lt;Response 2 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE correct):
          <ul>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204 and &lt;Response 2
              GET&gt;.[Status-Line].Status-Code = 404 or 410<strong> </strong></li>
            <li>or&nbsp;</li>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except 200 and 204) </li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC7" typeof="td:TestCase">
      <h3><a id="TC-C7">TC-C7. DELETE on an LDPR in an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>5.6.1 When a LDPC member resource originally created by the LDPC (for example, one referenced by a
          membership triple) is deleted, and the LDPC server is aware of the member's deletion (for example, the member
          is managed by the same server), the LDPC server MUST also remove it from the LDPC by removing the
          corresponding membership triple. </li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li><em>&lt;LDPC URI&gt;</em>. The URI of an LDPC. </li>
        <li><em>&lt;LDPR URI&gt;</em>. The URI of an LDPR that is a member of the LDPC. </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
        <li>The LDP server contains an LDPR at &lt;LDPR URI&gt;</li>
        <li>The LDPR is a member of the LDPC</li>
        <li>The LDPR at &lt;LDPR URI&gt; allows DELETE</li>
        <li>The LDPR was originally created by the LDPC</li>
        <li>The LDPC is aware of the member's deletion</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>DELETE &lt;LDPR URI&gt;</li>
        <li>GET &lt;LDPR URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 DELETE&gt;</em></li>
        <li> <em> &lt;Response 2 GET&gt;</em></li>
        <li> <em> &lt;Response 3 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 DELETE&gt; &lt;Response 2 GET&gt; (DELETE correct):
          <ul>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 200 or 204 and &lt;Response 2
              GET&gt;.[Status-Line].Status-Code = 404 or 410<strong> </strong></li>
            <li>or&nbsp;</li>
            <li>&lt;Response 1 DELETE&gt;.[Status-Line].Status-Code = 2xx (except 200 and 204)</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (member removed from container)
          <ul>
            <li>[message-body] not contains the member identified by &lt;LDPR URI&gt;</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC8" typeof="td:TestCase">
      <h3><a id="TC-C8">TC-C8. HEAD on an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>4.6.1 LDPR servers MUST support the HTTP HEAD method.</li>
        <li>4.6.2 LDPR servers MUST indicate their support for HTTP Methods by responding to a HTTP HEAD request on the
          LDPR’s URL with the HTTP Method tokens in the HTTP response header “Allow”. </li>
      </ul>
      <p><a target="_blank" href="http://tools.ietf.org/html/rfc2616"><em>Hypertext Transfer Protocol -- HTTP/1.1</em></a>:</p>
      <ul>
        <li>9.4 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the
          response.</li>
      </ul>
      <h4>Input</h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC </li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>HEAD &lt;LDPC URI&gt;</li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em> &lt;Response 1 HEAD&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 HEAD&gt; (HEAD correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx<strong> </strong></li>
            <li>[entity-header].Allow exists</li>
            <li>[message-body] not exists</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <div resource="#TCC9" typeof="td:TestCase">
      <h3><a id="TC-C9">TC-C9. POST an LDPR on an LDPC</a></h3>
      <p property="dc:contributor" resource="#RaulGarciaCastro" typeof="foaf:Person"><strong>Contributor: </strong> <span
          property="rdfs:label">Raúl García-Castro</span> <span property="owl:sameAs" href="http://delicias.dia.fi.upm.es/%7Ergarcia/#me"></span></p>
      <p property="td:reviewStatus" resource="td:unreviewed" typeof="td:ReviewStatus"><strong>Status: </strong>Unreviewed
+        </p>
      <h4>Related specification</h4>
      <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
      <ul>
        <li>5.4.1 [...] If the resource was created successfully, LDPC servers MUST respond with status code 201
          (Created) and the Location header set to the new resource’s URL. [...] </li>
        <li>5.4.2 After a successful HTTP POST request to a LDPC, the new resource MUST appear as a member of the LDPC
          until the new resource is deleted or removed by other methods. [...] </li>
        <li>5.4.4 For servers that support create, LDPC servers MUST create an LDPR from a RDF representation in the
          request entity body. [...]</li>
        <li>5.4.5 LDPC servers MUST accept a request entity body with a request header of Content-Type with value of
          text/turtle. </li>
      </ul>
      <h4>Input </h4>
      <ul>
        <li> <em>&lt;LDPC URI&gt;</em>. The URI of an LDPC</li>
        <li><em>&lt;LDPR representation&gt;</em>. The representation of the LDPR to be created</li>
      </ul>
      <h4>Preconditions</h4>
      <ul>
        <li>The LDP server contains an LDPC at &lt;LDPC URI&gt;</li>
        <li>The LDPC at &lt;LDPC URI&gt; allows POST</li>
        <li>The LDP server does not desire to direct the user agent to retrieve a cacheable resource</li>
        <li>&lt;LDPR representation&gt; is in text/turtle</li>
        <li>&lt;LDPR representation&gt; is a valid representation for a resource to be created in the LDPC</li>
        <li>&lt;LDPR representation&gt; uses null relative URI as the entity in the request body</li>
      </ul>
      <h4>Process</h4>
      <ol>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>POST &lt;LDPC URI&gt;
          <ul>
            <li>[entity-header].Content-type = text/turtle</li>
            <li>[message-body] = &lt;LDPR representation&gt;</li>
          </ul>
        </li>
        <li>GET &lt;LDPC URI&gt;
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
        <li>GET &lt;Response 2 POST&gt;.[response-header].Location
          <ul>
            <li>[request-header].Accept = text/turtle</li>
          </ul>
        </li>
      </ol>
      <h4>Output</h4>
      <ul>
        <li> <em><em> &lt;Response 1 GET&gt;</em></em></li>
        <li><em><em></em>&lt;Response 2 POST&gt;</em></li>
        <li> <em> &lt;Response 3 GET&gt;</em></li>
        <li> <em> &lt;Response 4 GET&gt;</em></li>
      </ul>
      <h4>Assertions</h4>
      <ul>
        <li>Assert &lt;Response 1 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 1 GET&gt; (container does not have member):
          <ul>
            <li>[message-body] does not contain a member identified by &lt;Response 2
              POST&gt;.[response-header].Location</li>
          </ul>
        </li>
        <li>Assert &lt;Response 2 POST&gt; (POST correct):
          <ul>
            <li>[Status-Line].Status-Code = 201</li>
            <li>[response-header].Location exists</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (GET container correct):
          <ul>
            <li>[message-body] contains rdf:type ldp:Container</li>
          </ul>
        </li>
        <li>Assert &lt;Response 3 GET&gt; (container has member):
          <ul>
            <li>[message-body] contains a member identified by &lt;Response 2 POST&gt;.[response-header].Location</li>
          </ul>
        </li>
        <li>Assert &lt;Response 4 GET&gt; (GET resource correct):
          <ul>
            <li>[Status-Line].Status-Code = 2xx</li>
            <li>[response-header].ETag exists</li>
            <li>[entity-header].Content-Type = text/turtle</li>
          </ul>
        </li>
      </ul>
    </div>
    <hr/>
    <h2><a id="Feedback">Feedback to recommendation</a></h2>
    <ul>
      <li>LDP 1.0. 4.4.1 If HTTP PUT is performed on an existing resource, LDPR servers MUST replace the entire
        persistent state of the identified resource with the entity representation in the body of the request.
        <ul>
          <li>Raúl: Currently there are no restrictions on the representation of
            resources allowed by a server. Therefore, an LDPR representation
            submitted by a client may include properties that will be ignored by
            the server and properties that will not be ignored by the server.
            Besides, the LDPR representation provided by a server may include
            properties submitted by the client and properties not managed by the
            client (e.g., timestamp). Right now it may happen that all the
            properties in the client representation are ignored and the server
            representation includes only server managed properties (i.e., the
            specification does not restrict this).</li>
          <li> Miguel: Requiring the complete replacement of a resource state
            with the input representation included on the body of the PUT
            request implies that all the properties exposed for an LDPR can be
            freely modified by the client. <br/>
            While this can be the case for vanilla LDP servers, which don’t take
            into account the contents of the resources, it does not hold for
            domain-dependent LDP servers that expose data for whom specific
            restrictions apply, i.e., certain properties are not under the
            control of the client. <br/>
            At the same time, this MUST clause does not align with what is said
            in the next MAY clause on the same point, which asserts that LDP
            servers can ignore server managed properties. <br/>
            My proposal would be to rewrite the clause making clear that only
            the part of the LDPR state that is under the control of the client
            will be updated with the contents of the representation, and that it
            is the responsibility of the LDP Server to define which parts of the
            representation are under its control. </li>
        </ul>
      </li>
      <li>LDP 1.0. 4.4.2 [...] LDPR servers MUST respond with status code 412
        (Condition Failed) if ETags fail to match if there are no other errors
        with the request.
        <ul>
          <li>Miguel: There are other alternatives for using ETags apart from
            using the If-Match header, i.e., If-None-Match header. The
            specification should be clear about this, either disallowing its
            usage, advising against its usage or allowing its usage. </li>
        </ul>
      </li>
      <li>LDP 1.0. 4.5.1 LDPR servers MUST remove the resource identified by the
        Request-URI. After a successful HTTP DELETE, a subsequent HTTP GET on
        the same Request-URI MUST result in a 404 (Not found) or 410 (Gone)
        status code.
        <ul>
          <li>Raúl: A successful HTTP DELETE request (i.e., 2xx) does not imply
            that the resource has been deleted, the request may be accepted
            (i.e., status code 202) but not enacted.</li>
          <li>Miguel: Does the LDP specification want to allow any other status
            code for the DELETE operation beyond the HTTP/1.1 recommended 200,
            202, and 204? The other status codes do not make sense, and as the
            HTTP/1.1 specification does not enforce but recommend these three,
            it might be worthy making this a strong requirement in LDP.</li>
          <li>Miguel: The second MUST clause implies that URIs will not be
            reusable. This has strong implications and should be clarified
            somewhere else in the specification.</li>
        </ul>
      </li>
      <li>LDP 1.0. 4.6.1 LDPR servers MUST support the HTTP HEAD method.
        <ul>
          <li>Miguel: The HEAD method has been confused with the OPTIONS one. <br/>
            According to section 9.4 in the HTTP/1.1 specification, the HEAD
            method “is identical to GET except that the server MUST NOT return a
            message-body in the response. The metainformation contained in the
            HTTP headers in response to a HEAD request SHOULD be identical to
            the information sent in response to a GET request. This method can
            be used for obtaining metainformation about the entity implied by
            the request without transferring the entity-body itself. This method
            is often used for testing hypertext links for validity,
            accessibility, and recent modification”. <br/>
            In contrast, according to section 9.2 of the same specification, the
            OPTIONS method “represents a request for information about the
            communication options available on the request/response chain
            identified by the Request-URI. This method allows the client to
            determine the options and/or requirements associated with a
            resource, or the capabilities of a server, without implying a
            resource action or initiating a resource retrieval”. </li>
          <li>Miguel: Given the point before, point 4.6.2 should be also updated
            accordingly.</li>
        </ul>
      </li>
      <li>The current specification does not impose any absolute (MUST)
        restriction on LDPR representations. Therefore, "almost" any server
        returning text/turtle and satisfying some other protocol restrictions
        would be an LDP-conformant server. The proposal is to require, similarly
        as for LDPCs, that LDPR representations are typed (i.e., "The
        representation of a LDPR MUST have rdf:type of ldp:Resource, but it MAY
        have additional rdf:types."). One advantage of having this restriction
        is that a client can discover whether the resource is in an LDP server
        or not; if not, no one ensures the client that other resources appearing
        in the representation can be dereferenced and so on.</li>
    </ul>
    <h3>MUSTs currently not tested</h3>
    <p><em><em><a target="_blank" href="http://www.w3.org/TR/ldp/">Linked Data Platform 1.0</a></em>:</em></p>
    <ul>
      <li>4.4.1 If HTTP PUT is performed on an existing resource, LDPR servers
        MUST replace the entire persistent state of the identified resource with
        the entity representation in the body of the request. </li>
      <li>5.4.7 In RDF representations, LDPC servers MUST interpret the null
        relative URI for the subject of triples in the LDPR representation in
        the request entity body as referring to the entity in the request body.
        [...]</li>
    </ul>
    <h2><a id="EditorNotes">Editor TODOs and notes</a></h2>
    <ul>
      <li>Add tests for MUSTs related to containers when the issue about aggregation and composition is solved</li>
      <li>Annotate all tests following the sample RDFa annotation.</li>
      <li>Choose a namespace for the new vocabulary terms and for the test cases</li>
      <li>Include the RDF description of the test suite</li>
      <li>Implement validator</li>
      <li>Format document as a specification</li>
      <li>Check format of examples</li>
      <li>Add references</li>
    </ul>
  </body>
</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Test Cases/TestingProcess.svg	Fri May 10 14:39:52 2013 +0200
@@ -0,0 +1,1227 @@
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="637.7066"
+   height="459.51364"
+   id="svg3651">
+  <defs
+     id="defs3653" />
+  <metadata
+     id="metadata3656">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>LDP testing process</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(-1.1467628,-2.6053673)"
+     id="layer1">
+    <g
+       transform="matrix(0.03543306,0,0,0.03543306,-125.10123,-79.369017)"
+       id="Slide_1_page1"
+       style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round;visibility:visible">
+      <g
+         id="Drawing_2">
+        <path
+           d="m 3774,8338 2682,0 0,2250 -336,322 -2346,0 0,-2572 z"
+           id="path4702"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 6120,10910 87,-322 c 84,46 81,20 249,0 l -336,322 z"
+           id="path4704"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2682"
+           height="2572"
+           x="3775"
+           y="8339"
+           id="rect4706"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4708"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="4650"
+             y="8888"
+             id="text4710">L</text>
+          <text
+             x="4887"
+             y="8888"
+             id="text4712">D</text>
+          <text
+             x="5192"
+             y="8888"
+             id="text4714">P</text>
+          <text
+             x="5467"
+             y="8888"
+             id="text4716" />
+          <text
+             x="4070"
+             y="9395"
+             id="text4718"
+             style="fill:#000000;stroke:none">T</text>
+          <text
+             x="4282"
+             y="9395"
+             id="text4720">e</text>
+          <text
+             x="4519"
+             y="9395"
+             id="text4722">s</text>
+          <text
+             x="4726"
+             y="9395"
+             id="text4724">t</text>
+          <text
+             x="4845"
+             y="9395"
+             id="text4726" />
+          <text
+             x="4963"
+             y="9395"
+             id="text4728">C</text>
+          <text
+             x="5268"
+             y="9395"
+             id="text4730">a</text>
+          <text
+             x="5505"
+             y="9395"
+             id="text4732">s</text>
+          <text
+             x="5717"
+             y="9395"
+             id="text4734">e</text>
+          <text
+             x="5950"
+             y="9395"
+             id="text4736">s</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_3">
+        <path
+           d="m 11033,8595 2585,0 0,1794 -324,257 -2261,0 0,-2051 z"
+           id="path4739"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 13294,10646 84,-257 c 81,37 78,16 240,0 l -324,257 z"
+           id="path4741"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2585"
+           height="2051"
+           x="11033"
+           y="8595"
+           id="rect4743"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4745"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11917"
+             y="9145"
+             id="text4747">L</text>
+          <text
+             x="12154"
+             y="9145"
+             id="text4749">D</text>
+          <text
+             x="12459"
+             y="9145"
+             id="text4751">P</text>
+          <text
+             x="12734"
+             y="9145"
+             id="text4753" />
+          <text
+             x="11492"
+             y="9652"
+             id="text4755"
+             style="fill:#000000;stroke:none">S</text>
+          <text
+             x="11776"
+             y="9652"
+             id="text4757">e</text>
+          <text
+             x="12008"
+             y="9652"
+             id="text4759">r</text>
+          <text
+             x="12148"
+             y="9652"
+             id="text4761">v</text>
+          <text
+             x="12360"
+             y="9652"
+             id="text4763">e</text>
+          <text
+             x="12597"
+             y="9652"
+             id="text4765">r</text>
+          <text
+             x="12737"
+             y="9652"
+             id="text4767" />
+          <text
+             x="12855"
+             y="9652"
+             id="text4769">C</text>
+          <text
+             x="13160"
+             y="9652"
+             id="text4771" />
+          <text
+             x="11397"
+             y="10159"
+             id="text4773"
+             style="fill:#000000;stroke:none">E</text>
+          <text
+             x="11681"
+             y="10159"
+             id="text4775">x</text>
+          <text
+             x="11892"
+             y="10159"
+             id="text4777">e</text>
+          <text
+             x="12125"
+             y="10159"
+             id="text4779">c</text>
+          <text
+             x="12337"
+             y="10159"
+             id="text4781">u</text>
+          <text
+             x="12574"
+             y="10159"
+             id="text4783">t</text>
+          <text
+             x="12688"
+             y="10159"
+             id="text4785">i</text>
+          <text
+             x="12786"
+             y="10159"
+             id="text4787">o</text>
+          <text
+             x="13018"
+             y="10159"
+             id="text4789">n</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_4">
+        <path
+           d="m 18036,8338 3489,0 0,2250 -437,322 -3052,0 0,-2572 z"
+           id="path4792"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 21088,10910 113,-322 c 109,46 105,20 324,0 l -437,322 z"
+           id="path4794"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="3489"
+           height="2572"
+           x="18036"
+           y="8339"
+           id="rect4796"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4798"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="18335"
+             y="8888"
+             id="text4800">I</text>
+          <text
+             x="18454"
+             y="8888"
+             id="text4802">m</text>
+          <text
+             x="18805"
+             y="8888"
+             id="text4804">p</text>
+          <text
+             x="19042"
+             y="8888"
+             id="text4806">l</text>
+          <text
+             x="19135"
+             y="8888"
+             id="text4808">e</text>
+          <text
+             x="19368"
+             y="8888"
+             id="text4810">m</text>
+          <text
+             x="19724"
+             y="8888"
+             id="text4812">e</text>
+          <text
+             x="19956"
+             y="8888"
+             id="text4814">n</text>
+          <text
+             x="20193"
+             y="8888"
+             id="text4816">t</text>
+          <text
+             x="20308"
+             y="8888"
+             id="text4818">a</text>
+          <text
+             x="20545"
+             y="8888"
+             id="text4820">t</text>
+          <text
+             x="20663"
+             y="8888"
+             id="text4822">i</text>
+          <text
+             x="20756"
+             y="8888"
+             id="text4824">o</text>
+          <text
+             x="20994"
+             y="8888"
+             id="text4826">n</text>
+          <text
+             x="21226"
+             y="8888"
+             id="text4828" />
+          <text
+             x="19228"
+             y="9395"
+             id="text4830"
+             style="fill:#000000;stroke:none">r</text>
+          <text
+             x="19368"
+             y="9395"
+             id="text4832">e</text>
+          <text
+             x="19605"
+             y="9395"
+             id="text4834">p</text>
+          <text
+             x="19838"
+             y="9395"
+             id="text4836">o</text>
+          <text
+             x="20075"
+             y="9395"
+             id="text4838">r</text>
+          <text
+             x="20214"
+             y="9395"
+             id="text4840">t</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_5">
+        <path
+           d="m 11033,5499 2585,0 0,1794 -324,257 -2261,0 0,-2051 z"
+           id="path4843"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 13294,7550 84,-257 c 81,37 78,16 240,0 l -324,257 z"
+           id="path4845"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2585"
+           height="2051"
+           x="11033"
+           y="5499"
+           id="rect4847"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4849"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11917"
+             y="6049"
+             id="text4851">L</text>
+          <text
+             x="12154"
+             y="6049"
+             id="text4853">D</text>
+          <text
+             x="12459"
+             y="6049"
+             id="text4855">P</text>
+          <text
+             x="12734"
+             y="6049"
+             id="text4857" />
+          <text
+             x="11502"
+             y="6556"
+             id="text4859"
+             style="fill:#000000;stroke:none">S</text>
+          <text
+             x="11786"
+             y="6556"
+             id="text4861">e</text>
+          <text
+             x="12018"
+             y="6556"
+             id="text4863">r</text>
+          <text
+             x="12158"
+             y="6556"
+             id="text4865">v</text>
+          <text
+             x="12370"
+             y="6556"
+             id="text4867">e</text>
+          <text
+             x="12607"
+             y="6556"
+             id="text4869">r</text>
+          <text
+             x="12747"
+             y="6556"
+             id="text4871" />
+          <text
+             x="12865"
+             y="6556"
+             id="text4873">B</text>
+          <text
+             x="13149"
+             y="6556"
+             id="text4875" />
+          <text
+             x="11397"
+             y="7063"
+             id="text4877"
+             style="fill:#000000;stroke:none">E</text>
+          <text
+             x="11681"
+             y="7063"
+             id="text4879">x</text>
+          <text
+             x="11892"
+             y="7063"
+             id="text4881">e</text>
+          <text
+             x="12125"
+             y="7063"
+             id="text4883">c</text>
+          <text
+             x="12337"
+             y="7063"
+             id="text4885">u</text>
+          <text
+             x="12574"
+             y="7063"
+             id="text4887">t</text>
+          <text
+             x="12688"
+             y="7063"
+             id="text4889">i</text>
+          <text
+             x="12786"
+             y="7063"
+             id="text4891">o</text>
+          <text
+             x="13018"
+             y="7063"
+             id="text4893">n</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_6">
+        <path
+           d="m 11033,2349 2585,0 0,1795 -324,257 -2261,0 0,-2052 z"
+           id="path4896"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 13294,4401 84,-257 c 81,37 78,16 240,0 l -324,257 z"
+           id="path4898"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2585"
+           height="2052"
+           x="11033"
+           y="2350"
+           id="rect4900"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4902"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11917"
+             y="2899"
+             id="text4904">L</text>
+          <text
+             x="12154"
+             y="2899"
+             id="text4906">D</text>
+          <text
+             x="12459"
+             y="2899"
+             id="text4908">P</text>
+          <text
+             x="12734"
+             y="2899"
+             id="text4910" />
+          <text
+             x="11526"
+             y="3406"
+             id="text4912"
+             style="fill:#000000;stroke:none">S</text>
+          <text
+             x="11810"
+             y="3406"
+             id="text4914">e</text>
+          <text
+             x="12042"
+             y="3406"
+             id="text4916">r</text>
+          <text
+             x="12182"
+             y="3406"
+             id="text4918">v</text>
+          <text
+             x="12394"
+             y="3406"
+             id="text4920">e</text>
+          <text
+             x="12631"
+             y="3406"
+             id="text4922">r</text>
+          <text
+             x="12771"
+             y="3406"
+             id="text4924" />
+          <text
+             x="12868"
+             y="3406"
+             id="text4926">A</text>
+          <text
+             x="13126"
+             y="3406"
+             id="text4928" />
+          <text
+             x="11397"
+             y="3913"
+             id="text4930"
+             style="fill:#000000;stroke:none">E</text>
+          <text
+             x="11681"
+             y="3913"
+             id="text4932">x</text>
+          <text
+             x="11892"
+             y="3913"
+             id="text4934">e</text>
+          <text
+             x="12125"
+             y="3913"
+             id="text4936">c</text>
+          <text
+             x="12337"
+             y="3913"
+             id="text4938">u</text>
+          <text
+             x="12574"
+             y="3913"
+             id="text4940">t</text>
+          <text
+             x="12688"
+             y="3913"
+             id="text4942">i</text>
+          <text
+             x="12786"
+             y="3913"
+             id="text4944">o</text>
+          <text
+             x="13018"
+             y="3913"
+             id="text4946">n</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_7">
+        <path
+           d="m 11033,11717 2585,0 0,1794 -324,257 -2261,0 0,-2051 z"
+           id="path4949"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 13294,13768 84,-257 c 81,37 78,16 240,0 l -324,257 z"
+           id="path4951"
+           style="fill:#cccccc;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2585"
+           height="2051"
+           x="11033"
+           y="11717"
+           id="rect4953"
+           style="fill:none;stroke:none" />
+        <g
+           id="g4955"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11917"
+             y="12267"
+             id="text4957">L</text>
+          <text
+             x="12154"
+             y="12267"
+             id="text4959">D</text>
+          <text
+             x="12459"
+             y="12267"
+             id="text4961">P</text>
+          <text
+             x="12734"
+             y="12267"
+             id="text4963" />
+          <text
+             x="11492"
+             y="12774"
+             id="text4965"
+             style="fill:#000000;stroke:none">S</text>
+          <text
+             x="11776"
+             y="12774"
+             id="text4967">e</text>
+          <text
+             x="12008"
+             y="12774"
+             id="text4969">r</text>
+          <text
+             x="12148"
+             y="12774"
+             id="text4971">v</text>
+          <text
+             x="12360"
+             y="12774"
+             id="text4973">e</text>
+          <text
+             x="12597"
+             y="12774"
+             id="text4975">r</text>
+          <text
+             x="12737"
+             y="12774"
+             id="text4977" />
+          <text
+             x="12855"
+             y="12774"
+             id="text4979">D</text>
+          <text
+             x="13160"
+             y="12774"
+             id="text4981" />
+          <text
+             x="11397"
+             y="13281"
+             id="text4983"
+             style="fill:#000000;stroke:none">E</text>
+          <text
+             x="11681"
+             y="13281"
+             id="text4985">x</text>
+          <text
+             x="11892"
+             y="13281"
+             id="text4987">e</text>
+          <text
+             x="12125"
+             y="13281"
+             id="text4989">c</text>
+          <text
+             x="12337"
+             y="13281"
+             id="text4991">u</text>
+          <text
+             x="12574"
+             y="13281"
+             id="text4993">t</text>
+          <text
+             x="12688"
+             y="13281"
+             id="text4995">i</text>
+          <text
+             x="12786"
+             y="13281"
+             id="text4997">o</text>
+          <text
+             x="13018"
+             y="13281"
+             id="text4999">n</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_8">
+        <rect
+           width="1350"
+           height="1268"
+           x="11649"
+           y="14013"
+           id="rect5002"
+           style="fill:none;stroke:none" />
+        <rect
+           width="1350"
+           height="1268"
+           x="11650"
+           y="14014"
+           id="rect5004"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5006"
+           style="font-size:847px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11899"
+             y="14985"
+             id="text5008">…</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_9">
+        <path
+           d="m 14892,8995 c -105,0 -209,104 -209,209 l 0,839 c 0,105 104,210 209,210 l 1959,0 c 105,0 210,-105 210,-210 l 0,-839 c 0,-105 -105,-209 -210,-209 l -1959,0 z"
+           id="path5011"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2378"
+           height="1258"
+           x="14684"
+           y="8996"
+           id="rect5013"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5015"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="15053"
+             y="9793"
+             id="text5017">V</text>
+          <text
+             x="15303"
+             y="9793"
+             id="text5019">a</text>
+          <text
+             x="15540"
+             y="9793"
+             id="text5021">l</text>
+          <text
+             x="15633"
+             y="9793"
+             id="text5023">i</text>
+          <text
+             x="15726"
+             y="9793"
+             id="text5025">d</text>
+          <text
+             x="15963"
+             y="9793"
+             id="text5027">a</text>
+          <text
+             x="16196"
+             y="9793"
+             id="text5029">t</text>
+          <text
+             x="16315"
+             y="9793"
+             id="text5031">o</text>
+          <text
+             x="16552"
+             y="9793"
+             id="text5033">r</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_10">
+        <path
+           d="m 7784,8995 c -105,0 -209,104 -209,209 l 0,839 c 0,105 104,210 209,210 l 1959,0 c 105,0 210,-105 210,-210 l 0,-839 c 0,-105 -105,-209 -210,-209 l -1959,0 z"
+           id="path5036"
+           style="fill:#ffffff;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2378"
+           height="1258"
+           x="7576"
+           y="8996"
+           id="rect5038"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5040"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="7930"
+             y="9793"
+             id="text5042">E</text>
+          <text
+             x="8214"
+             y="9793"
+             id="text5044">x</text>
+          <text
+             x="8425"
+             y="9793"
+             id="text5046">e</text>
+          <text
+             x="8658"
+             y="9793"
+             id="text5048">c</text>
+          <text
+             x="8870"
+             y="9793"
+             id="text5050">u</text>
+          <text
+             x="9107"
+             y="9793"
+             id="text5052">t</text>
+          <text
+             x="9221"
+             y="9793"
+             id="text5054">o</text>
+          <text
+             x="9458"
+             y="9793"
+             id="text5056">r</text>
+        </g>
+      </g>
+      <g
+         id="g5058">
+        <path
+           d="m 6456,9622 561,0 0,5 306,0"
+           id="path5060"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 7577,9627 -318,159 0,-318 318,159 z"
+           id="Drawing_11_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5063">
+        <path
+           d="m 9953,9622 541,0 0,-5 286,0"
+           id="path5065"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 11034,9617 -318,159 0,-318 318,159 z"
+           id="Drawing_12_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5068">
+        <path
+           d="m 8767,8054 0,344 5,0 0,344"
+           id="path5070"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 8767,7800 159,318 -318,0 159,-318 z"
+           id="Drawing_13_0"
+           style="fill:#000000;stroke:none" />
+        <path
+           d="m 8772,8996 -159,-318 318,0 -159,318 z"
+           id="Drawing_13_1"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5074">
+        <path
+           d="m 13616,9618 534,0 0,5 280,0"
+           id="path5076"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 14684,9623 -318,159 0,-318 318,159 z"
+           id="Drawing_14_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5079">
+        <path
+           d="m 17066,9622 486,0 0,5 231,0"
+           id="path5081"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 18037,9627 -318,159 0,-318 318,159 z"
+           id="Drawing_15_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5084">
+        <path
+           d="m 13617,6524 383,0 0,3095 430,0"
+           id="path5086"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 14684,9619 -318,159 0,-318 318,159 z"
+           id="Drawing_16_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5089">
+        <path
+           d="m 13617,3376 383,0 0,6246 430,0"
+           id="path5091"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 14684,9622 -318,159 0,-318 318,159 z"
+           id="Drawing_17_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="g5094">
+        <path
+           d="m 13617,12742 383,0 0,-3120 430,0"
+           id="path5096"
+           style="fill:none;stroke:#000000" />
+        <path
+           d="m 14684,9622 -318,159 0,-318 318,159 z"
+           id="Drawing_18_0"
+           style="fill:#000000;stroke:none" />
+      </g>
+      <g
+         id="Drawing_19">
+        <rect
+           width="3123"
+           height="759"
+           x="3563"
+           y="10949"
+           id="rect5100"
+           style="fill:none;stroke:none" />
+        <rect
+           width="3123"
+           height="759"
+           x="3563"
+           y="10949"
+           id="rect5102"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5104"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="3814"
+             y="11497"
+             id="text5106">H</text>
+          <text
+             x="4119"
+             y="11497"
+             id="text5108">T</text>
+          <text
+             x="4377"
+             y="11497"
+             id="text5110">M</text>
+          <text
+             x="4728"
+             y="11497"
+             id="text5112">L</text>
+          <text
+             x="4965"
+             y="11497"
+             id="text5114">+</text>
+          <text
+             x="5211"
+             y="11497"
+             id="text5116" />
+          <text
+             x="5330"
+             y="11497"
+             id="text5118">R</text>
+          <text
+             x="5634"
+             y="11497"
+             id="text5120">D</text>
+          <text
+             x="5939"
+             y="11497"
+             id="text5122">F</text>
+          <text
+             x="6197"
+             y="11497"
+             id="text5124">a</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_20">
+        <rect
+           width="3123"
+           height="759"
+           x="18274"
+           y="10949"
+           id="rect5127"
+           style="fill:none;stroke:none" />
+        <rect
+           width="3123"
+           height="759"
+           x="18274"
+           y="10949"
+           id="rect5129"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5131"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="18525"
+             y="11497"
+             id="text5133">H</text>
+          <text
+             x="18830"
+             y="11497"
+             id="text5135">T</text>
+          <text
+             x="19088"
+             y="11497"
+             id="text5137">M</text>
+          <text
+             x="19439"
+             y="11497"
+             id="text5139">L</text>
+          <text
+             x="19676"
+             y="11497"
+             id="text5141"
+             style="fill:#000000;stroke:none">+</text>
+          <text
+             x="19922"
+             y="11497"
+             id="text5143" />
+          <text
+             x="20040"
+             y="11497"
+             id="text5145">R</text>
+          <text
+             x="20345"
+             y="11497"
+             id="text5147">D</text>
+          <text
+             x="20650"
+             y="11497"
+             id="text5149">F</text>
+          <text
+             x="20908"
+             y="11497"
+             id="text5151">a</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_21">
+        <rect
+           width="1371"
+           height="759"
+           x="11677"
+           y="10645"
+           id="rect5154"
+           style="fill:none;stroke:none" />
+        <rect
+           width="1371"
+           height="759"
+           x="11677"
+           y="10645"
+           id="rect5156"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5158"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11928"
+             y="11193"
+             id="text5160">R</text>
+          <text
+             x="12233"
+             y="11193"
+             id="text5162">D</text>
+          <text
+             x="12538"
+             y="11193"
+             id="text5164">F</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_22">
+        <rect
+           width="1371"
+           height="759"
+           x="11677"
+           y="13767"
+           id="rect5167"
+           style="fill:none;stroke:none" />
+        <rect
+           width="1371"
+           height="759"
+           x="11677"
+           y="13767"
+           id="rect5169"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5171"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11928"
+             y="14315"
+             id="text5173">R</text>
+          <text
+             x="12233"
+             y="14315"
+             id="text5175">D</text>
+          <text
+             x="12538"
+             y="14315"
+             id="text5177">F</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_23">
+        <rect
+           width="1371"
+           height="759"
+           x="11713"
+           y="7536"
+           id="rect5180"
+           style="fill:none;stroke:none" />
+        <rect
+           width="1371"
+           height="759"
+           x="11713"
+           y="7536"
+           id="rect5182"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5184"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11964"
+             y="8084"
+             id="text5186">R</text>
+          <text
+             x="12269"
+             y="8084"
+             id="text5188">D</text>
+          <text
+             x="12574"
+             y="8084"
+             id="text5190">F</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_24">
+        <rect
+           width="1371"
+           height="759"
+           x="11713"
+           y="4401"
+           id="rect5193"
+           style="fill:none;stroke:none" />
+        <rect
+           width="1371"
+           height="759"
+           x="11713"
+           y="4401"
+           id="rect5195"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5197"
+           style="font-size:423px;font-style:italic;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="11964"
+             y="4949"
+             id="text5199">R</text>
+          <text
+             x="12269"
+             y="4949"
+             id="text5201">D</text>
+          <text
+             x="12574"
+             y="4949"
+             id="text5203">F</text>
+        </g>
+      </g>
+      <g
+         id="Drawing_25">
+        <rect
+           width="2202"
+           height="1801"
+           x="7600"
+           y="6000"
+           id="rect5206"
+           style="fill:none;stroke:none" />
+        <path
+           d="m 7600,6000 2201,0 0,1800 -2201,0 0,-1800 z m 166,166 1868,0 0,1468 -1868,0 0,-1468 z"
+           id="path5208"
+           style="fill:#ffffff;stroke:none" />
+        <path
+           d="m 7600,6000 2201,0 0,1800 -2201,0 0,-1800 z"
+           id="path5210"
+           style="fill:none;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <path
+           d="m 7766,6166 1868,0 0,1468 -1868,0 0,-1468 z"
+           id="path5212"
+           style="fill:none;stroke:#000000;stroke-width:71;stroke-linejoin:round" />
+        <rect
+           width="2201"
+           height="1801"
+           x="7600"
+           y="6000"
+           id="rect5214"
+           style="fill:none;stroke:none" />
+        <g
+           id="g5216"
+           style="font-size:423px;font-style:normal;font-weight:400;fill:#000000;stroke:none;font-family:Arial">
+          <text
+             x="8292"
+             y="6581"
+             id="text5218">L</text>
+          <text
+             x="8529"
+             y="6581"
+             id="text5220">D</text>
+          <text
+             x="8834"
+             y="6581"
+             id="text5222">P</text>
+          <text
+             x="9109"
+             y="6581"
+             id="text5224" />
+          <text
+             x="8078"
+             y="7052"
+             id="text5226"
+             style="fill:#000000;stroke:none">S</text>
+          <text
+             x="8362"
+             y="7052"
+             id="text5228">e</text>
+          <text
+             x="8594"
+             y="7052"
+             id="text5230">r</text>
+          <text
+             x="8734"
+             y="7052"
+             id="text5232">v</text>
+          <text
+             x="8946"
+             y="7052"
+             id="text5234">e</text>
+          <text
+             x="9183"
+             y="7052"
+             id="text5236">r</text>
+          <text
+             x="9323"
+             y="7052"
+             id="text5238" />
+          <text
+             x="8548"
+             y="7523"
+             id="text5240"
+             style="fill:#000000;stroke:none">C</text>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>