Class: Datacite::Mapping::Resource

Inherits:
Object
  • Object
show all
Includes:
XML::MappingExtensions::Namespaced
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.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], funding_references: [], 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

Parameters:

  • identifier (Identifier)

    a persistent identifier that identifies a resource.

  • creators (Array<Creator>)

    the main researchers involved working on the data, or the authors of the publication in priority order.

  • titles (Array<Title>)

    the names or titles by which a resource is known.

  • publisher (String)

    the name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.

  • publication_year (Integer)

    year when the resource is made publicly available.

  • subjects (Array<Subject>) (defaults to: [])

    subjects, keywords, classification codes, or key phrases describing the resource.

  • funding_references (Array<FundingReference>) (defaults to: [])

    information about financial support (funding) for the resource being registered.

  • contributors (Array<Contributor>) (defaults to: [])

    institutions or persons responsible for collecting, creating, or otherwise contributing to the developement of the dataset.

  • dates (Array<Date>) (defaults to: [])

    different dates relevant to the work.

  • language (String) (defaults to: 'en')

    Primary language of the resource: an IETF BCP 47, ISO 639-1 language code. It's unclear from the spec whether language is required; to play it safe, if it's missing, we default to 'en'.

  • resource_type (ResourceType, nil) (defaults to: nil)

    the type of the resource

  • alternate_identifiers (Array<AlternateIdentifier>) (defaults to: [])

    an identifier or identifiers other than the primary Identifier applied to the resource being registered.

  • related_identifiers (Array<RelatedIdentifier>) (defaults to: [])

    identifiers of related resources.

  • sizes (Array<String>) (defaults to: [])

    unstructured size information about the resource.

  • formats (Array<String>) (defaults to: [])

    technical format of the resource, e.g. file extension or MIME type.

  • version (String) (defaults to: nil)

    version number of the resource.

  • rights_list (Array<Rights>) (defaults to: [])

    rights information for this resource.

  • descriptions (Array<Description>) (defaults to: [])

    all additional information that does not fit in any of the other categories.

  • geo_locations (Array<GeoLocations>) (defaults to: [])

    spatial region or named place where the data was gathered or about which the data is focused.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/datacite/mapping/resource.rb', line 50

def initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], funding_references: [], 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.identifier = identifier
  self.creators = creators
  self.titles = titles
  self.publisher = publisher
  self.publication_year = publication_year
  self.subjects = subjects
  self.funding_references = funding_references
  self.contributors = contributors
  self.dates = dates
  self.language = language
  self.resource_type = resource_type
  self.alternate_identifiers = alternate_identifiers
  self.related_identifiers = related_identifiers
  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_identifiersArray<AlternateIdentifier>

Returns an identifier or identifiers other than the primary Identifier applied to the resource being registered.

Returns:



168
# File 'lib/datacite/mapping/resource.rb', line 168

array_node :alternate_identifiers, 'alternateIdentifiers', 'alternateIdentifier', class: AlternateIdentifier, default_value: []

#contributorsArray<Contributor>

Returns institutions or persons responsible for collecting, creating, or otherwise contributing to the developement of the dataset.

Returns:

  • (Array<Contributor>)

    institutions or persons responsible for collecting, creating, or otherwise contributing to the developement of the dataset.



151
# File 'lib/datacite/mapping/resource.rb', line 151

array_node :contributors, 'contributors', 'contributor', class: Contributor, default_value: []

#creatorsArray<Creator>

Returns the main researchers involved working on the data, or the authors of the publication in priority order.

Returns:

  • (Array<Creator>)

    the main researchers involved working on the data, or the authors of the publication in priority order.



127
# File 'lib/datacite/mapping/resource.rb', line 127

array_node :creators, 'creators', 'creator', class: Creator

#datesArray<Date>

Returns different dates relevant to the work.

Returns:

  • (Array<Date>)

    different dates relevant to the work.



155
# File 'lib/datacite/mapping/resource.rb', line 155

array_node :dates, 'dates', 'date', class: Date, default_value: []

#descriptionsArray<Description>

Returns all additional information that does not fit in any of the other categories.

Returns:

  • (Array<Description>)

    all additional information that does not fit in any of the other categories.



192
# File 'lib/datacite/mapping/resource.rb', line 192

array_node :descriptions, 'descriptions', 'description', class: Description, default_value: []

#formatsArray<String>

Returns technical format of the resource, e.g. file extension or MIME type.

Returns:

  • (Array<String>)

    technical format of the resource, e.g. file extension or MIME type.



180
# File 'lib/datacite/mapping/resource.rb', line 180

array_node :formats, 'formats', 'format', class: String, default_value: []

#fundingReferencesArray<FundingReference>

Returns information about financial support (funding) for the resource being registered.

Returns:

  • (Array<FundingReference>)

    information about financial support (funding) for the resource being registered.



147
# File 'lib/datacite/mapping/resource.rb', line 147

array_node :funding_references, 'fundingReferences', 'fundingReference', class: FundingReference, default_value: []

#geo_locationsArray<GeoLocations>

Returns spatial region or named place where the data was gathered or about which the data is focused.

Returns:

  • (Array<GeoLocations>)

    spatial region or named place where the data was gathered or about which the data is focused.



196
# File 'lib/datacite/mapping/resource.rb', line 196

array_node :geo_locations, 'geoLocations', 'geoLocation', class: GeoLocation, default_value: []

#identifierIdentifier

