cocina-models 0.72.0 → 0.73.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5516cbeff2267e688f6a09b34e4a0c715a1aea91ddae03d10060bed3d364c5a
4
- data.tar.gz: f47bd2a4ca35c95d3566883707d39a2480c0b7e18ee28bc49042aa90b24e104c
3
+ metadata.gz: 9d9daf76e1c730f4d90feb50aef11b7c07311c3de072e3aa3fda2a333bcaa9e3
4
+ data.tar.gz: 4146a2ea5576342e551174c8a7bb6105dab17183891deb51ffdae8078c4e9376
5
5
  SHA512:
6
- metadata.gz: 262cdfa4049c7325751645a578b2129f0f5cc4737198b82bea5728a6d693398bf2ab589dea2ae912de2de09e6abd1e3a581b84828f3ebf85ed64ba4c3a71dc25
7
- data.tar.gz: 977677a8f5de44340117f3d2fb6ba8553e21c3c61c1770b18d44652008de6e26a6ada747de9546e993a0e4231e2263ad531d97491c5467d8aa8e18f2a303f340
6
+ metadata.gz: 67afdadc24eb7b51c372ce92e1acb421adb912049c6e602da6c5e7a0b681e49169e3c1bff00fed9fa819bc2a90a5c924c0a99f3a168e4bf5636be4623f75f389
7
+ data.tar.gz: e6aae26f2c653b75a604fdda11ad6db9b41014e199f0d6cdc6fc6139544fc881a372830553e95250a0b96692854a32b829d3abd6ba54fe809304e6ae8e1d049e
data/README.md CHANGED
@@ -31,6 +31,11 @@ exe/generator generate_schema DRO
31
31
  exe/generator generate_vocab
