cocina-models 0.72.0 → 0.73.0
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.
- checksums.yaml +4 -4
- data/description_types.yml +550 -0
- data/lib/cocina/models/access_role.rb +1 -1
- data/lib/cocina/models/validators/description_types_validator.rb +119 -0
- data/lib/cocina/models/validators/validator.rb +6 -1
- data/lib/cocina/models/version.rb +1 -1
- data/openapi.yml +0 -3
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b929b4e87bdb86010e2915c19628cb96dcafd101805e3c2dcee7ce56554d492f
|
|
4
|
+
data.tar.gz: 7aa988aa05b14e1e0521369ae1124acb0e4433195d7cd0011b239d63fa01b97b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a3ab493e7a4f41d48a1d583b695a6689bb5dac3117fd03d343c75ab7407a25df58755899b28a171fcdc3425a6a204582a4f112f31e51d70ef3ac766bd27d4107
|
|
7
|
+
data.tar.gz: 45f9b2c0d9fd7b9e9d542f12d20e90ef0aacf536fa6477f691888e8a60dfcef96efce4a5c62793f8cd7eb7e27c30286360e036413bc975ff5bf316b271adf40f
|
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
# Description type validation
|
|
2
|
+
|
|
3
|
+
access.accessContact:
|
|
4
|
+
- value: email
|
|
5
|
+
description: Email address for a contact person or institution concerning the resource.
|
|
6
|
+
- value: repository
|
|
7
|
+
description: Institution providing access to the resource.
|
|
8
|
+
access.digitalLocation:
|
|
9
|
+
- value: discovery
|
|
10
|
+
description: Online location for the purpose of discovering the resource.
|
|
11
|
+
access.note:
|
|
12
|
+
- value: access restriction
|
|
13
|
+
description: Restrictions on or conditions for gaining access to the resource.
|
|
14
|
+
- value: display label
|
|
15
|
+
description: Display label for the purl.
|
|
16
|
+
- value: license
|
|
17
|
+
description: License describing allowed uses of the resource.
|
|
18
|
+
- value: use and reproduction
|
|
19
|
+
description: Information related to allowed uses of the resource in other contexts.
|
|
20
|
+
access.physicalLocation:
|
|
21
|
+
- value: discovery
|
|
22
|
+
description: Location where a user may find the resource.
|
|
23
|
+
- value: location
|
|
24
|
+
description: Physical location of the resource, or path to the resource on a hard drive or disk.
|
|
25
|
+
- value: repository
|
|
26
|
+
description: The institution holding the resource.
|
|
27
|
+
- value: series
|
|
28
|
+
description: Archival series of the resource.
|
|
29
|
+
status: deprecated
|
|
30
|
+
- value: shelf locator
|
|
31
|
+
description: Identifier or shelfmark indicating the location of the resource.
|
|
32
|
+
adminMetadata.note:
|
|
33
|
+
- value: record information
|
|
34
|
+
description: General information about the metadata record.
|
|
35
|
+
- value: record origin
|
|
36
|
+
description: The source of the record, such as another record transformed to generate the current record.
|
|
37
|
+
contributor:
|
|
38
|
+
- value: conference
|
|
39
|
+
description: An event focusing on a particular topic or discipline.
|
|
40
|
+
- value: event
|
|
41
|
+
description: A time-bound occurrence.
|
|
42
|
+
- value: family
|
|
43
|
+
description: A group of individuals related by blood or personal alliance.
|
|
44
|
+
- value: organization
|
|
45
|
+
description: An institution or other corporate or collective body.
|
|
46
|
+
- value: person
|
|
47
|
+
description: An individual identity.
|
|
48
|
+
- value: unspecified others
|
|
49
|
+
description: Designator for one or more additional contributors not named individually.
|
|
50
|
+
contributor.identifier:
|
|
51
|
+
- value: ORCID
|
|
52
|
+
description: Identifier from orcid.org.
|
|
53
|
+
- value: Wikidata
|
|
54
|
+
description: Identifier from wikidata.org.
|
|
55
|
+
contributor.name:
|
|
56
|
+
- value: alternative
|
|
57
|
+
description: Additional nonpreferred form of name.
|
|
58
|
+
- value: display
|
|
59
|
+
description: Preferred form of the name for display.
|
|
60
|
+
- value: forename
|
|
61
|
+
description: First or given name or names.
|
|
62
|
+
- value: inverted full name
|
|
63
|
+
description: Name given in last name, first name order.
|
|
64
|
+
- value: pseudonym
|
|
65
|
+
description: Name used that differs from legal or primary form of name.
|
|
66
|
+
- value: surname
|
|
67
|
+
description: Last or family name.
|
|
68
|
+
- value: transliteration
|
|
69
|
+
description: Name originally in non-Latin script presented phonetically using Latin characters.
|
|
70
|
+
contributor.name.structuredValue:
|
|
71
|
+
- value: activity dates
|
|
72
|
+
description: The date or dates when someone was producing work.
|
|
73
|
+
- value: forename
|
|
74
|
+
description: First or given name or names.
|
|
75
|
+
- value: life dates
|
|
76
|
+
description: Birth and death dates, or dates when an entity was in existence.
|
|
77
|
+
- value: name
|
|
78
|
+
description: Name provided alongside additional information.
|
|
79
|
+
- value: ordinal
|
|
80
|
+
description: Indicator that the name is one in a series (e.g. Elizabeth I, Martin Luther King, Jr.).
|
|
81
|
+
- value: surname
|
|
82
|
+
description: Last or family name.
|
|
83
|
+
- value: term of address
|
|
84
|
+
description: Title or other signifier associated with name.
|
|
85
|
+
contributor.name.groupedValue:
|
|
86
|
+
- value: alternative
|
|
87
|
+
description: Additional nonpreferred form of name.
|
|
88
|
+
- value: name
|
|
89
|
+
description: Primary form of name within group of values.
|
|
90
|
+
- value: pseudonym
|
|
91
|
+
description: Name used that differs from legal or primary form of name.
|
|
92
|
+
contributor.note:
|
|
93
|
+
- value: affiliation
|
|
94
|
+
description: Institution with which the contributor is associated.
|
|
95
|
+
- value: citation status
|
|
96
|
+
description: Indicator of whether the contributor should be included in the citation.
|
|
97
|
+
- value: description
|
|
98
|
+
description: Biographical information about the contributor.
|
|
99
|
+
event:
|
|
100
|
+
- value: acquisition
|
|
101
|
+
description: The transferral of ownership of a resource to a repository.
|
|
102
|
+
- value: capture
|
|
103
|
+
description: A record of the resource in a fixed form at a specific time.
|
|
104
|
+
- value: collection
|
|
105
|
+
description: The addition of a resource to a set of other resources.
|
|
106
|
+
- value: copyright
|
|
107
|
+
description: The activity by which a resource may be considered subject to copyright law.
|
|
108
|
+
- value: copyright notice
|
|
109
|
+
description: An explicit statement that a resource is under copyright.
|
|
110
|
+
- value: creation
|
|
111
|
+
description: The coming into being of a resource.
|
|
112
|
+
- value: degree conferral
|
|
113
|
+
description: The institutional approval of a thesis or other resource leading to an academic degree.
|
|
114
|
+
- value: development
|
|
115
|
+
description: The creation of a print from a photographic negative or other source medium.
|
|
116
|
+
- value: distribution
|
|
117
|
+
description: The delivery of the resource to an external audience.
|
|
118
|
+
- value: generation
|
|
119
|
+
description: The creation of a resource by an automatic or natural process.
|
|
120
|
+
- value: manufacture
|
|
121
|
+
description: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
|
|
122
|
+
- value: modification
|
|
123
|
+
description: A change to an existing resource.
|
|
124
|
+
- value: performance
|
|
125
|
+
description: The enactment of an artistic or cultural work for an audience, such as a play.
|
|
126
|
+
- value: presentation
|
|
127
|
+
description: The discussion of an academic or intellectual work for an audience, such as a seminar.
|
|
128
|
+
- value: production
|
|
129
|
+
description: The physical assembly of a resource not considered published, such as page proofs for a book.
|
|
130
|
+
- value: publication
|
|
131
|
+
description: The publishing or issuing of a resource.
|
|
132
|
+
- value: recording
|
|
133
|
+
description: The initial fixation to a medium of live audio and/or visual activity.
|
|
134
|
+
- value: release
|
|
135
|
+
description: Making a resource available to a broader audience.
|
|
136
|
+
- value: submission
|
|
137
|
+
description: The provision of a resource for review or evaluation.
|
|
138
|
+
- value: validity
|
|
139
|
+
description: When a resource takes effect, such as a revised train schedule.
|
|
140
|
+
- value: withdrawal
|
|
141
|
+
description: The removal of previous access to a resource, often due to its obsolescence.
|
|
142
|
+
event.date:
|
|
143
|
+
- value: acquisition
|
|
144
|
+
description: The transferral of ownership of a resource to a repository.
|
|
145
|
+
- value: capture
|
|
146
|
+
description: A record of the resource in a fixed form at a specific time.
|
|
147
|
+
- value: collection
|
|
148
|
+
description: The addition of a resource to a set of other resources.
|
|
149
|
+
- value: copyright
|
|
150
|
+
description: The activity by which a resource may be considered subject to copyright law.
|
|
151
|
+
- value: creation
|
|
152
|
+
description: The coming into being of a resource.
|
|
153
|
+
- value: degree conferral
|
|
154
|
+
description: The institutional approval of a thesis or other resource leading to an academic degree.
|
|
155
|
+
- value: developed
|
|
156
|
+
description: The creation of a print from a photographic negative or other source medium.
|
|
157
|
+
status: deprecated
|
|
158
|
+
use: development
|
|
159
|
+
- value: development
|
|
160
|
+
description: The creation of a print from a photographic negative or other source medium.
|
|
161
|
+
- value: distribution
|
|
162
|
+
description: The delivery of the resource to an external audience.
|
|
163
|
+
- value: generation
|
|
164
|
+
description: The creation of a resource by an automatic or natural process.
|
|
165
|
+
- value: manufacture
|
|
166
|
+
description: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
|
|
167
|
+
- value: modification
|
|
168
|
+
description: A change to an existing resource.
|
|
169
|
+
- value: performance
|
|
170
|
+
description: The enactment of an artistic or cultural work for an audience, such as a play.
|
|
171
|
+
- value: presentation
|
|
172
|
+
description: The discussion of an academic or intellectual work for an audience, such as a seminar.
|
|
173
|
+
- value: production
|
|
174
|
+
description: The physical assembly of a resource not considered published, such as page proofs for a book.
|
|
175
|
+
- value: publication
|
|
176
|
+
description: The publishing or issuing of a resource.
|
|
177
|
+
- value: recording
|
|
178
|
+
description: The initial fixation to a medium of live audio and/or visual activity.
|
|
179
|
+
- value: release
|
|
180
|
+
description: Making a resource available to a broader audience.
|
|
181
|
+
- value: submission
|
|
182
|
+
description: The provision of a resource for review or evaluation.
|
|
183
|
+
- value: validity
|
|
184
|
+
description: When a resource takes effect, such as a revised train schedule.
|
|
185
|
+
- value: withdrawal
|
|
186
|
+
description: The removal of previous access to a resource, often due to its obsolescence.
|
|
187
|
+
event.date.structuredValue:
|
|
188
|
+
- value: start
|
|
189
|
+
description: The start date in a range.
|
|
190
|
+
- value: end
|
|
191
|
+
description: The end date in a range.
|
|
192
|
+
event.note:
|
|
193
|
+
- value: copyright statement
|
|
194
|
+
description: A formal declaration of copyright on a resource.
|
|
195
|
+
- value: edition
|
|
196
|
+
- value: frequency
|
|
197
|
+
description: How often a resource is issued, such as monthly.
|
|
198
|
+
- value: issuance
|
|
199
|
+
description: How the resource is issued, such as serially.
|
|
200
|
+
form:
|
|
201
|
+
- value: carrier
|
|
202
|
+
- value: data format
|
|
203
|
+
- value: digital original
|
|
204
|
+
- value: extent
|
|
205
|
+
- value: form
|
|
206
|
+
- value: genre
|
|
207
|
+
- value: map projection
|
|
208
|
+
- value: map scale
|
|
209
|
+
- value: material
|
|
210
|
+
- value: media
|
|
211
|
+
- value: media type
|
|
212
|
+
- value: reformatting quality
|
|
213
|
+
- value: resource type
|
|
214
|
+
- value: technique
|
|
215
|
+
- value: type
|
|
216
|
+
form.note:
|
|
217
|
+
- value: additions
|
|
218
|
+
- value: arrangement
|
|
219
|
+
- value: binding
|
|
220
|
+
- value: codicology
|
|
221
|
+
- value: collation
|
|
222
|
+
- value: colophon
|
|
223
|
+
- value: condition
|
|
224
|
+
- value: decoNote
|
|
225
|
+
status: deprecated
|
|
226
|
+
use: decoration
|
|
227
|
+
- value: decoration
|
|
228
|
+
- value: dimensions
|
|
229
|
+
- value: explicit
|
|
230
|
+
- value: foliation
|
|
231
|
+
- value: genre type
|
|
232
|
+
- value: hand note
|
|
233
|
+
- value: handNote
|
|
234
|
+
status: deprecated
|
|
235
|
+
use: hand note
|
|
236
|
+
- value: incipit
|
|
237
|
+
- value: instrumentation
|
|
238
|
+
- value: layout
|
|
239
|
+
- value: material
|
|
240
|
+
- value: medium of performance
|
|
241
|
+
- value: provenance
|
|
242
|
+
- value: reassembly
|
|
243
|
+
- value: reproduction
|
|
244
|
+
- value: research
|
|
245
|
+
- value: rubric
|
|
246
|
+
- value: secfol
|
|
247
|
+
status: deprecated
|
|
248
|
+
use: second folio
|
|
249
|
+
- value: second folio
|
|
250
|
+
- value: secondFolio
|
|
251
|
+
status: deprecated
|
|
252
|
+
use: second folio
|
|
253
|
+
- value: unit
|
|
254
|
+
- value: writing
|
|
255
|
+
form.structuredValue:
|
|
256
|
+
- value: type
|
|
257
|
+
- value: subtype
|
|
258
|
+
geographic.form:
|
|
259
|
+
- value: data format
|
|
260
|
+
- value: media type
|
|
261
|
+
- value: type
|
|
262
|
+
geographic.subject:
|
|
263
|
+
- value: bounding box coordinates
|
|
264
|
+
- value: coverage
|
|
265
|
+
- value: point coordinates
|
|
266
|
+
geographic.subject.structuredValue:
|
|
267
|
+
- value: east
|
|
268
|
+
- value: latitude
|
|
269
|
+
- value: longitude
|
|
270
|
+
- value: north
|
|
271
|
+
- value: south
|
|
272
|
+
- value: west
|
|
273
|
+
identifier:
|
|
274
|
+
- value: accession number
|
|
275
|
+
- value: alternate case number
|
|
276
|
+
- value: Apis ID
|
|
277
|
+
code: apis
|
|
278
|
+
- value: ARK
|
|
279
|
+
code: ark
|
|
280
|
+
- value: arXiv
|
|
281
|
+
code: arxiv
|
|
282
|
+
- value: case identifier
|
|
283
|
+
- value: case number
|
|
284
|
+
- value: document number
|
|
285
|
+
- value: DOI
|
|
286
|
+
code: doi
|
|
287
|
+
- value: druid
|
|
288
|
+
- value: GTIN-14 ID
|
|
289
|
+
code: gtin-14
|
|
290
|
+
- value: Handle
|
|
291
|
+
code: hdl
|
|
292
|
+
- value: inventory number
|
|
293
|
+
- value: ISBN
|
|
294
|
+
code: isbn
|
|
295
|
+
- value: ISMN
|
|
296
|
+
code: ismn
|
|
297
|
+
- value: ISRC
|
|
298
|
+
code: isrc
|
|
299
|
+
- value: ISSN
|
|
300
|
+
code: issn
|
|
301
|
+
- value: ISSN-L
|
|
302
|
+
code: issn-l
|
|
303
|
+
- value: issue number
|
|
304
|
+
code: issue-number
|
|
305
|
+
- value: LCCN
|
|
306
|
+
code: lccn
|
|
307
|
+
- value: local
|
|
308
|
+
code: local
|
|
309
|
+
- value: Local ID
|
|
310
|
+
- value: matrix number
|
|
311
|
+
code: matrix-number
|
|
312
|
+
- value: music plate
|
|
313
|
+
code: music-plate
|
|
314
|
+
- value: music publisher
|
|
315
|
+
code: music-publisher
|
|
316
|
+
- value: OCLC
|
|
317
|
+
- value: PMCID
|
|
318
|
+
- value: PMID
|
|
319
|
+
- value: record id
|
|
320
|
+
- value: Senate Number
|
|
321
|
+
- value: Series
|
|
322
|
+
- value: SIRSI
|
|
323
|
+
- value: Source ID
|
|
324
|
+
- value: sourceID
|
|
325
|
+
status: deprecated
|
|
326
|
+
use: Source ID
|
|
327
|
+
- value: stock number
|
|
328
|
+
code: stock-number
|
|
329
|
+
- value: Swets (Netherlands) ID
|
|
330
|
+
code: swets
|
|
331
|
+
- value: UPC
|
|
332
|
+
code: upc
|
|
333
|
+
- value: URI
|
|
334
|
+
code: uri
|
|
335
|
+
- value: URN
|
|
336
|
+
code: urn
|
|
337
|
+
- value: videorecording identifier
|
|
338
|
+
code: videorecording-identifier
|
|
339
|
+
- value: West Mat \#
|
|
340
|
+
- value: Wikidata
|
|
341
|
+
code: wikidata
|
|
342
|
+
note:
|
|
343
|
+
- value: abstract
|
|
344
|
+
- value: access
|
|
345
|
+
- value: access note
|
|
346
|
+
status: deprecated
|
|
347
|
+
use: access
|
|
348
|
+
- value: acquisition
|
|
349
|
+
- value: action
|
|
350
|
+
- value: additional physical form
|
|
351
|
+
- value: additions
|
|
352
|
+
- value: admin
|
|
353
|
+
- value: affiliation
|
|
354
|
+
- value: bibliographic
|
|
355
|
+
- value: bibliography
|
|
356
|
+
- value: biographical/historical
|
|
357
|
+
- value: biographical/historical note
|
|
358
|
+
status: deprecated
|
|
359
|
+
use: biographical/historical
|
|
360
|
+
- value: biography
|
|
361
|
+
- value: boat note
|
|
362
|
+
- value: citation/reference
|
|
363
|
+
- value: contact
|
|
364
|
+
- value: content
|
|
365
|
+
- value: content note
|
|
366
|
+
status: deprecated
|
|
367
|
+
use: content
|
|
368
|
+
- value: content warning
|
|
369
|
+
- value: contents
|
|
370
|
+
status: deprecated
|
|
371
|
+
use: content
|
|
372
|
+
- value: copyright
|
|
373
|
+
- value: creation/production credits
|
|
374
|
+
- value: date
|
|
375
|
+
- value: date/sequential designation
|
|
376
|
+
- value: description
|
|
377
|
+
- value: digitization
|
|
378
|
+
- value: duration
|
|
379
|
+
- value: event
|
|
380
|
+
- value: exhibitions
|
|
381
|
+
- value: funding
|
|
382
|
+
- value: general
|
|
383
|
+
- value: genre type
|
|
384
|
+
- value: geography
|
|
385
|
+
- value: host
|
|
386
|
+
- value: language
|
|
387
|
+
- value: local
|
|
388
|
+
- value: location
|
|
389
|
+
- value: medium of performance
|
|
390
|
+
- value: names
|
|
391
|
+
- value: numbering
|
|
392
|
+
- value: original location
|
|
393
|
+
- value: other relation type
|
|
394
|
+
- value: ownership
|
|
395
|
+
- value: part
|
|
396
|
+
- value: performer
|
|
397
|
+
- value: performers
|
|
398
|
+
- value: preferred citation
|
|
399
|
+
- value: provenance
|
|
400
|
+
- value: publications
|
|
401
|
+
- value: qualifications
|
|
402
|
+
- value: quote
|
|
403
|
+
- value: reassembly
|
|
404
|
+
- value: reference
|
|
405
|
+
- value: references
|
|
406
|
+
- value: related publication
|
|
407
|
+
- value: reproduction
|
|
408
|
+
- value: research
|
|
409
|
+
- value: restriction
|
|
410
|
+
- value: scope and content
|
|
411
|
+
- value: source characteristics
|
|
412
|
+
- value: source identifier
|
|
413
|
+
- value: statement of responsibility
|
|
414
|
+
- value: summary
|
|
415
|
+
- value: system details
|
|
416
|
+
- value: system requirements
|
|
417
|
+
- value: table of contents
|
|
418
|
+
- value: target audience
|
|
419
|
+
- value: technical note
|
|
420
|
+
- value: thesis
|
|
421
|
+
- value: transcript
|
|
422
|
+
- value: translation
|
|
423
|
+
- value: update
|
|
424
|
+
- value: use and reproduction
|
|
425
|
+
- value: venue
|
|
426
|
+
- value: version
|
|
427
|
+
- value: version identification
|
|
428
|
+
- value: writing
|
|
429
|
+
note.groupedValue:
|
|
430
|
+
- value: caption
|
|
431
|
+
- value: date
|
|
432
|
+
- value: detail type
|
|
433
|
+
- value: extent unit
|
|
434
|
+
- value: list
|
|
435
|
+
- value: marker
|
|
436
|
+
- value: number
|
|
437
|
+
- value: title
|
|
438
|
+
- value: text
|
|
439
|
+
relatedResource:
|
|
440
|
+
- value: has original version
|
|
441
|
+
description: An initial form of the resource.
|
|
442
|
+
- value: has other format
|
|
443
|
+
description: A version of the resource in a different physical or digital format.
|
|
444
|
+
- value: has part
|
|
445
|
+
description: A constituent unit of the resource.
|
|
446
|
+
- value: has version
|
|
447
|
+
description: A version of the resource with different intellectual content.
|
|
448
|
+
- value: in series
|
|
449
|
+
description: The name of a series of publications to which the resource belongs.
|
|
450
|
+
- value: other relation type
|
|
451
|
+
description: Resource type not otherwise described.
|
|
452
|
+
- value: part of
|
|
453
|
+
description: A larger resource to which the resource belongs, such as a collection.
|
|
454
|
+
- value: preceded by
|
|
455
|
+
description: A predecessor to the resource, such as a preceding journal title.
|
|
456
|
+
- value: referenced by
|
|
457
|
+
description: Other resources that cite the resource, such as a catalog.
|
|
458
|
+
- value: references
|
|
459
|
+
description: A resource which the resource references or cites.
|
|
460
|
+
- value: related to
|
|
461
|
+
description: A generically related resource.
|
|
462
|
+
- value: reviewed by
|
|
463
|
+
description: A review of the resource.
|
|
464
|
+
- value: succeeded by
|
|
465
|
+
description: A successor to the resource, such as a subsequent journal title.
|
|
466
|
+
subject:
|
|
467
|
+
- value: classification
|
|
468
|
+
- value: conference
|
|
469
|
+
- value: display
|
|
470
|
+
- value: event
|
|
471
|
+
- value: family
|
|
472
|
+
- value: genre
|
|
473
|
+
- value: map coordinates
|
|
474
|
+
- value: name
|
|
475
|
+
- value: occupation
|
|
476
|
+
- value: organization
|
|
477
|
+
- value: person
|
|
478
|
+
- value: place
|
|
479
|
+
- value: point coordinates
|
|
480
|
+
- value: time
|
|
481
|
+
- value: title
|
|
482
|
+
- value: topic
|
|
483
|
+
subject.note:
|
|
484
|
+
- value: role
|
|
485
|
+
subject.structuredValue:
|
|
486
|
+
- value: activity dates
|
|
487
|
+
- value: city
|
|
488
|
+
- value: continent
|
|
489
|
+
- value: country
|
|
490
|
+
- value: end
|
|
491
|
+
- value: east
|
|
492
|
+
- value: display
|
|
493
|
+
- value: forename
|
|
494
|
+
- value: genre
|
|
495
|
+
- value: latitude
|
|
496
|
+
- value: life dates
|
|
497
|
+
- value: longitude
|
|
498
|
+
- value: main title
|
|
499
|
+
- value: name
|
|
500
|
+
- value: north
|
|
501
|
+
- value: occupation
|
|
502
|
+
- value: ordinal
|
|
503
|
+
- value: part name
|
|
504
|
+
- value: person
|
|
505
|
+
- value: place
|
|
506
|
+
- value: south
|
|
507
|
+
- value: start
|
|
508
|
+
- value: surname
|
|
509
|
+
- value: term of address
|
|
510
|
+
- value: time
|
|
511
|
+
- value: title
|
|
512
|
+
- value: topic
|
|
513
|
+
- value: west
|
|
514
|
+
subject.structuredValue.note:
|
|
515
|
+
- value: role
|
|
516
|
+
description: The relation of the subject entity to the resource.
|
|
517
|
+
subject.groupedValue:
|
|
518
|
+
- value: uniform
|
|
519
|
+
description: Form of title in Library of Congress title authority.
|
|
520
|
+
title:
|
|
521
|
+
- value: abbreviated
|
|
522
|
+
description: Abbreviated form of title for indexing or identification.
|
|
523
|
+
- value: alternative
|
|
524
|
+
description: Variant title.
|
|
525
|
+
- value: parallel
|
|
526
|
+
description: Title transcribed from the resource in multiple languages or scripts.
|
|
527
|
+
- value: supplied
|
|
528
|
+
description: Title provided by metadata creator rather than transcribed from the resource.
|
|
529
|
+
- value: translated
|
|
530
|
+
description: Title translated into another language.
|
|
531
|
+
- value: transliterated
|
|
532
|
+
description: Title transliterated from non-Latin script to Latin script.
|
|
533
|
+
- value: uniform
|
|
534
|
+
description: Form of title in Library of Congress title authority.
|
|
535
|
+
title.note:
|
|
536
|
+
- value: associated name
|
|
537
|
+
description: A name linked to the title, such as for a name-title heading.
|
|
538
|
+
- value: nonsorting character count
|
|
539
|
+
description: The number of characters at the beginning of the string to be disregarded when sorting.
|
|
540
|
+
title.structuredValue:
|
|
541
|
+
- value: main title
|
|
542
|
+
description: The primary part of a multipart title.
|
|
543
|
+
- value: nonsorting characters
|
|
544
|
+
description: A string at the beginning of the title to be disregarded when sorting.
|
|
545
|
+
- value: part name
|
|
546
|
+
description: The distinct name of a resource as part of a series or multivolume set.
|
|
547
|
+
- value: part number
|
|
548
|
+
description: The distinct number of a resource as part of a series or multivolume set.
|
|
549
|
+
- value: subtitle
|
|
550
|
+
description: The secondary part of a title.
|
|
@@ -4,7 +4,7 @@ module Cocina
|
|
|
4
4
|
module Models
|
|
5
5
|
class AccessRole < Struct
|
|
6
6
|
# Name of role
|
|
7
|
-
attribute :name, Types::Strict::String.enum('dor-apo-
|
|
7
|
+
attribute :name, Types::Strict::String.enum('dor-apo-depositor', 'dor-apo-manager', 'dor-apo-viewer', 'sdr-administrator', 'sdr-viewer', 'hydrus-collection-creator', 'hydrus-collection-manager', 'hydrus-collection-depositor', 'hydrus-collection-item-depositor', 'hydrus-collection-reviewer', 'hydrus-collection-viewer')
|
|
8
8
|
attribute :members, Types::Strict::Array.of(AccessRoleMember).default([].freeze)
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cocina
|
|
4
|
+
module Models
|
|
5
|
+
module Validators
|
|
6
|
+
# Validates types for description against description_types.yml.
|
|
7
|
+
class DescriptionTypesValidator
|
|
8
|
+
def self.validate(clazz, attributes)
|
|
9
|
+
new(clazz, attributes).validate
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def initialize(clazz, attributes)
|
|
13
|
+
@clazz = clazz
|
|
14
|
+
@attributes = attributes
|
|
15
|
+
@error_paths = []
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def validate
|
|
19
|
+
return unless meets_preconditions?
|
|
20
|
+
|
|
21
|
+
validate_obj(attributes, [])
|
|
22
|
+
|
|
23
|
+
return if error_paths.empty?
|
|
24
|
+
|
|
25
|
+
raise ValidationError, "Unrecognized types in description: #{error_paths.join(', ')}"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
attr_reader :clazz, :attributes, :error_paths
|
|
31
|
+
|
|
32
|
+
def meets_preconditions?
|
|
33
|
+
attributes.key?(:description) || [Cocina::Models::Description,
|
|
34
|
+
Cocina::Models::RequestDescription].include?(clazz)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def validate_hash(hash, path)
|
|
38
|
+
hash.each do |key, obj|
|
|
39
|
+
if key == :type
|
|
40
|
+
validate_type(obj, path)
|
|
41
|
+
else
|
|
42
|
+
validate_obj(obj, path + [key])
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def validate_array(array, path)
|
|
48
|
+
array.each_with_index do |obj, index|
|
|
49
|
+
validate_obj(obj, path + [index])
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def validate_obj(obj, path)
|
|
54
|
+
validate_hash(obj, path) if obj.is_a?(Hash)
|
|
55
|
+
validate_array(obj, path) if obj.is_a?(Array)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def validate_type(type, path)
|
|
59
|
+
valid_types.each do |type_signature, types|
|
|
60
|
+
next unless match?(path, type_signature)
|
|
61
|
+
break if types.include?(type.downcase)
|
|
62
|
+
|
|
63
|
+
error_paths << path_to_s(path)
|
|
64
|
+
break
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def match?(path, type_signature)
|
|
69
|
+
clean_path(path).last(type_signature.length) == type_signature
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Some part of the path are ignored for the purpose of matching.
|
|
73
|
+
def clean_path(path)
|
|
74
|
+
new_path = path.reject do |part|
|
|
75
|
+
part.is_a?(Integer) || part == :parallelValue
|
|
76
|
+
end
|
|
77
|
+
# This needs to happen after parallelValue is removed
|
|
78
|
+
# to handle structuredValue > parallelValue > structuredValue
|
|
79
|
+
new_path.reject.with_index do |part, index|
|
|
80
|
+
part == :structuredValue && new_path[index - 1] == :structuredValue
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# rubocop:disable Style/ClassVars
|
|
85
|
+
def valid_types
|
|
86
|
+
# Class var to minimize loading from disk.
|
|
87
|
+
@@valid_types ||= begin
|
|
88
|
+
types = types_yaml.map do |type_signature_str, type_objs|
|
|
89
|
+
type_signature = type_signature_str.split('.').map(&:to_sym)
|
|
90
|
+
types = type_objs.map { |type_obj| type_obj['value'].downcase }
|
|
91
|
+
[type_signature, types]
|
|
92
|
+
end
|
|
93
|
+
# Sorting so that longer signatures match first.
|
|
94
|
+
types.sort { |a, b| b.first.length <=> a.first.length }
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
# rubocop:enable Style/ClassVars
|
|
98
|
+
|
|
99
|
+
def types_yaml
|
|
100
|
+
YAML.load_file(::File.expand_path('../../../../description_types.yml', __dir__))
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def path_to_s(path)
|
|
104
|
+
# This matches the format used by descriptive spreadsheets
|
|
105
|
+
path_str = ''
|
|
106
|
+
path.each_with_index do |part, index|
|
|
107
|
+
if part.is_a?(Integer)
|
|
108
|
+
path_str += (part + 1).to_s
|
|
109
|
+
else
|
|
110
|
+
path_str += '.' if index.positive?
|
|
111
|
+
path_str += part.to_s
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
path_str
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -5,7 +5,12 @@ module Cocina
|
|
|
5
5
|
module Validators
|
|
6
6
|
# Perform validation against all other Validators
|
|
7
7
|
class Validator
|
|
8
|
-
VALIDATORS = [
|
|
8
|
+
VALIDATORS = [
|
|
9
|
+
OpenApiValidator,
|
|
10
|
+
DarkValidator,
|
|
11
|
+
CatalogLinksValidator,
|
|
12
|
+
DescriptionTypesValidator
|
|
13
|
+
].freeze
|
|
9
14
|
|
|
10
15
|
def self.validate(clazz, attributes)
|
|
11
16
|
VALIDATORS.each { |validator| validator.validate(clazz, attributes) }
|
data/openapi.yml
CHANGED
|
@@ -161,11 +161,8 @@ components:
|
|
|
161
161
|
description: Name of role
|
|
162
162
|
type: string
|
|
163
163
|
enum:
|
|
164
|
-
- 'dor-apo-creator'
|
|
165
164
|
- 'dor-apo-depositor'
|
|
166
165
|
- 'dor-apo-manager'
|
|
167
|
-
- 'dor-apo-metadata'
|
|
168
|
-
- 'dor-apo-reviewer'
|
|
169
166
|
- 'dor-apo-viewer'
|
|
170
167
|
- 'sdr-administrator'
|
|
171
168
|
- 'sdr-viewer'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocina-models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.73.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Coyne
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-04-
|
|
11
|
+
date: 2022-04-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -274,6 +274,7 @@ files:
|
|
|
274
274
|
- bin/console
|
|
275
275
|
- bin/setup
|
|
276
276
|
- cocina-models.gemspec
|
|
277
|
+
- description_types.yml
|
|
277
278
|
- docs/cocina-base.jsonld
|
|
278
279
|
- docs/index.html
|
|
279
280
|
- docs/maps/Agent.json
|
|
@@ -386,6 +387,7 @@ files:
|
|
|
386
387
|
- lib/cocina/models/validatable.rb
|
|
387
388
|
- lib/cocina/models/validators/catalog_links_validator.rb
|
|
388
389
|
- lib/cocina/models/validators/dark_validator.rb
|
|
390
|
+
- lib/cocina/models/validators/description_types_validator.rb
|
|
389
391
|
- lib/cocina/models/validators/open_api_validator.rb
|
|
390
392
|
- lib/cocina/models/validators/validator.rb
|
|
391
393
|
- lib/cocina/models/version.rb
|
|
@@ -398,7 +400,7 @@ homepage: https://github.com/sul-dlss/cocina-models
|
|
|
398
400
|
licenses: []
|
|
399
401
|
metadata:
|
|
400
402
|
rubygems_mfa_required: 'true'
|
|
401
|
-
post_install_message:
|
|
403
|
+
post_install_message:
|
|
402
404
|
rdoc_options: []
|
|
403
405
|
require_paths:
|
|
404
406
|
- lib
|
|
@@ -413,8 +415,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
413
415
|
- !ruby/object:Gem::Version
|
|
414
416
|
version: '0'
|
|
415
417
|
requirements: []
|
|
416
|
-
rubygems_version: 3.
|
|
417
|
-
signing_key:
|
|
418
|
+
rubygems_version: 3.3.9
|
|
419
|
+
signing_key:
|
|
418
420
|
specification_version: 4
|
|
419
421
|
summary: Data models for the SDR
|
|
420
422
|
test_files: []
|