ldp-paging.html
author Steve Speicher <sspeiche@gmail.com>
Mon, 26 Jan 2015 11:51:28 -0500
changeset 938 859f98c26867
parent 935 4c9e4a9dc2e8
child 972 7d0c5926dff6
permissions -rw-r--r--
AC rep comment #2 on clarity on types in examples
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     1
<!DOCTYPE html>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     2
<!-- 
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
     3
	TODO: Once companion documents (best practices, primer) have URLs, link to them.  Search on "companion".
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     4
	TODO: Example 11 is missing ldp:contains, true?  Omit due to GET on page resource, should make it more clear.
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
     5
	TODO: Paging intro: add 3rd example showing header linkage amongst pages and (HEAD on) the base resource.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     6
     Maybe also insert HEAD on base as new first example instead of relying on text alone.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     7
 -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     8
<html>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
     9
  <head>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    10
    <title>Linked Data Platform Paging 1.0</title>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    11
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    12
    <!-- 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    13
      === NOTA BENE ===
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    14
      For the three scripts below, if your spec resides on dev.w3 you can check them
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    15
      out in the same tree and use relative links so that they'll work offline,
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    16
     -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    17
    <script src='https://www.w3.org/Tools/respec/respec-w3c-common' class='remove' async></script> 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    18
    <script class='remove'>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    19
      var respecConfig = {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    20
          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
869
ecb7b6549780 Initial prep for ldp-paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 848
diff changeset
    21
          specStatus:           "CR",
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    22
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    23
          // the specification's short name, as in http://www.w3.org/TR/short-name/
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    24
          shortName:            "ldp-paging",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    25
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    26
          // if your specification has a subtitle that goes below the main
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    27
          // formal title, define it here
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    28
          // subtitle   :  "an excellent document",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    29
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    30
          // if you wish the publication date to be other than today, set this
922
cb6efb8c91bf Prep LDP-Paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 877
diff changeset
    31
          publishDate:  "2014-12-11",
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    32
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    33
          // if the specification's copyright date is a range of years, specify
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    34
          // the start date here:
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    35
          // copyrightStart: "2005"
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    36
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    37
          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    38
          // and its maturity status
840
26f0cbd7c4bd Added non-norm items about extensions to supply client requested ordering
Steve Speicher <sspeiche@gmail.com>
parents: 813
diff changeset
    39
          previousPublishDate:  "2014-09-09",
869
ecb7b6549780 Initial prep for ldp-paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 848
diff changeset
    40
          previousMaturity:  	"WD",
840
26f0cbd7c4bd Added non-norm items about extensions to supply client requested ordering
Steve Speicher <sspeiche@gmail.com>
parents: 813
diff changeset
    41
          previousURI: 			"http://www.w3.org/TR/2014/WD-ldp-20140909/",
813
325fe1adef07 Setting 2005 process due to recent process release and respec default change
Steve Speicher <sspeiche@gmail.com>
parents: 799
diff changeset
    42
          
325fe1adef07 Setting 2005 process due to recent process release and respec default change
Steve Speicher <sspeiche@gmail.com>
parents: 799
diff changeset
    43
          processVersion: 		2005,
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    44
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    45
          // if there a publicly available Editor's Draft, this is the link
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    46
          edDraftURI:           "http://www.w3.org/2012/ldp/hg/ldp-paging.html",
873
19046197c803 Fixed up links for test suite
Steve Speicher <sspeiche@gmail.com>
parents: 872
diff changeset
    47
          implementationReportURI: "https://dvcs.w3.org/hg/ldpwg/raw-file/default/tests/reports/paging/ldp-paging.html",
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    48
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    49
          // if this is a LCWD, uncomment and set the end of its review period
840
26f0cbd7c4bd Added non-norm items about extensions to supply client requested ordering
Steve Speicher <sspeiche@gmail.com>
parents: 813
diff changeset
    50
          // lcEnd: "2014-09-30",
922
cb6efb8c91bf Prep LDP-Paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 877
diff changeset
    51
          crEnd: "2014-01-08",
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    52
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    53
          // Only include h1 and h2 level
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    54
          maxTocLevel: 2,
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    55
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    56
          // if you want to have extra CSS, append them to this list
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    57
          // it is recommended that the respec.css stylesheet be kept
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    58
          //extraCSS:             ["https://dvcs.w3.org/hg/ldpwg/css/respec.css"],
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    59
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    60
          // editors, add as many as you like
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    61
          // only "name" is required
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    62
          editors:  [
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    63
              { name: "Steve Speicher", url: "http://stevespeicher.blogspot.com",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    64
                company: "IBM Corporation", companyURL: "http://ibm.com/" },
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    65
              { name: "John Arwe", url: "https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/allcommunities?userid=120000CAW7",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    66
                company: "IBM Corporation", companyURL: "http://ibm.com/" },
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    67
			  {name: "Ashok Malhotra", url: "mailto:ashok.malhotra@oracle.com",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    68
			    company: "Oracle Corporation", companyURL: "http://www.oracle.com" },
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    69
          ],
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    70
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    71
          // authors, add as many as you like. 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    72
          // This is optional, uncomment if you have authors as well as editors.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    73
          // only "name" is required. Same format as editors.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    74
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    75
          //authors:  [
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    76
          //    { name: "Your Name", url: "http://example.org/",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    77
          //      company: "Your Company", companyURL: "http://example.com/" },
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    78
          //],
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    79
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    80
          // name of the WG
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    81
          wg:           "Linked Data Platform Working Group",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    82
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    83
          // URI of the public WG page
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    84
          wgURI:        "http://www.w3.org/2012/ldp",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    85
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    86
          // name (without the @w3c.org) of the public mailing to which comments are due
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    87
          wgPublicList: "public-ldp-comments",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    88
          
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    89
          // URI of the patent status for this WG, for Rec-track documents
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    90
          // !!!! IMPORTANT !!!!
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    91
          // This is important for Rec-track documents, do not copy a patent URI from a random
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    92
          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    93
          // Team Contact.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    94
          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/55082/status",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    95
          doRDFa: "1.1",
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
    96
			localBiblio:  {
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
    97
				"READ-COMMITTED": {
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
    98
					title:    "Wikipedia: Isolation (database systems)"
786
218a3a675085 Paging HTML validation fixes
Steve Speicher <sspeiche@gmail.com>
parents: 784
diff changeset
    99
				,   href:     "http://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   100
				,   authors:  [
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   101
						"Various"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   102
					]
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   103
				,   status:   "N/A"
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   104
				,   publisher:  "Wikipedia"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   105
				},
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   106
				"NON-REPEATABLE-READS": {
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   107
					title:    "Wikipedia: Isolation (database systems)"
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   108
				,   href:     "http://en.wikipedia.org/wiki/Isolation_(database_systems)#Non-repeatable_reads"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   109
				,   authors:  [
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   110
						"Various"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   111
					]
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   112
				,   status:   "N/A"
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   113
				,   publisher:  "Wikipedia"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   114
				},
874
1095bee2f1f6 Fixed up links for test suite
Steve Speicher <sspeiche@gmail.com>
parents: 873
diff changeset
   115
				"LDP-PAGING-TESTSUITE": {
869
ecb7b6549780 Initial prep for ldp-paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 848
diff changeset
   116
					title:    "Linked Data Platform Paging 1.0 Test Cases"
ecb7b6549780 Initial prep for ldp-paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 848
diff changeset
   117
				,   href:     "https://dvcs.w3.org/hg/ldpwg/raw-file/tip/tests/ldp-paging-testsuite.html"
741
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   118
				,   authors:  [
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   119
						"R. Garcia-Castro", "F. Serena"
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   120
					]
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   121
				,   status:   "Editor's Draft of Working Group Note"
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   122
				,   publisher:  "W3C"
869
ecb7b6549780 Initial prep for ldp-paging for CR
Steve Speicher <sspeiche@gmail.com>
parents: 848
diff changeset
   123
				},				
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   124
				"REL-CANONICAL": {
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   125
					title:    "The Canonical Link Relation"
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   126
				,   href:     "http://tools.ietf.org/html/rfc6596"
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   127
				,   authors:  [
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   128
						"M. Ohye",
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   129
						"J. Kupke"
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   130
					]
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   131
				,   status:   "Informational"
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   132
				,   publisher:  "IETF"
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   133
				}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   134
			},
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   135
      };
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   136
    </script>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   137
    <style type="text/css">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   138
    	div.rule {padding-top: 1em;}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   139
    	div.ldp-issue-open {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   140
	    	border-color: #E05252;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   141
			background: #FBE9E9;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   142
			padding: 0.5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   143
			margin: 1em 0;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   144
			position: relative;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   145
			clear: both;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   146
			border-left-width: .5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   147
			border-left-style: solid;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   148
    	}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   149
    	div.ldp-issue-pending {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   150
	    	border-color: #FAF602;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   151
			background: #F7F6BC;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   152
			padding: 0.5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   153
			margin: 1em 0;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   154
			position: relative;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   155
			clear: both;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   156
			border-left-width: .5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   157
			border-left-style: solid;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   158
    	}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   159
    	div.ldp-issue-closed {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   160
	    	border-color: #009900;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   161
			background: #BCF7CF;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   162
			padding: 0.5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   163
			margin: 1em 0;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   164
			position: relative;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   165
			clear: both;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   166
			border-left-width: .5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   167
			border-left-style: solid;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   168
    	}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   169
    	div.ldp-issue-title {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   170
    	    color: #E05252;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   171
    	    padding-right: 1em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   172
            min-width: 7.5em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   173
    	}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   174
		.atrisk {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   175
			padding:    1em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   176
			margin: 1em 0em 0em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   177
			border: 1px solid #f00;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   178
			background: #ffc;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   179
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   180
		.atrisktext {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   181
			/* content:    "Feature At Risk"; */
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   182
			display:    block;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   183
			width:  150px;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   184
			margin: -1.5em 0 0.5em 0;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   185
			font-weight:    bold;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   186
			border: 1px solid #f00;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   187
			background: #fff;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   188
			padding:    3px 1em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   189
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   190
		.normal { 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   191
			font-weight: normal;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   192
			font: normal 100% sans-serif;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   193
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   194
		.indented { 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   195
			margin-left: +3em;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   196
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   197
		tr:nth-of-type(odd),.oddrow { 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   198
			background:#F2F2F2; /* light grey, just enough to differentiate from white */
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   199
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   200
		td { 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   201
			padding:0 +1ex 0 +1ex; /* add a bit of space from rule/edge to text */
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   202
		}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   203
		
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   204
    </style>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   205
    <style type="text/css" media="all">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   206
    	code {
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   207
    	    font-weight:bold;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   208
			font-size:larger;
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   209
    	}
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   210
		 /* ReSpec uses color ff4500 for code elements, which does not print well on some black & white printers
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   211
		    and is a little hard to read for some folks even on-line. 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   212
			The default code font size was also somewhat too small/hard to read.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   213
		*/
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   214
    </style>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   215
  </head>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   216
<body>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   217
<section id='abstract'>
638
f6321e49afb3 address subset of sandro's originall-off-list comments; rest being handled on-list
John Arwe
parents: 637
diff changeset
   218
This document describes a HTTP-based protocol for clients and servers to be able to efficiently retrieve large Linked Data Platform
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   219
Resource representations by splitting up the responses into separate URL-addressable page resources.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   220
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   221
 
637
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   222
 <section id='sotd'>
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   223
   <p>
877
edbeb4f5bd9a Minor fixes for ldp-paging
Steve Speicher <sspeiche@gmail.com>
parents: 875
diff changeset
   224
		The Working Group has addressed all
741
23fdc671c3f2 remove localbiblio entries now in base respec object, and put real SOTD mentioning the split into Paging
John Arwe
parents: 740
diff changeset
   225
		raised issues, and other substantive changes have been made, including the decision to separate LDP Paging
877
edbeb4f5bd9a Minor fixes for ldp-paging
Steve Speicher <sspeiche@gmail.com>
parents: 875
diff changeset
   226
		from the Linked Data Platform [[!LDP]].  A test suite has also been made available [[LDP-PAGING-TESTSUITE]]. 
637
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   227
   </p>
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   228
 </section>
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   229
 
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   230
<section class="informative" id="intro">
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   231
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   232
<h1>Introduction</h1> 
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   233
	<p>
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   234
		This specification provides a widely re-usable pattern to make the state of a large <a title="Paged resource">paged HTTP resource</a>
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   235
		available as a list of smaller subset resources (<a title="In-sequence page resource">pages</a>) whose 
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   236
		representations are less burdensome for servers to form.
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   237
		<a title="Paged resource">Paged resources</a> must be LDP Resources (LDPRs) [[!LDP]].
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   238
		Any LDPR can be paged, but certain aspects of paging like ordering are only well-defined for 
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   239
		particular sub-classes of LDPRs, like
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   240
		LDP-RSs or LDPCs.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   241
	</p>
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   242
	<p>
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   243
		When a client attempts to retrieve a <a>paged resource</a>, the server either redirects the client to 
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   244
		a "first page" <a title="In-sequence page resource">resource</a> or provides the 
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   245
		representation of the "first page" <a title="In-sequence page resource">resource</a> in its response, 
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   246
		depending on the client's request preferences and the server's capabilities.  
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   247
		The response 
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   248
		includes links to other page(s) in the sequence, as do subsequent pages.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   249
		<a title="LDP Paging client">Paging-aware clients</a>
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   250
		know how to combine pages of an LDP-RS, and possibly (via other specifications) other LDPRs.
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   251
		LDP Paging defines a mechanism by which clients can learn that the <a>paged resource</a> has been changed 
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   252
		so that they can, for example, abandon a page traversal as early as possible.
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   253
		A detailed example of paging is provided in <a href="#ldpp-ex-mx" class="sectionRef"></a>.
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   254
	</p>
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   255
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   256
		When a <a>paged resource</a> is also an LDPC, some additional efficiencies become possible in cases
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   257
		where the server predictably assigns members to pages and is able to communicate its assignment
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   258
		algorithm to clients.  The <a href="#ldpc" class="sectionRef"></a> defines a facility to communicate 
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   259
		the sort order of member-to-page assignments, to handle that common implementation algorithm.
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   260
	</p>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   261
	<p>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   262
		For context and background, it could be useful to read <a href="#bib-LDP-UCR">Linked Data Platform Use Case and Requirements</a> [[LDP-UCR]]. 
698
e5ece7d79d8e add http headers to all existing examples
John Arwe
parents: 696
diff changeset
   263
	</p>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   264
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   265
	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   266
<section id="terms">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   267
<h1>Terminology</h1>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   268
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   269
<section id="terms-from-ldp">
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   270
<h2>Terms re-used from the Linked Data Platform</h2>
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   271
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   272
<p>This section is non-normative.  It summarizes a subset of terms formally defined in [[LDP]] for the reader's convenience.
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   273
</p>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   274
  <dl class="glossary">	
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   275
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   276
	<dt><dfn>LDP server</dfn></dt>
636
46b0ed651256 updated to use RFC numbers newly assigned to http-bis and prefer header
John Arwe
parents: 604
diff changeset
   277
	<dd>A conforming HTTP server [[RFC7230]] that follows the rules defined by [[LDP]]
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   278
	    when it is serving <abbr title="Linked Data Platform Resources">LDPRs</abbr> and 
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   279
		<abbr title="Linked Data Platform Containers">LDPCs</abbr>.
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   280
	<p></p></dd>	
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   281
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   282
	<dt><dfn>LDP client</dfn></dt>
636
46b0ed651256 updated to use RFC numbers newly assigned to http-bis and prefer header
John Arwe
parents: 604
diff changeset
   283
	<dd>A conforming HTTP client [[RFC7230]] that follows the rules defined by [[LDP]] when
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   284
	    interacting with a <a>LDP server</a>.
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   285
	<p></p></dd>	
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   286
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   287
	<dt><dfn>Linked Data Platform Resource</dfn> (<abbr title="Linked Data Platform Resource">LDPR</abbr>)</dt>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   288
	<dd>A HTTP resource whose state is represented in any way that conforms to the 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   289
		patterns and conventions in [[LDP]].<p></p></dd>
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   290
		
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   291
	<dt><dfn>Linked Data Platform RDF Source</dfn> (<abbr title="Linked Data Platform RDF Source">LDP-RS</abbr>)</dt>
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   292
	<dd>An <a title="Linked Data Platform Resource">LDPR</a> whose state is fully represented in RDF [[LDP]].
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   293
	<p></p></dd>	
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   294
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   295
	<dt><dfn>Linked Data Platform Container</dfn> (<abbr title="Linked Data Platform Container">LDPC</abbr>)</dt>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   296
	<dd>A LDP-RS representing a collection of <a title="Linked Data Platform Resource">LDPRs</a> linked by
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   297
	<a>membership triples</a> and <a>containment triples</a> [[LDP]].
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   298
	<p></p></dd>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   299
	
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   300
	<dt><dfn>Membership triples</dfn></dt>
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   301
	<dd>A set of triples that lists an <a title="Linked Data Platform Container">LDPC's</a> members [[LDP]].
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   302
	<p></p></dd>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   303
	
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   304
	<dt><dfn>Containment triples</dfn></dt>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   305
	<dd>
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   306
	A set of triples, maintained by an LDPC, that lists documents created by the LDPC but not yet deleted [[LDP]].
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   307
	<p></p></dd>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   308
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   309
  </dl>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   310
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   311
</section>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   312
    
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   313
<section id="terms-from-paging">
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   314
<h2>Terms normatively defined by this specification</h2>
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   315
637
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   316
<p>The following terminology is based on W3C's Architecture of the World Wide Web [[!WEBARCH]], 
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
   317
	Hyper-text Transfer Protocol ([[!RFC7230]], [[!RFC7231]]) and Linked Data Platform [[!LDP]].
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   318
</p>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   319
  <dl class="glossary">	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   320
	<dt><dfn>Paged resource</dfn></dt>
638
f6321e49afb3 address subset of sandro's originall-off-list comments; rest being handled on-list
John Arwe
parents: 637
diff changeset
   321
	<dd>A LDPR whose representation may be too large for a server to construct in a single HTTP response
f6321e49afb3 address subset of sandro's originall-off-list comments; rest being handled on-list
John Arwe
parents: 637
diff changeset
   322
	(e.g. without running out of memory), for which an
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   323
	<a>LDP Paging server</a> offers a <a>page sequence</a> that allows clients to obtain subsets of its state
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   324
	over some period of time by making multiple HTTP requests.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   325
	<p>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   326
	For readers
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   327
	familiar with paged feeds [[RFC5005]], a paged resource is similar to a logical feed.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   328
	Any resource could be considered to be a paged resource consisting of exactly one page, 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   329
	although there is no known advantage in doing so.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   330
	</p>  
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   331
	<p></p></dd>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   332
	
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   333
	<dt><dfn>Page sequence</dfn></dt>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   334
	<dd>A sequence of related <a title="Linked Data Platform Resource">LDPRs</a>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   335
	<var>P<sub>1 (first)</sub>, P<sub>2</sub>, ...,P<sub>n (last)</sub></var>, 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   336
	each of which contains a subset of the <a>paged resource</a>'s state.  
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   337
	<p>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   338
	When the representations of the sequence's <a title="In-sequence page resource">resources</a>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   339
	are combined by a client, the client has a copy of the <a>paged resource</a>'s
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   340
	state; if the <a>paged resource</a> changed while the client was retrieving the sequence's resources, 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   341
	then the client's copy of the <a>paged resource</a>'s state can be incomplete or inconsistent
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   342
	with the state of the <a>paged resource</a> at any single instant in time.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   343
	Thus, it is impossible to strongly guarantee that the result of this retrieval and combination process is the same state that
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   344
	the client would obtain using a single request (if that were possible), but LDP does provide
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   345
	a way for <a href="#ldpr-notify-changes">clients to detect when the paged resource's state changed</a> during the retrieval process.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   346
	As long as the <a>paged resource</a>'s state did not change during the retrieval process, the 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   347
	client's copy of the <a>paged resource</a>'s state will be as accurate as the server implementation
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   348
	allows it to be.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   349
	</p>  
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   350
	<p>
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   351
	If a paged resource <var>P</var> is a LDP-RS, 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   352
	the representation of each <a>in-sequence page resource</a> contains
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   353
	a subset of the triples in <var>P</var>, and a client can merge those graphs to combine them.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   354
	LDP allows paging of resources other than <a title="Linked Data Platform RDF Source">LDP-RSs</a>, 
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   355
	but does not specify how clients combine
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   356
	their representations.  See <a href="#ldpr" class="sectionRef"></a> for additional details.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   357
	</p>  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   358
	For readers
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   359
	familiar with paged feeds [[RFC5005]], a <a>page sequence</a> is similar to a paged feed
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   360
	and many of the same consideration (echoed above) apply.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   361
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   362
	
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   363
	<dt><dfn>In-sequence page resource</dfn></dt>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   364
	<dd>One LDPR in a <a>page sequence</a>, 
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   365
	which contains a subset of the state
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   366
	of another resource <var>P</var>, called the <a>paged resource</a>.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   367
	For readers
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   368
	familiar with paged feeds [[RFC5005]], an in-sequence page resource is similar to a feed document.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   369
	<p>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   370
	Note: the choice of terms was designed to help authors and readers clearly differentiate between
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   371
	the <a title="Paged resource"><em>resource being paged</em></a>, and the 
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   372
	<a title="In-sequence page resource"><em>individual page resources</em></a>, 
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   373
	in cases where both are mentioned in
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   374
	close proximity.  
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   375
	</p>
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   376
	<p>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   377
	Note: page sequences are described and named with respect to how they are traversed starting from the <a>paged resource</a>,
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   378
	using only <a>forward traversal</a>.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   379
	This <em>does not</em> imply anything more; the choice is arbitrary.
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   380
	For example, following forward links does not imply that resources later in the sequence are newer; the forward direction might
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   381
	correspond to moving forward or backward in time or along some other dimension, but any such relationship is server-specific.
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   382
	It is not implied by LDP Paging, 
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   383
	absent additional concrete assertions like those <a href="#ldpc-HTTP_GET">defined later</a> for LDPC representations.
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   384
	</p>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   385
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   386
	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   387
	<dt><dfn>first page link</dfn></dt>
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   388
	<dd>A link to the first <a title="In-sequence page resource">in-sequence page resource</a> <var>P<sub>1 (first)</sub></var>
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
   389
	of a <a>page sequence</a>.  The first page is the one that a LDP Paging server
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
   390
	redirects to (<code>303</code> response) in response
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   391
	to a retrieval request for the <a>paged resource</a>'s URI.
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   392
	Syntactically, a
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   393
	HTTP <code>Link &lt;<var>P<sub>1</sub></var>&gt;; rel="first"</code>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   394
	header [[!RFC5988]].
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   395
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   396
	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   397
	<dt><dfn>next page link</dfn></dt>
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   398
	<dd>A link to the next <a title="In-sequence page resource">in-sequence page resource</a> 
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   399
	of a <a>page sequence</a>.  Syntactically, a
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   400
	HTTP <code>Link &lt;<var>P<sub>i</sub></var>&gt;; rel="next"</code>
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   401
	header [[!RFC5988]] where 
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   402
	the context URI identifies some <var>P<sub>i=1 (first)...n-1 (next to last)</sub></var> and
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   403
	the target URI identifies <var>P<sub>i+1</sub></var>.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   404
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   405
	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   406
	<dt><dfn>last page link</dfn></dt>
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   407
	<dd>A link to the last <a title="In-sequence page resource">in-sequence page resource</a> <var>P<sub>n (last)</sub></var>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   408
	of a <a>page sequence</a>.  
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   409
	The last page is the page that terminates a <a>forward traversal</a>, because it contains no <a>next page link</a>.
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   410
	Syntactically, a
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   411
	HTTP <code>Link &lt;<var>P<sub>n</sub></var>&gt;; rel="last"</code>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   412
	header [[!RFC5988]].
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   413
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   414
	
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   415
	<dt><dfn>previous page link</dfn></dt>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   416
	<dd>A link to the previous <a title="In-sequence page resource">in-sequence page resource</a>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   417
	of a <a>page sequence</a>  Syntactically, a
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   418
	HTTP <code>Link &lt;<var>P<sub>i</sub></var>&gt;; rel="prev"</code>
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   419
	header [[!RFC5988]] where 
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   420
	the context URI identifies some <var>P<sub>i=2...n (last)</sub></var> and
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   421
	the target URI identifies <var>P<sub>i-1</sub></var>.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   422
	<p></p></dd>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   423
	
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   424
	<dt><dfn>paging link</dfn></dt>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   425
	<dd>Any of the links defined by LDP Paging: 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   426
	<a title="first page link">first page links</a>,
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   427
	<a title="next page link">next page links</a>,
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   428
	<a title="last page link">last page links</a>,
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   429
	<a title="previous page link">previous page links</a>.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   430
	<p></p></dd>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   431
	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   432
	<dt><dfn>forward traversal</dfn></dt>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   433
	<dd>The process of following <a title="next page link">next page links</a> from
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   434
	some starting point.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   435
	<p>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   436
	Note: "forward" should <i>not</i> be read to mean anything more than a name for one direction through the <a>page sequence</a>.
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   437
	For example, following forward links does not imply that resources later in the <a>page sequence</a> are newer; the forward direction might
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   438
	correspond to moving forward in time, but any such relationship is server-specific not implied by LDP Paging 
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   439
	absent additional concrete assertions like those <a href="#ldpc-HTTP_GET">defined later</a> for LDPC representations.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   440
	</p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   441
	<p></p></dd>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   442
	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   443
	<dt><dfn>backward traversal</dfn></dt>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   444
	<dd>The process of following <a title="previous page link">previous page links</a> from
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   445
	some starting point.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   446
	<p>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   447
	Note: "backward" should <i>not</i> be read to mean anything more than a name for one direction through the <a>page sequence</a>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   448
	</p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   449
	<p></p></dd>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   450
	
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   451
  </dl>
601
5fc4b4b9efc2 LDP: RS>LDPC in membership definitions; paging: incorporate todo list in prolog and fix respec messages
John Arwe
parents: 567
diff changeset
   452
</section>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   453
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   454
<section id="conventions">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   455
<h2>Conventions Used in This Document</h2>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   456
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   457
	<p>The namespace for LDP Paging is <code>http://www.w3.org/ns/ldp#</code>.</p>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   458
	<p>Sample resource representations are provided in <code>text/turtle</code>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   459
		format [[turtle]].</p>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   460
	<p>Commonly used namespace prefixes:</p>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   461
	<pre style="word-wrap: break-word; white-space: pre-wrap;">	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   462
	@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   463
	@prefix foaf:    &lt;http://xmlns.com/foaf/0.1/&gt;.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   464
	@prefix rdf:     &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   465
	@prefix ldp:     &lt;http://www.w3.org/ns/ldp#&gt;.
567
c3cd6b32f9cd fixed the next/prev normative links by adding html5 to each; 5988 defines the Link header but not those link relations
John Arwe
parents: 532
diff changeset
   466
	</pre>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   467
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   468
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   469
    
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   470
<section id='conformance'>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   471
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   472
<p>The status of the sections of Linked Data Platform Paging 1.0 (this document) is as follows:</p>
696
5fcf74e0be4a continue chipping away at editorial stuff
John Arwe
parents: 695
diff changeset
   473
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   474
<ul>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   475
  <li><a href="#intro" class="sectionRef"></a>: <b>non-normative</b></li>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
   476
  <li><a href="#terms" class="sectionRef"></a>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   477
	<ul>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   478
	  <li><a href="#terms-from-ldp" class="sectionRef"></a>: <b>non-normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   479
	  <li><a href="#terms-from-paging" class="sectionRef"></a>: <b>normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   480
	  <li><a href="#conventions" class="sectionRef"></a>: <b>normative</b></li>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   481
	</ul>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
   482
  </li>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   483
  <li><a href="#conformance" class="sectionRef"></a>: <b>normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   484
  <li><a href="#ldpp-ex-mx" class="sectionRef"></a>: <b>non-normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   485
  <li><a href="#ldppclient" class="sectionRef"></a>: <b>normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   486
  <li><a href="#ldpr" class="sectionRef"></a>: <b>normative</b></li>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   487
  <li><a href="#ldpc" class="sectionRef"></a>: <b>normative</b></li>  
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   488
  <li><a href="#security" class="sectionRef"></a>: <b>non-normative</b></li> 
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   489
  <li><a href="#ldpr-impl" class="sectionRef"></a>: <b>non-normative</b></li> 
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   490
  <li><a href="#acks" class="sectionRef"></a>: <b>non-normative</b></li> 
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   491
  <li><a href="#history" class="sectionRef"></a>: <b>non-normative</b></li> 
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   492
  <li><a href="#normative-references" class="sectionRef"></a>: <b>normative</b></li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   493
  <li><a href="#informative-references" class="sectionRef"></a>: <b>non-normative</b></li>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   494
</ul>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   495
567
c3cd6b32f9cd fixed the next/prev normative links by adding html5 to each; 5988 defines the Link header but not those link relations
John Arwe
parents: 532
diff changeset
   496
<p>A conforming <b><dfn>LDP Paging client</dfn></b> is a conforming LDP client [[!LDP]] that follows the rules defined by LDP Paging.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   497
</p>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   498
567
c3cd6b32f9cd fixed the next/prev normative links by adding html5 to each; 5988 defines the Link header but not those link relations
John Arwe
parents: 532
diff changeset
   499
<p>A conforming <b><dfn>LDP Paging server</dfn></b> is a conforming LDP server [[!LDP]] that follows the rules defined by LDP Paging.</p>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   500
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   501
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   502
<section class="informative" id="ldpp-ex-mx">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   503
<h1>Example paging message exchanges</h1>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   504
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   505
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   506
		Example Co.'s customer
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   507
		relationship data is identified by the URI <code>http://example.org/customer-relations</code>,
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   508
		and is retrievable using the same URI.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   509
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   510
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   511
<section id="ldpp-ex-no-paging">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   512
<h2>Traditional flow without paging</h2>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   513
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   514
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   515
		A standard HTTP client that knows nothing about LDP paging obtains a representation of the
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   516
		resource in the usual way.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   517
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   518
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   519
	<em>Request</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   520
<pre class="example">GET /customer-relations HTTP/1.1
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   521
Host: example.org
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   522
Accept: text/turtle
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   523
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   524
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   525
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   526
		The server response is: 
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   527
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   528
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   529
<em>Response:</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   530
<pre class="example" id="ldpp-ex-no-paging-resp">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   531
HTTP/1.1 200 OK
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   532
Content-Type: text/turtle
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   533
ETag: "_87e52ce291112"
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   534
Link: &lt;http://www.w3.org/ns/ldp#Resource&gt;; rel="type"
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   535
Allow: GET,OPTIONS,HEAD
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   536
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   537
@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   538
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   539
@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   540
@prefix ldp: &lt;http://www.w3.org/ns/ldp#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   541
@prefix o: &lt;http://example.org/ontology/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   542
@base &lt;http://example.org/customer-relations&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   543
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   544
&lt;&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   545
   a o:CustomerRelations;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   546
   dcterms:title "The customer information for Example Co.";
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   547
   o:client &lt;#JohnZSmith&gt;, &lt;#BettyASmith&gt;, &lt;#JoanRSmith&gt;,
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   548
            &lt;#GlenWSmith&gt;, &lt;#AlfredESmith&gt;. 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   549
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   550
&lt;#JohnZSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   551
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   552
   o:status o:ActiveCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   553
   foaf:name "John Z. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   554
   
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   555
&lt;#BettyASmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   556
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   557
   o:status o:PreviousCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   558
   foaf:name "Betty A. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   559
 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   560
 &lt;#JoanRSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   561
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   562
   o:status o:PotentialCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   563
   foaf:name "Joan R. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   564
 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   565
&lt;#GlenWSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   566
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   567
   o:status o:ActiveCustomer, o:GoldCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   568
   foaf:name "Glen W. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   569
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   570
&lt;#AlfredESmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   571
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   572
   o:status o:ActiveCustomer, o:BronzeCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   573
   foaf:name "Alfred E. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   574
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   575
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   576
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   577
		As long as the resource being retrieved is small enough that the server can form its
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   578
		representation without running into implementation limits on memory etc., and as long
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   579
		as the client is likewise able to consume these representations, this pattern works
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   580
		fine.  Indeed, it's by far the most common pattern on the Web.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   581
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   582
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   583
		At the point where server and/or client constraints or consumption preferences come into play, however, 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   584
		something else is needed.  LDP Paging addresses this need by giving clients and 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   585
		servers the ability to partition representations into smaller pieces, transfer
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   586
		as many as the client needs (potentially a small subset of the resource's full
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   587
		state), and allows the client to reassemble the pieces (or not) as it prefers.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   588
		One sees this pattern in contexts such as search page results, as one common
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   589
		example.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   590
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   591
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   592
</section>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   593
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   594
<section id="ldpp-ex-paging-303">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   595
<h2>Simple paging flow using redirects</h2>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   596
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   597
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   598
		The simplest possible solution would be to redefine the meaning of the existing
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   599
		URI <code>http://example.org/customer-relations</code> from "all customer relations information"
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   600
		to "the first subset of all customer relations information".  This would require changes to
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   601
		any existing clients whose code was built using the original definition however, so it's 
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   602
		more likely that Example Co. would mint a new URI for "the first subset", define a way to 
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   603
		find subsequent subsets, and have clients use this new "first subset" URI approach.
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   604
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   605
	<p>
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   606
		The "first subset" URI approach does not solve the problem of migrating existing clients from the old
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   607
		"all" to the new "first subset" semantic; neither would a <code>303 See Other</code> redirect
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   608
		from the old to the new URI, given the 
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   609
		<a href="http://www.w3.org/2001/tag/issues.html#httpRange-14">widespread historical client practice</a> of automatically
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   610
		following <code>303</code> redirects and treating the redirected-to resource as equivalent
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   611
		to the original, contrary to HTTP.  The safe route is to have clients explicitly tell the server that they
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   612
		are capable of handling the "first subset" semantic on the redirected-to URI; this is what
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   613
		LDP Paging does.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   614
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   615
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   616
		A client aware of LDP paging obtains a representation of the
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   617
		resource in the usual way, and also signals its ability to handle redirection to a first-page resource:
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   618
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   619
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   620
<em>Request</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   621
<pre class="example">GET /customer-relations HTTP/1.1
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   622
Host: example.org
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   623
Accept: text/turtle
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   624
Prefer: return=representation; max-triple-count="500"
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   625
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   626
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   627
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   628
		The server's response contains a <code>303 See Other</code> status code and
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   629
		a <code>Location: http://example.org/customer-relations?page1</code> HTTP response header
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   630
		identifying the target resource, as shown below:
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   631
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   632
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   633
<em>Response:</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   634
<pre class="example" id="ldpp-ex-paging-303-resp1">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   635
HTTP/1.1 303 See Other
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   636
Location: &lt;http://example.org/customer-relations?page1&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   637
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   638
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   639
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   640
		At this point the client does not know if the target
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   641
		resource is "all" or "the first subset"; it has to retrieve the resource to know.
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   642
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   643
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   644
<em>Request</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   645
<pre class="example">GET /customer-relations?page1 HTTP/1.1
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   646
Host: example.org
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   647
Accept: text/turtle
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   648
Prefer: return=representation; max-triple-count="500"
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   649
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   650
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   651
		The server's response is shown below:
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   652
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   653
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   654
<em>Response:</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   655
<pre class="example" id="ldpp-ex-paging-303-resp2">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   656
HTTP/1.1 200 OK
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   657
Content-Type: text/turtle
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   658
ETag: "_87e52ce291112"
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   659
Link: &lt;http://www.w3.org/ns/ldp#Resource&gt;; rel="type",
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   660
      &lt;http://www.w3.org/ns/ldp#Page&gt;; rel="type"
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   661
Link: &lt;http://example.org/customer-relations?p=2&gt;; rel="next"
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   662
Link: &lt;http://example.org/customer-relations&gt;; rel="canonical"; etag="customer-relations-v1"
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   663
Allow: GET,OPTIONS,HEAD
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   664
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   665
@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   666
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   667
@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   668
@prefix ldp: &lt;http://www.w3.org/ns/ldp#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   669
@prefix o: &lt;http://example.org/ontology/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   670
@base &lt;http://example.org/customer-relations&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   671
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   672
&lt;&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   673
   a o:CustomerRelations;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   674
   dcterms:title "The customer information for Example Co.";
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   675
   o:client &lt;#JohnZSmith&gt;, &lt;#BettyASmith&gt;, &lt;#JoanRSmith&gt;. 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   676
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   677
&lt;#JohnZSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   678
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   679
   o:status o:ActiveCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   680
   foaf:name "John Z. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   681
&lt;#BettyASmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   682
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   683
   o:status o:PreviousCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   684
   foaf:name "Betty A. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   685
 &lt;#JoanRSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   686
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   687
   o:status o:PotentialCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   688
   foaf:name "Joan R. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   689
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   690
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   691
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   692
		From this response, the client knows that more data exists and where to find it.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   693
		The server determines the size of the pages using application-specific methods not defined
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   694
		within this specification, with the client's <code>max-triple-count</code> preference as one
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   695
		input; the simplest method is to make the server's page size equal
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   696
		to the client's preference.  In this example, the server chooses a smaller value so 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   697
		there is a second page.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   698
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   699
	<ul>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   700
	<li>
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   701
		The <code>Link: &lt;http://example.org/customer-relations&gt;; rel="canonical"</code>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   702
		response header tells the client which resource <code>&lt;http://example.org/customer-relations?page1&gt;</code>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   703
		is a page of.  The <code>etag="customer-relations-v1"</code> parameter value gives the client a way to know,
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   704
		during its page traversal, whether or not the canonical <a>paged resource</a> has changed; not all
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   705
		clients will use this information, but it is there for those that can make use of it.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   706
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   707
	<li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   708
		The <code>Link: &lt;http://www.w3.org/ns/ldp#Page&gt;; rel="type"</code>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   709
		response header tells the client that this is one <a>in-sequence page resource</a>, and therefore it
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   710
		needs to examine the other response headers to see if more data existed in the 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   711
		canonical <a>paged resource</a> when the response
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   712
		was generated by the server.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   713
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   714
	<li>
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   715
		The <code>Link: &lt;http://example.org/customer-relations?p=2&gt;; rel="next"</code>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   716
		response header tells the client that at least one more <a>in-sequence page resource</a> exists,
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   717
		and how to retrieve its representation.  The next page link's target URI is 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   718
		defined by the server and is not constrained by this specification.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   719
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   720
	</ul>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   721
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   722
		The following example shows the message exchange for retrieving
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   723
		the next page:
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   724
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   725
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   726
<em>Request</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   727
<pre class="example">GET /customer-relations?p=2 HTTP/1.1
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   728
Host: example.org
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   729
Accept: text/turtle
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   730
Prefer: return=representation; max-triple-count="500"
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   731
</pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   732
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   733
		The server's response is shown below: 
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   734
	</p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   735
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   736
<em>Response:</em>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   737
<pre class="example" id="ldpp-ex-paging-303-resp3">
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   738
HTTP/1.1 200 OK
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   739
Content-Type: text/turtle
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   740
ETag: "8_7e52ce291112"
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   741
Link: &lt;http://www.w3.org/ns/ldp#Resource&gt;; rel="type",
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   742
      &lt;http://www.w3.org/ns/ldp#Page&gt;; rel="type"
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   743
Link: &lt;http://example.org/customer-relations&gt;; rel="canonical"; etag="customer-relations-v1"
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   744
Allow: GET,OPTIONS,HEAD
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   745
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   746
@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   747
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   748
@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   749
@prefix ldp: &lt;http://www.w3.org/ns/ldp#&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   750
@prefix o: &lt;http://example.org/ontology/&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   751
@base &lt;http://example.org/customer-relations&gt;.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   752
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   753
&lt;&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   754
   o:client &lt;#GlenWSmith&gt;, &lt;#AlfredESmith&gt;. 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   755
 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   756
&lt;#GlenWSmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   757
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   758
   o:status o:ActiveCustomer, o:GoldCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   759
   foaf:name "Glen W. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   760
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   761
&lt;#AlfredESmith&gt;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   762
   a foaf:Person;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   763
   o:status o:ActiveCustomer, o:BronzeCustomer;
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   764
   foaf:name "Alfred E. Smith".
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   765
 </pre>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   766
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   767
	<p>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   768
		In this example, there are only two customers provided in the
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   769
		second page.  
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   770
	</p>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   771
		<!-- DONE: show it both ways; if a competing change hit the container, or not.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   772
			 6.2.2.7's non-normative note covers this case.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   773
		-->
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   774
	<ul>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   775
	<li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   776
		The <code>Link: &lt;http://www.w3.org/ns/ldp#Page&gt;; rel="type"</code>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   777
		response header tells the client that this is one <a>in-sequence page resource</a>, and therefore it
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   778
		needs to examine the other response headers to see if more data existed in the 
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   779
		canonical <a>paged resource</a> when the response
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   780
		was generated by the server.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   781
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   782
	<li>
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   783
		The absence of a <code>Link: &lt;http://example.org/customer-relations?p=2&gt;; rel="next"</code>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   784
		response header tells the client that no more <a>in-sequence page resource</a>s existed in this <a>paged resource</a>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   785
		at the time the response was generated; repeating the request might result in a representation with links to more pages,
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   786
		if other processes are updating the customer relations data.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   787
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   788
	<li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   789
		Since the <code>etag="customer-relations-v1"</code> parameter value of the canonical <a>paged resource</a>
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   790
		did not change across the client's process of retrieving the entire <a>page sequence</a>, it is assured that 
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   791
		the merged response representations are equivalent to what it would have received had the server
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   792
		provided the entire representation of the <a>paged resource</a> in a single <code>200 OK</code> response.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   793
		The client has <em>no assurance</em> that the current state of the <a>paged resource</a> remains unchanged
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   794
		since the final page's representation was generated.  For example, after the server constructs the final page representation, another
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   795
		actor could delete <code>client#BettyASmith</code> from the server.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   796
	</li>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   797
	</ul>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   798
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   799
</section>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   800
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   801
<section id="ldpp-ex-paging-other-links">
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   802
<h2>Optional paging links</h2>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   803
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   804
	<p>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   805
		The preceding paging examples in this section have all assumed that only <a>forward traversal</a>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   806
		is supported by the server, to reduce complexity.
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   807
		A server might also support <a>backward traversal</a> through its pages, and/or direct access to the 
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   808
		<a title="first page link">first page</a> and/or <a title="last page link">last page</a> from any <a>in-sequence page resource</a>.
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   809
		Those options would be reflected by adding some combination of the links below, 
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   810
		or equivalent semantically equivalent syntactic variations of them, to the response messages.
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   811
	</p>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   812
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   813
	<ul>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   814
	<li>
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
   815
		The <a title="first page link">first page</a>'s <a href="#ldpp-ex-paging-303-resp2">response message</a> might also have the following links:
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   816
<pre class="example">
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   817
Link: &lt;&gt;; rel="first"
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   818
Link: &lt;http://example.org/customer-relations?p=2&gt;; rel="last"
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   819
</pre>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   820
	</li>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   821
	<li>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   822
		Any <a>in-sequence page resource</a>'s response message, including the <a title="first page link">first page</a> and the <a title="last page link">last page</a>,
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   823
		might also have the following links:
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   824
<pre class="example">
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   825
Link: &lt;http://example.org/customer-relations?page1&gt;; rel="first"
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   826
Link: &lt;http://example.org/customer-relations?p=2&gt;; rel="last"
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   827
</pre>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   828
	</li>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   829
	<li>
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
   830
		The <a title="last page link">last page</a>'s <a href="#ldpp-ex-paging-303-resp3">response message</a> might also have the following links:
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   831
<pre class="example">
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   832
Link: &lt;http://example.org/customer-relations?page1&gt;; rel="first"
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   833
Link: &lt;http://example.org/customer-relations?page1&gt;; rel="prev"
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
   834
Link: &lt;&gt;; rel="last"
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   835
</pre>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   836
	</li>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   837
	</ul>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   838
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   839
</section>
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
   840
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   841
</section> <!-- Example message exchanges -->
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   842
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   843
<section id="ldppclient">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   844
<h1>Linked Data Platform Paging Clients</h1>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   845
<p>All of the following are conformance rules for <a title="LDP Paging client">LDP Paging Clients</a>.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   846
</p>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   847
<section><h2>General requirements</h2>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   848
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   849
	<section id="ldpp-client-advertise"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a> MUST
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   850
		<a href="#ldpp-hints">advertise their ability to support LDP Paging</a> on all retrieval requests that normally result in
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   851
		a response containing a representation.
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   852
	</h2>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   853
	</section>
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   854
		
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   855
	<section id="ldpp-client-traversal"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a> MUST
696
5fcf74e0be4a continue chipping away at editorial stuff
John Arwe
parents: 695
diff changeset
   856
		be capable of at least one of <a>forward traversal</a> and/or <a>backward traversal</a>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   857
	</h2>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   858
	</section>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   859
	
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   860
	<section id="ldpp-client-linkschg"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a> MUST NOT
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   861
		assume that any <a title="In-sequence page resource">in-sequence page resource's</a> <a title="paging link">paging links</a>
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   862
		will remain unchanged when the <a title="In-sequence page resource">in-sequence page resource</a>
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   863
		is retrieved more than once.  Such an assumption would 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   864
		conflict with a server's ability to 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   865
		<a href="#ldpr-pagingGET-sequences-change">add pages to a sequence</a> as the <a>paged resource</a> changes, for example.
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   866
	</h2>
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   867
	</section>
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   868
	
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   869
	<section id="ldpp-client-4xxok"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a> MUST NOT
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   870
		assume that any <a title="In-sequence page resource">in-sequence page resource's</a> <a title="paging link">paging links</a>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
   871
		will always be accessible.</h2>
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   872
		<blockquote><em>Non-normative note:</em> 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   873
		Such an assumption would 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   874
		conflict with a server's ability to <a href="#ldpr-pagingGET-sequences-change">remove pages from a sequence</a> 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   875
		as the <a>paged resource</a> changes, for example.
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   876
		One consequence of this is that clients can receive responses with <code>4xx</code> status codes  
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   877
		when following page links, purely due to timing issues and without any error on the part of the client
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   878
		or the server.  Such a response would be unusual, and would likely signal an error, 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   879
		if the response also indicates that the <a title="Paged resource">paged resource's</a> 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   880
		<a href="#ldpr-notify-changes">state has <i>not</i> changed</a> 
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   881
		while the client was traversing its <a title="In-sequence page resource">pages</a>.
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
   882
		Servers might also limit the lifetime of a particular <a>page sequence</a>, and client requests after the server has
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
   883
		abandoned that sequence are likely to result in <code>410 Gone</code> or other <code>4xx</code> status codes.
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
   884
		</blockquote>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
   885
	
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   886
	</section>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   887
	
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   888
	<section id="ldpp-client-paging-incomplete"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a>  
738
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
   889
		SHOULD NOT treat a page sequence as equivalent to the <a title="paged resource">paged resource</a> 
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
   890
		when the <a href="#ldpr-notify-changes">paged resource changed</a> 
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
   891
		<a href="#ldpr-guarantee-show-unchanged">during retrieval of the page sequence</a>.
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   892
	</h2></section>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   893
731
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   894
	<section id="ldpp-client-nofollow-303"><h2 class="normal"><a title="LDP Paging client">LDP Paging clients</a>  
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   895
		MUST NOT treat the target of a <code>303 See Other</code> redirection as a replacement for the original resource.  
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   896
		That is, they cannot treat a <code>303</code> status code as if it was a 
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   897
		<code>307 Temporary Redirect</code> [[!RFC7231]] or <code>308 Permanent Redirect</code> [[!RFC7238]],
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   898
		as [[RFC7231]] makes clear.  This is critical to a client's ability to distinguish between the representation
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   899
		of a single <a>in-sequence page resource</a> and that of the <a>paged resource</a> when a <a>LDP Paging server</a>
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
   900
		uses <a href="#ldpr-status-code">redirection</a> as a way to initiate paging.
731
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   901
	</h2></section>
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
   902
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   903
</section>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   904
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   905
<section id="ldpp-hints">
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   906
<h2>Client preferences</h2>
699
69b72e31eb69 Move example up to full chapter, and show the evolution/composition from nothing to 303 to 2NN
John Arwe
parents: 698
diff changeset
   907
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   908
		LDP Paging clients <a href="#ldpp-client-advertise">must provide paging-related hints</a> 
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   909
		in order to influence an LDP Paging server's choices.
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   910
	</p>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   911
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   912
	<p>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   913
		This specification introduces new 
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   914
		parameters on the HTTP <code>Prefer</code> request header's
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   915
		<code>return=representation</code> preference [[!RFC7240]], <a href="#ldpp-client-advertise">used by clients</a> to 
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   916
		supply a preference that helps the server form a response that is most appropriate to 
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   917
		the client's needs.  The presence of any parameter defined in this section serves several purposes:
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   918
		<ul>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   919
		<li>It signals the client's support for LDP Paging to the request server</li>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   920
		<li>It communicates the client's maximum desired size for a response representation</li>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   921
		</ul>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   922
	</p>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   923
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   924
	<section id="ldpr-cli-paging"><h2 class="normal">
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   925
		<a title="LDP client">LDP clients</a> SHOULD 
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   926
		be capable of processing successful HTTP <code>GET</code> responses formed by a LDP server
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   927
		that independently initiated paging, returning a page of representation instead of full resource
784
c4297f85e408 Updated for LC2 publication
Steve Speicher <sspeiche@gmail.com>
parents: 771
diff changeset
   928
		representation [[!LDP]].
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   929
	</h2>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   930
	</section> 
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   931
	
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   932
	<p>
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   933
		LDP Paging defines <code>max-triple-count</code>, <code>max-member-count</code>, and <code>max-kbyte-count</code> 
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   934
		as new parameters on the existing 
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   935
		HTTP <code>Prefer</code> request header's
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   936
		<code>return=representation</code> preference [[!RFC7240]]; the presence of any of these parameters
730
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
   937
		on the preference, not the preference alone, is what indicates to a server that the client
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
   938
		supports LDP Paging.
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   939
		A client communicates its hint(s) to the server by adding the
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   940
		request header with a 
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   941
		<code>return=representation</code> preference that includes any of the following preference parameters
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   942
		<table class="indented">
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   943
		<tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   944
		<td> <code>max-triple-count</code> </td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   945
		<td> The maximum decimal number of triples the client wishes to appear on each page.  </td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   946
		</tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   947
		<tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   948
		<td> <code>max-kbyte-count</code> </td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   949
		<td> The maximum decimal number of kilobytes (1024 byte units) the client wishes to receive as the page's representation.  </td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   950
		</tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   951
		<tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   952
		<td> <code>max-member-count</code> </td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   953
		<td> The maximum decimal number of members the client wishes to appear on each page.
848
138a9b225439 Clarified "new protocol" in 4.2, hyper-linked max-member-count to LDPCs per 10/10 public comments email
John Arwe
parents: 840
diff changeset
   954
				This parameter is only meaningful for paged <a title="Linked Data Platform Container">LDPCs</a>.
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   955
		</td>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   956
		</tr>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   957
		</table>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   958
		<blockquote>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   959
		<p>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   960
		The generic preference BNF [[!RFC7240]] allows either a quoted string or a token as the value of a 
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
   961
		preference parameter.
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   962
		</p>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   963
		</blockquote>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   964
	</p>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   965
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   966
	<p id="prefer-examples-500-triples">
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   967
	Clients interested in receiving at most 500 RDF triples per <a title="in-sequence page resource">page</a>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
   968
	would use add this HTTP header on a <code>GET</code> request, as shown in <a href="#ldpp-ex-paging-303" class="sectionRef"></a>:
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
   969
	<code>Prefer: return=representation; max-triple-count="500"</code>
695
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   970
	</p>
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   971
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   972
</section> <!-- Paging hints -->
420014488f12 Resolve a set of editorial to-dos
John Arwe
parents: 686
diff changeset
   973
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   974
</section> <!-- Client constraints -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   975
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   976
<section id="ldpr">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   977
<h1>Linked Data Platform Resources</h1>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
   978
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   979
<section class="informative" id="ldpr-PagingIntro">
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   980
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   981
<h3>Paging considerations</h3>
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   982
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   983
	<p>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   984
		As <a href="#intro">described</a> <a href="#ldpp-ex-mx">previously</a>,
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   985
		paging logically breaks up a <a>paged resource</a> 
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   986
		into a list of <a title="In-sequence page resource">in-sequence page resources</a> (pages) whose representations the client can retrieve, and serves each
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   987
		page with links to other <a title="In-sequence page resource">pages in the sequence</a>.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   988
		Clients inspect each response to see if additional pages
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   989
		are available; paging does not affect the choice of HTTP status code.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   990
		Clients generally have no insight into the allocation of information to pages, 
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   991
		although in <a href="#ldpc">some cases currently defined only for LDPCs</a> the server can expose its
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   992
		algorithm.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   993
	</p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   994
	<p>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
   995
		Some clients will be interested in knowing whether or not competing requests altered the
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   996
		<a>paged resource</a> while the client was retrieving pages, since LDP paging does not guarantee
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
   997
		that those alterations were reflected in any <a>in-sequence page resource</a> received by the client.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   998
		Regardless of the server implementation, LDP only guarantees that while traversing a series of pages that
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
   999
		the client observes data that is equivalent to a database that uses 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1000
		read committed isolation [[READ-COMMITTED]]; 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1001
		specifically, clients can observe 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1002
		non-repeatable reads [[NON-REPEATABLE-READS]] while traversing pages served by 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1003
		<a title="LDP Paging server">LDP Paging servers</a>.
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1004
		LDP Paging does <a href="#ldpr-guarantee-show-unchanged">guarantee</a>, however, that any information in the LDPR continuously present (neither added nor deleted) in the 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1005
		<a title="Paged resource">paged resource</a> across the entire period of time when the client is retrieving pages will
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1006
		be present in at least one <a>in-sequence page resource</a>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1007
	</p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1008
	<p>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1009
		LDP Paging defines a mechanism by which <a href="#ldpr-notify-changes">clients can detect that the paged resource has been changed</a> so that they can, for example,
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1010
		abandon a page traversal as early as possible.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1011
		This provides a stronger guarantee in certain cases
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1012
		than the one described for paged feeds [[RFC5005]], but it does require the client
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1013
		to detect when the condition holds.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1014
		Paging <i>does not guarantee</i> that it will ever be possible to successfully
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1015
		retrieve all the <a>in-sequence page resource</a>s without the <a>paged resource</a>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1016
		being added to or changed, so clients requiring such a guarantee 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1017
		may not find all <a>paged resource</a>s usable in practice.
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1018
		A detailed example was provided in <a href="#ldpp-ex-mx" class="sectionRef"></a>.
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1019
		See <a href="#ldpr-impl" class="sectionRef"></a> for server implementation considerations.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1020
	</p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1021
</section>
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1022
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1023
<section id="ldpr-PagingGET">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1024
<h3>HTTP GET</h3>
696
5fcf74e0be4a continue chipping away at editorial stuff
John Arwe
parents: 695
diff changeset
  1025
	<p>In addition to the requirements on HTTP <code>GET</code> for LDPRs [[!LDP]], 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1026
		<a title="LDP Paging server">LDP Paging servers</a> must 
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1027
		also follow the requirements in this section for all <a title="Paged resource">paged resources</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1028
		and their associated <a title="in-sequence page resource">in-sequence page resources</a>.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1029
	</p>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1030
		
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1031
	<section id="ldpr-page-large"><h2 class="normal">
696
5fcf74e0be4a continue chipping away at editorial stuff
John Arwe
parents: 695
diff changeset
  1032
		<!-- Remove this clause? No, it was MOVED here from LDP, and as a Must we'd need to define 'large' to test compliance. -->
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1033
		<a title="LDP Paging server">LDP Paging servers</a> SHOULD allow clients to retrieve large LDP-RSs in
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1034
		pages.
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1035
	</h2></section><!-- Was 4.2.14 / #ldpr-4_2_14 -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1036
	
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1037
	<section id="ldpr-split-any-resource"><h2 class="normal">
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1038
		<a title="LDP Paging server">LDP Paging servers</a> MAY 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1039
		treat any resource (LDP-RS or not) as a <a>paged resource</a>.
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1040
	</h2></section><!-- Was 4.2.15 / #ldpr-4_2_15 -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1041
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1042
	<section id="ldpr-split-any-time"><h2 class="normal">
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1043
		<a title="LDP Paging server">LDP Paging servers</a> MAY 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1044
		vary their treatment of any resource (LDP-RS or not) as a <a>paged resource</a> over time.
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1045
		In other words, given two attempts to retrieve the same resource at different points
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1046
		in time, the server can choose to return a representation of the first page at one time and 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1047
		of the entire resource at a different time.  Clients distinguish between these cases based
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1048
		on the <a href="#ldpr-status-code">status code</a> 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1049
		and <a href="#ldpr-pagingGET-page-type-reqd">response headers</a>.
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1050
	</h2></section>
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1051
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1052
	<section id="ldpp-prefer"><h2 class="normal"><a title="LDP Paging server">LDP Paging servers</a>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1053
		SHOULD respect all of a client's <a href="#ldpp-hints">LDP Paging defined hints</a>, for example 
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1054
		<a href="#ldpp-hints">the largest page size</a>
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1055
		the client is interested in processing,
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1056
		to influence the amount of data returned in representations.</h2> 
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1057
	<blockquote>
730
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
  1058
		<em>Non-normative note</em>: LDP server implementers should be careful not to interpret a 
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
  1059
		<code>Prefer return=representation</code> request header that <em>lacks</em> any
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
  1060
		parameters defined here as a client's request for a <a>paged resource</a>.
730
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
  1061
		<a href="#ldpp-hints">A client's hints</a> indicate LDP Paging support <em>only</em>
748
201bc5d76096 max-triple-count, max-record-count, max-kbyte-count with parms being integers
Arwe
parents: 742
diff changeset
  1062
		when at least one of the preference parameters defined by this specification is present.
730
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
  1063
	</blockquote>
492ad8a031b9 Updates to address public review comment
John Arwe
parents: 715
diff changeset
  1064
	<blockquote>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1065
		<em>Non-normative note</em>: LDP server implementers should carefully consider the effects of these
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1066
		preferences on caching, as described in section 2 of [[!RFC7240]].
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1067
	</blockquote>
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1068
	<blockquote>
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1069
		<em>Non-normative note</em>: [[!RFC7240]] recommends that server implementers include a 
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1070
		<code>Preference-Applied</code> response header when the client cannot otherwise determine the server's
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1071
		behavior with respect to honoring hints from the response content.
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1072
	</blockquote>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1073
	</section>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1074
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1075
	<section id="ldpp-prefer-unrecognized"><h2 class="normal">
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1076
		<a title="LDP Paging server">LDP Paging servers</a> MAY 
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1077
		ignore a <a href="#ldpp-hints">page size hints</a> whose value is zero, 
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1078
		and process the request as if no maximum desired size was specified; in the latter case the server
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1079
		can select whatever page size it deems appropriate, or choose not to page the resource at all.
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1080
	</h2></section>
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
  1081
			
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1082
	<section id="ldpr-status-code"><h2 class="normal">
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1083
			<a title="LDP Paging server">LDP Paging servers</a> SHOULD NOT
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
  1084
			initiate paging unless the client has indicated it understands LDP Paging.
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1085
			<a title="LDP Paging server">LDP Paging servers</a> initiating paging SHOULD respond
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1086
			to successful <code>GET</code> requests with any <a title="Paged resource">paged resource</a> 
786
218a3a675085 Paging HTML validation fixes
Steve Speicher <sspeiche@gmail.com>
parents: 784
diff changeset
  1087
			as the <code>Request-URI</code> in one of the following ways:</h2>
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1088
			<ul>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1089
			<li>
875
3e783666cb56 Removed "at risk" content for "2NN Contents of Related" status code and usage
Steve Speicher <sspeiche@gmail.com>
parents: 874
diff changeset
  1090
				If the client supports paging, respond with 
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1091
				status code <code>303 See Other</code> and a <code>Location</code> response header that identifies
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1092
				the first <a>in-sequence page resource</a>.
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1093
				The only standard means defined by LDP paging for a client to signal a server that the client
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1094
				understands paging is via the <a href="#ldpp-hints">client preference</a> defined for this purpose;
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1095
				other implementation-specific means could also be used.
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1096
			</li>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1097
			<li>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1098
				If the server is willing to provide a non-paged representation, respond
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1099
				with an appropriate status code (likely <code>200 OK</code>) and the potentially large
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1100
				non-paged representation.
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1101
			</li>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1102
			<li>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1103
				Either reject the request, most likely with a <code>4xx</code> status code,
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1104
				or (keeping in mind the note below)
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1105
				initiate paging as described above with a <code>303</code> status code, or
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1106
				choose another status code appropriate to the specific situation.
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1107
			</li>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1108
			</ul>
786
218a3a675085 Paging HTML validation fixes
Steve Speicher <sspeiche@gmail.com>
parents: 784
diff changeset
  1109
			
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1110
			<blockquote>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1111
				<em>Non-normative note:</em>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1112
				<a title="LDP Paging server">LDP Paging servers</a> could choose to make any resource
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1113
				available <em>only</em> as a paged resource.  
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1114
				In so doing, when interacting with clients <em>unaware</em> of LDP Paging, 
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1115
				if the server initiates paging anyway then it runs the risk
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1116
				that an ill-behaved client will automatically follow a 
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1117
				<code>303 See Other</code> redirect and believe via the subsequent
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1118
				<code>200 OK</code> that it has obtained a complete representation of the <a>paged resource</a>
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1119
				rather than of a single <a>in-sequence page resource</a>.
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1120
				<a title="LDP Paging client">LDP Paging clients</a> <a href="#ldpp-client-nofollow-303">will not follow redirects in this way</a>,
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1121
				but some existing HTTP clients are known to treat <code>303 See Other</code> redirects as if they were 
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1122
				equivalent to the original request-URI, despite this being explicitly disclaimed in [[RFC7231]].
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1123
			</blockquote>
786
218a3a675085 Paging HTML validation fixes
Steve Speicher <sspeiche@gmail.com>
parents: 784
diff changeset
  1124
	</section>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1125
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1126
	<section id="ldpr-guarantee-show-unchanged"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1127
		<a title="LDP Paging server">LDP Paging servers</a> MUST 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1128
		ensure that all state present in the <a>paged resource</a> throughout a client's <em>entire</em> traversal operation
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1129
		is represented in at least one <a>in-sequence page resource</a>.  In other words, whatever subset of the 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1130
		<a>paged resource</a> that is <em>not added, updated, or removed during the client's traversal</em>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1131
		of its pages has to be present in one of the pages.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1132
		</h2>
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1133
		<blockquote><em>Non-normative note:</em> 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1134
		As a consequence, if the <a>paged resource</a> does not change <em>at all</em> during the traversal, 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1135
		then the client has a complete view of its state as given by the negotiated response media type
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1136
		<em>at the point in time when the final page was retrieved</em>.  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1137
		If the <a>paged resource</a> <em>does</em> change during the traversal, then only the portions that
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1138
		were actually updated will differ; the client has no LDP Paging provided means for knowing in what
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1139
		way(s) its view differs from that of the server in this case.  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1140
		</blockquote>
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1141
		<blockquote><em>Non-normative note:</em> 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1142
		When the <a>paged resource</a> is an LDP-RS, 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1143
		the expectation is that all triples untouched by changes to the <a>paged resource</a> have been
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1144
		given to the client during the traversal; it is possible that some subset of the changed triples, including all or none of them,
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1145
		have been provided to the client, but the client has no way to know which.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1146
		</blockquote>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1147
	</section>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1148
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1149
	<!-- 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1150
	<div class="ldp-issue-pending" id="question-link-relation"><p class="ldp-issue-title">Feedback requested on the link relation type used below</p>
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1151
		<p>Background: likely suspects from the <a href="http://www.iana.org/assignments/link-relations/link-relations.xml">IANA link relation registry</a> that the editors examined:</p>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1152
		<ul>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1153
		<li><p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1154
		<a href="http://tools.ietf.org/html/rfc6596">canonical</a> (see section 3, source has no TOC/anchors) may be
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1155
		close enough; the content at the context URI can explicitly be a subset of that at the target (canoncial) URI.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1156
		Certain cited functions like link consolidation are completely appropriate; if we believe the authors about its
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1157
		usage by crawlers/indexers however, we may be working at cross purposes.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1158
		</p></li>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1159
		<li><p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1160
		<a href="http://tools.ietf.org/html/rfc6573">collection</a> has muddy semantics in the case where
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1161
		the paged resource is an LDPC (i.e. the case we care most about, in terms of LDP's use cases).  We could 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1162
		probably get away with using collection, but its "inverse" item (defined in the same RFC) would definitely 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1163
		have a <em>different</em> semantic than what we want for paging (the RFC thinks an item is a member of the
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1164
		collection, but a page of an LDPC might have multiple LDP members on it, if we consider inlining in any form).
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1165
		It would have the net effect of looking at the LDPC as a generic RDF source, and "forgetting" within the paging
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1166
		spec that LDPCs have members - something that I'm sure we could all do, but pity the adopters using both
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1167
		together and trying to keep the different collection/item "models" untangled.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1168
		</p></li>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1169
		<li><p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1170
		<a href="http://tools.ietf.org/html/rfc4287#page-21">enclosure</a> has "good match" semantics,
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1171
		but a name that's awkward for our case.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1172
		</p></li>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1173
		<li><p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1174
		<a href="http://tools.ietf.org/html/rfc5005">Atom Feed Paging and Archiving</a> has no analog for the logical feed.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1175
		</p></li>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1176
		<li><p>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1177
		We also have the choice of defining-new, either an extension link relation (we just mint our own URI, done)
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1178
		or as a short name (requiring a small-but-not-zero registration template).
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1179
		</p></li>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1180
		</ul>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1181
	</div>
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1182
	-->
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1183
		
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1184
	<section id="ldpr-notify-changes"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1185
		<a title="LDP Paging server">LDP Paging servers</a> MUST 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1186
		enable a client to detect any change to the <a>paged resource</a> that occurs while the client is retrieving pages
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1187
		by 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1188
		including a HTTP <code>Link</code> header on all successful
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1189
		HTTP <code>GET</code> responses, and SHOULD include the same header on all <code>4xx</code>
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1190
		status code responses.
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1191
		The link's
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1192
		context URI identifies the <a>in-sequence page resource</a> being retrieved, 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1193
		target URI identifies the <a>paged resource</a>,
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1194
		link relation type is <code>canonical</code> [[!REL-CANONICAL]],
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1195
		and 
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1196
		link extension parameters include the parameter name <code>etag</code>
637
87b108186dd5 clean up lingering 2616 references, adjust accept-post BNF for bis changes
John Arwe
parents: 636
diff changeset
  1197
		and a corresponding parameter value identical to the ETag [[!RFC7232]]
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1198
		of the <a>paged resource</a>.
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
  1199
		For example: <code>Link: &lt;http://example.org/customer-relations&gt;; rel="canonical"; etag="customer-relations-v1"</code>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1200
		</h2>
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
  1201
		<blockquote><em>Non-normative note:</em> 
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
  1202
		If the <code>rel="canonical"; etag="..."</code> value changes as the client retrieves pages, 
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
  1203
		for example the value accompanying the first page's representation is <code>rel="canonical"; etag="v1"</code> 
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
  1204
		and the value accompanying the second page's representation is <code>rel="canonical"; etag="v2"</code>,
701
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
  1205
		the client can detect that the <a>paged resource</a>'s state has changed.
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
  1206
		Some clients will ignore such changes, but others may choose to react to them, for example by restarting the traversal.
d64b9d9aad22 Fix Ashok's emailed comments
John Arwe
parents: 700
diff changeset
  1207
		</blockquote>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1208
	</section>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1209
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1210
	<section id="ldpr-pagingGET-sequences-change"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1211
		<a title="LDP Paging server">LDP Paging servers</a> MAY
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1212
		add or remove <a title="in-sequence page resource">in-sequence page resources</a> to a 
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1213
		<a title="Paged resource">paged resource's</a> sequence over time.
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
  1214
		If the <a>page sequence</a> is <a href="#ldpc-HTTP_GET">ordered</a>, then the ordering communicated by the server MUST be maintained;
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1215
		the server SHOULD only add pages to the end of an unordered sequence.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1216
		</h2><!-- Was 4.10.2.1 / #ldpr-pagingGET-sequences-change -->
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1217
		<blockquote><em>Non-normative note:</em> 
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
  1218
		Servers might abandon an ordered <a>page sequence</a>, resulting in <code>4xx</code> status codes to subsequent requests,
734
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1219
		although it will be less disruptive to clients if the server either adds content to the appropriate existing page or
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1220
		adds new pages at the proper point in the sequence.  Clients have no more efficient means than a conditional retrieval
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1221
		request on existing pages to detect the changed/added pages.
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1222
		</blockquote>
76e5cbeb6b36 remove html5 ref, remove transfer-encoding, move sort criteria linkage to headers, fix "add at end"
John Arwe
parents: 731
diff changeset
  1223
		<blockquote><em>Non-normative note:</em> 
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1224
		As a result, clients retrieving any <a>in-sequence page resource</a> several times can observe its place in the sequence
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1225
		change as the state of the <a>paged resource</a> changes.
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1226
		For example, a nominally last page's server might provide a 
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1227
		<a>next page link</a> when the page is retrieved again later.  
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
  1228
		Similar situations arise when the <a>page sequence</a> crosses server boundaries; 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1229
		server A might host the initial portion of a sequence that links to the last page server A is aware of,  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1230
		hosted on server B, and server B might extend the sequence of pages.
603
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1231
		A nominally middle page <var>M</var> can become the last (or a non-existent) page if a competing request deletes
6f9c2e979d81 first stab at page size hint, and require membership+containment triples to be on same page
John Arwe
parents: 602
diff changeset
  1232
		part of the <a title="Paged resource">paged resource's</a> content after the client retrieves <var>M</var>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1233
		</blockquote>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1234
	</section>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1235
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1236
		<section id="ldpr-pagingGET-first-allowed-onpages"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1237
			<a title="LDP Paging server">LDP Paging servers</a> MAY provide 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1238
			a <a>first page link</a> when responding to 
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1239
			requests with any <a title="in-sequence page resource">in-sequence page resource</a> as the <code>Request-URI</code>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1240
		</h2></section><!-- Was 4.10.2.1.1 / #ldpr-pagingGET-sequences-change -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1241
	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1242
		<section id="ldpr-pagingGET-last-allowed-onpages"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1243
			<a title="LDP Paging server">LDP Paging servers</a> MAY
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1244
			provide a <a>last page link</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1245
			in responses to <code>GET</code> requests with any <a title="in-sequence page resource">in-sequence page resource</a> as the <code>Request-URI</code>.
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1246
		</h2></section><!-- Was 4.10.2.1.3 / #ldpr-pagingGET-last-allowed-onpages -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1247
	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1248
	<section id="ldpr-pagingGET-next-reqd"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1249
		<a title="LDP Paging server">LDP Paging servers</a> MUST
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1250
		provide a <a>next page link</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1251
		in responses to <code>GET</code> requests with any <a title="in-sequence page resource">in-sequence page resource</a> 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1252
		<em>other than the final page</em>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1253
		as the <code>Request-URI</code>.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1254
		This is the mechanism by which clients can discover the URL of the next page. 
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1255
	</h2><!-- Was 4.10.2.2 / #ldpr-pagingGET-next-reqd-change -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1256
	</section>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1257
	
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1258
		<section id="ldpr-pagingGET-lastnext-prohibited"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1259
			<a title="LDP Paging server">LDP Paging servers</a> MUST NOT
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1260
			provide a <a>next page link</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1261
			in responses to <code>GET</code> requests with the final <a title="in-sequence page resource">in-sequence page resource</a> 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1262
			as the <code>Request-URI</code>.
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
  1263
			This is the mechanism by which clients can discover the end of the <a>page sequence</a>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1264
			as currently known by the server.  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1265
		</h2></section><!-- Was 4.10.2.2.1 / #ldpr-pagingGET-lastnext-prohibited -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1266
		
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1267
		<section id="ldpr-pagingGET-prev-allowed"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1268
			<a title="LDP Paging server">LDP Paging servers</a> MAY
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1269
			provide a <a>previous page link</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1270
			in responses to <code>GET</code> requests with any <a title="in-sequence page resource">in-sequence page resource</a>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1271
			<em>other than the first page</em>
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1272
			as the <code>Request-URI</code>.
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1273
			This is one mechanism by which clients can discover the URL of the previous page.  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1274
		</h2></section><!-- Was 4.10.2.2.2 / #ldpr-pagingGET-prev-allowed -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1275
		
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1276
		<section id="ldpr-pagingGET-firstprev-prohibited"><h2 class="normal">
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1277
			<a title="LDP Paging server">LDP Paging servers</a> MUST NOT
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1278
			provide a <a>previous page link</a>
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1279
			in responses to <code>GET</code> requests with the <em>first</em> <a title="in-sequence page resource">in-sequence page resource</a> 
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1280
			as the <code>Request-URI</code>.
737
34d96d2d6359 Definition updates from Speicher's July 17 email
John Arwe
parents: 736
diff changeset
  1281
			This is one mechanism by which clients can discover the beginning of the <a>page sequence</a>
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1282
			as currently known by the server.  
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1283
		</h2></section><!-- Was 4.10.2.2.3 / #ldpr-pagingGET-firstprev-prohibited -->
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1284
686
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1285
		<section id="ldpr-pagingGET-page-type-reqd"><h2 class="normal">
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1286
			<a title="LDP Paging server">LDP Paging servers</a> MUST
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1287
			provide an HTTP <code>Link</code>
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1288
			header whose target URI is <code>http://www.w3.org/ns/ldp#Page</code>, and whose link relation type is <code>type</code> [[!RFC5988]]
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1289
			in responses to <code>GET</code> requests with any <a title="in-sequence page resource">in-sequence page resource</a> 
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1290
			as the <code>Request-URI</code>.
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1291
			This is one mechanism by which clients know that the resource is one of a sequence of pages.  
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1292
		</h2></section><!-- Was 4.10.2.4 / #ldpr-pagingGET-page-type-reqd -->
a2f1f85cc9cd June 30 resolutions - client consent for paging required, and rename single-page resources
John Arwe
parents: 638
diff changeset
  1293
738
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1294
		<section id="ldpr-pagingGET-abandon-pageseq"><h2 class="normal">
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1295
			<a title="LDP Paging server">LDP Paging servers</a> SHOULD
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1296
			indicate that they have abandoned a
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1297
			sequence by responding with at <code>410 Gone</code> to HTTP requests to any of the 
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1298
			<a title="in-sequence page resource">in-sequence page resources</a> with appropriate 
935
4c9e4a9dc2e8 Align usage of Link: rel= to not use single quotes per RFC5988
sspeiche
parents: 922
diff changeset
  1299
			paging link response headers, for example, rel="first".
738
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1300
		</h2></section><!-- #ldpr-pagingGET-abandon-pageseq -->
f945df395b55 Incorporating resolutions from today's WG meeting
John Arwe
parents: 737
diff changeset
  1301
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1302
		<section id="ldpr-units-triple-count"><h2 class="normal">
771
c348bd680dbb max-triple-count, max-member-count, max-kbyte-count support must > should per Aug 25 mtg
John Arwe
parents: 753
diff changeset
  1303
			<a title="LDP Paging server">LDP Paging servers</a> SHOULD
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1304
			support the <code>max-triple-count</code> <a href="#ldpp-hints">client preference parameter</a>,
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1305
			which expresses a page size limiting the number of RDF triples represented on a page.
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1306
			For example, <code>max-triple-count="500"</code> expresses a limit of 500 RDF triples per page.
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1307
		</h2>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1308
		</section> 
872
218e71d11f3d Add skeleton of WG conformance reports
Steve Speicher <sspeiche@gmail.com>
parents: 869
diff changeset
  1309
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1310
		<section id="ldpr-units-kbyte-count"><h2 class="normal">
771
c348bd680dbb max-triple-count, max-member-count, max-kbyte-count support must > should per Aug 25 mtg
John Arwe
parents: 753
diff changeset
  1311
			<a title="LDP Paging server">LDP Paging servers</a> SHOULD
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1312
			support the <code>max-kbyte-count</code> <a href="#ldpp-hints">client preference parameter</a>,
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1313
			which expresses a page size limit as kilobytes of representation size.
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1314
			For example, <code>max-kbyte-count="1"</code> expresses a limit of 1024 bytes per page.
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1315
		</h2>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1316
		</section> 
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1317
	
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1318
		<section id="ldpr-pagesize-multiple-units"><h2 class="normal">
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1319
			<a title="LDP Paging server">LDP Paging servers</a> MUST, if provided with multiple 
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1320
			 <a href="#ldpp-hints">client preference parameters</a> limiting page size,
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1321
			honor all hints that it recognizes.  This has the net effect that the most restrictive
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1322
			hint for any given response governs the resulting page size.
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1323
			For example, <code>max-kbyte-count="1"</code> and <code>max-triple-count="500"</code>
771
c348bd680dbb max-triple-count, max-member-count, max-kbyte-count support must > should per Aug 25 mtg
John Arwe
parents: 753
diff changeset
  1324
			usually would result in pages whose size hits the 1 kilobyte limit first, since each triple very likely
753
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1325
			requires more than two bytes (500 triples/1024 bytes).
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1326
		</h2>
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1327
		</section> 
2fc23952cba1 AT RISK the three limits, first reached per Aug 18 mtg
John Arwe
parents: 748
diff changeset
  1328
	
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1329
		<!-- combined into ldpr-status-code
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1330
		<section id="ldpr-pagingGET-only-paging-clients"><h2 class="normal">
731
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1331
			<a title="LDP Paging server">LDP Paging servers</a> SHOULD NOT
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1332
			initiate paging unless the client has indicated it understands LDP Paging or that it is prepared to 
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1333
			process <code>2NN Contents of Related</code> responses [[!2NN]].
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1334
			If the client supports paging but not <code>2NN</code> responses, a server initiating paging SHOULD respond with 
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1335
			status code <code>303 See Other</code> and a <code>Location</code> response header that identifies
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1336
			the URI of the first <a>in-sequence page resource</a> of the <a>paged resource</a>.
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1337
			The only standard means defined by LDP paging for a client to signal a server that the client
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1338
			understands paging is via the <a href="#ldpp-hints">client preference</a> defined for this purpose;
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1339
			other implementation-specific means could also be used.</h2>
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1340
			<blockquote>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1341
				<em>Non-normative note:</em>
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1342
				<a title="LDP Paging server">LDP Paging servers</a> could choose to make any resource
731
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1343
				available <em>only</em> as a paged resource.  
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1344
				In so doing, when interacting with clients <em>unaware</em> of LDP Paging, 
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1345
				if the server initiates paging anyway then it runs the risk
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1346
				that an ill-behaved client will automatically follow a 
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1347
				<code>303 See Other</code> redirect and believe via the subsequent
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1348
				<code>200 OK</code> that it has obtained a complete representation of the <a>paged resource</a>
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1349
				rather than of what may be a single <a>in-sequence page resource</a>.
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1350
				The alternative is for the server to reject the request, most likely
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1351
				with a <code>4xx</code> status code.
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1352
				<a title="LDP Paging client">LDP Paging clients</a> <a href="#ldpp-client-nofollow-303">will not follow redirects in this way</a>,
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1353
				but some existing HTTP clients are known to treat <code>303 See Other</code> redirects as if they were 
80eceaffcba5 Updates to address public review comment on must-not initiate paging
John Arwe
parents: 730
diff changeset
  1354
				equivalent to the original request-URI, despite this being explicitly disclaimed in [[RFC7231]].
700
e530fb39738a kitchen sink cleanup; client chapter rework, references, consolidation of wreckage from original split from LDP
John Arwe
parents: 699
diff changeset
  1355
			</blockquote>
715
57bb75a0204a Fixed minor spelling/grammar and validation problems
sspeiche
parents: 709
diff changeset
  1356
		</section>
736
ffda91dd27b7 Specify 303 Location value as first page
John Arwe
parents: 734
diff changeset
  1357
		-->
602
1635e6ae842c Initial spec of sandro's paging proposal
John Arwe
parents: 601
diff changeset
  1358
497
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1359
</section>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1360
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1361
</section> <!-- h1 -->
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1362
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1363
<section id="ldpc">
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1364
<h1>Linked Data Platform Containers</h1>
67f04abb73e6 Factored out paging and sorting into separate spec LDP-Paging
sspeiche
parents:
diff changeset
  1365
709
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1366
<section id="ldpc-general">
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1367
<h2>Requirements when paging LDP Containers</h2>
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1368
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1369
	<section id="ldpc-onsamepage"><h2 class="normal">
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1370
		<a title="LDP Paging server">LDP Paging servers</a> MUST
8a2098c01e82 Fix editorial issues in preparation for Last Call draft
John Arwe
parents: 701
diff changeset
  1371
		ensure that the <a title="membership triples">membership triple</a> and