--- a/TR/NOTE-ldp-primer-20150421/Overview.html Mon May 11 15:43:28 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1649 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" prefix="bibo: http://purl.org/ontology/bibo/ w3p: http://www.w3.org/2001/02pd/rec54#" lang="en" dir="ltr" typeof="bibo:Document "><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta lang="" property="dc:language" content="en">
-
- <title>Linked Data Platform 1.0 Primer</title>
- <!-- Changed by: , 25-Sep-2014 -->
- <style type="text/css">
- div.syntaxmenu {
- border: 1px dotted black;
- padding: 0 0 0 0.5em;
- margin: 0em;
- }
- div.code {
- font-family: monospace;
- font-size: 110%;
- }
- th {
- text-align: left;
- }
- td {
- vertical-align: top;
- padding-right: 2em;
- }
- td.col1 {
- width: 300px;
- }
- </style>
- <script type="text/javascript">
- var displayed = [];
- displayed["turtle"] = 1;
- displayed["jsonld"] = 0;
-
- function primerOnLoad() {
- setTimeout(function () {
- display('turtle', '');
- set_display_by_id('hide-ts', '');
- set_display_by_id('show-ts', 'none');
- display('jsonld', 'none');
- set_display_by_id('hide-js', 'none');
- set_display_by_id('show-js', '');
- }, 3000)
- }
-
- function display(syntax, status) {
- var howmany = 0;
- if (status == 'none') {
- displayed[syntax] = 0;
- } else {
- displayed[syntax] = 1;
- }
- for (i in displayed) {
- howmany = howmany + displayed[i];
- }
- set_display_by_class('div', syntax, status);
- if (howmany == 1) {
- set_display_by_class('b', 'syntax-head', 'none');
- } else {
- set_display_by_class('b', 'syntax-head', '');
- }
- }
-
- function getElementsByClassName(oElm, strTagName, oClassNames) {
- var arrElements = (!(!(strTagName == "*") || !(oElm.all))) ? oElm.all : oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- var arrRegExpClassNames = new Array();
- if (typeof oClassNames == "object") {
- for (var i = 0; !(i >= oClassNames.length); i++) { /*>*/
- arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
- }
- } else {
- arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
- }
- var oElement;
- var bMatchesAll;
- for (var j = 0; !(j >= arrElements.length); j++) { /*>*/
- oElement = arrElements[j];
- bMatchesAll = true;
- for (var k = 0; !(k >= arrRegExpClassNames.length); k++) { /*>*/
- if (!arrRegExpClassNames[k].test(oElement.className)) {
- bMatchesAll = false;
- break;
- }
- }
- if (bMatchesAll) {
- arrReturnElements.push(oElement);
- }
- }
- return (arrReturnElements)
- }
-
- function set_display_by_class(el, cls, newValue) {
- var e = getElementsByClassName(document, el, cls);
- if (e != null) {
- for (var i = 0; !(i >= e.length); i++) {
- e[i].style.display = newValue;
- }
- }
- }
-
- function set_display_by_id(id, newValue) {
- var e = document.getElementById(id);
- if (e != null) {
- e.style.display = newValue;
- }
- }
- </script>
-
-
-<style>/*****************************************************************
- * ReSpec 3 CSS
- * Robin Berjon - http://berjon.com/
- *****************************************************************/
-
-/* --- INLINES --- */
-em.rfc2119 {
- text-transform: lowercase;
- font-variant: small-caps;
- font-style: normal;
- color: #900;
-}
-
-h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
-h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
- border: none;
-}
-
-dfn {
- font-weight: bold;
-}
-
-a.internalDFN {
- color: inherit;
- border-bottom: 1px solid #99c;
- text-decoration: none;
-}
-
-a.externalDFN {
- color: inherit;
- border-bottom: 1px dotted #ccc;
- text-decoration: none;
-}
-
-a.bibref {
- text-decoration: none;
-}
-
-cite .bibref {
- font-style: normal;
-}
-
-code {
- color: #C83500;
-}
-
-/* --- TOC --- */
-.toc a, .tof a {
- text-decoration: none;
-}
-
-a .secno, a .figno {
- color: #000;
-}
-
-ul.tof, ol.tof {
- list-style: none outside none;
-}
-
-.caption {
- margin-top: 0.5em;
- font-style: italic;
-}
-
-/* --- TABLE --- */
-table.simple {
- border-spacing: 0;
- border-collapse: collapse;
- border-bottom: 3px solid #005a9c;
-}
-
-.simple th {
- background: #005a9c;
- color: #fff;
- padding: 3px 5px;
- text-align: left;
-}
-
-.simple th[scope="row"] {
- background: inherit;
- color: inherit;
- border-top: 1px solid #ddd;
-}
-
-.simple td {
- padding: 3px 10px;
- border-top: 1px solid #ddd;
-}
-
-.simple tr:nth-child(even) {
- background: #f0f6ff;
-}
-
-/* --- DL --- */
-.section dd > p:first-child {
- margin-top: 0;
-}
-
-.section dd > p:last-child {
- margin-bottom: 0;
-}
-
-.section dd {
- margin-bottom: 1em;
-}
-
-.section dl.attrs dd, .section dl.eldef dd {
- margin-bottom: 0;
-}
-
-@media print {
- .removeOnSave {
- display: none;
- }
-}
-</style><style>/* --- EXAMPLES --- */
-div.example-title {
- min-width: 7.5em;
- color: #b9ab2d;
-}
-div.example-title span {
- text-transform: uppercase;
-}
-aside.example, div.example, div.illegal-example {
- padding: 0.5em;
- margin: 1em 0;
- position: relative;
- clear: both;
-}
-div.illegal-example { color: red }
-div.illegal-example p { color: black }
-aside.example, div.example {
- padding: .5em;
- border-left-width: .5em;
- border-left-style: solid;
- border-color: #e0cb52;
- background: #fcfaee;
-}
-
-aside.example div.example {
- border-left-width: .1em;
- border-color: #999;
- background: #fff;
-}
-aside.example div.example div.example-title {
- color: #999;
-}
-</style><style>/* --- ISSUES/NOTES --- */
-div.issue-title, div.note-title , div.warning-title {
- padding-right: 1em;
- min-width: 7.5em;
- color: #b9ab2d;
-}
-div.issue-title { color: #e05252; }
-div.note-title { color: #2b2; }
-div.warning-title { color: #f22; }
-div.issue-title span, div.note-title span, div.warning-title span {
- text-transform: uppercase;
-}
-div.note, div.issue, div.warning {
- margin-top: 1em;
- margin-bottom: 1em;
-}
-.note > p:first-child, .issue > p:first-child, .warning > p:first-child { margin-top: 0 }
-.issue, .note, .warning {
- padding: .5em;
- border-left-width: .5em;
- border-left-style: solid;
-}
-div.issue, div.note , div.warning {
- padding: 1em 1.2em 0.5em;
- margin: 1em 0;
- position: relative;
- clear: both;
-}
-span.note, span.issue, span.warning { padding: .1em .5em .15em; }
-
-.issue {
- border-color: #e05252;
- background: #fbe9e9;
-}
-.note {
- border-color: #52e052;
- background: #e9fbe9;
-}
-
-.warning {
- border-color: #f11;
- border-right-width: .2em;
- border-top-width: .2em;
- border-bottom-width: .2em;
- border-style: solid;
- background: #fbe9e9;
-}
-
-.warning-title:before{
- content: "⚠"; /*U+26A0 WARNING SIGN*/
- font-size: 3em;
- float: left;
- height: 100%;
- padding-right: .3em;
- vertical-align: top;
- margin-top: -0.5em;
-}
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-WG-NOTE"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
-
-<body onload="primerOnLoad()" class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
- <p>
-
-
- <a href="http://www.w3.org/"><img height="48" width="72" alt="W3C" src="http://www.w3.org/Icons/w3c_home"/></a>
-
-
- </p>
- <h1 class="title p-name" id="title" property="dcterms:title">Linked Data Platform 1.0 Primer</h1>
-
- <h2 id="w3c-working-group-note-21-april-2015"><abbr title="World Wide Web Consortium">W3C</abbr> Working Group Note <time property="dcterms:issued" class="dt-published" datetime="2015-04-21">21 April 2015</time></h2>
- <dl>
-
- <dt>This version:</dt>
- <dd><a class="u-url" href="http://www.w3.org/TR/2015/NOTE-ldp-primer-20150421/">http://www.w3.org/TR/2015/NOTE-ldp-primer-20150421/</a></dd>
- <dt>Latest published version:</dt>
- <dd><a href="http://www.w3.org/TR/ldp-primer/">http://www.w3.org/TR/ldp-primer/</a></dd>
-
-
- <dt>Latest editor's draft:</dt>
- <dd><a href="http://www.w3.org/2012/ldp/hg/ldp-primer/ldp-primer.html">http://www.w3.org/2012/ldp/hg/ldp-primer/ldp-primer.html</a></dd>
-
-
-
-
-
-
- <dt>Previous version:</dt>
- <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2014/WD-ldp-primer-20140626/">http://www.w3.org/TR/2014/WD-ldp-primer-20140626/</a></dd>
-
-
- <dt>Editors:</dt>
- <dd class="p-author h-card vcard" property="bibo:editor" resource="_:editor0"><span property="rdf:first" typeof="foaf:Person"><meta property="foaf:name" content="Nandana Mihindukulasooriya"><a class="u-url url p-name fn" property="foaf:homepage" href="http://mayor2.dia.fi.upm.es/oeg-upm/index.php/en/universitystaff/290-nandana">Nandana Mihindukulasooriya</a>, <a property="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.oeg-upm.net/">Ontology Engineering Group, Universidad Politécnica de Madrid</a></span>
-<span property="rdf:rest" resource="_:editor1"></span>
-</dd>
-<dd class="p-author h-card vcard" resource="_:editor1"><span property="rdf:first" typeof="foaf:Person"><meta property="foaf:name" content="Roger Menday"><a class="u-url url p-name fn" property="foaf:homepage" href="file:///home/nandana/docs/w3c/ldp2/ldp-primer/ldp-primer.html#">Roger Menday</a>, <a property="foaf:workplaceHomepage" class="p-org org h-org h-card" href="file:///home/nandana/docs/w3c/ldp2/ldp-primer/ldp-primer.html#">Fujitsu Laboratories of Europe Limited, London</a></span>
-<span property="rdf:rest" resource="rdf:nil"></span>
-</dd>
-
-
-
- </dl>
-
-
-
-
-
- <p class="copyright">
- <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2015
-
- <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
- (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
- <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
- <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>).
-
- <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
- <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
-
- <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
-
- rules apply.
- </p>
-
-
- <hr>
-</div>
-
- <section id="abstract" class="introductory" property="dc:abstract"><h2 id="h-abstract" resource="#h-abstract"><span property="xhv:role" resource="xhv:heading">Abstract</span></h2><p>
- This primer provides an introduction to the Linked Data Platform (LDP), with examples illustrating the principal concepts such as the notion of an LDP resource, and the LDP container and how they can be used by Web clients.
- Two sample scenarios show how an LDP client can interact with a LDP server in the context of a read-write Linked Data application i.e. how to use HTTP for accessing, updating, creating and deleting resources from servers that expose their resources as Linked Data.
- </p></section><section id="sotd" class="introductory"><h2 id="h-sotd" resource="#h-sotd"><span property="xhv:role" resource="xhv:heading">Status of This Document</span></h2>
-
-
-
-
- <p>
- <em>This section describes the status of this document at the time of its publication.
- Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
- latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
- http://www.w3.org/TR/.</em>
- </p>
-
- <p>
- This document was published by the <a href="http://www.w3.org/2012/ldp">Linked Data Platform Working Group</a> as a Working Group Note.
-
-
- If you wish to make comments regarding this document, please send them to
- <a href="mailto:public-ldp-comments@w3.org">public-ldp-comments@w3.org</a>
- (<a href="mailto:public-ldp-comments-request@w3.org?subject=subscribe">subscribe</a>,
- <a href="http://lists.w3.org/Archives/Public/public-ldp-comments/">archives</a>).
-
-
-
-
-
-
- All comments are welcome.
-
-
- </p>
-
-
-
- <p>
- Publication as a Working Group Note does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
- Membership. This is a draft document and may be updated, replaced or obsoleted by other
- documents at any time. It is inappropriate to cite this document as other than work in
- progress.
- </p>
-
-
-
- <p>
-
- This document was produced by a group operating under the
- <a id="sotd_patent" property="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent
- Policy</a>.
-
-
-
-
- <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/55082/status" rel="disclosure">public list of any patent
- disclosures</a>
-
- made in connection with the deliverables of the group; that page also includes
- instructions for disclosing a patent. An individual who has actual knowledge of a patent
- which the individual believes contains
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
- Claim(s)</a> must disclose the information in accordance with
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
- 6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
-
- </p>
-
- <p>This document is governed by the <a id="w3c_process_revision" href="http://www.w3.org/2014/Process-20140801/">1 August 2014 <abbr title="World Wide Web Consortium">W3C</abbr> Process Document</a>.
- </p>
-
-
-
-
-</section><section id="toc"><h2 class="introductory" id="h-toc" resource="#h-toc"><span property="xhv:role" resource="xhv:heading">Table of Contents</span></h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#intro-section" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#docstore" class="tocxref"><span class="secno">2. </span>Online document store example (LDP Basics)</a><ul class="toc"><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#filelookup" class="tocxref"><span class="secno">2.1 </span>Looking up a basic container (GET on an LDP-BC) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#discovering-the-affordances-options-on-an-ldp-bc" class="tocxref"><span class="secno">2.2 </span> Discovering the affordances (OPTIONS on an LDP-BC) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creating-containers-and-structural-hierarchy" class="tocxref"><span class="secno">2.3 </span>Creating Containers and Structural Hierarchy</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creating-an-rdf-resource-post-an-rdf-resource-to-an-ldp-bc" class="tocxref"><span class="secno">2.4 </span> Creating an RDF resource (POST an RDF resource to an LDP-BC) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creating-a-non-rdf-binary-resource-post-an-image-to-an-ldp-bc" class="tocxref"><span class="secno">2.5 </span> Creating a non-RDF (binary) resource (POST an image to an LDP-BC) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#update-a-rdf-ldp-resource-put-on-an-ldp-rs" class="tocxref"><span class="secno">2.6 </span> Update a RDF LDP resource (PUT on an LDP-RS) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#deleting-a-resource-delete-on-an-ldpr" class="tocxref"><span class="secno">2.7 </span> Deleting a resource (DELETE on an LDPR) </a></li></ul></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bugtracker" class="tocxref"><span class="secno">3. </span>Bug Tracker Example (LDP Direct containers)</a><ul class="toc"><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#navandret" class="tocxref"><span class="secno">3.1 </span>Navigation and Retrieval (GET on an LDP-DC)</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creation-post-a-resource-to-an-ldp-dc" class="tocxref"><span class="secno">3.2 </span>Creation (POST a resource to an LDP-DC)</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#deletion-delete-on-an-ldpr-associated-with-an-ldp-dc" class="tocxref"><span class="secno">3.3 </span>Deletion (DELETE on an LDPR associated with an LDP-DC)</a></li></ul></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bugtrackerextd" class="tocxref"><span class="secno">4. </span>Extended Bug Tracker Example (LDP Indirect containers)</a><ul class="toc"><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#navandretext" class="tocxref"><span class="secno">4.1 </span>Navigation and Retrieval (GET on an LDP-IC) </a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creationext" class="tocxref"><span class="secno">4.2 </span>Creation (POST a resource to an LDP-IC) </a></li></ul></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#security" class="tocxref"><span class="secno">5. </span>Security</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#ldp-implementations" class="tocxref"><span class="secno">6. </span>LDP Implementations</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#what-to-read-next" class="tocxref"><span class="secno">7. </span>What To Read Next</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#history" class="tocxref"><span class="secno">B. </span>Change History</a></li><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#informative-references" class="tocxref"><span class="secno">C.1 </span>Informative references</a></li></ul></li></ul></section>
-
-
-
- <section id="intro-section" typeof="bibo:Chapter" resource="#intro-section" property="bibo:hasPart">
- <!--OddPage--><h2 id="intro" resource="#intro"><span property="xhv:role" resource="xhv:heading"><span class="secno">1. </span>Introduction</span></h2>
-
- <p>
- The term "Linked Data" [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LINKED-DATA">LINKED-DATA</a></cite>] refers to an approach to publishing data that puts linking at the heart of the notion of data, and uses the linking technologies provided by the Web to enable the weaving of a global distributed database.
- By naming real world entities - be they web resources, physical objects such as the Eiffel Tower, or even more abstract things such as relations or concepts - with http(s) URLs, whose meaning can be determined by dereferencing the document at that URL, and by using the relational framework provided by RDF, data can be published and linked in the same way web pages can.
- The Linked Data Protocol specifies how web applications can, using the HTTP protocol, find resources and follow links, publish new resources, edit and delete existing ones.
- </p>
- <p>
- The Primer aims to provide introductory examples and guidance in the use of the LDP protocol, in accordance with best practices [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-BP">LDP-BP</a></cite>].
- For a systematic description of the protocol the reader should consult the normative LDP reference [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP">LDP</a></cite>].
- For an overview of the use cases for LDP and the elicited requirements that guided its design, the reader should consult the LDP Use Cases and Requirements [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-UCR">LDP-UCR</a></cite>]; for best practices and guidelines, the reader should consult the LDP Best Practices and Guidelines document [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-BP">LDP-BP</a></cite>].
- </p>
-
- <b id="conventions">Conventions Used in This Document</b>
-
- <p>The examples in this guide are given as a serialization of RDF graphs using the Turtle [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-turtle">turtle</a></cite>] and JSON-LD [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-json-ld">json-ld</a></cite>] syntaxes of RDF.</p>
-
- <div class="syntaxmenu">
- <p>The buttons below can be used to show or hide the available syntaxes.</p>
- <form>
- <p>
- <input id="hide-ts" onclick="display('turtle', 'none'); set_display_by_id('hide-ts', 'none'); set_display_by_id('show-ts', ''); return false;" type="button" value="Hide Turtle Syntax">
- <input id="show-ts" onclick="display('turtle', ''); set_display_by_id('hide-ts', ''); set_display_by_id('show-ts', 'none'); return false;" style="display: none;" type="button" value="Show Turtle Syntax">
- <input id="hide-js" onclick="display('jsonld','none'); set_display_by_id('hide-js', 'none'); set_display_by_id('show-js', ''); return false;" type="button" value="Hide JSON-LD Syntax" style="display: none;">
- <input id="show-js" onclick="display('jsonld',''); set_display_by_id('hide-js', ''); set_display_by_id('show-js', 'none'); return false;" type="button" value="Show JSON-lD Syntax">
- </p>
- </form>
- </div>
-
- <!--p>The JSON-LD examples refer to the following (external) context document:</p>
- <pre style="word-wrap: break-word; white-space: pre-wrap;">
- {
- "@context":
- {
- "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
- "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
- "owl": "http://www.w3.org/2002/07/owl#",
- "ldp": "http://www.w3.org/ns/ldp#",
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- "dcterms": "http://purl.org/dc/terms/",
- "foaf": "http://xmlns.com/foaf/0.1/",
- "wdrs": "http://www.w3.org/2007/05/powder-s#",
- "bt": "http://example.org/vocab/bugtracker#"
- }
- }
- </pre-->
- <p>
-
- </p>
-
- <h2 id="ldp-concepts-in-a-glance">LDP concepts in a glance</h2>
-
- <p>
- A server hosting Linked Data Platform Resources (LDPRs) may manage two kinds of LDPRs: those resources whose state is represented using RDF (called LDP RDF Sources (LDP-RSs)), and those using other formats (called LDP Non-RDF Sources (LDP-NRs)) such as HTML files, images, other binary files, etc. Resoures respond to retrieval operations using HTTP GET. Often a description conveyed in the response document will describe a specific domain entity; Status, Friendship, Product, Order, Bug, etc. On the other hand, it might contain a description of a number of different concepts. The links contained in the descriptions lead to the subsequent discovery and processing of other resources. Affordances offered by the server make discoverable the forward paths in the application. Together the resources, links and associated affordances together specify what might be termed the API.
- </p>
- <blockquote>
- <p>Types of LDPRs:
- <img src="./images/resources.png" alt="Types of LDPRs">
- </p>
- </blockquote>
- <p>
- The LDP protocol covers read and write interactions with Resources. Writable aspects include creation of new resources (using POST or PUT), updates (using PUT or PATCH), and deletion of resources. Resource creation is an essential feature providing structured creation of resources. Affordances published by the server show that some Resources can be used to create other Resources. This common pattern is often seen in cases where one resource is made up of a number of others, e.g. a Document Store consists of Documents, a Bug Tracker consists of Bug Reports, a Photo Album consists of Photos, the Net Worth of a person consists of Assets and Liabilities. LDP defines creation for a special kind of Resource called a Container (LDPC), which is able to respond to requests to create new resources, in addition to the general mechanisms HTTP defines. During creation the created resource is added to its Container and a containment link between the Container and the new entry is made.
- </p>
- <p>
- Therefore a LDPC is a specialization of a LDP-RS representing a collection of links to LDPRs or information resources [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-WEBARCH">WEBARCH</a></cite>] that responds to client requests for creation, modification, and/or enumeration of its linked members and documents. The simplest container is the Basic Container (LDP-BC). It defines the basic containment described using a generic vocabulary. This can be used in a generic storage service to manage a containment hierarchy of arbitrary resources.
- </p>
- <figure id="fig-bc">
- <img src="./images/bc.png" alt="..">
- <figcaption>Fig. <span class="figno">1</span> <span class="fig-title">Generic document storage using a Basic Container.</span></figcaption>
- </figure>
- <p>
- Such servers do not impose any restriction on LDPRs and generally act as storage systems without any domain specific application logic and vocabularies. The <a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#docstore">first scenario in this document</a> concerns a document storage system based on Basic Containers.
- </p>
- <p>
- A Direct Container is a specialisation of a Basic Container. Additional assertions called membership triples which use a domain-specific vocabulary are made by a Direct Container as part of the creation process. The membership triples augment the containment triples maintained by all containers. For example, one aspect of a Product inventory system concerns the how a Direct Container is used for the management of a Product portfolio, where use of existing vocabularly is preferable.
- </p>
- <figure id="fig-dc1">
- <img src="./images/dc1.png" alt="..">
- <figcaption>Fig. <span class="figno">2</span> <span class="fig-title">Using domain vocabularly with a Direct container.</span></figcaption>
- </figure>
- <p>
- Direct Container membership triples can be about subjects other than the Container resource. An example is a Photo management application where a Photo Container is used for the management of Photos, and where membership triples then express the relationship between a User and a Photo.
- </p>
- <figure id="fig-dc_photos">
- <img src="./images/dc_photos.png" alt="..">
- <figcaption>Fig. <span class="figno">3</span> <span class="fig-title">Membership triples with a non-Container subject.</span></figcaption>
- </figure>
- <p>
- Another common pattern is where different facets of a Resource be managed using multiple Containers. For example, a Bug Report has an associated list of Comments as well as supportive media resources.
- </p>
- <figure id="fig-dc_bugs">
- <img src="./images/dc_bugs.png" alt="..">
- <figcaption>Fig. <span class="figno">4</span> <span class="fig-title">Managing multiple facets of a Bug with two Direct Containers.</span></figcaption>
- </figure>
- <p>
- One important usage concerns using LDP to expose the data and services of existing applications. These systems impose restrictions on LDPRs since the LDP interactions should consider the constraints of the underlying business logic and data model. The <a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bugtracker">bug tracker example</a> presented in the latter part of this primer is an example of an application specific LDP server.
- </p>
-
- <div class="note"><div class="note-title" aria-level="3" role="heading" id="h-note1"><span>Note</span></div><p class="">
- Formal definitions of the terms LDPR, LDPC, and other concepts introduced by LDP can be found in the 'Terminology' section of the Linked Data Platform 1.0 specification [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP">LDP</a></cite>]
- </p></div>
-
- <p>
- The following provide a set of examples to show the Linked Data Platform interactions. Note, this is a primer and should not be considered as a canonical example of ideal LDP modeling.
- </p>
-
- </section>
-
- <section id="docstore" typeof="bibo:Chapter" resource="#docstore" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-docstore" resource="#h-docstore"><span property="xhv:role" resource="xhv:heading"><span class="secno">2. </span>Online document store example (LDP Basics)</span></h2>
-
- <p>
- This section provides a set of examples of using an online document store application. These examples will demonstrate the behaviour of both types of LDPRs and LDP Basic Containers. Registration with the online document store application by a user results in some data storage space (a root Basic Container) where the application's web resources are stored. Using this root Basic Container a user can create new documents and also child containers to further organize her documents stored in this application.
- </p>
- <p>
- APIs of web applications are commonly documented by listing valid operations which can operate on URLs, where the URLs are described as templates. A description of our exemplary LDP based document store is in the following table. We note with emphasis that it is important for servers to use links as the main mechanism to reveal the location of resources. If it would be necessary to encode such templates into client applications, this would be a strong indicator that the design breaches a number of good design principles. </p>
- <p></p>
-
- <table class="simple">
- <thead>
- <tr><th>Path</th>
- <th>Method</th>
- <th>Description</th>
- </tr></thead>
- <tbody>
- <tr>
- <td rowspan="5">/{username}/</td>
- <td>GET</td>
- <td>Lists all the documents in the root container.</td>
- </tr>
- <tr>
- <td>POST</td>
- <td>Create a new document under the root container.</td>
- </tr>
- <tr>
- <td>PUT</td>
- <td>Update the description and/or list of files of the root container.</td>
- </tr>
- <tr>
- <td>PATCH</td>
- <td>Update the description and/or list of files of the root container.</td>
- </tr>
- <tr>
- <td>DELETE</td>
- <td>Not allowed.</td>
- </tr>
- <tr>
- <td class="col1" rowspan="5">
- <div class="code">/{username}/{{document}/}*</div>
- </td>
- <td>GET</td>
- <td>Retrieve the document.</td>
- </tr>
- <tr>
- <td>POST</td>
- <td>Discovered from the resource affordances.</td>
- </tr>
- <tr>
- <td>PUT</td>
- <td>Update the document.</td>
- </tr>
- <tr>
- <td>PATCH</td>
- <td>Partial update to the document if PATCH is supported.</td>
- </tr>
- <tr>
- <td>DELETE</td>
- <td>Delete the document.</td>
- </tr>
- <tr>
- <td rowspan="2">
- <div class="code">/*/*</div>
- </td>
- <td>OPTIONS</td>
- <td>Discover the allowed operations over a resource</td>
- </tr>
- <tr>
- <td>HEAD</td>
- <td>Only retrieve meta-information about a resource</td>
- </tr>
- </tbody>
- </table>
-
- <p>
- In this example, we will see how Alice, a user of this system, does read / write management of documents using the LDP protocol. A typical interaction with the system would start with Alice registering as a user. It is likely that registration would be a LDP based interaction, but this aspect is out of scope of this example. A consequence of the registration is allocation of space for the storage of documents, and communication of this URL to the user, e.g. a basic container at http://example.org/alice/. This section describes a typical flow of interactions where Alice firsts reads the root document and discovers its affordances. This is followed by subsequent examples of creation, update and delete, and finishes with how the client is able to create nested structure from the containers.
- </p>
-
- <section id="filelookup" typeof="bibo:Chapter" resource="#filelookup" property="bibo:hasPart">
- <h3 id="h-filelookup" resource="#h-filelookup"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.1 </span>Looking up a basic container (GET on an LDP-BC) </span></h3>
-
- <p>First Alice looks up her storage by retrieving the LDP Basic Container assigned to her to hold her documents. Alice's LDP client does this by doing a GET request on the URI, http://example.org/alice/. </p>
-
- <div class="example"><div class="example-title"><span>Example 1</span>: Request - basic container retrieval</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>GET /alice/ HTTP/1.1
-Host: example.org
-Accept: text/turtle
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>GET /alice/ HTTP/1.1
-Host: example.org
-Accept: application/ld+json</pre></div></div></div>
-
- <p>As her document storage was just created, it is an empty container. </p>
-
- <div class="example"><div class="example-title"><span>Example 2</span>: Response - basic container retrieval</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>HTTP/1.1 200 OK
-Content-Type: text/turtle; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json, image/bmp, image/jpeg
-Accept-Patch: text/ldpatch
-Content-Length: 250
-ETag: W/'123456789'
-
-@prefix dcterms: <http://purl.org/dc/terms/>.
-@prefix ldp: <http://www.w3.org/ns/ldp#>.
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer;
- dcterms:title 'Alice’s data storage on the Web' .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>HTTP/1.1 200 OK
-Content-Type: application/ld+json; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json, image/bmp, image/jpeg
-Accept-Patch: text/ldpatch
-Content-Length: 270
-ETag: W/'123456789'
-
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "http://example.org/alice/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Alice’s data storage on the Web"
-}</pre></div></div></div>
-
- <p> As shown in the example, in addition to the RDF representation of the Basic Container using the requested media type the server provides an etag of the resource representation and Link headers advertising that the requested resource is indeed an LDP Basic Container and it will support the LDP interaction model. </p>
-
- <p> In addition, the response also contains "Allow", "Accept-Post" , "Accept-Patch" headers. The "Allow" header advertises which HTTP operations are supported by this LDP Basic Container resource. In this example, it supports OPTIONS,HEAD,GET,POST,PUT, and PATCH HTTP verbs. The "Accept-Post" and "Accept-Patch" headers advertise which are the media types supported by the POST and the PATCH method respectively.</p>
-
- <div class="note"><div class="note-title" aria-level="4" role="heading" id="h-note2"><span>Note</span></div><p class="">The Linked Data Platform 1.0 specification [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP">LDP</a></cite>] says that all LDP servers <em class="rfc2119" title="MUST">MUST</em> support the Turtle media type for LDP-RS resources and <em class="rfc2119" title="SHOULD">SHOULD</em> support JSON-LD media type.</p></div>
-
- </section>
-
- <section id="discovering-the-affordances-options-on-an-ldp-bc" typeof="bibo:Chapter" resource="#discovering-the-affordances-options-on-an-ldp-bc" property="bibo:hasPart">
- <h3 id="h-discovering-the-affordances-options-on-an-ldp-bc" resource="#h-discovering-the-affordances-options-on-an-ldp-bc"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.2 </span> Discovering the affordances (OPTIONS on an LDP-BC) </span></h3>
-
- <p>
- In the previous example, we saw that Alice can discover what operations are allowed on a resource by doing a GET request on the resource. As an alternative, she can use the OPTIONS operation to learn of the permitted operations on any given resource.
- </p>
-
- <div class="example"><div class="example-title"><span>Example 3</span>: Request - retreiving OPTIONS of a basic container</div><pre class="example">OPTIONS /alice/ HTTP/1.1
-Host: example.org </pre></div>
-
- <div class="example"><div class="example-title"><span>Example 4</span>: Response - retreiving OPTIONS of a basic container</div><pre class="example">HTTP/1.1 204 No Content
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json, image/bmp, image/jpeg
-Accept-Patch: text/ldpatch
-Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type" </pre></div>
-
- <p>According to the response, HTTP operations {OPTIONS,HEAD, GET,POST,PUT,PATCH} are allowed on her root container. In addition to the allowed operations, Accept-Post and Accept-Patch provides which media types are supported by the respective operations. The rel="type" Link header advertises that this resource supports LDP protocol and it is an LDP Basic Container.</p>
-
- <p>In this case, the response tells Alice's LDP client that this is an LDP-Basic Container and the container allows her to POST things of both RDF types (text/turtle, application/ld+json) and images (image/bmp and image/jpeg).</p>
-
- </section>
-
- <section id="creating-containers-and-structural-hierarchy" typeof="bibo:Chapter" resource="#creating-containers-and-structural-hierarchy" property="bibo:hasPart">
- <h3 id="meta-structure" resource="#meta-structure"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.3 </span>Creating Containers and Structural Hierarchy</span></h3>
- <p>In order for the client to introduce hierarchy to the management of documents, the document store allows creation of container resources, enabling Alice to create a container hierarchy to organise her documents. This can be done by POSTing (a child) container representation to a (parent) container. For instance, it enables Alice to create a child container which she intends to use for image storage.
- </p>
-
- <figure id="fig-bcs">
- <img src="./images/bcs.png" alt="..">
- <figcaption>Fig. <span class="figno">5</span> <span class="fig-title">Child Containers inside a Basic Container.</span></figcaption>
- </figure>
-
- <div class="example"><div class="example-title"><span>Example 5</span>: State of Alice's document store before creating the photo (child) container</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer ;
- dcterms:title "Alice’s data storage on the Web" ;
- ldp:contains <http://example.org/alice/foaf> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "http://example.org/alice/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Alice’s data storage on the Web",
- "ldp:contains": { "@id": "http://example.org/alice/foaf" }
-}</pre></div></div></div>
-
- <p>To create a new container for managing photos, Alice POSTs a representation of a container (LDP-BC) to the root container. Alice expresses her intention that the newly created resource should be an LDP Basic Container by including a Link header in the request with the relationship "type". </p>
- <div class="example"><div class="example-title"><span>Example 6</span>: Request - creating a new container</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>POST alice/ HTTP/1.1
-Host: example.org
-Content-Type: text/turtle
-Link: <http://www.w3.org/ns/ldp/BasicContainer>; rel="type"
-Slug: photos
-
-@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-
-<> a ldp:Container, ldp:BasicContainer;
- dcterms:title "Photos of Alice" ;
- dcterms:description "This container will contain photos of Alice." .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>POST alice/ HTTP/1.1
-Host: example.org
-Content-Type: application/ld+json
-Link: <http://www.w3.org/ns/ldp/BasicContainer>; rel="type"
-Slug: photos
-
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Photos of Alice" ,
- "dcterms:description": "This container will contain photos of Alice."
-}</pre></div></div></div>
- <p>If the POST is successful, the server responds with the location of the newly created container for the photos.</p>
- <div class="example"><div class="example-title"><span>Example 7</span>: Response - creating a new container</div><pre class="example">HTTP/1.1 201 Created
-Location: http://example.org/alice/photos/
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Content-Length: 0 </pre></div>
-
- <p>This is how the parent container will look like after creating the new container</p>
- <div class="example"><div class="example-title"><span>Example 8</span>: State of Alice's document store after creating the photo (child) container</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer ;
- dcterms:title "Alice’s data storage on the Web";
- ldp:contains <http://example.org/alice/foaf> , <http://example.org/alice/photos/> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>{
- "@context": "https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/context.json",
- "@id": "http://example.org/alice/",
- "@type": [ ldp:Container, ldp:BasicContainer ],
- "dcterms:title": "Alice’s data storage on the Web",
- "ldp:contains": [
- { "@id": "http://example.org/alice/foaf" },
- { "@id": "http://example.org/alice/photos/" }
- ]
-}</pre></div></div></div>
- <p>and the photo container will look like the following.</p>
- <div class="example"><div class="example-title"><span>Example 9</span>: State of Alice's newly created photo container</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-
-<http://example.org/alice/photos/> a ldp:Container, ldp:BasicContainer;
- dcterms:title "Photos of Alice" ;
- dcterms:description "This container will contain photos of Alice." .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>{
- "@context": "https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/context.json",
- "@id": "/app/product2/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Photos of Alice",
- "dcterms:description": "This container will contain photos of Alice."
-}
-
-
-
- </pre></div></div></div>
-
- </section>
-
- <section id="creating-an-rdf-resource-post-an-rdf-resource-to-an-ldp-bc" typeof="bibo:Chapter" resource="#creating-an-rdf-resource-post-an-rdf-resource-to-an-ldp-bc" property="bibo:hasPart">
- <h3 id="h-creating-an-rdf-resource-post-an-rdf-resource-to-an-ldp-bc" resource="#h-creating-an-rdf-resource-post-an-rdf-resource-to-an-ldp-bc"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.4 </span> Creating an RDF resource (POST an RDF resource to an LDP-BC) </span></h3>
-
- <p>
- Alice can upload a social profile document to her store, by POSTing her FOAF personal profile document to her LDP-BC at the root of her document store. Note, the Slug header offers a hint to the server about the URL of the resource to be created. Alice also indicates that the newly created resource should be an LDP Resource by including a Link header in the request with the relationship "type".
- </p>
-
- <p> The FOAF document includes statements about the resource to be created and other resources relative to the resource to be created. According the LDP specification, Alice can use an empty relative URI (<>) in the request entity body to refer to the resource to be created.
-
- </p>
-
- <div class="example"><div class="example-title"><span>Example 10</span>: Request - creating an RDF resource</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>POST /alice/ HTTP/1.1
-Host: example.org
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Slug: foaf
-Content-Type: text/turtle
-
-@prefix dc: <http://purl.org/dc/terms/> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<> a foaf:PersonalProfileDocument;
- foaf:primaryTopic <#me> ;
- dc:title 'Alice’s FOAF file' .
-
-<#me> a foaf:Person;
- foaf:name 'Alice Smith' .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>POST /alice/ HTTP/1.1
-Host: example.org
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Slug: foaf
-Content-Type: application/ld+json
-
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "foaf": "http://xmlns.com/foaf/0.1/" },
- "@id": "",
- "@type": "foaf:PersonalProfileDocument",
- "foaf:primaryTopic": {
- "@id": "#me",
- "@type": "foaf:Person",
- "foaf:name" : "Alice Smith"
- },
- "dcterms:title": "Alice’s FOAF file"
-}
-</pre></div></div></div>
-
- <div class="example"><div class="example-title"><span>Example 11</span>: Response - creating an RDF resource</div><pre class="example">HTTP/1.1 201 Created
-Location: http://example.org/alice/foaf
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Content-Length: 0 </pre></div>
- <p> The response to the create request provides a Link to the newly created resource using the Location header. In this case, the server has honored the hint provided by the slug header and created the new resource in the URL http://example.org/alice/foaf. </p>
- <p>Knowing the URL of the newly created resource, Alice can check the container again to confirm that the container correctly contains the newly created resource.</p>
-
- <div class="example"><div class="example-title"><span>Example 12</span>: Request - basic container retrieval after resource created</div><pre class="example">GET /alice/ HTTP/1.1
-Host: example.org
-Accept: text/turtle, application/ld+json</pre></div>
-
- <div class="example"><div class="example-title"><span>Example 13</span>: Response - basic container retrieval after resource created</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>HTTP/1.1 200 OK
-Content-Type: text/turtle; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json, image/bmp, image/jpeg
-Accept-Patch: text/ldpatch
-Content- Length: 245
-ETag: W/'123456789'
-
-@prefix dcterms: <http://purl.org/dc/terms/>.
-@prefix ldp: <http://www.w3.org/ns/ldp#>.
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer;
- dcterms:title 'Alice’s data storage on the Web' ;
- ldp:contains <http://example.org/alice/foaf> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>HTTP/1.1 200 OK
-Content-Type: application/ld+json; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json, image/bmp, image/jpeg
-Accept-Patch: text/ldpatch
-Content- Length: 255
-ETag: W/'123456789'
-
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "http://example.org/alice/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Alice’s data storage on the Web",
- "ldp:contains": { "@id": "http://example.org/alice/foaf" }
-}</pre></div></div></div></section>
-
- <section id="creating-a-non-rdf-binary-resource-post-an-image-to-an-ldp-bc" typeof="bibo:Chapter" resource="#creating-a-non-rdf-binary-resource-post-an-image-to-an-ldp-bc" property="bibo:hasPart">
- <h3 id="h-creating-a-non-rdf-binary-resource-post-an-image-to-an-ldp-bc" resource="#h-creating-a-non-rdf-binary-resource-post-an-image-to-an-ldp-bc"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.5 </span> Creating a non-RDF (binary) resource (POST an image to an LDP-BC) </span></h3>
-
- <p>Next, Alice wants to upload a photo of herself to the document storage. She can create an image by POSTing it in the same way she created the RDF document.</p>
-
- <div class="example"><div class="example-title"><span>Example 14</span>: Request - creating a non-RDF resource</div><pre class="example">POST /alice/ HTTP/1.1
-Host: example.org
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Slug: avatar
-Content-Type: image/png
-Content- Length: 1020
-
-### binary data ###</pre></div>
-
- <div class="example"><div class="example-title"><span>Example 15</span>: Response - creating a non-RDF resource</div><pre class="example">HTTP/1.1 201 Created
-Location: http://example.org/alice/avatar
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Link: <http://example.org/alice/avatar/meta>; rel="describedby"
-Content-Length: 0 </pre></div>
-
- <p> </p>
-
- <p>The outcome of creating a non-RDF is similar to creating a RDF resource. If successful, the server will return a 201 success code with a Location header that points to the created resource. Furthermore, in the case of binary resources the server may create an additional file to maintain the metadata about the binary file. In the above example, the server creates a new LDP-RS to maintain metadata about the binary resource such as creation date, owner, etc. and this metadata resource is advertised using a Link header with the relation "describedby". </p>
-
- <p> Similar to creating a RDF resource (LDP-RS), a containment triple will be added to the container when a non-RDF (LDP-NR) is created. Thus, the representation of the LDP container after creating the image looks like the following. </p>
- <div class="example"><div class="example-title"><span>Example 16</span>: Container representation after the non-RDF resource creation</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix dcterms: <http://purl.org/dc/terms/>.
-@prefix ldp: <http://www.w3.org/ns/ldp#>.
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer;
- dcterms:title 'Alice’s data storage on the Web' ;
- ldp:contains <http://example.org/alice/foaf> , <http://example.org/alice/avatar> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "http://example.org/alice/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Alice’s data storage on the Web",
- "ldp:contains": [{ "@id": "http://example.org/alice/foaf" }, { "@id": "http://example.org/alice/avatar" } ]
-}</pre></div></div></div>
- </section>
-
- <section id="update-a-rdf-ldp-resource-put-on-an-ldp-rs" typeof="bibo:Chapter" resource="#update-a-rdf-ldp-resource-put-on-an-ldp-rs" property="bibo:hasPart">
- <h3 id="h-update-a-rdf-ldp-resource-put-on-an-ldp-rs" resource="#h-update-a-rdf-ldp-resource-put-on-an-ldp-rs"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.6 </span> Update a RDF LDP resource (PUT on an LDP-RS) </span></h3>
-
- <p>After creating the image as shown in the previous example, Alice now wants to update her FOAF profile with a link to the image. After retrieving her FOAF profile using a HTTP GET operation, she uses HTTP PUT to update the document by amending the RDF with a link to her photo.</p>
- <p> In this example, Alice's LDP client sends the E-tag of the resource representation that it retrieved previously to prevent any lost update problems. </p>
- <div class="example"><div class="example-title"><span>Example 17</span>: Request - updating a RDF resource</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>PUT /alice/foaf HTTP/1.1
-Host: example.org
-If-Match: W/"123454321"
-Content-Type: text/turtle
-
-@prefix dc: <http://purl.org/dc/terms/> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<> a foaf:PersonalProfileDocument;
- foaf:primaryTopic <#me> ;
- dc:title "Alice’s FOAF file" .
-
-<#me> a foaf:Person;
- foaf:name "Alice Smith" ;
- foaf:img <http://example.org/alice/avatar> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "foaf": "http://xmlns.com/foaf/0.1/" },
- "@id": "",
- "@type": "foaf:PersonalProfileDocument",
- "foaf:primaryTopic": {
- "@id": "#me",
- "@type": "foaf:Person",
- "foaf:name" : "Alice Smith",
- "foaf:img" : { "@id": "http://example.org/alice/avatar" }
- },
- "dcterms:title": "Alice’s FOAF file"
-}</pre></div></div></div>
-
- <div class="example"><div class="example-title"><span>Example 18</span>: Response - updating a RDF resource</div><pre class="example">HTTP/1.1 204 No Content
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type" </pre></div>
-
- <p>If the operation is successful as shown above, the document will be updated with new information.</p>
-
- <div class="note"><div class="note-title" aria-level="4" role="heading" id="h-note3"><span>Note</span></div><p class=""> Alice can also use the PATCH operation to update the resource.</p></div>
-
- </section>
-
- <section id="deleting-a-resource-delete-on-an-ldpr" typeof="bibo:Chapter" resource="#deleting-a-resource-delete-on-an-ldpr" property="bibo:hasPart">
- <h3 id="h-deleting-a-resource-delete-on-an-ldpr" resource="#h-deleting-a-resource-delete-on-an-ldpr"><span property="xhv:role" resource="xhv:heading"><span class="secno">2.7 </span> Deleting a resource (DELETE on an LDPR) </span></h3>
-
- <p>If Alice decides to delete the image, she can do that with a delete operation.</p>
-
- <div class="example"><div class="example-title"><span>Example 19</span>: Request - deleting a RDF resource</div><pre class="example">DELETE /alice/avatar HTTP/1.1
-Host: example.org </pre></div>
-
- <div class="example"><div class="example-title"><span>Example 20</span>: Response - deleting a RDF resource</div><pre class="example">HTTP/1.1 204 No Content
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"</pre></div>
-
- <p> As well as deleting the resource, the server removes the containment triple from the container. For example, a subsequent GET request on the container will return a graph isomorphic to the one shown in the following representation:</p>
-
- <div class="example"><div class="example-title"><span>Example 21</span>: Container representation after resource deletion</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix dcterms: <http://purl.org/dc/terms/>.
-@prefix ldp: <http://www.w3.org/ns/ldp#>.
-
-<http://example.org/alice/> a ldp:Container, ldp:BasicContainer;
- dcterms:title 'Alice’s data storage on the Web' ;
- ldp:contains <http://example.org/alice/foaf> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#" },
- "@id": "http://example.org/alice/",
- "@type": [ "ldp:Container", "ldp:BasicContainer"],
- "dcterms:title": "Alice’s data storage on the Web",
- "ldp:contains": { "@id": "http://example.org/alice/foaf" }
-}</pre></div></div></div>
-
- <p> For any subsequent request on the deleted resource, the server will respond with the appropriate HTTP response code. </p>
- <div class="example"><div class="example-title"><span>Example 22</span>: Request - after deletion</div><pre class="example">GET /alice/avatar HTTP/1.1
-Host: example.org
-Accept: image/png</pre></div>
-
- <div class="example"><div class="example-title"><span>Example 23</span>: Response - after deletion</div><pre class="example">HTTP/1.1 410 Gone </pre></div>
- </section>
-
- </section>
-
- <section id="bugtracker" typeof="bibo:Chapter" resource="#bugtracker" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-bugtracker" resource="#h-bugtracker"><span property="xhv:role" resource="xhv:heading"><span class="secno">3. </span>Bug Tracker Example (LDP Direct containers)</span></h2>
-
- <p>The previous section provided practical examples of basic LDP interactions using LDP Basic Containers. One of the limitations of LDP Basic Containers is that a fixed LDP vocabulary is used to assert the relations between a container and its contained resources. However, some scenarios require domain specific vocabulary to be used to list the members of a container. For example, an application which already used Linked Data and its own vocabulary may like to continue using the same vocabulary when migrating to LDP protocol. LDP Direct containers introduce the concept of membership triples allowing the flexibility to define the form of the membership. One of these flexibility points is the ability to select the predicate of the membership triple which can be from a domain-specific vocabulary. This is done using the ldp:hasMemberRelation or ldp:isMemberOfRelation predicate of the Direct Containers.</p>
-
- <p>In addition, in some scenarios it is necessary to add relationships between the newly created resource and some other resource (which is not necessarily the container or another document / information resource). LDP Direct Container allow to define relationships between the container and any other information resource or non-information resource (real world thing) by defining the membership constant subject or the object URI of the membership triples using ldp:membershipResource predicate of the Direct Container. The usage of the ldp:hasMemberRelation predicate as well as the ldp:membershipResource will be explained in the following examples. </p>
-
- <div class="note"><div class="note-title" aria-level="3" role="heading" id="h-note4"><span>Note</span></div><p class="">For more information on information resources (documents) vs real world entities (things) separation please refer to <a href="http://www.w3.org/TR/webarch/#id-resources">Web Arch (Section 2.2. URI/Resource Relationships) </a>, , <a href="http://www.w3.org/TR/cooluris/#semweb">Cool URIs (Section 3. URIs for Real-World Objects)</a>, <a href="http://www.w3.org/TR/urls-in-data/#landing-pages">URLs in Data (Section 3. Landing Pages and Records)</a>.</p></div>
-
- <p>
- The examples in this section will revolve around a very simple Bug Tracker application. Bug Tracker application records the bugs of several products allowing reporting, updating and deleting bugs and products. In contrast to the online document store example, the bug tracker wants to use an existing domain vocabulary, e.g. has_bug, to express membership relationships in the containers. LDP provides the additional interaction capability in the protocol to add the domain specific triples based on the properties defined in the LDP Direct Container.
- </p>
-
- <p>A RESTful API for a simple Bug Tracker system might be described as follows.</p>
-
- <table class="simple">
- <thead>
- <tr><th>Path</th>
- <th>Method</th>
- <th>Description</th>
- </tr></thead>
- <tbody>
- <!--tr>
- <td rowspan="5">/tracker/</td>
- <td>GET</td>
- <td>Lists all the product descriptions.</td>
- </tr>
- <tr>
- <td>POST</td>
- <td>Create a new product description.</td>
- </tr>
- <tr>
- <td>PUT</td>
- <td>Update the app description and/or list of product descriptions</td>
- </tr>
- <tr>
- <td>PATCH</td>
- <td>Update the app description and/or list of product descriptions</td>
- </tr>
- <tr>
- <td>DELETE</td>
- <td>Not allowed.</td>
- </tr-->
- <tr>
- <td class="col1" rowspan="5">
- <div class="code">/tracker/{product-id}/</div>
- </td>
- <td>GET</td>
- <td>Lists the product description and bug reports associated with a product.</td>
- </tr>
- <tr>
- <td>POST</td>
- <td>Create a new bug report associated with a product.</td>
- </tr>
- <tr>
- <td>PUT</td>
- <td>Update the project description.</td>
- </tr>
- <tr>
- <td>PATCH</td>
- <td>Not supported.</td>
- </tr>
- <tr>
- <td>DELETE</td>
- <td>Delete the project description and associated bug reports.</td>
- </tr>
- <tr>
- <td rowspan="5">
- <div class="code">/tracker/{product-id}/{bug-id}</div>
- </td>
- <td>GET</td>
- <td>Gets the bug report.</td>
- </tr>
- <tr>
- <td>POST</td>
- <td>Not supported.</td>
- </tr>
- <tr>
- <td>PUT</td>
- <td>Update the bug report.</td>
- </tr>
- <tr>
- <td>PATCH</td>
- <td>Not supported.</td>
- </tr>
- <tr>
- <td>DELETE</td>
- <td>Delete the bug report.</td>
- </tr>
- <tr>
- <td rowspan="2">
- <div class="code">/tracker/*/*</div>
- </td>
- <td>OPTIONS</td>
- <td>Discover the allowed operations over a resource</td>
- </tr>
- <tr>
- <td>HEAD</td>
- <td>Only retrieve meta information about a resource</td>
- </tr>
- </tbody>
- </table>
-
- <p> In the examples in this section, we will only focus on the container representation, creation and deletion of resources because that is where the Basic Containers, Direct Containers, and Indirect Containers differ. Other operations such as updating a resource would be similar to what was illustrated in the previous example.</p>
-
- <section id="navandret" typeof="bibo:Chapter" resource="#navandret" property="bibo:hasPart">
- <h3 id="h-navandret" resource="#h-navandret"><span property="xhv:role" resource="xhv:heading"><span class="secno">3.1 </span>Navigation and Retrieval (GET on an LDP-DC)</span></h3>
-
- <p>One of the main use cases of the example bug tracker is to list a given product's bugs. Assuming that a user got a URL of a product by out of band means, she can look it up to get more information including the bugs associated with it. To get the description of the product, a user (or her LDP client) can do a GET request on the URI of the known product resource. LDPR servers must provide text/turtle representations of the requested LDPRs and may provide other RDF format representations such as JSON-LD or RDF/XML using standard HTTP content negotiation.</p>
- <div class="example"><div class="example-title"><span>Example 24</span>: Request - Product Lookup</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>GET /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Accept: text/turtle; charset=UTF-8
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>GET /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Accept: application/ld+json; charset=UTF-8</pre></div></div></div>
- <p>If the product resource is available, the server responds with the RDF representation of the Direct Container that corresponds to the given product using the requested media type,
- <code>text/turtle</code> or <code>application/ld+json</code> in this case.</p>
- <div class="example"><div class="example-title"><span>Example 25</span>: Response - Product Lookup</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>HTTP/1.1 200 OK
-Content-Type: text/turtle; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json
-Accept-Patch: text/ldpatch
-Content-Length: 246
-ETag: W/"123456789"
-
-@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-
-<> a ldp:DirectContainer;
- ldp:membershipResource <#it>;
- ldp:hasMemberRelation bt:hasBug;
- dcterms:title "Product description of the LDP Demo product which is also an LDP-DC";
- ldp:contains <bug3>, <bug4> .
-
-<#it> a bt:Product;
- dcterms:title "LDP Demo";
- bt:hasBug <bug3>, <bug4> .
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>HTTP/1.1 200 OK
-Content-Type: application/ld+json; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json
-Accept-Patch: text/ldpatch
-Content-Length: 315
-ETag: W/"123456789"
-
-[
- { "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "",
- "@type": [ "ldp:DirectContainer", "bt:Product"],
- "dcterms:title": "Product description of the LDP Demo product which is also an LDP-DC",
- "ldp:contains": [{ "@id": "bug3"}, { "@id": "bug4"}],
- "ldp:hasMemberRelation": { "@id": "bt:hasBug"},
- "ldp:membershipResource": { "@id": "#it"}
- },
- {
- "@context": { "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "#it",
- "@type": "bt:Product",
- "dcterms:title": "LDP Demo",
- "bt:hasBug": [{ "@id": "bug3"}, { "@id": "bug4"} ]
- }
-]</pre></div></div></div>
-
- <p>The representation of the product contains both information about the product such as the title and the bugs associated with the product and information about the product description such as the title of the product description and other properties of the LDP Container. </p>
-
- <p>As you can see from the Link Header that is returned and the RDF representation of the container, this example uses an LDP Direct Container. LDP-DCs contain both containment triples and membership triples and provide the flexibility to the applications to use domain specific vocabulary in the membership triples. For example, in the above example the LDP-DC manages the member relationship, (<?productURI>, bt:hasBug, <?bugURI>), using the application-specific vocabulary term, bt:hasBug. This is done by defining the ldp:hasMemberRelation predicate of the Direct Container to bt:hasBug (<?directContainerURI>, ldp:hasMemberRelation, bt:hasbug). </p>
-
- <div class="note"><div class="note-title" aria-level="4" role="heading" id="h-note5"><span>Note</span></div><p class=""> The Direct Container shown in the above example has the membership triple pattern ( membership-constant-URI , membership-predicate , member-derived-URI ) using ldp:hasMemberRelation where the constant membership resource is in the subject of the triple and the newly created resources will be added as the object of the triple. It is also possible for the Direct Container to have the membership triple pattern ( member-derived-URI , membership-predicate , membership-constant-URI ) using ldp:isMemberOfRelation predicate where the constant member resource will be the object of the triple and the newly created resource will be added as the subject of the triple. </p></div>
-
- <p> In addition, in this example the bugs are associated with the product resource (a non-information resource with a # URI) and not with the product description Direct Container itself. This is done by defining the ldp:membershipResource predicate of the LDP Direct Container as the product non-information resource URI (<?directContainerURI>, ldp:membershipResource, </tracker/product1/#it>). By doing so one can define the subject of the membership triple any resource of interest.
- </p>
-
- <p>The next example illustrates the behaviour of LDP Direct containers when new resources are created and how aforementioned predicates of the Direct Containers affect the interaction model of LDP.</p>
-
-
- <!-- <p>Looking up a bug is similar to looking up a product. Based on links in the representation of the Product, the client uses GET to navigate to a known Bug resource.</p>
-
- <pre class="example" title="Bug lookup request"
- data-include='bug_look_up_req.txt' data-oninclude='fixCode'></pre>
- <p>The server responds with the representation of the bug.</p>
- <pre title="Bug lookup response"
- class='example' data-include='bug_look_up_resp.txt'
- data-oninclude='fixCode'></pre -->
-
- </section>
-
- <section id="creation-post-a-resource-to-an-ldp-dc" typeof="bibo:Chapter" resource="#creation-post-a-resource-to-an-ldp-dc" property="bibo:hasPart">
- <h3 id="BugCreate" resource="#BugCreate"><span property="xhv:role" resource="xhv:heading"><span class="secno">3.2 </span>Creation (POST a resource to an LDP-DC)</span></h3>
- <p>Continuing from the previous example, we can report a Bug against the "LDP Demo" product by creating a Bug report (an LDPR representing the bug) under the "LDP Demo" product description LDPC by posting a RDF representation of the Bug report to the LDPC associated with the product description. </p>
-
- <p> The bug report document includes statements about the resource to be created. According the LDP specification, a client can use null relative URI (<>) in the request entity body to refer to the resource to be created.
-
- </p><div class="example"><div class="example-title"><span>Example 26</span>: A request for creating a bug</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>POST /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Content-Type: text/turtle
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-
-<> a bt:BugReport;
- dcterms:title "LDP Demo crashes when shutting down.";
- dcterms:creator <http://example.org/tracker/users/johndoe> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>POST /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Content-Type: application/ld+json
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-
-{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "",
- "@type": "bt:BugReport",
- "dcterms:title": "LDP Demo crashes when shutting down.",
- "dcterms:creator": { "@id": "http://example.org/tracker/users/johndoe" }
-}</pre></div></div></div>
- <p>If the creation is successful, the server responds with location of the newly created resource.</p>
- <div class="example"><div class="example-title"><span>Example 27</span>: A response of creating new a bug</div><pre class="example" data-oninclude="fixCode">HTTP/1.1 201 Created
-Location: http://example.org/tracker/ldp-demo/bug67
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Content-Length: 0 </pre></div>
-
- <p>If the creation fails, the server will respond with an appropriate status code depending on the error. If successful, the LDP Demo product description LDPC will have the following representation after the creation of new resource.</p>
- <div class="example"><div class="example-title"><span>Example 28</span>: The state of the product LDPC after the bug creation</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-
-</tracker/ldp-demo/> a ldp:DirectContainer;
- ldp:membershipResource </tracker/ldp-demo/#it>;
- ldp:hasMemberRelation bt:hasBug;
- dcterms:title "Product description of LDP Demo product which is also an LDP-DC";
- ldp:contains <bug3>, <bug4> , <bug67> .
-
-</tracker/ldp-demo/#it> a bt:Product;
- dcterms:title "LDP Demo";
- bt:hasbug <bug3>, <bug4>, <bug67> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>[
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/",
- "@type": [ "ldp:DirectContainer", "bt:Product"],
- "dcterms:title": "Product description of LDP Demo product which is also an LDP-DC",
- "ldp:contains": [{ "@id": "/tracker/ldp-demo/bug3"}, { "@id": "/tracker/ldp-demo/bug4"}, { "@id": "/tracker/ldp-demo/bug67"}],
- "ldp:hasMemberRelation": { "@id": "bt:hasbug" },
- "ldp:membershipResource": { "@id": "/tracker/ldp-demo/#it"}
- },
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/#it",
- "@type": "bt:Product",
- "dcterms:title": "LDP Demo",
- "bt:hasbug": [{ "@id": "/tracker/ldp-demo/bug3"}, { "@id": "/tracker/ldp-demo/bug4"}, { "@id": "/tracker/ldp-demo/bug67"} ]
- }
-]</pre></div></div></div>
- <p> As you can see two new triples are added to the container. That is (</tracker/ldp-demo/>, <ldp:contains>, </tracker/ldp-demo/bug67>) and
- (</tracker/ldp-demo/#it>, <bt:hasbug>, </tracker/ldp-demo/bug67>). The former is added in any type of container and the latter is defined by the direct
- container properties. </p>
- <p>The created Bug resource will have the following representation. Note that server has added a server managed property, creation date (dcterms:created), and a default value for the state (bt:isInState) to the Bug in addition to what was POSTed.</p>
- <div class="example"><div class="example-title"><span>Example 29</span>: The state of the bug LDPR</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-
-</tracker/ldp-demo/bug67> a bt:Bug;
- dcterms:title "Product A crashes when shutting down.";
- dcterms:creator </tracker/users/johndoe>;
- dcterms:created "2013-05-05T10:00"^^xsd:dateTime;
- bt:isInState "New" .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>{
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/bug67",
- "dcterms:title": "Product A crashes when shutting down.",
- "dcterms:creator": { "@id": "/tracker/users/johndoe" },
- "dcterms:created": {
- "@type": "http://www.w3.org/2001/XMLSchema#dateTime",
- "@value": "2013-05-05T10:00:00"
- },
- "bt:isInState": "New"
-}</pre></div></div></div>
-
- </section>
-
- <section id="deletion-delete-on-an-ldpr-associated-with-an-ldp-dc" typeof="bibo:Chapter" resource="#deletion-delete-on-an-ldpr-associated-with-an-ldp-dc" property="bibo:hasPart">
- <h3 id="BugDelete" resource="#BugDelete"><span property="xhv:role" resource="xhv:heading"><span class="secno">3.3 </span>Deletion (DELETE on an LDPR associated with an LDP-DC)</span></h3>
-
- This example illustrates the behaviour of a Direct Container when a resource is deleted.
-
- <div class="example"><div class="example-title"><span>Example 30</span></div><pre class="example">DELETE /tracker/ldp-demo/bug3 HTTP/1.1
-Host: example.org
-If-Match: W/"123454322"</pre></div>
- <p>If the delete is successful, the server will respond with a success status code.</p>
- <div class="example"><div class="example-title"><span>Example 31</span></div><pre class="example">HTTP/1.1 204 No Content
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type" </pre></div>
-
- <p> After the deletion, the representation of the container will look like the following</p>
-
- <div class="example"><div class="example-title"><span>Example 32</span>: The state of the product LDPC after the bug deletion</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-
-</tracker/ldp-demo/> a ldp:DirectContainer;
- ldp:membershipResource </tracker/ldp-demo/#it>;
- ldp:hasMemberRelation bt:hasBug;
- dcterms:title "Product description of LDP Demo product which is also an LDP-DC";
- ldp:contains <bug4> , <bug67> .
-
-</tracker/ldp-demo/#it> a bt:Product;
- dcterms:title "LDP Demo";
- bt:hasBug <bug4>, <bug67> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>[
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/",
- "@type": [ "ldp:DirectContainer", "bt:Product"],
- "dcterms:title": "Product A",
- "ldp:contains": [{ "@id": "/tracker/ldp-demo/bug4"}, { "@id": "/tracker/ldp-demo/bug67"}],
- "ldp:hasMemberRelation": { "@id": "bt:hasbug" },
- "ldp:membershipResource": "#it"
- },
- {
- "@context": {
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "#it",
- "@type": "bt:Product",
- "bt:hasBug": [{ "@id": "/tracker/ldp-demo/bug4"}, { "@id": "/tracker/ldp-demo/bug67"} ]
- }
-]
-
-
-</pre></div></div></div>
-
- <p> As seen from the LDP Direct Container representation above, both the containment triple (</tracker/ldp-demo/>, ldp:contains, </tracker/ldp-demo/bug3>) and the membership triple (</tracker/ldp-demo/#it>, bt:hasBug, </tracker/ldp-demo/bug3>) were removed from the container representation. </p>
-
- </section>
-
- </section>
-
- <section id="bugtrackerextd" typeof="bibo:Chapter" resource="#bugtrackerextd" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-bugtrackerextd" resource="#h-bugtrackerextd"><span property="xhv:role" resource="xhv:heading"><span class="secno">4. </span>Extended Bug Tracker Example (LDP Indirect containers)</span></h2>
-
- <p> In this next example, we will use the same scenario as in the previous example, but change the container type to a LDP Indirect Container to show the differences between LDP Direct Containers and Indirect Containers and when to use LDP Indirect Containers. Though LDP Direct Containers provide the flexibility to define the constant membership URI (the subject of the membership triple when using ldp:hasMemberRelation or the object of the membership triple when using ldp:isMemberOfRelation) and the membership predicate, when creating members the member derived URI is always the newly created document URL. LDP Indirect containers provide more flexibility by allowing the member derived URI to be any resource; it could be either a non-information resource or a document other than the newly created resource. This done by defining the predicate to look for in the representation of the resource to be created by setting the ldp:insertedContentRelation predicate of the LDP Indirect Container. How this done will be explained in the following examples. </p>
-
- <section id="navandretext" typeof="bibo:Chapter" resource="#navandretext" property="bibo:hasPart">
- <h3 id="h-navandretext" resource="#h-navandretext"><span property="xhv:role" resource="xhv:heading"><span class="secno">4.1 </span>Navigation and Retrieval (GET on an LDP-IC) </span></h3>
-
- <p> Similar to the previous LDP-DC example, first we will retrieve the representation of the LDP Indirect Container.</p>
-
- <div class="example"><div class="example-title"><span>Example 33</span>: Product lookup request</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>GET /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Accept: text/turtle; charset=UTF-8
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>GET /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Accept: application/ld+json; charset=UTF-8</pre></div></div></div>
- <p> As a response to the GET request, the server responds with the representation of the product description container.</p>
- <div class="example"><div class="example-title"><span>Example 34</span>: HTTP response for product lookup</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>HTTP/1.1 200 OK
-Content-Type: text/turtle; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#IndirectContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json
-Accept-Patch: text/ldpatch
-Content-Length: 256
-ETag: W/"123456789"
-
-@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-</tracker/ldp-demo/> a ldp:IndirectContainer;
- ldp:membershipResource <#it>;
- ldp:hasMemberRelation bt:hasBug;
- ldp:insertedContentRelation foaf:primaryTopic;
- dcterms:title "Product description of LDP Demo product which is also an LDP-IC";
- ldp:contains <bug3>, <bug4> .
-
-<#it> a bt:Product;
- dcterms:title "LDP Demo";
- bt:hasBug <bug3#it>, <bug4#it> .
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>HTTP/1.1 200 OK
-Content-Type: application/ld+json; charset=UTF-8
-Link: <http://www.w3.org/ns/ldp#IndirectContainer>; rel="type", <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Allow: OPTIONS,HEAD,GET,POST,PUT,PATCH
-Accept-Post: text/turtle, application/ld+json
-Accept-Patch: text/ldpatch
-Content-Length: 278
-ETag: W/"123456789"
-
-[
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/",
- "@type": [ "ldp:DirectContainer", "bt:Product"],
- "dcterms:title": "Product description of LDP Demo product which is also an LDP-IC",
- "ldp:contains": [{ "@id": "/tracker/ldp-demo/bug3"}, { "@id": "/tracker/ldp-demo/bug4"}],
- "ldp:hasMemberRelation": { "@id": "bt:hasbug" },
- "ldp:membershipResource": { "@id": "#it" },
- "ldp:insertedContentRelation": "foaf:primaryTopic"
-
- },
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "#it",
- "@type": "bt:Product",
- "dcterms:title": "LDP Demo",
- "bt:hasbug": [{ "@id": "/tracker/ldp-demo/bug3#it"}, { "@id": "/tracker/ldp-demo/bug4#it"} ]
- }
-]</pre></div></div></div>
-
- <p> Now the product container is a LDP Indirect container, which has one main difference: the container has an additional predicate called "ldp:insertedContentRelation". Further, the objects of the containment triples and the membership triples are not the same. While the object of the containment triple is the same (e.g., </tracker/ldp-demo/bug3>, an information resource) the object of the membership triple is now (e.g., </tracker/ldp-demo/bug3#it>, a non-information resource or real world thing). This distinction is because of the ldp:insertedContentRelation definition. How this works will be explained in <a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#creationext">the next example</a> on creating a new resource. </p>
-
- </section>
- <!-- end navandretext -->
-
- <section id="creationext" typeof="bibo:Chapter" resource="#creationext" property="bibo:hasPart">
- <h3 id="IndirectCreate" resource="#IndirectCreate"><span property="xhv:role" resource="xhv:heading"><span class="secno">4.2 </span>Creation (POST a resource to an LDP-IC) </span></h3>
-
- <p>Continuing from the previous example, we can create a new Bug Report against the 'LDP demo' product by creating a Bug Report LDPR under the 'LDP Demo' product description LDPC.</p>
-
- <p>The client POSTs a representation of a Bug Report to the Bug Tracker LDPC.</p>
- <div class="example"><div class="example-title"><span>Example 35</span>: A request for creating a bug</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>POST /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Content-Type: text/turtle
-
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<> a bt:BugReport;
- foaf:primaryTopic <#it>;
- dcterms:title "Product A crashes when shutting down.";
- dcterms:creator </tracker/ldp-demo/johndoe> .
-
-<#it> a bt:Bug .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>POST /tracker/ldp-demo/ HTTP/1.1
-Host: example.org
-Content-Type: application/ld+json
-
-[
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#",
- "foaf": "http://xmlns.com/foaf/0.1/" },
- "@id": "",
- "@type": "bt:BugReport",
- "foaf:primaryTopic": { "@id": "#it" },
- "dcterms:title": "Product A crashes when shutting down.",
- "dcterms:creator": { "@id": "/tracker/ldp-demo/johndoe" }
- },
- {
- "@context": {
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "#it",
- "@type": "bt:Bug"
- }
-]</pre></div></div></div>
- <p> One thing to note is that the representation of the resource to be created contains a triple (< >, foaf:primaryTopic , <#it>). If the create request is successful, the server responds with location of the newly created resource.</p>
- <div class="example"><div class="example-title"><span>Example 36</span>: A response of creating new a bug</div><pre class="example" data-oninclude="fixCode">HTTP/1.1 201 Created
-Location: http://example.org/tracker/ldp-demo/bug67
-Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"
-Content-Length: 0 </pre></div>
-
- <p>If the creation fails, the server will respond with an appropriate status code depending on the error. After the resource is creation, the Product A LDPC will have the following representation.</p>
- <div class="example"><div class="example-title"><span>Example 37</span>: The state of the product LDPC after the bug creation</div><div><div class="turtle" style="font-family: sans-serif;">Turtle:</div><div class="turtle"><pre>@prefix ldp: <http://www.w3.org/ns/ldp#> .
-@prefix dcterms: <http://purl.org/dc/terms/> .
-@prefix bt: <http://example.org/vocab/bugtracker#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-</tracker/ldp-demo/> a ldp:IndirectContainer;
- ldp:membershipResource </tracker/ldp-demo/#it>;
- ldp:hasMemberRelation bt:hasBug;
- ldp:insertedContentRelation foaf:primaryTopic;
- dcterms:title "Product description of the LDP Demo product which is also an LDP-IC";
- ldp:contains <bug3>, <bug4> , <bug67> .
-
-<#it> a bt:Product;
- dcterms:title "LDP Demo";
- bt:hasBug <bug3#it>, <bug4#it>, <bug67#it> .
-
-</pre></div><div class="jsonld" style="font-family: sans-serif; display: none;">JSON-LD:</div><div class="jsonld" style="display: none;"><pre>[
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "ldp": "http://www.w3.org/ns/ldp#",
- "bt": "http://example.org/vocab/bugtracker#",
- "foaf": "http://xmlns.com/foaf/0.1/" },
- "@id": "/tracker/ldp-demo/",
- "@type": [ "ldp:IndirectContainer", "bt:Product"],
- "dc:title": "Product description of the LDP Demo product which is also an LDP-IC",
- "ldp:contains": [{ "@id": "/tracker/ldp-demo/bug3"}, { "@id": "/tracker/ldp-demo/bug3"}, { "@id": "/tracker/ldp-demo/bug67"}],
- "ldp:hasMemberRelation": { "@id": "bt:hasBug" },
- "ldp:membershipResource": { "@id": "/tracker/ldp-demo/#it" },
- "ldp:insertedContentRelation": { "@id": "foaf:primaryTopic" }
- },
- {
- "@context": {
- "dcterms": "http://purl.org/dc/terms/",
- "bt": "http://example.org/vocab/bugtracker#" },
- "@id": "/tracker/ldp-demo/#it",
- "@type": "bt:Product",
- "dcterms:title": "LDP Demo"
- "bt:hasBug": [{ "@id": "/tracker/ldp-demo/bug3#it"}, { "@id": "/tracker/ldp-demo/bug3#it"}, { "@id": "/tracker/ldp-demo/bug67#it"} ]
- }
-]</pre></div></div></div>
- <p> As you can see, two new triples are added to the container. That is (</tracker/ldp-demo/>, <ldp:contains>, </tracker/ldp-demo/bug67>) and
- (</tracker/ldp-demo/#it>, <bt:hasbug>, </tracker/ldp-demo/bug67#it>). </p>
-
- </section>
- <!-- end creationext -->
-
- </section>
-
-
- <section id="security" typeof="bibo:Chapter" resource="#security" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-security" resource="#h-security"><span property="xhv:role" resource="xhv:heading"><span class="secno">5. </span>Security</span></h2>
- <p>It is not the focus of the Linked Data Platform WG to provide security mechanisms for read/write Linked Data applications; since LDP builds on HTTP, it can re-use any mechanism defined for HTTP. Though most of the security mechanisms that are applicable to general web applications are equally applicable to Linked Data applications, there is still some space to build security mechanisms specific to Linked Data applications by leveraging the Linked Data technologies and providing concrete security requirements for Linked Data applications. In this context, LDP WG has started to create a WG note on Access Control which aims to produce use cases for security scenarios of LDP applications that can be used as the input to a later initiative that will be focused on developing standard security mechanisms for LDP applications.</p>
- <!-- TODO: link to Access Control Note -->
- </section>
-
- <section id="ldp-implementations" typeof="bibo:Chapter" resource="#ldp-implementations" property="bibo:hasPart">
- <!--OddPage--><h2 id="ldpc" resource="#ldpc"><span property="xhv:role" resource="xhv:heading"><span class="secno">6. </span>LDP Implementations</span></h2>
- A list of implementations that plan to be LDP compliant is available in the LDP Implementations <a href="https://www.w3.org/wiki/LDP_Implementations">wiki page</a>. The <a href="http://www.w3.org/2012/ldp/hg/tests/reports/ldp.html">Linked Data Platform 1.0 - Implementation Reports</a> provide the coverage of the specification by each LDP implementation.
- </section>
-
- <section id="what-to-read-next" typeof="bibo:Chapter" resource="#what-to-read-next" property="bibo:hasPart">
- <!--OddPage--><h2 id="next" resource="#next"><span property="xhv:role" resource="xhv:heading"><span class="secno">7. </span>What To Read Next</span></h2>
- The primer only provide an overview of the Linked Data Platform specifications. LDP WG has produced following documents that contribute to the Linked Data Platform specification.
-
- <ul>
- <li><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/TR/ldp-ucr.html">Linked Data Platform Use Cases and Requirements</a> [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-UCR">LDP-UCR</a></cite>]</li>
- <li><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp.html">Linked Data Platform 1.0 specifcation</a> [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP">LDP</a></cite>]</li>
- <li><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-bp/ldp-bp.html">LDP Best Practices and Guidelines</a> [<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-BP">LDP-BP</a></cite>]</li>
- <li><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/Test%20Cases/LDP%20Test%20Cases.html">Linked Data Platform 1.0 Test Cases</a>[<cite><a class="bibref" href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-primer/ldp-primer.html#bib-LDP-TESTS">LDP-TESTS</a></cite>]</li>
- </ul>
-
- </section>
-
- <section class="appendix" id="acknowledgements" typeof="bibo:Chapter" resource="#acknowledgements" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-acknowledgements" resource="#h-acknowledgements"><span property="xhv:role" resource="xhv:heading"><span class="secno">A. </span>Acknowledgements</span></h2>
- <p>Many thanks to John Arwe (IBM), Ashok Malhotra (Oracle), and Henry Story (Apache Software Foundation), Andrei Sambra (<abbr title="Massachusetts Institute of Technology">MIT</abbr>) for their thorough review on the LDP Primer document and proposed corrections. We would also like to thank all members of the Linked Data Platform WG for the valuable feedback. </p>
- </section>
-
- <section class="appendix informative" id="history" typeof="bibo:Chapter" resource="#history" property="bibo:hasPart">
- <!--OddPage--><h2 id="h-history" resource="#h-history"><span property="xhv:role" resource="xhv:heading"><span class="secno">B. </span>Change History</span></h2><p><em>This section is non-normative.</em></p>
- <p>The change history is up to the editors to insert a brief summary of changes, ordered by most recent changes first and with heading from which public draft it has been changed from.
- </p>
- <ul>
- <li>2014-06-16 - Addressing the comments and feedback provided by Ashok, John, and Henry.</li>
- <li>2013-08-05 - Providing JSON-LD representations of the examples.</li>
- <li>2013-07-03 - Moving the content from the wiki to the note.</li>
- </ul>
- </section>
-
-
-
-
-
-<!--<div id="respec-ui" class="removeOnSave" style="position: fixed; top: 20px; right: 20px; width: 202px; text-align: right;"><button style="font-weight: bold; border: 1px solid rgb(204, 204, 204); border-radius: 5px; background: rgb(255, 255, 255);">ReSpec</button><div style="border: 1px solid rgb(0, 0, 0); width: 200px; display: none; text-align: left; margin-top: 5px; margin-right: 5px; background: rgb(255, 255, 255);"><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">Save Snapshot</button><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">About ReSpec</button><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">Definition List</button><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">Search Specref DB</button></div></div>-->
-
-<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" property="bibo:hasPart"><!--OddPage--><h2 id="h-references" resource="#h-references"><span property="xhv:role" resource="xhv:heading"><span class="secno">C. </span>References</span></h2><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" property="bibo:hasPart"><h3 id="h-informative-references" resource="#h-informative-references"><span property="xhv:role" resource="xhv:heading"><span class="secno">C.1 </span>Informative references</span></h3><dl class="bibliography" resource=""><dt id="bib-LDP">[LDP]</dt><dd>Steve Speicher; John Arwe; Ashok Malhotra. <a href="http://www.w3.org/TR/ldp/" property="dc:references"><cite>Linked Data Platform 1.0</cite></a>. 26 February 2015. W3C Recommendation. URL: <a href="http://www.w3.org/TR/ldp/" property="dc:references">http://www.w3.org/TR/ldp/</a>
-</dd><dt id="bib-LDP-BP">[LDP-BP]</dt><dd>Cody Burleson; Miguel Esteban Gutiérrez; Nandana Mihindukulasooriya. <a href="http://www.w3.org/2012/ldp/hg/ldp-bp/ldp-bp.html" property="dc:references"><cite>LDP Best Practices and Guidelines</cite></a>. W3C Working Draft. URL: <a href="http://www.w3.org/2012/ldp/hg/ldp-bp/ldp-bp.html" property="dc:references">http://www.w3.org/2012/ldp/hg/ldp-bp/ldp-bp.html</a>
-</dd><dt id="bib-LDP-TESTS">[LDP-TESTS]</dt><dd>Raúl García-Castro; Fernando Serena; Steve Speicher. <a href="http://www.w3.org/2012/ldp/hg/tests/ldp-testsuite.html" property="dc:references"><cite>Linked Data Platform 1.0 Test Cases</cite></a>. W3C Working Draft. URL: <a href="http://www.w3.org/2012/ldp/hg/tests/ldp-testsuite.html" property="dc:references">http://www.w3.org/2012/ldp/hg/tests/ldp-testsuite.html</a>
-</dd><dt id="bib-LDP-UCR">[LDP-UCR]</dt><dd>Steve Battle; Steve Speicher. <a href="http://www.w3.org/TR/ldp-ucr/" property="dc:references"><cite>Linked Data Platform Use Cases and Requirements</cite></a>. 13 March 2014. W3C Note. URL: <a href="http://www.w3.org/TR/ldp-ucr/" property="dc:references">http://www.w3.org/TR/ldp-ucr/</a>
-</dd><dt id="bib-LINKED-DATA">[LINKED-DATA]</dt><dd>Tim Berners-Lee. <a href="http://www.w3.org/DesignIssues/LinkedData.html" property="dc:references"><cite>Linked Data Design Issues</cite></a>. 27 July 2006. W3C-Internal Document. URL: <a href="http://www.w3.org/DesignIssues/LinkedData.html" property="dc:references">http://www.w3.org/DesignIssues/LinkedData.html</a>
-</dd><dt id="bib-WEBARCH">[WEBARCH]</dt><dd>Ian Jacobs; Norman Walsh. <a href="http://www.w3.org/TR/webarch/" property="dc:references"><cite>Architecture of the World Wide Web, Volume One</cite></a>. 15 December 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/webarch/" property="dc:references">http://www.w3.org/TR/webarch/</a>
-</dd><dt id="bib-json-ld">[json-ld]</dt><dd>Manu Sporny; Gregg Kellogg; Markus Lanthaler. <a href="http://www.w3.org/TR/json-ld/" property="dc:references"><cite>JSON-LD 1.0</cite></a>. 16 January 2014. W3C Recommendation. URL: <a href="http://www.w3.org/TR/json-ld/" property="dc:references">http://www.w3.org/TR/json-ld/</a>
-</dd><dt id="bib-turtle">[turtle]</dt><dd>Eric Prud'hommeaux; Gavin Carothers. <a href="http://www.w3.org/TR/turtle/" property="dc:references"><cite>RDF 1.1 Turtle</cite></a>. 25 February 2014. W3C Recommendation. URL: <a href="http://www.w3.org/TR/turtle/" property="dc:references">http://www.w3.org/TR/turtle/</a>
-</dd></dl></section></section></body></html>
\ No newline at end of file