Module: Export::CSV::Dwc::Extension::Media

Defined in:
lib/export/csv/dwc/extension/media.rb

Overview

CSV for for a ResourceRelationship based extension

Constant Summary collapse

HEADERS_HASH =

There are 6 duplicate names:

  • type

  • rights

  • source

  • creator

  • language

  • format

See rs.gbif.org/extension/ac/audiovisual_2024_11_07.xml

{
  coreid: '', # required by dwca to link to core file, not part of media
  identifier: 'http://purl.org/dc/terms/identifier',
  'dc:type': 'http://purl.org/dc/elements/1.1/type',
  #'dcmi:type': 'http://purl.org/dc/terms/type', # GBIF didn't recognize this for some reason
  #subtypeLiteral: 'http://rs.tdwg.org/ac/terms/subtypeLiteral',
  #subtype: 'http://rs.tdwg.org/ac/terms/subtype',
  #title: 'http://purl.org/dc/terms/title',
  #modified: 'http://purl.org/dc/terms/modified',
  #MetadataDate: 'http://ns.adobe.com/xap/1.0/MetadataDate',
  #metadataLanguageLiteral: 'http://rs.tdwg.org/ac/terms/metadataLanguageLiteral',
  #metadataLanguage: 'http://rs.tdwg.org/ac/terms/metadataLanguage',
  providerManagedID: 'http://rs.tdwg.org/ac/terms/providerManagedID',
  #Rating: 'http://ns.adobe.com/xap/1.0/Rating',
  #commenterLiteral: 'http://rs.tdwg.org/ac/terms/commenterLiteral',
  #commenter: 'http://rs.tdwg.org/ac/terms/commenter',
  #comments: 'http://rs.tdwg.org/ac/terms/comments',
  #reviewerLiteral: 'http://rs.tdwg.org/ac/terms/reviewerLiteral',
  #reviewer: 'http://rs.tdwg.org/ac/terms/reviewer',
  #reviewerComments: 'http://rs.tdwg.org/ac/terms/reviewerComments',
  #available: 'http://purl.org/dc/terms/available',
  #hasServiceAccessPoint: 'http://rs.tdwg.org/ac/terms/hasServiceAccessPoint',
  'dc:rights': 'http://purl.org/dc/elements/1.1/rights',
  'dcterms:rights': 'http://purl.org/dc/terms/rights',
  Owner: 'http://ns.adobe.com/xap/1.0/rights/Owner',
  UsageTerms: 'http://ns.adobe.com/xap/1.0/rights/UsageTerms',
  #WebStatement: 'http://ns.adobe.com/xap/1.0/rights/WebStatement',
  #licenseLogoURL: 'http://rs.tdwg.org/ac/terms/licenseLogoURL',
  Credit: 'http://ns.adobe.com/photoshop/1.0/Credit',
  #attributionLogoURL: 'http://rs.tdwg.org/ac/terms/attributionLogoURL',
  #attributionLinkURL: 'http://rs.tdwg.org/ac/terms/attributionLinkURL',
  #fundingAttribution: 'http://rs.tdwg.org/ac/terms/fundingAttribution',
  #'dc:source': 'http://purl.org/dc/elements/1.1/source',
  #'dcterms:source': 'http://purl.org/dc/terms/source',
  'dc:creator': 'http://purl.org/dc/elements/1.1/creator',
  'dcterms:creator': 'http://purl.org/dc/terms/creator',
  #providerLiteral: 'http://rs.tdwg.org/ac/terms/providerLiteral',
  #provider: 'http://rs.tdwg.org/ac/terms/provider',
  #metadataCreatorLiteral: 'http://rs.tdwg.org/ac/terms/metadataCreatorLiteral',
  #metadataCreator: 'http://rs.tdwg.org/ac/terms/metadataCreator',
  #metadataProviderLiteral: 'http://rs.tdwg.org/ac/terms/metadataProviderLiteral',
  #metadataProvider: 'http://rs.tdwg.org/ac/terms/metadataProvider',
  description: 'http://purl.org/dc/terms/description',
  caption: 'http://rs.tdwg.org/ac/terms/caption',
  #'dc:language': 'http://purl.org/dc/elements/1.1/language',
  #'dcterms:language': 'http://purl.org/dc/terms/language',
  #physicalSetting: 'http://rs.tdwg.org/ac/terms/physicalSetting',
  #CVterm: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/CVterm',
  #subjectCategoryVocabulary: 'http://rs.tdwg.org/ac/terms/subjectCategoryVocabulary',
  #tag: 'http://rs.tdwg.org/ac/terms/tag',
  #LocationShown: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationShown',
  #WorldRegion: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/WorldRegion',
  #CountryCode: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryCode',
  #CountryName: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryName',
  #ProvinceState: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/ProvinceState',
  #City: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/City',
  #Sublocation: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/Sublocation',
  #temporal: 'http://purl.org/dc/terms/temporal',
  #CreateDate: 'http://ns.adobe.com/xap/1.0/CreateDate',
  #timeOfDay: 'http://rs.tdwg.org/ac/terms/timeOfDay',
  #taxonCoverage: 'http://rs.tdwg.org/ac/terms/taxonCoverage',
  #scientificName: 'http://rs.tdwg.org/dwc/terms/scientificName',
  #identificationQualifier: 'http://rs.tdwg.org/dwc/terms/identificationQualifier',
  #vernacularName: 'http://rs.tdwg.org/dwc/terms/vernacularName',
  #nameAccordingTo: 'http://rs.tdwg.org/dwc/terms/nameAccordingTo',
  #scientificNameID: 'http://rs.tdwg.org/dwc/terms/scientificNameID',
  #otherScientificName: 'http://rs.tdwg.org/ac/terms/otherScientificName',
  #identifiedBy: 'http://rs.tdwg.org/dwc/terms/identifiedBy',
  #dateIdentified: 'http://rs.tdwg.org/dwc/terms/dateIdentified',
  #taxonCount: 'http://rs.tdwg.org/ac/terms/taxonCount',
  #subjectPart: 'http://rs.tdwg.org/ac/terms/subjectPart',
  #sex: 'http://rs.tdwg.org/dwc/terms/sex',
  #lifeStage: 'http://rs.tdwg.org/dwc/terms/lifeStage',
  #subjectOrientation: 'http://rs.tdwg.org/ac/terms/subjectOrientation',
  #preparations: 'http://rs.tdwg.org/dwc/terms/preparations',
  #LocationCreated: 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationCreated',
  #digitizationDate: 'http://rs.tdwg.org/ac/terms/digitizationDate',
  #captureDevice: 'http://rs.tdwg.org/ac/terms/captureDevice',
  #resourceCreationTechnique: 'http://rs.tdwg.org/ac/terms/resourceCreationTechnique',
  #IDofContainingCollection: 'http://rs.tdwg.org/ac/terms/IDofContainingCollection',
  #relatedResourceID: 'http://rs.tdwg.org/ac/terms/relatedResourceID',
  #providerID: 'http://rs.tdwg.org/ac/terms/providerID',
  #derivedFrom: 'http://rs.tdwg.org/ac/terms/derivedFrom',
  associatedSpecimenReference: 'http://rs.tdwg.org/ac/terms/associatedSpecimenReference',
  associatedObservationReference: 'http://rs.tdwg.org/ac/terms/associatedObservationReference',
  accessURI: 'http://rs.tdwg.org/ac/terms/accessURI',
  'dc:format': 'http://purl.org/dc/elements/1.1/format',
  #'dcterms:format': 'http://purl.org/dc/terms/format',
  #variantLiteral: 'http://rs.tdwg.org/ac/terms/variantLiteral',
  #variant: 'http://rs.tdwg.org/ac/terms/variant',
  #variantDescription: 'http://rs.tdwg.org/ac/terms/variantDescription',
  furtherInformationURL: 'http://rs.tdwg.org/ac/terms/furtherInformationURL',
  #licensingException: 'http://rs.tdwg.org/ac/terms/licensingException',
  #serviceExpectation: 'http://rs.tdwg.org/ac/terms/serviceExpectation',
  #hashFunction: 'http://rs.tdwg.org/ac/terms/hashFunction',
  #hashValue: 'http://rs.tdwg.org/ac/terms/hashValue',
  PixelXDimension: 'http://ns.adobe.com/exif/1.0/PixelXDimension',
  PixelYDimension: 'http://ns.adobe.com/exif/1.0/PixelYDimension',
}.freeze
HEADERS =
HEADERS_HASH.keys.freeze
HEADERS_INDEX =
HEADERS.each_with_index.to_h.freeze
HEADERS_NAMESPACES =
HEADERS_HASH.values.freeze

Class Method Summary collapse

Class Method Details

.csv(collection_objects_scope, field_occurrences_scope) ⇒ Object



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/export/csv/dwc/extension/media.rb', line 118

def self.csv(collection_objects_scope, field_occurrences_scope)
  tbl = []
  tbl[0] = HEADERS

  collection_objects_scope.find_each do |co|
    co.darwin_core_media_extension_rows.each do |r|
      tbl << r
    end
  end

  field_occurrences_scope.find_each do |fo|
    fo.darwin_core_media_extension_rows.each do |r|
      tbl << r
    end
  end

  output = StringIO.new
  tbl.each do |row|
    output.puts ::CSV.generate_line(row, col_sep: "\t", encoding: Encoding::UTF_8)
  end

  output.string
end