bolognese 0.5 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3f81c7d2d95a4c66adb94672309f22ffdae3f7c
4
- data.tar.gz: 8c00d86fb7ee25359bbe568638674140d99a6d1d
3
+ metadata.gz: deb650206d9feee61ce70231a6e0d847dd7cb624
4
+ data.tar.gz: 129088964177fa28dd209875529bf3d502163bac
5
5
  SHA512:
6
- metadata.gz: a64a2cc22e1be39d8e94aa94ef2cbc2ba35300d322c74043153a81c81589f99a6e0fe49922fa1dd493ba6bd9aeb7eee9e72f7edfc141bee13367b1359589035c
7
- data.tar.gz: af27b299a2b95bf3250bc7dce7941898f69f17eb7c85dad303057926ec0e94245de4ee1f5b7c3b8ea902d388dcee706098b992ef94462feeb02bab7cf49aa16f
6
+ metadata.gz: 28d10eae1a9a8adc8c4e53f191d2f1cf8218327e6e144103d73cf9d4e38f2dff371d2f8a40ae6db9b40437ecc873fcce5054df05b155d297457dae2d2c4fe236
7
+ data.tar.gz: 6eb9ce2ba440d28822a4df0dccf9ade48d4bdee95d43dd034f1b2134e3ad8289b8998a49dd2a29189648e649e6d87894263e7a36377e256159a04811781a8db9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.5)
4
+ bolognese (0.5.1)
5
5
  activesupport (~> 4.2, >= 4.2.5)
6
6
  builder (~> 3.2, >= 3.2.2)
7
7
  dotenv (~> 2.1, >= 2.1.1)
@@ -12,7 +12,7 @@ module Bolognese
12
12
  author = cleanup_author(author)
13
13
  names = Namae.parse(author)
14
14
 
15
- if names.blank? || is_personal_name?(author).blank?
15
+ if names.blank? || !is_personal_name?(author)
16
16
  { "@type" => "Agent",
17
17
  "@id" => orcid,
18
18
  "Name" => author }.compact
@@ -48,17 +48,15 @@ module Bolognese
48
48
  Array(authors).map { |author| get_one_author(author) }
49
49
  end
50
50
 
51
- # pase nameIdentifier from DataCite
51
+ # parse nameIdentifier from DataCite
52
52
  def get_name_identifier(author)
53
53
  name_identifier = author.dig("nameIdentifier", "text")
54
54
  name_identifier = validate_orcid(name_identifier)
55
-
56
55
  name_identifier_scheme = author.dig("nameIdentifier", "nameIdentifierScheme") || "ORCID"
57
- if name_identifier.present? && name_identifier_scheme.downcase == "orcid"
58
- "http://orcid.org/#{name_identifier}"
59
- else
60
- nil
61
- end
56
+
57
+ return nil if name_identifier.blank? || name_identifier_scheme.upcase != "ORCID"
58
+
59
+ "http://orcid.org/" + name_identifier
62
60
  end
63
61
  end
64
62
  end
@@ -4,10 +4,10 @@ module Bolognese
4
4
  # CrossRef types from https://api.crossref.org/types
5
5
  CR_TO_SO_TRANSLATIONS = {
6
6
  "Proceedings" => nil,
7
- "ReferenceBook" => nil,
8
- "JournalIssue" => nil,
7
+ "ReferenceBook" => "Book",
8
+ "JournalIssue" => "PublicationIssue",
9
9
  "ProceedingsArticle" => nil,
10
- "Other" => nil,
10
+ "Other" => "CreativeWork",
11
11
  "Dissertation" => "Thesis",
12
12
  "Dataset" => "Dataset",
13
13
  "EditedBook" => "Book",
@@ -24,11 +24,11 @@ module Bolognese
24
24
  "BookChapter" => "Chapter",
25
25
  "StandardSeries" => nil,
26
26
  "Monograph" => "Book",
27
- "Component" => nil,
27
+ "Component" => "CreativeWork",
28
28
  "ReferenceEntry" => nil,
29
- "JournalVolume" => nil,
29
+ "JournalVolume" => "PublicationVolume",
30
30
  "BookSet" => nil,
31
- "PostedContent" => nil
31
+ "PostedContent" => "ScholarlyArticle"
32
32
  }
33
33
 
34
34
  def initialize(id: nil, string: nil)
@@ -80,6 +80,14 @@ module Bolognese
80
80
  bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || {}
81
81
  end
82
82
 
