-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathindex.html
More file actions
1598 lines (1469 loc) · 93 KB
/
index.html
File metadata and controls
1598 lines (1469 loc) · 93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en" dir="ltr" typeof="bibo:Document " about="" property="dcterms:language" content="en">
<head>
<title>Research Object Bundle</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<style>/* --- EXAMPLES --- */
div.example-title {
min-width: 7.5em;
color: #b9ab2d;
}
div.example-title span {
text-transform: uppercase;
}
aside.example, div.example, div.illegal-example {
padding: 0.5em;
margin: 1em 0;
position: relative;
clear: both;
}
div.illegal-example { color: red }
div.illegal-example p { color: black }
aside.example, div.example {
padding: .5em;
border-left-width: .5em;
border-left-style: solid;
border-color: #e0cb52;
background: #fcfaee;
}
aside.example div.example {
border-left-width: .1em;
border-color: #999;
background: #fff;
}
aside.example div.example div.example-title {
color: #999;
}
</style><style>/* --- Best Practices --- */
div.practice {
border: solid #bebebe 1px;
margin: 2em 1em 1em 2em;
}
span.practicelab {
margin: 1.5em 0.5em 1em 1em;
font-weight: bold;
font-style: italic;
background: #dfffff;
position: relative;
padding: 0 0.5em;
top: -1.5em;
}
p.practicedesc {
margin: 1.5em 0.5em 1em 1em;
}
@media screen {
p.practicedesc {
position: relative;
top: -2em;
padding: 0;
margin: 1.5em 0.5em -1em 1em;
}
}
</style><link rel="stylesheet" href="researchobject.css" type="text/css">
<link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/w3c-unofficial" type="text/css">
<style>/*****************************************************************
* ReSpec 3 CSS
* Robin Berjon - http://berjon.com/
*****************************************************************/
/* --- INLINES --- */
em.rfc2119 {
text-transform: lowercase;
font-variant: small-caps;
font-style: normal;
color: #900;
}
h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
border: none;
}
dfn {
font-weight: bold;
}
a.internalDFN {
color: inherit;
border-bottom: 1px solid #99c;
text-decoration: none;
}
a.externalDFN {
color: inherit;
border-bottom: 1px dotted #ccc;
text-decoration: none;
}
a.bibref {
text-decoration: none;
}
cite .bibref {
font-style: normal;
}
code {
color: #C83500;
}
/* --- TOC --- */
.toc a, .tof a {
text-decoration: none;
}
a .secno, a .figno {
color: #000;
}
ul.tof, ol.tof {
list-style: none outside none;
}
.caption {
margin-top: 0.5em;
font-style: italic;
}
/* --- TABLE --- */
table.simple {
border-spacing: 0;
border-collapse: collapse;
border-bottom: 3px solid #005a9c;
}
.simple th {
background: #005a9c;
color: #fff;
padding: 3px 5px;
text-align: left;
}
.simple th[scope="row"] {
background: inherit;
color: inherit;
border-top: 1px solid #ddd;
}
.simple td {
padding: 3px 10px;
border-top: 1px solid #ddd;
}
.simple tr:nth-child(even) {
background: #f0f6ff;
}
/* --- DL --- */
.section dd > p:first-child {
margin-top: 0;
}
.section dd > p:last-child {
margin-bottom: 0;
}
.section dd {
margin-bottom: 1em;
}
.section dl.attrs dd, .section dl.eldef dd {
margin-bottom: 0;
}
@media print {
.removeOnSave {
display: none;
}
}
</style><link href="https://www.w3.org/StyleSheets/TR/w3c-unofficial" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
<body id="respecDocument" role="document" class="researchobject h-entry"><div id="respecHeader" role="contentinfo" class="head">
<p>
</p>
<h1 class="title p-name" id="title" property="dcterms:title">Research Object Bundle 1.0</h1>
<h2 id="unofficial-draft-05-november-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-11-05T09:44:45.000Z">researchobject.org Specification <time class="dt-published" datetime="2014-11-05">05 November 2014</time></h2>
<dl>
<dt>This version:</dt>
<dd><a href="https://w3id.org/bundle/2014-11-05/">https://w3id.org/bundle/2014-11-05/</a></dd>
<dt>Previous version:</dt>
<dd><a href="http://purl.org/wf4ever/ro-bundle/2013-05-21/">http://purl.org/wf4ever/ro-bundle/2013-05-21/</a></dd>
<dt>Latest editor's draft:</dt>
<dd><a href="https://w3id.org/bundle/draft/">https://w3id.org/bundle/draft/</a></dd>
<dt>Latest Recommendation:</dt>
<dd><a href="https://w3id.org/bundle/">https://w3id.org/bundle/</a></dd>
<dt>Editors:</dt>
<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Stian Soiland-Reyes" href="http://orcid.org/0000-0001-9842-9718">Stian Soiland-Reyes</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.cs.manchester.ac.uk/">University of Manchester</a></span>
</dd>
<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Matthew Gamble" href="http://orcid.org/0000-0003-4913-1485">Matthew Gamble</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.cs.manchester.ac.uk/">University of Manchester</a></span>
</dd>
<dt>Authors:</dt>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Stian Soiland-Reyes" href="http://orcid.org/0000-0001-9842-9718">Stian Soiland-Reyes</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.cs.manchester.ac.uk/">University of Manchester</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Matthew Gamble" href="http://orcid.org/0000-0003-4913-1485">Matthew Gamble</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.cs.manchester.ac.uk/">University of Manchester</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Robert Haines" href="http://orcid.org/0000-0002-9538-7919">Robert Haines</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.cs.manchester.ac.uk/">University of Manchester</a></span>
</dd>
</dl>
<p>
<a href="http://dx.doi.org/10.5281/zenodo.12586"><img src="https://zenodo.org/badge/doi/10.5281/zenodo.12586.png" alt="10.5281/zenodo.12586"></a></dd>
</p>
<p class="copyright">
This document is licensed under a
<a class="subfoot" href="http://creativecommons.org/licenses/by/3.0/" rel="license">Creative Commons
Attribution 3.0 License</a>.
</p>
<hr>
</div>
<div class="logo"><img src="../logo/researchobject.png" alt="researchobject.org" height="100"></div>
<div class="status"><div><span>researchobject.org Specification</span></div></div>
<section rel="bibo:Chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading">Abstract</h2>
<p>
This specification defines a file format for storage and
distribution of Research Objects as a ZIP archive; called a
<strong>Research Object Bundle</strong> (<abbr title="Research Object">RO</abbr> Bundle). <abbr title="Research Object">RO</abbr> Bundles
allow capturing a Research Object to a single file or
byte-stream by including its manifest, annotations and some or
all of its aggregated resources for the purposes of exporting,
archiving, publishing and transferring research objects. </p>
</section><section rel="bibo:Chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading">Status of This Document</h2>
<p>
This document is a specification published by
<a href="http://www.researchobject.org/">researchobject.org</a> and
and does not represent the support or consensus of any standards organisation.
</p>
Questions, feedback and comments are
kindly requested, either as <a href="https://github.com/ResearchObject/specifications/issues">GitHub issues</a>, or as <a href="https://github.com/ResearchObject/specifications/pulls">pull requests</a> of the
<a href="https://github.com/ResearchObject/specifications/tree/gh-pages/bundle/draft">current draft</a>.
<p>
This document uses the terms [<cite><a href="#bib-URI" class="bibref">URI</a></cite>] and [<cite><a href="#bib-IRI" class="bibref">IRI</a></cite>] interchangably. As long as
the implementing technology supports it, all uses of URIs can be interchanged
with IRIs (e.g. URIs containing unescaped Unicode characters).
</p>
</section><section id="toc"><h2 id="h2_toc" role="heading" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#container"><span class="secno">2. </span>Container</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#ucf"><span class="secno">2.1 </span>Universal Container Format (UCF)</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rootfile"><span class="secno">2.1.1 </span>Rootfile</a></li></ul></li><li class="tocline"><a class="tocxref" href="#ro-bundle-container"><span class="secno">2.2 </span><abbr title="Research Object">RO</abbr> bundle container</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#media-types"><span class="secno">2.2.1 </span>Resource media type</a></li><li class="tocline"><a class="tocxref" href="#manifest-xml"><span class="secno">2.2.2 </span>META-INF/manifest.xml</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#manifest"><span class="secno">3. </span>Manifest</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#manifest-json"><span class="secno">3.1 </span>.ro/manifest.json</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#json-structure"><span class="secno">3.1.1 </span>JSON structure</a></li><li class="tocline"><a class="tocxref" href="#provenance"><span class="secno">3.1.2 </span>Provenance information</a></li><li class="tocline"><a class="tocxref" href="#manifest-example"><span class="secno">3.1.3 </span>Example manifest.json</a></li></ul></li><li class="tocline"><a class="tocxref" href="#json-ld"><span class="secno">3.2 </span>JSON-LD and mapping to <abbr title="Research Object">RO</abbr> model</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#triples"><span class="secno">3.2.1 </span>Example manifest as triples</a></li></ul></li><li class="tocline"><a class="tocxref" href="#custom-json-ld"><span class="secno">3.3 </span>Custom JSON-LD</a></li><li class="tocline"><a class="tocxref" href="#alternative-manifests"><span class="secno">3.4 </span>Alternative manifest representations</a></li></ul></li><li class="tocline"><a class="tocxref" href="#identifiers"><span class="secno">4. </span>Identifiers</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#escaping"><span class="secno">4.1 </span>Escaping URIs</a></li><li class="tocline"><a class="tocxref" href="#absolute-uris"><span class="secno">4.2 </span>Absolute URIs for bundle resources</a></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">5. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#changes"><span class="secno">A. </span>Changes</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">B. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
<section id="introduction" class="informative">
<!--OddPage--><h2 id="h2_introduction" role="heading"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
<p>
The <a href="http://purl.org/wf4ever/model">Wf4Ever Research
Object model</a> [<cite><a href="#bib-RO" class="bibref">RO</a></cite>]
defines a model for aggregating the resources that contribute to a
scientific work, including domain-specific annotations and
provenance traces. The unit that collects these resources is called
a <em>Research Object</em> (<abbr title="Research Object">RO</abbr>)
and is described in an RDF-based manifest
according to the Research Object OWL
ontologies. The <abbr title="Research Object">RO</abbr> model has been formed in particular for
the purpose of preservation of scientific workflows, but is
applicable also in a
general sense for capturing digital resources that are related to
eachother, and which together form a trackable whole.
The <a href="https://w3id.org/ro/primer/">Research Object primer</a> [<cite><a href="#bib-ROPrimer" class="bibref">ROPrimer</a></cite>] provides
further details and examples of using the <abbr title="Research Object">RO</abbr> model.
</p>
<p>
The <a href="http://purl.org/wf4ever/model">specification for the <abbr title="Research Object">RO</abbr>
model</a> does not mandate any particular form for the representation
of Research Objects. The Wf4Ever <a href="http://www.wf4ever-project.org/wiki/display/docs/RO+API+6"><abbr title="Research Object">RO</abbr>
API</a> [<cite><a href="#bib-ROAPI" class="bibref">ROAPI</a></cite>] defines how
research objects
can be accessed and maintained on the web through a RESTful web
service exposing RDF/XML and Turtle representations. Practical
use of the <abbr title="Research Object">RO</abbr> model has however shown that it is also benefitial
to represent a research object as a single
ZIP archive or as file system folders for the purposes of
downloading, editing and archiving a research object.
</p><p>
For instance a scientific workflow system can export a workflow
run by saving the workflow definition, runtime provenance trace and
generated results to a set of files. A research object that
represents the workflow run can aggregate and relate these
resources. However, at the time of running the workflow (e.g. on a
desktop computer) it is often not known where or if the user would
choose to publish the <abbr title="Research Object">RO</abbr>; thus the direct use of a web service
or minting public URIs is problematic in this situation.
</p><p>
A <strong>Research Object Bundle</strong>, as specified by this
document, provides a way to collect the resources that are aggregated in a
research object, represented as files in a ZIP archive, in addition to their
metadata and annotations. The ZIP archive thus becomes a single representation
of a research object and which can be exported, archived, published and
transferred like a regular file or resource.
</p>
</section>
<section id="container">
<!--OddPage--><h2 id="h2_container" role="heading"><span class="secno">2. </span>Container</h2>
<p>
A Research Object Bundle is a structured [<cite><a href="#bib-ZIP" class="bibref">ZIP</a></cite>] archive, specializing
the <a href="https://learn.adobe.com/wiki/display/PDFNAV/UCF+overview">Adobe Universal Container Format</a> [<cite><a href="#bib-UCF" class="bibref">UCF</a></cite>]. UCF is
based on the EPUB [<cite><a href="#bib-OCF" class="bibref">OCF</a></cite>] format, but generalized to be any kind of
container. The following section gives an informal introduction to the
UCF format. For the complete, normative details, see the [<cite><a href="#bib-UCF" class="bibref">UCF</a></cite>] specification.
</p>
<section rel="bibo:Chapter" resource="#ucf" typeof="bibo:Chapter" id="ucf" class="informative">
<h3 id="h3_ucf" role="heading"><span class="secno">2.1 </span>Universal Container Format (UCF)</h3><p><em>This section is non-normative.</em></p>
<p>
A UCF container is based on the ZIP compression file format [<cite><a href="#bib-ZIP" class="bibref">ZIP</a></cite>], enforcing <a href="https://learn.adobe.com/wiki/display/PDFNAV/Zip+container">additional restrictions</a>. The most important restrictions are:
</p><ul>
<li>Reserved filenames in the root directory:
<code>mimetype</code> and <code>META-INF</code></li>
<li>Filenames must be encoded in UTF-8</li>
<li>Compression must be Uncompressed or Flate</li>
<li><em title="MAY" class="rfc2119">MAY</em> use Zip64 extensions, but <em title="SHOULD" class="rfc2119">SHOULD</em> only do so when required</li>
<li>The first file <em title="MUST" class="rfc2119">MUST</em> be the uncompressed <code>mimetype</code> and without any extra attributes</li>
</ul>
<p>UCF says about <code>mimetype</code>:
</p>
<blockquote cite="https://learn.adobe.com/wiki/display/PDFNAV/Zip+container">
The first file in the Zip container <em title="MUST" class="rfc2119">MUST</em> be a file with the ASCII
name of <code>mimetype</code>, which holds the MIME type for the Zip
container (<del>application/epub+zip</del> as an ASCII string; no
padding, white-space, or case change).
</blockquote>
<p>
The actual media type to include in <code>mimetype</code> depends
on the specific container type (the above quote uses ePub as
an example).
See <a href="#ro-bundle-container" class="sectionRef sec-ref">section <span class="secno">2.2</span> <span class="sec-title">RO bundle container</span></a>.
</p>
<div class="practice">
<p><span class="practicelab" id="mimetype-zip">Best Practice 1: Use zip -0 -X</span></p>
<p class="practicedesc">
To add the <code>mimetype</code> file correctly on a UNIX/Linux
installation with <a href="http://www.infonn-zip.org/">InfoZip</a>, use
<code>echo -n</code> and <code>zip -0 -X</code>. Below is an example which adds
<code>mimetype</code> correctly as the first, uncompressed file, then the remaining files (excluding <code>mimetype</code>) with the default compression: </p>
</div>
<div class="example"><div class="example-title"><span>Example 1</span></div><pre class="example">stain@ahtissuntu:~/test$ echo -n application/vnd.wf4ever.robundle+zip > mimetype
stain@ahtissuntu:~/test$ zip -0 -X ../example.robundle mimetype
adding: mimetype (stored 0%)
stain@ahtissuntu:~/test$ zip -X -r ../example.robundle . -x mimetype
adding: META-INF/ (stored 0%)
adding: META-INF/container.xml (stored 0%)
adding: .ro/ (stored 0%)
adding: .ro/manifest.json (stored 0%)
adding: helloworld.txt (stored 0%)</pre></div>
<section rel="bibo:Chapter" resource="#rootfile" typeof="bibo:Chapter" id="rootfile">
<h4 id="h4_rootfile" role="heading"><span class="secno">2.1.1 </span>Rootfile</h4>
<p>
A <em>root file</em> is the entry-point for a UCF container,
playing a similar role to <code>index.html</code> on web servers.
</p>
<p>UCF says about <a href="https://learn.adobe.com/wiki/display/PDFNAV/UCF+container+contents#UCFcontainercontents-ContainerMETA-INFcontainerxmlOptional"><code>META-INF/container.xml</code></a>
and rootfiles:
</p>
<blockquote cite="https://learn.adobe.com/wiki/display/PDFNAV/UCF+container+contents#UCFcontainercontents-ContainerMETA-INFcontainerxmlOptional">
A UCF Container <em title="MAY" class="rfc2119">MAY</em> include a file named
<code>container.xml</code> in the <code>META-INF</code>
directory at the root level of the container file system. If
present, the <code>container.xml</code> file <em title="MAY" class="rfc2119">MAY</em> identify
the MIME type of, and path to, the root file for the
container and any <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> alternative renditions included
in the container.
</blockquote>
<p>
An example of <code>META-INF/container.xml</code> which
defines the <em>rootfile</em> as <code>.ro/manifest.json</code>:
</p>
<div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><?xml version="1.0"?>
<container version="1.0"
xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path=".ro/manifest.json" media-type="application/ld+json" />
</rootfiles>
</container></pre></div>
</section>
</section>
<section id="ro-bundle-container">
<h3 id="h3_ro-bundle-container" role="heading"><span class="secno">2.2 </span><abbr title="Research Object">RO</abbr> bundle container</h3>
The <abbr title="Research Object">RO</abbr> Bundle container is a specialization of a [<cite><a href="#bib-UCF" class="bibref">UCF</a></cite>] container, with
the following additions:
<ul>
<li>Additional reserved filename in the root directory:
<code>.ro</code> <em title="MUST" class="rfc2119">MUST</em> be present and <em title="MUST" class="rfc2119">MUST</em> be a
directory.</li>
<li>The <code>mimetype</code> <em title="SHOULD" class="rfc2119">SHOULD</em> be
<code>application/vnd.wf4ever.robundle+zip</code> (see
below)</li>
<li>The <code>META-INF/container.xml</code>, if present,
<em title="SHOULD" class="rfc2119">SHOULD</em> contain a rootfile entry equivalent to:<br>
<code><rootfile full-path=".ro/manifest.json"
media-type="application/ld+json" /></code><br>
If the
container file is missing, the above rootfile entry <em title="SHOULD" class="rfc2119">SHOULD</em> be
assumed. </li>
<li>The file <code>.ro/manifest.json</code> <em title="MUST" class="rfc2119">MUST</em> be
present, and <em title="MUST" class="rfc2119">MUST</em> describe the <abbr title="Research Object">RO</abbr> according to <a href="#manifest" class="sectionRef sec-ref">section <span class="secno">3.</span> <span class="sec-title">Manifest</span></a>.
</li>
</ul>
<p>
Applications who specialize <abbr title="Research Object">RO</abbr> Bundles <em title="MAY" class="rfc2119">MAY</em> specify a different
<code>mimetype</code>, for instance because the
bundle is used to distribute application-specific data. It is
<em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em> for such extensions that their media type end
with <a href="http://tools.ietf.org/html/rfc6839#section-3.6">+zip</a>
according to [<cite><a href="#bib-RFC6839" class="bibref">RFC6839</a></cite>] unless it is not considered
meaningful for a user to treat such bundles
as a general ZIP archive.
</p>
<section rel="bibo:Chapter" resource="#media-types" typeof="bibo:Chapter" id="media-types">
<h4 id="h4_media-types" role="heading"><span class="secno">2.2.1 </span>Resource media type</h4>
<p>
If an application requires a media-type for a resource, for
instance because it is exposing the <abbr title="Research Object">RO</abbr> bundle over HTTP,
it <em title="SHOULD" class="rfc2119">SHOULD</em> resolve the media type of the resource according to
this section.
</p>
<p>
In order of preference:
</p><ol>
<li>
A resource which is a <a href="#rootfile">root file</a> is
assumed to have the media type given by the
<code>mimetype</code> of the corresponding
(or implied)
<code><rootfile></code> entry.
</li>
<li>
If a resource is an external reference (e.g. referenced
with an absolute <code>http://</code> URI), then its media
type is given by the HTTP <code>Content-Type</code>,
which may involve <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html">content
negotiation</a>.
</li>
<li>If the resource is a aggregated in the
<a href="#manifest">manifest</a>, applications <em title="SHOULD" class="rfc2119">SHOULD</em> use
the <code>mediatype</code> (<code>dc:format</code>
in RDF manifests), if present.
</li>
<li>
Failing the above, the media type of a resource <em title="MAY" class="rfc2119">MAY</em> be resolved according to the following table
by case-insensitive matching of its extension (suffix):
<table>
<tbody><tr><th>Extension</th> <th>Media type</th></tr>
<tr>
<td><code>.txt</code></td>
<td><code>text/plain; charset="utf-8"</code></td>
</tr><tr>
<td><code>.ttl</code></td>
<td><code>text/turtle; charset="utf-8"</code></td>
</tr><tr>
<td><code>.rdf</code></td>
<td><code>application/rdf+xml</code></td>
</tr><tr>
<td><code>.json</code></td>
<td><code>application/json</code></td>
</tr><tr>
<td><code>.jsonld</code></td>
<td><code>application/ld+json</code></td>
</tr><tr>
<td><code>.xml</code></td>
<td><code>application/xml</code></td>
</tr>
</tbody></table>
</li>
<li>
In the absence of a resolved media type, the media type
<code>application/octet-stream</code> <em title="MAY" class="rfc2119">MAY</em> be assumed.
</li>
</ol>
</section>
<section rel="bibo:Chapter" resource="#manifest-xml" typeof="bibo:Chapter" id="manifest-xml">
<h4 id="h4_manifest-xml" role="heading"><span class="secno">2.2.2 </span>META-INF/manifest.xml</h4>
<p>
To avoid confusion with the somewhat overlapping
<a href="#manifest"><abbr title="Research Object">RO</abbr> manifest</a> it is <em title="NOT RECOMMENDED" class="rfc2119">NOT RECOMMENDED</em> to include the
<a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html#__RefHeading__752807_826425813">ODF
manifest</a> (<code>META-INF/manifest.xml</code>) in
<abbr title="Research Object">RO</abbr> Bundles or to use the [<cite><a href="#bib-ODF" class="bibref">ODF</a></cite>] manifest for resolving media types.
</p>
</section>
<p>
</p>
</section>
</section>
<section rel="bibo:Chapter" resource="#manifest" typeof="bibo:Chapter" id="manifest">
<!--OddPage--><h2 id="h2_manifest" role="heading"><span class="secno">3. </span>Manifest</h2>
<p>
The research object <em title="MUST" class="rfc2119">MUST</em> be described
in the file <code>.ro/manifest.json</code> as specified
below. <a href="#alternative-manifests">Alternative manifests</a> <em title="MAY" class="rfc2119">MAY</em>
also be present.
</p><section rel="bibo:Chapter" resource="#manifest-json" typeof="bibo:Chapter" id="manifest-json">
<h3 id="h3_manifest-json" role="heading"><span class="secno">3.1 </span>.ro/manifest.json</h3>
<p>
The file <code>.ro/manifest.json</code>, <em title="MUST" class="rfc2119">MUST</em> contain
the [<cite><a href="#bib-ORE" class="bibref">ORE</a></cite>] manifest for the research object according to this section.
The file <em title="MUST" class="rfc2119">MUST</em> be in <a href="http://json.org/">JSON format</a>
[<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>], and <em title="SHOULD" class="rfc2119">SHOULD</em> be valid [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>].
</p>
<p>
Identifiers used below are either:
</p>
<ol>
<li><em>Meta-resources</em>, path relative to <code>/.ro/</code> directory,
which <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain the <code>:</code> character. For
instance <code>manifest.json</code> or <code>annotations/ann2</code>.
Depending on how meta-resources are used, the ZIP might or might not include
a corresponding entry for the given path.
</li>
<li><em>Bundled resources</em>, the path
<em title="SHOULD" class="rfc2119">SHOULD</em> start with <code>/</code> to indicate the root of the
bundle, for instance <code>/hello.txt</code> or
<code>/folder2/</code>. Folders <em title="SHOULD" class="rfc2119">SHOULD</em> have a path
terminating with <code>/</code>.
The resource identified by the path <em title="SHOULD" class="rfc2119">SHOULD</em> be included as a
corresponding file or directory in the ZIP file.
</li>
<li>
<em>Absolute URIs</em> (contains <code>:</code>), external to the bundle. For instance
<code>http://www.example.com/external</code>
</li>
</ol>
<p>Identifiers with special characters (e.g. space) <em title="MUST" class="rfc2119">MUST</em> be <a href="#escaping">URI escaped</a>,
while international characters (e.g. Unicode) <em title="MAY" class="rfc2119">MAY</em> be escaped or expressed as an [<cite><a href="#bib-IRI" class="bibref">IRI</a></cite>].</p>
<section rel="bibo:Chapter" resource="#json-structure" typeof="bibo:Chapter" id="json-structure">
<h4 id="h4_json-structure" role="heading"><span class="secno">3.1.1 </span>JSON structure</h4>
<p>The structure of the JSON manifest is given by an JSON Object
with the members:
</p>
<dl>
<dt id="manifest-context"><code>@context</code></dt> <dd>JSON-LD context. <em title="SHOULD" class="rfc2119">SHOULD</em> be
present, in which case it <em title="MUST" class="rfc2119">MUST</em> be valid according to the <a href="http://www.w3.org/TR/json-ld/#the-context">JSON-LD
@context keyword</a>. The <abbr title="Research Object">RO</abbr> bundle context <em title="SHOULD" class="rfc2119">SHOULD</em> be a list, and <em title="SHOULD" class="rfc2119">SHOULD</em> include
the value <code>"https://w3id.org/bundle/context"</code>.
This value <em title="SHOULD" class="rfc2119">SHOULD</em> be the last item of the list.</dd>
<dt id="manifest-id"><code>id</code></dt> <dd><abbr title="Research Object">RO</abbr> identifier. <em title="SHOULD" class="rfc2119">SHOULD</em> be present,
in which case it
<em title="SHOULD" class="rfc2119">SHOULD</em> have the fixed value <code>/</code> indicating the
relative top-level folder as the identifier.
(See <a href="#identifiers" class="sectionRef sec-ref">section <span class="secno">4.</span> <span class="sec-title">Identifiers</span></a>.)
If the <abbr title="Research Object">RO</abbr> bundle was downloaded from a web resource, then the URI
it was retrieved from <em title="SHOULD" class="rfc2119">SHOULD</em> be provided
with <a href="#retrievedFrom"><code>retrievedFrom</code></a>.
</dd>
<dt id="manifest-manifest"><code>manifest</code> </dt><dd>ORE manifests describing this <abbr title="Research Object">RO</abbr>,
relative to the <code>.ro/</code> directory. <em title="SHOULD" class="rfc2119">SHOULD</em> be literal
<code>manifest.json</code>,
but <em title="MAY" class="rfc2119">MAY</em> be a list, in which case the list <em title="MUST" class="rfc2119">MUST</em> contain
<code>manifest.json</code></dd>
<dt id="manifest-history"><code>history</code></dt> <dd>Provenance
trace of the life of this <abbr title="Research Object">RO</abbr>, relative to the
<code>.ro/</code> directory. This property <em title="MAY" class="rfc2119">MAY</em> be present, in
which case it <em title="SHOULD" class="rfc2119">SHOULD</em> be <code>evolution.ttl</code>,
indicating that the bundle file <code>/.ro/evolution.ttl</code>
contains the provenance trace.
This value <em title="MAY" class="rfc2119">MAY</em> be an absolute URI. The property <em title="MAY" class="rfc2119">MAY</em> give a list if
several provenance traces are known, in which case the list
<em title="SHOULD" class="rfc2119">SHOULD</em> include <code>evolution.ttl</code>.
<p>
The file
<code>/.ro/evolution.ttl</code>, if present,
<em title="SHOULD" class="rfc2119">SHOULD</em> include a provenance trace
of this research object
according to the <a href="http://purl.org/wf4ever/roevo#">roevo</a> ontology.
</p><p>
The higher level
<a href="#provenance">provenance</a> of the research object
(e.g. it's creator and creation date) <em title="SHOULD" class="rfc2119">SHOULD</em> be provided
as additional members, even if the <code>history</code> member is present.
</p></dd>
<dt id="manifest-aggregates"><code>aggregates</code></dt>
<dd>This property <em title="SHOULD" class="rfc2119">SHOULD</em> be present, in which
case it <em title="MUST" class="rfc2119">MUST</em> be a list of <em>all</em> the resources aggregated by this <abbr title="Research Object">RO</abbr>.
The values in a list <em title="MUST" class="rfc2119">MUST</em> be objects, which <em title="MUST" class="rfc2119">MUST</em> be uniquely identified by
<code>uri</code>. The members are:
<dl>
<dt><code>uri</code></dt>
<dd>A path within the bundle, or an absolute URI.
Bundle paths <em title="SHOULD" class="rfc2119">SHOULD</em> be prefixed with <code>/</code>
unless they are relative to the <code>/.ro/</code>
folder. (See <a href="#prefixes">prefixes</a>.)
Special characters such as space <em title="MUST" class="rfc2119">MUST</em> be <a href="#escaping">URI escaped</a>,
while international characters (e.g. Unicode) <em title="MAY" class="rfc2119">MAY</em> be escaped
or expressed as an [<cite><a href="#bib-IRI" class="bibref">IRI</a></cite>].
</dd>
<dt><code>mediatype</code></dt>
<dd>The <a href="http://www.iana.org/assignments/media-types">IANA
media type</a> of the (typically identified by
<code>file</code>) resource. This <em title="SHOULD" class="rfc2119">SHOULD</em> be specified
for resource identified by a bundle path
unless its media type is correctly identified
according to
<a href="#media-types" class="sectionRef sec-ref">section <span class="secno">2.2.1</span> <span class="sec-title">Resource media type</span></a>.
</dd>
<dt><code>conformsTo</code></dt>
<dd>The URI of a specification, standard, schema, vocabulary or similar that
the resource conforms to. This member <em title="MAY" class="rfc2119">MAY</em> be provided, in which case the
value <em title="SHOULD" class="rfc2119">SHOULD</em> be an absolute URI identifying a versioned,
retrievable specification that the resource conforms to. Example:
<code>http://www.w3.org/TR/SVG11/</code>
</dd>
<dt id="manifest-bundledAs"><code>bundledAs</code>
</dt><dd> An
<a href="http://www.openarchives.org/ore/1.0/datamodel#Proxies">ORE
proxy</a> [<cite><a href="#bib-ORE" class="bibref">ORE</a></cite>],
providing details of how this resource has been bundled. This
object <em title="SHOULD" class="rfc2119">SHOULD</em> be present for aggregated resources aggregated with
an absolute URI, and <em title="MAY" class="rfc2119">MAY</em> be present for other
aggregated resources.
Its members are:
<dl>
<dt><code>uri</code></dt>
<dd>
The identifier for the ORE Proxy as an URI.
This property
<em title="MUST" class="rfc2119">MUST</em> be provided if the <code>bundledAs</code> object exists.
This identifier should be used if
referring to "resource X as aggregated in research object Y"
within annotations and in external documents.
The proxy identifier <em title="SHOULD" class="rfc2119">SHOULD</em> consist of the prefix <code>urn:uuid:</code> and
a lowercased UUID string [<cite><a href="#bib-RFC4122" class="bibref">RFC4122</a></cite>], for example:
<code>urn:uuid:d4f09040-272e-467f-9250-59593bd4ac8f</code>
</dd>
<dt><code>folder</code></dt>
<dd>A folder in the bundle this resource
belongs to.
This member <em title="MUST" class="rfc2119">MUST</em> be present
if <code>filename</code> is given, and
<em title="MAY" class="rfc2119">MAY</em> be present alone.
The path <em title="SHOULD" class="rfc2119">SHOULD</em> be prefixed with
<code>/</code> and <em title="SHOULD" class="rfc2119">SHOULD</em> end with <code>/</code>,
for instance <code>/folder2/</code> or <code>/</code>.
The folder <em title="SHOULD" class="rfc2119">SHOULD</em>
be a directory in the zip archive. </dd>
<dt><code>filename</code></dt>
<dd>The filename the resource
is given within the specified folder. This
member <em title="SHOULD" class="rfc2119">SHOULD</em> be present if <code>folder</code>
is also given.
The filename should not contain the characters
<code>/</code>, <code>:</code> or <code>\</code>, but
<em title="MAY" class="rfc2119">MAY</em> contain spaces and international characters.
</dd>
</dl>
<p>
Additional members detailing the
<a href="#provenance">provenance</a> of the
proxy (i.e. describing who aggregated the resource)
<em title="MAY" class="rfc2119">MAY</em> be included (see below).
Other metadata about a proxy (e.g. comments about
why a resource was included),
if present, <em title="SHOULD" class="rfc2119">SHOULD</em> be added as an annotation (see below)
using the proxy identifier as <code>about</code>.
</p>
</dd>
</dl>
<p>
Additional members detailing the
<a href="#provenance">provenance</a> of every
aggregated resource <em title="SHOULD" class="rfc2119">SHOULD</em> be included (see below).
Other metadata about a resource (e.g. a title or description),
if present, <em title="SHOULD" class="rfc2119">SHOULD</em> be added as an annotation (see below)
using the resource <code>uri</code> as <code>about</code>.
</p>
<p>
The order of the values in the <code>aggregates</code> list is insignificant, however
the list <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain duplicate entries. An entry is considered
duplicate by comparing the <code>uri</code> value
resolved as an <a href="#escaping">unescaped</a> and
<a href="#absolute-uris">absolute IRI</a>.
</p>
</dd>
<dt id="manifest-annotations"><code>annotations</code></dt>
<dd>
Annotations about this research object and its resources.
This member <em title="MAY" class="rfc2119">MAY</em> be present, in which case it member <em title="MUST" class="rfc2119">MUST</em> be a list. An
<a href="http://www.openannotation.org/spec/core/">annotation</a> [<cite><a href="#bib-OA" class="bibref">OA</a></cite>]
provides additional metadata or descriptions which are somewhat
about or related to the research object or some of its
aggregated resources.
<p>
An annotation is specified as an object, which have the
following members:
</p>
<dl>
<dt><code>uri</code></dt>
<dd>
The identifier for this annotation. The identifier <em title="SHOULD" class="rfc2119">SHOULD</em> be
present, and <em title="SHOULD" class="rfc2119">SHOULD</em>
consist of the prefix <code>urn:uuid:</code> and
a lowercased UUID string [<cite><a href="#bib-RFC4122" class="bibref">RFC4122</a></cite>]. For example:
<code>urn:uuid:1a876f9e-4ffe-4c99-a05d-cd9d0cbd4cbb</code>
</dd>
<dt id="annotation-about"><code>about</code></dt>
<dd>The identifier for the annotated resource, <em title="MUST" class="rfc2119">MUST</em> be
present. This is considered the
<a href="http://www.openannotation.org/spec/core/20130208/core.html#BodyTarget">target</a>
of the annotation, the resource the annotation
content is "somewhat about".
The "about" identifier <em title="SHOULD" class="rfc2119">SHOULD</em> be one of these types:
<ul>
<li>The research object itself, which <em title="MUST" class="rfc2119">MUST</em> match the
value of its <code>id</code>, e.g.
<code>"/"</code>.</li>
<li>An aggregated resource, matching its <code>uri</code>
under <code>aggregates</code>. </li>
<li>A proxy for an aggregated resource, which <em title="MUST" class="rfc2119">MUST</em>
match the <code>uri</code> of <code>bundledAs</code>
on an aggregated resource.</li>
<li>Another annotation, which <em title="MUST" class="rfc2119">MUST</em> match
the <code>uri</code> as listed under
<code>annotations</code>.</li>
<li>An absolute URI that is not aggregated by
this research object. If the <code>about</code>
resource is not aggregated, the corresponding <code>content</code>
member <em title="SHOULD" class="rfc2119">SHOULD</em> be an aggregated resource.</li>
<li>A JSON list, containing any of the above. This indicates
that the annotation is about each of the listed
resources, for instance because the annotation content is
describing their relationship.</li>
</ul>
</dd>
<dt id="annotation-content"><code>content</code></dt>
<dd>
The identifier for a resource that contains the
<a href="http://www.openannotation.org/spec/core/20130208/core.html#BodyTarget">body</a>
of the annotation, <em title="SHOULD" class="rfc2119">SHOULD</em> be present. The content identifier <em title="SHOULD" class="rfc2119">SHOULD</em> be one of these
types:
<ul>
<li>A (non-aggregated) meta-resource (typically an RDF
graph), starting with <code>annotations/</code>, which
<em title="MUST" class="rfc2119">MUST</em> exist in the <code>/.ro/annotations/</code>
directory.</li>
<li>An aggregated resource, matching its <code>uri</code>
under <code>aggregates</code>.</li>
<li>An absolute URI, which may or may not be aggregated by the <abbr title="Research Object">RO</abbr>.
If the content is not aggregated, the corresponding <code>about</code>
<em title="MUST NOT" class="rfc2119">MUST NOT</em> be an absolute URI that is not aggregated by the
research object.
</li>
</ul>
</dd>
</dl>
<p>
Additional properties describing the annotation using the
<a href="http://www.w3.org/ns/oa#">oa:</a> namespace
<em title="MAY" class="rfc2119">MAY</em> be added
according to <a href="#custom-json-ld" class="sectionRef sec-ref">section <span class="secno">3.3</span> <span class="sec-title">Custom JSON-LD</span></a>.
</p>
<p>
The members <code>about</code> or <code>content</code> <em title="SHOULD" class="rfc2119">SHOULD</em>
identify at least one resource that is otherwise part of the research
object (e.g. the research object itself, an aggregated resource,
a proxy or another annotation). Annotations are considered
implicitly aggregated by a research object, and
<em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em> be listed under <code>aggregates</code>
of the same research object.
</p>
</dd>
<dt><code>@graph</code></dt> <dd>A list of additional [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>]
statements according to
<a href="#custom-json-ld" class="sectionRef sec-ref">section <span class="secno">3.3</span> <span class="sec-title">Custom JSON-LD</span></a>.
</dd>
</dl>
</section>
<section rel="bibo:Chapter" resource="#provenance" typeof="bibo:Chapter" id="provenance">
<h4 id="h4_provenance" role="heading"><span class="secno">3.1.2 </span>Provenance information</h4>
<p>
Provenance information (describing creators, dates and sources)
<em title="SHOULD" class="rfc2119">SHOULD</em> be provided for these JSON objects in the manifest:
</p>
<ul>
<li><a href="#manifest-id">The <abbr title="Research Object">RO</abbr></a> (top-level JSON object)</li>
<li><a href="#manifest-aggregates">Aggregated resources</a> (values under <code>aggregates</code>)</li>
</ul>
<p>
Provenance information <em title="MAY" class="rfc2119">MAY</em> also be provided for these JSON
objects in the manifest:
</p>
<ul>
<li><a href="#manifest-bundledAs">ORE proxies</a> (values under <code>bundledAs</code>)</li>
<li><a href="#manifest-annotations">Annotations</a> (values under <code>annotations</code>)</li>
</ul>
<p>
Provenance information is given by the following members:
</p>
<dl>
<dt id="createdOn"><code>createdOn</code></dt> <dd>The time the
<a href="http://purl.org/pav/html#http://purl.org/pav/createdOn">resource representation was created</a>
(e.g. when it was saved from an application).
<em title="SHOULD" class="rfc2119">SHOULD</em> be present, in which case it <em title="MUST" class="rfc2119">MUST</em> be a
<a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime
formatted</a> timestamp (ISO 8601), and <em title="SHOULD" class="rfc2119">SHOULD</em> include the time zone.
</dd>
<dt id="createdBy"><code>createdBy</code></dt> <dd>The
<a href="http://purl.org/pav/html#http://purl.org/pav/createdBy">creator of the
resource representation</a> (e.g. who saved it from an application). The creator is an
<a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/Overview.html#term-agent">agent</a>,
e.g. a person, organization or software.
This <em title="MAY" class="rfc2119">MAY</em> be different from the agent who conceptually
formed the resource (e.g. wrote the document or chose the aggregated resources),
which <em title="SHOULD" class="rfc2119">SHOULD</em> be indicated with
<code>authoredBy</code>. The creator <em title="SHOULD" class="rfc2119">SHOULD</em> be an object
with the following members:
<dl>
<dt><code>name</code></dt>
<dd>The full <a href="http://xmlns.com/foaf/spec/#term_name">name</a>
of the agent. The name <em title="MUST" class="rfc2119">MUST</em> be present. Examples:
<code>"John Doe"</code> or <code>"University of Manchester"</code></dd>
<dt><code>uri</code></dt>
<dd>A URI identifying the agent. The URI <em title="SHOULD" class="rfc2119">SHOULD</em> be present,
and <em title="SHOULD" class="rfc2119">SHOULD</em> be a
valid <a href="http://www.w3.org/wiki/WebID">WebID</a>,
for instance <code>http://example.com/fred#fred</code>
</dd>
<dt><code>orcid</code></dt>
<dd>An <a href="http://orcid.org/">ORCID</a> identifier
for this agent. For instance,
<code>http://orcid.org/0000-0001-9842-9718</code>. An ORCID
<em title="MAY" class="rfc2119">MAY</em> be present if known, and <em title="MUST" class="rfc2119">MUST</em> be a URI.
</dd>
</dl>
<p>
Additional [<cite><a href="#bib-FOAF" class="bibref">FOAF</a></cite>] properties (such as <code>foaf:homepage</code>) <em title="MAY" class="rfc2119">MAY</em> be added to
according to <a href="#custom-json-ld" class="sectionRef sec-ref">section <span class="secno">3.3</span> <span class="sec-title">Custom JSON-LD</span></a>.
</p></dd>
<dt id="authoredOn"><code>authoredOn</code></dt> <dd>The time the
resource was conceptually formed. The
<a href="http://purl.org/pav/html#http://purl.org/pav/authoredBy">author
time</a>
<em title="SHOULD" class="rfc2119">SHOULD</em> be present if different from
<code>createdOn</code>. The value <em title="MUST" class="rfc2119">MUST</em> be a
<a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime
formatted</a> timestamp (ISO 8601), and <em title="SHOULD" class="rfc2119">SHOULD</em> include the time zone.</dd>
<dt id="authoredBy"><code>authoredBy</code></dt>
<dd>The
<a href="http://purl.org/pav/html#http://purl.org/pav/authoredBy">author of the
resource</a>, i.e.
the agent(s) that conceptually formed its content. Examples include
who authored the text of an aggregated document, or chose the resources
that were aggregated in a research object.
The
author <em title="SHOULD" class="rfc2119">SHOULD</em> be
present if different from <code>createdBy</code>.
<p>
The author <em title="SHOULD" class="rfc2119">SHOULD</em> be a JSON object with the same members and requirements as
for <code>createdBy</code>, but <em title="MAY" class="rfc2119">MAY</em> be a list to indicate
multiple authors.
</p></dd>
<dt id="retrievedFrom"><code>retrievedFrom</code></dt>
<dd>
The absolute URI where a resource has been
<a href="http://purl.org/pav/html#http://purl.org/pav/retrievedFrom">retrieved from</a>.
This property <em title="SHOULD" class="rfc2119">SHOULD</em> be included if a bundle resource was downloaded from an
external source. This property <em title="SHOULD" class="rfc2119">SHOULD</em> be accompanied with
<code>retrievedOn</code>
and <code>retrievedBy</code>.
</dd>
<dt id="retrievedOn"><code>retrievedOn</code></dt>
<dd>The time the resource was
<a href="http://purl.org/pav/html#http://purl.org/pav/retrievedOn">retrieved on</a>.
If this property is present, then <code>retrievedFrom</code> <em title="MUST" class="rfc2119">MUST</em> also be present.
The value <em title="MUST" class="rfc2119">MUST</em> be a <a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime
formatted</a> timestamp (ISO 8601), and <em title="SHOULD" class="rfc2119">SHOULD</em> include the time zone.</dd>
<dt id="retrievedBy"><code>retrievedBy</code></dt>
<dd>The agent that the resource was
<a href="http://purl.org/pav/html#http://purl.org/pav/retrievedBy">retrievedBy</a>,
i.e. the person that downloaded the resource.
If this property is present, then <code>retrievedFrom</code> <em title="MUST" class="rfc2119">MUST</em> also be present.
The agent <em title="SHOULD" class="rfc2119">SHOULD</em> be a JSON object with the same members and requirements as
for <code>createdBy</code>.
</dd>
</dl>
<p>
Additional provenance (curation, contribution, derivation, etc.) <em title="MAY" class="rfc2119">MAY</em> be added using the
<a href="http://purl.org/pav/">pav:</a> namespace
according to <a href="#custom-json-ld" class="sectionRef sec-ref">section <span class="secno">3.3</span> <span class="sec-title">Custom JSON-LD</span></a>
or detailed in a separate <a href="#manifest-history">history</a> provenance trace.
</p>
</section>
<section rel="bibo:Chapter" resource="#manifest-example" typeof="bibo:Chapter" id="manifest-example">
<h4 id="h4_manifest-example" role="heading"><span class="secno">3.1.3 </span>Example manifest.json</h4>
<p>
An example of a manifest which is valid JSON-LD is included below:
</p>
<div class="example"><div class="example-title"><span>Example 3</span></div><pre class="example">{
"@context": [
"https://w3id.org/bundle/context"
],
"id": "/",
"manifest": "manifest.json",
"createdOn": "2013-03-05T17:29:03Z",
"createdBy": {
"uri": "http://example.com/foaf#alice",
"orcid": "http://orcid.org/0000-0002-1825-0097",
"name": "Alice W. Land" },
"history": "evolution.ttl",
"aggregates": [
{ "uri": "/folder/soup.jpeg" },
{ "uri": "http://example.com/blog/" },
{ "uri": "/README.txt",
"mediatype": "text/plain",
"createdBy": {
"uri": "http://example.com/foaf#bob",
"name": "Bob Builder" },
"createdOn": "2013-02-12T19:37:32.939Z" },
{ "uri": "http://example.com/comments.txt",
"bundledAs": {
"uri": "urn:uuid:a0cf8616-bee4-4a71-b21e-c60e6499a644",
"folder": "/folder/",
"filename": "external.txt" }
}
],
"annotations": [
{ "uri": "urn:uuid:d67466b4-3aeb-4855-8203-90febe71abdf",
"about": "/folder/soup.jpeg",
"content": "annotations/soup-properties.ttl" },
{ "about": "urn:uuid:a0cf8616-bee4-4a71-b21e-c60e6499a644",
"content": "http://example.com/blog/they-aggregated-our-file" },
{ "about": [ "/", "urn:uuid:d67466b4-3aeb-4855-8203-90febe71abdf" ],
"content": "annotations/a-meta-annotation-in-this-ro.txt" }
]
}</pre></div>
</section>
</section>
<section rel="bibo:Chapter" resource="#json-ld" typeof="bibo:Chapter" id="json-ld">
<h3 id="h3_json-ld" role="heading"><span class="secno">3.2 </span>JSON-LD and mapping to <abbr title="Research Object">RO</abbr> model</h3>
<p>