Class: Datacite::Mapping::Resource
- Inherits:
-
Object
- Object
- Datacite::Mapping::Resource
- Includes:
- XML::Mapping
- Defined in:
- lib/datacite/mapping/resource.rb
Overview
A collection of metadata properties chosen for the accurate and consistent identification of a resource for citation and retrieval purposes, along with recommended use instructions. The resource that is being identified can be of any kind, but it is typically a dataset.
Constant Summary collapse
- NAMESPACE =
XML::MappingExtensions::Namespace.new( uri: 'http://datacite.org/schema/kernel-3', schema_location: 'http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd' )
Instance Attribute Summary collapse
-
#alternate_identifiers ⇒ Array<AlternateIdentifier>
An identifier or identifiers other than the primary Identifier applied to the resource being registered.
-
#contributors ⇒ Array<Contributor>
Institutions or persons responsible for collecting, creating, or otherwise contributing to the developement of the dataset.
-
#creators ⇒ Array<Creator>
The main researchers involved working on the data, or the authors of the publication in priority order.
-
#dates ⇒ Array<Date>
Different dates relevant to the work.
-
#descriptions ⇒ Array<Description>
All additional information that does not fit in any of the other categories.
-
#formats ⇒ Array<String>
Technical format of the resource, e.g.
-
#geo_locations ⇒ Array<GeoLocations>
Spatial region or named place where the data was gathered or about which the data is focused.
-
#identifier ⇒ Identifier
A persistent identifier that identifies a resource.
-
#language ⇒ String
It's unclear from the spec whether language is required; to play it safe, if it's missing, we default to 'en'.
-
#publication_year ⇒ Integer
Year when the resource is made publicly available.
-
#publisher ⇒ String
The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.
-
#related_identifiers ⇒ Array<RelatedIdentifier>
Identifiers of related resources.
-
#resource_type ⇒ ResourceType?
The type of the resource.
-
#rights_list ⇒ Array<Rights>
Rights information for this resource.
-
#sizes ⇒ Array<String>
Unstructured size information about the resource.
-
#subjects ⇒ Array<Subject>
Subjects, keywords, classification codes, or key phrases describing the resource.
-
#titles ⇒ Array<Title>
The names or titles by which a resource is known.
-
#version ⇒ String
Version number of the resource.
Class Method Summary collapse
-
.allocate
Overrides
Class.allocate, used byXML::Mappingon read, to make sure the namespace gets set even when we don't call the initializer.
Instance Method Summary collapse
-
#creator_affiliations ⇒ Array[Array[String]]
Convenience method to get the creators' affiliations.
-
#creator_names ⇒ [Array[String]] An array of the creators' names.
Convenience method to get the creators' names.
-
#funder_contrib ⇒ Contributor?
Convenience method to get the funding contributor.
-
#funder_id ⇒ NameIdentifier?
Convenience method to get the funding contributor identifier.
-
#funder_id_value ⇒ String?
Convenience method to get the funding contributor identifier as a string.
-
#funder_name ⇒ String?
Convenience method to get the name of the funding contributor.
-
#initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], contributors: [], dates: [], language: 'en', resource_type: nil, alternate_identifiers: [], related_identifiers: [], sizes: [], formats: [], version: nil, rights_list: [], descriptions: [], geo_locations: []) ⇒ Resource
constructor
Initialies a new Resource.
-
#namespace_prefix=(prefix)
Sets the namespace prefix to be used when writing out XML (defaults to nil).
Constructor Details
#initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], contributors: [], dates: [], language: 'en', resource_type: nil, alternate_identifiers: [], related_identifiers: [], sizes: [], formats: [], version: nil, rights_list: [], descriptions: [], geo_locations: []) ⇒ Resource
Initialies a new Datacite::Mapping::Resource
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/datacite/mapping/resource.rb', line 46 def initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], contributors: [], dates: [], language: 'en', resource_type: nil, alternate_identifiers: [], related_identifiers: [], sizes: [], formats: [], version: nil, rights_list: [], descriptions: [], geo_locations: []) # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists, Metrics/AbcSize self.namespace = NAMESPACE self.identifier = identifier self.creators = creators self.titles = titles self.publisher = publisher self.publication_year = publication_year self.subjects = subjects self.contributors = contributors self.dates = dates self.language = language self.resource_type = resource_type self.alternate_identifiers = alternate_identifiers self. = self.sizes = sizes self.formats = formats self.version = version self.rights_list = rights_list self.descriptions = descriptions self.geo_locations = geo_locations end |
Instance Attribute Details
#alternate_identifiers ⇒ Array<AlternateIdentifier>
Returns an identifier or identifiers other than the primary Identifier applied to the resource being registered.
170 |
# File 'lib/datacite/mapping/resource.rb', line 170 array_node :alternate_identifiers, 'alternateIdentifiers', 'alternateIdentifier', class: AlternateIdentifier, default_value: [] |
#contributors ⇒ Array<Contributor>
Returns institutions or persons responsible for collecting, creating, or otherwise contributing to the developement of the dataset.
153 |
# File 'lib/datacite/mapping/resource.rb', line 153 array_node :contributors, 'contributors', 'contributor', class: Contributor, default_value: [] |
#creators ⇒ Array<Creator>
Returns the main researchers involved working on the data, or the authors of the publication in priority order.
133 |
# File 'lib/datacite/mapping/resource.rb', line 133 array_node :creators, 'creators', 'creator', class: Creator |
#dates ⇒ Array<Date>
Returns different dates relevant to the work.
157 |
# File 'lib/datacite/mapping/resource.rb', line 157 array_node :dates, 'dates', 'date', class: Date, default_value: [] |
#descriptions ⇒ Array<Description>
Returns all additional information that does not fit in any of the other categories.
194 |
# File 'lib/datacite/mapping/resource.rb', line 194 array_node :descriptions, 'descriptions', 'description', class: Description, default_value: [] |
#formats ⇒ Array<String>
Returns technical format of the resource, e.g. file extension or MIME type.
182 |
# File 'lib/datacite/mapping/resource.rb', line 182 array_node :formats, 'formats', 'format', class: String, default_value: [] |
#geo_locations ⇒ Array<GeoLocations>
Returns spatial region or named place where the data was gathered or about which the data is focused.
198 |
# File 'lib/datacite/mapping/resource.rb', line 198 array_node :geo_locations, 'geoLocations', 'geoLocation', class: GeoLocation, default_value: [] |
#identifier ⇒ Identifier
Returns a persistent identifier that identifies a resource.
129 |
# File 'lib/datacite/mapping/resource.rb', line 129 object_node :identifier, 'identifier', class: Identifier |
#language ⇒ String
It's unclear from the spec whether language is required; to play it safe, if it's missing, we default to 'en'.
162 163 164 |
# File 'lib/datacite/mapping/resource.rb', line 162 def language @language || 'en' end |
#publication_year ⇒ Integer
Returns year when the resource is made publicly available.
145 |
# File 'lib/datacite/mapping/resource.rb', line 145 numeric_node :publication_year, 'publicationYear' |
#publisher ⇒ String
Returns the name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.
141 |
# File 'lib/datacite/mapping/resource.rb', line 141 text_node :publisher, 'publisher' |
#related_identifiers ⇒ Array<RelatedIdentifier>
Returns identifiers of related resources.
174 |
# File 'lib/datacite/mapping/resource.rb', line 174 array_node :related_identifiers, 'relatedIdentifiers', 'relatedIdentifier', class: RelatedIdentifier, default_value: [] |
#resource_type ⇒ ResourceType?
Returns the type of the resource. Optional.
166 |
# File 'lib/datacite/mapping/resource.rb', line 166 object_node :resource_type, 'resourceType', class: ResourceType, default_value: nil |
#rights_list ⇒ Array<Rights>
Returns rights information for this resource.
190 |
# File 'lib/datacite/mapping/resource.rb', line 190 array_node :rights_list, 'rightsList', 'rights', class: Rights, default_value: [] |
#sizes ⇒ Array<String>
Returns unstructured size information about the resource.
178 |
# File 'lib/datacite/mapping/resource.rb', line 178 array_node :sizes, 'sizes', 'size', class: String, default_value: [] |
#subjects ⇒ Array<Subject>
Returns subjects, keywords, classification codes, or key phrases describing the resource.
149 |
# File 'lib/datacite/mapping/resource.rb', line 149 array_node :subjects, 'subjects', 'subject', class: Subject, default_value: [] |
#titles ⇒ Array<Title>
Returns the names or titles by which a resource is known.
137 |
# File 'lib/datacite/mapping/resource.rb', line 137 array_node :titles, 'titles', 'title', class: Title |
#version ⇒ String
Returns version number of the resource. Optional.
186 |
# File 'lib/datacite/mapping/resource.rb', line 186 text_node :version, 'version', default_value: nil |
Class Method Details
.allocate
Overrides Class.allocate, used by XML::Mapping on read, to make sure
the namespace gets set even when we don't call the initializer
70 71 72 73 74 |
# File 'lib/datacite/mapping/resource.rb', line 70 def self.allocate res = super res.namespace = NAMESPACE res end |
Instance Method Details
#creator_affiliations ⇒ Array[Array[String]]
Convenience method to get the creators' affiliations. (Bear in mind that each creator can have multiple affiliations.)
209 210 211 |
# File 'lib/datacite/mapping/resource.rb', line 209 def creator_affiliations creators.map(&:affiliations) end |
#creator_names ⇒ [Array[String]] An array of the creators' names.
Convenience method to get the creators' names.
202 203 204 |
# File 'lib/datacite/mapping/resource.rb', line 202 def creator_names creators.map(&:name) end |
#funder_contrib ⇒ Contributor?
Convenience method to get the funding contributor.
215 216 217 |
# File 'lib/datacite/mapping/resource.rb', line 215 def funder_contrib @funder_contrib ||= contributors.find { |c| c.type == ContributorType::FUNDER } end |
#funder_id ⇒ NameIdentifier?
Convenience method to get the funding contributor identifier.
227 228 229 |
# File 'lib/datacite/mapping/resource.rb', line 227 def funder_id funder_contrib.identifier if funder_contrib end |
#funder_id_value ⇒ String?
Convenience method to get the funding contributor identifier as a string.
233 234 235 |
# File 'lib/datacite/mapping/resource.rb', line 233 def funder_id_value funder_id.value if funder_id end |
#funder_name ⇒ String?
Convenience method to get the name of the funding contributor.
221 222 223 |
# File 'lib/datacite/mapping/resource.rb', line 221 def funder_name funder_contrib.name if funder_contrib end |
#namespace_prefix=(prefix)
Sets the namespace prefix to be used when writing out XML (defaults to nil)
79 80 81 82 |
# File 'lib/datacite/mapping/resource.rb', line 79 def namespace_prefix=(prefix) old_namespace = namespace self.namespace = ::XML::MappingExtensions::Namespace.new(uri: old_namespace.uri, schema_location: old_namespace.schema_location, prefix: prefix) end |