adiwg-mdtranslator 2.0.0rc8 → 2.0.0rc9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|