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(otu, project_members, reference_csv = nil) ⇒ Object
-
.taxon_name_relationships(otu) ⇒ Object
TODO: This is the original set, but it doesn’t quite feel right.
Class Method Details
.generate(otu, project_members, reference_csv = nil) ⇒ Object
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 123 124 125 126 127 128 129 130 |
# File 'lib/export/coldp/files/name_relation.rb', line 87 def self.generate(otu, 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(otu) rels.length rels.find_each do |tnr| # TODO: should not be required if we scope properly # 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(otu) ⇒ 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 78 79 80 81 82 83 84 85 |
# File 'lib/export/coldp/files/name_relation.rb', line 67 def self.taxon_name_relationships(otu) names = ::Export::Coldp.all_names(otu) a = TaxonNameRelationship.with(name_scope: names) .joins("JOIN name_scope ns on ns.id = taxon_name_relationships.object_taxon_name_id") .where.not(taxon_name_relationships: {type: BLOCKED}) .left_joins(:sources) .group('taxon_name_relationships.id') .select("taxon_name_relationships.*, MAX(sources.id) a_source_id") b = TaxonNameRelationship.with(name_scope: names) .joins("JOIN name_scope ns on ns.id = taxon_name_relationships.subject_taxon_name_id") .where.not(taxon_name_relationships: {type: BLOCKED}) .left_joins(:sources) .group('taxon_name_relationships.id') .select("taxon_name_relationships.*, MAX(sources.id) a_source_id") ::Queries.union(TaxonNameRelationship, [a,b]) end |