adiwg-mdtranslator 2.6.1 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -1
  3. data/adiwg-mdtranslator.gemspec +1 -1
  4. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +3 -2
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_attribute.rb +4 -4
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +1 -1
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +7 -2
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_keyword.rb +35 -1
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_lineage.rb +10 -2
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_methodology.rb +69 -0
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_process.rb +6 -10
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb +3 -3
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_range.rb +3 -3
  14. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_raster.rb +1 -1
  15. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_source.rb +5 -5
  16. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialOrganization.rb +6 -4
  17. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonSystem.rb +6 -3
  18. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonomy.rb +6 -4
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +6 -6
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +2 -2
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +101 -94
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicSystem.rb +2 -2
  23. data/lib/adiwg/mdtranslator/version.rb +4 -1
  24. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_browse.rb +54 -0
  25. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb +35 -15
  26. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_constraint.rb +53 -0
  27. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_description.rb +1 -1
  28. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_fgdc.rb +39 -3
  29. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicAge.rb +1 -1
  30. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_identification.rb +148 -89
  31. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_keyword.rb +6 -6
  32. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_lineage.rb +91 -0
  33. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb +94 -0
  34. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_methodKeywords.rb +55 -0
  35. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_process.rb +119 -0
  36. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_publisher.rb +1 -1
  37. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_quality.rb +64 -0
  38. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_security.rb +69 -0
  39. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_series.rb +1 -1
  40. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_source.rb +124 -0
  41. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +2 -2
  42. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialOrganization.rb +177 -0
  43. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_status.rb +1 -1
  44. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomy.rb +70 -0
  45. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyClassification.rb +65 -0
  46. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyKeywords.rb +55 -0
  47. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomySystem.rb +154 -0
  48. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_timePeriod.rb +22 -16
  49. data/lib/adiwg/mdtranslator/writers/fgdc/fgdc_writer.rb +19 -1
  50. data/lib/adiwg/mdtranslator/writers/fgdc/readme.md +2 -2
  51. data/lib/adiwg/mdtranslator/writers/html/html_writer.rb +1 -1
  52. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityAttribute.rb +2 -2
  53. data/lib/adiwg/mdtranslator/writers/html/sections/html_source.rb +7 -0
  54. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityAttribute.rb +2 -2
  55. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_source.rb +1 -0
  56. metadata +19 -4