83
+ def resource_type_general
84
+ SO_TO_DC_TRANSLATIONS[type]
85
+ end
86
+
87
+ def type
88
+ CR_TO_SO_TRANSLATIONS[additional_type] || "ScholarlyArticle"
89
+ end
90
+
83
91
  def additional_type
84
92
  if metadata.dig("crossref", "journal").present?
85
93
  metadata.dig("crossref", "journal").keys.last.camelize
@@ -88,10 +96,6 @@ module Bolognese
88
96
  end
89
97
  end
90
98
 
91
- def type
92
- CR_TO_SO_TRANSLATIONS[additional_type] || "CreativeWork"
93
- end
94
-
95
99
  def name
96
100
  parse_attribute(bibliographic_metadata.dig("titles", "title"))
97
101
  end
@@ -48,9 +48,12 @@ module Bolognese
48
48
  normalize_doi(doi)
49
49
  end
50
50
 
51
+ def resource_type_general
52
+ metadata.dig("resourceType", "resourceTypeGeneral")
53
+ end
54
+
51
55
  def type
52
- k = metadata.dig("resourceType", "resourceTypeGeneral")
53
- DC_TO_SO_TRANSLATIONS[k.to_s.dasherize] || "CreativeWork"
56
+ DC_TO_SO_TRANSLATIONS[resource_type_general.to_s.dasherize] || "CreativeWork"
54
57
  end
55
58
 
56
59
  def additional_type
@@ -103,6 +106,8 @@ module Bolognese
103
106
  Array.wrap(metadata.dig("dates", "date"))
104
107
  end
105
108
 
109
+ #Accepted Available Copyrighted Collected Created Issued Submitted Updated Valid
110
+
106
111
  def date(date_type)
107
112
  dd = dates.find { |d| d["dateType"] == date_type } || {}
108
113
  dd.fetch("text", nil)
@@ -120,6 +125,14 @@ module Bolognese
120
125
  date("Updated")
121
126
  end
122
127
 
128
+ def language
129
+ metadata.fetch("language", nil)
130
+ end
131
+
132
+ def spatial_coverage
133
+
134
+ end
135
+
123
136
  def related_identifiers(relation_type)
124
137
  Array(metadata.dig("relatedIdentifiers", "relatedIdentifier"))
125
138
  .select { |r| relation_type.split(" ").include?(r["relationType"]) && %w(DOI URL).include?(r["relatedIdentifierType"]) }
@@ -28,7 +28,7 @@ module Bolognese
28
28
  "http://creativecommons.org/licenses/by/4.0/" => "Creative Commons Attribution 4.0 (CC-BY 4.0)",
29
29
  "http://creativecommons.org/licenses/by-nc/4.0/" => "Creative Commons Attribution Noncommercial 4.0 (CC-BY-NC 4.0)",
30
30
  "http://creativecommons.org/licenses/by-sa/4.0/" => "Creative Commons Attribution Share Alike 4.0 (CC-BY-SA 4.0)",
31
- "http://creativecommons.org/licenses/by-nc-nd/4.0/" => "Creative Commons Attribution Noncommercial No Derivaties 4.0 (CC-BY-NC-ND 4.0)"
31
+ "http://creativecommons.org/licenses/by-nc-nd/4.0/" => "Creative Commons Attribution Noncommercial No Derivatives 4.0 (CC-BY-NC-ND 4.0)"
32
32
  }
33
33
 
34
34
  SCHEMA = File.expand_path("../../../resources/kernel-4.0/metadata.xsd", __FILE__)
@@ -230,4 +230,3 @@ module Bolognese
230
230
  end
231
231
  end
232
232
  end
233
-
@@ -48,6 +48,18 @@ module Bolognese
48
48
 
49
49
  end
50
50
 
51
+ def contributor
52
+
53
+ end
54
+
55
+ def language
56
+
57
+ end
58
+
59
+ def spatial_coverage
60
+
61
+ end
62
+
51
63
  def as_schema_org
