adiwg-mdtranslator 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -0
  3. data/adiwg-mdtranslator.gemspec +1 -0
  4. data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +13 -0
  5. data/lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb +49 -0
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_citation.rb +144 -0
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_date.rb +57 -0
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dateTime.rb +108 -0
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb +28 -0
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityAttribute.rb +28 -0
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +193 -0
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +136 -0
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb +28 -0
  14. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineResource.rb +35 -0
  15. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_publication.rb +63 -0
  16. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb +28 -0
  17. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_responsibility.rb +46 -0
  18. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_series.rb +44 -0
  19. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialDomain.rb +184 -0
  20. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialOrganization.rb +28 -0
  21. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialReference.rb +28 -0
  22. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_timeInstant.rb +40 -0
  23. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_timePeriod.rb +88 -0
  24. data/lib/adiwg/mdtranslator/readers/fgdc/readme.md +18 -0
  25. data/lib/adiwg/mdtranslator/readers/{fgcd → fgdc}/version.rb +0 -0
  26. data/lib/adiwg/mdtranslator/readers/mdJson/readme.md +1 -1
  27. data/lib/adiwg/mdtranslator/readers/mdJson/version.rb +2 -1
  28. data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_browseCategory.rb +5 -5
  29. data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_relatedItem.rb +4 -10
  30. data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_sbJson.rb +1 -1
  31. data/lib/adiwg/mdtranslator/readers/sbJson/readme.md +1 -1
  32. data/lib/adiwg/mdtranslator/readers/sbJson/sbJson_reader.rb +2 -2
  33. data/lib/adiwg/mdtranslator/readers/sbJson/version.rb +1 -1
  34. data/lib/adiwg/mdtranslator/version.rb +1 -1
  35. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceType.rb +1 -0
  36. metadata +37 -3
