cocina-models 0.72.0 → 0.73.2

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 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: []