bolognese 0.8.1 → 0.8.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44ef0d823038f4256509d1215ce8fae2ca6d62f4
4
- data.tar.gz: a4a9ad1a9530c9e4e96566c6e1c349205d2dd7e0
3
+ metadata.gz: 347331c05f3f9fcf8370202734e301b5147ab529
4
+ data.tar.gz: 9cdde1c401c80afc37c5caef0c21b7b43ccce10b
5
5
  SHA512:
6
- metadata.gz: 347c241f0201e837225394d7bec559fa0675696edd725df6a635f5ddf4b6975fe5194fa2fc25c7ba97069272e4440e1660ea0d2a2eb0dbf312a4d3370a49d970
7
- data.tar.gz: a7906e3128cc090e14017716a3534c444ff18a9f209083f9e1d64a833f27fb7d01720fe07a2895c87af65bb1656b94716fe6e55dbd596f5056d5c8027653aed4
6
+ metadata.gz: dc95897ac4cb7c133a523e0ccf96c1be564a1e3ebe8c17349579d389953947a580329db91222720af96851fb392c2b3406c0825630a29c744b1363d4ff72fff6
7
+ data.tar.gz: 487ad70193f3e026691f57ce73a5a99ba1ee023235be1ef1a65698ae0bdba3c0d99c43265f1dbaf64c42374828b247d508379683023d13853999d92c03214bf9
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.8.1)
4
+ bolognese (0.8.2)
5
5
  activesupport (~> 4.2, >= 4.2.5)
6
6
  bibtex-ruby (~> 4.1)
7
7
  builder (~> 3.2, >= 3.2.2)
@@ -64,7 +64,7 @@ GEM
64
64
  namae (0.10.2)
65
65
  nokogiri (1.6.8.1)
66
66
  mini_portile2 (~> 2.1.0)
67
- oj (2.18.1)
67
+ oj (2.18.2)
68
68
  postrank-uri (1.0.18)
69
69
  addressable (~> 2.3.0)
70
70
  nokogiri (~> 1.6.1)
@@ -103,7 +103,7 @@ module Bolognese
103
103
  end
104
104
 
105
105
  def related_identifiers(relation_type)
106
- normalize_ids(metadata.fetch(relation_type, nil))
106
+ normalize_ids(ids: metadata.fetch(relation_type, nil), relation_type: relation_type)
107
107
  end
108
108
 
109
109
  def same_as
@@ -157,7 +157,7 @@ module Bolognese
157
157
  def license
158
158
  access_indicator = Array.wrap(program_metadata).find { |m| m["name"] == "AccessIndicators" }
159
159
  if access_indicator.present?
160
- parse_attributes(access_indicator["license_ref"])
160
+ { "url" => parse_attributes(access_indicator["license_ref"]) }
161
161
  else
162
162
  nil
163
163
  end
@@ -1,27 +1,5 @@
1
1
  module Bolognese
2
2
  module DataciteUtils
3
-
4
- SO_TO_DC_TRANSLATIONS = {
5
- "Article" => "Text",
6
- "AudioObject" => "Sound",
7
- "Blog" => "Text",
8
- "BlogPosting" => "Text",
9
- "Collection" => "Collection",
10
- "CreativeWork" => "Other",
11
- "DataCatalog" => "Dataset",
12
- "Dataset" => "Dataset",
13
- "Event" => "Event",
14
- "ImageObject" => "Image",
15
- "Movie" => "Audiovisual",
16
- "PublicationIssue" => "Text",
17
- "ScholarlyArticle" => "Text",
18
- "Service" => "Service",
19
- "SoftwareSourceCode" => "Software",
20
- "VideoObject" => "Audiovisual",
21
- "WebPage" => "Text",
22
- "WebSite" => "Text"
23
- }
24
-
25
3
  SCHEMA = File.expand_path("../../../resources/kernel-4.0/metadata.xsd", __FILE__)
26
4
 
27
5
  def schema
@@ -116,7 +94,7 @@ module Bolognese
116
94
  end