@@ -0,0 +1,55 @@
1
+ # FGDC <<Class>> TaxonomyKeyword
2
+ # FGDC CSDGM writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2017-12-13 original script
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Writers
10
+ module Fgdc
11
+
12
+ class TaxonomyKeyword
13
+
14
+ def initialize(xml, hResponseObj)
15
+ @xml = xml
16
+ @hResponseObj = hResponseObj
17
+ end
18
+
19
+ def writeXML(aKeywords)
20
+
21
+ # taxonomy bio (keywtax) - taxonomic keywords (required)
22
+ haveTaxon = false
23
+ aKeywords.each do |hKeySet|
24
+ type = hKeySet[:keywordType]
25
+ if type == 'taxon'
26
+ aKeywords = hKeySet[:keywords]
27
+ thesaurus = hKeySet[:thesaurus]
28
+ if thesaurus.empty?
29
+ @hResponseObj[:writerPass] = false
30
+ @hResponseObj[:writerMessages] << 'Taxonomy Keyword Set is missing thesaurus'
31
+ end
32
+ @xml.tag!('keywtax') do
33
+ @xml.tag!('taxonkt', thesaurus[:title])
34
+ aKeywords.each do |hKeyword|
35
+ keyword = hKeyword[:keyword]
36
+ unless keyword.nil?
37
+ @xml.tag!('taxonkey', keyword)
38
+ haveTaxon = true
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ unless haveTaxon
45
+ @hResponseObj[:writerPass] = false
46
+ @hResponseObj[:writerMessages] << 'Taxonomy is missing keyword set'
47
+ end
48
+
49
+ end # writeXML
50
+ end # TaxonomyKeyword
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,154 @@
1
+ # FGDC <<Class>> TaxonomySystem
2
+ # FGDC CSDGM writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2017-12-13 original script
6
+
7
+ require_relative '../fgdc_writer'
8
+ require_relative 'class_citation'
9
+ require_relative 'class_contact'
10
+
11
+ module ADIWG
12
+ module Mdtranslator
13
+ module Writers
14
+ module Fgdc
15
+
16
+ class TaxonomySystem
17
+
18
+ def initialize(xml, hResponseObj)
19
+ @xml = xml
20
+ @hResponseObj = hResponseObj
21
+ end
22
+
23
+ def writeXML(hTaxonomy)
24
+
25
+ # classes used
26
+ citationClass = Citation.new(@xml, @hResponseObj)
27
+ contactClass = Contact.new(@xml, @hResponseObj)
28
+
29
+ # taxonomic system (classsys) - classification system [] (required)
30
+ hTaxonomy[:taxonSystem].each do |hSystem|
31
+ @xml.tag!('classsys') do
32
+
33
+ # taxonomic system (classcit) - system citation (required) {citation}
34
+ unless hSystem[:citation].empty?
35
+ @xml.tag!('classcit') do
36
+ citationClass.writeXML(hSystem[:citation], [])
37
+ end
38
+ end
39
+ if hSystem[:citation].empty?
40
+ @hResponseObj[:writerPass] = false
41
+ @hResponseObj[:writerMessages] << 'Taxonomic Classification System is missing citation'
42
+ end
43
+
44
+ # taxonomic system (classmod) - system modifications
45
+ unless hSystem[:modifications].nil?
46
+ @xml.tag!('classmod', hSystem[:modifications])
47
+ end
48
+ if hSystem[:modifications].nil? && @hResponseObj[:writerShowTags]
49
+ @xml.tag!('classmod')
50
+ end
51
+
52
+ end
53
+ end
54
+ if hTaxonomy[:taxonSystem].empty?
55
+ @hResponseObj[:writerPass] = false
56
+ @hResponseObj[:writerMessages] << 'Taxonomic System is missing classification system'
57
+ end
58
+
59
+ # taxonomic system (idref) - identification reference [] {identifier}
60
+ hTaxonomy[:idReferences].each do |hReference|
61
+ hCitation = hReference[:citation]
62
+ unless hCitation.empty?
63
+ @xml.tag!('idref') do
64
+ citationClass.writeXML(hCitation, [])
65
+ end
66
+ end
67
+ end
68
+
69
+ # taxonomic system (ider) - observer
70
+ # <- hTaxonomy[:observers] role = 'observer'
71
+ haveObserver = false
72
+ aRParties = hTaxonomy[:observers]
73
+ aObservers = ADIWG::Mdtranslator::Writers::Fgdc.find_responsibility(aRParties, 'observer')
74
+ aObservers.each do |contactId|
75
+ hContact = ADIWG::Mdtranslator::Writers::Fgdc.get_contact(contactId)
76
+ unless hContact.empty?
77
+ @xml.tag!('ider') do
78
+ contactClass.writeXML(hContact)
79
+ haveObserver = true
80
+ end
81
+ end
82
+ end
83
+ if !haveObserver && @hResponseObj[:writerShowTags]
84
+ @xml.tag!('ider')
85
+ end
86
+
87
+ # taxonomic system (taxonpro) - taxonomic procedures (required)
88
+ unless hTaxonomy[:idProcedure].nil?
89
+ @xml.tag!('taxonpro', hTaxonomy[:idProcedure])
90
+ end
91
+ if hTaxonomy[:idProcedure].nil?
92
+ @hResponseObj[:writerPass] = false
93
+ @hResponseObj[:writerMessages] << 'Taxonomy is missing taxonomic procedure'
94
+ end
95
+
96
+ # taxonomic system (taxoncom) - taxonomic identification completeness
97
+ unless hTaxonomy[:idCompleteness].nil?
98
+ @xml.tag!('taxoncom', hTaxonomy[:idCompleteness])
99
+ end
100
+ if hTaxonomy[:idCompleteness].nil? && @hResponseObj[:writerShowTags]
101
+ @xml.tag!('taxoncom')
102
+ end
103
+
104
+ # taxonomic system (vouchers) - taxonomic voucher []
105
+ hTaxonomy[:vouchers].each do |hVoucher|
106
+ @xml.tag!('vouchers') do
107
+
108
+ # voucher (specimen) - specimen (required)
109
+ unless hVoucher[:specimen].nil?
110
+ @xml.tag!('specimen', hVoucher[:specimen])
111
+ end
112
+ if hVoucher[:specimen].nil?
113
+ @hResponseObj[:writerPass] = false
114
+ @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing specimen'
115
+ end
116
+
117
+ # voucher (repository) - repository (required)
118
+ unless hVoucher[:repository].empty?
119
+ haveRepo = false
120
+ aRParties = [hVoucher[:repository]]
121
+ aRepos = ADIWG::Mdtranslator::Writers::Fgdc.find_responsibility(aRParties, 'custodian')
122
+ aRepos.each do |contactId|
123
+ hContact = ADIWG::Mdtranslator::Writers::Fgdc.get_contact(contactId)
124
+ unless hContact.empty?
125
+ @xml.tag!('repository') do
126
+ contactClass.writeXML(hContact)
127
+ haveRepo = true
128
+ end
129
+ end
130
+ end
131
+ unless haveRepo
132
+ @hResponseObj[:writerPass] = false
133
+ @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing repository'
134
+ end
135
+ end
136
+ if hVoucher[:repository].empty?
137
+ @hResponseObj[:writerPass] = false
138
+ @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing repository'
139
+ end
140
+
141
+ end
142
+ if hTaxonomy[:vouchers].empty? && @hResponseObj[:writerShowTags]
143
+ @xml.tag!('vouchers')
144
+ end
145
+
146
+ end
147
+
148
+ end # writeXML
149
+ end # TaxonomySystem
150
+
151
+ end
152
+ end
153
+ end
154
+ end
@@ -21,7 +21,7 @@ module ADIWG
21
21
  @hResponseObj = hResponseObj