@@ -0,0 +1,88 @@
1
+ # Reader - fgdc to internal data structure
2
+ # unpack fgdc time period
3
+
4
+ # History:
5
+ # Stan Smith 2017-08-17 original script
6
+
7
+ require 'nokogiri'
8
+ require 'adiwg/mdtranslator/internal/internal_metadata_obj'
9
+ require_relative 'module_dateTime'
10
+
11
+ module ADIWG
12
+ module Mdtranslator
13
+ module Readers
14
+ module Fgdc
15
+
16
+ module TimePeriod
17
+
18
+ def self.unpack(xTimePeriod, hResponseObj)
19
+
20
+ # instance classes needed in script
21
+ intMetadataClass = InternalMetadata.new
22
+ hTimePeriod = intMetadataClass.newTimePeriod
23
+
24
+ # time period 9 (timeinfo) - time period information
25
+ xTimeInfo = xTimePeriod.xpath('./timeinfo')
26
+ current = xTimePeriod.xpath('./current').text
27
+
28
+ unless xTimeInfo.empty?
29
+
30
+ # time period 9.1 (sngdate) - single date
31
+ xSingle = xTimeInfo.xpath('./sngdate')
32
+ unless xSingle.empty?
33
+
34
+ # single date 9.1.1/9.1.2 (caldate/time) - single date/time {date} (required) {time}
35
+ date = xSingle.xpath('./caldate').text
36
+ time = xSingle.xpath('./time').text
37
+ hDateTime = DateTime.unpack(date, time, hResponseObj)
38
+ unless hDateTime.nil?
39
+ hTimePeriod[:endDateTime] = hDateTime
40
+ end
41
+ hTimePeriod[:description] = current
42
+
43
+ return hTimePeriod
44
+
45
+ end
46
+
47
+ # time period 9.2 (mdattim) - multiple date times
48
+ # placed in temporal extent
49
+
50
+ # time period 9.3 (rngdates) - range of dates
51
+ xRange = xTimeInfo.xpath('./rngdates')
52
+ unless xRange.empty?
53
+
54
+ # range of dates 9.3.1 (begdate) - begin date {date} (required)
55
+ # range of dates 9.3.2 (begtime) - begin time {time}
56
+ beginDate = xRange.xpath('./begdate').text
57
+ beginTime = xRange.xpath('./begtime').text
58
+ hDateTime = DateTime.unpack(beginDate, beginTime, hResponseObj)
59
+ unless hDateTime.nil?
60
+ hTimePeriod[:startDateTime] = hDateTime
61
+ end
62
+
63
+ # range of dates 9.3.3 (enddate) - end date {date} (required)
64
+ # range of dates 9.3.4 (endtime) - end time {time}
65
+ endDate = xRange.xpath('./enddate').text
66
+ endTime = xRange.xpath('./endtime').text
67
+ hDateTime = DateTime.unpack(endDate, endTime, hResponseObj)
68
+ unless hDateTime.nil?
69
+ hTimePeriod[:endDateTime] = hDateTime
70
+ end
71
+ hTimePeriod[:description] = current
72
+
73
+ return hTimePeriod
74
+
75
+ end
76
+
77
+ end
78
+
79
+ return nil
80
+
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,18 @@
1
+
2
+ ## sbJson
3
+
4
+ ### Supported versions
5
+
6
+ > 1.x (FGDC-STD-001-1998)
7
+
8
+ ### Reader for Federal Geographic Data Committee's Content Standard for Digital Geospatial Metadata (fgdc)
9
+
10
+ Content Standard for Digital Geospatial Metadata (CSDGM), Vers. 2
11
+ (FGDC-STD-001-1998) is the current version of this FGDC authored and
12
+ endorsed standard. Executive Order 12906, directed that Federal agencies
13
+ document geospatial resources using this standard. Since the publication
14
+ of EO 12906, the FGDC has endorsed several ISO Geospatial Metadata
15
+ Standards that are now encouraged for use.
16
+
17
+ The FGDC CSDGM format standard is fully documented on the
18
+ [Content Standard for Digital Geospatial Metadata page](https://www.fgdc.gov/metadata/csdgm-standard).
@@ -3,7 +3,7 @@
3
3
 
4
4
  ### Supported versions
5
5
 
6
- > 2.0.x
6
+ > 2.x
7
7
 
8
8
  ### Reader for ADIwg JSON metadata format (mdJson)
9
9
 
@@ -1,6 +1,7 @@
1
1
  # adiwg mdTranslator / readers / mdJson
2
2
 
3
3
  # version 2 history
4
+ # 2.2.0 2017-08-10 added sbJson reader and writer
4
5
  # 2.1.2 2017-05-19 deprecated iso topicCategory
5
6
  # 2.0.0 2016-10-01 start of version 2
6
7
 
@@ -8,7 +9,7 @@ module ADIWG
8
9
  module Mdtranslator
9
10
  module Readers
10
11
  module MdJson
11
- VERSION = "2.1.2"
12
+ VERSION = "2.2.0"
12
13
  end
13
14
  end
14
15
  end
@@ -14,13 +14,13 @@ module ADIWG
14
14
 
15
15
  module BrowseCategory
16
16
 
17
- def self.unpack(hSbJson, hResourceInfo, hResponseObj)
17
+ def self.unpack(hJson, aResourceTypes, hResponseObj)
18
18
 
19
19
  # instance classes needed in script
20
20
  intMetadataClass = InternalMetadata.new
21
21
 
22
- if hSbJson.has_key?('browseCategories')
23
- hSbJson['browseCategories'].each do |category|
22
+ if hJson.has_key?('browseCategories')
23
+ hJson['browseCategories'].each do |category|
24
24
  hResType = intMetadataClass.newResourceType
25
25
  scope = Codelists.codelist_sb2adiwg('scope_sb2adiwg', category)
26
26
  if scope.nil?
@@ -29,11 +29,11 @@ module ADIWG
29
29
  else
30
30
  hResType[:type] = scope
31
31
  end
32
- hResourceInfo[:resourceTypes] << hResType
32
+ aResourceTypes << hResType
33
33
  end
34
34
  end
35
35
 
36
- return hResourceInfo
36
+ return aResourceTypes
37
37
 
38
38
  end
39
39
 
@@ -8,6 +8,7 @@ require 'json'
8
8
  require 'open-uri'
9
9
  require 'adiwg/mdtranslator/internal/internal_metadata_obj'
10
10
  require_relative 'module_codelists'
11
+ require_relative 'module_browseCategory'
11
12
 
12
13
  module ADIWG
13
14
  module Mdtranslator
@@ -93,6 +94,7 @@ module ADIWG
93
94
  hResponseObj[:readerExecutionMessages] << 'Either the item does not exist or the item is secured and requires authentication to access.'
94
95
  break
95
96
  else
97
+
96
98
  # parse related item
97
99
  begin
98
100
  hRelatedItem = JSON.parse(web_contents)
@@ -105,16 +107,8 @@ module ADIWG
105
107
  # create mew associated resource
106
108
  hResource = intMetadataClass.newAssociatedResource
107
109
 
108
- if hRelatedItem.has_key?('browseCategories')
109
- aBrowse = hRelatedItem['browseCategories']
110
- aBrowse.each do |category|
111
- resourceType = Codelists.codelist_sb2adiwg('scope_sb2adiwg', category)
112
- resourceType = resourceType.nil? ? category : resourceType
113
- hResource[:resourceTypes] << resourceType
114
- end
115
- else
116
- hResponseObj[:readerExecutionMessages] << "Related item #{resourceId} did not have browseCategories"
117
- end
110
+ # add resource types
111
+ BrowseCategory.unpack(hRelatedItem, hResource[:resourceTypes], hResponseObj)
118
112
 
119
113
  # fill in associated resource citation
120
114
  hCitation = intMetadataClass.newCitation
@@ -104,7 +104,7 @@ module ADIWG
104
104
  hResourceInfo[:graphicOverviews].concat(aReturn) unless aReturn.nil?
105
105
 
106
106
  # browse categories
107
- BrowseCategory.unpack(hSbJson, hResourceInfo, hResponseObj)
107
+ BrowseCategory.unpack(hSbJson, hResourceInfo[:resourceTypes], hResponseObj)
108
108
 
109
109
  # tags
110
110
  Tag.unpack(hSbJson, hResourceInfo, hResponseObj)
@@ -15,4 +15,4 @@ integrate across multiple metadata standards, conventions, and
15
15
  practices in describing a wide array of scientific data and
16
16
  information assets important to science teams using ScienceBase.
17
17
 
18
- The sbJSON format is fully documented on the [ScienceBase Confluence page](https://my.usgs.gov/confluence/display/sciencebase/ScienceBase+Information+Model).
18
+ The sbJSON format is partially documented on the [ScienceBase Confluence page](https://my.usgs.gov/confluence/display/sciencebase/ScienceBase+Information+Model).
@@ -25,14 +25,14 @@ module ADIWG
25
25
  return {}
26
26
  end
27
27
 
28
- # file must contain an mdJson object
28
+ # file must contain an sbJson object
29
29
  if hSbJson.empty?
30
30
  hResponseObj[:readerStructureMessages] << 'sbJson object is empty'
31
31
  hResponseObj[:readerStructurePass] = false
32
32
  return {}
33
33
  end
34
34
 
35
- # faking the version since sbJSON has no version support
35
+ # faking the version since sbJson has no version support
36
36
  hSbJson['schema'] = {
37
37
  'name' => 'sbJson',
38
38
  'version' => '0.0.0'
@@ -7,7 +7,7 @@ module ADIWG
7
7
  module Mdtranslator
8
8
  module Readers
9
9
  module SbJson
10
- VERSION = '0.0.0'
10
+ VERSION = '0.1.0'
11
11
  end
12
12
  end
13
13
  end
@@ -22,7 +22,7 @@
22
22
  module ADIWG
23
23
  module Mdtranslator
24
24
  # current mdtranslator version
25
- VERSION = "2.1.0"
25
+ VERSION = "2.1.1"
26
26
  end
27
27
  end
28
28
 
@@ -15,6 +15,7 @@ module ADIWG
15
15
 
16
16
  def self.build(hResType)
17
17
 
18
+
18
19
  Jbuilder.new do |json|
19
20
  json.type hResType[:type]
20
21
  json.name hResType[:name]
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.1.0
4
+ version: 2.1.1
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-08-14 00:00:00.000000000 Z
12
+ date: 2017-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -193,6 +193,20 @@ dependencies:
193
193
  - - "~>"
194
194
  - !ruby/object:Gem::Version
195
195
  version: '1.1'
196
+ - !ruby/object:Gem::Dependency
197
+ name: nokogiri
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.7'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.7'
196
210
  description: The mdtranslator was written by the Alaska Data Integration Working Group
197
211
  (ADIwg) to assist with creating ISO 19139 metadata records. Input to the mdtranslator
198
212
  is JSON conforming to the mdJson-schema. The mdtranslator architecture allows developers
@@ -221,7 +235,27 @@ files:
221
235
  - lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb
222
236
  - lib/adiwg/mdtranslator/internal/module_coordinates.rb
223
237
  - lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb
224
- - lib/adiwg/mdtranslator/readers/fgcd/version.rb
238
+ - lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb
239
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_citation.rb
240
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_date.rb
241
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_dateTime.rb
242
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb
243
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityAttribute.rb
244
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb
245
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb
246
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb
247
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineResource.rb
248
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_publication.rb
249
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb
250
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_responsibility.rb
251
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_series.rb
252
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialDomain.rb
253
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialOrganization.rb
254
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialReference.rb
255
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_timeInstant.rb
256
+ - lib/adiwg/mdtranslator/readers/fgdc/modules/module_timePeriod.rb
257
+ - lib/adiwg/mdtranslator/readers/fgdc/readme.md
258
+ - lib/adiwg/mdtranslator/readers/fgdc/version.rb
225
259
  - lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb
226
260
  - lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb
227
261
  - lib/adiwg/mdtranslator/readers/mdJson/modules/module_additionalDocumentation.rb