117
95
 
118
96
  def resource_type
119
- { "resource_type_general" => SO_TO_DC_TRANSLATIONS[type] || "Other",
97
+ { "resource_type_general" => Metadata::SO_TO_DC_TRANSLATIONS[type] || "Other",
120
98
  "__content__" => additional_type || type }
121
99
  end
122
100
 
@@ -186,7 +164,8 @@ module Bolognese
186
164
  Array.wrap(related_identifier).map do |r|
187
165
  { "__content__" => r["id"],
188
166
  "related_identifier_type" => validate_url(r["id"]),
189
- "relation_type" => r["relationType"] }
167
+ "relation_type" => r["relationType"],
168
+ "resource_type_general" => r["resourceTypeGeneral"] }
190
169
  end
191
170
  end
192
171
 
@@ -195,7 +174,11 @@ module Bolognese
195
174
 
196
175
  xml.relatedIdentifiers do
197
176
  rel_identifier.each do |related_identifier|
198
- xml.relatedIdentifier(related_identifier["__content__"], 'relatedIdentifierType' => related_identifier["related_identifier_type"], 'relationType' => related_identifier["relation_type"])
177
+ attributes = {
178
+ 'relatedIdentifierType' => related_identifier["related_identifier_type"],
179
+ 'relationType' => related_identifier["relation_type"],
180
+ 'resourceTypeGeneral' => related_identifier["resource_type_general"] }.compact
181
+ xml.relatedIdentifier(related_identifier["__content__"], attributes)
199
182
  end
200
183
  end
201
184
  end
@@ -29,6 +29,27 @@ module Bolognese
29
29
  "Other" => "CreativeWork"
30
30
  }
31
31
 
32
+ SO_TO_DC_TRANSLATIONS = {
33
+ "Article" => "Text",
34
+ "AudioObject" => "Sound",
35
+ "Blog" => "Text",
36
+ "BlogPosting" => "Text",
37
+ "Collection" => "Collection",
38
+ "CreativeWork" => "Other",
39
+ "DataCatalog" => "Dataset",
40
+ "Dataset" => "Dataset",
41
+ "Event" => "Event",
42
+ "ImageObject" => "Image",
43
+ "Movie" => "Audiovisual",
44
+ "PublicationIssue" => "Text",
45
+ "ScholarlyArticle" => "Text",
46
+ "Service" => "Service",
47
+ "SoftwareSourceCode" => "Software",
48
+ "VideoObject" => "Audiovisual",
49
+ "WebPage" => "Text",
50
+ "WebSite" => "Text"
51
+ }
52
+
32
53
  attr_reader :id, :raw, :provider, :schema_version, :license, :citation,
33
54
  :additional_type, :alternate_name, :url, :version, :keywords, :editor,
34
55
  :page_start, :page_end, :date_modified, :language, :spatial_coverage,
@@ -88,7 +109,7 @@ module Bolognese
88
109
  "hasPart" => has_part,
89
110
  "predecessor_of" => is_previous_version_of,
90
111
  "successor_of" => is_new_version_of,
91
- "citation" => references,
112
+ "citation" => Array.wrap(references).map { |r| r.except("relationType").merge("@type" => "CreativeWork") }.unwrap,
92
113
  "@reverse" => reverse,
93
114
  "schemaVersion" => schema_version,
94
115
  "publisher" => { "@type" => "Organization", "name" => publisher },
@@ -119,11 +119,13 @@ module Bolognese
119
119
  end
120
120
 
121
121
  def get_related_identifier(relation_type: nil)
122
- normalize_ids(metadata.fetch(relation_type, nil), SO_TO_DC_RELATION_TYPES[relation_type])
122
+ normalize_ids(ids: metadata.fetch(relation_type, nil),
123
+ relation_type: SO_TO_DC_RELATION_TYPES[relation_type])
123
124
  end
124
125
 
125
126
  def get_reverse_related_identifier(relation_type: nil)
