class DwcaHunter::ResourceAOS
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
DwcaHunter::Resource::new
# File lib/dwca_hunter/resources/aos-birds.rb, line 5 def initialize(opts = {}) @command = "aos-birds" @title = "American Ornithological Society" @url = "http://checklist.americanornithology.org/taxa.csv" @UUID = "91d38806-8435-479f-a18d-705e5cb0767c" @download_path = File.join(Dir.tmpdir, "dwca_hunter", "aos", "data.csv") @synonyms = [] @names = [] @vernaculars = [] @extensions = [] @synonyms_hash = {} @vernaculars_hash = {} super(opts) end
Public Instance Methods
download()
click to toggle source
# File lib/dwca_hunter/resources/aos-birds.rb, line 23 def download puts "Downloading csv from remote" `curl -s -L #{@url} -o #{@download_path}` end
make_dwca()
click to toggle source
# File lib/dwca_hunter/resources/aos-birds.rb, line 30 def make_dwca DwcaHunter.logger_write(object_id, "Extracting data") get_names generate_dwca end
unpack()
click to toggle source
# File lib/dwca_hunter/resources/aos-birds.rb, line 28 def unpack; end
Private Instance Methods
collect_names()
click to toggle source
# File lib/dwca_hunter/resources/aos-birds.rb, line 43 def collect_names @names_index = {} file = CSV.open(File.join(@download_dir, "data.csv"), headers: true) file.each_with_index do |row, _i| taxon_id = row["id"] name_string = row["species"] kingdom = "Animalia" phylum = "Chordata" klass = "Aves" order = row["order"] family = row["family"] genus = row["genus"] code = "ICZN" @names << { taxon_id: taxon_id, name_string: name_string, kingdom: kingdom, phylum: phylum, klass: klass, order: order, family: family, genus: genus, code: code } if row["common_name"].to_s != "" @vernaculars << { taxon_id: taxon_id, vern: row["common_name"], lang: "en" } end next unless row["french_name"].to_s != "" @vernaculars << { taxon_id: taxon_id, vern: row["french_name"], lang: "fr" } end end
generate_dwca()
click to toggle source
Calls superclass method
DwcaHunter::Resource#generate_dwca
# File lib/dwca_hunter/resources/aos-birds.rb, line 86 def generate_dwca DwcaHunter.logger_write(object_id, "Creating DarwinCore Archive file") @core = [["http://rs.tdwg.org/dwc/terms/taxonID", "http://rs.tdwg.org/dwc/terms/scientificName", "http://rs.tdwg.org/dwc/terms/kingdom", "http://rs.tdwg.org/dwc/terms/phylum", "http://rs.tdwg.org/dwc/terms/class", "http://rs.tdwg.org/dwc/terms/order", "http://rs.tdwg.org/dwc/terms/family", "http://rs.tdwg.org/dwc/terms/genus", "http://rs.tdwg.org/dwc/terms/nomenclaturalCode"]] @names.each do |n| @core << [n[:taxon_id], n[:name_string], n[:kingdom], n[:phylum], n[:klass], n[:order], n[:family], n[:genus], n[:code]] end @extensions << { data: [[ "http://rs.tdwg.org/dwc/terms/taxonID", "http://rs.tdwg.org/dwc/terms/vernacularName", "http://purl.org/dc/terms/language" ]], file_name: "vernacular_names.txt", row_type: "http://rs.gbif.org/terms/1.0/VernacularName" } @vernaculars.each do |v| @extensions[-1][:data] << [v[:taxon_id], v[:vern], v[:lang]] end @eml = { id: @uuid, title: @title, authors: [ { first_name: "R. T.", last_name: "Chesser" } ], metadata_providers: [ { first_name: "Dmitry", last_name: "Mozzherin", email: "dmozzherin@gmail.com" } ], abstract: "The American Ornithological Society's (AOS) Checklist is " \ "the official source on the taxonomy of birds found in North and " \ "Middle America, including adjacent islands. This list is produced " \ "by the North American Classification and Nomenclature Committee " \ "(NACC) of the AOS.\n\n" \ "Recommended citation: Chesser, R. T., K. J. Burns, C. Cicero, " \ "J. L. Dunn, A. W. Kratter, I. J. Lovette, P. C. Rasmussen, " \ "J. V. Remsen, Jr., D. F. Stotz, and K. Winker. 2019. Check-list " \ "of North American Birds (online). American Ornithological Society. " \ "http://checklist.aou.org/taxa", url: @url } super end
get_names()
click to toggle source
# File lib/dwca_hunter/resources/aos-birds.rb, line 38 def get_names Dir.chdir(@download_dir) collect_names end