cocina-models 0.107.1 → 0.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +33 -11
- data/lib/cocina/generator/datatype.rb +1 -1
- data/lib/cocina/generator/generator.rb +1 -0
- data/lib/cocina/generator/schema_array.rb +1 -1
- data/lib/cocina/generator/schema_base.rb +10 -2
- data/lib/cocina/generator/schema_ref.rb +2 -2
- data/lib/cocina/generator/union_type.rb +1 -1
- data/lib/cocina/generator/vocab.rb +6 -5
- data/lib/cocina/models/access_role.rb +1 -0
- data/lib/cocina/models/admin_policy.rb +1 -0
- data/lib/cocina/models/admin_policy_access_template.rb +9 -3
- data/lib/cocina/models/admin_policy_administrative.rb +10 -1
- data/lib/cocina/models/admin_policy_lite.rb +3 -0
- data/lib/cocina/models/admin_policy_with_metadata.rb +1 -0
- data/lib/cocina/models/applies_to.rb +2 -1
- data/lib/cocina/models/barcode.rb +1 -0
- data/lib/cocina/models/business_barcode.rb +2 -0
- data/lib/cocina/models/catalog_link.rb +1 -0
- data/lib/cocina/models/catkey_barcode.rb +3 -0
- data/lib/cocina/models/citation_only_access.rb +2 -1
- data/lib/cocina/models/cocina_version.rb +2 -0
- data/lib/cocina/models/collection.rb +3 -1
- data/lib/cocina/models/collection_access.rb +6 -2
- data/lib/cocina/models/collection_identification.rb +8 -1
- data/lib/cocina/models/collection_lite.rb +7 -1
- data/lib/cocina/models/collection_with_metadata.rb +1 -0
- data/lib/cocina/models/contributor.rb +13 -3
- data/lib/cocina/models/copyright.rb +2 -0
- data/lib/cocina/models/created_in_folio_identifier.rb +2 -0
- data/lib/cocina/models/description.rb +14 -0
- data/lib/cocina/models/descriptive_access_metadata.rb +7 -0
- data/lib/cocina/models/descriptive_admin_metadata.rb +6 -0
- data/lib/cocina/models/descriptive_basic_value.rb +15 -3
- data/lib/cocina/models/descriptive_geographic_metadata.rb +1 -0
- data/lib/cocina/models/descriptive_grouped_value.rb +2 -1
- data/lib/cocina/models/descriptive_parallel_contributor.rb +11 -3
- data/lib/cocina/models/descriptive_parallel_event.rb +8 -1
- data/lib/cocina/models/descriptive_parallel_value.rb +2 -1
- data/lib/cocina/models/descriptive_value.rb +13 -2
- data/lib/cocina/models/descriptive_value_language.rb +5 -0
- data/lib/cocina/models/doi.rb +2 -1
- data/lib/cocina/models/doi_exceptions.rb +6 -1
- data/lib/cocina/models/dro.rb +4 -1
- data/lib/cocina/models/dro_access.rb +6 -2
- data/lib/cocina/models/dro_lite.rb +10 -1
- data/lib/cocina/models/dro_structural.rb +4 -0
- data/lib/cocina/models/dro_with_metadata.rb +2 -0
- data/lib/cocina/models/druid.rb +1 -0
- data/lib/cocina/models/embargo.rb +4 -1
- data/lib/cocina/models/event.rb +8 -0
- data/lib/cocina/models/file.rb +8 -3
- data/lib/cocina/models/file_set.rb +1 -0
- data/lib/cocina/models/file_use.rb +1 -0
- data/lib/cocina/models/folio_catalog_link.rb +3 -1
- data/lib/cocina/models/identification.rb +8 -1
- data/lib/cocina/models/lane_medical_barcode.rb +2 -0
- data/lib/cocina/models/language.rb +22 -3
- data/lib/cocina/models/language_tag.rb +2 -0
- data/lib/cocina/models/libraries_doi.rb +11 -0
- data/lib/cocina/models/license.rb +2 -0
- data/lib/cocina/models/migrated_from_symphony_identifier.rb +2 -0
- data/lib/cocina/models/migrated_from_voyager_identifier.rb +2 -0
- data/lib/cocina/models/preregistered_repository_doi.rb +12 -0
- data/lib/cocina/models/purl.rb +1 -0
- data/lib/cocina/models/related_resource.rb +17 -1
- data/lib/cocina/models/repository_doi.rb +13 -0
- data/lib/cocina/models/request_admin_policy.rb +3 -0
- data/lib/cocina/models/request_administrative.rb +2 -1
- data/lib/cocina/models/request_collection.rb +3 -0
- data/lib/cocina/models/request_description.rb +16 -1
- data/lib/cocina/models/request_dro.rb +8 -1
- data/lib/cocina/models/request_dro_structural.rb +1 -0
- data/lib/cocina/models/request_file.rb +4 -1
- data/lib/cocina/models/request_file_set.rb +1 -0
- data/lib/cocina/models/request_identification.rb +8 -1
- data/lib/cocina/models/sequence.rb +1 -0
- data/lib/cocina/models/source.rb +3 -1
- data/lib/cocina/models/source_id.rb +10 -0
- data/lib/cocina/models/standard.rb +5 -1
- data/lib/cocina/models/standard_barcode.rb +2 -0
- data/lib/cocina/models/symphony_catalog_link.rb +3 -1
- data/lib/cocina/models/title.rb +13 -2
- data/lib/cocina/models/use_and_reproduction_statement.rb +5 -0
- data/lib/cocina/models/version.rb +1 -1
- data/lib/cocina/models.rb +5 -1
- data/openapi.yml +24 -13
- metadata +6 -4
- data/lib/cocina/models/doi_pattern.rb +0 -7
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Basic value model for descriptive elements. Can only have one of value, parallelValue,
|
|
5
|
+
# Basic value model for descriptive elements. Can only have one of value, parallelValue,
|
|
6
|
+
# groupedValue, or structuredValue.
|
|
6
7
|
class DescriptiveBasicValue < Struct
|
|
7
8
|
attribute :structuredValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
8
9
|
attribute :parallelValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
9
10
|
attribute :groupedValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
10
11
|
# String or integer value of the descriptive element.
|
|
11
12
|
attribute? :value, Types::Nominal::Any
|
|
12
|
-
# Type of value provided by the descriptive element. See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
13
|
+
# Type of value provided by the descriptive element. See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
14
|
+
# for valid types.
|
|
13
15
|
attribute? :type, Types::Strict::String
|
|
14
16
|
# Status of the descriptive element value relative to other instances of the element.
|
|
15
17
|
attribute? :status, Types::Strict::String
|
|
@@ -17,15 +19,25 @@ module Cocina
|
|
|
17
19
|
attribute? :code, Types::Strict::String
|
|
18
20
|
# URI value of the descriptive element.
|
|
19
21
|
attribute? :uri, Types::Strict::String
|
|
22
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
23
|
+
# conforms (e.g. RDA).
|
|
20
24
|
attribute? :standard, Standard.optional
|
|
25
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
26
|
+
# conforms (e.g. RDA).
|
|
21
27
|
attribute? :encoding, Standard.optional
|
|
28
|
+
# Identifiers and URIs associated with the descriptive element.
|
|
22
29
|
attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
30
|
+
# Property model for indicating the vocabulary, authority, or other origin for a term,
|
|
31
|
+
# code, or identifier.
|
|
23
32
|
attribute? :source, Source.optional
|
|
24
33
|
# The preferred display label to use for the descriptive element in access systems.
|
|
25
34
|
attribute? :displayLabel, Types::Strict::String
|
|
26
|
-
# A term providing information about the circumstances of the statement (e.g., approximate
|
|
35
|
+
# A term providing information about the circumstances of the statement (e.g., approximate
|
|
36
|
+
# dates).
|
|
27
37
|
attribute? :qualifier, Types::Strict::String
|
|
38
|
+
# Other information related to the descriptive element.
|
|
28
39
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
40
|
+
# Language of the descriptive element value
|
|
29
41
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
30
42
|
# URL or other pointer to the location of the value of the descriptive element.
|
|
31
43
|
attribute? :valueAt, Types::Strict::String
|
|
@@ -5,6 +5,7 @@ module Cocina
|
|
|
5
5
|
# Value model for mods geographic extension metadata
|
|
6
6
|
class DescriptiveGeographicMetadata < Struct
|
|
7
7
|
attribute :form, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
8
|
+
# Terms associated with the intellectual content of the related resource.
|
|
8
9
|
attribute :subject, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
9
10
|
end
|
|
10
11
|
end
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Value model for a set of descriptive elements grouped together in an unstructured
|
|
5
|
+
# Value model for a set of descriptive elements grouped together in an unstructured
|
|
6
|
+
# way.
|
|
6
7
|
class DescriptiveGroupedValue < Struct
|
|
7
8
|
attribute :groupedValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
8
9
|
end
|
|
@@ -3,18 +3,26 @@
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
5
|
# DEPRECATED
|
|
6
|
-
# Value model for multiple representations of information about the same contributor
|
|
6
|
+
# Value model for multiple representations of information about the same contributor
|
|
7
|
+
# (e.g. in different languages).
|
|
7
8
|
class DescriptiveParallelContributor < Struct
|
|
9
|
+
# Names associated with a contributor.
|
|
8
10
|
attribute :name, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
9
|
-
# Entity type of the contributor (person, organization, etc.). See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
11
|
+
# Entity type of the contributor (person, organization, etc.). See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
12
|
+
# for valid types.
|
|
10
13
|
attribute? :type, Types::Strict::String
|
|
11
|
-
# Status of the contributor relative to other parallel contributors (e.g. the primary
|
|
14
|
+
# Status of the contributor relative to other parallel contributors (e.g. the primary
|
|
15
|
+
# author among a group of contributors).
|
|
12
16
|
attribute? :status, Types::Strict::String
|
|
17
|
+
# Relationships of the contributor to the resource or to an event in its history.
|
|
13
18
|
attribute :role, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
19
|
+
# Identifiers and URIs associated with the contributor entity.
|
|
14
20
|
attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
21
|
+
# Other information associated with the contributor.
|
|
15
22
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
16
23
|
# URL or other pointer to the location of the contributor information.
|
|
17
24
|
attribute? :valueAt, Types::Strict::String
|
|
25
|
+
# Language of the descriptive element value
|
|
18
26
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
19
27
|
end
|
|
20
28
|
end
|
|
@@ -2,18 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Value model for multiple representations of information about the same event (e.g.
|
|
5
|
+
# Value model for multiple representations of information about the same event (e.g.
|
|
6
|
+
# in different languages).
|
|
6
7
|
class DescriptiveParallelEvent < Struct
|
|
7
8
|
attribute :structuredValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
8
9
|
# Description of the event (creation, publication, etc.).
|
|
9
10
|
attribute? :type, Types::Strict::String
|
|
10
11
|
# The preferred display label to use for the event in access systems.
|
|
11
12
|
attribute? :displayLabel, Types::Strict::String
|
|
13
|
+
# Dates associated with the event.
|
|
12
14
|
attribute :date, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
15
|
+
# Contributors associated with the event.
|
|
13
16
|
attribute :contributor, Types::Strict::Array.of(Contributor).default([].freeze)
|
|
17
|
+
# Locations associated with the event.
|
|
14
18
|
attribute :location, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
19
|
+
# Identifiers and URIs associated with the event.
|
|
15
20
|
attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
21
|
+
# Other information about the event.
|
|
16
22
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
23
|
+
# Language of the descriptive element value
|
|
17
24
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
18
25
|
end
|
|
19
26
|
end
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Value model for multiple representations of the same information (e.g. in different
|
|
5
|
+
# Value model for multiple representations of the same information (e.g. in different
|
|
6
|
+
# languages).
|
|
6
7
|
class DescriptiveParallelValue < Struct
|
|
7
8
|
attribute :parallelValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
8
9
|
end
|
|
@@ -9,7 +9,8 @@ module Cocina
|
|
|
9
9
|
attribute :groupedValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
10
10
|
# String or integer value of the descriptive element.
|
|
11
11
|
attribute? :value, Types::Nominal::Any
|
|
12
|
-
# Type of value provided by the descriptive element. See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
12
|
+
# Type of value provided by the descriptive element. See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md
|
|
13
|
+
# for valid types.
|
|
13
14
|
attribute? :type, Types::Strict::String
|
|
14
15
|
# Status of the descriptive element value relative to other instances of the element.
|
|
15
16
|
attribute? :status, Types::Strict::String
|
|
@@ -17,15 +18,25 @@ module Cocina
|
|
|
17
18
|
attribute? :code, Types::Strict::String
|
|
18
19
|
# URI value of the descriptive element.
|
|
19
20
|
attribute? :uri, Types::Strict::String
|
|
21
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
22
|
+
# conforms (e.g. RDA).
|
|
20
23
|
attribute? :standard, Standard.optional
|
|
24
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
25
|
+
# conforms (e.g. RDA).
|
|
21
26
|
attribute? :encoding, Standard.optional
|
|
27
|
+
# Identifiers and URIs associated with the descriptive element.
|
|
22
28
|
attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
29
|
+
# Property model for indicating the vocabulary, authority, or other origin for a term,
|
|
30
|
+
# code, or identifier.
|
|
23
31
|
attribute? :source, Source.optional
|
|
24
32
|
# The preferred display label to use for the descriptive element in access systems.
|
|
25
33
|
attribute? :displayLabel, Types::Strict::String
|
|
26
|
-
# A term providing information about the circumstances of the statement (e.g., approximate
|
|
34
|
+
# A term providing information about the circumstances of the statement (e.g., approximate
|
|
35
|
+
# dates).
|
|
27
36
|
attribute? :qualifier, Types::Strict::String
|
|
37
|
+
# Other information related to the descriptive element.
|
|
28
38
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
39
|
+
# Language of the descriptive element value
|
|
29
40
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
30
41
|
# URL or other pointer to the location of the value of the descriptive element.
|
|
31
42
|
attribute? :valueAt, Types::Strict::String
|
|
@@ -10,10 +10,15 @@ module Cocina
|
|
|
10
10
|
attribute? :uri, Types::Strict::String
|
|
11
11
|
# String describing the standard or encoding.
|
|
12
12
|
attribute? :value, Types::Strict::String
|
|
13
|
+
# Other information related to the standard or encoding.
|
|
13
14
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
14
15
|
# The version of the standard or encoding.
|
|
15
16
|
attribute? :version, Types::Strict::String
|
|
17
|
+
# Property model for indicating the vocabulary, authority, or other origin for a term,
|
|
18
|
+
# code, or identifier.
|
|
16
19
|
attribute? :source, Source.optional
|
|
20
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
21
|
+
# conforms (e.g. RDA).
|
|
17
22
|
attribute? :valueScript, Standard.optional
|
|
18
23
|
end
|
|
19
24
|
end
|
data/lib/cocina/models/doi.rb
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
|
|
5
|
+
# The DOI (Digital Object Identifier, https://www.doi.org) pattern for objects in SDR
|
|
6
|
+
# that do not adhere to any of the other DOI patterns in the spec. This is a short
|
|
7
|
+
# list of known exceptions only. Please note that DOIs are *not* case-sensitive, so
|
|
8
|
+
# we allow for uppercase and lowercase letters with these exceptions.
|
|
9
|
+
# example: 10.18735/0mw1-qq72
|
|
10
|
+
DOIExceptions = Types::String.constrained(format: %r{^10\.25936/[jJ][mM]709[hH][cC]8700|10\.18735/4[nN][sS][eE]-8871|10\.18735/952[xX]-[wW]447|10\.18735/0[mM][wW]1-[qQ][qQ]72$})
|
|
6
11
|
end
|
|
7
12
|
end
|
data/lib/cocina/models/dro.rb
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Domain-defined abstraction of a 'work'. Digital Repository Objects' abstraction is
|
|
5
|
+
# Domain-defined abstraction of a 'work'. Digital Repository Objects' abstraction is
|
|
6
|
+
# describable for our domain’s purposes, i.e. for management needs within our system.
|
|
6
7
|
class DRO < Struct
|
|
7
8
|
include Validatable
|
|
8
9
|
|
|
@@ -39,7 +40,9 @@ module Cocina
|
|
|
39
40
|
attribute(:administrative, Administrative.default { Administrative.new })
|
|
40
41
|
attribute(:description, Description.default { Description.new })
|
|
41
42
|
attribute(:identification, Identification.default { Identification.new })
|
|
43
|
+
# Structural metadata
|
|
42
44
|
attribute(:structural, DROStructural.default { DROStructural.new })
|
|
45
|
+
# Geographic metadata
|
|
43
46
|
attribute? :geographic, Geographic.optional
|
|
44
47
|
end
|
|
45
48
|
end
|
|
@@ -19,9 +19,13 @@ module Cocina
|
|
|
19
19
|
attribute? :copyright, Copyright.optional
|
|
20
20
|
attribute? :embargo, Embargo.optional
|
|
21
21
|
# The human readable use and reproduction statement that applies
|
|
22
|
-
# example: Property rights reside with the repository. Literary rights reside with
|
|
22
|
+
# example: Property rights reside with the repository. Literary rights reside with
|
|
23
|
+
# the creators of the documents or their heirs. To obtain permission to publish or
|
|
24
|
+
# reproduce, please contact the Public Services Librarian of the Dept. of Special Collections
|
|
25
|
+
# (http://library.stanford.edu/spc).
|
|
23
26
|
attribute? :useAndReproductionStatement, UseAndReproductionStatement.optional
|
|
24
|
-
# The license governing reuse of the DRO. Should be an IRI for known licenses (i.e.
|
|
27
|
+
# The license governing reuse of the DRO. Should be an IRI for known licenses (i.e.
|
|
28
|
+
# CC, RightsStatement.org URI, etc.).
|
|
25
29
|
attribute? :license, License.optional.enum('https://www.gnu.org/licenses/agpl.txt', 'https://www.apache.org/licenses/LICENSE-2.0', 'https://opensource.org/licenses/BSD-2-Clause', 'https://opensource.org/licenses/BSD-3-Clause', 'https://creativecommons.org/licenses/by/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode', 'https://creativecommons.org/licenses/by-nd/4.0/legalcode', 'https://creativecommons.org/licenses/by-sa/4.0/legalcode', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode', 'https://opensource.org/licenses/cddl1', 'https://www.eclipse.org/legal/epl-2.0', 'https://www.gnu.org/licenses/gpl-3.0-standalone.html', 'https://www.isc.org/downloads/software-support-policy/isc-license/', 'https://www.gnu.org/licenses/lgpl-3.0-standalone.html', 'https://opensource.org/licenses/MIT', 'https://www.mozilla.org/MPL/2.0/', 'https://opendatacommons.org/licenses/by/1-0/', 'http://opendatacommons.org/licenses/odbl/1.0/', 'https://opendatacommons.org/licenses/odbl/1-0/', 'https://creativecommons.org/publicdomain/mark/1.0/', 'https://opendatacommons.org/licenses/pddl/1-0/', 'https://creativecommons.org/licenses/by/3.0/legalcode', 'https://creativecommons.org/licenses/by-sa/3.0/legalcode', 'https://creativecommons.org/licenses/by-nd/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode', 'https://cocina.sul.stanford.edu/licenses/none')
|
|
26
30
|
end
|
|
27
31
|
end
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Domain-defined abstraction of a 'work'. Digital Repository Objects' abstraction is
|
|
5
|
+
# Domain-defined abstraction of a 'work'. Digital Repository Objects' abstraction is
|
|
6
|
+
# describable for our domain’s purposes, i.e. for management needs within our system.
|
|
6
7
|
class DROLite < Struct
|
|
7
8
|
include Checkable
|
|
8
9
|
|
|
@@ -33,11 +34,19 @@ module Cocina
|
|
|
33
34
|
attribute :label, Types::Strict::String
|
|
34
35
|
# Version for the DRO within SDR.
|
|
35
36
|
attribute :version, Types::Strict::Integer
|
|
37
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
36
38
|
attribute? :access, DROAccess.optional
|
|
39
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
37
40
|
attribute? :administrative, Administrative.optional
|
|
41
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
38
42
|
attribute? :description, Description.optional
|
|
43
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
39
44
|
attribute? :identification, Identification.optional
|
|
45
|
+
# Structural metadata
|
|
46
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
40
47
|
attribute? :structural, DROStructural.optional
|
|
48
|
+
# Geographic metadata
|
|
49
|
+
# Validation of this property is relaxed. See the openapi for full validation.
|
|
41
50
|
attribute? :geographic, Geographic.optional
|
|
42
51
|
end
|
|
43
52
|
end
|
|
@@ -4,8 +4,12 @@ module Cocina
|
|
|
4
4
|
module Models
|
|
5
5
|
# Structural metadata
|
|
6
6
|
class DROStructural < Struct
|
|
7
|
+
# Filesets that contain the digital representations (Files)
|
|
7
8
|
attribute :contains, Types::Strict::Array.of(FileSet).default([].freeze)
|
|
9
|
+
# Provided sequences or orderings of members, including some metadata about each sequence
|
|
10
|
+
# (i.e. sequence label, sequence type, if the sequence is primary, etc.).
|
|
8
11
|
attribute :hasMemberOrders, Types::Strict::Array.of(Sequence).default([].freeze)
|
|
12
|
+
# Collections that this DRO is a member of
|
|
9
13
|
attribute :isMemberOf, Types::Strict::Array.of(Druid).default([].freeze)
|
|
10
14
|
end
|
|
11
15
|
end
|
|
@@ -39,7 +39,9 @@ module Cocina
|
|
|
39
39
|
attribute(:administrative, Administrative.default { Administrative.new })
|
|
40
40
|
attribute(:description, Description.default { Description.new })
|
|
41
41
|
attribute(:identification, Identification.default { Identification.new })
|
|
42
|
+
# Structural metadata
|
|
42
43
|
attribute(:structural, DROStructural.default { DROStructural.new })
|
|
44
|
+
# Geographic metadata
|
|
43
45
|
attribute? :geographic, Geographic.optional
|
|
44
46
|
# When the object was created.
|
|
45
47
|
attribute? :created, Types::Params::DateTime
|
data/lib/cocina/models/druid.rb
CHANGED
|
@@ -18,7 +18,10 @@ module Cocina
|
|
|
18
18
|
# example: 2029-06-22T07:00:00.000+00:00
|
|
19
19
|
attribute :releaseDate, Types::Params::DateTime
|
|
20
20
|
# The human readable use and reproduction statement that applies
|
|
21
|
-
# example: Property rights reside with the repository. Literary rights reside with
|
|
21
|
+
# example: Property rights reside with the repository. Literary rights reside with
|
|
22
|
+
# the creators of the documents or their heirs. To obtain permission to publish or
|
|
23
|
+
# reproduce, please contact the Public Services Librarian of the Dept. of Special Collections
|
|
24
|
+
# (http://library.stanford.edu/spc).
|
|
22
25
|
attribute? :useAndReproductionStatement, UseAndReproductionStatement.optional
|
|
23
26
|
end
|
|
24
27
|
end
|
data/lib/cocina/models/event.rb
CHANGED
|
@@ -9,12 +9,20 @@ module Cocina
|
|
|
9
9
|
attribute? :type, Types::Strict::String
|
|
10
10
|
# The preferred display label to use for the event in access systems.
|
|
11
11
|
attribute? :displayLabel, Types::Strict::String
|
|
12
|
+
# Dates associated with the event.
|
|
12
13
|
attribute :date, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
14
|
+
# Contributors associated with the event.
|
|
13
15
|
attribute :contributor, Types::Strict::Array.of(Contributor).default([].freeze)
|
|
16
|
+
# Locations associated with the event.
|
|
14
17
|
attribute :location, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
18
|
+
# Identifiers and URIs associated with the event.
|
|
15
19
|
attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
20
|
+
# Other information about the event.
|
|
16
21
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
22
|
+
# Language of the descriptive element value
|
|
17
23
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
24
|
+
# For multiple representations of information about the same event (e.g. in different
|
|
25
|
+
# languages)
|
|
18
26
|
attribute :parallelEvent, Types::Strict::Array.of(DescriptiveParallelEvent).default([].freeze)
|
|
19
27
|
end
|
|
20
28
|
end
|
data/lib/cocina/models/file.rb
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Binaries that are the basis of what our domain manages. Binaries here do not include
|
|
5
|
+
# Binaries that are the basis of what our domain manages. Binaries here do not include
|
|
6
|
+
# metadata files generated for the domain's own management purposes.
|
|
6
7
|
class File < Struct
|
|
7
8
|
include Checkable
|
|
8
9
|
|
|
@@ -10,7 +11,8 @@ module Cocina
|
|
|
10
11
|
|
|
11
12
|
# The content type of the File.
|
|
12
13
|
attribute :type, Types::Strict::String.enum(*File::TYPES)
|
|
13
|
-
# Identifier for the resource within the SDR architecture but outside of the repository.
|
|
14
|
+
# Identifier for the resource within the SDR architecture but outside of the repository.
|
|
15
|
+
# UUID. Constant across resource versions. What clients will use calling the repository.
|
|
14
16
|
attribute :externalIdentifier, Types::Strict::String
|
|
15
17
|
# Primary processing label (can be same as title) for a File.
|
|
16
18
|
attribute :label, Types::Strict::String
|
|
@@ -22,7 +24,8 @@ module Cocina
|
|
|
22
24
|
attribute :version, Types::Strict::Integer
|
|
23
25
|
# MIME Type of the File.
|
|
24
26
|
attribute? :hasMimeType, Types::Strict::String
|
|
25
|
-
# BCP 47 language tag: https://www.rfc-editor.org/rfc/rfc4646.txt -- other applications
|
|
27
|
+
# BCP 47 language tag: https://www.rfc-editor.org/rfc/rfc4646.txt -- other applications
|
|
28
|
+
# (like media players) expect language codes of this format, see e.g. https://videojs.com/guides/text-tracks/#srclang
|
|
26
29
|
attribute? :languageTag, LanguageTag.optional
|
|
27
30
|
# Use for the File (e.g. "transcription" for OCR).
|
|
28
31
|
attribute? :use, FileUse.optional
|
|
@@ -31,8 +34,10 @@ module Cocina
|
|
|
31
34
|
# Indicates if text that has been verified for accessibility/correctness.
|
|
32
35
|
attribute? :correctedForAccessibility, Types::Strict::Bool.default(false)
|
|
33
36
|
attribute :hasMessageDigests, Types::Strict::Array.of(MessageDigest).default([].freeze)
|
|
37
|
+
# Access metadata for files
|
|
34
38
|
attribute(:access, FileAccess.default { FileAccess.new })
|
|
35
39
|
attribute(:administrative, FileAdministrative.default { FileAdministrative.new })
|
|
40
|
+
# Presentation data for the File.
|
|
36
41
|
attribute? :presentation, Presentation.optional
|
|
37
42
|
end
|
|
38
43
|
end
|
|
@@ -7,7 +7,9 @@ module Cocina
|
|
|
7
7
|
# Catalog that is the source of the linked record.
|
|
8
8
|
# example: folio
|
|
9
9
|
attribute :catalog, Types::Strict::String.enum('folio', 'previous folio')
|
|
10
|
-
# Only one of the Folio instance HRIDs should be designated for refreshing. This means
|
|
10
|
+
# Only one of the Folio instance HRIDs should be designated for refreshing. This means
|
|
11
|
+
# that this HRID is the one used to pull metadata from the catalog if there is more
|
|
12
|
+
# than one HRID present.
|
|
11
13
|
attribute :refresh, Types::Strict::Bool.default(false)
|
|
12
14
|
# Record identifier that is unique within the context of the linked record's catalog.
|
|
13
15
|
attribute :catalogRecordId, MigratedFromSymphonyIdentifier | MigratedFromVoyagerIdentifier | CreatedInFolioIdentifier
|
|
@@ -8,7 +8,14 @@ module Cocina
|
|
|
8
8
|
attribute :catalogLinks, Types::Strict::Array.of(CatalogLink).default([].freeze)
|
|
9
9
|
# Digital Object Identifier (https://www.doi.org)
|
|
10
10
|
attribute? :doi, DOI.optional
|
|
11
|
-
# Unique identifier in some other system. This is because a large proportion of what
|
|
11
|
+
# Unique identifier in some other system. This is because a large proportion of what
|
|
12
|
+
# is deposited in SDR, historically and currently, are representations of objects that
|
|
13
|
+
# are also represented in other systems. For example, digitized paper and A/V collections
|
|
14
|
+
# have physical manifestations, and those physical objects are managed in systems that
|
|
15
|
+
# have their own identifiers. Similarly, books have barcodes, archival materials have
|
|
16
|
+
# collection numbers and physical locations, etc. The sourceId allows determining if
|
|
17
|
+
# an item has been deposited before and where to look for the original item if you're
|
|
18
|
+
# looking at its SDR representation. The format is: "namespace:identifier"
|
|
12
19
|
|
|
13
20
|
# example: sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026
|
|
14
21
|
attribute :sourceId, SourceId
|
|
@@ -2,24 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
-
# Languages, scripts, symbolic systems, and notations used in all or part of a resource
|
|
5
|
+
# Languages, scripts, symbolic systems, and notations used in all or part of a resource
|
|
6
|
+
# or its descriptive metadata.
|
|
6
7
|
class Language < Struct
|
|
7
8
|
attribute :appliesTo, Types::Strict::Array.of(DescriptiveBasicValue).default([].freeze)
|
|
8
9
|
# Code value of the descriptive element.
|
|
9
10
|
attribute? :code, Types::Strict::String
|
|
10
11
|
# The preferred display label to use for the descriptive element in access systems.
|
|
11
12
|
attribute? :displayLabel, Types::Strict::String
|
|
13
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
14
|
+
# conforms (e.g. RDA).
|
|
12
15
|
attribute? :encoding, Standard.optional
|
|
16
|
+
# present for mapping to additional schemas in the future and for consistency but not
|
|
17
|
+
# otherwise used
|
|
13
18
|
attribute :groupedValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
19
|
+
# present for mapping to additional schemas in the future and for consistency but not
|
|
20
|
+
# otherwise used
|
|
14
21
|
attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
22
|
+
# present for mapping to additional schemas in the future and for consistency but not
|
|
23
|
+
# otherwise used
|
|
15
24
|
attribute :parallelValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
16
|
-
# present for mapping to additional schemas in the future and for consistency but not
|
|
25
|
+
# present for mapping to additional schemas in the future and for consistency but not
|
|
26
|
+
# otherwise used
|
|
17
27
|
attribute? :qualifier, Types::Strict::String
|
|
28
|
+
# Default value model for descriptive elements.
|
|
18
29
|
attribute? :script, DescriptiveValue.optional
|
|
30
|
+
# Property model for indicating the vocabulary, authority, or other origin for a term,
|
|
31
|
+
# code, or identifier.
|
|
19
32
|
attribute? :source, Source.optional
|
|
20
|
-
# Status of the language relative to other parallel language elements (e.g. the primary
|
|
33
|
+
# Status of the language relative to other parallel language elements (e.g. the primary
|
|
34
|
+
# language)
|
|
21
35
|
attribute? :status, Types::Strict::String.enum('primary')
|
|
36
|
+
# Property model for indicating the encoding, standard, or syntax to which a value
|
|
37
|
+
# conforms (e.g. RDA).
|
|
22
38
|
attribute? :standard, Standard.optional
|
|
39
|
+
# present for mapping to additional schemas in the future and for consistency but not
|
|
40
|
+
# otherwise used
|
|
23
41
|
attribute :structuredValue, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
|
|
24
42
|
# URI value of the descriptive element.
|
|
25
43
|
attribute? :uri, Types::Strict::String
|
|
@@ -27,6 +45,7 @@ module Cocina
|
|
|
27
45
|
attribute? :value, Types::Strict::String
|
|
28
46
|
# URL or other pointer to the location of the language information.
|
|
29
47
|
attribute? :valueAt, Types::Strict::String
|
|
48
|
+
# Language of the descriptive element value
|
|
30
49
|
attribute? :valueLanguage, DescriptiveValueLanguage.optional
|
|
31
50
|
end
|
|
32
51
|
end
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
+
# BCP 47 language tag: https://www.rfc-editor.org/rfc/rfc4646.txt -- other applications
|
|
6
|
+
# (like media players) expect language codes of this format, see e.g. https://videojs.com/guides/text-tracks/#srclang
|
|
5
7
|
LanguageTag = Types::String
|
|
6
8
|
end
|
|
7
9
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cocina
|
|
4
|
+
module Models
|
|
5
|
+
# The DOI (Digital Object Identifier, https://www.doi.org) pattern for works registered
|
|
6
|
+
# by Stanford Libraries outside of SDR workflows. Please note that DOIs are *not* case-sensitive
|
|
7
|
+
# so both cases of letters should be permitted.
|
|
8
|
+
# example: 10.25936/629T-bx79
|
|
9
|
+
LibrariesDOI = Types::String.constrained(format: %r{^10\.25936/[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}$})
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Cocina
|
|
4
4
|
module Models
|
|
5
|
+
# The license governing reuse of the DRO. Should be an IRI for known licenses (i.e.
|
|
6
|
+
# CC, RightsStatement.org URI, etc.).
|
|
5
7
|
License = Types::String.enum('https://www.gnu.org/licenses/agpl.txt', 'https://www.apache.org/licenses/LICENSE-2.0', 'https://opensource.org/licenses/BSD-2-Clause', 'https://opensource.org/licenses/BSD-3-Clause', 'https://creativecommons.org/licenses/by/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode', 'https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode', 'https://creativecommons.org/licenses/by-nd/4.0/legalcode', 'https://creativecommons.org/licenses/by-sa/4.0/legalcode', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode', 'https://opensource.org/licenses/cddl1', 'https://www.eclipse.org/legal/epl-2.0', 'https://www.gnu.org/licenses/gpl-3.0-standalone.html', 'https://www.isc.org/downloads/software-support-policy/isc-license/', 'https://www.gnu.org/licenses/lgpl-3.0-standalone.html', 'https://opensource.org/licenses/MIT', 'https://www.mozilla.org/MPL/2.0/', 'https://opendatacommons.org/licenses/by/1-0/', 'http://opendatacommons.org/licenses/odbl/1.0/', 'https://opendatacommons.org/licenses/odbl/1-0/', 'https://creativecommons.org/publicdomain/mark/1.0/', 'https://opendatacommons.org/licenses/pddl/1-0/', 'https://creativecommons.org/licenses/by/3.0/legalcode', 'https://creativecommons.org/licenses/by-sa/3.0/legalcode', 'https://creativecommons.org/licenses/by-nd/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode', 'https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode', 'https://cocina.sul.stanford.edu/licenses/none')
|
|
6
8
|
end
|
|
7
9
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cocina
|
|
4
|
+
module Models
|
|
5
|
+
# The DOI (Digital Object Identifier, https://www.doi.org) pattern for DOIs registered
|
|
6
|
+
# before an SDR object has been registered---i.e., before it has a druid, which is
|
|
7
|
+
# a common pattern as of 2025. Please note that DOIs are *not* case-sensitive so both
|
|
8
|
+
# cases of letters should be permitted.
|
|
9
|
+
# example: 10.80343/12qF-5243
|
|
10
|
+
PreregisteredRepositoryDOI = Types::String.constrained(format: %r{^10\.(25740|80343)/[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}$})
|
|
11
|
+
end
|
|
12
|
+
end
|