22
22
  end
23
23
 
24
- def writeXML(hTimePeriod)
24
+ def writeXML(hTimePeriod, currentTag)
25
25
 
26
26
  # classes used
27
27
  singDateClass = DateSingle.new(@xml, @hResponseObj)
@@ -33,6 +33,7 @@ module ADIWG
33
33
  hEndDate = hTimePeriod[:endDateTime]
34
34
  hStartGeoAge = hTimePeriod[:startGeologicAge]
35
35
  hEndGeoAge = hTimePeriod[:endGeologicAge]
36
+ current = hTimePeriod[:description]
36
37
 
37
38
  dateCount = 0
38
39
  ageCount = 0
@@ -51,27 +52,24 @@ module ADIWG
51
52
  @hResponseObj[:writerMessages] << 'Time Period must be either conventional or geologic time, not both'
52
53
  end
53
54
 
54
- # single date
55
- if dateCount == 1
56
- @xml.tag!('timeinfo') do
55
+ @xml.tag!('timeinfo') do
56
+
57
+ # single date
58
+ if dateCount == 1
57
59
  if hStartDate.empty?
58
60
  singDateClass.writeXML(hEndDate)
59
61
  else
60
62
  singDateClass.writeXML(hStartDate)
61
63
  end
62
64
  end
63
- end
64
65
 
65
- # date range
66
- if dateCount == 2
67
- @xml.tag!('timeinfo') do
66
+ # date range
67
+ if dateCount == 2
68
68
  rangeDateClass.writeXML(hStartDate, hEndDate)
