resync 0.4.4 → 0.4.5

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