oarepo-runtime 1.5.66__py3-none-any.whl → 1.5.68__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1410 @@
1
+ import marshmallow as ma
2
+ from marshmallow import fields as ma_fields, Schema
3
+ from marshmallow.validate import OneOf
4
+ from oarepo_runtime.services.schema.marshmallow import DictOnlySchema
5
+ from oarepo_runtime.services.schema.ui import LocalizedEDTFTime
6
+
7
+ from oarepo_runtime.services.schema.marshmallow_to_json_schema import marshmallow_to_json_schema
8
+
9
+ #TODO more testing on other schemas
10
+
11
+ class NRDataCiteMetadataUISchema(Schema):
12
+
13
+ alternateIdentifiers = ma_fields.List(
14
+ ma_fields.Nested(lambda: AlternateIdentifierUISchema())
15
+ )
16
+
17
+ container = ma_fields.Nested(lambda: ContainerUISchema())
18
+
19
+ contributors = ma_fields.List(ma_fields.Nested(lambda: ContributorUISchema()))
20
+
21
+ creators = ma_fields.List(ma_fields.Nested(lambda: CreatorUISchema()))
22
+
23
+ dates = ma_fields.List(ma_fields.Nested(lambda: DateUISchema()))
24
+
25
+ descriptions = ma_fields.List(ma_fields.Nested(lambda: DescriptionUISchema()))
26
+
27
+ doi = ma_fields.String()
28
+
29
+ formats = ma_fields.List(ma_fields.String())
30
+
31
+ fundingReferences = ma_fields.List(
32
+ ma_fields.Nested(lambda: FundingReferenceUISchema())
33
+ )
34
+
35
+ geoLocations = ma_fields.List(ma_fields.Nested(lambda: GeoLocationUISchema()))
36
+
37
+ language = ma_fields.String()
38
+
39
+ publicationYear = ma_fields.String()
40
+
41
+ publisher = ma_fields.Nested(lambda: PublisherUISchema())
42
+
43
+ relatedIdentifiers = ma_fields.List(
44
+ ma_fields.Nested(lambda: RelatedIdentifierUISchema())
45
+ )
46
+
47
+ relatedItems = ma_fields.List(ma_fields.Nested(lambda: RelatedItemUISchema()))
48
+
49
+ resourceType = ma_fields.Nested(lambda: ResourceTypeUISchema())
50
+
51
+ rightsList = ma_fields.List(ma_fields.Nested(lambda: RightsUISchema()))
52
+
53
+ schemaVersion = ma_fields.String()
54
+
55
+ sizes = ma_fields.List(ma_fields.String())
56
+
57
+ subjects = ma_fields.List(ma_fields.Nested(lambda: SubjectUISchema()))
58
+
59
+ titles = ma_fields.List(ma_fields.Nested(lambda: TitleUISchema()))
60
+
61
+ url = ma_fields.String()
62
+
63
+ version = ma_fields.String()
64
+
65
+
66
+ class GeoLocationUISchema(DictOnlySchema):
67
+ class Meta:
68
+ unknown = ma.RAISE
69
+
70
+ geoLocationBox = ma_fields.Nested(lambda: GeoLocationBoxUISchema())
71
+
72
+ geoLocationPlace = ma_fields.String()
73
+
74
+ geoLocationPoint = ma_fields.Nested(lambda: GeoLocationPointUISchema())
75
+
76
+ geoLocationPolygons = ma_fields.List(
77
+ ma_fields.Nested(lambda: GeoLocationPolygonUISchema())
78
+ )
79
+
80
+
81
+ class RelatedItemUISchema(DictOnlySchema):
82
+ class Meta:
83
+ unknown = ma.RAISE
84
+
85
+ contributors = ma_fields.List(ma_fields.Nested(lambda: ContributorUISchema()))
86
+
87
+ creators = ma_fields.List(ma_fields.Nested(lambda: CreatorUISchema()))
88
+
89
+ edition = ma_fields.String()
90
+
91
+ firstPage = ma_fields.String()
92
+
93
+ issue = ma_fields.String()
94
+
95
+ lastPage = ma_fields.String()
96
+
97
+ number = ma_fields.String()
98
+
99
+ numberType = ma_fields.String(
100
+ validate=[OneOf(["Article", "Chapter", "Report", "Other"])]
101
+ )
102
+
103
+ publicationYear = ma_fields.String()
104
+
105
+ publisher = ma_fields.String()
106
+
107
+ relatedItemIdentifier = ma_fields.Nested(
108
+ lambda: RelatedItemIdentifierUISchema(), required=True
109
+ )
110
+
111
+ relatedItemType = ma_fields.String(
112
+ required=True,
113
+ validate=[
114
+ OneOf(
115
+ [
116
+ "Audiovisual",
117
+ "Book",
118
+ "BookChapter",
119
+ "Collection",
120
+ "ComputationalNotebook",
121
+ "ConferencePaper",
122
+ "ConferenceProceeding",
123
+ "DataPaper",
124
+ "Dataset",
125
+ "Dissertation",
126
+ "Event",
127
+ "Image",
128
+ "Instrument",
129
+ "InteractiveResource",
130
+ "Journal",
131
+ "JournalArticle",
132
+ "Model",
133
+ "OutputManagementPlan",
134
+ "PeerReview",
135
+ "PhysicalObject",
136
+ "Preprint",
137
+ "Report",
138
+ "Service",
139
+ "Software",
140
+ "Sound",
141
+ "Standard",
142
+ "StudyRegistration",
143
+ "Text",
144
+ "Workflow",
145
+ "Other",
146
+ ]
147
+ )
148
+ ],
149
+ )
150
+
151
+ relatedMetadataScheme = ma_fields.String()
152
+
153
+ relationType = ma_fields.String(
154
+ required=True,
155
+ validate=[
156
+ OneOf(
157
+ [
158
+ "IsCitedBy",
159
+ "Cites",
160
+ "IsCollectedBy",
161
+ "Collects",
162
+ "IsSupplementTo",
163
+ "IsSupplementedBy",
164
+ "IsContinuedBy",
165
+ "Continues",
166
+ "IsDescribedBy",
167
+ "Describes",
168
+ "HasMetadata",
169
+ "IsMetadataFor",
170
+ "HasVersion",
171
+ "IsVersionOf",
172
+ "IsNewVersionOf",
173
+ "IsPartOf",
174
+ "IsPreviousVersionOf",
175
+ "IsPublishedIn",
176
+ "HasPart",
177
+ "IsReferencedBy",
178
+ "References",
179
+ "IsDocumentedBy",
180
+ "Documents",
181
+ "IsCompiledBy",
182
+ "Compiles",
183
+ "IsVariantFormOf",
184
+ "IsOriginalFormOf",
185
+ "IsIdenticalTo",
186
+ "IsReviewedBy",
187
+ "Reviews",
188
+ "IsDerivedFrom",
189
+ "IsSourceOf",
190
+ "IsRequiredBy",
191
+ "Requires",
192
+ "IsObsoletedBy",
193
+ "Obsoletes",
194
+ ]
195
+ )
196
+ ],
197
+ )
198
+
199
+ resourceTypeGeneral = ma_fields.String(
200
+ validate=[
201
+ OneOf(
202
+ [
203
+ "Audiovisual",
204
+ "Book",
205
+ "BookChapter",
206
+ "Collection",
207
+ "ComputationalNotebook",
208
+ "ConferencePaper",
209
+ "ConferenceProceeding",
210
+ "DataPaper",
211
+ "Dataset",
212
+ "Dissertation",
213
+ "Event",
214
+ "Image",
215
+ "Instrument",
216
+ "InteractiveResource",
217
+ "Journal",
218
+ "JournalArticle",
219
+ "Model",
220
+ "OutputManagementPlan",
221
+ "PeerReview",
222
+ "PhysicalObject",
223
+ "Preprint",
224
+ "Report",
225
+ "Service",
226
+ "Software",
227
+ "Sound",
228
+ "Standard",
229
+ "StudyRegistration",
230
+ "Text",
231
+ "Workflow",
232
+ "Other",
233
+ ]
234
+ )
235
+ ]
236
+ )
237
+
238
+ schemeType = ma_fields.String()
239
+
240
+ schemeURI = ma_fields.String()
241
+
242
+ titles = ma_fields.List(
243
+ ma_fields.Nested(lambda: RelatedItemTitleUISchema()), required=True
244
+ )
245
+
246
+ volume = ma_fields.String()
247
+
248
+
249
+ class ContributorUISchema(DictOnlySchema):
250
+ class Meta:
251
+ unknown = ma.RAISE
252
+
253
+ affiliation = ma_fields.List(ma_fields.Nested(lambda: AffiliationUISchema()))
254
+
255
+ contributorType = ma_fields.String(
256
+ required=True,
257
+ validate=[
258
+ OneOf(
259
+ [
260
+ "ContactPerson",
261
+ "DataCollector",
262
+ "DataCurator",
263
+ "DataManager",
264
+ "Distributor",
265
+ "Editor",
266
+ "HostingInstitution",
267
+ "Producer",
268
+ "ProjectLeader",
269
+ "ProjectManager",
270
+ "ProjectMember",
271
+ "RegistrationAgency",
272
+ "RegistrationAuthority",
273
+ "RelatedPerson",
274
+ "Researcher",
275
+ "ResearchGroup",
276
+ "RightsHolder",
277
+ "Sponsor",
278
+ "Supervisor",
279
+ "WorkPackageLeader",
280
+ "Other",
281
+ ]
282
+ )
283
+ ],
284
+ )
285
+
286
+ familyName = ma_fields.String()
287
+
288
+ givenName = ma_fields.String()
289
+
290
+ lang = ma_fields.String()
291
+
292
+ name = ma_fields.String(required=True)
293
+
294
+ nameIdentifiers = ma_fields.List(ma_fields.Nested(lambda: NameIdentifierUISchema()))
295
+
296
+ nameType = ma_fields.String(validate=[OneOf(["Organizational", "Personal"])])
297
+
298
+
299
+ class CreatorUISchema(DictOnlySchema):
300
+ class Meta:
301
+ unknown = ma.RAISE
302
+
303
+ affiliation = ma_fields.List(ma_fields.Nested(lambda: AffiliationUISchema()))
304
+
305
+ familyName = ma_fields.String()
306
+
307
+ givenName = ma_fields.String()
308
+
309
+ lang = ma_fields.String()
310
+
311
+ name = ma_fields.String(required=True)
312
+
313
+ nameIdentifiers = ma_fields.List(ma_fields.Nested(lambda: NameIdentifierUISchema()))
314
+
315
+ nameType = ma_fields.String(validate=[OneOf(["Organizational", "Personal"])])
316
+
317
+
318
+ class GeoLocationPolygonUISchema(DictOnlySchema):
319
+ class Meta:
320
+ unknown = ma.RAISE
321
+
322
+ inPolygonPoint = ma_fields.Nested(lambda: GeoLocationPointUISchema())
323
+
324
+ polygonPoints = ma_fields.List(
325
+ ma_fields.Nested(lambda: GeoLocationPointUISchema()), required=True
326
+ )
327
+
328
+
329
+ class AffiliationUISchema(DictOnlySchema):
330
+ class Meta:
331
+ unknown = ma.RAISE
332
+
333
+ affiliationIdentifier = ma_fields.String()
334
+
335
+ affiliationIdentifierScheme = ma_fields.String()
336
+
337
+ name = ma_fields.String(required=True)
338
+
339
+ schemeURI = ma_fields.String()
340
+
341
+
342
+ class AlternateIdentifierUISchema(DictOnlySchema):
343
+ class Meta:
344
+ unknown = ma.RAISE
345
+
346
+ alternateIdentifier = ma_fields.String(required=True)
347
+
348
+ alternateIdentifierType = ma_fields.String(required=True)
349
+
350
+
351
+ class ContainerUISchema(DictOnlySchema):
352
+ class Meta:
353
+ unknown = ma.RAISE
354
+
355
+ firstPage = ma_fields.String()
356
+
357
+ title = ma_fields.String()
358
+
359
+ type = ma_fields.String()
360
+
361
+
362
+ class DateUISchema(DictOnlySchema):
363
+ class Meta:
364
+ unknown = ma.RAISE
365
+
366
+ date = LocalizedEDTFTime(required=True)
367
+
368
+ dateInformation = ma_fields.String()
369
+
370
+ dateType = ma_fields.String(
371
+ required=True,
372
+ validate=[
373
+ OneOf(
374
+ [
375
+ "Accepted",
376
+ "Available",
377
+ "Copyrighted",
378
+ "Collected",
379
+ "Created",
380
+ "Issued",
381
+ "Submitted",
382
+ "Updated",
383
+ "Valid",
384
+ "Withdrawn",
385
+ "Other",
386
+ ]
387
+ )
388
+ ],
389
+ )
390
+
391
+
392
+ class DescriptionUISchema(DictOnlySchema):
393
+ class Meta:
394
+ unknown = ma.RAISE
395
+
396
+ description = ma_fields.String(required=True)
397
+
398
+ descriptionType = ma_fields.String(
399
+ required=True,
400
+ validate=[
401
+ OneOf(
402
+ [
403
+ "Abstract",
404
+ "Methods",
405
+ "SeriesInformation",
406
+ "TableOfContents",
407
+ "TechnicalInfo",
408
+ "Other",
409
+ ]
410
+ )
411
+ ],
412
+ )
413
+
414
+ lang = ma_fields.String()
415
+
416
+
417
+ class FundingReferenceUISchema(DictOnlySchema):
418
+ class Meta:
419
+ unknown = ma.RAISE
420
+
421
+ awardNumber = ma_fields.String()
422
+
423
+ awardTitle = ma_fields.String()
424
+
425
+ awardURI = ma_fields.String()
426
+
427
+ funderIdentifier = ma_fields.String()
428
+
429
+ funderIdentifierType = ma_fields.String(
430
+ validate=[OneOf(["ISNI", "GRID", "Crossref Funder ID", "ROR", "Other"])]
431
+ )
432
+
433
+ funderName = ma_fields.String(required=True)
434
+
435
+
436
+ class GeoLocationBoxUISchema(DictOnlySchema):
437
+ class Meta:
438
+ unknown = ma.RAISE
439
+
440
+ eastBoundLongitude = ma_fields.Float(required=True)
441
+
442
+ northBoundLatitude = ma_fields.Float(required=True)
443
+
444
+ southBoundLatitude = ma_fields.Float(required=True)
445
+
446
+ westBoundLongitude = ma_fields.Float(required=True)
447
+
448
+
449
+ class GeoLocationPointUISchema(DictOnlySchema):
450
+ class Meta:
451
+ unknown = ma.RAISE
452
+
453
+ pointLatitude = ma_fields.Float()
454
+
455
+ pointLongitude = ma_fields.Float()
456
+
457
+
458
+ class NameIdentifierUISchema(DictOnlySchema):
459
+ class Meta:
460
+ unknown = ma.RAISE
461
+
462
+ nameIdentifier = ma_fields.String(required=True)
463
+
464
+ nameIdentifierScheme = ma_fields.String(required=True)
465
+
466
+ schemeURI = ma_fields.String()
467
+
468
+
469
+ class PublisherUISchema(DictOnlySchema):
470
+ class Meta:
471
+ unknown = ma.RAISE
472
+
473
+ lang = ma_fields.String()
474
+
475
+ name = ma_fields.String(required=True)
476
+
477
+ publisherIdentifier = ma_fields.String()
478
+
479
+ publisherIdentifierScheme = ma_fields.String()
480
+
481
+ schemeURI = ma_fields.String()
482
+
483
+
484
+ class RelatedIdentifierUISchema(DictOnlySchema):
485
+ class Meta:
486
+ unknown = ma.RAISE
487
+
488
+ relatedIdentifier = ma_fields.String()
489
+
490
+ relatedIdentifierType = ma_fields.String(
491
+ validate=[
492
+ OneOf(
493
+ [
494
+ "ARK",
495
+ "arXiv",
496
+ "bibcode",
497
+ "DOI",
498
+ "EAN13",
499
+ "EISSN",
500
+ "Handle",
501
+ "IGSN",
502
+ "ISBN",
503
+ "ISSN",
504
+ "ISTC",
505
+ "LISSN",
506
+ "LSID",
507
+ "PMID",
508
+ "PURL",
509
+ "UPC",
510
+ "URL",
511
+ "URN",
512
+ "w3id",
513
+ ]
514
+ )
515
+ ]
516
+ )
517
+
518
+ relatedMetadataScheme = ma_fields.String()
519
+
520
+ relationType = ma_fields.String(
521
+ required=True,
522
+ validate=[
523
+ OneOf(
524
+ [
525
+ "IsCitedBy",
526
+ "Cites",
527
+ "IsCollectedBy",
528
+ "Collects",
529
+ "IsSupplementTo",
530
+ "IsSupplementedBy",
531
+ "IsContinuedBy",
532
+ "Continues",
533
+ "IsDescribedBy",
534
+ "Describes",
535
+ "HasMetadata",
536
+ "IsMetadataFor",
537
+ "HasVersion",
538
+ "IsVersionOf",
539
+ "IsNewVersionOf",
540
+ "IsPartOf",
541
+ "IsPreviousVersionOf",
542
+ "IsPublishedIn",
543
+ "HasPart",
544
+ "IsReferencedBy",
545
+ "References",
546
+ "IsDocumentedBy",
547
+ "Documents",
548
+ "IsCompiledBy",
549
+ "Compiles",
550
+ "IsVariantFormOf",
551
+ "IsOriginalFormOf",
552
+ "IsIdenticalTo",
553
+ "IsReviewedBy",
554
+ "Reviews",
555
+ "IsDerivedFrom",
556
+ "IsSourceOf",
557
+ "IsRequiredBy",
558
+ "Requires",
559
+ "IsObsoletedBy",
560
+ "Obsoletes",
561
+ ]
562
+ )
563
+ ],
564
+ )
565
+
566
+ resourceTypeGeneral = ma_fields.String(
567
+ validate=[
568
+ OneOf(
569
+ [
570
+ "Audiovisual",
571
+ "Book",
572
+ "BookChapter",
573
+ "Collection",
574
+ "ComputationalNotebook",
575
+ "ConferencePaper",
576
+ "ConferenceProceeding",
577
+ "DataPaper",
578
+ "Dataset",
579
+ "Dissertation",
580
+ "Event",
581
+ "Image",
582
+ "Instrument",
583
+ "InteractiveResource",
584
+ "Journal",
585
+ "JournalArticle",
586
+ "Model",
587
+ "OutputManagementPlan",
588
+ "PeerReview",
589
+ "PhysicalObject",
590
+ "Preprint",
591
+ "Report",
592
+ "Service",
593
+ "Software",
594
+ "Sound",
595
+ "Standard",
596
+ "StudyRegistration",
597
+ "Text",
598
+ "Workflow",
599
+ "Other",
600
+ ]
601
+ )
602
+ ]
603
+ )
604
+
605
+ schemeType = ma_fields.String()
606
+
607
+ schemeURI = ma_fields.String()
608
+
609
+
610
+ class RelatedItemIdentifierUISchema(DictOnlySchema):
611
+ class Meta:
612
+ unknown = ma.RAISE
613
+
614
+ relatedItemIdentifier = ma_fields.String(required=True)
615
+
616
+ relatedItemIdentifierType = ma_fields.String(
617
+ required=True,
618
+ validate=[
619
+ OneOf(
620
+ [
621
+ "ARK",
622
+ "arXiv",
623
+ "bibcode",
624
+ "DOI",
625
+ "EAN13",
626
+ "EISSN",
627
+ "Handle",
628
+ "IGSN",
629
+ "ISBN",
630
+ "ISSN",
631
+ "ISTC",
632
+ "LISSN",
633
+ "LSID",
634
+ "PMID",
635
+ "PURL",
636
+ "UPC",
637
+ "URL",
638
+ "URN",
639
+ "w3id",
640
+ ]
641
+ )
642
+ ],
643
+ )
644
+
645
+
646
+ class RelatedItemTitleUISchema(DictOnlySchema):
647
+ class Meta:
648
+ unknown = ma.RAISE
649
+
650
+ lang = ma_fields.String()
651
+
652
+ title = ma_fields.String(required=True)
653
+
654
+ titleType = ma_fields.String(
655
+ validate=[OneOf(["AlternativeTitle", "Subtitle", "TranslatedTitle", "Other"])]
656
+ )
657
+
658
+
659
+ class ResourceTypeUISchema(DictOnlySchema):
660
+ class Meta:
661
+ unknown = ma.RAISE
662
+
663
+ resourceType = ma_fields.String()
664
+
665
+ resourceTypeGeneral = ma_fields.String(
666
+ required=True,
667
+ validate=[
668
+ OneOf(
669
+ [
670
+ "Audiovisual",
671
+ "Book",
672
+ "BookChapter",
673
+ "Collection",
674
+ "ComputationalNotebook",
675
+ "ConferencePaper",
676
+ "ConferenceProceeding",
677
+ "DataPaper",
678
+ "Dataset",
679
+ "Dissertation",
680
+ "Event",
681
+ "Image",
682
+ "Instrument",
683
+ "InteractiveResource",
684
+ "Journal",
685
+ "JournalArticle",
686
+ "Model",
687
+ "OutputManagementPlan",
688
+ "PeerReview",
689
+ "PhysicalObject",
690
+ "Preprint",
691
+ "Report",
692
+ "Service",
693
+ "Software",
694
+ "Sound",
695
+ "Standard",
696
+ "StudyRegistration",
697
+ "Text",
698
+ "Workflow",
699
+ "Other",
700
+ ]
701
+ )
702
+ ],
703
+ )
704
+
705
+
706
+ class RightsUISchema(DictOnlySchema):
707
+ class Meta:
708
+ unknown = ma.RAISE
709
+
710
+ lang = ma_fields.String()
711
+
712
+ rights = ma_fields.String()
713
+
714
+ rightsIdentifier = ma_fields.String()
715
+
716
+ rightsIdentifierScheme = ma_fields.String()
717
+
718
+ rightsURI = ma_fields.String()
719
+
720
+ schemeURI = ma_fields.String()
721
+
722
+
723
+ class SubjectUISchema(DictOnlySchema):
724
+ class Meta:
725
+ unknown = ma.RAISE
726
+
727
+ classificationCode = ma_fields.String()
728
+
729
+ lang = ma_fields.String()
730
+
731
+ schemeURI = ma_fields.String()
732
+
733
+ subject = ma_fields.String(required=True)
734
+
735
+ subjectScheme = ma_fields.String()
736
+
737
+ valueURI = ma_fields.String()
738
+
739
+
740
+ class TitleUISchema(DictOnlySchema):
741
+ class Meta:
742
+ unknown = ma.RAISE
743
+
744
+ lang = ma_fields.String()
745
+
746
+ title = ma_fields.String(required=True)
747
+
748
+ titleType = ma_fields.String(
749
+ validate=[OneOf(["AlternativeTitle", "Subtitle", "TranslatedTitle", "Other"])]
750
+ )
751
+
752
+
753
+ def test_NRDataCiteMetadataUISchema():
754
+ schema = NRDataCiteMetadataUISchema()
755
+ converted = marshmallow_to_json_schema(schema)
756
+
757
+ print(converted)
758
+ assert converted == {
759
+ "type": "object",
760
+ "properties": {
761
+ "alternateIdentifiers": {
762
+ "type": "array",
763
+ "items": {
764
+ "type": "object",
765
+ "properties": {
766
+ "alternateIdentifier": {
767
+ "type": "string"
768
+ },
769
+ "alternateIdentifierType": {
770
+ "type": "string"
771
+ }
772
+ }
773
+ }
774
+ },
775
+ "container": {
776
+ "type": "object",
777
+ "properties": {
778
+ "firstPage": {
779
+ "type": "string"
780
+ },
781
+ "title": {
782
+ "type": "string"
783
+ },
784
+ "type": {
785
+ "type": "string"
786
+ }
787
+ }
788
+ },
789
+ "contributors": {
790
+ "type": "array",
791
+ "items": {
792
+ "type": "object",
793
+ "properties": {
794
+ "affiliation": {
795
+ "type": "array",
796
+ "items": {
797
+ "type": "object",
798
+ "properties": {
799
+ "affiliationIdentifier": {
800
+ "type": "string"
801
+ },
802
+ "affiliationIdentifierScheme": {
803
+ "type": "string"
804
+ },
805
+ "name": {
806
+ "type": "string"
807
+ },
808
+ "schemeURI": {
809
+ "type": "string"
810
+ }
811
+ }
812
+ }
813
+ },
814
+ "contributorType": {
815
+ "type": "string"
816
+ },
817
+ "familyName": {
818
+ "type": "string"
819
+ },
820
+ "givenName": {
821
+ "type": "string"
822
+ },
823
+ "lang": {
824
+ "type": "string"
825
+ },
826
+ "name": {
827
+ "type": "string"
828
+ },
829
+ "nameIdentifiers": {
830
+ "type": "array",
831
+ "items": {
832
+ "type": "object",
833
+ "properties": {
834
+ "nameIdentifier": {
835
+ "type": "string"
836
+ },
837
+ "nameIdentifierScheme": {
838
+ "type": "string"
839
+ },
840
+ "schemeURI": {
841
+ "type": "string"
842
+ }
843
+ }
844
+ }
845
+ },
846
+ "nameType": {
847
+ "type": "string"
848
+ }
849
+ }
850
+ }
851
+ },
852
+ "creators": {
853
+ "type": "array",
854
+ "items": {
855
+ "type": "object",
856
+ "properties": {
857
+ "affiliation": {
858
+ "type": "array",
859
+ "items": {
860
+ "type": "object",
861
+ "properties": {
862
+ "affiliationIdentifier": {
863
+ "type": "string"
864
+ },
865
+ "affiliationIdentifierScheme": {
866
+ "type": "string"
867
+ },
868
+ "name": {
869
+ "type": "string"
870
+ },
871
+ "schemeURI": {
872
+ "type": "string"
873
+ }
874
+ }
875
+ }
876
+ },
877
+ "familyName": {
878
+ "type": "string"
879
+ },
880
+ "givenName": {
881
+ "type": "string"
882
+ },
883
+ "lang": {
884
+ "type": "string"
885
+ },
886
+ "name": {
887
+ "type": "string"
888
+ },
889
+ "nameIdentifiers": {
890
+ "type": "array",
891
+ "items": {
892
+ "type": "object",
893
+ "properties": {
894
+ "nameIdentifier": {
895
+ "type": "string"
896
+ },
897
+ "nameIdentifierScheme": {
898
+ "type": "string"
899
+ },
900
+ "schemeURI": {
901
+ "type": "string"
902
+ }
903
+ }
904
+ }
905
+ },
906
+ "nameType": {
907
+ "type": "string"
908
+ }
909
+ }
910
+ }
911
+ },
912
+ "dates": {
913
+ "type": "array",
914
+ "items": {
915
+ "type": "object",
916
+ "properties": {
917
+ "date": {
918
+ "type": "string",
919
+ "format": "date-time"
920
+ },
921
+ "dateInformation": {
922
+ "type": "string"
923
+ },
924
+ "dateType": {
925
+ "type": "string"
926
+ }
927
+ }
928
+ }
929
+ },
930
+ "descriptions": {
931
+ "type": "array",
932
+ "items": {
933
+ "type": "object",
934
+ "properties": {
935
+ "description": {
936
+ "type": "string"
937
+ },
938
+ "descriptionType": {
939
+ "type": "string"
940
+ },
941
+ "lang": {
942
+ "type": "string"
943
+ }
944
+ }
945
+ }
946
+ },
947
+ "doi": {
948
+ "type": "string"
949
+ },
950
+ "formats": {
951
+ "type": "array",
952
+ "items": {
953
+ "type": "string"
954
+ }
955
+ },
956
+ "fundingReferences": {
957
+ "type": "array",
958
+ "items": {
959
+ "type": "object",
960
+ "properties": {
961
+ "awardNumber": {
962
+ "type": "string"
963
+ },
964
+ "awardTitle": {
965
+ "type": "string"
966
+ },
967
+ "awardURI": {
968
+ "type": "string"
969
+ },
970
+ "funderIdentifier": {
971
+ "type": "string"
972
+ },
973
+ "funderIdentifierType": {
974
+ "type": "string"
975
+ },
976
+ "funderName": {
977
+ "type": "string"
978
+ }
979
+ }
980
+ }
981
+ },
982
+ "geoLocations": {
983
+ "type": "array",
984
+ "items": {
985
+ "type": "object",
986
+ "properties": {
987
+ "geoLocationBox": {
988
+ "type": "object",
989
+ "properties": {
990
+ "eastBoundLongitude": {
991
+ "type": "number"
992
+ },
993
+ "northBoundLatitude": {
994
+ "type": "number"
995
+ },
996
+ "southBoundLatitude": {
997
+ "type": "number"
998
+ },
999
+ "westBoundLongitude": {
1000
+ "type": "number"
1001
+ }
1002
+ }
1003
+ },
1004
+ "geoLocationPlace": {
1005
+ "type": "string"
1006
+ },
1007
+ "geoLocationPoint": {
1008
+ "type": "object",
1009
+ "properties": {
1010
+ "pointLatitude": {
1011
+ "type": "number"
1012
+ },
1013
+ "pointLongitude": {
1014
+ "type": "number"
1015
+ }
1016
+ }
1017
+ },
1018
+ "geoLocationPolygons": {
1019
+ "type": "array",
1020
+ "items": {
1021
+ "type": "object",
1022
+ "properties": {
1023
+ "inPolygonPoint": {
1024
+ "type": "object",
1025
+ "properties": {
1026
+ "pointLatitude": {
1027
+ "type": "number"
1028
+ },
1029
+ "pointLongitude": {
1030
+ "type": "number"
1031
+ }
1032
+ }
1033
+ },
1034
+ "polygonPoints": {
1035
+ "type": "array",
1036
+ "items": {
1037
+ "type": "object",
1038
+ "properties": {
1039
+ "pointLatitude": {
1040
+ "type": "number"
1041
+ },
1042
+ "pointLongitude": {
1043
+ "type": "number"
1044
+ }
1045
+ }
1046
+ }
1047
+ }
1048
+ }
1049
+ }
1050
+ }
1051
+ }
1052
+ }
1053
+ },
1054
+ "language": {
1055
+ "type": "string"
1056
+ },
1057
+ "publicationYear": {
1058
+ "type": "string"
1059
+ },
1060
+ "publisher": {
1061
+ "type": "object",
1062
+ "properties": {
1063
+ "lang": {
1064
+ "type": "string"
1065
+ },
1066
+ "name": {
1067
+ "type": "string"
1068
+ },
1069
+ "publisherIdentifier": {
1070
+ "type": "string"
1071
+ },
1072
+ "publisherIdentifierScheme": {
1073
+ "type": "string"
1074
+ },
1075
+ "schemeURI": {
1076
+ "type": "string"
1077
+ }
1078
+ }
1079
+ },
1080
+ "relatedIdentifiers": {
1081
+ "type": "array",
1082
+ "items": {
1083
+ "type": "object",
1084
+ "properties": {
1085
+ "relatedIdentifier": {
1086
+ "type": "string"
1087
+ },
1088
+ "relatedIdentifierType": {
1089
+ "type": "string"
1090
+ },
1091
+ "relatedMetadataScheme": {
1092
+ "type": "string"
1093
+ },
1094
+ "relationType": {
1095
+ "type": "string"
1096
+ },
1097
+ "resourceTypeGeneral": {
1098
+ "type": "string"
1099
+ },
1100
+ "schemeType": {
1101
+ "type": "string"
1102
+ },
1103
+ "schemeURI": {
1104
+ "type": "string"
1105
+ }
1106
+ }
1107
+ }
1108
+ },
1109
+ "relatedItems": {
1110
+ "type": "array",
1111
+ "items": {
1112
+ "type": "object",
1113
+ "properties": {
1114
+ "contributors": {
1115
+ "type": "array",
1116
+ "items": {
1117
+ "type": "object",
1118
+ "properties": {
1119
+ "affiliation": {
1120
+ "type": "array",
1121
+ "items": {
1122
+ "type": "object",
1123
+ "properties": {
1124
+ "affiliationIdentifier": {
1125
+ "type": "string"
1126
+ },
1127
+ "affiliationIdentifierScheme": {
1128
+ "type": "string"
1129
+ },
1130
+ "name": {
1131
+ "type": "string"
1132
+ },
1133
+ "schemeURI": {
1134
+ "type": "string"
1135
+ }
1136
+ }
1137
+ }
1138
+ },
1139
+ "contributorType": {
1140
+ "type": "string"
1141
+ },
1142
+ "familyName": {
1143
+ "type": "string"
1144
+ },
1145
+ "givenName": {
1146
+ "type": "string"
1147
+ },
1148
+ "lang": {
1149
+ "type": "string"
1150
+ },
1151
+ "name": {
1152
+ "type": "string"
1153
+ },
1154
+ "nameIdentifiers": {
1155
+ "type": "array",
1156
+ "items": {
1157
+ "type": "object",
1158
+ "properties": {
1159
+ "nameIdentifier": {
1160
+ "type": "string"
1161
+ },
1162
+ "nameIdentifierScheme": {
1163
+ "type": "string"
1164
+ },
1165
+ "schemeURI": {
1166
+ "type": "string"
1167
+ }
1168
+ }
1169
+ }
1170
+ },
1171
+ "nameType": {
1172
+ "type": "string"
1173
+ }
1174
+ }
1175
+ }
1176
+ },
1177
+ "creators": {
1178
+ "type": "array",
1179
+ "items": {
1180
+ "type": "object",
1181
+ "properties": {
1182
+ "affiliation": {
1183
+ "type": "array",
1184
+ "items": {
1185
+ "type": "object",
1186
+ "properties": {
1187
+ "affiliationIdentifier": {
1188
+ "type": "string"
1189
+ },
1190
+ "affiliationIdentifierScheme": {
1191
+ "type": "string"
1192
+ },
1193
+ "name": {
1194
+ "type": "string"
1195
+ },
1196
+ "schemeURI": {
1197
+ "type": "string"
1198
+ }
1199
+ }
1200
+ }
1201
+ },
1202
+ "familyName": {
1203
+ "type": "string"
1204
+ },
1205
+ "givenName": {
1206
+ "type": "string"
1207
+ },
1208
+ "lang": {
1209
+ "type": "string"
1210
+ },
1211
+ "name": {
1212
+ "type": "string"
1213
+ },
1214
+ "nameIdentifiers": {
1215
+ "type": "array",
1216
+ "items": {
1217
+ "type": "object",
1218
+ "properties": {
1219
+ "nameIdentifier": {
1220
+ "type": "string"
1221
+ },
1222
+ "nameIdentifierScheme": {
1223
+ "type": "string"
1224
+ },
1225
+ "schemeURI": {
1226
+ "type": "string"
1227
+ }
1228
+ }
1229
+ }
1230
+ },
1231
+ "nameType": {
1232
+ "type": "string"
1233
+ }
1234
+ }
1235
+ }
1236
+ },
1237
+ "edition": {
1238
+ "type": "string"
1239
+ },
1240
+ "firstPage": {
1241
+ "type": "string"
1242
+ },
1243
+ "issue": {
1244
+ "type": "string"
1245
+ },
1246
+ "lastPage": {
1247
+ "type": "string"
1248
+ },
1249
+ "number": {
1250
+ "type": "string"
1251
+ },
1252
+ "numberType": {
1253
+ "type": "string"
1254
+ },
1255
+ "publicationYear": {
1256
+ "type": "string"
1257
+ },
1258
+ "publisher": {
1259
+ "type": "string"
1260
+ },
1261
+ "relatedItemIdentifier": {
1262
+ "type": "object",
1263
+ "properties": {
1264
+ "relatedItemIdentifier": {
1265
+ "type": "string"
1266
+ },
1267
+ "relatedItemIdentifierType": {
1268
+ "type": "string"
1269
+ }
1270
+ }
1271
+ },
1272
+ "relatedItemType": {
1273
+ "type": "string"
1274
+ },
1275
+ "relatedMetadataScheme": {
1276
+ "type": "string"
1277
+ },
1278
+ "relationType": {
1279
+ "type": "string"
1280
+ },
1281
+ "resourceTypeGeneral": {
1282
+ "type": "string"
1283
+ },
1284
+ "schemeType": {
1285
+ "type": "string"
1286
+ },
1287
+ "schemeURI": {
1288
+ "type": "string"
1289
+ },
1290
+ "titles": {
1291
+ "type": "array",
1292
+ "items": {
1293
+ "type": "object",
1294
+ "properties": {
1295
+ "lang": {
1296
+ "type": "string"
1297
+ },
1298
+ "title": {
1299
+ "type": "string"
1300
+ },
1301
+ "titleType": {
1302
+ "type": "string"
1303
+ }
1304
+ }
1305
+ }
1306
+ },
1307
+ "volume": {
1308
+ "type": "string"
1309
+ }
1310
+ }
1311
+ }
1312
+ },
1313
+ "resourceType": {
1314
+ "type": "object",
1315
+ "properties": {
1316
+ "resourceType": {
1317
+ "type": "string"
1318
+ },
1319
+ "resourceTypeGeneral": {
1320
+ "type": "string"
1321
+ }
1322
+ }
1323
+ },
1324
+ "rightsList": {
1325
+ "type": "array",
1326
+ "items": {
1327
+ "type": "object",
1328
+ "properties": {
1329
+ "lang": {
1330
+ "type": "string"
1331
+ },
1332
+ "rights": {
1333
+ "type": "string"
1334
+ },
1335
+ "rightsIdentifier": {
1336
+ "type": "string"
1337
+ },
1338
+ "rightsIdentifierScheme": {
1339
+ "type": "string"
1340
+ },
1341
+ "rightsURI": {
1342
+ "type": "string"
1343
+ },
1344
+ "schemeURI": {
1345
+ "type": "string"
1346
+ }
1347
+ }
1348
+ }
1349
+ },
1350
+ "schemaVersion": {
1351
+ "type": "string"
1352
+ },
1353
+ "sizes": {
1354
+ "type": "array",
1355
+ "items": {
1356
+ "type": "string"
1357
+ }
1358
+ },
1359
+ "subjects": {
1360
+ "type": "array",
1361
+ "items": {
1362
+ "type": "object",
1363
+ "properties": {
1364
+ "classificationCode": {
1365
+ "type": "string"
1366
+ },
1367
+ "lang": {
1368
+ "type": "string"
1369
+ },
1370
+ "schemeURI": {
1371
+ "type": "string"
1372
+ },
1373
+ "subject": {
1374
+ "type": "string"
1375
+ },
1376
+ "subjectScheme": {
1377
+ "type": "string"
1378
+ },
1379
+ "valueURI": {
1380
+ "type": "string"
1381
+ }
1382
+ }
1383
+ }
1384
+ },
1385
+ "titles": {
1386
+ "type": "array",
1387
+ "items": {
1388
+ "type": "object",
1389
+ "properties": {
1390
+ "lang": {
1391
+ "type": "string"
1392
+ },
1393
+ "title": {
1394
+ "type": "string"
1395
+ },
1396
+ "titleType": {
1397
+ "type": "string"
1398
+ }
1399
+ }
1400
+ }
1401
+ },
1402
+ "url": {
1403
+ "type": "string"
1404
+ },
1405
+ "version": {
1406
+ "type": "string"
1407
+ }
1408
+ }
1409
+ }
1410
+