69
69
  end
70
- end
71
70
 
72
- # single geologic age
73
- if ageCount == 1
74
- @xml.tag!('timeinfo') do
71
+ # single geologic age
72
+ if ageCount == 1
75
73
  @xml.tag!('sngdate') do
76
74
  @xml.tag!('geolage') do
77
75
  if hStartGeoAge.empty?
@@ -82,15 +80,23 @@ module ADIWG
82
80
  end
83
81
  end
84
82
  end
85
- end
86
83
 
87
- # geologic age range
88
- if ageCount == 2
89
- @xml.tag!('timeinfo') do
84
+ # geologic age range
85
+ if ageCount == 2
90
86
  @xml.tag!('rngdates') do
91
87
  geologicRangeClass.writeXML(hStartGeoAge,hEndGeoAge )
92
88
  end
93
89
  end
90
+
91
+ # add timeInfo currentness (required)
92
+ unless current.nil?
93
+ @xml.tag!(currentTag, current)
94
+ end
95
+ if current.nil?
96
+ @hResponseObj[:writerPass] = false
97
+ @hResponseObj[:writerMessages] << 'Time Info is missing time currentness'
98
+ end
99
+
94
100
  end
95
101
 
96
102
  end # writeXML
@@ -14,7 +14,8 @@ module ADIWG
14
14
 
15
15
  def self.startWriter(intObj, responseObj, whichDict: 0)
16
16
 
17
- # make contacts and domains available to the instance
17
+ # make objects available to the instance
18
+ @intObj = intObj
18
19
  @contacts = intObj[:contacts]
19
20
 
20
21
  # set the format of the output file based on the writer
@@ -42,6 +43,23 @@ module ADIWG
42
43
  return {}
43
44
  end
44
45
 
46
+ def self.find_responsibility(aResponsibility, roleName)
47
+ aParties = []
48
+ aResponsibility.each do |hRParty|
49
+ if hRParty[:roleName] == roleName
50
+ hRParty[:parties].each do |hParty|
51
+ aParties << hParty[:contactId]
52
+ end
53
+ end
54
+ end
55
+ aParties = aParties.uniq
56
+ return aParties
57
+ end
58
+
59
+ def self.get_intObj
60
+ return @intObj
61
+ end
62
+
45
63
  end
46
64
  end
47
65
  end
@@ -1,9 +1,9 @@
1
1
 
2
- ## sbJson
2
+ ## fgdc
3
3
 
4
4
  ### Supported versions
5
5
 
6
- > 1.x (FGDC-STD-001-1998)
6
+ > 1.x (FGDC-STD-001-1998) with Biological Data Profile
7
7
 
8
8
  ### Writer for Federal Geographic Data Committee's Content Standard for Digital Geospatial Metadata (fgdc)
9
9
 
@@ -18,7 +18,7 @@ module ADIWG
18
18
  def self.startWriter(intObj, responseObj)
19
19
 
20
20
  # set the format and version of the output file
21
- responseObj[:writerFormat] = 'html'
21
+ responseObj[:writerOutputFormat] = 'html'
22
22
  responseObj[:writerVersion] = ADIWG::Mdtranslator::Writers::Html::VERSION
23
23
 
24
24
  # create new HTML document
@@ -127,7 +127,7 @@ module ADIWG
127
127
  end
128
128
 
129
129
  # entity attribute - range of values [] {citation}
130
- hAttribute[:rangeOfValues].each do |hRange|
130
+ hAttribute[:valueRange].each do |hRange|
131
131
  @html.details do
132
132
  @html.summary('Range of Values', {'class' => 'h5'})
133
133
  @html.section(:class => 'block') do
@@ -151,7 +151,7 @@ module ADIWG
151
151
  end
152
152
 
153
153
  # entity attribute - time period of values {timePeriod}
