resync 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3766 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>ResourceSync Framework Specification</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
6
+ <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon"/>
7
+ <link rel="stylesheet" href="css/resourcesync.css" type="text/css"/>
8
+ </head>
9
+
10
+ <body>
11
+ <div id="header">
12
+ <table class="layout" summary="Logo and ResourceSync title">
13
+ <tbody><tr>
14
+ <td><img alt="NISO logo" src="img/niso_logo.png"/></td>
15
+ <td><img alt="OAI logo" src="img/OA100.gif" width="100" height="70"/></td>
16
+ <td class="OREtext">Open Archives Initiative<br/>ResourceSync Framework Specification</td>
17
+ <td><img alt="ResourceSync logo" src="img/resync_logo.jpg"/></td>
18
+ </tr>
19
+ </tbody>
20
+ </table>
21
+ </div>
22
+ <div id="titleBlock">
23
+ <h2 class="title">ResourceSync Framework Specification (NISO Z39.99-YYYY DRAFT)</h2>
24
+ <h3 class="subTitle">26 August 2016</h3>
25
+ </div><!--div-titleBlock-->
26
+ <dl>
27
+ <dt>This version:</dt>
28
+ <dd><a href="http://www.openarchives.org/rs/1.0.9/resourcesync">http://www.openarchives.org/rs/1.0.9/resourcesync</a></dd>
29
+ <dt>Latest version:</dt>
30
+ <dd><a href="http://www.openarchives.org/rs/resourcesync">http://www.openarchives.org/rs/resourcesync</a></dd>
31
+ <dt>Previous version:</dt>
32
+ <dd><a href="http://www.openarchives.org/rs/1.0/resourcesync">http://www.openarchives.org/rs/1.0/resourcesync</a></dd>
33
+ </dl>
34
+
35
+ <div class="abstract">
36
+ <h2><a name="abstract"></a>Abstract</h2>
37
+ <p>
38
+ This ResourceSync specification describes a synchronization framework for the web
39
+ consisting of various capabilities that allow third-party systems to remain synchronized
40
+ with a server's evolving resources. The capabilities may be combined in a modular manner
41
+ to meet local or community requirements. This specification also describes how a server
42
+ should advertise the synchronization capabilities it supports and how third-party systems
43
+ may discover this information. The specification repurposes the document formats defined
44
+ by the Sitemap protocol and introduces extensions for them.
45
+ </p>
46
+ </div>
47
+
48
+ <h2><a name="status"></a>Status of this Document</h2>
49
+
50
+ <p style="color:red">This document is an HTML version of a DRAFT REVISION of
51
+ <a href="http://www.niso.org/standards/z39-99-2014/">ANSI/NISO Z39.99-2014</a>.
52
+ Changes address issues discussed in
53
+ <a href="https://groups.google.com/forum/#!topic/resourcesync/IpDj3TlnZdM">Updating
54
+ ResourceSync specs regarding lastmod issue</a>. Feedback is most welcome on the
55
+ <a href="https://groups.google.com/d/forum/resourcesync">ResourceSync Google Group</a>.</p>
56
+
57
+
58
+ <p>This specification is one of several documents comprising the
59
+ <a href="http://www.openarchives.org/rs/toc">ResourceSync Framework Specifications</a>.</p>
60
+
61
+
62
+ <div class="toc">
63
+ <h2><a name="contents"></a>Table of Contents</h2>
64
+ <p class="toc">
65
+
66
+ 1. <a href="#Introduction">Introduction</a><br/>
67
+ &nbsp;&nbsp;&nbsp;&nbsp;1.1 <a href="#PurposeScope">Purpose and Scope</a><br/>
68
+ &nbsp;&nbsp;&nbsp;&nbsp;1.2 <a href="#MotivExamples">Motivating Examples</a><br/>
69
+ &nbsp;&nbsp;&nbsp;&nbsp;1.3 <a href="#Walkthrough">Walkthrough</a><br/>
70
+
71
+ 2. <a href="#NormativeRefs">Normative References</a><br/>
72
+
73
+ 3. <a href="#Definitions">Definitions</a><br/>
74
+
75
+ 4. <a href="#Namespaces">Namespace Prefix Bindings</a><br/>
76
+
77
+ 5. <a href="#SyncProcesses">Synchronization Processes</a><br/>
78
+ &nbsp;&nbsp;&nbsp;&nbsp;5.1 <a href="#SourcePers">Source Perspective</a><br/>
79
+ &nbsp;&nbsp;&nbsp;&nbsp;5.2 <a href="#DestPers">Destination Perspective</a><br/>
80
+ &nbsp;&nbsp;&nbsp;&nbsp;5.3 <a href="#Summary">Summary</a><br/>
81
+
82
+ 6. <a href="#FrameworkOrg">Framework Organization</a><br/>
83
+ &nbsp;&nbsp;&nbsp;&nbsp;6.1 <a href="#Structure">Structure</a><br/>
84
+ &nbsp;&nbsp;&nbsp;&nbsp;6.2 <a href="#Navigation">Navigation</a><br/>
85
+ &nbsp;&nbsp;&nbsp;&nbsp;6.3 <a href="#Discovery">Discovery</a><br/>
86
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.3.1 <a href="#DiscoOverview">Overview</a><br/>
87
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.3.2 <a href="#wellknown">ResourceSync Well-Known URI</a><br/>
88
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.3.3 <a href="#disco_links">Links</a><br/>
89
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.3.4 <a href="#robots">robots.txt</a><br/>
90
+
91
+ 7. <a href="#DocumentFormats">Sitemap Document Formats</a><br/>
92
+
93
+ 8. <a href="#SourceDesc">Describing the Source</a><br/>
94
+
95
+ 9. <a href="#CapabilityList">Advertising Capabilities</a><br/>
96
+
97
+ 10. <a href="#DescResources">Describing Resources</a><br/>
98
+ &nbsp;&nbsp;&nbsp;&nbsp;10.1 <a href="#ResourceList">Resource List</a><br/>
99
+ &nbsp;&nbsp;&nbsp;&nbsp;10.2 <a href="#ResourceListIndex">Resource List Index</a><br/>
100
+
101
+ 11. <a href="#PackResources">Packaging Resources</a><br/>
102
+ &nbsp;&nbsp;&nbsp;&nbsp;11.1 <a href="#ResourceDump">Resource Dump</a><br/>
103
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11.1.1 <a href="#ResourceDumpManifest">Resource Dump Manifest</a><br/>
104
+
105
+ 12. <a href="#DesChanges">Describing Changes</a><br/>
106
+ &nbsp;&nbsp;&nbsp;&nbsp;12.1 <a href="#ChangeList">Change List</a><br/>
107
+ &nbsp;&nbsp;&nbsp;&nbsp;12.2 <a href="#ChangeListIndex">Change List Index</a><br/>
108
+
109
+ 13. <a href="#PackChanges">Packaging Changes</a><br/>
110
+ &nbsp;&nbsp;&nbsp;&nbsp;13.1 <a href="#ChangeDump">Change Dump</a><br/>
111
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.1.1 <a href="#ChangeDumpManifest">Change Dump Manifest</a><br/>
112
+
113
+ 14. <a href="#LinkRelRes">Linking to Related Resources</a><br/>
114
+ &nbsp;&nbsp;&nbsp;&nbsp;14.1 <a href="#LinkRelResOverview">Overview</a><br/>
115
+ &nbsp;&nbsp;&nbsp;&nbsp;14.2 <a href="#MirCon">Mirrored Content</a><br/>
116
+ &nbsp;&nbsp;&nbsp;&nbsp;14.3 <a href="#AltRep">Alternate Representations</a><br/>
117
+ &nbsp;&nbsp;&nbsp;&nbsp;14.4 <a href="#PatchCon">Patching Content</a><br/>
118
+ &nbsp;&nbsp;&nbsp;&nbsp;14.5 <a href="#ResMDLinking">Resources and Metadata about Resources</a><br/>
119
+ &nbsp;&nbsp;&nbsp;&nbsp;14.6 <a href="#ResVers">Prior Versions of Resources</a><br/>
120
+ &nbsp;&nbsp;&nbsp;&nbsp;14.7 <a href="#ColMem">Collection Membership</a><br/>
121
+ &nbsp;&nbsp;&nbsp;&nbsp;14.8 <a href="#RePub">Republishing Resources</a><br/>
122
+
123
+ Appendix A. (normative) <a href="#TimeAttributeReqs">Time Attribute Requirements</a><br/>
124
+ Appendix B. <a href="#Bibliography">Bibliography</a><br/>
125
+ Appendix C. <a href="#FrontMatter">Front Matter, Authorship, Acknowledgements</a><br/>
126
+ Appendix D. <a href="#Changelog">Change Log</a>
127
+ </p>
128
+ </div>
129
+
130
+
131
+ <div class="body">
132
+ <h2>1. <a name="Introduction">Introduction</a></h2>
133
+
134
+ <h3>1.1 <a name="PurposeScope">Purpose and Scope</a></h3>
135
+
136
+ <p>The web is highly dynamic, with resources continuously being created,
137
+ updated, and deleted. As a result, using resources from a remote
138
+ server involves the challenge of remaining in step with its changing
139
+ content. In many cases, there is no need to reflect a
140
+ server's evolving content perfectly and, therefore, well-established
141
+ resource discovery techniques, such as crawling, suffice as an
142
+ updating mechanism. However, there are significant use cases that
143
+ require low latency and high accuracy in reflecting a remote server's
144
+ changing content. These requirements have typically been addressed by
145
+ ad-hoc technical approaches implemented within a small group of
146
+ collaborating systems. There have been no widely adopted, web-based
147
+ approaches.</p>
148
+
149
+ <p>This <strong>ResourceSync</strong> specification introduces a range
150
+ of easy to implement capabilities that a server may support in order
151
+ to enable remote systems to remain more tightly in step with its
152
+ evolving resources. It also describes how a server should advertise the
153
+ capabilities it supports. Remote systems may inspect this information
154
+ to determine how best to remain aligned with the evolving data.</p>
155
+
156
+ <p>Each capability provides a different synchronization functionality,
157
+ such as a list of the server's resources or its recently changed
158
+ resources, including what the nature of the change was: create,
159
+ update, or delete. All capabilities are implemented on the basis of
160
+ the document formats introduced by the
161
+ <a href="#ref-sitemaps">Sitemap protocol</a>. Capabilities may be
162
+ combined to achieve varying levels of functionality and hence meet
163
+ different local or community requirements. This modularity provides
164
+ flexibility and makes ResourceSync suitable for a broad range of use
165
+ cases.</p>
166
+
167
+ <h3>1.2 <a name="MotivExamples"></a>Motivating Examples</h3>
168
+
169
+ <p>Many projects and services have synchronization needs and have
170
+ implemented ad hoc solutions. ResourceSync provides a standard
171
+ synchronization method that will reduce implementation effort and
172
+ facilitate easier reuse of resources. This section describes motivating
173
+ examples with differing needs and complexities.</p>
174
+
175
+ <p>Consider first the case of a website for a small museum collection.
176
+ The website may contain just a few dozen static webpages. The
177
+ maintainer may create a <a href="#ResourceList">Resource List</a> of these
178
+ webpages and expose it to services that leverage ResourceSync.</p>
179
+
180
+ <p>When building services over Linked Data, it is often desirable to
181
+ maintain a local copy of data for improved access and availability.
182
+ Harvesting may be enabled by publishing a <a href="#ResourceList">Resource List</a>
183
+ for the dataset. In many cases, resource representations exposed as Linked Data are small and
184
+ so retrieving them via individual HTTP GET requests is slow because of the
185
+ large number of round trips for a small amount of content.
186
+ Publishing a <a href="#ResourceDump">Resource Dump</a> that points to content
187
+ packaged and described in ZIP files makes
188
+ this more efficient for the client and less burdensome for the server.
189
+ Continued synchronization is enabled by recurrently publishing an up-to-date <a href="#ResourceList">Resource List</a> or <a href="#ResourceDump">Resource Dump</a>, or, more efficiently, by publishing a <a href="#ChangeList">Change List</a> that provides information about resource changes only.</p>
190
+
191
+ <p>Repositories of scholarly articles and data have typically
192
+ shared metadata via <a href="#ref-oaipmh">OAI-PMH</a>. As these repositories are
193
+ rearchitected to become resource- or web-centric, the ResourceSync Framework
194
+ enables sharing of both metadata and content with aggregators and
195
+ commodity web search engines alike. Publication of a
196
+ <a href="#ResourceList">Resource List</a> -- compatible with
197
+ <a href="#ref-sitemaps">Sitemaps</a> -- provides the base level of
198
+ interoperability and enables indexing by commodity web search engines.
199
+ Use of other capabilities such as
200
+ <a href="#ResourceDump">Resource Dumps</a>,
201
+ <a href="#ChangeList">Change Lists</a>, and
202
+ <a href="#ChangeDump">Change Dumps</a> supports easier initial
203
+ synchronization and more efficient increment updates. ResourceSync supports
204
+ synchronization of both <a href="#ResMDLinking">Resources and Metadata about
205
+ Resources</a> with the relationships clearly indicated. It also enables expression of
206
+ different sets of resources via the <a href="#SourceDesc">Source Description</a>
207
+ to support use cases requiring synchronization of subsets of a repository's
208
+ content.</p>
209
+
210
+
211
+ <h3>1.3 <a name="Walkthrough">Walkthrough</a></h3>
212
+
213
+ <p>
214
+ Let's assume a Source, http://example.com/, that exposes changing content that others
215
+ would like to remain synchronized with. A first step towards making this easy for
216
+ Destinations is for the Source to publish a <a href="#ResourceList">Resource List</a>
217
+ that conveys the URIs of resources available for synchronization. This Resource List is
218
+ expressed as a Sitemap. As shown in <a href="#ex_1">Example 1</a>, the Source conveys
219
+ the URI of each resource as the value of the
220
+ <code>&lt;loc&gt;</code> child element of a
221
+ <code>&lt;url&gt;</code> element. Note the
222
+ <code>&lt;rs:md&gt;</code> child element of the <code>&lt;urlset&gt;</code>
223
+ root element, which expresses that the Sitemap implements ResourceSync's Resource List
224
+ capability. It also conveys that the Resource List reflects the state of the Source's
225
+ resources at the datetime provided in the <code>at</code> attribute. This datetime
226
+ allows a Destination to quickly determine whether it has previously processed this
227
+ specific Resource List.
228
+ </p>
229
+
230
+ <!--EXAMPLE:ex_1.xml-->
231
+ <a name="ex_1"></a>
232
+ <div class="exampleInner">
233
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
234
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
235
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
236
+ &lt;rs:md capability="resourcelist"
237
+ at="2013-01-03T09:00:00Z"/&gt;
238
+ &lt;url&gt;
239
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
240
+ &lt;/url&gt;
241
+ &lt;url&gt;
242
+ &lt;loc&gt;http://example.com/res2&lt;/loc&gt;
243
+ &lt;/url&gt;
244
+ &lt;/urlset&gt;
245
+ </pre>
246
+ </div>
247
+ <p class="caption">Example 1: A Resource List</p>
248
+ <!--/EXAMPLE:ex_1.xml-->
249
+
250
+ <p>
251
+ The Source can provide additional information in the Resource List to
252
+ help the Destination optimize the process of collecting
253
+ content and verifying its accuracy. For example,
254
+ when the Source expresses the datetime of the most recent modification
255
+ for a resource, a Destination can determine whether or not it already
256
+ holds the current version, minimizing the number of HTTP requests it
257
+ needs to issue in order to remain up-to-date. <a href="#ex_2">Example 2</a>
258
+ shows this information
259
+ conveyed using Sitemap's optional <code>&lt;lastmod&gt;</code> element.
260
+ When the Source also conveys a hash for a specific bitstream, a Destination
261
+ can verify whether the process of obtaining it was successful.
262
+ The example shows this information conveyed using the <code>hash</code>
263
+ attribute on the <code>&lt;rs:md&gt;</code> element.
264
+ In addition, the Source can provide links to related resources using the
265
+ <code>&lt;rs:ln&gt;</code> element. The example shows a link to a mirror
266
+ copy of the second listed resource, indicating that the Source would prefer
267
+ a Destination to obtain the resource from it.
268
+ </p>
269
+
270
+ <!--EXAMPLE:ex_2.xml-->
271
+ <a name="ex_2"></a>
272
+ <div class="exampleInner">
273
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
274
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
275
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
276
+ &lt;rs:md capability="resourcelist"
277
+ at="2013-01-03T09:00:00Z"/&gt;
278
+ &lt;url&gt;
279
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
280
+ &lt;lastmod&gt;2013-01-02T13:00:00Z&lt;/lastmod&gt;
281
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"/&gt;
282
+ &lt;/url&gt;
283
+ &lt;url&gt;
284
+ &lt;loc&gt;http://example.com/res2&lt;/loc&gt;
285
+ &lt;lastmod&gt;2013-01-02T14:00:00Z&lt;/lastmod&gt;
286
+ &lt;rs:md hash="md5:1e0d5cb8ef6ba40c99b14c0237be735e"/&gt;
287
+ &lt;rs:ln rel="duplicate"
288
+ href="http://mirror.example.com/res2"/&gt;
289
+ &lt;/url&gt;
290
+ &lt;/urlset&gt;
291
+ </pre>
292
+ </div>
293
+ <p class="caption">Example 2: A Resource List with additional information</p>
294
+ <!--/EXAMPLE:ex_2.xml-->
295
+
296
+ <p>
297
+ In order to describe its changing content in a more timely manner, the
298
+ Source can increase the frequency at which it publishes an up-to-date
299
+ Resource List. However, changes may be so frequent or the size of the content
300
+ collection so vast that regularly updating a complete Resource List may
301
+ be impractical. In such cases, the Source can implement a
302
+ capability that communicates information about changes
303
+ only. To this end, ResourceSync introduces Change Lists. A Change List
304
+ enumerates resource changes, along with the nature of the
305
+ change (create, update, or delete) and metadata describing the new
306
+ state of the resource.
307
+ A Destination can recurrently obtain a Change List from the Source,
308
+ inspect the listed changes to discover those it has already acted upon,
309
+ and process the remaining ones. Changes in a Change List are provided
310
+ in forward chronological order, helping a Destination determine which
311
+ changes it has already processed. In addition,
312
+ a Change List also contains datetimes that convey the start time and
313
+ the end time of the temporal interval covered by the Change List.
314
+ These times convey that all resource changes that
315
+ occurred during the interval are described in the Change List.
316
+ (ResourceSync does not specify for how long Change Lists must
317
+ continue to be available once they have been produced. The
318
+ longer Change Lists are maintained by the Source, the
319
+ better the odds are for a Destination to catch up on changes
320
+ it missed because it was offline, for example.)
321
+ </p>
322
+
323
+ <p><a href="#ex_3">Example 3</a> shows a Change List.
324
+ The value of the <code>capability</code> attribute of the <code>&lt;rs:md&gt;</code>
325
+ child element of <code>&lt;urlset&gt;</code> makes it clear that, this time,
326
+ the Sitemap is a Change List and not a Resource List. The <code>from</code>
327
+ and <code>until</code> attributes give the temporal interval covered
328
+ by the Change List. The Change List shown below conveys three
329
+ resource changes: one an update, another a deletion, and the third a
330
+ creation. The change types can be seen from the value of the <code>change</code>
331
+ attribute of each <code>&lt;rs:md&gt;</code> element.
332
+ The example also shows the use of the
333
+ <code>&lt;lastmod&gt;</code> element to convey the modification times of
334
+ the resources, and the <code>datetime</code> attribute of
335
+ <code>&lt;rs:md&gt;</code> to convey the change time. In the case of the
336
+ created resource, the datetime conveyed by the <code>&lt;lastmod&gt;</code>
337
+ element is earlier than that of the <code>datetime</code> attribute,
338
+ perhaps because the repository made an old file visible only at the
339
+ <code>datetime</code> given.
340
+ Note that the changes are listed in chronological order by update time,
341
+ which may be given as values of the <code>datetime</code> attribute.
342
+ </p>
343
+
344
+ <!--EXAMPLE:ex_3.xml-->
345
+ <a name="ex_3"></a>
346
+ <div class="exampleInner">
347
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
348
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
349
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
350
+ &lt;rs:md capability="changelist"
351
+ from="2013-01-02T00:00:00Z"
352
+ until="2013-01-03T00:00:00Z"/&gt;
353
+ &lt;url&gt;
354
+ &lt;loc&gt;http://example.com/res1.pdf&lt;/loc&gt;
355
+ &lt;lastmod&gt;2013-01-02T13:00:00Z&lt;/lastmod&gt;
356
+ &lt;rs:md change="updated" datetime="2013-01-02T13:00:00Z"/&gt;
357
+ &lt;/url&gt;
358
+ &lt;url&gt;
359
+ &lt;loc&gt;http://example.com/res2.pdf&lt;/loc&gt;
360
+ &lt;rs:md change="deleted" datetime="2013-01-02T14:00:00Z"/&gt;
361
+ &lt;/url&gt;
362
+ &lt;url&gt;
363
+ &lt;loc&gt;http://example.com/res3.tiff&lt;/loc&gt;
364
+ &lt;lastmod&gt;2011-01-01T00:00:00Z&lt;/lastmod&gt;
365
+ &lt;rs:md change="created" datetime="2013-01-02T15:00:00Z"/&gt;
366
+ &lt;/url&gt;
367
+ &lt;/urlset&gt;
368
+ </pre>
369
+ </div>
370
+ <p class="caption">Example 3: A Change List</p>
371
+ <!--/EXAMPLE:ex_3.xml-->
372
+
373
+ <p>A Destination can issue HTTP GET requests against each resource URI listed in a Resource List. For
374
+ large Resource Lists, issuing all of these requests may be cumbersome. Therefore, ResourceSync introduces a
375
+ capability that a Source can use to
376
+ make packaged content available. A Resource Dump, implemented as a Sitemap, contains pointers to packaged content.
377
+ Each content package referenced in a Resource Dump is a ZIP file that contains the Source's bitstreams along with a Resource Dump Manifest
378
+ that describes each. The Resource Dump Manifest itself is also implemented as a Sitemap.
379
+ A Destination can retrieve a Resource Dump, obtain content packages by dereferencing the contained pointers, and unpack the retrieved packages.
380
+ Since the Resource Dump Manifest also lists the URI the Source associates with each bitstream, a Destination is able to achieve
381
+ the same result as obtaining the data by dereferencing the URIs listed in a Resource List.
382
+ <a href="#ex_4">Example 4</a> shows a Resource Dump that points at a single content package. Dereferencing the URI of that package leads to a ZIP file
383
+ that contains the Resource Dump Manifest shown in
384
+ <a href="#ex_5">Example 5</a>. It indicates that the Source's ZIP file contains two bitstreams.
385
+ The <code>path</code> attribute of the <code>&lt;rs:md&gt;</code> element conveys
386
+ the file path of the bitstream in the ZIP file (the relative file system path where the bitstream
387
+ would reside if the ZIP were unpacked), whereas the <code>&lt;loc&gt;</code> element conveys the URI associated with the bitstream at the Source.
388
+ </p>
389
+
390
+ <p>An additional capability, the Change Dump, provides a functionality similar to a Resource Dump but pertains to
391
+ packaging bitstreams of resources that have changed during a temporal interval,
392
+ instead of packaging a snapshot of resource bitstreams at a specific moment in time.</p>
393
+
394
+ <!--EXAMPLE:ex_4.xml-->
395
+ <a name="ex_4.xml"></a>
396
+ <div class="exampleInner">
397
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
398
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
399
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
400
+ &lt;rs:md capability="resourcedump"
401
+ at="2013-01-03T09:00:00Z"/&gt;
402
+ &lt;url&gt;
403
+ &lt;loc&gt;http://example.com/resourcedump.zip&lt;/loc&gt;
404
+ &lt;/url&gt;
405
+ &lt;/urlset&gt;
406
+ </pre>
407
+ </div>
408
+ <p class="caption">Example 4: A Resource Dump</p>
409
+ <!--/EXAMPLE:ex_4.xml-->
410
+
411
+ <!--EXAMPLE:ex_5.xml-->
412
+ <a name="ex_5"></a>
413
+ <div class="exampleInner">
414
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
415
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
416
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
417
+ &lt;rs:md capability="resourcedump-manifest"
418
+ at="2013-01-03T09:00:00Z"/&gt;
419
+ &lt;url&gt;
420
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
421
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
422
+ path="/resources/res1"/&gt;
423
+ &lt;/url&gt;
424
+ &lt;url&gt;
425
+ &lt;loc&gt;http://example.com/res2&lt;/loc&gt;
426
+ &lt;rs:md hash="md5:1e0d5cb8ef6ba40c99b14c0237be735e"
427
+ path="/resources/res2"/&gt;
428
+ &lt;/url&gt;
429
+ &lt;/urlset&gt;
430
+ </pre>
431
+ </div>
432
+ <p class="caption">Example 5: A Resource Dump Manifest detailing the content of a ZIP file</p>
433
+ <!--/EXAMPLE:ex_5.xml-->
434
+
435
+ <p>ResourceSync also introduces a Capability List, which is a way for the
436
+ Source to describe the capabilities it supports for one set of resources.
437
+ <a href="#ex_6">Example 6</a> shows such a description.
438
+ It indicates that the Source supports the Resource List, Resource Dump, and
439
+ Change List capabilities and it lists their respective URIs. Note the
440
+ inclusion of an <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code>
441
+ that links by means of a <code>describedby</code> relation
442
+ to a description of the set of resources covered by the Capability List.
443
+ Because these capabilities are conveyed in the same Capability List, they
444
+ uniformly apply to this set of resources. For example, if a given resource
445
+ appears in the Resource List then it must also appear in a Resource Dump
446
+ and changes to the resource must be reported in the Change List.
447
+ </p>
448
+
449
+ <!--EXAMPLE:ex_6.xml-->
450
+ <a name="ex_6"></a>
451
+ <div class="exampleInner">
452
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
453
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
454
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
455
+ &lt;rs:ln rel="describedby"
456
+ href="http://example.com/info_about_set1_of_resources.xml"/&gt;
457
+ &lt;rs:ln rel="up"
458
+ href="http://example.com/resourcesync_description.xml"/&gt;
459
+ &lt;rs:md capability="capabilitylist"/&gt;
460
+ &lt;url&gt;
461
+ &lt;loc&gt;http://example.com/dataset1/resourcelist.xml&lt;/loc&gt;
462
+ &lt;rs:md capability="resourcelist"/&gt;
463
+ &lt;/url&gt;
464
+ &lt;url&gt;
465
+ &lt;loc&gt;http://example.com/dataset1/resourcedump.xml&lt;/loc&gt;
466
+ &lt;rs:md capability="resourcedump"/&gt;
467
+ &lt;/url&gt;
468
+ &lt;url&gt;
469
+ &lt;loc&gt;http://example.com/dataset1/changelist.xml&lt;/loc&gt;
470
+ &lt;rs:md capability="changelist"/&gt;
471
+ &lt;/url&gt;
472
+ &lt;/urlset&gt;
473
+ </pre>
474
+ </div>
475
+ <p class="caption">Example 6: A Capability List enumerating the ResourceSync capabilities a Source supports for a set of its resources</p>
476
+ <!--/EXAMPLE:ex_6.xml-->
477
+
478
+ <p>
479
+ There are three ways by which a Destination can discover whether and how a Source
480
+ supports ResourceSync: a Source-wide approach, a resource-specific approach, and
481
+ an approach that leverages existing practice for discovering Sitemaps.
482
+ The Source-wide approach leverages the well-known URI specification
483
+ and consists of the Source making a Source Description, like the one shown in
484
+ <a href="#ex_7">Example 7</a>, available at
485
+ <code>/.well-known/resourcesync</code>. The Source Description enumerates the
486
+ Capability Lists a Source offers, one Capability List per set of resources. If a
487
+ Source only has one set of resources and hence only one Capability List, the
488
+ mandatory Source Description contains only one pointer. The resource-specific
489
+ discovery approach
490
+ consists of a Source providing a link in an HTML document or in an HTTP Link header
491
+ that points at a Capability List that covers the resource that provides the link. Note
492
+ in <a href="#ex_6">Example 6</a> the inclusion of an <code>&lt;rs:ln&gt;</code> child
493
+ element of <code>&lt;urlset&gt;</code> that links by means of an <code>up</code> relation
494
+ to the Source Description, allowing for navigation from a Capability List to a Source
495
+ Description. Yet another approach follows the established practice for discovering
496
+ Sitemaps via a Source's <code>robots.txt</code> file. Since a Resource List is a
497
+ Sitemap it can be made discoverable by including its URI in the <code>robots.txt</code>
498
+ file as the value of the <code>Sitemap</code> directive. A navigational <code>up</code>
499
+ link included in the Resource List allows discovery of a Capability List pertaining
500
+ to the set of resources covered by that Resource List, and a further
501
+ <code>up</code> link in the Capability List leads to the Source Description.
502
+ </p>
503
+
504
+ <!--EXAMPLE:ex_7.xml-->
505
+ <a name="ex_7"></a>
506
+ <div class="exampleInner">
507
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
508
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
509
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
510
+ &lt;rs:ln rel="describedby"
511
+ href="http://example.com/info-about-source.xml"/&gt;
512
+ &lt;rs:md capability="description"/&gt;
513
+ &lt;url&gt;
514
+ &lt;loc&gt;http://example.com/dataset1/capabilitylist.xml&lt;/loc&gt;
515
+ &lt;rs:md capability="capabilitylist"/&gt;
516
+ &lt;rs:ln rel="describedby"
517
+ href="http://example.com/info_about_set1_of_resources.xml"/&gt;
518
+ &lt;/url&gt;
519
+ &lt;/urlset&gt;
520
+ </pre>
521
+ </div>
522
+ <p class="caption">Example 7: A Source Description with a pointer to the Capability List for the single set of resources offered by a Source</p>
523
+ <!--/EXAMPLE:ex_7.xml-->
524
+
525
+ <p>In some cases, there is a need to split the documents described so far into parts.
526
+ For example, the Sitemap protocol currently prescribes a maximum of 50,000 resources
527
+ per Sitemap and a Source may have more resources that are subject to synchronization.
528
+ The ResourceSync framework follows these community defined limits and hence,
529
+ in such cases, publishes multiple Resource Lists as well as a Resource List Index
530
+ that points to each of them. The Resource List Index is expressed using
531
+ Sitemap's <code>&lt;sitemapindex&gt;</code> document format.
532
+ <a href="#ex_8">Example 8</a> shows a Resource List Index that points at two Resource
533
+ Lists.</p>
534
+
535
+ <!--EXAMPLE:ex_8.xml-->
536
+ <a name="ex_8"></a>
537
+ <div class="exampleInner">
538
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
539
+ &lt;sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
540
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
541
+ &lt;rs:md capability="resourcelist"
542
+ at="2013-01-03T09:00:00Z"/&gt;
543
+ &lt;sitemap&gt;
544
+ &lt;loc&gt;http://example.com/resourcelist-part1.xml&lt;/loc&gt;
545
+ &lt;/sitemap&gt;
546
+ &lt;sitemap&gt;
547
+ &lt;loc&gt;http://example.com/resourcelist-part2.xml&lt;/loc&gt;
548
+ &lt;/sitemap&gt;
549
+ &lt;/sitemapindex&gt;
550
+ </pre>
551
+ </div>
552
+ <p class="caption">Example 8: A Resource List Index expressed using the <code>&lt;sitemapindex&gt;</code> document format</p>
553
+ <!--/EXAMPLE:ex_8.xml-->
554
+
555
+
556
+ <h2>2. <a name="NormativeRefs">Normative References</a></h2>
557
+
558
+ <p>
559
+ The following documents contain provisions that are required for implementing
560
+ this standard. All standards are subject to revision; the most current version
561
+ of these standards should be used.
562
+ </p>
563
+
564
+ <dl>
565
+ <dt>[<a name="ref-ale" id="ref-ale">ALE</a>]</dt>
566
+ <dd>Snell, J.
567
+ <a href="http://tools.ietf.org/html/draft-snell-atompub-link-extensions-09"><cite>Atom Link Extensions</cite></a>.
568
+ Internet Draft. Internet Engineering Task Force (IETF), June 8, 2012.
569
+ Available at: <a href="http://tools.ietf.org/html/draft-snell-atompub-link-extensions-09">http://tools.ietf.org/html/draft-snell-atompub-link-extensions-09</a></dd>
570
+
571
+ <dt>[<a name="ref-iana-mime" id="ref-iana-mime">IANA MIME</a>]</dt>
572
+ <dd><a href="http://www.iana.org/assignments/media-types"><cite>MIME Media Types</cite></a> [registry website].
573
+ Internet Assigned Numbers Authority (IANA).
574
+ Available at: <a href="http://www.iana.org/assignments/media-types">http://www.iana.org/assignments/media-types</a></dd>
575
+
576
+ <dt>[<a name="ref-iana-rel" id="ref-iana-rel">IANA Relation</a>]</dt>
577
+ <dd><a href="http://www.iana.org/assignments/link-relations/link-relations.xml"><cite>Link Relations</cite></a> [registry website].
578
+ Internet Assigned Numbers Authority (IANA).
579
+ Available at: <a href="http://www.iana.org/assignments/link-relations/link-relations.xml">http://www.iana.org/assignments/link-relations/link-relations.xml</a></dd>
580
+
581
+ <dt>[<a name="ref-rfc2616" id="ref-rfc2616">RFC 2616</a>]</dt>
582
+ <dd>Fielding, R. <i>et al.</i>
583
+ <cite><a href="http://www.ietf.org/rfc/rfc2616.txt">Hypertext Transfer Protocol -- HTTP/1.1</a></cite>. RFC 2616.
584
+ Internet Engineering Task Force (IETF), June 1999.
585
+ Available at: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a></dd>
586
+
587
+ <dt>[<a name="ref-rfc4287" id="ref-rfc4287">RFC 4287</a>]</dt>
588
+ <dd>Nottingham, M., and R. Sayre, <i>eds.</i>
589
+ <cite><a href="http://www.ietf.org/rfc/rfc4287.txt">The Atom Syndication Format</a></cite>. RFC 4287.
590
+ Internet Engineering Task Force (IETF), December 2005.
591
+ Available at: <a href="http://www.ietf.org/rfc/rfc4287.txt">http://www.ietf.org/rfc/rfc4287.txt</a></dd>
592
+
593
+ <dt>[<a name="ref-rfc5988" id="ref-rfc5988">RFC 5988</a>]</dt>
594
+ <dd>Nottingham, M.
595
+ <cite><a href="http://www.ietf.org/rfc/rfc5988.txt">Web Linking</a></cite>. RFC 5988.
596
+ Internet Engineering Task Force (IETF), October 2010.
597
+ Available at: <a href="http://www.ietf.org/rfc/rfc5988.txt">http://www.ietf.org/rfc/rfc5988.txt</a></dd>
598
+
599
+ <dt>[<a name="ref-rfc6249" id="ref-rfc6249">RFC 6249</a>]</dt>
600
+ <dd>Bryan, A. <i>et al.</i>
601
+ <cite><a href="http://www.ietf.org/rfc/rfc6249.txt">Metalink/HTTP: Mirrors and Hashes</a></cite>. RFC 6249.
602
+ Internet Engineering Task Force (IETF), June 2011.
603
+ Available at: <a href="http://www.ietf.org/rfc/rfc6249.txt">http://www.ietf.org/rfc/rfc6249.txt</a></dd>
604
+
605
+ <dt>[<a name="ref-rfc6906" id="ref-rfc6906">RFC 6906</a>]</dt>
606
+ <dd>Wilde, E.
607
+ <cite><a href="http://www.ietf.org/rfc/rfc6906.txt">The 'profile' Link Relation Type.</a></cite> RFC 6906.
608
+ Internet Engineering Task Force (IETF), March 2013.
609
+ Available at: <a href="http://www.ietf.org/rfc/rfc6906.txt">http://www.ietf.org/rfc/rfc6906.txt</a></dd>
610
+
611
+ <dt>[<a name="ref-rfc7089" id="ref-rfc7089">RFC 7089</a>]</dt>
612
+ <dd>Van de Sompel, H., M. Nelson, and R. Sanderson.
613
+ <a href="http://www.ietf.org/rfc/rfc7089.txt"><cite>HTTP Framework for Time-Based Access to Resource States -- Memento</cite></a>. RFC 7089.
614
+ Internet Engineering Task Force (IETF), December 2013.
615
+ Available at: <a href="http://www.ietf.org/rfc/rfc7089.txt">http://www.ietf.org/rfc/rfc7089.txt</a></dd>
616
+
617
+ <dt>[<a name="ref-sitemaps" id="ref-sitemaps">Sitemaps</a>]</dt>
618
+ <dd><cite><a href="http://www.sitemaps.org/protocol.html">Sitemaps XML Format</a></cite>.
619
+ sitemaps.org, last updated February 27, 2008.
620
+ Available at: <a href="http://www.sitemaps.org/protocol.html">http://www.sitemaps.org/protocol.html</a></dd>
621
+
622
+ <dt>[<a name="w3c-datetime" id="w3c-datetime">W3C Datetime</a>]</dt>
623
+ <dd>Wolf, Misha, and Charles Wicksteed.
624
+ <cite><a href="http://www.w3.org/TR/1998/NOTE-datetime-19980827">Date and Time Formats</a></cite>. W3C Note.
625
+ World Wide Web Consortium, August 27, 1998.
626
+ Available at: <a href="http://www.w3.org/TR/1998/NOTE-datetime-19980827">http://www.w3.org/TR/1998/NOTE-datetime-19980827</a></dd>
627
+
628
+ <dt>[<a name="ref-zip" id="ref-zip">ZIP</a>]</dt>
629
+ <dd><cite><a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">.ZIP File Format Specification</a></cite>. Application Note. Version 6.3.3.
630
+ PKWARE Inc., September 1, 2012.
631
+ Available at: <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT"> http://www.pkware.com/documents/casestudies/APPNOTE.TXT</a></dd>
632
+
633
+ </dl>
634
+
635
+
636
+ <h2>3. <a name="Definitions">Definitions</a></h2>
637
+
638
+ <p>
639
+ The following terms, as used in this standard, have the meanings indicated.
640
+ </p>
641
+
642
+ <a name="tab_1"></a>
643
+ <table class="namespace-table" summary="Definitions">
644
+ <tbody><tr class="top">
645
+ <th class="left">Term</th><th class="left">Definition</th>
646
+ </tr>
647
+ <tr class="odd">
648
+ <td class="left">Source</td>
649
+ <td class="left">A server that hosts resources subject to synchronization</td>
650
+ </tr>
651
+ <tr class="odd">
652
+ <td class="left">Destination</td>
653
+ <td class="left">A system that synchronizes itself with the Source's resources</td>
654
+ </tr>
655
+ <tr class="odd">
656
+ <td class="left">set of resources</td>
657
+ <td class="left">A collection of resources that is made available for synchronization by a
658
+ Source. A Source may expose one or more such collections and support distinct
659
+ ResourceSync capabilities for each. Individual resources may be included in
660
+ more than one set of resources</td>
661
+ </tr>
662
+ </tbody></table>
663
+
664
+ <p>This specification uses the terms <i>resource</i>, <i>representation</i>, <i>request</i>,
665
+ <i>response</i>, <i>content negotiation</i>, <i>client</i>, and <i>server</i> as
666
+ described in <a href="#ref-webarch">Architecture of the World Wide Web</a>.</p>
667
+
668
+
669
+ <h2>4. <a name="Namespaces">Namespace Prefix Bindings</a></h2>
670
+
671
+ <p>Throughout this document, the following namespace prefix bindings
672
+ are used:</p>
673
+
674
+ <a name="tab_1"></a>
675
+ <table class="namespace-table" summary="Namespaces used in this document">
676
+ <tbody><tr class="top">
677
+ <th class="left">Prefix</th><th class="center">Namespace URI</th><th class="right">Description</th>
678
+ </tr>
679
+ <tr class="odd">
680
+ <td class="left"></td><td class="center"><code>http://www.sitemaps.org/schemas/sitemap/0.9</code></td>
681
+ <td class="right">Sitemap XML elements defined in the <a href="#ref-sitemaps">Sitemap protocol</a></td>
682
+ </tr>
683
+ <tr class="even">
684
+ <td class="left"><code>rs</code></td><td class="center"><code>http://www.openarchives.org/rs/terms/</code></td>
685
+ <td class="right">Namespace for elements introduced in this specification</td>
686
+ </tr>
687
+ </tbody></table>
688
+
689
+
690
+ <h2>5. <a name="SyncProcesses">Synchronization Processes</a></h2>
691
+
692
+ <p>
693
+ <a href="#Walkthrough">Section 1.3</a> provides a concrete walkthrough of some
694
+ capabilities that a Source may implement and describes how a
695
+ Destination may use those capabilities to remain synchronized with
696
+ the Source's changing data. This section provides a high-level
697
+ overview of the various ResourceSync capabilities and shows how
698
+ these fit into processes at a Destination designed to keep it in
699
+ step with changes.
700
+ </p>
701
+
702
+ <h3>5.1 <a name="SourcePers">Source Perspective</a></h3>
703
+
704
+ <p>From the perspective of a <b>Source</b>, the ResourceSync capabilities
705
+ that may be supported to enable Destination processes to remain in
706
+ sync with its changing data are summarized as follows:
707
+ </p>
708
+
709
+ <ul>
710
+ <li><b>Describing Content</b> -- In order to describe its data, a
711
+ Source may maintain an up-to-date <b>Resource List</b>. A
712
+ basic Resource List minimally provides the URIs of resources
713
+ that the Source makes available for synchronization. However,
714
+ additional information may be added to the Resource List to optimize
715
+ the Destination's process of obtaining the Source's resources,
716
+ including the most recent modification time of resources and fixity
717
+ information such as content-based checksum or hash and length.
718
+ <a href="#fig_source_perspective">Figure 1</a> shows a Source
719
+ publishing up-to-date Resource Lists at times t2 and t4. At t4,
720
+ too many resources need to be listed to fit in a single
721
+ Resource List and hence multiple Resource Lists are published and
722
+ grouped in a Resource List Index.
723
+ </li>
724
+ <li><b>Packaging Content</b> -- In order to make its data available for
725
+ download, a Source may recurrently make an up-to-date <b>Resource Dump</b>
726
+ of its content available. A Resource Dump points at one or more packages,
727
+ each of which contains bitstreams associated with resources hosted by the Source.
728
+ Each package also contains a <b>Resource Dump Manifest</b> that provides
729
+ metadata about the bitstreams contained in the package, and must minimally
730
+ include their associated URI and their file path in the ZIP file.
731
+ <a href="#fig_source_perspective">Figure 1</a> shows a Source publishing
732
+ up-to-date Resource Dumps at times t1 and t3. At time t3, multiple
733
+ Resource Dumps are published and grouped in a Resource Dump Index.
734
+ </li>
735
+ <li><b>Describing Changes</b> -- In order to achieve lower
736
+ synchronization latency and/or to improve transfer efficiency,
737
+ a Source may publish a Change List that provides information about
738
+ changes to its resources. It is up to the Source to decide the temporal
739
+ interval covered by a Change List, for example, all the changes
740
+ that occurred during the previous hour, the current day, or since
741
+ the most recent publication of a Resource List. For each resource
742
+ change, a Change List must minimally convey the URI of the changed
743
+ resource as well as the nature of the change (create,
744
+ update, delete). Since a Change List is organized on the basis of
745
+ changes, it may list the same resource multiple times, once per change.
746
+ <a href="#fig_source_perspective">Figure 2</a> shows three Change Lists.
747
+ The first Change List covers resource changes that occurred between
748
+ t1 and t3, the second between t3 and t5, and the third between t5 and t7.
749
+ Since too many changes occurred between t5 and t7 to fit in a single
750
+ Change List, multiple Change Lists are published and grouped in a
751
+ Change List Index.
752
+ </li>
753
+ <li><b>Packaging Changes</b> -- In order to make content changes available for download,
754
+ a Source may publish a <b>Change Dump</b>. A Change Dump points at one or more packages,
755
+ each of which contains bitstreams that correspond to the state of resources after they changed.
756
+ Each package also contains a <b>Change Dump Manifest</b> that provides metadata about the
757
+ bitstreams provided in the Change Dump.
758
+ For each bitstream, the Change Dump Manifest must minimally include the associated URI,
759
+ the nature of the change (create, update, delete) and, where appropriate, the file
760
+ path of the bitstream in the ZIP file.
761
+ It is up to a Source to decide the temporal interval covered by a
762
+ Change Dump, for example, covering all the resource changes that occurred during the
763
+ previous hour, the current day, or since the most recent publication
764
+ of a Resource Dump. Since a Change Dump is organized on the basis of changes,
765
+ the package(s) it points at may contain multiple bitstreams associated with any given
766
+ resource, one per change. <a href="#fig_source_perspective">Figure 2</a>
767
+ shows three Change Dumps. The first Change Dump covers resource changes
768
+ that occurred between t2 and t4, the second between t4 and t6, and the third
769
+ between t6 and t8. During the time period between t6 and t8, multiple
770
+ Change Dumps are published and grouped in a Change Dump Index.
771
+ </li>
772
+ <li><b>Linking to Related Resources</b> -- There are several reasons to
773
+ provide additional links from a resource subject to synchronization to
774
+ related resources, including:
775
+ <ul>
776
+ <li><b>Alternate Content Transfer</b> -- The default mechanisms by which a Destination obtains
777
+ content for a resource are to issue an HTTP GET against its URI found
778
+ in a Resource List or Change List, or to unpack packages obtained via a
779
+ Resource Dump or Change Dump. However, additional approaches may also be supported.
780
+ For example, a Source may prefer, for synchronization purposes, that
781
+ content be obtained from a mirror server and hence from a different
782
+ URI. Also, a Source may allow obtaining only the changes that a
783
+ resource underwent, instead of the entire changed resource.
784
+ This may be desirable when the resource size is considerable and/or the
785
+ frequency of changes high. Such an Alternate Content Transfer approach
786
+ is expressed by means of a link from the resource to another resource that
787
+ makes the content available in an alternate way. It is possible that certain
788
+ Destinations do not recognize a specific Alternate Content Transfer approach,
789
+ in which case ignoring the link and dereferencing the resource's URI remains
790
+ the fallback approach.</li>
791
+ <li><b>Resources and Metadata about Resources</b> -- Cases exist where both resources and
792
+ metadata about resources must be synchronized, for example, a collection of scientific
793
+ publications and metadata describing each. From the ResourceSync perspective, both the
794
+ resource and the metadata about it are regarded as resources with distinct URIs that
795
+ are subject to synchronization. Their inter-relationship is expressed by means of links
796
+ with appropriate relation types.</li>
797
+ <li><b>Prior Versions of Resources</b> -- In some cases a Destination requires a copy of
798
+ each version of a resource, not just the most recent one.
799
+ A Source may support discovery and access to prior resource versions through links.
800
+ Three approaches are provided, one based on linking to
801
+ resource versions, and two that leverage features of the
802
+ <a href="#ref-rfc7089">Memento</a> protocol for time-based
803
+ access to resource states.</li>
804
+ </ul>
805
+ </li>
806
+ </ul>
807
+
808
+ <div class="image">
809
+ <a name="fig_source_perspective"></a>
810
+ <img alt="ResourceSync Source Perspective" src="img/resync_source_perspective.png"/>
811
+ <p class="caption">Figure 1: ResourceSync Source perspective of resource description</p>
812
+ </div>
813
+
814
+ <div class="image">
815
+ <a name="fig_source_perspective"></a>
816
+ <!--FIXME-->
817
+ <p class="caption">Figure 2: ResourceSync Source perspective of change description</p>
818
+ </div>
819
+
820
+ <h3>5.2 <a name="DestPers">Destination Perspective</a></h3>
821
+
822
+ <p>From the perspective of a <b>Destination</b>, three key processes are enabled by the ResourceSync capabilities; <a href="#fig_destination_perspective">Figure 3</a>
823
+ provides an overview:</p>
824
+
825
+ <ul>
826
+ <li><b>Baseline Synchronization</b> -- In order to become synchronized with
827
+ a Source, the Destination must make an initial copy of the Source's data.
828
+ A Destination may obtain the Resource List that conveys the URIs of
829
+ the Source's resources, and subsequently dereference those URIs one by one.
830
+ A Destination may also obtain a Resource Dump that conveys the URIs of one
831
+ or more content packages each of which contains bitstreams associated
832
+ with the Source's resources. A Destination may dereference those URIs
833
+ and subsequently unpack the retrieved content packages, guided by the
834
+ contained Resource Dump Manifest.
835
+ </li>
836
+ <li><b>Incremental Synchronization</b> -- A Destination may remain in
837
+ sync with a Source by repeatedly performing a Baseline Synchronization.
838
+ To increase efficiency and decrease latency, a
839
+ Source may communicate information about changes to its resources via Change Lists.
840
+ This allows a Destination to obtain up-to-date content by dereferencing the
841
+ URIs of newly created and updated resources listed in the Change List.
842
+ It also allows a Destination to remove its copies of deleted resources, if needed.
843
+ A Source may also make a Change Dump available that points at one or more packages,
844
+ each of which contains bitstreams that correspond to the state of resources after they changed.
845
+ In this case the Destination first obtains the Change Dump, then obtains the
846
+ package(s) by dereferencing the URI(s) listed in the Change Dump, and
847
+ subsequently unpacks those, guided by the contained Change Dump Manifest.
848
+ </li>
849
+ <li><b>Audit</b> -- In order to verify whether it is in sync
850
+ with the Source, a Destination must be able to check that the content
851
+ it obtained matches the current resources hosted by the Source both regarding coverage and accuracy. This requires an up-to-date
852
+ list of resources hosted by the Source, which may be compiled on the basis of a Resource List and Change Lists. It also requires these Lists to contain metadata
853
+ per resource that characterizes its most recent state, such
854
+ as last modification time, length, and content-based hash.
855
+ </li>
856
+ </ul>
857
+
858
+ <div class="image">
859
+ <a name="fig_destination_perspective"></a>
860
+ <img alt="ResourceSync Destination Perspective" src="img/resync_destination_perspective.png"/>
861
+ <p class="caption">Figure 3: ResourceSync Destination perspective</p>
862
+ </div>
863
+
864
+ <h3>5.3 <a name="Summary">Summary</a></h3>
865
+
866
+ <p>
867
+ <a href="#tab_1">Table 1</a> provides a summary of
868
+ <a href="#SyncProcesses">Section 5</a>. The table lists Destination processes
869
+ as columns and Source capabilities as rows, with cells indicating the
870
+ applicability of a capability for a given process.
871
+ </p>
872
+
873
+ <!--TABLE:tab_1.xml-->
874
+ <a name="tab_1"></a>
875
+ <table class="capability-table" summary="Source Capabilities versus
876
+ Destination Processes">
877
+ <tbody><tr class="top">
878
+ <th>Source Capabilities</th><th colspan="3">Destination Processes</th>
879
+ </tr>
880
+ <tr class="top">
881
+ <th>&nbsp;</th><th>Baseline Synchronization</th><th>Incremental Synchronization</th><th>Audit</th>
882
+ </tr>
883
+ <tr class="odd">
884
+ <td class="scap"><a href="#SourceDesc">Describing the Source</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
885
+ </tr>
886
+ <tr class="odd">
887
+ <td class="scap"><a href="#CapabilityList">Advertising Capabilities</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
888
+ </tr>
889
+ <tr class="odd">
890
+ <td class="scap"><a href="#DescResources">Describing Resources</a></td><td colspan="3" class="sync">&nbsp;</td><!--td class="sync">&nbsp;</td><td class="audit">&nbsp;</td-->
891
+ </tr>
892
+ <tr class="even">
893
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ResourceList">Resource List</a></td><td class="sync">X</td><td class="sync">&nbsp;</td><td class="audit">X</td>
894
+ </tr>
895
+ <tr class="odd">
896
+ <td class="scap"><a href="#PackResources">Packaging Resources</a></td><td colspan="3" class="sync">&nbsp;</td><!--td class="sync">&nbsp;</td><td class="audit">&nbsp;</td-->
897
+ </tr>
898
+ <tr class="even">
899
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ResourceDump">Resource Dump</a></td><td class="sync">X</td><td class="sync">&nbsp;</td><td class="audit"></td>
900
+ </tr>
901
+ <tr class="odd">
902
+ <td class="scap"><a href="#DesChanges">Describing Changes</a></td><td colspan="3" class="sync">&nbsp;</td><!--td class="sync">&nbsp;</td><td class="audit">&nbsp;</td-->
903
+ </tr>
904
+ <tr class="even">
905
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ChangeList">Change List</a></td><td class="sync">&nbsp;</td><td class="sync">X</td><td class="audit">X</td>
906
+ </tr>
907
+ <tr class="odd">
908
+ <td class="scap"><a href="#PackChanges">Packaging Changes</a></td><td colspan="3" class="sync">&nbsp;</td><!--td class="sync">&nbsp;</td><td class="audit">&nbsp;</td-->
909
+ </tr>
910
+ <tr class="even">
911
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ChangeDump">Change Dump</a></td><td class="sync">&nbsp;</td><td class="sync">X</td><td class="audit">&nbsp;</td>
912
+ </tr>
913
+ <tr class="odd">
914
+ <td class="scap"><a href="#LinkRelRes">Linking to Related Resources</a></td><td colspan="3" class="sync">&nbsp;</td><!--td class="sync">&nbsp;</td><td class="audit">&nbsp;</td-->
915
+ </tr>
916
+ <tr class="even">
917
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MirCon">Mirrored Content</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
918
+ </tr>
919
+ <tr class="even">
920
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#AltRep">Alternate Representations</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
921
+ </tr>
922
+ <tr class="even">
923
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#PatchCon">Patching Content</a></td><td class="sync">&nbsp;</td><td class="sync">X</td><td class="audit">X</td>
924
+ </tr>
925
+ <tr class="even">
926
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ResMDLinking">Resources and Metadata about Resources</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
927
+ </tr>
928
+ <tr class="even">
929
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ResVers">Prior Versions of Resources</a></td><td class="sync"></td><td class="sync">X</td><td class="audit">X</td>
930
+ </tr>
931
+ <tr class="even">
932
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ColMem">Collection Membership</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
933
+ </tr>
934
+ <tr class="even">
935
+ <td class="scap">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RePub">Republishing Resources</a></td><td class="sync">X</td><td class="sync">X</td><td class="audit">X</td>
936
+ </tr>
937
+ </tbody></table>
938
+ <p class="caption">Table 1: Source capabilities versus Destination processes</p>
939
+ <!--/TABLE:tab_1.xml-->
940
+
941
+
942
+ <h2>6. <a name="FrameworkOrg">Framework Organization</a></h2>
943
+
944
+ <h3>6.1 <a name="Structure">Structure</a></h3>
945
+ <p>
946
+ All capabilities in the ResourceSync framework are implemented on the basis of the
947
+ <code>&lt;urlset&gt;</code> and <code>&lt;sitemapindex&gt;</code>
948
+ Sitemap document formats.
949
+ <a href="#fig_framework_structure">Figure 4: ResourceSync framework structure</a>,
950
+ depicts the overall structure of the set of documents that is used:
951
+ </p>
952
+
953
+ <ul>
954
+ <li>
955
+ At the top of the picture is the mandatory Source Description. It is a
956
+ Destination's typical entry point to learn about a Source's ResourceSync
957
+ implementation. The Source Description enumerates all Capability Lists
958
+ offered by the Source, one Capability List per set of resources.
959
+ If the Source only offers one set of resources, the ResourceSync
960
+ Description contains a single pointer.
961
+ A Source Description is expressed as a <code>&lt;urlset&gt;</code>
962
+ document and, per Capability List, a <code>&lt;url&gt;</code> element
963
+ is introduced. The <code>&lt;loc&gt;</code> child element of <code>&lt;url&gt;</code>
964
+ contains the URI of the Capability List, and the <code>capabilitylist</code> value for
965
+ the <code>capability</code> attribute of the <code>&lt;rs:md&gt;</code>
966
+ child element of <code>&lt;url&gt;</code>
967
+ makes clear that the URI is that of a Capability List.
968
+ </li>
969
+ <li>A Capability List enumerates all capabilities supported for a set of the Source's resources.
970
+ The capabilities defined in this ResourceSync specification are
971
+ Resource List, Change List, Resource Dump, and Change Dump. Additional capabilities may be defined
972
+ in other specifications.
973
+ A Capability List is expressed as a <code>&lt;urlset&gt;</code>
974
+ document and, for each supported capability, a <code>&lt;url&gt;</code> element is introduced. The <code>&lt;loc&gt;</code>
975
+ child element of
976
+ <code>&lt;url&gt;</code> contains the URI of the document that implements a capability, and the type of capability is expressed
977
+ by means of the value of the <code>capability</code> attribute of the <code>&lt;rs:md&gt;</code>
978
+ child element of <code>&lt;url&gt;</code>, e.g., <code>resourcelist</code> for a Resource List.</li>
979
+ <li>A Resource List and a Change List point at resources. A representation of a resource
980
+ may be obtained by dereferencing its URI, listed as the value of the
981
+ <code>&lt;loc&gt;</code> child element of the <code>&lt;url&gt;</code> element
982
+ for the resource.</li>
983
+ <li>A Resource Dump and a Change Dump point at packages, each of which contains bitstreams
984
+ associated with resources, as well as a
985
+ Manifest that describes the bitstreams provided in the package.</li>
986
+ <li>The Manifest contained in a package of bitstreams is expressed as a <code>&lt;urlset&gt;</code> document. For each bitstream contained in the package, that document
987
+ contains a <code>&lt;url&gt;</code> element; the <code>&lt;loc&gt;</code> child element of <code>&lt;url&gt;</code> provides
988
+ the URI that corresponds to the bitstream, whereas the <code>path</code> attribute of the <code>&lt;rs:md&gt;</code> child element
989
+ of <code>&lt;url&gt;</code> provides the path of the bitstream in the package.</li>
990
+
991
+ <li>If a single document suffices to express a Source Description, a Resource List, a Change List etc.,
992
+ then the <code>&lt;urlset&gt;</code> document format is used.
993
+ If multiple documents are required, each is expressed using the <code>&lt;urlset&gt;</code> document format, and a
994
+ <code>&lt;sitemapindex&gt;</code> document is introduced as an index to point at all individual <code>&lt;urlset&gt;</code> documents.
995
+ As a result, the URI of, for example, a Resource List provided in a Capability List may be
996
+ either that of a <code>&lt;urlset&gt;</code> or a <code>&lt;sitemapindex&gt;</code> document.
997
+ The <code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code> documents used for a specific capability
998
+ (e.g., Resource List) have the same value for the
999
+ <code>capability</code> attribute (e.g., <code>resourcelist</code>).</li>
1000
+ </ul>
1001
+
1002
+ <p>
1003
+ The Resource List branch of <a href="#fig_framework_structure">Figure 4</a> is fully compatible with the existing
1004
+ Sitemap specification, whereas the other branches are extensions introduced to support resource synchronization that
1005
+ leverage the Sitemap document formats.
1006
+ </p>
1007
+
1008
+ <div class="image">
1009
+ <a name="fig_framework_structure"></a>
1010
+ <img alt="ResourceSync Framework Structure" src="img/resync_structure.png"/>
1011
+ <p class="caption">Figure 4: ResourceSync framework structure</p>
1012
+ </div>
1013
+
1014
+ <h3>6.2 <a name="Navigation">Navigation</a></h3>
1015
+
1016
+ <p>The following mechanisms are introduced to support navigating the document
1017
+ hierarchy described in <a href="#Structure">Section 6.1</a>;
1018
+ they are illustrated in <a href="#fig_navigation_up">Figure 5</a> and
1019
+ <a href="#fig_navigation_down">Figure 6</a>:</p>
1020
+ <ul>
1021
+ <li>A link for upward navigation is provided by means of an <code>&lt;rs:ln&gt;</code> child element of the
1022
+ <code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code> element of a document. This pointer has
1023
+ <code>up</code> as the value for the <code>rel</code> attribute, and the URI of the document that sits higher
1024
+ in the hierarchy is provided as the value of the <code>href</code> attribute. Following consecutive <code>up</code>
1025
+ links eventually leads to the Source Description.</li>
1026
+ <li>A link for navigation from a document to the index under which it resides, if one exists, is
1027
+ provided by means of an <code>&lt;rs:ln&gt;</code> child element of the
1028
+ <code>&lt;urlset&gt;</code> element of the document. This pointer has
1029
+ <code>index</code> as the value for the <code>rel</code> attribute, and the URI of the index document
1030
+ is provided as the value of the <code>href</code> attribute.</li>
1031
+ <li>A link for downward navigation is provided by the content of a <code>&lt;url&gt;</code> element:
1032
+ the URI of the document that sits lower in the hierarchy is provided as the value of its <code>&lt;loc&gt;</code>
1033
+ child element, and its type is conveyed as the value of the <code>capability</code> attribute of the
1034
+ <code>&lt;rs:md&gt;</code> child element.</li>
1035
+ </ul>
1036
+
1037
+ <div class="image">
1038
+ <a name="fig_navigation_up"></a>
1039
+ <img alt="ResourceSync Navigation Upwards" src="img/resync_navigation_up.png"/>
1040
+ <p class="caption">Figure 5: ResourceSync upwards navigation</p>
1041
+ </div>
1042
+
1043
+ <div class="image">
1044
+ <a name="fig_navigation_down"></a>
1045
+ <img alt="ResourceSync Navigation Downwards" src="img/resync_navigation_down.png"/>
1046
+ <p class="caption">Figure 6: ResourceSync downwards navigation</p>
1047
+ </div>
1048
+
1049
+ <h3>6.3 <a name="Discovery">Discovery</a></h3>
1050
+
1051
+ <h4>6.3.1 <a name="DiscoOverview">Overview</a></h4>
1052
+
1053
+ <p>ResourceSync provides three ways for a Destination to discover
1054
+ whether and how a Source supports ResourceSync: a Source-wide
1055
+ approach detailed in <a href="#wellknown">Section 6.3.2</a>, a
1056
+ resource-specific approach detailed in
1057
+ <a href="#disco_links">Section 6.3.3</a>, and an approach that
1058
+ leverages the existing practice of Sitemap discovery via the
1059
+ <code>robots.txt</code> file described in <a href="#robots">Section 6.3.4</a>.
1060
+ All approaches are summarized in <a href="#fig_discovery">Figure 7</a>.
1061
+ </p>
1062
+
1063
+ <div class="image">
1064
+ <a name="fig_discovery"></a>
1065
+ <img alt="ResourceSync Discovery" src="img/resync_discovery.png"/>
1066
+ <p class="caption">Figure 7: Discovery of Source Description and Capability List</p>
1067
+ </div>
1068
+
1069
+ <h4>6.3.2 <a name="wellknown">ResourceSync Well-Known URI</a></h4>
1070
+
1071
+ <p>
1072
+ A Source must publish a Source Description, such as the one shown in
1073
+ <a href="#ex_7">Example 7</a>, and it should be published at the
1074
+ well-known URI [<a href="#ref-rfc5785">RFC 5785</a>]
1075
+ <code>/.well-known/resourcesync</code> as defined here.
1076
+ The Source Description document enumerates a Source's Capability Lists
1077
+ and as such is an appropriate entry
1078
+ point for Destinations interested in understanding a Source's capabilities.
1079
+ </p>
1080
+
1081
+ <h4>6.3.3 <a name="disco_links">Links</a></h4>
1082
+
1083
+ <p>
1084
+ A Capability List may be made discoverable by means of links provided either
1085
+ in an HTML document [<a href="#ref-html-links">HTML Links</a>,
1086
+ <a href="#ref-xhtml-links">XHTML Links</a>] or in an
1087
+ HTTP Link header [<a href="#ref-rfc5988">RFC 5988</a>].
1088
+ </p>
1089
+ <p>
1090
+ In order to include a discovery link in an HTML document,
1091
+ a <code>&lt;link&gt;</code> element is introduced in the <code>&lt;head&gt;</code>
1092
+ of the document that points to a Capability List.
1093
+ This <code>&lt;link&gt;</code> must have a <code>rel</code> attribute
1094
+ with a value of <code>resourcesync</code>.
1095
+ The Capability List that is made discoverable in this way must pertain to
1096
+ the resource that provides the link. This means that
1097
+ the resource must be covered by the capabilities listed in the linked Capability List.
1098
+ <a href="#ex_9">Example 9</a> shows the structure of a webpage that contains a
1099
+ link to a Capability List.
1100
+ </p>
1101
+
1102
+ <p>
1103
+ As shown in <a href="#ex_6">Example 6</a> the Source Description can
1104
+ be discovered from the Capability List by following the
1105
+ link provided in the <code>&lt;rs:ln&gt;</code> element with the relation type <code>up</code>.
1106
+ </p>
1107
+ <a name="ex_9"></a>
1108
+ <div class="exampleInner">
1109
+ <pre>&lt;html&gt;
1110
+ &lt;head&gt;
1111
+ <span class="rs">&lt;link rel="resourcesync"
1112
+ href="http://www.example.com/dataset1/capabilitylist.xml"/&gt;</span>
1113
+ ...
1114
+ &lt;/head&gt;
1115
+ &lt;body&gt;...&lt;/body&gt;
1116
+ &lt;/html&gt;
1117
+ </pre>
1118
+ </div>
1119
+ <p class="caption">Example 9: Discovery by means of an HTML link</p>
1120
+
1121
+ <p>
1122
+ A Capability List may also be made discoverable by means of an HTTP
1123
+ Link header that may be included with a representation of a resource of any
1124
+ content-type. In order to do so, a link is introduced in the HTTP Link header.
1125
+ The target of this link is the URI of a Capability List and the value of
1126
+ its <code>rel</code> attribute is <code>resourcesync</code>. The Capability
1127
+ List that is made discoverable in this way must pertain to the resource that
1128
+ provides the link. This means that the resource must be covered by the
1129
+ capabilities listed in the linked Capability List. <a href="#ex_10">Example 10</a>
1130
+ shows an excerpt of an HTTP response header that illustrates this approach.
1131
+ </p>
1132
+
1133
+ <p>
1134
+ As shown in <a href="#ex_6">Example 6</a> the Source Description can be
1135
+ discovered from the Capability List by following the link provided in the
1136
+ <code>&lt;rs:ln&gt;</code> element with the relation type <code>up</code>.
1137
+ </p>
1138
+
1139
+ <a name="ex_10"></a>
1140
+ <div class="exampleInner">
1141
+ <pre>HTTP/1.1 200 OK
1142
+ Date: Thu, 21 Jan 2010 00:02:12 GMT
1143
+ Server: Apache
1144
+ <span class="rs">Link: &lt;http://www.example.com/dataset1/capabilitylist.xml&gt;;
1145
+ rel="resourcesync"</span>
1146
+ ...
1147
+ </pre>
1148
+ </div>
1149
+ <p class="caption">Example 10: Discovery by means of an HTTP link</p>
1150
+
1151
+
1152
+ <h4>6.3.4 <a name="robots">robots.txt</a></h4>
1153
+ <p>
1154
+ A Resource List is a Sitemap and hence may be made discoverable via the
1155
+ established approach of adding a <code>Sitemap</code> directive to a
1156
+ Source's <code>robots.txt</code> file that has the URI of the Resource
1157
+ List as its value. If a Source supports multiple sets of resources,
1158
+ multiple directives may be added, one for each Resource List associated
1159
+ with a specific set of resources. In case a Source supports both regular
1160
+ Sitemaps and ResourceSync Sitemaps (Resource Lists) they may be
1161
+ made discoverable, again, by including multiple <code>Sitemap</code>
1162
+ directives as shown in <a href="#ex_11">Example 11</a>.</p>
1163
+
1164
+ <p>Once a Resource List for a set of resources has been discovered
1165
+ in this manner, the corresponding Capability List can be discovered
1166
+ by following a link with the <code>up</code> relation type provided
1167
+ in the Resource List. Next, the Source Description can be discovered
1168
+ by following yet another link with the <code>up</code>
1169
+ relation type provided in the Capability List.
1170
+ </p>
1171
+
1172
+ <a name="ex_11"></a>
1173
+ <div class="exampleInner">
1174
+ <pre>User-agent: *
1175
+ Disallow: /cgi-bin/
1176
+ Disallow: /tmp/
1177
+ <span class="rs">Sitemap: http://example.com/dataset1/resourcelist.xml</span>
1178
+ </pre>
1179
+ </div>
1180
+ <p class="caption">Example 11: A <code>robots.txt</code> file that points at a Resource List</p>
1181
+
1182
+
1183
+ <h2>7. <a name="DocumentFormats">Sitemap Document Formats</a></h2>
1184
+
1185
+ <p>
1186
+ In order to convey information pertaining to resources in the ResourceSync framework,
1187
+ the Sitemap (root element <code>&lt;urlset&gt;</code>) and Sitemap index (root
1188
+ element <code>&lt;sitemapindex&gt;</code>) document formats introduced by the
1189
+ <a href="#ref-sitemaps">Sitemap protocol</a> are used for a variety of purposes.
1190
+ The <code>&lt;sitemapindex&gt;</code> document format is used when it is necessary to
1191
+ group multiple documents of the <code>&lt;urlset&gt;</code> format.
1192
+ The ResourceSync framework follows community-defined limits for when to
1193
+ publish multiple documents of the <code>&lt;urlset&gt;</code> format.
1194
+ At time of publication of this specification, the limit is 50,000 items
1195
+ per document and a document size of 50&nbsp;MB.
1196
+ </p>
1197
+
1198
+ <p>
1199
+ The document formats, as well as their ResourceSync extension elements, are
1200
+ shown in <a href="#tab_2">Table 2</a>. The <code>&lt;rs:md&gt;</code>
1201
+ and <code>&lt;rs:ln&gt;</code> elements are introduced to express metadata
1202
+ and links, respectively.
1203
+ Both are in the ResourceSync XML Namespace and may have attributes.
1204
+ The attributes of these elements defined by ResourceSync are listed in
1205
+ <a href="#elem_intro_tab">Table 3</a> and detailed below. As shown in
1206
+ the examples, these attributes must not have an XML Namespace prefix.
1207
+ The <code>&lt;rs:ln&gt;</code> element as well as several of the
1208
+ ResourceSync attributes are based upon other specifications and in those
1209
+ cases inherit the semantics defined there; the "Specification" column of
1210
+ <a href="#elem_intro_tab">Table 3</a> refers to those specifications.
1211
+ Communities may introduce additional attributes when needed but must use
1212
+ an XML Namespace other than that of ResourceSync and must appropriately use
1213
+ namespace prefixes for those attributes.
1214
+ </p>
1215
+
1216
+ <a name="tab_2"></a>
1217
+ <table class="elem_intro-table" summary="Sitemap document formats">
1218
+ <tbody><tr class="top">
1219
+ <th>Sitemap</th><th>Sitemap Index</th>
1220
+ </tr>
1221
+ <tr class="even">
1222
+ <td class="left">
1223
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1224
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1225
+ <span class="rs">xmlns:rs="http://www.openarchives.org/rs/terms/"</span>&gt;
1226
+ <span class="rs">&lt;rs:md /&gt;</span>
1227
+ <span class="rs">&lt;rs:ln /&gt;</span>
1228
+ &lt;url&gt;
1229
+ &lt;loc /&gt;
1230
+ <span class="rs">&lt;rs:md /&gt;</span>
1231
+ <span class="rs">&lt;rs:ln /&gt;</span>
1232
+ &lt;/url&gt;
1233
+ &lt;url&gt;
1234
+ ...
1235
+ &lt;/url&gt;
1236
+ &lt;/urlset&gt;
1237
+ </pre>
1238
+ </td>
1239
+ <td class="left">
1240
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1241
+ &lt;sitemapindex xmlns="..."
1242
+ <span class="rs">xmlns:rs="..."</span>&gt;
1243
+ <span class="rs">&lt;rs:md /&gt;</span>
1244
+ <span class="rs">&lt;rs:ln /&gt;</span>
1245
+ &lt;sitemap&gt;
1246
+ &lt;loc /&gt;
1247
+ <span class="rs">&lt;rs:md /&gt;</span>
1248
+ <span class="rs">&lt;rs:ln /&gt;</span>
1249
+ &lt;/sitemap&gt;
1250
+ &lt;sitemap&gt;
1251
+ ...
1252
+ &lt;/sitemap&gt;
1253
+ &lt;/sitemapindex&gt;
1254
+ </pre>
1255
+ </td>
1256
+ </tr>
1257
+ </tbody></table>
1258
+ <p class="caption">Table 2: The Sitemap document formats including the ResourceSync extensions</p>
1259
+
1260
+ <p>The overall structure of the ResourceSync documents is as follows:</p>
1261
+
1262
+ <p><code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code> -- These
1263
+ elements are the root elements of ResourceSync documents; this specification
1264
+ adds one mandatory and one optional child element to the child elements of
1265
+ the Sitemap document formats:</p>
1266
+ <ul>
1267
+ <li><code>&lt;rs:md&gt;</code> -- In this context, the element conveys information about the document itself. Its use is
1268
+ mandatory and it may have the following attributes:
1269
+ <ul>
1270
+ <li><code>at</code> -- This attribute is used for Resource Lists, Resource List Indexes,
1271
+ Resource Dumps, Resource Dump Indexes, and Resource Dump Manifests; it is
1272
+ not used for Change Lists, Change List Indexes, Change Dumps, Change Dump
1273
+ Indexes, and Change Dump Manifests. Required use of the attribute is detailed in the
1274
+ sections describing the respective documents and summarized in <a href="#TimeAttributeReqs">Appendix A</a>.
1275
+ The <code>at</code> attribute conveys the datetime at which the process of taking
1276
+ a snapshot of resources for their inclusion in the document to which the
1277
+ attribute pertains started.
1278
+ It thus provides a guarantee that each resource state represented in the document is
1279
+ the result of all changes to the resource at least up until the
1280
+ datetime expressed as the value of the <code>at</code> attribute.
1281
+ The attribute value is expressed as a <a href="#w3c-datetime">W3C Datetime</a> and the
1282
+ use of a complete date and time expressed in UTC using the format <code>YYYY-MM-DDThh:mm:ss[.s]Z</code> is recommended.
1283
+ The attribute represents the time of a snapshot
1284
+ such as t1, t2, t3, and t4 of <a href="#fig_source_perspective">Figure 1</a>.
1285
+ </li>
1286
+ <li><code>capability</code> -- This attribute is mandatory in all ResourceSync documents. The value of the attribute conveys the nature of the document,
1287
+ e.g., whether the document is a Resource List, a Change List, a Manifest, etc.
1288
+ Defined values are <code>resourcelist</code>, <code>changelist</code>, <code>resourcedump</code>, <code>changedump</code>, <code>resourcedump-manifest</code>,
1289
+ <code>changedump-manifest</code>, <code>capabilitylist</code>, and <code>description</code>.
1290
+ </li>
1291
+ <li><code>completed</code> -- This optional attribute is used for Resource Lists,
1292
+ Resource List Indexes,
1293
+ Resource Dumps, Resource Dump Indexes, and Resource Dump Manifests; it is
1294
+ not used for Change Lists, Change List Indexes, Change Dumps, Change Dump
1295
+ Indexes, and Change Dump Manifests.
1296
+ The <code>completed</code> attribute conveys the datetime at which the process of taking
1297
+ a snapshot of resources for their inclusion in the document to which the attribute pertains completed.
1298
+ The combination of the datetimes provided in the <code>at</code> and <code>completed</code> attributes
1299
+ expresses an interval during which resources may have changed beyond the state they had at the datetime
1300
+ expressed in the <code>at</code> attribute.
1301
+ The attribute value for <code>completed</code> is expressed as a <a href="#w3c-datetime">W3C Datetime</a> and the
1302
+ use of a complete date and time expressed in UTC using the format <code>YYYY-MM-DDThh:mm:ss[.s]Z</code> is recommended.
1303
+ </li>
1304
+ <li><code>from</code> -- This attribute is used for Change Lists, Change List Indexes,
1305
+ Change Dumps, Change Dump Indexes, and Change Dump Manifests; it is not used
1306
+ for Resource Lists, Resource List Indexes, Resource Dumps, Resource Dump Indexes,
1307
+ and Resource Dump Manifests. Required use of the attribute is detailed in
1308
+ the sections describing the respective documents and summarized in
1309
+ <a href="#TimeAttributeReqs">Appendix A</a>.
1310
+ The attribute indicates that all changes that occurred to the set of resources at the Source
1311
+ since the datetime expressed (and up until the datetime expressed in the <code>until</code>
1312
+ attribute, if it exists) are included in the document to which the attribute pertains.
1313
+ The attribute value is expressed as a <a href="#w3c-datetime">W3C Datetime</a> and the
1314
+ use of a complete date and time expressed in UTC using the format <code>YYYY-MM-DDThh:mm:ss[.s]Z</code> is recommended.
1315
+ For example, the first Change List in
1316
+ <a href="#fig_source_perspective">Figure 2</a> would have a <code>from</code> value of t1, and the second Change List would have a <code>from</code>
1317
+ value of t3.
1318
+ </li>
1319
+ <li><code>until</code> -- This optional attribute is used for Change Lists, Change List Indexes, Change Dumps,
1320
+ Change Dump Indexes, and Change Dump Manifests; it is not used for Resource Lists,
1321
+ Resource List Indexes, Resource Dumps, Resource Dump Indexes, and Resource Dump Manifests.
1322
+ The attribute indicates that all changes that occurred to the set of resource at the Source
1323
+ up until the datetime expressed are included in the document to which the attribute pertains.
1324
+ <ul>
1325
+ <li>When a document carries the <code>until</code> attribute, this indicates that
1326
+ the document will not be updated anymore.</li>
1327
+ <li>When a change document does not carry the <code>until</code> attribute, any
1328
+ subsequent changes to the corresponding set of resources will cause the document
1329
+ to be updated.</li>
1330
+ </ul>
1331
+ The attribute value is expressed as a <a href="#w3c-datetime">W3C Datetime</a> and the
1332
+ use of a complete date and time expressed in UTC using the format <code>YYYY-MM-DDThh:mm:ss[.s]Z</code> is recommended.
1333
+ For example, the first Change List in <a href="#fig_source_perspective">Figure 2</a> would have an <code>until</code> value of t3 and the second
1334
+ Change List would have an <code>until</code> value of t5.
1335
+ </li>
1336
+ </ul>
1337
+ </li>
1338
+ <li>
1339
+ <code>&lt;rs:ln&gt;</code> -- A repeatable element used to support discovery of other
1340
+ documents by means of a link. Required use of the element is detailed in the sections
1341
+ that describe the documents in which <code>&lt;rs:ln&gt;</code> is used. It may have
1342
+ several attributes and the ones defined by ResourceSync are as follows:
1343
+ <ul>
1344
+ <li><code>href</code> -- A mandatory attribute to convey the URI of the other document.</li>
1345
+ <li><code>rel</code> -- A mandatory attribute to express a relationship. The following values are explicitly used in this specification:
1346
+ <ul>
1347
+ <li><code>describedby</code> -- for linking from a Capability List to a document that describes the set of resources
1348
+ covered by it, and from a Source Description to a document that describes the Source.</li>
1349
+ <li><code>up</code> -- for linking from a Capability List to the Source Description and from a
1350
+ document that conveys a capability, such as a Resource List, to the Capability List under which it resides.
1351
+ </li>
1352
+ <li><code>index</code> -- for linking from a document that conveys a capability (e.g., a Resource List)
1353
+ to a parent index document (e.g., a Resource List Index).</li>
1354
+ </ul>
1355
+ </li>
1356
+ </ul>
1357
+ </li>
1358
+
1359
+ <li><code>&lt;url&gt;</code> or <code>&lt;sitemap&gt;</code> -- The <code>&lt;urlset&gt;</code> element has zero or more
1360
+ <code>&lt;url&gt;</code> child elements, and the
1361
+ <code>&lt;sitemapindex&gt;</code> element has zero or more <code>&lt;sitemap&gt;</code> child elements. Each such child element is used to convey information about
1362
+ a resource that plays a role in the ResourceSync framework. They may have the
1363
+ following child elements:
1364
+ <ul>
1365
+ <li><code>&lt;loc&gt;</code> -- A mandatory element that conveys the URI of the resource that plays a role in the ResourceSync framework.</li>
1366
+ <li><code>&lt;lastmod&gt;</code> -- An element that conveys the last
1367
+ modification time of the resource with the URI provided in <code>&lt;loc&gt;</code>,
1368
+ as defined in <a href="#ref-rfc2616">RFC 2616, Sec. 14.29</a>. The value is expressed
1369
+ as a <a href="#w3c-datetime">W3C Datetime</a> as described earlier in this section.
1370
+ The use of <code>&lt;lastmod&gt;</code> is optional in all ResourceSync documents.
1371
+ Note that there is significant variation in practices for the use and maintenance
1372
+ of last modification times, the time expressed may not correspond with the
1373
+ <code>datetime</code> of the last ResourceSync change event, or fall within the
1374
+ <code>from</code> and <code>until</code> datetimes of a Change List or Change Dump
1375
+ Manifest that includes the resource.</li>
1376
+ <li><code>&lt;changefreq&gt;</code> -- An optional element that provides a hint about the change frequency
1377
+ of the resource with the URI provided in <code>&lt;loc&gt;</code>. Defined values are <code>always</code>, <code>hourly</code>,
1378
+ <code>daily</code>, <code>weekly</code>, <code>monthly</code>, <code>yearly</code>, and <code>never</code>.
1379
+ The value <code>always</code> should be used for resources that change each time they are accessed.
1380
+ The value <code>never</code> should be used for archived resources.</li>
1381
+ <li><code>&lt;rs:md&gt;</code> -- In this context, the element conveys metadata pertaining to the resource with the URI provided in <code>&lt;loc&gt;</code>.
1382
+ The element is not repeatable, and is mandatory for some documents and optional
1383
+ for others, as described in the appropriate sections. It may have several
1384
+ attributes and the ones defined by ResourceSync are as follows:
1385
+ <ul>
1386
+ <li><code>at</code> and <code>completed</code> -- The semantics and value
1387
+ of these attributes are as defined earlier in this section.
1388
+ They are only used for Resource List Indexes, Resource Dumps, and Resource Dump Indexes.
1389
+ Required use of the attributes is detailed in the sections describing the respective documents
1390
+ and summarized in <a href="#TimeAttributeReqs">Appendix A</a>.</li>
1391
+ <li><code>capability</code> -- This attribute is mandatory in Source Descriptions and Capability Lists.
1392
+ Its value indicates the nature of the resource identified by the URI
1393
+ in the <code>&lt;loc&gt;</code> element, e.g., a Resource List, a Change
1394
+ List, a Change Dump, etc. Values defined in this specification are
1395
+ <code>resourcelist</code>, <code>changelist</code>, <code>resourcedump</code>, <code>changedump</code>, and <code>capabilitylist</code>.</li>
1396
+ <li><code>change</code> -- The value of the attribute conveys the type of change
1397
+ that a resource underwent. Values defined in this specification are
1398
+ <code>created</code>, <code>updated</code>, and <code>deleted</code>, which
1399
+ convey the creation, update, and deletion of a resource, respectively.
1400
+ This attribute is used in <a href="#ChangeList">Change Lists (Section 12.1)</a> and <a href="#ChangeDumpManifest">Change Dump Manifests (Section 13.2)</a>.</li>
1401
+ <li><code>datetime</code> -- The value of the attribute conveys the datetime of
1402
+ the change event for the resource. The value is expressed as a
1403
+ <a href="#w3c-datetime">W3C Datetime</a> as described earlier in this section.
1404
+ This attribute may be used in <a href="#ChangeList">Change Lists (Section 12.1)</a>
1405
+ and <a href="#ChangeDumpManifest">Change Dump Manifests (Section 13.2)</a>. The value
1406
+ must be equal to or after the <code>from</code> datetime, and before or equal to
1407
+ the <code>until</code> datetime if specified.</li>
1408
+ <li><code>encoding</code> -- The value of the attribute conveys what content codings have been applied to the resource. The value of the
1409
+ <code>encoding</code> attribute should be equal to the value of the <code>content-encoding</code> header in the HTTP response as defined in
1410
+ <a href="#ref-rfc2616">RFC 2616, Sec. 14.11</a>.</li>
1411
+ <li><code>from</code> and <code>until</code> -- The semantics and value
1412
+ of these attributes are as defined earlier in this section.
1413
+ They are only used for Change List Indexes, Change Dumps, and Change Dump Indexes.
1414
+ Required use of the attributes is detailed in the sections describing the respective documents
1415
+ and summarized in <a href="#TimeAttributeReqs">Appendix A</a>.</li>
1416
+ <li><code>hash</code> -- The value of the attribute conveys fixity information for a resource representation returned when the URI in <code>&lt;loc&gt;</code> is dereferenced.
1417
+ The attribute value is expressed in the form of a whitespace-delimited list of hash values.
1418
+ Each hash value is represented by a hex-encoded digest and is preceded by a token that identifies the utilized hash algorithm, e.g., <code>md5:</code>, <code>sha-256:</code>.</li>
1419
+ <li><code>length</code> -- The value of the attribute conveys the content length of a resource representation returned when the URI in <code>&lt;loc&gt;</code> is dereferenced.
1420
+ The value of the <code>length</code> attribute should be equal to the value of the <code>Content-Length</code> header in the HTTP response
1421
+ and must be computed as defined in <a href="#ref-rfc2616">RFC 2616, Sec. 4.4</a>.</li>
1422
+
1423
+ <li><code>path</code> -- The attribute is only used in
1424
+ <a href="#ResourceDumpManifest">Resource Dump Manifests (Section 11.2)</a> and
1425
+ <a href="#ChangeDumpManifest">Change Dump Manifests (Section 13.2)</a>.
1426
+ Its value conveys the file path of the bitstream associated with the URI in <code>&lt;loc&gt;</code> in the ZIP file. That is
1427
+ the relative file system path where the bitstream would reside if the ZIP were unpacked.</li>
1428
+ <li><code>type</code> -- The value of the attribute conveys the Media Type of a resource representation returned when the URI in
1429
+ <code>&lt;loc&gt;</code> is dereferenced.
1430
+ Registered values are listed in the <a href="#ref-iana-mime">IANA MIME Media Type registry</a>.</li>
1431
+ </ul>
1432
+ </li>
1433
+ <li><code>&lt;rs:ln&gt;</code> -- In this context, an optional and repeatable element used to link to resources related to the one with the
1434
+ URI provided in <code>&lt;loc&gt;</code>, such as
1435
+ a copy on a mirror site, a prior version of the resource, etc. (see
1436
+ Linking to Related Resources in <a href="#SourcePers">Section 5.1</a>).
1437
+ It may have several attributes and the ones defined by ResourceSync are as follows:
1438
+ <ul>
1439
+ <li><code>href</code> -- A mandatory attribute to convey the URI of the related resource.
1440
+ </li>
1441
+ <li><code>rel</code> -- A mandatory attribute to convey the relationship between the resource with the URI in <code>&lt;loc&gt;</code>
1442
+ and the one with the URI in <code>href</code>.
1443
+ Values for the <code>rel</code> attribute are listed in the document
1444
+ <a href="#ref-relationtypes">Relation Types Used in the ResourceSync
1445
+ Framework</a>. The ones featured in this specification are:
1446
+ <ul>
1447
+ <li><code>contents</code> -- for a link from an entry in a Resource Dump or Change Dump that points to a bitstream package
1448
+ to a Resource Dump Manifest or to a Change Dump Manifest, respectively, for that bitstream package.</li>
1449
+ <li><code>duplicate</code> -- for a link to a resource's mirror location.</li>
1450
+ <li><code>alternate</code> and <code>canonical</code> -- for a link to an alternate representation of a resource.</li>
1451
+ <li><code>http://www.openarchives.org/rs/terms/patch</code> -- for a link to a resource that details the difference between the
1452
+ previous and current version of a resource.</li>
1453
+ <li><code>describedby</code> and <code>describes</code> -- for a link providing additional information about a resource.</li>
1454
+ <li><code>memento</code> and <code>timegate</code> -- for a link to access prior versions of a resource.</li>
1455
+ <li><code>collection</code> -- for a link that expresses collection membership.</li>
1456
+ <li><code>via</code> -- for a link that provides provenance information.</li>
1457
+ </ul>
1458
+ </li>
1459
+ <li><code>encoding</code>, <code>hash</code>, <code>length</code>,
1460
+ <code>modified</code>, <code>path</code>, <code>type</code> -- Optional
1461
+ attributes with meanings as described earlier in this section and
1462
+ pertaining to the related resource.</li>
1463
+ <li><code>pri</code> -- An optional attribute used to express a priority
1464
+ among links with the same relation type. The attribute value is an integer
1465
+ between 1 and 999,999, with a lower integer indicating a higher priority
1466
+ and the absence of the attribute indicating a value of 999,999.</li>
1467
+ </ul>
1468
+ </li>
1469
+ </ul>
1470
+ </li>
1471
+ </ul>
1472
+
1473
+ <p><a href="#elem_intro_tab">Table 3</a> lists the elements used in ResourceSync
1474
+ documents and for each shows the attributes defined by ResourceSync
1475
+ that may be used with them. The &quot;Specification&quot; column refers to the
1476
+ specification where elements or attributes were introduced that
1477
+ ResourceSync equivalents are based upon and from where they inherit their semantics.
1478
+ A mark in the &quot;Representation&quot; column for an attribute indicates
1479
+ that it should only be used when a specific representation of a resource is concerned,
1480
+ whereas a mark in the &quot;Resource&quot; column indicates it is usable for a
1481
+ resource in general. A <a href="resourcesync.xsd">W3C XML Schema</a> (available
1482
+ at <a href="resourcesync.xsd">http://www.openarchives.org/rs/resourcesync.xsd</a>)
1483
+ is provided to validate the elements introduced by ResourceSync.</p>
1484
+
1485
+ <p>Relation types other than the ones listed above may be used in the
1486
+ ResourceSync Framework. Valid relation types must be registered in the
1487
+ <a href="http://www.iana.org/assignments/link-relations/link-relations.xml">IANA Link Relation Type Registry</a>
1488
+ or expressed as URIs as specified in <a href="#ref-rfc5988">RFC 5988, Sec. 4.2</a>. The document
1489
+ <a href="#ref-relationtypes">Relation Types Used in the ResourceSync Framework</a> attempts to
1490
+ provide an up-to-date overview.</p>
1491
+
1492
+ <a name="elem_intro_tab"></a>
1493
+ <table class="elem_intro-table" summary="Elements used and sources of definitions">
1494
+ <tbody>
1495
+ <tr class="top">
1496
+ <th class="left">Element/Attribute</th><th>Specification</th><th>Resource</th><th>Representation</th>
1497
+ </tr>
1498
+ <tr class="top1">
1499
+ <td class="left"><b><code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code></b></td><td><a href="#ref-sitemaps">Sitemap protocol</a></td><td></td><td></td>
1500
+ </tr>
1501
+ <tr class="top1">
1502
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;<b><code>&lt;rs:md&gt;</code></b></td><td>This specification</td><td></td><td></td>
1503
+ </tr>
1504
+ <tr class="odd">
1505
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>at</code></td><td>This specification</td><td></td><td></td>
1506
+ </tr>
1507
+ <tr class="even">
1508
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>capability</code></td><td>This specification</td><td></td><td></td>
1509
+ </tr>
1510
+ <tr class="odd">
1511
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>completed</code></td><td>This specification</td><td></td><td></td>
1512
+ </tr>
1513
+ <tr class="even">
1514
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>from</code></td><td>This specification</td><td></td><td></td>
1515
+ </tr>
1516
+ <tr class="odd">
1517
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>until</code></td><td>This specification</td><td></td><td></td>
1518
+ </tr>
1519
+ <tr class="top1">
1520
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;<b><code>&lt;rs:ln&gt;</code></b></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td></td>
1521
+ </tr>
1522
+ <tr class="odd">
1523
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>href</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td></td>
1524
+ </tr>
1525
+ <tr class="even">
1526
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>rel</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td></td>
1527
+ </tr>
1528
+ <tr class="top1">
1529
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;<b><code>&lt;url&gt;</code> or <code>&lt;sitemap&gt;</code></b></td><td><a href="#ref-sitemaps">Sitemap protocol</a></td><td></td><td></td>
1530
+ </tr>
1531
+ <tr class="odd">
1532
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&lt;loc&gt;</code></td><td><a href="#ref-sitemaps">Sitemap protocol</a></td><td></td><td></td>
1533
+ </tr>
1534
+ <tr class="even">
1535
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&lt;lastmod&gt;</code></td><td><a href="#ref-sitemaps">Sitemap protocol</a></td><td></td><td></td>
1536
+ </tr>
1537
+ <tr class="odd">
1538
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&lt;changefreq&gt;</code></td><td><a href="#ref-sitemaps">Sitemap protocol</a></td><td></td><td></td>
1539
+ </tr>
1540
+ <tr class="top1">
1541
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><code>&lt;rs:md&gt;</code></b></td><td>This specification</td><td></td><td></td>
1542
+ </tr>
1543
+ <tr class="odd">
1544
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>at</code></td><td>This specification</td><td></td><td></td>
1545
+ </tr>
1546
+ <tr class="even">
1547
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>capability</code></td><td>This specification</td><td></td><td></td>
1548
+ </tr>
1549
+ <tr class="odd">
1550
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>change</code></td><td>This specification</td><td>X</td><td>X</td>
1551
+ </tr>
1552
+ <tr class="even">
1553
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>completed</code></td><td>This specification</td><td></td><td></td>
1554
+ </tr>
1555
+ <tr class="odd">
1556
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>datetime</code></td><td>This specification</td><td>X</td><td>X</td>
1557
+ </tr>
1558
+ <tr class="even">
1559
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>encoding</code></td><td><a href="#ref-rfc2616">RFC2616</a></td><td></td><td>X</td>
1560
+ </tr>
1561
+ <tr class="odd">
1562
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>from</code></td><td>This specification</td><td></td><td></td>
1563
+ </tr>
1564
+ <tr class="even">
1565
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>hash</code></td><td><a href="#ref-ale">Atom Link Extensions</a></td><td></td><td>X</td>
1566
+ </tr>
1567
+ <tr class="odd">
1568
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>length</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td>X</td>
1569
+ </tr>
1570
+ <tr class="even">
1571
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>path</code></td><td>This specification</td><td></td><td>X</td>
1572
+ </tr>
1573
+ <tr class="odd">
1574
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>type</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td>X</td>
1575
+ </tr>
1576
+ <tr class="even">
1577
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>until</code></td><td>This specification</td><td></td><td></td>
1578
+ </tr>
1579
+ <tr class="top1">
1580
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><code>&lt;rs:ln&gt;</code></b></td><td>This specification</td><td></td><td></td>
1581
+ </tr>
1582
+ <tr class="odd">
1583
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>encoding</code></td><td><a href="#ref-rfc2616">RFC2616</a></td><td></td><td>X</td>
1584
+ </tr>
1585
+ <tr class="even">
1586
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>hash</code></td><td><a href="#ref-ale">Atom Link Extensions</a></td><td></td><td>X</td>
1587
+ </tr>
1588
+ <tr class="odd">
1589
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>href</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td>X</td><td>X</td>
1590
+ </tr>
1591
+ <tr class="even">
1592
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>length</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td>X</td>
1593
+ </tr>
1594
+ <tr class="odd">
1595
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>modified</code></td><td><a href="#ref-ale">Atom Link Extensions</a></td><td>X</td><td>X</td>
1596
+ </tr>
1597
+ <tr class="even">
1598
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>path</code></td><td>This specification</td><td></td><td>X</td>
1599
+ </tr>
1600
+ <tr class="odd">
1601
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>pri</code></td><td><a href="#ref-rfc6249">RFC6249</a></td><td>X</td><td>X</td>
1602
+ </tr>
1603
+ <tr class="even">
1604
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>rel</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td>X</td><td>X</td>
1605
+ </tr>
1606
+ <tr class="odd">
1607
+ <td class="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>type</code></td><td><a href="#ref-rfc4287">RFC4287</a></td><td></td><td>X</td>
1608
+ </tr>
1609
+ </tbody></table>
1610
+ <p class="caption">Table 3: Elements and associated attributes defined for the ResourceSync documents</p>
1611
+
1612
+
1613
+ <h2>8. <a name="SourceDesc"></a>Describing the Source</h2>
1614
+
1615
+ <p>
1616
+ A <b>Source Description</b> is a mandatory document that enumerates the
1617
+ Capability Lists offered by a Source. Since a Source has one Capability
1618
+ List per set of resources that it distinguishes, the Source Description
1619
+ will enumerate as many Capability Lists as the Source has distinct sets
1620
+ of resources.
1621
+ </p>
1622
+ <p>
1623
+ The Source Description is based on the <code>&lt;urlset&gt;</code> format.
1624
+ It has the <code>&lt;urlset&gt;</code> root element and the following structure:
1625
+ </p>
1626
+ <ul>
1627
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code>
1628
+ must have a <code>capability</code> attribute that has a value of <code>description</code>.</li>
1629
+ <li>A recommended <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code>
1630
+ with the relation type <code>describedby</code>
1631
+ points to a document that provides information about the Source.</li>
1632
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code>
1633
+ should be included for each Capability List offered by the Source. This
1634
+ element does not have attributes, but uses child elements to convey
1635
+ information about the Capability Lists. The <code>&lt;url&gt;</code>
1636
+ element has the following child elements:
1637
+ <ul>
1638
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the respective Capability List.</li>
1639
+ <li>An optional <code>&lt;rs:md&gt;</code> child element must have a <code>capability</code> attribute with a value of
1640
+ <code>capabilitylist</code>
1641
+ to convey that the URI points to a Capability List.</li>
1642
+ <li>A recommended <code>&lt;rs:ln&gt;</code> child element with a <code>describedby</code> relation type
1643
+ points to a document that describes the set of resources described by the Capability List.</li>
1644
+ </ul>
1645
+ </li>
1646
+ </ul>
1647
+ <p>
1648
+ The <code>&lt;lastmod&gt;</code> elements should be omitted from the Source Description unless the Source updates the
1649
+ Source Description every time it updates one of the Capability Lists.
1650
+ </p>
1651
+ <p>
1652
+ <a href="#ex_12">Example 12</a> shows a Source Description where the Source offers three Capability Lists.
1653
+ </p>
1654
+ <a name="ex_12"></a>
1655
+ <div class="exampleInner">
1656
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1657
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1658
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
1659
+ &lt;rs:ln rel="describedby"
1660
+ href="http://example.com/info_about_source.xml"/&gt;
1661
+ &lt;rs:md <span class="rs">capability="description"</span>/&gt;
1662
+ &lt;url&gt;
1663
+ &lt;loc&gt;http://example.com/capabilitylist1.xml&lt;/loc&gt;
1664
+ &lt;rs:md capability="capabilitylist"/&gt;
1665
+ &lt;rs:ln rel="describedby"
1666
+ href="http://example.com/info_about_set1_of_resources.xml"/&gt;
1667
+ &lt;/url&gt;
1668
+ &lt;url&gt;
1669
+ &lt;loc&gt;http://example.com/capabilitylist2.xml&lt;/loc&gt;
1670
+ &lt;rs:md capability="capabilitylist"/&gt;
1671
+ &lt;rs:ln rel="describedby"
1672
+ href="http://example.com/info_about_set2_of_resources.xml"/&gt;
1673
+ &lt;/url&gt;
1674
+ &lt;url&gt;
1675
+ &lt;loc&gt;http://example.com/capabilitylist3.xml&lt;/loc&gt;
1676
+ &lt;rs:md capability="capabilitylist"/&gt;
1677
+ &lt;rs:ln rel="describedby"
1678
+ href="http://example.com/info_about_set3_of_resources.xml"/&gt;
1679
+ &lt;/url&gt;
1680
+ &lt;/urlset&gt;
1681
+ </pre>
1682
+ </div>
1683
+ <p class="caption">Example 12: A Source Description</p>
1684
+
1685
+ <p>
1686
+ If a Source needs to or chooses to publish multiple Source Descriptions, it must group them by means of a Source Description Index.
1687
+ </p>
1688
+
1689
+
1690
+ <h2>9. <a name="CapabilityList"></a>Advertising Capabilities</h2>
1691
+
1692
+ <p>
1693
+ A <b>Capability List</b> is a document that enumerates all capabilities supported by a
1694
+ Source for a specific set of resources. The Source defines which resources are
1695
+ part of the set of resources described by the Capability List.
1696
+ If there is more than one such set, then the Source must distinguish them with
1697
+ different capability lists. The choice of which resources are part of which set
1698
+ may derive from a variety of criteria, including media type, collection membership,
1699
+ change frequency, subject of the resource and many others.
1700
+ </p>
1701
+ <p>
1702
+ A Capability List points at the capability documents for its set of resources:
1703
+ Resource List (<a href="#DescResources">Section 10.1</a>),
1704
+ Resource Dump (<a href="#ResourceDump">Section 11.1</a>),
1705
+ Change List (<a href="#DesChanges">Section 12.1</a>), and
1706
+ Change Dump (<a href="#ChangeDump">Section 13.1</a>).
1707
+ A Capability List must only contain one entry per capability.
1708
+ </p>
1709
+ <p>
1710
+ Capabilities that are conveyed in the same Capability List uniformly apply to
1711
+ the set of resources covered by that Capability List. For example, if a
1712
+ Capability List enumerates a Resource List, a Resource Dump, and a Change List,
1713
+ then a given resource that appears in a Resource List must also appear in a
1714
+ Resource Dump, and changes to the resource must be conveyed in the Change List.
1715
+ </p>
1716
+ <p>
1717
+ The Capability List is based on the <code>&lt;urlset&gt;</code> format.
1718
+ It has the <code>&lt;urlset&gt;</code> root element and the following structure:
1719
+ </p>
1720
+ <ul>
1721
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
1722
+ <code>capability</code> attribute that has a value of <code>capabilitylist</code>.</li>
1723
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> with the relation type <code>up</code>
1724
+ points to the Source Description document that enumerates all Capability Lists offered by the Source.</li>
1725
+ <li>A recommended <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> with the relation type <code>describedby</code>
1726
+ points to a document that provides information about the set of resources covered by the Capability List.</li>
1727
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code> per capability offered by the Source. This element does not have attributes, but uses
1728
+ child elements to convey information about the capabilities. The <code>&lt;url&gt;</code> element has the following child elements:
1729
+ <ul>
1730
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the respective capability document.</li>
1731
+ <li>A mandatory <code>&lt;rs:md&gt;</code> child element must have a <code>capability</code> attribute to convey the type of the respective capability.</li>
1732
+ </ul>
1733
+ </li>
1734
+ </ul>
1735
+ <p>
1736
+ The <code>&lt;lastmod&gt;</code> elements should be omitted from the Capability List unless the Source updates the Capability List
1737
+ every time it updates one of the capability documents.
1738
+ </p>
1739
+ <p>
1740
+ <a href="#ex_13">Example 13</a> shows a Capability List where the Source offers four capabilities: a Resource List, a Resource Dump, a Change List,
1741
+ and a Change Dump. A Destination cannot determine from the Capability List whether a Source provides, for example, a Resource List Index or a single Resource List.
1742
+ The capability document must be downloaded to make this determination: a document with a <code>&lt;sitemapindex&gt;</code> root element is an index,
1743
+ a document with a <code>&lt;urlset&gt;</code> root element is not.
1744
+ </p>
1745
+ <a name="ex_13"></a>
1746
+ <div class="exampleInner">
1747
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1748
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1749
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
1750
+ &lt;rs:ln rel="describedby"
1751
+ href="http://example.com/info_about_set1_of_resources.xml"/&gt;
1752
+ &lt;rs:ln <span class="rs">rel="up"</span>
1753
+ href="http://example.com/resourcesync_description.xml"/&gt;
1754
+ &lt;rs:md <span class="rs">capability="capabilitylist"</span>/&gt;
1755
+ &lt;url&gt;
1756
+ &lt;loc&gt;http://example.com/dataset1/resourcelist.xml&lt;/loc&gt;
1757
+ &lt;rs:md capability="resourcelist"/&gt;
1758
+ &lt;/url&gt;
1759
+ &lt;url&gt;
1760
+ &lt;loc&gt;http://example.com/dataset1/resourcedump.xml&lt;/loc&gt;
1761
+ &lt;rs:md capability="resourcedump"/&gt;
1762
+ &lt;/url&gt;
1763
+ &lt;url&gt;
1764
+ &lt;loc&gt;http://example.com/dataset1/changelist.xml&lt;/loc&gt;
1765
+ &lt;rs:md capability="changelist"/&gt;
1766
+ &lt;/url&gt;
1767
+ &lt;url&gt;
1768
+ &lt;loc&gt;http://example.com/dataset1/changedump.xml&lt;/loc&gt;
1769
+ &lt;rs:md capability="changedump"/&gt;
1770
+ &lt;/url&gt;
1771
+ &lt;/urlset&gt;
1772
+ </pre>
1773
+ </div>
1774
+ <p class="caption">Example 13: A Capability List</p>
1775
+
1776
+ <p>
1777
+ ResourceSync defines only a small number of capabilities, and enumerating those
1778
+ does not approach the limits of a single Capability List. Thus no
1779
+ <code>&lt;sitemapindex&gt;</code> document structure is necessary and Sources
1780
+ should not generate such structures.
1781
+ </p>
1782
+
1783
+
1784
+ <h2>10. <a name="DescResources">Describing Resources</a></h2>
1785
+ <p>
1786
+ A Source may publish a description of the resources it makes available
1787
+ for synchronization. This information enables a Destination to make an
1788
+ initial copy of some or all of those resources, or to update a local
1789
+ copy to remain synchronized with changes.
1790
+ </p>
1791
+
1792
+ <h3>10.1 <a name="ResourceList">Resource List</a></h3>
1793
+ <p>
1794
+ A <b>Resource List</b> is introduced to list and describe the resources
1795
+ that a Source makes available for synchronization.
1796
+ It presents a snapshot of a Source's resources at a particular point in time.
1797
+ </p>
1798
+
1799
+ <p>
1800
+ A Resource List is based on the <code>&lt;urlset&gt;</code> document format
1801
+ introduced by the Sitemap protocol. It has the <code>&lt;urlset&gt;</code>
1802
+ root element and the following structure:
1803
+ </p>
1804
+ <ul>
1805
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
1806
+ <code>capability</code> attribute that has a value of <code>resourcelist</code>. It must also have an
1807
+ <code>at</code> attribute that conveys the datetime at which the process of taking a snapshot of resources
1808
+ for their inclusion in the Resource List started, and it may have a <code>completed</code> attribute that conveys
1809
+ the datetime at which that process completed.</li>
1810
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
1811
+ <code>up</code>.</li>
1812
+ <li>In case a <a href="#ResourceListIndex">Resource List Index</a> exists,
1813
+ a recommended <code>&lt;rs:ln&gt;</code> child element of
1814
+ <code>&lt;urlset&gt;</code> points to it with the relation type <code>index</code>.</li>
1815
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code> should be included for each resource. This element does not have attributes, but uses
1816
+ child elements to convey information about the resource. The <code>&lt;url&gt;</code> element has the following child elements:
1817
+ <ul>
1818
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the resource.</li>
1819
+ <li>Optional <code>&lt;lastmod&gt;</code> and <code>&lt;changefreq&gt;</code> child
1820
+ element with semantics as described in <a href="#DocumentFormats">Section 7</a>.</li>
1821
+ <li>An optional <code>&lt;rs:md&gt;</code> child element provides further metadata about
1822
+ the resource. It may have the attributes as described in
1823
+ <a href="#DocumentFormats">Section 7</a>.</li>
1824
+ <li>Optional <code>&lt;rs:ln&gt;</code> child elements link to related resources as described in <a href="#DocumentFormats">Section 7</a>, and
1825
+ detailed in <a href="#LinkRelRes">Section 14</a>.</li>
1826
+ </ul>
1827
+ </li>
1828
+ </ul>
1829
+ <p>
1830
+ <a href="#ex_14">Example 14</a> shows a Resource List with two resources.
1831
+ The <code>at</code> attribute allows a Destination to determine that neither
1832
+ of the listed resources have undergone a change between their respective
1833
+ last modification datetimes, <code>2013-01-02T13:00:00Z</code> and
1834
+ <code>2013-01-02T14:00:00Z</code>, and the datetime that is the value of
1835
+ the <code>at</code> attribute, <code>2013-01-03T09:00:00Z</code>.
1836
+ </p>
1837
+
1838
+ <a name="ex_14"></a>
1839
+ <div class="exampleInner">
1840
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1841
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1842
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
1843
+ &lt;rs:ln <span class="rs">rel="up"</span>
1844
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
1845
+ &lt;rs:md <span class="rs">capability="resourcelist"
1846
+ at="2013-01-03T09:00:00Z"
1847
+ completed="2013-01-03T09:01:00Z"</span>/&gt;
1848
+ &lt;url&gt;
1849
+ <span class="rs">&lt;loc&gt;</span>http://example.com/res1<span class="rs">&lt;/loc&gt;</span>
1850
+ <span class="rs">&lt;lastmod&gt;</span>2013-01-02T13:00:00Z<span class="rs">&lt;/lastmod&gt;</span>
1851
+ <span class="rs">&lt;rs:md hash</span>="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
1852
+ <span class="rs">length</span>="8876"
1853
+ <span class="rs">type</span>="text/html"<span class="rs">/&gt;</span>
1854
+ &lt;/url&gt;
1855
+ &lt;url&gt;
1856
+ &lt;loc&gt;http://example.com/res2&lt;/loc&gt;
1857
+ &lt;lastmod&gt;2013-01-02T14:00:00Z&lt;/lastmod&gt;
1858
+ &lt;rs:md hash="md5:1e0d5cb8ef6ba40c99b14c0237be735e
1859
+ sha-256:854f61290e2e197a11bc91063afce22e43f8ccc655237050ace766adc68dc784"
1860
+ length="14599"
1861
+ type="application/pdf"/&gt;
1862
+ &lt;/url&gt;
1863
+ &lt;/urlset&gt;
1864
+ </pre>
1865
+ </div>
1866
+ <p class="caption">Example 14: A Resource List</p>
1867
+
1868
+ <h3>10.2 <a name="ResourceListIndex"></a>Resource List Index</h3>
1869
+
1870
+ <p>
1871
+ The ResourceSync framework adopts the community-defined limits for publishing
1872
+ documents of the <code>&lt;urlset&gt;</code> format and
1873
+ introduces a <b>Resource List Index</b> for grouping multiple Resource Lists.
1874
+ The union of the Resource Lists referred to in the Resource List Index represents
1875
+ the entire set of resources that a Source makes available for synchronization.
1876
+ This set of resources, regardless of whether it is conveyed in a single Resource
1877
+ List or in multiple Resource Lists via
1878
+ a Resource List Index, represents the state of the Source's data at a point in time.
1879
+ </p>
1880
+
1881
+ <p>
1882
+ A Resource List Index is based on the <code>&lt;sitemapindex&gt;</code> document
1883
+ format introduced by the Sitemap protocol. It has the
1884
+ <code>&lt;sitemapindex&gt;</code> root element and the following structure:
1885
+ </p>
1886
+ <ul>
1887
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;sitemapindex&gt;</code> must have a
1888
+ <code>capability</code> attribute that has a value of <code>resourcelist</code>. It must also have an
1889
+ <code>at</code> attribute that conveys the datetime at which the process of taking a snapshot of resources
1890
+ for their inclusion in the Resource List Index started, and it may have a <code>completed</code> attribute that conveys
1891
+ the datetime at which that process completed.</li>
1892
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;sitemapindex&gt;</code> points to the Capability List with the relation type
1893
+ <code>up</code>.</li>
1894
+ <li>One <code>&lt;sitemap&gt;</code> child element of <code>&lt;sitemapindex&gt;</code>
1895
+ should be included for each Resource List. This element does not have attributes,
1896
+ but uses child elements to convey information about the Resource List. The
1897
+ <code>&lt;sitemap&gt;</code> element has the following child elements:
1898
+ <ul>
1899
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the Resource List.</li>
1900
+ <li>An optional <code>&lt;lastmod&gt;</code> child element with semantics as described in <a href="#DocumentFormats">Section 7</a>.</li>
1901
+ <li>An optional <code>&lt;rs:md&gt;</code> child element with an <code>at</code> attribute and possibly a
1902
+ <code>completed</code> attribute to convey the datetime at which the process of taking a snapshot of resources
1903
+ for their inclusion in the Resource List respectively started and ended.</li>
1904
+ </ul>
1905
+ </li>
1906
+ </ul>
1907
+ <p>
1908
+ The Destination can determine whether it has reached a Resource List or
1909
+ a Resource List Index based on whether the root element is
1910
+ <code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code>
1911
+ respectively. A Resource List Index that points to three Resource Lists
1912
+ is shown in <a href="#ex_15">Example 15</a>.
1913
+ </p>
1914
+
1915
+ <a name="ex_15"></a>
1916
+ <div class="exampleInner">
1917
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1918
+ &lt;sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1919
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
1920
+ &lt;rs:ln rel="up"
1921
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
1922
+ &lt;rs:md <span class="rs">capability="resourcelist"</span>
1923
+ at="2013-01-03T09:00:00Z"
1924
+ completed="2013-01-03T09:10:00Z"/&gt;
1925
+ &lt;sitemap&gt;
1926
+ &lt;loc&gt;http://example.com/resourcelist1.xml&lt;/loc&gt;
1927
+ <span class="rs">&lt;rs:md at="2013-01-03T09:00:00Z"/&gt;</span>
1928
+ &lt;/sitemap&gt;
1929
+ &lt;sitemap&gt;
1930
+ &lt;loc&gt;http://example.com/resourcelist2.xml&lt;/loc&gt;
1931
+ <span class="rs">&lt;rs:md at="2013-01-03T09:03:00Z"/&gt;</span>
1932
+ &lt;/sitemap&gt;
1933
+ &lt;sitemap&gt;
1934
+ &lt;loc&gt;http://example.com/resourcelist3.xml&lt;/loc&gt;
1935
+ <span class="rs">&lt;rs:md at="2013-01-03T09:07:00Z"/&gt;</span>
1936
+ &lt;/sitemap&gt;
1937
+ &lt;/sitemapindex&gt;
1938
+ </pre>
1939
+ </div>
1940
+ <p class="caption">Example 15: A Resource List Index</p>
1941
+
1942
+ <p>
1943
+ <a href="#ex_16">Example 16</a> shows the content of the Resource List identified by the URI
1944
+ <code>http://example.com/resourcelist1.xml</code>.
1945
+ Structurally, it is identical to the Resource List shown in <a href="#ex_14">Example 14</a>
1946
+ but it contains an additional
1947
+ <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code>
1948
+ that provides a navigational link with the relation type <code>index</code> to the parent Resource List Index
1949
+ shown in <a href="#ex_15">Example 15</a>.
1950
+ This link is meant to ease navigation for Destinations and their adoption is therefore recommended.
1951
+ </p>
1952
+ <a name="ex_16"></a>
1953
+ <div class="exampleInner">
1954
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1955
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
1956
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
1957
+ &lt;rs:ln rel="up"
1958
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
1959
+ &lt;rs:ln <span class="rs">rel="index"</span>
1960
+ href="http://example.com/dataset1/resourcelist-index.xml"/&gt;
1961
+ &lt;rs:md capability="resourcelist"
1962
+ at="2013-01-03T09:00:00Z"/&gt;
1963
+ &lt;url&gt;
1964
+ &lt;loc&gt;http://example.com/res3&lt;/loc&gt;
1965
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c8753"
1966
+ length="4385"
1967
+ type="application/pdf"/&gt;
1968
+ &lt;/url&gt;
1969
+ &lt;url&gt;
1970
+ &lt;loc&gt;http://example.com/res4&lt;/loc&gt;
1971
+ &lt;rs:md hash="md5:4556abdf8ebdc9802ac0c6a7402c9881"
1972
+ length="883"
1973
+ type="image/png"/&gt;
1974
+ &lt;/url&gt;
1975
+ &lt;/urlset&gt;
1976
+ </pre>
1977
+ </div>
1978
+ <p class="caption">Example 16: A Resource List with a navigational link to its parent Resource List Index</p>
1979
+
1980
+
1981
+ <h2>11. <a name="PackResources">Packaging Resources</a></h2>
1982
+ <p>
1983
+ In order to provide Destinations with an efficient way to copy a Source's
1984
+ data using a small number of HTTP requests, a Source may provide packaged
1985
+ bitstreams for its resources.
1986
+ </p>
1987
+
1988
+ <h3>11.1 <a name="ResourceDump">Resource Dump</a></h3>
1989
+ <p>
1990
+ A Source may publish a <strong>Resource Dump</strong>, which provides links
1991
+ to packages of the resources' bitstreams. The Resource Dump represents the
1992
+ Source's state at a point in time. It may be used to transfer resources from
1993
+ the Source in bulk, rather than the Destination having to make many separate
1994
+ requests.
1995
+ </p>
1996
+ <p>
1997
+ The ResourceSync framework recommends the use of the
1998
+ <a href="#ref-zip">ZIP file format</a> as the packaging format. Communities
1999
+ may define their own packaging format, but need to be aware that doing so
2000
+ will have a negative impact on cross-community interoperability.
2001
+ A Resource Dump should only point to packages of the same format.
2002
+ </p>
2003
+ <p>
2004
+ A Resource Dump is based on the <code>&lt;urlset&gt;</code> document format
2005
+ introduced by the Sitemap protocol. It has the <code>&lt;urlset&gt;</code> root
2006
+ element and the following structure:
2007
+ </p>
2008
+ <ul>
2009
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
2010
+ <code>capability</code> attribute that has a value of <code>resourcedump</code>. It must also have an
2011
+ <code>at</code> attribute that conveys the datetime at which the process of taking a snapshot of resources
2012
+ for their inclusion in the Resource Dump started, and it may have a <code>completed</code> attribute that conveys
2013
+ the datetime at which that process completed.</li>
2014
+ <li> A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
2015
+ <code>up</code>.</li>
2016
+ <li>In case a <a href="#ResourceDumpIndex">Resource Dump Index</a> exists,
2017
+ a recommended <code>&lt;rs:ln&gt;</code> child element of
2018
+ <code>&lt;urlset&gt;</code> points to it with the relation type <code>index</code>.</li>
2019
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code>
2020
+ should be included for each bitstream package. This element does not have attributes,
2021
+ but uses child elements to convey information about the package. The
2022
+ <code>&lt;url&gt;</code> element has the following child elements:
2023
+ <ul>
2024
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the package.</li>
2025
+ <li>An optional <code>&lt;lastmod&gt;</code> child element with semantics as described in <a href="#DocumentFormats">Section 7</a>.</li>
2026
+ <li>A recommended <code>&lt;rs:md&gt;</code> child element to convey the Media Type and
2027
+ the length of the package using the <code>type</code> and <code>length</code>
2028
+ attribute, respectively. The element may also have an <code>at</code> attribute and possibly
2029
+ a <code>completed</code> attribute to convey the datetime at which the process
2030
+ of taking a snapshot of resources
2031
+ for their inclusion in the package respectively started and ended.
2032
+ The child element may further have attributes such as
2033
+ <code>hash</code>, as described in <a href="#DocumentFormats">Section 7</a>.</li>
2034
+ <li>An optional <code>&lt;rs:ln&gt;</code> child element with the relation type <code>contents</code> that points to the Resource Dump Manifest
2035
+ associated with the bitstream package.</li>
2036
+ </ul>
2037
+ </li>
2038
+ </ul>
2039
+ <p>
2040
+ <a href="#ex_17">Example 17</a> shows a Resource Dump that points to three ZIP files.
2041
+ Included in each <code>&lt;url&gt;</code> element is a pointer to the
2042
+ <a href="#ResourceDumpManifest">Resource Dump Manifest</a> associated with
2043
+ the package. While this pointer is optional and intended for the Destination's
2044
+ convenience, if provided, the Source needs to ensure that the referred Manifest
2045
+ corresponds with the Manifest included in the bitstream package.
2046
+ </p>
2047
+
2048
+ <a name="ex_17"></a>
2049
+ <div class="exampleInner">
2050
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2051
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2052
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2053
+ &lt;rs:ln rel="up"
2054
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2055
+ &lt;rs:md <span class="rs">capability="resourcedump"</span>
2056
+ at="2013-01-03T09:00:00Z"
2057
+ completed="2013-01-03T09:04:00Z"/&gt;
2058
+ &lt;url&gt;
2059
+ &lt;loc&gt;http://example.com/resourcedump-part1.zip&lt;/loc&gt;
2060
+ &lt;rs:md <span class="rs">type="application/zip"
2061
+ length="4765"
2062
+ at="2013-01-03T09:00:00Z"
2063
+ completed="2013-01-03T09:02:00Z"</span>/&gt;
2064
+ &lt;rs:ln <span class="rs">rel="contents"</span>
2065
+ href="http://example.com/resourcedump_manifest-part1.xml"
2066
+ type="application/xml"/&gt;
2067
+ &lt;/url&gt;
2068
+ &lt;url&gt;
2069
+ &lt;loc&gt;http://example.com/resourcedump-part2.zip&lt;/loc&gt;
2070
+ &lt;rs:md type="application/zip"
2071
+ length="9875"
2072
+ at="2013-01-03T09:01:00Z"
2073
+ completed="2013-01-03T09:03:00Z"/&gt;
2074
+ &lt;rs:ln rel="contents"
2075
+ href="http://example.com/resourcedump_manifest-part2.xml"
2076
+ type="application/xml"/&gt;
2077
+ &lt;/url&gt;
2078
+ &lt;url&gt;
2079
+ &lt;loc&gt;http://example.com/resourcedump-part3.zip&lt;/loc&gt;
2080
+ &lt;rs:md type="application/zip"
2081
+ length="2298"
2082
+ at="2013-01-03T09:03:00Z"
2083
+ completed="2013-01-03T09:04:00Z"/&gt;
2084
+ &lt;rs:ln rel="contents"
2085
+ href="http://example.com/resourcedump_manifest-part3.xml"
2086
+ type="application/xml"/&gt;
2087
+ &lt;/url&gt;
2088
+ &lt;/urlset&gt;
2089
+ </pre>
2090
+ </div>
2091
+ <p class="caption">Example 17: A Resource Dump</p>
2092
+
2093
+ <p>
2094
+ If a Source needs to or chooses to publish multiple Resource Dumps, it must
2095
+ group them using a <a name="ResourceDumpIndex">Resource Dump Index</a>,
2096
+ in a manner that is similar to what was described in
2097
+ <a href="#ResourceListIndex">Section 11.2</a>.
2098
+ </p>
2099
+
2100
+ <h3>11.2 <a name="ResourceDumpManifest">Resource Dump Manifest</a></h3>
2101
+ <p>
2102
+ Each ZIP package referred to from a Resource Dump must contain a <b>Resource Dump Manifest</b>
2103
+ file that describes the package's constituent bitstreams. The file must be named <code>manifest.xml</code>
2104
+ and must be located at the top level of the ZIP package.
2105
+ </p>
2106
+
2107
+ <p>
2108
+ The Resource Dump Manifest is based on the <code>&lt;urlset&gt;</code> format.
2109
+ It has the <code>&lt;urlset&gt;</code> root element and the following structure:
2110
+ </p>
2111
+ <ul>
2112
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
2113
+ <code>capability</code> attribute with a value of <code>resourcedump-manifest</code>. It must also have an
2114
+ <code>at</code> attribute that conveys the datetime at which the process of taking a snapshot of resources
2115
+ for their inclusion in the ZIP package started, and it may have a <code>completed</code> attribute that conveys
2116
+ the datetime at which that process completed.</li>
2117
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
2118
+ <code>up</code>.</li>
2119
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code> per bitstream. This element does not have attributes, but uses
2120
+ child elements to convey information about the bitstream. The <code>&lt;url&gt;</code> element has the following child elements:
2121
+ <ul>
2122
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI that the Source associates with the bitstream.</li>
2123
+ <li>Optional <code>&lt;lastmod&gt;</code> and <code>&lt;changefreq&gt;</code> child elements with semantics as described in <a href="#DocumentFormats">Section 7</a>.
2124
+ </li>
2125
+ <li>A mandatory <code>&lt;rs:md&gt;</code> child element must have a <code>path</code>
2126
+ attribute to convey the location of the bitstream within the package. The value
2127
+ of the attribute is relative to root of the package and it is expressed with a
2128
+ leading slash (/). The use of the <code>type</code> attribute in the
2129
+ <code>&lt;rs:md&gt;</code> element is recommended to help Destinations determine
2130
+ the Media Type of the bitstream. The <code>&lt;rs:md&gt;</code> element may further
2131
+ have the attributes <code>hash</code> and <code>length</code>, as described in
2132
+ <a href="#DocumentFormats">Section 7</a>.</li>
2133
+ <li>Optional <code>&lt;rs:ln&gt;</code> child elements link to related resources
2134
+ as described in <a href="#DocumentFormats">Section 7</a>, and detailed in
2135
+ <a href="#LinkRelRes">Section 14</a>.</li>
2136
+ </ul>
2137
+ </li>
2138
+ </ul>
2139
+
2140
+ <p>
2141
+ <a href="#ex_18">Example 18</a> shows a Resource Dump Manifest for a ZIP file that contains two bitstreams.
2142
+ </p>
2143
+
2144
+ <a name="ex_18"></a>
2145
+ <div class="exampleInner">
2146
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2147
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2148
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2149
+ &lt;rs:ln rel="up"
2150
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2151
+ &lt;rs:md <span class="rs">capability="resourcedump-manifest"</span>
2152
+ at="2013-01-03T09:00:00Z"
2153
+ completed="2013-01-03T09:02:00Z"/&gt;
2154
+ &lt;url&gt;
2155
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
2156
+ &lt;lastmod&gt;2013-01-02T13:00:00Z&lt;/lastmod&gt;
2157
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
2158
+ length="8876"
2159
+ type="text/html"
2160
+ <span class="rs">path="/resources/res1"</span>/&gt;
2161
+ &lt;/url&gt;
2162
+ &lt;url&gt;
2163
+ &lt;loc&gt;http://example.com/res2&lt;/loc&gt;
2164
+ &lt;lastmod&gt;2013-01-02T14:00:00Z&lt;/lastmod&gt;
2165
+ &lt;rs:md hash="md5:1e0d5cb8ef6ba40c99b14c0237be735e
2166
+ sha-256:854f61290e2e197a11bc91063afce22e43f8ccc655237050ace766adc68dc784"
2167
+ length="14599"
2168
+ type="application/pdf"
2169
+ <span class="rs">path="/resources/res2"</span>/&gt;
2170
+ &lt;/url&gt;
2171
+ &lt;/urlset&gt;
2172
+ </pre>
2173
+ </div>
2174
+ <p class="caption">Example 18: A Resource Dump Manifest</p>
2175
+
2176
+
2177
+ <h2>12. <a name="DesChanges">Describing Changes</a></h2>
2178
+ <p>
2179
+ A Source may publish a record of the changes to its resources.
2180
+ This enables Destinations to efficiently learn about those changes and
2181
+ hence to synchronize incrementally.
2182
+ </p>
2183
+
2184
+ <h3>12.1 <a name="ChangeList">Change List</a></h3>
2185
+ <p>
2186
+ A <b>Change List</b> is a document that contains a description of changes to a Source's resources.
2187
+ It is up to the Source to determine the publication frequency of Change Lists, as well as the temporal interval they cover.
2188
+ For example, a Source may choose to publish a fixed number of changes per Change List, or all the changes in a period of fixed length,
2189
+ such as an hour, a day, or a week. All entries in a Change List must be provided in forward chronological order:
2190
+ the least recently changed resource must be listed at the beginning of the
2191
+ Change List, while the most recently changed resource must be listed at the end of the document.
2192
+ If a resource underwent multiple changes in the period covered by a Change List, then it will be listed multiple times, once per change.
2193
+ </p>
2194
+
2195
+ <p>
2196
+ A Change List is based on the <code>&lt;urlset&gt;</code> document format introduced by the Sitemap protocol.
2197
+ It has the <code>&lt;urlset&gt;</code> root element and the following structure:
2198
+ </p>
2199
+
2200
+ <ul>
2201
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
2202
+ <code>capability</code> attribute that has a value of <code>changelist</code>. It also has the mandatory
2203
+ <code>from</code> and the optional <code>until</code> attributes to convey the temporal interval
2204
+ covered by the Change List. Details about the semantics of these attributes are provided below.</li>
2205
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
2206
+ <code>up</code>.</li>
2207
+ <li>In case a <a href="#ChangeListIndex">Change List Index</a> exists,
2208
+ a recommended <code>&lt;rs:ln&gt;</code> child element of
2209
+ <code>&lt;urlset&gt;</code> points to it with the relation type
2210
+ <code>index</code>.</li>
2211
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code>
2212
+ should be included for each resource change. This element does not have attributes,
2213
+ but uses child elements to convey information about the changed resource.
2214
+ The <code>&lt;url&gt;</code> element has the following child elements:
2215
+ <ul>
2216
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the changed resource.</li>
2217
+ <li>Optional <code>&lt;lastmod&gt;</code> and <code>&lt;changefreq&gt;</code>
2218
+ child elements with semantics as described in
2219
+ <a href="#DocumentFormats">Section 7</a>.</li>
2220
+ <li>A mandatory <code>&lt;rs:md&gt;</code> child element must have the attribute <code>change</code> to convey the nature of the change.
2221
+ The value of the <code>change</code> attribute is <code>created</code>,
2222
+ <code>updated</code>, or <code>deleted</code>.
2223
+ The element may also have attributes <code>datetime</code>, <code>hash</code>,
2224
+ <code>length</code>, and <code>type</code>, as described in
2225
+ <a href="#DocumentFormats">Section 7</a>.</li>
2226
+ <li>Optional <code>&lt;rs:ln&gt;</code> child elements link to related
2227
+ resources as described in <a href="#DocumentFormats">Section 7</a>
2228
+ and detailed in <a href="#LinkRelRes">Section 14</a>.</li>
2229
+ </ul>
2230
+ </li>
2231
+ </ul>
2232
+
2233
+ <p>The temporal interval covered by a Change List is conveyed by means of the <code>from</code> and <code>until</code> attributes of the
2234
+ <code>&lt;rs:md&gt;</code> child element of the <code>&lt;urlset&gt;</code> root element.
2235
+ The <code>from</code> attribute indicates that the Change List includes all changes that
2236
+ occurred to the set of resources at the Source since the datetime expressed as the value
2237
+ of the attribute. If it exists, the <code>until</code> attribute indicates that the Change List
2238
+ includes all changes that occurred to the set of resources at the Source until the
2239
+ datetime expressed as the value of the attribute. Its use is optional for Change Lists:</p>
2240
+ <ul>
2241
+ <li>When a document carries the <code>until</code> attribute, this indicates that the document
2242
+ will not be updated anymore; the Change List is closed.
2243
+ When a Destination has finished processing a closed Change List, it should consult the enclosing
2244
+ Change List Index (following the link with the <code>index</code> relation type), if applicable,
2245
+ or the Capability List (following the link with the <code>up</code> relation type)
2246
+ to determine the URI of the Change List that reports the changes that occurred after the datetime expressed as the closed Change List's <code>until</code> value.
2247
+ </li>
2248
+ <li>When a document does not carry the <code>until</code> attribute, this
2249
+ indicates that the document will be updated with further changes; the Change
2250
+ List remains open. A Destination should continue to poll an open Change List
2251
+ to learn about further changes. It does not need to consult the enclosing
2252
+ Change List Index, if applicable, nor the Capability List.
2253
+ </li>
2254
+ </ul>
2255
+
2256
+ <p>
2257
+ The <code>from</code> and <code>until</code> attributes help a Destination to
2258
+ determine whether it has or has not fully processed a Change List. The forward
2259
+ chronological order of changes in a Change List, the datetime of a resource
2260
+ change (if provided), and the URI of a changed resource help the Destination
2261
+ to determine the first unprocessed change in a not fully processed Change List.
2262
+ The Destination should start processing there; it can retrieve a representation
2263
+ of a changed resource by dereferencing its URI provided in the <code>&lt;loc&gt;</code>
2264
+ child element of the <code>&lt;url&gt;</code> element that conveys the change.
2265
+ </p>
2266
+
2267
+ <p>
2268
+ <a href="#ex_19">Example 19</a> shows a Change List that indicates that four
2269
+ resource changes occurred since 2013-01-03T00:00:00Z: one creation, two
2270
+ updates, and one deletion. One resource underwent two of these changes and
2271
+ hence is listed twice. The Change List has no <code>until</code> attribute,
2272
+ which indicates that it may report further changes; a Destination should
2273
+ keep polling this Change List. This example illustrates differences between
2274
+ the optional <code>&lt;lastmod&gt;</code> element and the optional
2275
+ <code>datetime</code> attribute. The creation event is for a resource that has
2276
+ a <code>&lt;lastmod&gt;</code> earlier than the event's <code>datetime</code>
2277
+ and before the <code>from</code> datetime of the Change List. The first update
2278
+ event shows a matching <code>&lt;lastmod&gt;</code> element and
2279
+ <code>datetime</code> attribute. The second update event has neither a
2280
+ <code>&lt;lastmod&gt;</code> element nor a <code>datetime</code> attribute,
2281
+ though its position in the Change List indicates that it was a later update
2282
+ of the resource. The Source can make it easier for a Destination to determine
2283
+ which change event it has last processed by providing a <code>datetime</code>
2284
+ attribute for each event.
2285
+ </p>
2286
+
2287
+ <a name="ex_19"></a>
2288
+ <div class="exampleInner">
2289
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2290
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2291
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2292
+ &lt;rs:ln rel="up"
2293
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2294
+ &lt;rs:md <span class="rs">capability="changelist"
2295
+ from="2013-01-03T00:00:00Z"</span>/&gt;
2296
+ &lt;url&gt;
2297
+ &lt;loc&gt;http://example.com/res1.html&lt;/loc&gt;
2298
+ &lt;lastmod&gt;<span class="rs">2000-01-01T01:01:00Z</span>&lt;/lastmod&gt;
2299
+ &lt;rs:md <span class="rs">change="created" datetime="2013-01-03T11:00:00Z"</span>/&gt;
2300
+ &lt;/url&gt;
2301
+ &lt;url&gt;
2302
+ &lt;loc&gt;http://example.com/res2.pdf&lt;/loc&gt;
2303
+ &lt;lastmod&gt;<span class="rs">2013-01-03T13:00:00Z</span>&lt;/lastmod&gt;
2304
+ &lt;rs:md <span class="rs">change="updated" datetime="2013-01-03T13:00:00Z"</span>/&gt;
2305
+ &lt;/url&gt;
2306
+ &lt;url&gt;
2307
+ &lt;loc&gt;http://example.com/res3.tiff&lt;/loc&gt;
2308
+ &lt;rs:md <span class="rs">change="deleted" datetime="2013-01-03T18:00:00Z"</span>/&gt;
2309
+ &lt;/url&gt;
2310
+ &lt;url&gt;
2311
+ &lt;loc&gt;<span class="rs">http://example.com/res2.pdf</span>&lt;/loc&gt;
2312
+ &lt;rs:md <span class="rs">change="updated"</span>/&gt;
2313
+ &lt;/url&gt;
2314
+ &lt;/urlset&gt;
2315
+ </pre>
2316
+ </div>
2317
+ <p class="caption">Example 19: An open Change List describing four resource changes</p>
2318
+
2319
+ <h3>12.2 <a name="ChangeListIndex">Change List Index</a></h3>
2320
+
2321
+ <p>
2322
+ If a Source needs to publish multiple Change Lists, it must group them in a Change List Index.
2323
+ A Change List Index must enumerate Change Lists in forward chronological order.
2324
+ </p>
2325
+
2326
+ <p>
2327
+ A Change List Index is based on the <code>&lt;sitemapindex&gt;</code> document format introduced by the Sitemap protocol.
2328
+ It has the <code>&lt;sitemapindex&gt;</code> root element and the following structure:
2329
+ </p>
2330
+ <ul>
2331
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;sitemapindex&gt;</code> must have a
2332
+ <code>capability</code> attribute that has a value of <code>changelist</code>. It also has the mandatory
2333
+ <code>from</code> and the optional <code>until</code> attributes to convey the temporal interval
2334
+ covered by the Change List Index. The semantics of these attributes are as explained in detail for
2335
+ <a href="#ChangeList">Change Lists</a>.</li>
2336
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;sitemapindex&gt;</code>
2337
+ points to the Capability List with the relation type <code>up</code>.</li>
2338
+ <li>One <code>&lt;sitemap&gt;</code> child element of <code>&lt;sitemapindex&gt;</code>
2339
+ should be included for each Change List. This element does not have attributes, but
2340
+ uses child elements to convey information about the Change List. The
2341
+ <code>&lt;sitemap&gt;</code> element has the following child elements:
2342
+ <ul>
2343
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the Change List.</li>
2344
+ <li>An optional <code>&lt;lastmod&gt;</code> child element with semantics as described in
2345
+ <a href="#DocumentFormats">Section 7</a>.</li>
2346
+ <li>A recommended <code>&lt;rs:md&gt;</code> child element with the <code>from</code> and possibly <code>until</code>
2347
+ attributes to convey the temporal interval covered by the Change List. The use of the <code>until</code> is as follows:
2348
+ <ul>
2349
+ <li>If the Change List is closed the use of <code>&lt;until&gt;</code> is required.</li>
2350
+ <li>If the Change List is open <code>&lt;until&gt;</code> must not be provided.</li>
2351
+ </ul>
2352
+ </li>
2353
+ </ul>
2354
+ </li>
2355
+ </ul>
2356
+
2357
+ <p>
2358
+ The Destination should determine whether it has reached a Change List or a
2359
+ Change List Index based on whether the root element is
2360
+ <code>&lt;urlset&gt;</code> or <code>&lt;sitemapindex&gt;</code> respectively.
2361
+ </p>
2362
+ <p>
2363
+ A Change List Index that points to three Change Lists is shown in
2364
+ <a href="#ex_20">Example 20</a>. Two of those Change Lists are closed, as
2365
+ indicated by the presence of the <code>until</code> attribute,
2366
+ and one is open, as indicated by its absence. The closed Change List
2367
+ <code>http://example.com/20130102-changelist.xml</code> is shown in
2368
+ <a href="#ex_21">Example 21</a>.
2369
+ The open Change List could be the one shown in
2370
+ <a href="#ex_19">Example 19</a>, in which case that list would have an additional link
2371
+ with an <code>index</code> relation type pointing to the Change List Index.
2372
+ </p>
2373
+
2374
+ <a name="ex_20"></a>
2375
+ <div class="exampleInner">
2376
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2377
+ &lt;sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2378
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2379
+ &lt;rs:ln rel="up"
2380
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2381
+ &lt;rs:md <span class="rs">capability="changelist"
2382
+ from="2013-01-01T00:00:00Z"</span>/&gt;
2383
+ &lt;sitemap&gt;
2384
+ &lt;loc&gt;http://example.com/20130101-changelist.xml&lt;/loc&gt;
2385
+ &lt;rs:md <span class="rs">from="2013-01-01T00:00:00Z"
2386
+ until="2013-01-02T00:00:00Z"</span>/&gt;
2387
+ &lt;/sitemap&gt;
2388
+ &lt;sitemap&gt;
2389
+ &lt;loc&gt;http://example.com/20130102-changelist.xml&lt;/loc&gt;
2390
+ &lt;rs:md from="2013-01-02T00:00:00Z"
2391
+ until="2013-01-03T00:00:00Z"/&gt;
2392
+ &lt;/sitemap&gt;
2393
+ &lt;sitemap&gt;
2394
+ &lt;loc&gt;http://example.com/20130103-changelist.xml&lt;/loc&gt;
2395
+ &lt;rs:md from="2013-01-03T00:00:00Z"/&gt;
2396
+ &lt;/sitemap&gt;
2397
+ &lt;/sitemapindex&gt;
2398
+ </pre>
2399
+ </div>
2400
+ <p class="caption">Example 20: A Change List Index</p>
2401
+
2402
+ <a name="ex_21"></a>
2403
+ <div class="exampleInner">
2404
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2405
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2406
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2407
+ &lt;rs:ln rel="up"
2408
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2409
+ &lt;rs:ln <span class="rs">rel="index"</span>
2410
+ href="http://example.com/dataset1/changelist.xml"/&gt;
2411
+ &lt;rs:md <span class="rs">capability="changelist"
2412
+ from="2013-01-02T00:00:00Z"
2413
+ until="2013-01-03T00:00:00Z"</span>/&gt;
2414
+ &lt;url&gt;
2415
+ &lt;loc&gt;http://example.com/res7.html&lt;/loc&gt;
2416
+ &lt;rs:md change="created" datetime="2013-01-02T12:00:00Z"/&gt;
2417
+ &lt;/url&gt;
2418
+ &lt;url&gt;
2419
+ &lt;loc&gt;http://example.com/res9.pdf&lt;/loc&gt;
2420
+ &lt;rs:md change="updated" datetime="2013-01-02T13:00:00Z"/&gt;
2421
+ &lt;/url&gt;
2422
+ &lt;url&gt;
2423
+ &lt;loc&gt;http://example.com/res5.tiff&lt;/loc&gt;
2424
+ &lt;rs:md change="deleted" datetime="2013-01-02T19:00:00Z"/&gt;
2425
+ &lt;/url&gt;
2426
+ &lt;url&gt;
2427
+ &lt;loc&gt;http://example.com/res7.html&lt;/loc&gt;
2428
+ &lt;rs:md change="updated" datetime="2013-01-02T20:00:00Z"/&gt;
2429
+ &lt;/url&gt;
2430
+ &lt;/urlset&gt;
2431
+ </pre>
2432
+ </div>
2433
+ <p class="caption">Example 21: A closed Change List pointing back to its Index</p>
2434
+
2435
+
2436
+ <h2>13. <a name="PackChanges">Packaging Changes</a></h2>
2437
+ <p>
2438
+ In order to reduce the number of requests required to obtain resource changes,
2439
+ a Source may provide packaged bitstreams for changed resources.
2440
+ </p>
2441
+
2442
+ <h3>13.1 <a name="ChangeDump">Change Dump</a></h3>
2443
+ <p>
2444
+ To make content changes available for download, a Source may publish
2445
+ <b>Change Dumps</b>. A Change Dump is a document that points to packages
2446
+ containing bitstreams for the Source's changed resources.
2447
+ The ResourceSync framework specifies the use of the <a href="#ref-zip">ZIP file format</a> as
2448
+ the packaging format. Communities may define their own packaging format.
2449
+ A Change Dump should only point to packages of the same format.
2450
+ </p>
2451
+ <p>
2452
+ It is up to the Source to determine the publication frequency of these packages,
2453
+ as well as the temporal interval they cover.
2454
+ For example, a Source may choose to publish a fixed number of changes per package, or all the
2455
+ changes in a period of fixed length, such as an hour, a day, or a week.
2456
+ If a resource underwent multiple changes in the period covered by a package,
2457
+ then the package will contain multiple bitstreams for the resource, one per change.
2458
+ As new packages are published, new entries are added to the Change Dump that points at them.
2459
+ All entries in a Change Dump should be provided in forward chronological
2460
+ order: the least recently published package listed at the beginning of the
2461
+ Change Dump, the most recently published package listed at the end of the document.
2462
+ </p>
2463
+
2464
+ <p>
2465
+ A Change Dump is based on the <code>&lt;urlset&gt;</code> document format
2466
+ introduced by the Sitemap protocol. It has the <code>&lt;urlset&gt;</code>
2467
+ root element and the following structure:
2468
+ </p>
2469
+ <ul>
2470
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
2471
+ <code>capability</code> attribute that has a value of <code>changedump</code>. It also has the
2472
+ mandatory <code>from</code> and the optional <code>until</code> attributes to convey the temporal interval
2473
+ covered by the Change Dump. The semantics of these attributes are as explained in detail for
2474
+ <a href="#ChangeList">Change Lists</a>.</li>
2475
+ <li> A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
2476
+ <code>up</code>.</li>
2477
+ <li>In case a <a href="#ChangeDumpIndex">Change Dump Index</a> exists,
2478
+ a recommended <code>&lt;rs:ln&gt;</code> child element of
2479
+ <code>&lt;urlset&gt;</code> points to it with the relation type
2480
+ <code>index</code>.</li>
2481
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code>
2482
+ should be included for each bitstream package. This element does not have
2483
+ attributes, but uses child elements to convey information about the package.
2484
+ The <code>&lt;url&gt;</code> element has the following child elements:
2485
+ <ul>
2486
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI of the package.</li>
2487
+ <li>An optional <code>&lt;lastmod&gt;</code> child element with semantics as described in <a href="#DocumentFormats">Section 7</a>.</li>
2488
+ <li>A recommended <code>&lt;rs:md&gt;</code> child element to convey the Media Type
2489
+ and the length of the package using the <code>type</code> and <code>length</code>
2490
+ attribute, respectively. It may also have the <code>from</code> and <code>until</code>
2491
+ attributes to convey the temporal interval covered by the package. The child element
2492
+ may further have attributes such as <code>hash</code>, as described in
2493
+ <a href="#DocumentFormats">Section 7</a>.</li>
2494
+ <li>An optional <code>&lt;rs:ln&gt;</code> child element with the relation type <code>contents</code> that points to
2495
+ a copy of the Change Dump Manifest associated with each package.</li>
2496
+ </ul>
2497
+ </li>
2498
+ </ul>
2499
+
2500
+ <p>
2501
+ <a href="#ex_22">Example 22</a> shows a Change Dump with pointers to three
2502
+ bitstream packages associated with changed resources. The absence of the
2503
+ <code>until</code> attribute indicates that further packages will be added.
2504
+ The example also includes within each <code>&lt;url&gt;</code> element a pointer to a copy of
2505
+ the <a href="#ChangeDumpManifest">Change Dump Manifest</a> associated with the package.
2506
+ This pointer is optional and intended to allow a Destination
2507
+ to determine whether the package should be downloaded.
2508
+ If such pointers are provided, the Source must ensure that the Manifest referred to
2509
+ matches the Manifest included in the bitstream package.
2510
+ </p>
2511
+
2512
+ <a name="ex_22"></a>
2513
+ <div class="exampleInner">
2514
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2515
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2516
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2517
+ &lt;rs:ln rel="up"
2518
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2519
+ &lt;rs:md <span class="rs">capability="changedump"</span>
2520
+ from="2013-01-01T00:00:00Z"/&gt;
2521
+ &lt;url&gt;
2522
+ &lt;loc&gt;http://example.com/20130101-changedump.zip&lt;/loc&gt;
2523
+ &lt;lastmod&gt;2013-01-01T23:59:59Z&lt;/lastmod&gt;
2524
+ &lt;rs:md <span class="rs">type="application/zip"
2525
+ length="3109"
2526
+ from="2013-01-01T00:00:00Z"
2527
+ until="2013-01-02T00:00:00Z"</span>/&gt;
2528
+ &lt;rs:ln <span class="rs">rel="contents"</span>
2529
+ href="http://example.com/20130101-changedump-manifest.xml"
2530
+ type="application/xml"/&gt;
2531
+ &lt;/url&gt;
2532
+ &lt;url&gt;
2533
+ &lt;loc&gt;http://example.com/20130102-changedump.zip&lt;/loc&gt;
2534
+ &lt;lastmod&gt;2013-01-02T23:59:59Z&lt;/lastmod&gt;
2535
+ &lt;rs:md type="application/zip"
2536
+ length="6629"
2537
+ from="2013-01-02T00:00:00Z"
2538
+ until="2013-01-03T00:00:00Z"/&gt;
2539
+ &lt;rs:ln rel="contents"
2540
+ href="http://example.com/20130102-changedump-manifest.xml"
2541
+ type="application/xml"/&gt;
2542
+ &lt;/url&gt;
2543
+ &lt;url&gt;
2544
+ &lt;loc&gt;http://example.com/20130103-changedump.zip&lt;/loc&gt;
2545
+ &lt;lastmod&gt;2013-01-03T23:59:59Z&lt;/lastmod&gt;
2546
+ &lt;rs:md type="application/zip"
2547
+ length="8124"
2548
+ from="2013-01-03T00:00:00Z"
2549
+ until="2013-01-04T00:00:00Z"/&gt;
2550
+ &lt;rs:ln rel="contents"
2551
+ href="http://example.com/20130103-changedump-manifest.xml"
2552
+ type="application/xml"/&gt;
2553
+ &lt;/url&gt;
2554
+ &lt;/urlset&gt;
2555
+ </pre>
2556
+ </div>
2557
+ <p class="caption">Example 22: A Change Dump</p>
2558
+ <p>
2559
+ If a Source needs to publish multiple Change Dumps, it must group them in
2560
+ a <a name="ChangeDumpIndex">Change Dump Index</a>, in a manner similar to
2561
+ what was described in <a href="#ChangeListIndex">Section 12.2</a>.
2562
+ </p>
2563
+
2564
+ <h3>13.2 <a name="ChangeDumpManifest">Change Dump Manifest</a></h3>
2565
+ <p>
2566
+ Each ZIP package referred to from a Change Dump must contain a
2567
+ <b>Change Dump Manifest</b> file that describes the constituent bitstreams of the package.
2568
+ The file must be named <code>manifest.xml</code>
2569
+ and must be located at the top level of the ZIP package.
2570
+ All entries in a Change Dump Manifest must be provided in forward chronological order:
2571
+ the bitstream associated with the least
2572
+ recent resource change is listed first, and the bitstream associated with the most recent change
2573
+ is listed last.
2574
+ </p>
2575
+
2576
+ <p>
2577
+ The Change Dump Manifest is based on the <code>&lt;urlset&gt;</code> format.
2578
+ It has the <code>&lt;urlset&gt;</code> root element and the following structure:
2579
+ </p>
2580
+ <ul>
2581
+ <li>The mandatory <code>&lt;rs:md&gt;</code> child element of <code>&lt;urlset&gt;</code> must have a
2582
+ <code>capability</code> attribute that has a value of <code>changedump-manifest</code>.
2583
+ It also has the mandatory
2584
+ <code>from</code> and the optional <code>until</code> attributes to convey the temporal interval
2585
+ covered by the ZIP package in which the Change Dump Manifest is contained:
2586
+ bitstream for all resource changes that occurred during the specified
2587
+ interval must be included in the ZIP package and the Change Dump Manifest must refer to each.</li>
2588
+ <li>A mandatory <code>&lt;rs:ln&gt;</code> child element of <code>&lt;urlset&gt;</code> points to the Capability List with the relation type
2589
+ <code>up</code>.</li>
2590
+ <li>One <code>&lt;url&gt;</code> child element of <code>&lt;urlset&gt;</code>
2591
+ should be included for each resource change, and hence for each bitstream.
2592
+ This element does not have attributes, but uses child elements to convey
2593
+ information about the resource change and its associated bitstream.
2594
+ The <code>&lt;url&gt;</code> element has the following child elements:
2595
+ <ul>
2596
+ <li>A mandatory <code>&lt;loc&gt;</code> child element provides the URI
2597
+ which the Source associates with the bitstream.</li>
2598
+ <li>Optional <code>&lt;lastmod&gt;</code> and <code>&lt;changefreq&gt;</code>
2599
+ child elements with semantics as described in <a href="#DocumentFormats">Section 7</a>.</li>
2600
+ <li>A mandatory <code>&lt;rs:md&gt;</code> child element must have a <code>change</code>
2601
+ attribute to convey the type of change the resource underwent. The <code>change</code>
2602
+ attribute value may be <code>created</code>, <code>updated</code>, or <code>deleted</code>.
2603
+ Except in the case of <code>change="deleted"</code>, the element must also have a
2604
+ <code>path</code> attribute to convey the location of the bitstream within the ZIP
2605
+ package. The path is relative to root of the package and it is expressed with a
2606
+ leading slash (/). The use of the <code>type</code> attribute in the
2607
+ <code>&lt;rs:md&gt;</code> element is strongly recommended to help Destinations
2608
+ determine the Media Type of the bitstream. The <code>&lt;rs:md&gt;</code> element may
2609
+ further have the attributes <code>datetime</code>, <code>hash</code> and
2610
+ <code>length</code>, as described in <a href="#DocumentFormats">Section 7</a>.</li>
2611
+ <li>Optional <code>&lt;rs:ln&gt;</code> child elements link to related resources
2612
+ as described in <a href="#DocumentFormats">Section 7</a> and detailed in <a href="#LinkRelRes">Section 14</a>.</li>
2613
+ </ul>
2614
+ </li>
2615
+ </ul>
2616
+ <p>
2617
+ <a href="#ex_23">Example 23</a> shows the Change Dump Manifest associated with the
2618
+ second entry in the Resource Dump from <a href="#ex_22">Example 22</a>. The Manifest
2619
+ must be named <code>manifest.xml</code> at the top level of the ZIP package. A copy
2620
+ of the Manifest may also be provided at a location indicated by an
2621
+ optional <code>&lt;rs:ln&gt;</code> element with the relation type
2622
+ <code>contents</code> in the Change Dump,
2623
+ <code>http://example.com/20130102-changedump-manifest.xml</code> in
2624
+ <a href="#ex_22">Example 22</a>. The Manifest covers the same
2625
+ changes as conveyed in the closed Change List of <a href="#ex_21">Example 21</a>.
2626
+ The resource <code>http://example.com/res7.html</code> is listed twice, once
2627
+ because it was created, and once because it was updated. Both entries have
2628
+ the same URI. The ZIP package in which this Manifest is contained has two
2629
+ bitstreams for this resource, available at different paths in the package.
2630
+ </p>
2631
+
2632
+ <a name="ex_23"></a>
2633
+ <div class="exampleInner">
2634
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2635
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2636
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2637
+ &lt;rs:ln rel="up"
2638
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2639
+ &lt;rs:md <span class="rs">capability="changedump-manifest"
2640
+ from="2013-01-02T00:00:00Z"
2641
+ until="2013-01-03T00:00:00Z"</span>/&gt;
2642
+ &lt;url&gt;
2643
+ &lt;loc&gt;http://example.com/res7.html&lt;/loc&gt;
2644
+ &lt;lastmod&gt;2013-01-02T12:00:00Z&lt;/lastmod&gt;
2645
+ &lt;rs:md change="created"
2646
+ datetime="2013-01-02T12:00:00Z"
2647
+ hash="md5:1c1b0e264fa9b7e1e9aa6f9db8d6362b"
2648
+ length="4339"
2649
+ type="text/html"
2650
+ <span class="rs">path="/changes/res7.html"</span>/&gt;
2651
+ &lt;/url&gt;
2652
+ &lt;url&gt;
2653
+ &lt;loc&gt;http://example.com/res9.pdf&lt;/loc&gt;
2654
+ &lt;lastmod&gt;2013-01-02T13:00:00Z&lt;/lastmod&gt;
2655
+ &lt;rs:md change="updated"
2656
+ datetime="2013-01-02T13:00:00Z"
2657
+ hash="md5:f906610c3d4aa745cb2b986f25b37c5a"
2658
+ length="38297"
2659
+ type="application/pdf"
2660
+ <span class="rs">path="/changes/res9.pdf"</span>/&gt;
2661
+ &lt;/url&gt;
2662
+ &lt;url&gt;
2663
+ &lt;loc&gt;http://example.com/res5.tiff&lt;/loc&gt;
2664
+ &lt;rs:md change="deleted"
2665
+ datetime="2013-01-02T19:00:00Z"/&gt;
2666
+
2667
+ &lt;/url&gt;
2668
+ &lt;url&gt;
2669
+ &lt;loc&gt;http://example.com/res7.html&lt;/loc&gt;
2670
+ &lt;lastmod&gt;2013-01-02T20:00:00Z&lt;/lastmod&gt;
2671
+ &lt;rs:md change="updated"
2672
+ datetime="2013-01-02T20:00:00Z"
2673
+ hash="md5:0988647082c8bc51778894a48ec3b576"
2674
+ length="5426"
2675
+ type="text/html"
2676
+ <span class="rs">path="/changes/res7-v2.html"</span>/&gt;
2677
+ &lt;/url&gt;
2678
+ &lt;/urlset&gt;
2679
+ </pre>
2680
+ </div>
2681
+ <p class="caption">Example 23: A Change Dump Manifest</p>
2682
+
2683
+
2684
+ <h2>14. <a name="LinkRelRes">Linking to Related Resources</a></h2>
2685
+
2686
+ <h3>14.1 <a name="LinkRelRevOverview">Overview</a></h3>
2687
+ <p>
2688
+ In order to facilitate alternative approaches to obtain content for a
2689
+ resource that is subject to synchronization or to provide additional
2690
+ information about it, a Source may provide links from that resource to
2691
+ related resources. Such links may occur in Resource Lists, Resource Dump
2692
+ Manifests, Change Lists, and Change Dump Manifests. The following cases
2693
+ are considered and detailed (in examples of Change Lists) in the
2694
+ remainder of this section:
2695
+ </p>
2696
+ <ul>
2697
+ <li>The Source makes the resource content available at a mirror location.</li>
2698
+ <li>The Source provides alternate representations for the resource.</li>
2699
+ <li>The Source details the difference between the current and the previous version
2700
+ of the resource.</li>
2701
+ <li>The Source makes a resource as well as metadata about the resource available
2702
+ for synchronization.</li>
2703
+ <li>The Source provides access to prior versions of the resource.</li>
2704
+ <li>The Source provides collection membership information about the resource.</li>
2705
+ <li>A Destination republishes a resource obtained from a Source, makes that
2706
+ republished resource available for synchronization (i.e. acts as a Source itself),
2707
+ and links to the original resource that it republished.</li>
2708
+ </ul>
2709
+
2710
+ <p>
2711
+ As always, the <code>&lt;loc&gt;</code> child element of <code>&lt;url&gt;</code>
2712
+ conveys the URI of the resource that is subject to synchronization. The related
2713
+ resource is provided by means of the <code>&lt;rs:ln&gt;</code> child element
2714
+ of <code>&lt;url&gt;</code>. The possible attributes for
2715
+ <code>&lt;rs:ln&gt;</code> as well as the link relation types used to address
2716
+ the aforementioned use cases are detailed in <a href="#DocumentFormats">Section 7</a>.
2717
+ Links to meet needs other than the ones listed may be provided, and appropriate
2718
+ relation types may be selected from the
2719
+ <a href="http://www.iana.org/assignments/link-relations/link-relations.xml">IANA Link Relation Type Registry</a>
2720
+ or expressed as URIs as specified in <a href="#ref-rfc5988">RFC 5988, Sec. 4.2</a>.
2721
+ </p>
2722
+
2723
+ <p>
2724
+ In case a Destination is not able to adequately interpret the information conveyed in
2725
+ an <code>&lt;rs:ln&gt;</code> element, it should refrain from accessing the related
2726
+ resource and rather use the URI provided in <code>&lt;loc&gt;</code> to retrieve
2727
+ the resource.
2728
+ </p>
2729
+
2730
+ <h3>14.2 <a name="MirCon">Mirrored Content</a></h3>
2731
+ <p>
2732
+ In order to reduce the load on its primary access mechanism, a Source may convey
2733
+ one or more mirror locations for a resource. An <code>&lt;rs:ln&gt;</code> element
2734
+ is introduced to express each mirror location for the resource. This element
2735
+ has the following attributes:</p>
2736
+ <ul>
2737
+ <li>A mandatory <code>rel</code> attribute with a value of <code>duplicate</code>.</li>
2738
+ <li>A mandatory <code>href</code> attribute that conveys the URI of the mirrored resource.</li>
2739
+ <li>An optional <code>pri</code> attribute to express a prioritization among multiple mirror locations, each expressed by means of an individual
2740
+ <code>&lt;rs:ln&gt;</code> element. The use of <code>pri</code> is detailed in <a href="#DocumentFormats">Section 7</a>.</li>
2741
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
2742
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
2743
+ </ul>
2744
+
2745
+ <p>
2746
+ <a href="#ex_24">Example 24</a> shows how a Source conveys information about
2747
+ prioritized mirror locations for a resource. Since the three locations conveyed
2748
+ by <code>&lt;rs:ln&gt;</code> elements point to duplicates of the resource specified in
2749
+ <code>&lt;loc&gt;</code>, the values for each of the attributes of
2750
+ <code>&lt;rs:md&gt;</code> are expected to be identical for the resource and its
2751
+ mirrors. Hence, they should be omitted from the <code>&lt;rs:ln&gt;</code> elements.
2752
+ The last <code>&lt;rs:ln&gt;</code> element points to a mirror location where the
2753
+ resource is accessible via a protocol other than HTTP as can be seen from the URI
2754
+ scheme. Even though the resources are duplicates, their last modified datetimes may vary.
2755
+ </p>
2756
+
2757
+ <a name="ex_24"></a>
2758
+ <div class="exampleInner">
2759
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2760
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2761
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2762
+ &lt;rs:ln rel="up"
2763
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2764
+ &lt;rs:md capability="changelist"
2765
+ from="2013-01-03T00:00:00Z"/&gt;
2766
+ &lt;url&gt;
2767
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
2768
+ &lt;lastmod&gt;2013-01-03T18:00:00Z&lt;/lastmod&gt;
2769
+ &lt;rs:md change="updated"
2770
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
2771
+ length="8876"
2772
+ type="text/html"/&gt;
2773
+ &lt;rs:ln <span class="rs">rel="duplicate"</span>
2774
+ <span class="rs">pri="1"</span>
2775
+ href="http://mirror1.example.com/res1"
2776
+ modified="2013-01-03T18:00:00Z"/&gt;
2777
+ &lt;rs:ln <span class="rs">rel="duplicate"</span>
2778
+ <span class="rs">pri="2"</span>
2779
+ href="http://mirror2.example.com/res1"
2780
+ modified="2013-01-03T18:00:00Z"/&gt;
2781
+ &lt;rs:ln <span class="rs">rel="duplicate"</span>
2782
+ <span class="rs">pri="3"</span>
2783
+ href="gsiftp://gridftp.example.com/res1"
2784
+ modified="2013-01-03T18:00:23Z"/&gt;
2785
+ &lt;/url&gt;
2786
+ &lt;/urlset&gt;
2787
+ </pre>
2788
+ </div>
2789
+ <p class="caption">Example 24: Mirrored content</p>
2790
+
2791
+
2792
+ <h3>14.3 <a name="AltRep">Alternate Representations</a></h3>
2793
+ <p>
2794
+ A resource may have multiple representations available from different URIs.
2795
+ A resource may, for example, be identified by a generic URI such as
2796
+ <code>http://example.com/res1</code>. After performing content negotiation
2797
+ with the server, a client may, for example, obtain the resource's HTML
2798
+ representation available from the specific URI
2799
+ <code>http://example.com/res1.html</code>. Another client may ask for and
2800
+ retrieve the PDF representation of the
2801
+ resource from the specific URI <code>http://example.com/res1.pdf</code>.
2802
+ Which representation a client obtains, can depend on its
2803
+ preferences in terms of Media Type and language, its geographical location,
2804
+ and its device type.
2805
+ </p>
2806
+ <p>
2807
+ A Source may express that a resource is subject to synchronization by conveying its
2808
+ generic URI in <code>&lt;loc&gt;</code>. In this case, per alternate representation
2809
+ that the Source wants to advertise, an <code>&lt;rs:ln&gt;</code> element is
2810
+ introduced. This element has the following attributes:
2811
+ </p>
2812
+ <ul>
2813
+ <li>A mandatory <code>rel</code> attribute with a value of <code>alternate</code>.</li>
2814
+ <li>A mandatory <code>href</code> attribute that conveys the specific URI of the alternate
2815
+ representation of the resource.</li>
2816
+ <li>A recommended <code>type</code> attribute that conveys the Media Type of the
2817
+ alternate representation.</li>
2818
+ <li>Other attributes, as described for the <code>&lt;rs:ln&gt;</code> child element of
2819
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
2820
+ </ul>
2821
+
2822
+ <p>
2823
+ Cases exist in which there is no generic URI for a resource, only specific URIs.
2824
+ This may occur, for example, when a resource has different representations
2825
+ available for different devices.
2826
+ In this case the URI in <code>&lt;loc&gt;</code> will be a specific URI, and
2827
+ <code>&lt;rs:ln&gt;</code> elements with an <code>alternate</code> relation
2828
+ type are still used to refer to alternate representations available from other
2829
+ specific URIs.
2830
+ </p>
2831
+ <p>
2832
+ <a href="#ex_25">Example 25</a> shows how to promote a generic URI in <code>&lt;loc&gt;</code>
2833
+ while also pointing to alternate representations available from specific URIs,
2834
+ for example, through content negotiation.
2835
+ </p>
2836
+
2837
+ <a name="ex_25"></a>
2838
+ <div class="exampleInner">
2839
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2840
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2841
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2842
+ &lt;rs:ln rel="up"
2843
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2844
+ &lt;rs:md capability="changelist"
2845
+ from="2013-01-03T11:00:00Z"/&gt;
2846
+ &lt;url&gt;
2847
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
2848
+ &lt;rs:md change="updated"
2849
+ datetime="2013-01-03T18:00:00Z"/&gt;
2850
+ &lt;rs:ln <span class="rs">rel="alternate"</span>
2851
+ href="http://example.com/res1.html"
2852
+ <span class="rs">type="text/html"</span>/&gt;
2853
+ &lt;rs:ln rel="alternate"
2854
+ href="http://example.com/res1.pdf"
2855
+ <span class="rs">type="application/pdf"</span>/&gt;
2856
+ &lt;/url&gt;
2857
+ &lt;/urlset&gt;
2858
+ </pre>
2859
+ </div>
2860
+ <p class="caption">Example 25: Generic URI and alternates with specific URIs</p>
2861
+
2862
+ <p>
2863
+ In cases where a particular representation is considered the subject of synchronization,
2864
+ its specific URI is provided in <code>&lt;loc&gt;</code>. The associated
2865
+ generic URI, if one exists, may be provided using an <code>&lt;rs:ln&gt;</code>
2866
+ element. This element has the following attributes:
2867
+ </p>
2868
+ <ul>
2869
+ <li>A mandatory <code>rel</code> attribute with a value of <code>canonical</code>.</li>
2870
+ <li>A mandatory <code>href</code> attribute that conveys the generic URI associated with the
2871
+ specific URI provided in <code>&lt;loc&gt;</code>.</li>
2872
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
2873
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
2874
+ </ul>
2875
+
2876
+ <p>
2877
+ This approach might be most appropriate for Resource Dump Manifests and Change Dump Manifests
2878
+ that describe bitstreams contained in a ZIP file.
2879
+ </p>
2880
+ <p>
2881
+ <a href="#ex_26">Example 26</a> shows a Source promoting a specific URI
2882
+ in <code>&lt;loc&gt;</code> while also pointing to the
2883
+ resource's generic URI by means of an <code>&lt;rs:ln&gt;</code> element.
2884
+ Metadata pertaining to the representation available from that specific URI is
2885
+ conveyed by means of attributes of the <code>&lt;rs:md&gt;</code> element.
2886
+ </p>
2887
+
2888
+ <a name="ex_26"></a>
2889
+ <div class="exampleInner">
2890
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2891
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2892
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2893
+ &lt;rs:ln rel="up"
2894
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2895
+ &lt;rs:md capability="changelist"
2896
+ from="2013-01-03T00:00:00Z"/&gt;
2897
+ &lt;url&gt;
2898
+ &lt;loc&gt;http://example.com/res1.html&lt;/loc&gt;
2899
+ &lt;rs:md change="updated"
2900
+ datetime="2013-01-03T18:00:00Z"
2901
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
2902
+ length="8876"/&gt;
2903
+ &lt;rs:ln <span class="rs">rel="canonical"</span>
2904
+ href="http://example.com/res1"
2905
+ modified="2013-01-03T18:00:00Z"/&gt;
2906
+ &lt;/url&gt;
2907
+ &lt;/urlset&gt;
2908
+ </pre>
2909
+ </div>
2910
+ <p class="caption">Example 26: Specific URI and alternate with generic URI</p>
2911
+
2912
+ <h3>14.4 <a name="PatchCon">Patching Content</a></h3>
2913
+ <p>
2914
+ In order to increase the efficiency of updating a resource, a Source may make a
2915
+ description available of the changes that the resource underwent, in addition
2916
+ to the entire changed resource. Especially when frequent minor changes and/or
2917
+ changes to large resources are concerned, such an approach may be attractive.
2918
+ It will, however, require an unambiguous way to describe the changes so
2919
+ that a Destination can construct the most recent version of the resource
2920
+ by appropriately patching the previous version with the description of the changes.
2921
+ </p>
2922
+
2923
+ <p>
2924
+ A Source may express that it makes a description of resource changes available
2925
+ by providing the URI of the resource in <code>&lt;loc&gt;</code>, as usual, and by
2926
+ introducing an <code>&lt;rs:ln&gt;</code> element with the following attributes:
2927
+ </p>
2928
+ <ul>
2929
+ <li>A mandatory <code>rel</code> attribute with a value of
2930
+ <code>http://www.openarchives.org/rs/terms/patch</code>.</li>
2931
+ <li>A mandatory <code>href</code> attribute that conveys the URI of the description
2932
+ of the resource changes.</li>
2933
+ <li>A mandatory <code>type</code> attribute that conveys the Media Type of the
2934
+ change description. That Media Type must be such that it allows the unambiguous
2935
+ application of the described changes to the previous version of the resource to
2936
+ construct the current one.</li>
2937
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element
2938
+ of <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
2939
+ </ul>
2940
+
2941
+ <p><a href="#ex_27">Example 27</a> shows a Source that expresses changes that a
2942
+ JSON resource underwent expressed using the <code>application/json-patch</code>
2943
+ Media Type introduced in <a href="#ref-json-patch">JSON Patch</a>. It also shows
2944
+ the Source conveying changes to a large TIFF file using an experimental Media
2945
+ Type that may, for example, be described in a community specification.
2946
+ A Destination that does not understand the Media Type should ignore the
2947
+ description of changes and use the URI in <code>&lt;loc&gt;</code>
2948
+ to obtain the most recent version of the resource. Another example of a
2949
+ well-specified Media Type for expressing changes to XML document is
2950
+ <code>application/patch-ops-error+xml</code>, as specified in
2951
+ <a href="#ref-rfc5261">RFC 5261</a>.
2952
+ </p>
2953
+ <p>
2954
+ Expressing resource changes in this manner is only applicable to Change Lists
2955
+ (as in <a href="#ex_27">Example 27</a>) and Change Dumps.
2956
+ When doing so for a Change Dump, the entry in the Change Dump Manifest must
2957
+ have the <code>path</code> attribute for the <code>&lt;rs:ln&gt;</code>
2958
+ element that points to the change description that is included in the content package.
2959
+ </p>
2960
+ <a name="ex_27"></a>
2961
+ <div class="exampleInner">
2962
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
2963
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
2964
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
2965
+ &lt;rs:ln rel="up"
2966
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
2967
+ &lt;rs:md capability="changelist"
2968
+ from="2013-01-03T00:00:00Z"/&gt;
2969
+ &lt;url&gt;
2970
+ &lt;loc&gt;http://example.com/res4&lt;/loc&gt;
2971
+ &lt;rs:md change="updated"
2972
+ hash="sha-256:f4OxZX_x_DFGFDgghgdfb6rtSx-iosjf6735432nklj"
2973
+ length="56778"
2974
+ <span class="rs">type="application/json"</span>/&gt;
2975
+ &lt;rs:ln <span class="rs">rel="http://www.openarchives.org/rs/terms/patch"</span>
2976
+ href="http://example.com/res4-json-patch"
2977
+ hash="sha-256:y66dER_t_HWEIKpesdkeb7rtSc-ippjf9823742opld"
2978
+ length="73"
2979
+ <span class="rs">type="application/json-patch"</span>/&gt;
2980
+ &lt;/url&gt;
2981
+ &lt;url&gt;
2982
+ &lt;loc&gt;http://example.com/res5-full.tiff&lt;/loc&gt;
2983
+ &lt;rs:md change="updated"
2984
+ hash="sha-256:f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk"
2985
+ length="9788456778"
2986
+ <span class="rs">type="image/tiff"</span>/&gt;
2987
+ &lt;rs:ln <span class="rs">rel="http://www.openarchives.org/rs/terms/patch"</span>
2988
+ href="http://example.com/res5-diff"
2989
+ hash="sha-256:h986gT_t_87HTkjHYE76G558hY-jdfgy76t55sadJUYT"
2990
+ length="4533"
2991
+ <span class="rs">type="application/x-tiff-diff"</span>/&gt;
2992
+ &lt;/url&gt;
2993
+ &lt;/urlset&gt;
2994
+ </pre>
2995
+ </div>
2996
+ <p class="caption">Example 27: A Change List with links to document that detail how to patch resources</p>
2997
+
2998
+ <h3>14.5 <a name="ResMDLinking">Resources and Metadata about Resources</a></h3>
2999
+ <p>
3000
+ Cases exist where both resources and metadata about those resources must be synchronized.
3001
+ From the ResourceSync perspective, both the resource and the metadata about it are regarded
3002
+ as resources with distinct URIs that are subject to synchronization. As usual, each
3003
+ gets its distinct <code>&lt;url&gt;</code> block and each URI is conveyed in a
3004
+ <code>&lt;loc&gt;</code> child element of the respective block. If required, the
3005
+ inter-relationship between the resources is expressed by means of an
3006
+ <code>&lt;rs:ln&gt;</code> element with appropriate relation types added to each block.
3007
+ The <code>&lt;rs:ln&gt;</code> element has the following attributes:
3008
+ </p>
3009
+ <ul>
3010
+ <li>A mandatory <code>rel</code> attribute. When pointing from a resource to metadata
3011
+ that describes it, the <code>rel</code> attribute's value is <code>describedby</code>;
3012
+ when pointing from metadata to the resource described by the metadata,
3013
+ its value is <code>describes</code>.</li>
3014
+ <li>A mandatory <code>href</code> attribute. When pointing from a resource to metadata
3015
+ that describes it, the <code>href</code> attribute's value is the URI of the metadata
3016
+ resource; when pointing from metadata to the resource described by it,
3017
+ the value is the URI of the described resource.</li>
3018
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
3019
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
3020
+ </ul>
3021
+
3022
+ <p>
3023
+ <a href="#ex_28">Example 28</a> shows how a Source may express this inter-relationship
3024
+ between the two resources. Note that a Destination can use the metadata that
3025
+ describes a resource as a filtering mechanism to only synchronize with those
3026
+ resources that meet its metadata-based selection criteria. Note also in the
3027
+ <code>&lt;url&gt;</code> element that conveys the metadata record update,
3028
+ the use of the link with a <code>profile</code> relation type
3029
+ [<a href="#ref-rfc6906">RFC 6906</a>] to express the kind of metadata that
3030
+ is used to describe the resource (in this case, the kind of metadata is expressed
3031
+ by means of its XML Namespace).
3032
+ The link should provide a URI that supports the Destination
3033
+ in interpreting the metadata information. For example, it could refer to a
3034
+ namespace, an XML schema, or a description of MARC.
3035
+ </p>
3036
+
3037
+ <a name="ex_28"></a>
3038
+ <div class="exampleInner">
3039
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3040
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3041
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3042
+ &lt;rs:ln rel="up"
3043
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
3044
+ &lt;rs:md capability="changelist"
3045
+ from="2013-01-03T00:00:00Z"/&gt;
3046
+ &lt;url&gt;
3047
+ &lt;loc&gt;http://example.com/res2.pdf&lt;/loc&gt;
3048
+ &lt;rs:md change="updated"
3049
+ datetime="2013-01-03T18:00:00Z"
3050
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3051
+ length="8876"
3052
+ type="application/pdf"/&gt;
3053
+ &lt;rs:ln <span class="rs">rel="describedby"</span>
3054
+ href="http://example.com/res2_dublin-core_metadata.xml"
3055
+ type="application/xml"/&gt;
3056
+ &lt;/url&gt;
3057
+ &lt;url&gt;
3058
+ &lt;loc&gt;http://example.com/res2_dublin-core_metadata.xml&lt;/loc&gt;
3059
+ &lt;rs:md change="updated"
3060
+ datetime="2013-01-03T19:00:00Z"
3061
+ type="application/xml"/&gt;
3062
+ &lt;rs:ln <span class="rs">rel="describes"</span>
3063
+ href="http://example.com/res2.pdf"
3064
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3065
+ length="8876"
3066
+ type="application/pdf"/&gt;
3067
+ &lt;rs:ln <span class="rs">rel="profile"</span>
3068
+ href="http://purl.org/dc/elements/1.1/"/&gt;
3069
+ &lt;/url&gt;
3070
+ &lt;/urlset&gt;
3071
+ </pre>
3072
+ </div>
3073
+ <p class="caption">Example 28: Linking between a resource and metadata about a resource in a Change List</p>
3074
+
3075
+ <h3>14.6 <a name="ResVers">Prior Versions of Resources</a></h3>
3076
+ <p>
3077
+ A Source may provide access to prior versions of a resource to allow Destinations to obtain a
3078
+ historical perspective, rather than just remaining synchronized with the most recent version.
3079
+ This approach leverages a common resource versioning paradigm that consists of:
3080
+ </p>
3081
+ <ul>
3082
+ <li>The existence of a time-generic URI from which, at any moment in time, the current representation of the
3083
+ resource is available.</li>
3084
+ <li>The existence of a time-specific URI for each resource version, from which a specific temporal version of
3085
+ the resource is available.</li>
3086
+ </ul>
3087
+ <p>
3088
+ When communicating about the resource, its time-generic URI is provided in
3089
+ the <code>&lt;loc&gt;</code> element. The <code>&lt;lastmod&gt;</code> element
3090
+ may be used to provide the resource's last modification time.
3091
+ </p>
3092
+ <p>
3093
+ A first approach consists of conveying the time-specific URI of the resource that
3094
+ corresponds with the time of last modification, as given in the <code>&lt;lastmod&gt;</code> element.
3095
+ This is achieved by introducing a single <code>&lt;rs:ln&gt;</code> element with
3096
+ the following attributes:
3097
+ </p>
3098
+ <ul>
3099
+ <li>A mandatory <code>rel</code> attribute with a value of <code>memento</code>.</li>
3100
+ <li>A mandatory <code>href</code> attribute that conveys the time-specific URI of
3101
+ the resource that corresponds with the time of last modification.
3102
+ This URI allows a Destination to obtain that specific version during a catch-up
3103
+ operation, for example, because it had been offline, even if the resource has
3104
+ meanwhile changed again.</li>
3105
+ <li>The last modified datetime of the resource version
3106
+ identified by the time-specific URI is conveyed by the value of the
3107
+ <code>modified</code> attribute.</li>
3108
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
3109
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
3110
+ </ul>
3111
+
3112
+ <p>
3113
+ A second approach consists of pointing to a TimeGate associated with the
3114
+ time-generic resource. A TimeGate supports negotiation in the datetime dimension,
3115
+ as introduced in the Memento protocol [<a href="#ref-rfc7089">RFC 7089</a>],
3116
+ to obtain a version of the resource as it existed at a specified moment in time.
3117
+ This allows the Destination to obtain the version that existed at a time in the
3118
+ past, for example the time of last modification (if a <code>&lt;lastmod&gt;</code>
3119
+ value is included as shown in <a href="#ex_29">Example 29</a>) or any other
3120
+ desired time. A pointer to a TimeGate is introduced by using an
3121
+ <code>&lt;rs:ln&gt;</code> element with the following attributes:
3122
+ </p>
3123
+ <ul>
3124
+ <li>A mandatory <code>rel</code> attribute with a value of <code>timegate</code>.</li>
3125
+ <li>A mandatory <code>href</code> attribute that conveys the URI of TimeGate associated with the
3126
+ time-generic resource.</li>
3127
+ <li>The other attributes described for the <code>&lt;rs:ln&gt;</code> child element of
3128
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>
3129
+ should not be used as they are meaningless for TimeGates.</li>
3130
+ </ul>
3131
+
3132
+ <p>
3133
+ A third approach consists of pointing to a TimeMap associated with the time-generic resource. A TimeMap, as introduced in the Memento protocol
3134
+ [<a href="#ref-rfc7089">RFC 7089</a>],
3135
+ enables Destinations to retrieve a comprehensive list of all time-specific resources known to a server.
3136
+ This allows Destinations to choose a particular version of a resource from that list.
3137
+ A pointer to a TimeMap is introduced by using an <code>&lt;rs:ln&gt;</code> element with the following attributes:
3138
+ </p>
3139
+ <ul>
3140
+ <li>A mandatory <code>rel</code> attribute with a value of <code>timemap</code>.</li>
3141
+ <li>A mandatory <code>href</code> attribute that conveys the URI of TimeMap associated with the
3142
+ time-generic resource.</li>
3143
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
3144
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
3145
+ </ul>
3146
+
3147
+ <p>
3148
+ <a href="#ex_29">Example 29</a> shows a Change List with a link to a prior version of a
3149
+ resource, a link to a TimeGate, as well as a link to a TimeMap.
3150
+ Note that the values of the <code>hash, length,</code> and <code>type</code> attributes
3151
+ are identical between the <code>&lt;rs:md&gt;</code> child element and the
3152
+ <code>&lt;rs:ln&gt;</code> child element that points to the prior version.
3153
+ </p>
3154
+
3155
+ <a name="ex_29"></a>
3156
+ <div class="exampleInner">
3157
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3158
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3159
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3160
+ &lt;rs:ln rel="up"
3161
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
3162
+ &lt;rs:md capability="changelist"
3163
+ from="2013-01-03T00:00:00Z"/&gt;
3164
+ &lt;url&gt;
3165
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
3166
+ &lt;lastmod&gt;2013-01-03T18:00:00Z&lt;/lastmod&gt;
3167
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3168
+ length="8876"
3169
+ type="text/html"
3170
+ change="updated"/&gt;
3171
+ &lt;rs:ln <span class="rs">rel="memento"</span>
3172
+ href="http://example.com/20130103070000/res1"
3173
+ modified="2013-01-02T18:00:00Z"
3174
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3175
+ length="8876"
3176
+ type="text/html"/&gt;
3177
+ &lt;rs:ln <span class="rs">rel="timegate"</span>
3178
+ href="http://example.com/timegate/http://example.com/res1"/&gt;
3179
+ &lt;rs:ln <span class="rs">rel="timemap"</span>
3180
+ href="http://example.com/timemap/http://example.com/res1"
3181
+ type="application/link-format"/&gt;
3182
+ &lt;/url&gt;
3183
+ &lt;/urlset&gt;
3184
+ </pre>
3185
+ </div>
3186
+ <p class="caption">Example 29: Links to a resource version, and a Memento TimeGate and TimeMap</p>
3187
+
3188
+ <h3>14.7 <a name="ColMem">Collection Membership</a></h3>
3189
+ <p>
3190
+ A Source may express that a resource is a member of a collection such
3191
+ as an <a href="#ref-oaiore">OAI-ORE</a> Aggregation or an
3192
+ <a href="#ref-oaipmh">OAI-PMH</a> Set.
3193
+ A Source may express collection membership of a resource that is subject to synchronization
3194
+ by providing the URI of that resource in <code>&lt;loc&gt;</code>, as usual, and by
3195
+ introducing an <code>&lt;rs:ln&gt;</code> element with the following attributes:
3196
+ </p>
3197
+ <ul>
3198
+ <li>A mandatory <code>rel</code> attribute with a value of <code>collection</code>.</li>
3199
+ <li>A mandatory <code>href</code> attribute that conveys the URI that identifies the collection.</li>
3200
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
3201
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
3202
+ </ul>
3203
+
3204
+ <p>
3205
+ <a href="#ex_30">Example 30</a> shows a Change List with one resource that is
3206
+ a member of an OAI-ORE Aggregation.
3207
+ </p>
3208
+
3209
+ <a name="ex_30"></a>
3210
+ <div class="exampleInner">
3211
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3212
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3213
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3214
+ &lt;rs:ln rel="up"
3215
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
3216
+ &lt;rs:md capability="changelist"
3217
+ from="2013-01-03T00:00:00Z"/&gt;
3218
+ &lt;url&gt;
3219
+ &lt;loc&gt;http://example.com/res1&lt;/loc&gt;
3220
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3221
+ length="8876"
3222
+ type="text/html"
3223
+ change="updated"/&gt;
3224
+ &lt;rs:ln <span class="rs">rel="collection"</span>
3225
+ href="http://example.com/aggregation/0601007"/&gt;
3226
+ &lt;/url&gt;
3227
+ &lt;/urlset&gt;
3228
+ </pre>
3229
+ </div>
3230
+ <p class="caption">Example 30: A resource as a member of a collection</p>
3231
+
3232
+ <h3>14.8 <a name="RePub">Republishing Resources</a></h3>
3233
+ <p>
3234
+ A special kind of Destination, henceforth called an aggregator,
3235
+ may retrieve content from a Source, republish it, and in its turn
3236
+ act as a Source for the republished content. In such an aggregator
3237
+ scenario, it may be important for a Destination that synchronizes
3238
+ with the aggregator to understand the provenance of the content and
3239
+ to be able to verify its accuracy with the original Source of the
3240
+ content. When communicating about a republished resource, the
3241
+ aggregator may provide such provenance information by introducing
3242
+ an <code>&lt;rs:ln&gt;</code> element with the following attributes:
3243
+ </p>
3244
+
3245
+ <ul>
3246
+ <li>A mandatory <code>rel</code> attribute with a value of <code>via</code>.</li>
3247
+ <li>A mandatory <code>href</code> attribute that conveys the URI of the resource at the original Source.</li>
3248
+ <li>Other attributes are as described for the <code>&lt;rs:ln&gt;</code> child element of
3249
+ <code>&lt;url&gt;</code> in <a href="#DocumentFormats">Section 7</a>.</li>
3250
+ </ul>
3251
+ <p>
3252
+ <a href="#ex_31">Example 31</a> shows a Change List in which a
3253
+ Source publishes information about a change to a single resource.
3254
+ </p>
3255
+
3256
+ <a name="ex_31"></a>
3257
+ <div class="exampleInner">
3258
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3259
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3260
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3261
+ &lt;rs:ln rel="up"
3262
+ href="http://example.com/dataset1/capabilitylist.xml"/&gt;
3263
+ &lt;rs:md capability="changelist"
3264
+ <span class="rs">from="2013-01-03T00:00:00Z"</span>/&gt;
3265
+ &lt;url&gt;
3266
+ &lt;loc&gt;<span class="rs">http://original.example.com/res1.html</span>&lt;/loc&gt;
3267
+ &lt;lastmod&gt;<span class="rs">2013-01-03T07:00:00Z</span>&lt;/lastmod&gt;
3268
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3269
+ length="8876"
3270
+ type="text/html"
3271
+ change="updated"/&gt;
3272
+ &lt;/url&gt;
3273
+ &lt;/urlset&gt;
3274
+ </pre>
3275
+ </div>
3276
+ <p class="caption">Example 31: An original Source publishes</p>
3277
+
3278
+ <p>
3279
+ <a href="#ex_32">Example 32</a> shows a primary aggregator's Change
3280
+ List that refers to the original Source's resource. It includes a link
3281
+ with the relation type <code>via</code> that has attributes such as
3282
+ <code>href</code> to convey information about the origin of the resource.
3283
+ This information corresponds with the data provided in the
3284
+ <code>&lt;url&gt;</code> block of the Change List shown in
3285
+ <a href="#ex_31">Example 31</a>. For example, the value of the
3286
+ <code>href</code> attribute in <a href="#ex_32">Example 32</a>
3287
+ equals the value of the <code>&lt;loc&gt;</code> child element in the
3288
+ <code>&lt;url&gt;</code> block in <a href="#ex_31">Example 31</a>.
3289
+ </p>
3290
+
3291
+ <a name="ex_32"></a>
3292
+ <div class="exampleInner">
3293
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3294
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3295
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3296
+ &lt;rs:ln rel="up"
3297
+ href="http://aggregator1.example.com/dataset1/capabilitylist.xml"/&gt;
3298
+ &lt;rs:md capability="changelist"
3299
+ <span class="rs">from="2013-01-03T11:00:00Z"</span>/&gt;
3300
+ &lt;url&gt;
3301
+ &lt;loc&gt;<span class="rs">http://aggregator1.example.com/res1.html</span>&lt;/loc&gt;
3302
+ &lt;lastmod&gt;<span class="rs">2013-01-03T20:00:00Z</span>&lt;/lastmod&gt;
3303
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3304
+ length="8876"
3305
+ type="text/html"
3306
+ change="updated"/&gt;
3307
+ &lt;rs:ln <span class="rs">rel="via"</span>
3308
+ href=<span class="rs">"http://original.example.com/res1.html"</span>
3309
+ modified="2013-01-03T07:00:00Z"
3310
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3311
+ length="8876"
3312
+ type="text/html"/&gt;
3313
+ &lt;/url&gt;
3314
+ &lt;/urlset&gt;
3315
+ </pre>
3316
+ </div>
3317
+ <p class="caption">Example 32: A primary aggregator republishes</p>
3318
+
3319
+ <p>
3320
+ If a secondary aggregator obtains the changed resource by consuming the
3321
+ Change List of the primary aggregator and republishes its Change List,
3322
+ a chain of aggregations is created. In this case each aggregator should
3323
+ maintain only the existing <code>via</code> link in order to convey
3324
+ information about the origin of the resource.
3325
+ </p>
3326
+ <p>
3327
+ <a href="#ex_33">Example 33</a> shows the Change List of a secondary
3328
+ aggregator with information about the changed resource and the
3329
+ <code>via</code> link equal to <a href="#ex_32">Example 32</a>.
3330
+ The data conveyed with the link corresponds to the data provided in the
3331
+ <code>&lt;url&gt;</code> block in <a href="#ex_31">Example 31</a>.
3332
+ </p>
3333
+
3334
+ <a name="ex_33"></a>
3335
+ <div class="exampleInner">
3336
+ <pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
3337
+ &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3338
+ xmlns:rs="http://www.openarchives.org/rs/terms/"&gt;
3339
+ &lt;rs:ln rel="up"
3340
+ href="http://aggregator2.example.com/dataset1/capabilitylist.xml"/&gt;
3341
+ &lt;rs:md capability="changelist"
3342
+ <span class="rs">from="2013-01-03T12:00:00Z"</span>/&gt;
3343
+ &lt;url&gt;
3344
+ &lt;loc&gt;<span class="rs">http://aggregator2.example.com/res1.html</span>&lt;/loc&gt;
3345
+ &lt;lastmod&gt;<span class="rs">2013-01-04T09:00:00Z</span>&lt;/lastmod&gt;
3346
+ &lt;rs:md hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3347
+ length="8876"
3348
+ type="text/html"
3349
+ change="updated"/&gt;
3350
+ &lt;rs:ln <span class="rs">rel="via"</span>
3351
+ href=<span class="rs">"http://original.example.com/res1.html"</span>
3352
+ modified="2013-01-03T07:00:00Z"
3353
+ hash="md5:1584abdf8ebdc9802ac0c6a7402c03b6"
3354
+ length="8876"
3355
+ type="text/html"/&gt;
3356
+ &lt;/url&gt;
3357
+ &lt;/urlset&gt;
3358
+ </pre>
3359
+ </div>
3360
+ <p class="caption">Example 33: A second aggregator republishes</p>
3361
+
3362
+ <p>
3363
+ The values of the <code>at</code>, <code>completed</code>,
3364
+ <code>from</code>, and <code>until</code> attributes must always be
3365
+ expressed from the perspective of the Source that publishes the
3366
+ document that contains them. Hence it is possible that the
3367
+ <code>from</code> datetime of a Change List is more recent than
3368
+ the <code>&lt;lastmod&gt;</code> datetime of the original Source's
3369
+ resource described in the Change List, which is conveyed using an
3370
+ <code>&lt;rs:ln&gt;</code> link with the <code>via</code> relation type.
3371
+ </p>
3372
+ <p>
3373
+ An aggregator should be cautious when inheriting links, other than the
3374
+ one with the <code>via</code> relation type, from a Source that precedes
3375
+ it in an aggregation chain. It should make sure that each such link remains
3376
+ appropriate from its own perspective and refrain from inheriting it when
3377
+ it is not. For example, a link with the relation type <code>collection</code>
3378
+ or <code>canonical</code> expressed by the original Source may not be
3379
+ appropriate in the context of the aggregator's copy, and hence should not
3380
+ be included in the description of the changed resource in the aggregator's
3381
+ capability document.
3382
+ </p>
3383
+
3384
+ </div> <!--class="body"-->
3385
+
3386
+ <div class="back">
3387
+ <div class="body">
3388
+
3389
+
3390
+ <h2><a name="TimeAttributeReqs"></a>A. Time Attribute Requirements</h2>
3391
+
3392
+ <p><i>(normative)</i></p>
3393
+
3394
+ <p>
3395
+ <a href="#tab_4">Table 4</a> provides an overview of the requirements
3396
+ for use of the <code>at</code> and <code>from</code> attributes
3397
+ in ResourceSync documents.
3398
+ The <i>top</i> label in the column headings represents the <code>&lt;sitemapindex&gt;</code> root element for index documents, and the
3399
+ <code>&lt;urlset&gt;</code> root element for all other documents.
3400
+ The <i>child</i> label in the column headings represents the <code>&lt;sitemap&gt;</code> child element for index documents, and the
3401
+ <code>&lt;url&gt;</code> child element for all other documents.
3402
+ </p>
3403
+ <p>
3404
+ The optional attributes <code>completed</code> and <code>until</code> are not shown
3405
+ in the table, but they may be added wherever the corresponding <code>at</code> and
3406
+ <code>from</code> attributes are mandatory, recommended, or optional.
3407
+ </p>
3408
+ <p>
3409
+ <a href="#tab_4">Table 4</a> shows that, for example, a Change List must contain the
3410
+ <code>&lt;rs:md&gt;</code> child element of the <code>&lt;urlset&gt;</code> root
3411
+ element with the attribute <code>from</code> to convey the temporal
3412
+ interval covered by the Change List.
3413
+ </p>
3414
+
3415
+ <a name="tab_4"></a>
3416
+ <table class="attr_req_level-table" summary="Time Attribute Requirements">
3417
+ <tbody>
3418
+ <tr class="top">
3419
+ <th>Capability Document</th><th>/<i>top</i>/rs:md/@at</th><th>/<i>top</i>/rs:md/@from</th><th>/<i>top</i>/<i>child</i>/rs:md/@at</th><th>/<i>top</i>/<i>child</i>/rs:md/@from</th>
3420
+ </tr>
3421
+ <tr class="odd">
3422
+ <td class="cap">Resource List</td>
3423
+ <td class="mand">Mandatory</td>
3424
+ <td class="na">X</td>
3425
+ <td class="na">X</td>
3426
+ <td class="na">X</td>
3427
+ </tr>
3428
+ <tr class="odd">
3429
+ <td class="cap">Resource List Index</td>
3430
+ <td class="mand">Mandatory</td>
3431
+ <td class="na">X</td>
3432
+ <td class="opt">Optional</td>
3433
+ <td class="na">X</td>
3434
+ </tr>
3435
+ <tr class="even">
3436
+ <td class="cap">Resource Dump</td>
3437
+ <td class="mand">Mandatory</td>
3438
+ <td class="na">X</td>
3439
+ <td class="opt">Optional</td>
3440
+ <td class="na">X</td>
3441
+ </tr>
3442
+ <tr class="even">
3443
+ <td class="cap">Resource Dump Index</td>
3444
+ <td class="mand">Mandatory</td>
3445
+ <td class="na">X</td>
3446
+ <td class="opt">Optional</td>
3447
+ <td class="na">X</td>
3448
+ </tr>
3449
+ <tr class="even">
3450
+ <td class="cap">Resource Dump Manifest</td>
3451
+ <td class="mand">Mandatory</td>
3452
+ <td class="na">X</td>
3453
+ <td class="na">X</td>
3454
+ <td class="na">X</td>
3455
+ </tr>
3456
+ <tr class="odd">
3457
+ <td class="cap">Change List</td>
3458
+ <td class="na">X</td>
3459
+ <td class="mand">Mandatory</td>
3460
+ <td class="na">X</td>
3461
+ <td class="na">X</td>
3462
+ </tr>
3463
+
3464
+ <tr class="odd">
3465
+ <td class="cap">Change List Index</td>
3466
+ <td class="na">X</td>
3467
+ <td class="mand">Mandatory</td>
3468
+ <td class="na">X</td>
3469
+ <td class="rec">Recommended</td>
3470
+ </tr>
3471
+
3472
+ <tr class="even">
3473
+ <td class="cap">Change Dump</td>
3474
+ <td class="na">X</td>
3475
+ <td class="mand">Mandatory</td>
3476
+ <td class="na">X</td>
3477
+ <td class="rec">Recommended</td>
3478
+ </tr>
3479
+
3480
+ <tr class="even">
3481
+ <td class="cap">Change Dump Index</td>
3482
+ <td class="na">X</td>
3483
+ <td class="mand">Mandatory</td>
3484
+ <td class="na">X</td>
3485
+ <td class="rec">Recommended</td>
3486
+ </tr>
3487
+
3488
+ <tr class="even">
3489
+ <td class="cap">Change Dump Manifest</td>
3490
+ <td class="na">X</td>
3491
+ <td class="mand">Mandatory</td>
3492
+ <td class="na">X</td>
3493
+ <td class="na">X</td>
3494
+ </tr>
3495
+ </tbody>
3496
+ </table>
3497
+ <p class="caption">Table 4: Required and optional use of <code>at</code> and <code>from</code> attributes in ResourceSync documents</p>
3498
+
3499
+
3500
+
3501
+ <h2>B. <a name="Bibliography">Bibliography</a></h2>
3502
+
3503
+ <p>(This Bibliography is not part of the ResourceSync Framework Specification,
3504
+ NISO Z39.99-YYYY. It is included for information only.)</p>
3505
+
3506
+ <dl>
3507
+
3508
+
3509
+ <dt>[<a name="ref-html-links" id="ref-html-links">HTML Links</a>]</dt>
3510
+ <dd>Raggett, Dave, Arnaud Le Hors, and Ian Jacobs, eds.
3511
+ <a href="http://www.w3.org/TR/html401/struct/links.html"><cite>&quot;Links.&quot; Section 12 in: HTML 4.01 Specification</cite></a>.
3512
+ W3C Recommendation. World Wide Web Consortium, December 24, 1999.
3513
+ Available at: <a href="http://www.w3.org/TR/html401/struct/links.html">http://www.w3.org/TR/html401/struct/links.html</a></dd>
3514
+
3515
+ <dt>[<a name="ref-json-patch" id="ref-json-patch">JSON-Patch</a>]</dt>
3516
+ <dd>Bryan, P., and M. Nottingham, eds.
3517
+ <a href="http://tools.ietf.org/html/draft-ietf-appsawg-json-patch"><cite>JSON Patch</cite></a>. Internet Draft.
3518
+ Internet Engineering Task Force (IETF), January 20, 2013.
3519
+ Available at: <a href="http://tools.ietf.org/html/draft-ietf-appsawg-json-patch">http://tools.ietf.org/html/draft-ietf-appsawg-json-patch-10</a></dd>
3520
+
3521
+ <dt>[<a name="ref-oaipmh" id="ref-oaipm">OAI-PMH</a>]</dt>
3522
+ <dd>Lagoze, Carl, Herbert Van de Sompel, Michael Nelson, and Simeon Warner, eds.
3523
+ <cite><a href="http://www.openarchives.org/OAI/openarchivesprotocol.html">The Open Archives Initiative Protocol for Metadata Harvesting</a></cite>.
3524
+ Version 2.0. Open Archives Initiative, December 7, 2008.
3525
+ Available at: <a href="http://www.openarchives.org/OAI/openarchivesprotocol.html">http://www.openarchives.org/OAI/openarchivesprotocol.html</a></dd>
3526
+
3527
+ <dt>[<a name="ref-oaiore" id="ref-oaiore">ORE</a>]</dt>
3528
+ <dd>Lagoze, Carl, Herbert Van de Sompel, Pete Johnston, Michael Nelson, Robert Sanderson, and Simeon Warner, eds.
3529
+ <cite><a href="http://www.openarchives.org/ore/datamodel">ORE Specification - Abstract Data Model</a></cite>.
3530
+ Open Archives Initiative, October 17, 2008.
3531
+ Available at: <a href="http://www.openarchives.org/ore/1.0/datamodel">http://www.openarchives.org/ore/1.0/datamodel</a></dd>
3532
+
3533
+ <dt>[<a name="ref-relationtypes" id="ref-relationtype">Relation Types</a>]</dt>
3534
+ <dd>Klein, Martin, Herbert Van de Sompel, Simeon Warner, Graham Klyne, Bernhard Haslhofer, Michael Nelson, Carl Lagoze, and Robert Sanderson, eds.
3535
+ <a href="http://www.openarchives.org/rs/relationtypes"><cite>Relation Types Used in the ResourceSync Framework</cite></a>.
3536
+ Open Archives Initiative.
3537
+ Available at: <a href="http://www.openarchives.org/rs/relationtypes">http://www.openarchives.org/rs/relationtypes</a></dd>
3538
+
3539
+ <dt>[<a name="ref-rfc5261" id="ref-rfc5261">RFC 5261</a>]</dt>
3540
+ <dd>Urpalainen, J.
3541
+ <cite><a href="http://www.ietf.org/rfc/rfc5261.txt">An Extensible Markup Language (XML) Patch Operations Framework Utilizing XML Path Language (XPath) Selectors. RFC 5261</a></cite>.
3542
+ Internet Engineering Task Force (IETF), September 2008.
3543
+ Available at: <a href="http://www.ietf.org/rfc/rfc5261.txt">http://www.ietf.org/rfc/rfc5261.txt</a></dd>
3544
+
3545
+ <dt>[<a name="ref-rfc5785" id="ref-rfc5785">RFC 5785</a>]</dt>
3546
+ <dd>Nottingham, M., and E. Hammer-Lahav.
3547
+ <cite><a href="http://www.ietf.org/rfc/rfc5785.txt">Defining Well-Known Uniform Resource Identifiers (URIs). RFC 5785</a></cite>.
3548
+ Internet Engineering Task Force (IETF), April 2010.
3549
+ Available at: <a href="http://www.ietf.org/rfc/rfc5785.txt">http://www.ietf.org/rfc/rfc5785.txt</a></dd>
3550
+
3551
+ <dt>[<a name="ref-rfc6596" id="ref-rfc6596">RFC 6596</a>]</dt>
3552
+ <dd>Ohye, M., and J. Kupke.
3553
+ <cite><a href="http://www.ietf.org/rfc/rfc6596.txt">The Canonical Link Relation. RFC 6596</a></cite>.
3554
+ Internet Engineering Task Force (IETF), April 2012.
3555
+ Available at: <a href="http://www.ietf.org/rfc/rfc6596.txt">http://www.ietf.org/rfc/rfc6596.txt</a></dd>
3556
+
3557
+ <dt>[<a name="ref-rsync" id="ref-rsync">rsync</a>]</dt>
3558
+ <dd><cite><a href="http://en.wikipedia.org/wiki/Rsync">rsync</a></cite>.
3559
+ From Wikipedia, the free encyclopedia.
3560
+ Available at: <a href="http://en.wikipedia.org/wiki/Rsync">http://en.wikipedia.org/wiki/Rsync</a></dd>
3561
+
3562
+ <dt>[<a name="ref-webarch" id="ref-webarch">Web Architecture</a>]</dt>
3563
+ <dd>Jacobs, Ian, and Norman Walsh, eds.
3564
+ <a href="http://www.w3.org/TR/webarch/"><cite>Architecture of the World Wide Web, Volume One</cite></a>.
3565
+ W3C Recommendation. World Wide Web Consortium, December 15, 2004.
3566
+ Available at: <a href="http://www.w3.org/TR/webarch/">http://www.w3.org/TR/webarch/</a></dd>
3567
+
3568
+ <dt>[<a name="ref-xhtml-links" id="ref-xhtml-links">XHTML Links</a>]</dt>
3569
+ <dd>McCarron, Shane, et al., eds.
3570
+ <a href="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_linkmodule"><cite>&quot;Link Module.&quot; Section 5.19 in: XHTML Modularization 1.1. Second Edition</cite></a>.
3571
+ World Wide Web Consortium, July 29, 2010.
3572
+ Available at: <a href="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_linkmodule">http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_linkmodule</a></dd>
3573
+ </dl>
3574
+
3575
+ <h2><a name="FrontMatter"></a>C. Front Matter, Authorship, Acknowledgements</h2>
3576
+
3577
+ <p>(This appendix is contains front matter, authorship and acknowledgements
3578
+ from the PDF version of this specification. They have been moved here to
3579
+ preserve the readability of this web document.)</p>
3580
+
3581
+ <h3>About NISO Standards</h3>
3582
+
3583
+ <p>NISO standards are developed by Working Groups of the National
3584
+ Information Standards Organization. The development process is a strenuous
3585
+ one that includes a rigorous peer review of proposed standards open to each
3586
+ NISO Voting Member and any other interested party. Final approval of the
3587
+ standard involves verification by the American National Standards Institute
3588
+ that its requirements for due process, consensus, and other approval criteria
3589
+ have been met by NISO. Once verified and approved, NISO Standards also become
3590
+ American National Standards.</p>
3591
+
3592
+ <p>These standards may be revised or withdrawn at any time. For current
3593
+ information on the status of this standard contact the NISO office or visit
3594
+ the NISO website at: <a href="http://www.niso.org/">www.niso.org</a>.</p>
3595
+
3596
+ <p>Published by<br/>
3597
+ NISO<br/>
3598
+ 3600 Clipper Mill Road<br/>
3599
+ Suite 302<br/>
3600
+ Baltimore, MD 21211<br/>
3601
+ <a href="http://www.niso.org/">www.niso.org</a></p>
3602
+
3603
+ ISBN: ??? (HTML)<br/>
3604
+ ISBN: ??? (PDF)</p>
3605
+
3606
+ <h3>Foreword</h3>
3607
+
3608
+ <p>(This foreword is not part of the ResourceSync Framework Specification,
3609
+ NISO Z39.99-YYYY. It is included for information only.)</p>
3610
+
3611
+ <h4>About This Standard</h4>
3612
+
3613
+ <p>This document is structured as follows:</p>
3614
+
3615
+ <ul>
3616
+ <li><a href="#Walkthrough">Section 1</a>, Introduction, discusses the purpose and scope and provides example use cases and includes a Walkthrough, introducing the core components of the ResourceSync framework by example.</li>
3617
+ <li><a href="#NormativeRefs">Section 2</a>, Normative References, lists references to other standards/specifications that are required for conformance with this standard.</li>
3618
+ <li><a href="#Definitions">Section 3</a>, Definitions, introduces terminology important for the understanding of this standard.</li>
3619
+ <li><a href="#Namespaces">Section 4</a>, Namespace Prefix Bindings, identifies the namespaces used for this specification.</li>
3620
+ <li><a href="#SyncProcesses">Section 5</a>, Synchronization Processes, provides a high-level overview of the various ResourceSync capabilities and shows how these fit in processes aimed at remaining in step with resource changes.</li>
3621
+ <li><a href="#FrameworkOrg">Section 6</a>, Framework Organization, describes the overall organization of the ResourceSync framework: structure, navigation, and discovery.</li>
3622
+ <li><a href="#DocumentFormats">Section 7</a>, Sitemap Document Formats, describes the way in which the document formats introduced by the Sitemap protocol are used to convey synchronization related information in all ResourceSync capabilities.</li>
3623
+ <li><a href="#SourceDesc">Section 8</a>, Describing the Source, and <a href="#CapabilityList">Section 9</a>, Advertising Capabilities, describe how a server should convey the ResourceSync capabilities it supports.</li>
3624
+ <li><a href="#DescResources">Section 10</a>, Describing Resources; <a href="#PackResources">Section 11</a>, Packaging Resources; <a href="#DesChanges">Section 12</a>, Describing Changes; <a href="#PackChanges">Section 13</a>, Packaging Changes; and <a href="#LinkRelRes">Section 14</a>, Linking to Related Resources, each provide details about a capability that a server may implement in order to enable remote systems to remain aligned with its evolving data.</li>
3625
+ <li><a href="#TimeAttributeReqs">Appendix A</a>, Time Attribute Requirements, provides an overview of the requirements for use of the <code>at</code> and <code>from</code> attributes in ResourceSync documents.</li>
3626
+ </ul>
3627
+
3628
+ <h4>2016 Revision</h4>
3629
+
3630
+ <p>Revisions to the standard reflect changes to fix problems related to the conflation of last modification date of a resource and the datetime of notification of a change to the resource.</p>
3631
+
3632
+ <h4>Trademarks, Services Marks</h4>
3633
+
3634
+ <p>Wherever used in this standard, all terms that are trademarks or
3635
+ service marks are and remain the property of their respective owners.</p>
3636
+
3637
+ <h4>NISO Voting Members</h4>
3638
+
3639
+ <p>The following were members of the NISO Z39.99-201x ResourceSync voting pool that approved this standard. NISO approval of this standard does not necessarily imply that all Voting Pool members voted for its approval.</p>
3640
+
3641
+ <dl>
3642
+ <dt>[To be added upon approval]</dt>
3643
+ </dl>
3644
+
3645
+ <h4>NISO D2D Topic Committee</h4>
3646
+
3647
+ <p>The following individuals served on the Discovery to Delivery (D2D) Topic Committee at the time it approved this standard:</p>
3648
+
3649
+ <dl>
3650
+ <dt>[To be added upon approval]</dt>
3651
+ </dl>
3652
+
3653
+ <h4>NISO ResourceSync Working Group Members</h4>
3654
+
3655
+ <p>The following individuals served on the NISO ResourceSync Working Group,
3656
+ which developed and approved this standard:</p>
3657
+
3658
+ <dl>
3659
+ <dt>Todd Carpenter, Co-chair</dt>
3660
+ <dd>NISO</dd>
3661
+ <dt>Michael Nelson<sup>*</sup></dt>
3662
+ <dd>Old Dominion University</dd>
3663
+ <dt>Bernhard Haslhofer<sup>*</sup></dt>
3664
+ <dd>Vienna University of Technology</dd>
3665
+ <dt>Shlomo Sanders</dt>
3666
+ <dd>Ex Libris, Inc.</dd>
3667
+ <dt>Richard Jones</dt>
3668
+ <dd>Cottage Labs</dd>
3669
+ <dt>Robert Sanderson<sup>*</sup></dt>
3670
+ <dd>Los Alamos National Laboratory</dd>
3671
+ <dt>Martin Klein<sup>*</sup></dt>
3672
+ <dd>Los Alamos National Laboratory</dd>
3673
+ <dt>Herbert Van de Sompel, Co-chair<sup>*</sup></dt>
3674
+ <dd>Los Alamos National Laboratory</dd>
3675
+ <dt>Graham Klyne<sup>*</sup></dt>
3676
+ <dd>University of Oxford</dd>
3677
+ <dt>Paul Walk</dt>
3678
+ <dd>EDINA</dd>
3679
+ <dt>Carl Lagoze<sup>*</sup></dt>
3680
+ <dd>University of Michigan</dd>
3681
+ <dt>Simeon Warner<sup>*</sup></dt>
3682
+ <dd>Cornell University</dd>
3683
+ <dt>Stuart Lewis</dt>
3684
+ <dd>Jisc Collections</dd>
3685
+ <dt>Zhiwu Xie</dt>
3686
+ <dd>Virginia Tech University Libraries</dd>
3687
+ <dt>Peter Murray</dt>
3688
+ <dd>Lyrasis</dd>
3689
+ <dt>Jeff Young</dt>
3690
+ <dd>OCLC Online Computer Library Center</dd>
3691
+ </dl>
3692
+
3693
+ <p>* responsible for 2016 updates</a>
3694
+
3695
+ <h4><a name="Acknowledgments"></a>Acknowledgements</h4>
3696
+
3697
+ <p>This specification is the collaborative work of
3698
+ <a href="http://niso.org/">NISO</a> and the
3699
+ <a href="http://www.openarchives.org/">Open Archives Initiative</a>.
3700
+ Initial funding for ResourceSync was provided by the
3701
+ <a href="http://www.sloan.org/">Alfred P. Sloan Foundation</a>.
3702
+ UK participation was supported by
3703
+ <a href="http://www.jisc.ac.uk/">Jisc</a>.
3704
+ We also thank numerous individual contributors including: Martin Haye
3705
+ (California Digital Library), David Rosenthal (Stanford University Libraries),
3706
+ Ed Summers (Library of Congress), and Vincent Wehren (Microsoft).</p>
3707
+
3708
+ <div class="Changelog">
3709
+ <h2><a name="Changelog">D. Change Log</a></h2>
3710
+
3711
+ <p>(This appendix is not part of the ResourceSync Framework Specification,
3712
+ NISO Z39.99-YYYY. It is included for information only.)</p>
3713
+
3714
+ <table class="Changelog" summary="Change log">
3715
+ <tbody><tr>
3716
+ <th>Date</th>
3717
+ <th>Editor</th>
3718
+ <th>Description</th>
3719
+ </tr>
3720
+ <tr>
3721
+ <td>2016-08-26</td>
3722
+ <td>martin, herbert, simeon</td>
3723
+ <td>verson 1.0.9, DRAFT REVISION expected to become NISO Z39.99-YYYY</td>
3724
+ </tr>
3725
+ <tr>
3726
+ <td>2014-04-21</td>
3727
+ <td>martin, herbert, simeon</td>
3728
+ <td>verson 1.0, ANSI/NISO Z39.99-2014</td>
3729
+ </tr>
3730
+ <tr>
3731
+ <td>2013-08-05</td>
3732
+ <td>martin, herbert, rob, simeon</td>
3733
+ <td>version 0.9.1</td>
3734
+ </tr>
3735
+ <tr>
3736
+ <td>2013-06-07</td>
3737
+ <td>martin, herbert, rob, simeon</td>
3738
+ <td>version 0.9</td>
3739
+ </tr>
3740
+ <tr>
3741
+ <td>2013-05-01</td>
3742
+ <td>martin, herbert, rob, simeon</td>
3743
+ <td>version 0.6</td>
3744
+ </tr>
3745
+ <tr>
3746
+ <td>2013-02-01</td>
3747
+ <td>martin, herbert, rob, simeon</td>
3748
+ <td>beta spec draft</td>
3749
+ </tr>
3750
+ <tr>
3751
+ <td>2012-08-13</td>
3752
+ <td>martin, herbert, simeon, bernhard</td>
3753
+ <td>first alpha spec draft</td>
3754
+ </tr>
3755
+ </tbody>
3756
+ </table>
3757
+ </div>
3758
+
3759
+ </div>
3760
+ </div>
3761
+
3762
+ <div id="license">
3763
+ <p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="img/cc-by-sa-4.0-88x31.png"/></a><br/>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-Share Alike 4.0 International License</a>.</p>
3764
+ </div>
3765
+ </body>
3766
+ </html>