adiwg-mdtranslator 2.0.0rc8 → 2.0.0rc9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +26 -1
- data/lib/adiwg/mdtranslator/version.rb +4 -1
- data/lib/adiwg/mdtranslator/writers/html/readme.md +4 -0
- data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +53 -42
- data/lib/adiwg/mdtranslator/writers/sbJson/readme.md +8 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sbJson_writer.rb +30 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_browseCategory.rb +39 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +10 -3
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb +170 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb +119 -40
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_date.rb +40 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_facet.rb +47 -24
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_hours.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_materialRequest.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb +37 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_project.rb +47 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_provenance.rb +4 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_publication.rb +54 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_sbJson.rb +25 -27
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_spatial.rb +49 -41
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_tag.rb +82 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_webLink.rb +66 -0
- metadata +14 -4
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_base.rb +0 -19
@@ -1,49 +1,57 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# sbJson 1.0 writer spatial
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-06-01 original script
|
3
5
|
|
4
6
|
module ADIWG
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
module Mdtranslator
|
8
|
+
module Writers
|
9
|
+
module SbJson
|
10
|
+
|
11
|
+
module Spatial
|
12
|
+
|
13
|
+
def self.build(aExtents)
|
14
|
+
|
15
|
+
spatial = {}
|
16
|
+
aBoxObjects = []
|
17
|
+
|
18
|
+
aExtents.each do |hExtent|
|
19
|
+
hExtent[:geographicExtents].each do |hGeoExtent|
|
20
|
+
hBbox = hGeoExtent[:computedBbox]
|
21
|
+
sw = [ hBbox[:westLongitude], hBbox[:southLatitude] ]
|
22
|
+
nw = [ hBbox[:westLongitude], hBbox[:northLatitude] ]
|
23
|
+
ne = [ hBbox[:eastLongitude], hBbox[:northLatitude] ]
|
24
|
+
se = [ hBbox[:eastLongitude], hBbox[:southLatitude] ]
|
25
|
+
aPoly = [ sw, nw, ne, se ]
|
26
|
+
geoJson = {
|
27
|
+
type: 'Polygon',
|
28
|
+
coordinates: [
|
29
|
+
aPoly
|
30
|
+
]
|
31
|
+
}
|
32
|
+
aBoxObjects << geoJson
|
33
|
+
end
|
17
34
|
end
|
18
35
|
|
19
|
-
|
20
|
-
|
21
|
-
|
36
|
+
unless aBoxObjects.empty?
|
37
|
+
hBox = AdiwgCoordinates.computeBbox(aBoxObjects)
|
38
|
+
sbBox = {}
|
39
|
+
sbBox[:maxY] = hBox[:northLatitude]
|
40
|
+
sbBox[:minY] = hBox[:southLatitude]
|
41
|
+
sbBox[:maxX] = hBox[:eastLongitude]
|
42
|
+
sbBox[:minX] = hBox[:westLongitude]
|
43
|
+
spatial[:boundingBox] = sbBox
|
22
44
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
45
|
+
|
46
|
+
# representational point is not computed
|
47
|
+
|
48
|
+
spatial
|
49
|
+
|
50
|
+
end
|
51
|
+
|
27
52
|
end
|
28
|
-
|
29
|
-
|
30
|
-
reader = RGeo::WKRep::WKTParser.new(nil, support_wkt12: true)
|
31
|
-
fact = RGeo::Geographic.spherical_factory
|
32
|
-
bbox = RGeo::Cartesian::BoundingBox.new(fact, ignore_z: true)
|
33
|
-
geo.each { |geom| bbox.add(reader.parse(geom)) }
|
34
|
-
|
35
|
-
{
|
36
|
-
boundingBox: {
|
37
|
-
minX: bbox.min_x,
|
38
|
-
maxX: bbox.max_x,
|
39
|
-
minY: bbox.min_y,
|
40
|
-
maxY: bbox.max_y
|
41
|
-
}
|
42
|
-
}
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
53
|
+
|
54
|
+
end
|
46
55
|
end
|
47
|
-
|
48
|
-
end
|
56
|
+
end
|
49
57
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# sbJson 1.0 writer tags
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-05-31 original script
|
5
|
+
|
6
|
+
require 'jbuilder'
|
7
|
+
require_relative 'sbJson_codelists'
|
8
|
+
|
9
|
+
module ADIWG
|
10
|
+
module Mdtranslator
|
11
|
+
module Writers
|
12
|
+
module SbJson
|
13
|
+
|
14
|
+
module Tag
|
15
|
+
|
16
|
+
def self.build(hResource)
|
17
|
+
|
18
|
+
aTags = []
|
19
|
+
|
20
|
+
# tags from resource type
|
21
|
+
hResource[:resourceTypes].each do |hType|
|
22
|
+
hTag = {}
|
23
|
+
type = hType[:type]
|
24
|
+
sbType = Codelists.codelist_iso_to_sb('iso_sb_scope', :isoCode => type)
|
25
|
+
sbType = sbType.nil? ? type : sbType
|
26
|
+
hTag[:type] = 'Resource Type'
|
27
|
+
hTag[:name] = sbType
|
28
|
+
aTags << hTag
|
29
|
+
end
|
30
|
+
|
31
|
+
# tags from keywords
|
32
|
+
hResource[:keywords].each do |hThemeSet|
|
33
|
+
theme = hThemeSet[:keywordType]
|
34
|
+
scheme = nil
|
35
|
+
hThesaurus = hThemeSet[:thesaurus]
|
36
|
+
unless hThesaurus.empty?
|
37
|
+
unless hThesaurus[:onlineResources].empty?
|
38
|
+
scheme = hThesaurus[:onlineResources][0][:olResURI]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
hThemeSet[:keywords].each do |hKeywordObj|
|
42
|
+
hTag = {}
|
43
|
+
hTag[:type] = theme unless theme.nil?
|
44
|
+
hTag[:name] = hKeywordObj[:keyword]
|
45
|
+
hTag[:scheme] = scheme unless scheme.nil?
|
46
|
+
if theme == 'isoTopicCategory'
|
47
|
+
hTag[:type] = hTag[:scheme] = 'ISO 19115 Topic Categories'
|
48
|
+
end
|
49
|
+
aTags << hTag
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# tags for projects
|
54
|
+
hResource[:resourceTypes].each do |hType|
|
55
|
+
type = hType[:type]
|
56
|
+
if type == 'project'
|
57
|
+
hResource[:status].each do |status|
|
58
|
+
sbStatus = Codelists.codelist_iso_to_sb('iso_sb_progress', :isoCode => status)
|
59
|
+
unless sbStatus.nil?
|
60
|
+
hTag = {}
|
61
|
+
hTag[:type] = 'Project Status'
|
62
|
+
hTag[:name] = sbStatus
|
63
|
+
aTags << hTag
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if aTags.empty?
|
70
|
+
return nil
|
71
|
+
end
|
72
|
+
|
73
|
+
aTags
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# sbJson 1.0 writer
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-05-30 original script
|
5
|
+
|
6
|
+
require 'jbuilder'
|
7
|
+
require_relative 'sbJson_codelists'
|
8
|
+
|
9
|
+
module ADIWG
|
10
|
+
module Mdtranslator
|
11
|
+
module Writers
|
12
|
+
module SbJson
|
13
|
+
|
14
|
+
module WebLink
|
15
|
+
|
16
|
+
def self.buildWebLink(hResource)
|
17
|
+
|
18
|
+
hWebLink = {}
|
19
|
+
|
20
|
+
function = hResource[:olResFunction]
|
21
|
+
function = 'download' if function.nil?
|
22
|
+
hWebLink[:type] = Codelists.codelist_iso_to_sb('iso_sb_onlineFunction', :isoCode => function)
|
23
|
+
hWebLink[:typeLabel] = hResource[:olResDesc] unless hResource[:olResDesc].nil?
|
24
|
+
hWebLink[:uri] = hResource[:olResURI] unless hResource[:olResURI].nil?
|
25
|
+
hWebLink[:title] = hResource[:olResName] unless hResource[:olResName].nil?
|
26
|
+
|
27
|
+
hWebLink
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.build(hMetadata)
|
32
|
+
|
33
|
+
aLinks = []
|
34
|
+
|
35
|
+
# build webLinks from additionalDocumentation
|
36
|
+
hMetadata[:additionalDocuments].each do |hDocument|
|
37
|
+
hDocument[:citation].each do |hCitation|
|
38
|
+
hCitation[:onlineResources].each do |hResource|
|
39
|
+
hWebLink = buildWebLink(hResource)
|
40
|
+
aLinks << hWebLink unless hWebLink.empty?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# build webLinks from graphic
|
46
|
+
hMetadata[:resourceInfo][:graphicOverviews].each do |hGraphic|
|
47
|
+
hGraphic[:graphicURI].each do |hResource|
|
48
|
+
hWebLink = buildWebLink(hResource)
|
49
|
+
aLinks << hWebLink unless hWebLink.empty?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
if aLinks.empty?
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
|
57
|
+
aLinks
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
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.0.
|
4
|
+
version: 2.0.0rc9
|
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
|
+
date: 2017-06-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -580,16 +580,26 @@ files:
|
|
580
580
|
- lib/adiwg/mdtranslator/writers/mdWriters.rb
|
581
581
|
- lib/adiwg/mdtranslator/writers/sbJson/readme.md
|
582
582
|
- lib/adiwg/mdtranslator/writers/sbJson/sbJson_writer.rb
|
583
|
-
- lib/adiwg/mdtranslator/writers/sbJson/sections/
|
583
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_browseCategory.rb
|
584
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb
|
584
585
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb
|
586
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb
|
585
587
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb
|
588
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_date.rb
|
586
589
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_facet.rb
|
590
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_hours.rb
|
587
591
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_id.rb
|
588
592
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_identifier.rb
|
593
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_materialRequest.rb
|
594
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb
|
595
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_project.rb
|
589
596
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_provenance.rb
|
597
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_publication.rb
|
590
598
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_rights.rb
|
591
599
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_sbJson.rb
|
592
600
|
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_spatial.rb
|
601
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_tag.rb
|
602
|
+
- lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_webLink.rb
|
593
603
|
- lib/adiwg/mdtranslator/writers/sbJson/version.rb
|
594
604
|
- lib/adiwg/mdtranslator_cli.rb
|
595
605
|
homepage: http://www.adiwg.org/mdTranslator
|
@@ -612,7 +622,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
612
622
|
version: 1.3.1
|
613
623
|
requirements: []
|
614
624
|
rubyforge_project:
|
615
|
-
rubygems_version: 2.
|
625
|
+
rubygems_version: 2.5.2
|
616
626
|
signing_key:
|
617
627
|
specification_version: 4
|
618
628
|
summary: The mdtranslator (metadata translator) is a tool for translating metadata
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'jbuilder'
|
2
|
-
|
3
|
-
module ADIWG
|
4
|
-
module Mdtranslator
|
5
|
-
module Writers
|
6
|
-
module SbJson
|
7
|
-
module Base
|
8
|
-
def json_map(collection = [], _class)
|
9
|
-
if collection.nil? || collection.empty?
|
10
|
-
return nil
|
11
|
-
else
|
12
|
-
collection.map { |item| _class.build(item).attributes! }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|