126
- normalize_ids(metadata.dig("@reverse", relation_type), SO_TO_DC_RELATION_TYPES[relation_type])
127
+ normalize_ids(ids: metadata.dig("@reverse", relation_type),
128
+ relation_type: SO_TO_DC_RELATION_TYPES[relation_type])
127
129
  end
128
130
 
129
131
  def is_identical_to
@@ -114,12 +114,13 @@ module Bolognese
114
114
  "http://orcid.org/" + Addressable::URI.encode(orcid)
115
115
  end
116
116
 
117
- def normalize_ids(list, relation_type = "References")
118
- Array.wrap(list).map do |url|
119
- { "id" => normalize_id(url["@id"]),
120
- "type" => url["@type"],
121
- "name" => url["name"],
122
- "relationType" => relation_type }.compact
117
+ def normalize_ids(ids: nil, relation_type: "References")
118
+ Array.wrap(ids).map do |id|
119
+ { "id" => normalize_id(id["@id"]),
120
+ "type" => id["@type"],
121
+ "name" => id["name"],
122
+ "relationType" => relation_type,
123
+ "resourceTypeGeneral" => id["resourceTypeGeneral"] || Metadata::SO_TO_DC_TRANSLATIONS[id["@type"]] }.compact
123
124
  end.unwrap
124
125
  end
125
126
 
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -14,7 +14,7 @@ describe Bolognese::Crossref, vcr: true do
14
14
  expect(subject.resource_type_general).to eq("Text")
15
15
  expect(subject.author.length).to eq(5)
16
16
  expect(subject.author.first).to eq("type"=>"Person", "name"=>"Martial Sankar", "givenName"=>"Martial", "familyName"=>"Sankar")
17
- expect(subject.license).to eq("http://creativecommons.org/licenses/by/3.0/")
17
+ expect(subject.license).to eq("url"=>"http://creativecommons.org/licenses/by/3.0/")
18
18
  expect(subject.title).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
19
19
  expect(subject.date_published).to eq("2014-02-11")
20
20
  expect(subject.date_modified).to eq("2015-08-11T05:35:02Z")
@@ -43,7 +43,7 @@ describe Bolognese::Crossref, vcr: true do
43
43
  expect(subject.author.first).to eq("type"=>"Person", "name"=>"Markus Ralser", "givenName"=>"Markus", "familyName"=>"Ralser")
44
44
  expect(subject.editor).to eq("type"=>"Person", "name"=>"Guilhem Janbon", "givenName"=>"Guilhem", "familyName"=>"Janbon")
45
45
  expect(subject.title).to eq("Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization–Not Catalytic Inactivity–of the Mutant Enzymes")
46
- expect(subject.license).to eq("http://creativecommons.org/licenses/by/4.0/")
46
+ expect(subject.license).to eq("url"=>"http://creativecommons.org/licenses/by/4.0/")
47
47
  expect(subject.date_published).to eq("2006-12-20")
48
48
  expect(subject.date_modified).to eq("2016-12-31T21:37:08Z")
49
49
  expect(subject.page_start).to eq("e30")
@@ -79,7 +79,7 @@ describe Bolognese::Crossref, vcr: true do
79
79
  expect(subject.additional_type).to eq("JournalArticle")
80
80
  expect(subject.resource_type_general).to eq("Text")
81
81
  expect(subject.author).to eq([{"type"=>"Person", "name"=>"A. Fenton", "givenName"=>"A.", "familyName"=>"Fenton"}, {"type"=>"Person", "name"=>"S. A. Rands", "givenName"=>"S. A.", "familyName"=>"Rands"}])
82
- expect(subject.license).to eq("http://doi.wiley.com/10.1002/tdm_license_1")
82
+ expect(subject.license).to eq("url"=>"http://doi.wiley.com/10.1002/tdm_license_1")
83
83
  expect(subject.title).to eq("THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR–PREY COMMUNITIES")
84
84
  expect(subject.date_published).to eq("2006-11")
85
85
  expect(subject.date_modified).to eq("2016-10-04T17:20:17Z")
