bolognese 0.5 → 0.5.1

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: 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