Class: Datacite::Mapping::Resource

Inherits:
Object
  • Object
show all
Extended by:
Gem::Deprecate
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

Instance Method Summary collapse

Constructor Details

#initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], contributors: [], dates: [], language: nil, funding_references: [], 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 (Publisher)

    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, nil) (defaults to: nil)

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

  • 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.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/datacite/mapping/resource.rb', line 65

def initialize(identifier:, creators:, titles:, publisher:, publication_year:, subjects: [], contributors: [], dates: [], language: nil, funding_references: [], resource_type: nil, alternate_identifiers: [], related_identifiers: [], sizes: [], formats: [], version: nil, rights_list: [], descriptions: [], geo_locations: []) # rubocop:disable Metrics/MethodLength, 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:



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

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.



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

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.



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

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.



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

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.



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

empty_filtering_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.



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

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.



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

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.



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

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.



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

identifier_node :identifier, 'identifier', class: Identifier

#languageString

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

Returns:

  • (String)

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



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

text_node :language, 'language', default_value: nil

#publication_yearInteger

Returns year when the resource is made publicly available.

Returns:

  • (Integer)

    year when the resource is made publicly available.



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

numeric_node :publication_year, 'publicationYear'

#publisherPublisher

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

Returns:

  • (Publisher)

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



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

object_node :publisher, 'publisher', class: Publisher

Returns identifiers of related resources.

Returns:



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

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.



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

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.



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

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.



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

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.



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

empty_filtering_array_node :subjects, 'subjects', 'subject', class: Subject, default_value: []

#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.



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

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

#versionString

Returns version number of the resource. Optional.

Returns:

  • (String)

    version number of the resource. Optional.



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

text_node :version, 'version', default_value: nil

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.



269
270
271
# File 'lib/datacite/mapping/resource.rb', line 269

def creator_affiliations
  creators.map(&:affiliation_names)
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.



262
263
264
# File 'lib/datacite/mapping/resource.rb', line 262

def creator_names
  creators.map { |c| c&.creator_name&.value }
end

#fill_into_xml(xml, options = { mapping: :_default })

Overrides Namespaced::InstanceMethods.fill_into_xml to check mapping



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/datacite/mapping/resource.rb', line 32

def fill_into_xml(xml, options = { mapping: :_default })
  current_namespace = namespace
  return super if options[:mapping] != :datacite_3 || current_namespace.uri == DATACITE_3_NAMESPACE.uri

  begin
    @namespace = DATACITE_3_NAMESPACE.with_prefix(current_namespace.prefix)
    super
  ensure
    @namespace = current_namespace
  end
end

#funder_contribContributor?

Convenience method to get the funding contributor.

Returns:

  • (Contributor, nil)

    the contributor of type FUNDER, if any.



275
276
277
# File 'lib/datacite/mapping/resource.rb', line 275

def 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.



288
289
290
# File 'lib/datacite/mapping/resource.rb', line 288

def funder_id
  funder_contrib&.identifier
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.



294
295
296
# File 'lib/datacite/mapping/resource.rb', line 294

def funder_id_value
  funder_id&.value
end

#funder_nameString?

Deprecated.

contributor type 'funder' is deprecated. Use FundingReference instead.

Convenience method to get the name of the funding contributor.

Returns:

  • (String, nil)

    the name of the funding contributor, if any.



282
283
284
# File 'lib/datacite/mapping/resource.rb', line 282

def funder_name
  funder_contrib&.name
end

#funding_references=(value)



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

def funding_references=(value)
  @funding_references = value || []
end

#namespace

Shadows Namespaced::ClassMethods.namespace



27
28
29
# File 'lib/datacite/mapping/resource.rb', line 27

def namespace
  @namespace ||= DATACITE_4_NAMESPACE
end

#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



90
91
92
93
# File 'lib/datacite/mapping/resource.rb', line 90

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