52
64
  { "@context" => "http://schema.org",
53
65
  "@type" => type,
@@ -62,11 +74,13 @@ module Bolognese
62
74
  "license" => license,
63
75
  "version" => version,
64
76
  "keywords" => keywords,
77
+ "language" => language,
65
78
  "dateCreated" => date_created,
66
79
  "datePublished" => date_published,
67
80
  "dateModified" => date_modified,
68
81
  "pageStart" => page_start,
69
82
  "pageEnd" => page_end,
83
+ "spatialCoverage" => spatial_coverage,
70
84
  "isPartOf" => is_part_of,
71
85
  "hasPart" => has_part,
72
86
  "citation" => citation,
@@ -35,6 +35,10 @@ module Bolognese
35
35
  normalize_id(metadata.fetch("url", nil))
36
36
  end
37
37
 
38
+ def resource_type_general
39
+ SO_TO_DC_TRANSLATIONS[type]
40
+ end
41
+
38
42
  def type
39
43
  metadata.fetch("@type", nil)
40
44
  end
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.5"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -10,6 +10,7 @@ describe Bolognese::Crossref, vcr: true do
10
10
  expect(subject.id).to eq("https://doi.org/10.7554/elife.01567")
11
11
  expect(subject.type).to eq("ScholarlyArticle")
12
12
  expect(subject.additional_type).to eq("JournalArticle")
13
+ expect(subject.resource_type_general).to eq("Text")
13
14
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Martial", "familyName"=>"Sankar"},
14
15
  {"@type"=>"Person", "givenName"=>"Kaisa", "familyName"=>"Nieminen"},
15
16
  {"@type"=>"Person", "givenName"=>"Laura", "familyName"=>"Ragni"},
@@ -31,6 +32,7 @@ describe Bolognese::Crossref, vcr: true do
31
32
  expect(subject.id).to eq(id)
32
33
  expect(subject.type).to eq("ScholarlyArticle")
33
34
  expect(subject.additional_type).to eq("JournalArticle")
35
+ expect(subject.resource_type_general).to eq("Text")
34
36
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Markus", "familyName"=>"Ralser"},
35
37
  {"@type"=>"Person", "givenName"=>"Gino", "familyName"=>"Heeren"},
36
38
  {"@type"=>"Person", "givenName"=>"Michael", "familyName"=>"Breitenbach"},
@@ -50,8 +52,9 @@ describe Bolognese::Crossref, vcr: true do
50
52
  id = "https://doi.org/10.1101/097196"
51
53
  subject = Bolognese::Crossref.new(id: id)
52
54
  expect(subject.id).to eq(id)
53
- expect(subject.type).to eq("CreativeWork")
55
+ expect(subject.type).to eq("ScholarlyArticle")
54
56
  expect(subject.additional_type).to eq("PostedContent")
57
+ expect(subject.resource_type_general).to eq("Text")
55
58
  expect(subject.author.count).to eq(10)
56
59
  expect(subject.author.last).to eq("@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-4060-7360", "givenName"=>"Timothy", "familyName"=>"Clark")
57
60
  expect(subject.name).to eq("A Data Citation Roadmap for Scholarly Data Repositories")
@@ -69,6 +72,7 @@ describe Bolognese::Crossref, vcr: true do
69
72
  expect(subject.id).to eq("https://doi.org/10.1890/0012-9658(2006)87%5B2832:tiopma%5D2.0.co;2")
70
73
  expect(subject.type).to eq("ScholarlyArticle")
71
74
  expect(subject.additional_type).to eq("JournalArticle")
75
+ expect(subject.resource_type_general).to eq("Text")
72
76
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"A.", "familyName"=>"Fenton"}, {"@type"=>"Person", "givenName"=>"S. A.", "familyName"=>"Rands"}])
73
77
  expect(subject.license).to eq("http://doi.wiley.com/10.1002/tdm_license_1")
74
78
  expect(subject.name).to eq("THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR–PREY COMMUNITIES")
@@ -86,6 +90,7 @@ describe Bolognese::Crossref, vcr: true do
86
90
  expect(subject.id).to eq("https://doi.org/10.1155/2012/291294")
87
91
  expect(subject.type).to eq("ScholarlyArticle")
88
92
  expect(subject.additional_type).to eq("JournalArticle")
93
+ expect(subject.resource_type_general).to eq("Text")
89
94
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Wendy", "familyName"=>"Thanassi"},
90
95
  {"@type"=>"Person", "givenName"=>"Art", "familyName"=>"Noda"},