@@ -99,7 +99,7 @@ describe Bolognese::Crossref, vcr: true do
99
99
  expect(subject.resource_type_general).to eq("Text")
100
100
  expect(subject.author.length).to eq(7)
101
101
  expect(subject.author[2]).to eq("type"=>"Person", "id"=>"http://orcid.org/0000-0003-2043-4925", "name"=>"Beatriz Hernandez", "givenName"=>"Beatriz", "familyName"=>"Hernandez")
102
- expect(subject.license).to eq("http://creativecommons.org/licenses/by/3.0/")
102
+ expect(subject.license).to eq("url"=>"http://creativecommons.org/licenses/by/3.0/")
103
103
  expect(subject.title).to eq("Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers")
104
104
  expect(subject.date_published).to eq("2012")
105
105
  expect(subject.date_modified).to eq("2016-08-02T12:42:41Z")
@@ -152,7 +152,7 @@ describe Bolognese::Crossref, vcr: true do
152
152
  expect(subject.resource_type_general).to eq("Text")
153
153
  expect(subject.author.length).to eq(5)
154
154
  expect(subject.author.last).to eq("type"=>"Person", "name"=>"Christian S Hardtke", "givenName"=>"Christian S", "familyName"=>"Hardtke")
155
- expect(subject.license).to eq("http://creativecommons.org/licenses/by/3.0/")
155
+ expect(subject.license).to eq("url"=>"http://creativecommons.org/licenses/by/3.0/")
156
156
  expect(subject.title).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
157
157
  expect(subject.date_published).to eq("2014-02-11")
158
158
  expect(subject.date_modified).to eq("2015-08-11T05:35:02Z")
@@ -169,6 +169,8 @@ describe Bolognese::Crossref, vcr: true do
169
169
  expect(datacite.dig("resourceType", "resourceTypeGeneral")).to eq("Text")
170
170
  expect(datacite.dig("titles", "title")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
171
171
  expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").count).to eq(27)
172
+ expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").first).to eq("relatedIdentifierType"=>"DOI", "relationType"=>"Cites", "__content__"=>"https://doi.org/10.1038/nature02100")
173
+ expect(datacite.dig("rightsList")).to eq("rights"=>{"rightsURI"=>"http://creativecommons.org/licenses/by/3.0/"})
172
174
  expect(datacite.dig("fundingReferences", "fundingReference").count).to eq(4)
173
175
  expect(datacite.dig("fundingReferences", "fundingReference").last).to eq("funderName"=>"University of Lausanne", "funderIdentifier"=>{"funderIdentifierType"=>"Crossref Funder ID", "__content__"=>"https://doi.org/10.13039/501100006390"})
174
176
  end
@@ -18,8 +18,15 @@ describe Bolognese::SchemaOrg, vcr: true do
18
18
  expect(subject.keywords).to eq("datacite, doi, metadata, featured")
19
19
  expect(subject.date_published).to eq("2016-12-20")
20
20
  expect(subject.date_modified).to eq("2016-12-20")
21
- expect(subject.is_part_of).to eq("id"=>"https://doi.org/10.5438/0000-00ss", "type"=>"Blog", "name"=>"DataCite Blog", "relationType"=>"IsPartOf")
22
- expect(subject.references).to eq([{"id"=>"https://doi.org/10.5438/0012", "type"=>"CreativeWork", "relationType"=>"References"}, {"id"=>"https://doi.org/10.5438/55e5-t5c0", "type"=>"CreativeWork", "relationType"=>"References"}])
21
+ expect(subject.is_part_of).to eq("id"=>"https://doi.org/10.5438/0000-00ss", "type"=>"Blog", "name"=>"DataCite Blog", "relationType"=>"IsPartOf", "resourceTypeGeneral" => "Text")
22
+ expect(subject.references).to eq([{"id"=>"https://doi.org/10.5438/0012",
23
+ "type"=>"CreativeWork",
24
+ "relationType"=>"References",
25
+ "resourceTypeGeneral"=>"Other"},
26
+ {"id"=>"https://doi.org/10.5438/55e5-t5c0",
27
+ "type"=>"CreativeWork",
28
+ "relationType"=>"References",
29
+ "resourceTypeGeneral"=>"Other"}])
23
30
  expect(subject.publisher).to eq("DataCite")
24
31
  end
25
32
 
@@ -51,13 +58,15 @@ describe Bolognese::SchemaOrg, vcr: true do
51
58
  expect(subject.keywords).to eq("datacite, doi, metadata, featured")
52
59
  expect(subject.date_published).to eq("2016-12-20")
53
60
  expect(subject.date_modified).to eq("2016-12-20")
54
- expect(subject.is_part_of).to eq("id"=>"https://doi.org/10.5438/0000-00ss", "type"=>"Blog", "name"=>"DataCite Blog", "relationType"=>"IsPartOf")
61
+ expect(subject.is_part_of).to eq("id"=>"https://doi.org/10.5438/0000-00ss", "type"=>"Blog", "name"=>"DataCite Blog", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Text")
55
62
  expect(subject.references).to eq([{"id"=>"https://doi.org/10.5438/0012",
56
63
  "type"=>"CreativeWork",
57
- "relationType"=>"References"},
64
+ "relationType"=>"References",
65
+ "resourceTypeGeneral"=>"Other"},
58
66
  {"id"=>"https://doi.org/10.5438/55e5-t5c0",
59
- "type"=>"CreativeWork",
60
- "relationType"=>"References"}])
67
+ "type"=>"CreativeWork",
68
+ "relationType"=>"References",
69
+ "resourceTypeGeneral"=>"Other"}])
61
70
  expect(subject.publisher).to eq("DataCite")