154
- hAttribute[:timePeriodOfValues].each do |hPeriod|
154
+ hAttribute[:timePeriod].each do |hPeriod|
155
155
  @html.details do
156
156
  @html.summary('Time Period of Values', {'class' => 'h5'})
157
157
  @html.section(:class => 'block') do
@@ -32,6 +32,13 @@ module ADIWG
32
32
  stepClass = Html_ProcessStep.new(@html)
33
33
  scopeClass = Html_Scope.new(@html)
34
34
 
35
+ # source - source ID
36
+ unless hSource[:sourceId].nil?
37
+ @html.em('Source ID: ')
38
+ @html.text!(hSource[:sourceId])
39
+ @html.br
40
+ end
41
+
35
42
  # source - description
36
43
  unless hSource[:description].nil?
37
44
  @html.em('Description: ')
@@ -40,8 +40,8 @@ module ADIWG
40
40
  json.domainId hAttribute[:domainId]
41
41
  json.minValue hAttribute[:minValue]
42
42
  json.maxValue hAttribute[:maxValue]
43
- json.rangeOfValues @Namespace.json_map(hAttribute[:rangeOfValues], ValueRange)
44
- json.timePeriodOfValues @Namespace.json_map(hAttribute[:timePeriodOfValues], TimePeriod)
43
+ json.valueRange @Namespace.json_map(hAttribute[:valueRange], ValueRange)
44
+ json.timePeriod @Namespace.json_map(hAttribute[:timePeriod], TimePeriod)
45
45
 
46
46
  end
47
47
 
@@ -22,6 +22,7 @@ module ADIWG
22
22
  def self.build(hSource)
23
23
 
24
24
  Jbuilder.new do |json|
25
+ json.sourceId hSource[:sourceId]
25
26
  json.description hSource[:description]
26
27
  json.sourceCitation Citation.build(hSource[:sourceCitation]) unless hSource[:sourceCitation].empty?
27
28
  json.metadataCitation @Namespace.json_map(hSource[:metadataCitation], Citation)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adiwg-mdtranslator
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-12-05 00:00:00.000000000 Z
12
+ date: 2017-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -129,14 +129,14 @@ dependencies:
129
129
  requirements:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: 2.3.2
132
+ version: 2.4.1
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 2.3.2
139
+ version: 2.4.1
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: adiwg-mdcodes
142
142
  requirement: !ruby/object:Gem::Requirement
@@ -284,6 +284,7 @@ files:
284
284
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapLocalSystem.rb
285
285
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapProjection.rb
286
286
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb
287
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_methodology.rb
287
288
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_offlineOption.rb
288
289
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineOption.rb
289
290
  - lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineResource.rb
@@ -439,7 +440,9 @@ files:
439
440
  - lib/adiwg/mdtranslator/readers/sbJson/version.rb
440
441
  - lib/adiwg/mdtranslator/version.rb
441
442
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_address.rb
443
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_browse.rb
442
444
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb
445
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_constraint.rb
443
446
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_contact.rb
444
447
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateRange.rb
445
448
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateSingle.rb
@@ -449,11 +452,23 @@ files:
449
452
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicRange.rb
450
453
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_identification.rb
451
454
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_keyword.rb
455
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_lineage.rb
456
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb
457
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_methodKeywords.rb
452
458
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_phone.rb
459
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_process.rb
453
460
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_publisher.rb
461
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_quality.rb
462
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_security.rb
454
463
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_series.rb
464
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_source.rb
455
465
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb
466
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialOrganization.rb
456
467
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_status.rb
468
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomy.rb
469
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyClassification.rb
470
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyKeywords.rb
471
+ - lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomySystem.rb
457
472
  - lib/adiwg/mdtranslator/writers/fgdc/classes/class_timePeriod.rb
458
473
  - lib/adiwg/mdtranslator/writers/fgdc/fgdc_writer.rb
459
474
  - lib/adiwg/mdtranslator/writers/fgdc/readme.md