Returns a persistent identifier that identifies a resource.

Returns:

  • (Identifier)

    a persistent identifier that identifies a resource.



123
# File 'lib/datacite/mapping/resource.rb', line 123

object_node :identifier, 'identifier', class: Identifier

#languageString

It's unclear from the spec whether language is required; to play it safe, if it's missing, we default to 'en'.

Returns:

  • (String)

    Primary language of the resource: an IETF BCP 47, ISO 639-1 language code.



160
161
162
# File 'lib/datacite/mapping/resource.rb', line 160

def language
  @language || 'en'
end

#publication_yearInteger

Returns year when the resource is made publicly available.

Returns:

  • (Integer)

    year when the resource is made publicly available.



139
# File 'lib/datacite/mapping/resource.rb', line 139

numeric_node :publication_year, 'publicationYear'

#publisherString

Returns the name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.

Returns:

  • (String)

    the name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource.



135
# File 'lib/datacite/mapping/resource.rb', line 135

text_node :publisher, 'publisher'

Returns identifiers of related resources.

Returns:



172
# File 'lib/datacite/mapping/resource.rb', line 172

array_node :related_identifiers, 'relatedIdentifiers', 'relatedIdentifier', class: RelatedIdentifier, default_value: []

#resource_typeResourceType?

Returns the type of the resource. Optional.

Returns:

  • (ResourceType, nil)

    the type of the resource. Optional.



164
# File 'lib/datacite/mapping/resource.rb', line 164

object_node :resource_type, 'resourceType', class: ResourceType, default_value: nil

#rights_listArray<Rights>

Returns rights information for this resource.

Returns:

  • (Array<Rights>)

    rights information for this resource.



188
# File 'lib/datacite/mapping/resource.rb', line 188

array_node :rights_list, 'rightsList', 'rights', class: Rights, default_value: []

#sizesArray<String>

Returns unstructured size information about the resource.

Returns:

  • (Array<String>)

    unstructured size information about the resource.



176
# File 'lib/datacite/mapping/resource.rb', line 176

array_node :sizes, 'sizes', 'size', class: String, default_value: []

#subjectsArray<Subject>

Returns subjects, keywords, classification codes, or key phrases describing the resource.

Returns:

  • (Array<Subject>)

    subjects, keywords, classification codes, or key phrases describing the resource.



143
144
145
# File 'lib/datacite/mapping/resource.rb', line 143

def subjects
  (@subjects ||= []).select(&:value)
end

#titlesArray<Title>

Returns the names or titles by which a resource is known.

Returns:

  • (Array<Title>)

    the names or titles by which a resource is known.



131
# File 'lib/datacite/mapping/resource.rb', line 131

array_node :titles, 'titles', 'title', class: Title

#versionString

Returns version number of the resource. Optional.

Returns:

  • (String)

    version number of the resource. Optional.



184
# File 'lib/datacite/mapping/resource.rb', line 184

text_node :version, 'version', default_value: nil

Class Method Details

.namespace_prefix=(prefix)

Sets the namespace prefix to be used when writing out XML (defaults to nil)

Parameters:

  • prefix (String, nil)

    The new prefix, or nil to use the default, unprefixed namespace



75
76
77
78
# File 'lib/datacite/mapping/resource.rb', line 75

def self.namespace_prefix=(prefix)
  old_namespace = namespace
  namespace ::XML::MappingExtensions::Namespace.new(uri: old_namespace.uri, schema_location: old_namespace.schema_location, prefix: prefix)
end

Instance Method Details

#creator_affiliationsArray[Array[String]]

Convenience method to get the creators' affiliations. (Bear in mind that each creator can have multiple affiliations.)

Returns:

  • (Array[Array[String]])

    An array containing each creator's array of affiliations.



207
208
209
# File 'lib/datacite/mapping/resource.rb', line 207

def creator_affiliations
  creators.map(&:affiliations)
end

#creator_names[Array[String]] An array of the creators' names.

Convenience method to get the creators' names.

Returns:

  • ([Array[String]] An array of the creators' names.)

    [Array[String]] An array of the creators' names.



200
201
202
# File 'lib/datacite/mapping/resource.rb', line 200

def creator_names
  creators.map(&:name)
end

#funder_contribContributor?

Convenience method to get the funding contributor.

Returns:

  • (Contributor, nil)

    the contributor of type FUNDER, if any.



213
214
215
# File 'lib/datacite/mapping/resource.rb', line 213

def funder_contrib
  @funder_contrib ||= contributors.find { |c| c.type == ContributorType::FUNDER }
end

#funder_idNameIdentifier?

Convenience method to get the funding contributor identifier.

Returns:

  • (NameIdentifier, nil)

    the identifier of the funding contributor, if any.



225
226
227
# File 'lib/datacite/mapping/resource.rb', line 225

def funder_id
  funder_contrib.identifier if funder_contrib
end

#funder_id_valueString?

Convenience method to get the funding contributor identifier as a string.

Returns:

  • (String, nil)

    the string value of the funding contributor's identifier, if any.



231
232
233
# File 'lib/datacite/mapping/resource.rb', line 231

def funder_id_value
  funder_id.value if funder_id
end

#funder_nameString?

Convenience method to get the name of the funding contributor.

Returns:

  • (String, nil)

    the name of the funding contributor, if any.



219
220
221
# File 'lib/datacite/mapping/resource.rb', line 219

def funder_name
  funder_contrib.name if funder_contrib
end