32
32
  ```
33
33
 
34
+ ### Descriptive documentation
35
+ ```
36
+ exe/generator generate_descriptive_docs
37
+ ```
38
+
34
39
  ## Testing
35
40
 
36
41
  The generator is tested via its output when run against `openapi.yml`, viz., the Cocina model classes. Thus, `generate` should be run after any changes to `openapi.yml`.
@@ -0,0 +1,554 @@
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 origin
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: conference
489
+ - value: continent
490
+ - value: country
491
+ - value: end
492
+ - value: east
493
+ - value: event
494
+ - value: display
495
+ - value: family
496
+ - value: forename
497
+ - value: genre
498
+ - value: latitude
499
+ - value: life dates
500
+ - value: longitude
501
+ - value: main title
502
+ - value: name
503
+ - value: north
504
+ - value: occupation
505
+ - value: ordinal
506
+ - value: organization
507
+ - value: part name
508
+ - value: person
509
+ - value: place
510
+ - value: south
511
+ - value: start
512
+ - value: surname
513
+ - value: term of address
514
+ - value: time
515
+ - value: title
516
+ - value: topic
517
+ - value: west
518
+ subject.structuredValue.note:
519
+ - value: role
520
+ description: The relation of the subject entity to the resource.
521
+ subject.groupedValue:
522
+ - value: uniform
523
+ description: Form of title in Library of Congress title authority.
524
+ title:
525
+ - value: abbreviated
526
+ description: Abbreviated form of title for indexing or identification.
527
+ - value: alternative
528
+ description: Variant title.
529
+ - value: parallel
530
+ description: Title transcribed from the resource in multiple languages or scripts.
531
+ - value: supplied
532
+ description: Title provided by metadata creator rather than transcribed from the resource.
533
+ - value: translated
534
+ description: Title translated into another language.
535
+ - value: transliterated
536
+ description: Title transliterated from non-Latin script to Latin script.
537
+ - value: uniform
538
+ description: Form of title in Library of Congress title authority.
539
+ title.note:
540
+ - value: associated name
541
+ description: A name linked to the title, such as for a name-title heading.
542
+ - value: nonsorting character count
543
+ description: The number of characters at the beginning of the string to be disregarded when sorting.
544
+ title.structuredValue:
545
+ - value: main title
546
+ description: The primary part of a multipart title.
547
+ - value: nonsorting characters
548
+ description: A string at the beginning of the title to be disregarded when sorting.
549
+ - value: part name
550
+ description: The distinct name of a resource as part of a series or multivolume set.
551
+ - value: part number
552
+ description: The distinct number of a resource as part of a series or multivolume set.
553
+ - value: subtitle
554
+ description: The secondary part of a title.
data/docs/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-tactile
@@ -0,0 +1,456 @@
1
+ # Description types
2
+
3
+ ## Access accesscontact types
4
+ _Path: access.accessContact_
5
+ * email: Email address for a contact person or institution concerning the resource.
6
+ * repository: Institution providing access to the resource.
7
+
8
+ ## Access digitallocation types
9
+ _Path: access.digitalLocation_
10
+ * discovery: Online location for the purpose of discovering the resource.
11
+
12
+ ## Access note types
13
+ _Path: access.note_
14
+ * access restriction: Restrictions on or conditions for gaining access to the resource.
15
+ * display label: Display label for the purl.
16
+ * license: License describing allowed uses of the resource.
17
+ * use and reproduction: Information related to allowed uses of the resource in other contexts.
18
+
19
+ ## Access physicallocation types
20
+ _Path: access.physicalLocation_
21
+ * discovery: Location where a user may find the resource.
22
+ * location: Physical location of the resource, or path to the resource on a hard drive or disk.
23
+ * repository: The institution holding the resource.
24
+ * series: Archival series of the resource.
25
+ * shelf locator: Identifier or shelfmark indicating the location of the resource.
26
+
27
+ ## Adminmetadata note types
28
+ _Path: adminMetadata.note_
29
+ * record information: General information about the metadata record.
30
+ * record origin: The source of the record, such as another record transformed to generate the current record.
31
+
32
+ # Contributor types
33
+ _Path: contributor_
34
+ * conference: An event focusing on a particular topic or discipline.
35
+ * event: A time-bound occurrence.
36
+ * family: A group of individuals related by blood or personal alliance.
37
+ * organization: An institution or other corporate or collective body.
38
+ * person: An individual identity.
39
+ * unspecified others: Designator for one or more additional contributors not named individually.
40
+
41
+ ## Contributor identifier types
42
+ _Path: contributor.identifier_
43
+ * ORCID: Identifier from orcid.org.
44
+ * Wikidata: Identifier from wikidata.org.
45
+
46
+ ## Contributor name types
47
+ _Path: contributor.name_
48
+ * alternative: Additional nonpreferred form of name.
49
+ * display: Preferred form of the name for display.
50
+ * forename: First or given name or names.
51
+ * inverted full name: Name given in last name, first name order.
52
+ * pseudonym: Name used that differs from legal or primary form of name.
53
+ * surname: Last or family name.
54
+ * transliteration: Name originally in non-Latin script presented phonetically using Latin characters.
55
+
56
+ ### Contributor name part types for structured value
57
+ _Path: contributor.name.structuredValue_
58
+ * activity dates: The date or dates when someone was producing work.
59
+ * forename: First or given name or names.
60
+ * life dates: Birth and death dates, or dates when an entity was in existence.
61
+ * name: Name provided alongside additional information.
62
+ * ordinal: Indicator that the name is one in a series (e.g. Elizabeth I, Martin Luther King, Jr.).
63
+ * surname: Last or family name.
64
+ * term of address: Title or other signifier associated with name.
65
+
66
+ ### Contributor name types for grouped value (MODS legacy)
67
+ _Path: contributor.name.groupedValue_
68
+ * alternative: Additional nonpreferred form of name.
69
+ * name: Primary form of name within group of values.
70
+ * pseudonym: Name used that differs from legal or primary form of name.
71
+
72
+ ## Contributor note types
73
+ _Path: contributor.note_
74
+ * affiliation: Institution with which the contributor is associated.
75
+ * citation status: Indicator of whether the contributor should be included in the citation.
76
+ * description: Biographical information about the contributor.
77
+
78
+ # Event types
79
+ _Path: event_
80
+ * acquisition: The transferral of ownership of a resource to a repository.
81
+ * capture: A record of the resource in a fixed form at a specific time.
82
+ * collection: The addition of a resource to a set of other resources.
83
+ * copyright: The activity by which a resource may be considered subject to copyright law.
84
+ * copyright notice: An explicit statement that a resource is under copyright.
85
+ * creation: The coming into being of a resource.
86
+ * degree conferral: The institutional approval of a thesis or other resource leading to an academic degree.
87
+ * development: The creation of a print from a photographic negative or other source medium.
88
+ * distribution: The delivery of the resource to an external audience.
89
+ * generation: The creation of a resource by an automatic or natural process.
90
+ * manufacture: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
91
+ * modification: A change to an existing resource.
92
+ * performance: The enactment of an artistic or cultural work for an audience, such as a play.
93
+ * presentation: The discussion of an academic or intellectual work for an audience, such as a seminar.
94
+ * production: The physical assembly of a resource not considered published, such as page proofs for a book.
95
+ * publication: The publishing or issuing of a resource.
96
+ * recording: The initial fixation to a medium of live audio and/or visual activity.
97
+ * release: Making a resource available to a broader audience.
98
+ * submission: The provision of a resource for review or evaluation.
99
+ * validity: When a resource takes effect, such as a revised train schedule.
100
+ * withdrawal: The removal of previous access to a resource, often due to its obsolescence.
101
+
102
+ ## Event date types
103
+ _Path: event.date_
104
+ * acquisition: The transferral of ownership of a resource to a repository.
105
+ * capture: A record of the resource in a fixed form at a specific time.
106
+ * collection: The addition of a resource to a set of other resources.
107
+ * copyright: The activity by which a resource may be considered subject to copyright law.
108
+ * creation: The coming into being of a resource.
109
+ * degree conferral: The institutional approval of a thesis or other resource leading to an academic degree.
110
+ * developed: The creation of a print from a photographic negative or other source medium.
111
+ * development: The creation of a print from a photographic negative or other source medium.
112
+ * distribution: The delivery of the resource to an external audience.
113
+ * generation: The creation of a resource by an automatic or natural process.
114
+ * manufacture: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
115
+ * modification: A change to an existing resource.
116
+ * performance: The enactment of an artistic or cultural work for an audience, such as a play.
117
+ * presentation: The discussion of an academic or intellectual work for an audience, such as a seminar.
118
+ * production: The physical assembly of a resource not considered published, such as page proofs for a book.
119
+ * publication: The publishing or issuing of a resource.
120
+ * recording: The initial fixation to a medium of live audio and/or visual activity.
121
+ * release: Making a resource available to a broader audience.
122
+ * submission: The provision of a resource for review or evaluation.
123
+ * validity: When a resource takes effect, such as a revised train schedule.
124
+ * withdrawal: The removal of previous access to a resource, often due to its obsolescence.
125
+
126
+ ### Event date part types for structured value
127
+ _Path: event.date.structuredValue_
128
+ * start: The start date in a range.
129
+ * end: The end date in a range.
130
+
131
+ ## Event note types
132
+ _Path: event.note_
133
+ * copyright statement: A formal declaration of copyright on a resource.
134
+ * edition
135
+ * frequency: How often a resource is issued, such as monthly.
136
+ * issuance: How the resource is issued, such as serially.
137
+
138
+ # Form types
139
+ _Path: form_
140
+ * carrier
141
+ * data format
142
+ * digital origin
143
+ * extent
144
+ * form
145
+ * genre
146
+ * map projection
147
+ * map scale
148
+ * material
149
+ * media
150
+ * media type
151
+ * reformatting quality
152
+ * resource type
153
+ * technique
154
+ * type
155
+
156
+ ## Form note types
157
+ _Path: form.note_
158
+ * additions
159
+ * arrangement
160
+ * binding
161
+ * codicology
162
+ * collation
163
+ * colophon
164
+ * condition
165
+ * decoNote
166
+ * decoration
167
+ * dimensions
168
+ * explicit
169
+ * foliation
170
+ * genre type
171
+ * hand note
172
+ * handNote
173
+ * incipit
174
+ * instrumentation
175
+ * layout
176
+ * material
177
+ * medium of performance
178
+ * provenance
179
+ * reassembly
180
+ * reproduction
181
+ * research
182
+ * rubric
183
+ * secfol
184
+ * second folio
185
+ * secondFolio
186
+ * unit
187
+ * writing
188
+
189
+ ## Form part types for structured value
190
+ _Path: form.structuredValue_
191
+ * type
192
+ * subtype
193
+
194
+ ## Geographic form types
195
+ _Path: geographic.form_
196
+ * data format
197
+ * media type
198
+ * type
199
+
200
+ ## Geographic subject types
201
+ _Path: geographic.subject_
202
+ * bounding box coordinates
203
+ * coverage
204
+ * point coordinates
205
+
206
+ ### Geographic subject part types for structured value
207
+ _Path: geographic.subject.structuredValue_
208
+ * east
209
+ * latitude
210
+ * longitude
211
+ * north
212
+ * south
213
+ * west
214
+
215
+ # Identifier types
216
+ _Path: identifier_
217
+ * accession number
218
+ * alternate case number
219
+ * Apis ID
220
+ * ARK
221
+ * arXiv
222
+ * case identifier
223
+ * case number
224
+ * document number
225
+ * DOI
226
+ * druid
227
+ * GTIN-14 ID
228
+ * Handle
229
+ * inventory number
230
+ * ISBN
231
+ * ISMN
232
+ * ISRC
233
+ * ISSN
234
+ * ISSN-L
235
+ * issue number
236
+ * LCCN
237
+ * local
238
+ * Local ID
239
+ * matrix number
240
+ * music plate
241
+ * music publisher
242
+ * OCLC
243
+ * PMCID
244
+ * PMID
245
+ * record id
246
+ * Senate Number
247
+ * Series
248
+ * SIRSI
249
+ * Source ID
250
+ * sourceID
251
+ * stock number
252
+ * Swets (Netherlands) ID
253
+ * UPC
254
+ * URI
255
+ * URN
256
+ * videorecording identifier
257
+ * West Mat \#
258
+ * Wikidata
259
+
260
+ # Note types
261
+ _Path: note_
262
+ * abstract
263
+ * access
264
+ * access note
265
+ * acquisition
266
+ * action
267
+ * additional physical form
268
+ * additions
269
+ * admin
270
+ * affiliation
271
+ * bibliographic
272
+ * bibliography
273
+ * biographical/historical
274
+ * biographical/historical note
275
+ * biography
276
+ * boat note
277
+ * citation/reference
278
+ * contact
279
+ * content
280
+ * content note
281
+ * content warning
282
+ * contents
283
+ * copyright
284
+ * creation/production credits
285
+ * date
286
+ * date/sequential designation
287
+ * description
288
+ * digitization
289
+ * duration
290
+ * event
291
+ * exhibitions
292
+ * funding
293
+ * general
294
+ * genre type
295
+ * geography
296
+ * host
297
+ * language
298
+ * local
299
+ * location
300
+ * medium of performance
301
+ * names
302
+ * numbering
303
+ * original location
304
+ * other relation type
305
+ * ownership
306
+ * part
307
+ * performer
308
+ * performers
309
+ * preferred citation
310
+ * provenance
311
+ * publications
312
+ * qualifications
313
+ * quote
314
+ * reassembly
315
+ * reference
316
+ * references
317
+ * related publication
318
+ * reproduction
319
+ * research
320
+ * restriction
321
+ * scope and content
322
+ * source characteristics
323
+ * source identifier
324
+ * statement of responsibility
325
+ * summary
326
+ * system details
327
+ * system requirements
328
+ * table of contents
329
+ * target audience
330
+ * technical note
331
+ * thesis
332
+ * transcript
333
+ * translation
334
+ * update
335
+ * use and reproduction
336
+ * venue
337
+ * version
338
+ * version identification
339
+ * writing
340
+
341
+ ## Note types for grouped value (MODS legacy)
342
+ _Path: note.groupedValue_
343
+ * caption
344
+ * date
345
+ * detail type
346
+ * extent unit
347
+ * list
348
+ * marker
349
+ * number
350
+ * title
351
+ * text
352
+
353
+ # Relatedresource types
354
+ _Path: relatedResource_
355
+ * has original version: An initial form of the resource.
356
+ * has other format: A version of the resource in a different physical or digital format.
357
+ * has part: A constituent unit of the resource.
358
+ * has version: A version of the resource with different intellectual content.
359
+ * in series: The name of a series of publications to which the resource belongs.
360
+ * other relation type: Resource type not otherwise described.
361
+ * part of: A larger resource to which the resource belongs, such as a collection.
362
+ * preceded by: A predecessor to the resource, such as a preceding journal title.
363
+ * referenced by: Other resources that cite the resource, such as a catalog.
364
+ * references: A resource which the resource references or cites.
365
+ * related to: A generically related resource.
366
+ * reviewed by: A review of the resource.
367
+ * succeeded by: A successor to the resource, such as a subsequent journal title.
368
+
369
+ # Subject types
370
+ _Path: subject_
371
+ * classification
372
+ * conference
373
+ * display
374
+ * event
375
+ * family
376
+ * genre
377
+ * map coordinates
378
+ * name
379
+ * occupation
380
+ * organization
381
+ * person
382
+ * place
383
+ * point coordinates
384
+ * time
385
+ * title
386
+ * topic
387
+
388
+ ## Subject note types
389
+ _Path: subject.note_
390
+ * role
391
+
392
+ ## Subject part types for structured value
393
+ _Path: subject.structuredValue_
394
+ * activity dates
395
+ * city
396
+ * conference
397
+ * continent
398
+ * country
399
+ * end
400
+ * east
401
+ * event
402
+ * display
403
+ * family
404
+ * forename
405
+ * genre
406
+ * latitude
407
+ * life dates
408
+ * longitude
409
+ * main title
410
+ * name
411
+ * north
412
+ * occupation
413
+ * ordinal
414
+ * organization
415
+ * part name
416
+ * person
417
+ * place
418
+ * south
419
+ * start
420
+ * surname
421
+ * term of address
422
+ * time
423
+ * title
424
+ * topic
425
+ * west
426
+
427
+ ### Subject note types
428
+ _Path: subject.structuredValue.note_
429
+ * role: The relation of the subject entity to the resource.
430
+
431
+ ## Subject types for grouped value (MODS legacy)
432
+ _Path: subject.groupedValue_
433
+ * uniform: Form of title in Library of Congress title authority.
434
+
435
+ # Title types
436
+ _Path: title_
437
+ * abbreviated: Abbreviated form of title for indexing or identification.
438
+ * alternative: Variant title.
439
+ * parallel: Title transcribed from the resource in multiple languages or scripts.
440
+ * supplied: Title provided by metadata creator rather than transcribed from the resource.
441
+ * translated: Title translated into another language.
442
+ * transliterated: Title transliterated from non-Latin script to Latin script.
443
+ * uniform: Form of title in Library of Congress title authority.
444
+
445
+ ## Title note types
446
+ _Path: title.note_
447
+ * associated name: A name linked to the title, such as for a name-title heading.
448
+ * nonsorting character count: The number of characters at the beginning of the string to be disregarded when sorting.
449
+
450
+ ## Title part types for structured value
451
+ _Path: title.structuredValue_
452
+ * main title: The primary part of a multipart title.
453
+ * nonsorting characters: A string at the beginning of the title to be disregarded when sorting.
454
+ * part name: The distinct name of a resource as part of a series or multivolume set.
455
+ * part number: The distinct number of a resource as part of a series or multivolume set.
456
+ * subtitle: The secondary part of a title.
@@ -28,6 +28,7 @@ module Cocina
28
28
  # rubocop:enable Style/HashEachMethods
29
29
 
30
30
  generate_vocab
31
+ generate_descriptive_docs
31
32
  end
32
33
 
33
34
  desc 'generate_schema SCHEMA_NAME', 'generate for SCHEMA_NAME'
@@ -45,8 +46,56 @@ module Cocina
45
46
  Vocab.generate(schemas, output_dir: options[:output])
46
47
  end
47
48
 
49
+ desc 'generate_descriptive_docs', 'generate descriptive documentation'
50
+ def generate_descriptive_docs
51
+ markdown = YAML.load_file('description_types.yml').map do |field, types|
52
+ header_markdown = field_markdown_from(field)
53
+ types_markdown = types_markdown_from(types)
54
+
55
+ <<~MARKDOWN
56
+ #{'#' * (field.count('.') + 1)} #{header_markdown}
57
+ _Path: #{field}_
58
+ #{types_markdown}
59
+ MARKDOWN
60
+ end.join("\n")
61
+
62
+ remove_file 'docs/description_types.md'
63
+ create_file 'docs/description_types.md', h1_markdown + markdown
64
+ end
65
+
48
66
  private
49
67
 
68
+ def h1_markdown
69
+ <<~MARKDOWN
70
+ # Description types
71
+
72
+ MARKDOWN
73
+ end
74
+
75
+ def field_markdown_from(field)
76
+ header = field.split('.')
77
+ .grep_v(/groupedValue|structuredValue/)
78
+ .join(' ')
79
+ .capitalize
80
+
81
+ header_suffix = if field.ends_with?('structuredValue')
82
+ 'part types for structured value'
83
+ elsif field.ends_with?('groupedValue')
84
+ 'types for grouped value (MODS legacy)'
85
+ else
86
+ 'types'
87
+ end
88
+ "#{header} #{header_suffix}"
89
+ end
90
+
91
+ def types_markdown_from(types)
92
+ types.map do |type|
93
+ " * #{type['value']}".tap do |type_value|
94
+ type_value << ": #{type['description']}" if type['description']
95
+ end
96
+ end.join("\n")
97
+ end
98
+
50
99
  def schemas
51
100
  @schemas ||= Openapi3Parser.load_file(options[:openapi]).components.schemas
52
101
  end
@@ -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-creator', 'dor-apo-depositor', 'dor-apo-manager', 'dor-apo-metadata', 'dor-apo-reviewer', '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')
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) || %i[parallelValue parallelContributor parallelEvent].include?(part)
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 = [OpenApiValidator, DarkValidator, CatalogLinksValidator].freeze
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) }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.72.0'
5
+ VERSION = '0.73.2'
6
6
  end
7
7
  end
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'
@@ -526,7 +523,7 @@ components:
526
523
  items:
527
524
  $ref: "#/components/schemas/DescriptiveValue"
528
525
  type:
529
- description: Entity type of the contributor (person, organization, etc.).
526
+ description: Entity type of the contributor (person, organization, etc.). See https://sul-dlss.github.io/cocina-models/description_types.html for valid types.
530
527
  type: string
531
528
  status:
532
529
  description: Status of the contributor relative to other parallel contributors
@@ -715,7 +712,7 @@ components:
715
712
  # https://github.com/interagent/committee/issues/286
716
713
  # - type: integer
717
714
  type:
718
- description: Type of value provided by the descriptive element.
715
+ description: Type of value provided by the descriptive element. See https://sul-dlss.github.io/cocina-models/description_types.html for valid types.
719
716
  type: string
720
717
  status:
721
718
  description: Status of the descriptive element value relative to other instances
@@ -791,7 +788,7 @@ components:
791
788
  items:
792
789
  $ref: "#/components/schemas/DescriptiveValue"
793
790
  type:
794
- description: Entity type of the contributor (person, organization, etc.).
791
+ description: Entity type of the contributor (person, organization, etc.). See https://sul-dlss.github.io/cocina-models/description_types.html for valid types.
795
792
  type: string
796
793
  status:
797
794
  description: Status of the contributor relative to other parallel contributors (e.g. the primary author among a group of contributors).
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.72.0
4
+ version: 0.73.2
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 00:00:00.000000000 Z
11
+ date: 2022-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -274,7 +274,10 @@ files:
274
274
  - bin/console
275
275
  - bin/setup
276
276
  - cocina-models.gemspec
277
+ - description_types.yml
278
+ - docs/_config.yml
277
279
  - docs/cocina-base.jsonld
280
+ - docs/description_types.md
278
281
  - docs/index.html
279
282
  - docs/maps/Agent.json
280
283
  - docs/maps/Collection.json
@@ -386,6 +389,7 @@ files:
386
389
  - lib/cocina/models/validatable.rb
387
390
  - lib/cocina/models/validators/catalog_links_validator.rb
388
391
  - lib/cocina/models/validators/dark_validator.rb
392
+ - lib/cocina/models/validators/description_types_validator.rb
389
393
  - lib/cocina/models/validators/open_api_validator.rb
390
394
  - lib/cocina/models/validators/validator.rb
391
395
  - lib/cocina/models/version.rb
@@ -398,7 +402,7 @@ homepage: https://github.com/sul-dlss/cocina-models
398
402
  licenses: []
399
403
  metadata:
400
404
  rubygems_mfa_required: 'true'
401
- post_install_message:
405
+ post_install_message:
402
406
  rdoc_options: []
403
407
  require_paths:
404
408
  - lib
@@ -413,8 +417,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
417
  - !ruby/object:Gem::Version
414
418
  version: '0'
415
419
  requirements: []
416
- rubygems_version: 3.2.32
417
- signing_key:
420
+ rubygems_version: 3.3.9
421
+ signing_key:
418
422
  specification_version: 4
419
423
  summary: Data models for the SDR
420
424
  test_files: []