62
71
  end
63
72
  end
@@ -67,7 +76,7 @@ describe Bolognese::SchemaOrg, vcr: true do
67
76
  datacite = Maremma.from_xml(subject.datacite).fetch("resource", {})
68
77
  expect(datacite.dig("titles", "title")).to eq("Eating your own Dog Food")
69
78
  expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").count).to eq(3)
70
- expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").first).to eq("relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf", "__content__"=>"https://doi.org/10.5438/0000-00ss")
79
+ expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").first).to eq("relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Text", "__content__"=>"https://doi.org/10.5438/0000-00ss")
71
80
  end
72
81
  end
73
82
 
@@ -68,14 +68,14 @@ describe Bolognese::Crossref, vcr: true do
68
68
  context "normalize ids" do
69
69
  it "doi" do
70
70
  ids = [{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/0012"}, {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/55E5-T5C0"}]
71
- response = subject.normalize_ids(ids)
72
- expect(response).to eq([{"id"=>"https://doi.org/10.5438/0012", "type"=>"CreativeWork", "relationType"=>"References"}, {"id"=>"https://doi.org/10.5438/55e5-t5c0", "type"=>"CreativeWork", "relationType"=>"References"}])
71
+ response = subject.normalize_ids(ids: ids)
72
+ expect(response).to eq([{"id"=>"https://doi.org/10.5438/0012", "type"=>"CreativeWork", "relationType"=>"References", "resourceTypeGeneral" => "Other"}, {"id"=>"https://doi.org/10.5438/55e5-t5c0", "type"=>"CreativeWork", "relationType"=>"References", "resourceTypeGeneral" => "Other"}])
73
73
  end
74
74
 
75
75
  it "url" do
76
76
  ids = [{"@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food/"}]
77
- response = subject.normalize_ids(ids)
78
- expect(response).to eq("id"=>"https://blog.datacite.org/eating-your-own-dog-food", "type"=>"CreativeWork", "relationType"=>"References")
77
+ response = subject.normalize_ids(ids: ids)
78
+ expect(response).to eq("id"=>"https://blog.datacite.org/eating-your-own-dog-food", "resourceTypeGeneral" => "Other", "type"=>"CreativeWork", "relationType"=>"References")
79
79
  end
80
80
  end
81
81
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-01 00:00:00.000000000 Z
11
+ date: 2017-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma