Module: Export::Coldp::Files::NameRelation
- Defined in:
- lib/export/coldp/files/name_relation.rb
Overview
nameID relatedNameID type referenceID remarks
Constant Summary collapse
- BLOCKED =
These concepts do not really fit with the CoL Name/NameRelation data model or are represented in a different way TODO: SupressedSynony misspelled in TW models, which probably should be SupressedSynonym
%w{ TaxonNameRelationship::Typification TaxonNameRelationship::CurrentCombination TaxonNameRelationship::Combination TaxonNameRelationship::Combination::Family TaxonNameRelationship::Combination::Genus TaxonNameRelationship::Combination::Subgenus TaxonNameRelationship::Combination::Species TaxonNameRelationship::Combination::Subspecies TaxonNameRelationship::Combination::Variety TaxonNameRelationship::Combination::Subvariety TaxonNameRelationship::Combination::Series TaxonNameRelationship::Combination::Subseries TaxonNameRelationship::Combination::Section TaxonNameRelationship::Combination::Subsection TaxonNameRelationship::Combination::Form TaxonNameRelationship::Combination::Subform TaxonNameRelationship::OriginalCombination TaxonNameRelationship::OriginalCombination::Original TaxonNameRelationship::OriginalCombination::OriginalGenus TaxonNameRelationship::OriginalCombination::OriginalSubgenus TaxonNameRelationship::OriginalCombination::OriginalSpecies TaxonNameRelationship::OriginalCombination::OriginalSubspecies TaxonNameRelationship::OriginalCombination::OriginalVariety TaxonNameRelationship::OriginalCombination::OriginalSubvariety TaxonNameRelationship::OriginalCombination::OriginalForm TaxonNameRelationship::OriginalCombination::OriginalSubform TaxonNameRelationship::SourceClassifiedAs TaxonNameRelationship::Iczn::Invalidating TaxonNameRelationship::Iczn::Invalidating::Suppression::Total TaxonNameRelationship::Iczn::Invalidating::Misapplication TaxonNameRelationship::Iczn::Invalidating::Synonym TaxonNameRelationship::Iczn::Invalidating::Synonym::Subjective TaxonNameRelationship::Iczn::Invalidating::Usage TaxonNameRelationship::Iczn::PotentiallyValidating TaxonNameRelationship::Iczn::Validating TaxonNameRelationship::Iczn::Validating::UncertainPlacement TaxonNameRelationship::Icnp::Accepting TaxonNameRelationship::Icnp::Unaccepting TaxonNameRelationship::Icnp::Unaccepting::Synonym TaxonNameRelationship::Icnp::Unaccepting::SupressedSynonym TaxonNameRelationship::Icnp::Unaccepting::Usage TaxonNameRelationship::Icn::Accepting TaxonNameRelationship::Icn::Unaccepting TaxonNameRelationship::Icn::Unaccepting::Synonym TaxonNameRelationship::Icn::Unaccepting::Synonym::Heterotypic TaxonNameRelationship::Icn::Unaccepting::Usage TaxonNameRelationship::Icvcn::Accepting TaxonNameRelationship::Icvcn::Accepting::UncertainPlacement TaxonNameRelationship::Icvcn::Unaccepting TaxonNameRelationship::Hybrid }.freeze
Class Method Summary collapse
- .generate(otus, project_members, reference_csv = nil) ⇒ Object
-
.taxon_name_relationships(otus) ⇒ Object
TODO: This is the original set, but it doesn’t quite feel right.
Class Method Details
.generate(otus, project_members, reference_csv = nil) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/export/coldp/files/name_relation.rb', line 79 def self.generate(otus, project_members, reference_csv = nil ) rels = nil text = ::CSV.generate(col_sep: "\t") do |csv| csv << %w{ nameID relatedNameID type referenceID modified modifiedBy remarks } rels = taxon_name_relationships(otus) rels.length rels.each do |tnr| next if ::Export::Coldp.skipped_combinations.include?(tnr.subject_taxon_name_id) unless tnr.type.constantize.nomen_uri.blank? csv << [ tnr.subject_taxon_name_id, # nameID tnr.object_taxon_name_id, # relatedNameID tnr.type.constantize.nomen_uri, # type tnr.a_source_id, # referenceID Export::Coldp.modified(tnr[:updated_at]), # modified Export::Coldp.modified_by(tnr[:updated_by_id], project_members), # modified_by nil, # remarks ] end end end sources = [] sources = Source.with(name_scope: rels) .joins(:citations) .joins("JOIN name_scope ns on ns.id = citations.citation_object_id AND citations.citation_object_type = 'TaxonNameRelationship'") .distinct Export::Coldp::Files::Reference.add_reference_rows(sources, reference_csv, project_members) if reference_csv && sources.any? text end |
.taxon_name_relationships(otus) ⇒ Object
TODO: This is the original set, but it doesn’t quite feel right.
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/export/coldp/files/name_relation.rb', line 67 def self.taxon_name_relationships(otus) # TODO: Join in proper name methods, don't rely on OTU scope a = TaxonNameRelationship.with(otu_scope: otus.select(:id, :taxon_name_id)) .joins("JOIN taxon_names obj_tn on obj_tn.id = taxon_name_relationships.object_taxon_name_id") .joins("JOIN otu_scope on otu_scope.taxon_name_id = obj_tn.id") .left_joins(:sources) .where.not(taxon_name_relationships: {type: BLOCKED}) .group('taxon_name_relationships.id') .select("taxon_name_relationships.*, MAX(sources.id) a_source_id") end |