91
96
  {"@type"=>"Person",
@@ -112,6 +117,7 @@ describe Bolognese::Crossref, vcr: true do
112
117
  expect(subject.id).to eq(id)
113
118
  expect(subject.type).to eq("ScholarlyArticle")
114
119
  expect(subject.additional_type).to eq("JournalArticle")
120
+ expect(subject.resource_type_general).to eq("Text")
115
121
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Sarah E.", "familyName"=>"Beck"},
116
122
  {"@type"=>"Person", "givenName"=>"Suzanne E.", "familyName"=>"Queen"},
117
123
  {"@type"=>"Person", "givenName"=>"Kenneth W.", "familyName"=>"Witwer"},
@@ -151,6 +157,7 @@ describe Bolognese::Crossref, vcr: true do
151
157
  expect(subject.id).to eq("https://doi.org/10.7554/elife.01567")
152
158
  expect(subject.type).to eq("ScholarlyArticle")
153
159
  expect(subject.additional_type).to eq("JournalArticle")
160
+ expect(subject.resource_type_general).to eq("Text")
154
161
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Martial", "familyName"=>"Sankar"},
155
162
  {"@type"=>"Person", "givenName"=>"Kaisa", "familyName"=>"Nieminen"},
156
163
  {"@type"=>"Person", "givenName"=>"Laura", "familyName"=>"Ragni"},
@@ -171,6 +178,7 @@ describe Bolognese::Crossref, vcr: true do
171
178
  it "with data citation" do
172
179
  expect(subject.validation_errors).to be_empty
173
180
  datacite = Maremma.from_xml(subject.as_datacite).fetch("resource", {})
181
+ expect(datacite.dig("resourceType", "resourceTypeGeneral")).to eq("Text")
174
182
  expect(datacite.dig("titles", "title")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
175
183
  expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").count).to eq(25)
176
184
  end
@@ -180,6 +188,7 @@ describe Bolognese::Crossref, vcr: true do
180
188
  subject = Bolognese::Crossref.new(id: id)
181
189
  expect(subject.validation_errors).to be_empty
182
190
  datacite = Maremma.from_xml(subject.as_datacite).fetch("resource", {})
191
+ expect(datacite.dig("resourceType", "resourceTypeGeneral")).to eq("Text")
183
192
  expect(datacite.dig("creators", "creator").count).to eq(7)
184
193
  expect(datacite.dig("creators", "creator").first).to eq("creatorName"=>"Thanassi, Wendy", "givenName"=>"Wendy", "familyName"=>"Thanassi")
185
194
  end
@@ -10,6 +10,7 @@ describe Bolognese::Datacite, vcr: true do
10
10
  expect(subject.id).to eq("https://doi.org/10.5061/dryad.8515")
11
11
  expect(subject.type).to eq("Dataset")
12
12
  expect(subject.additional_type).to eq("DataPackage")
13
+ expect(subject.resource_type_general).to eq("Dataset")
13
14
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Benjamin", "familyName"=>"Ollomo"},
14
15
  {"@type"=>"Person", "givenName"=>"Patrick", "familyName"=>"Durand"},
15
16
  {"@type"=>"Person", "givenName"=>"Franck", "familyName"=>"Prugnolle"},
@@ -35,6 +36,7 @@ describe Bolognese::Datacite, vcr: true do
35
36
  expect(subject.id).to eq("https://doi.org/10.5438/4k3m-nyvg")
36
37
  expect(subject.type).to eq("ScholarlyArticle")
37
38
  expect(subject.additional_type).to eq("BlogPosting")
39
+ expect(subject.resource_type_general).to eq("Text")
38
40
  expect(subject.author).to eq([{"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner"}])
39
41
  expect(subject.name).to eq("Eating your own Dog Food")
40
42
  expect(subject.alternate_name).to eq("MS-49-3632-5083")
@@ -54,6 +56,7 @@ describe Bolognese::Datacite, vcr: true do
54
56
  expect(subject.id).to eq("https://doi.org/10.4230/lipics.tqc.2013.93")
55
57
  expect(subject.type).to eq("ScholarlyArticle")
56
58
  expect(subject.additional_type).to eq("ConferencePaper")
59
+ expect(subject.resource_type_general).to eq("Text")
57
60
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Nathaniel", "familyName"=>"Johnston"}])
58
61
  expect(subject.name).to eq("The Minimum Size of Qubit Unextendible Product Bases")
59
62
  expect(subject.description).to start_with("We investigate the problem of constructing unextendible product bases in the qubit case")
@@ -77,6 +80,7 @@ describe Bolognese::Datacite, vcr: true do
77
80
  expect(subject.id).to eq("https://doi.org/10.5061/dryad.8515")
78
81
  expect(subject.type).to eq("Dataset")
79
82
  expect(subject.additional_type).to eq("DataPackage")
83
+ expect(subject.resource_type_general).to eq("Dataset")
80
84
  expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Benjamin", "familyName"=>"Ollomo"},
81
85
  {"@type"=>"Person", "givenName"=>"Patrick", "familyName"=>"Durand"},
82
86
  {"@type"=>"Person", "givenName"=>"Franck", "familyName"=>"Prugnolle"},
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner