bolognese 0.6.5 → 0.6.6

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: 52deb6793101a56d9a824b036aff219ba58327eb
4
- data.tar.gz: 9f96c1a7a6920e9395f92969822bc44064fdf179
3
+ metadata.gz: 4cf9b774c122a31d80d29bac90783498458f5aff
4
+ data.tar.gz: 970db12ff440f5907609eaabbac07676b06fe1e6
5
5
  SHA512:
6
- metadata.gz: 893420085b143cff1dd78cbbc5ed96f34cc0497a9a998249076ba2372957bc87c0b0d48873572b10cf628e9b01df8ec0adb6d2580440afcf8c3e8037be6f49bf
7
- data.tar.gz: 32378cb92d547a7ecb33f4a69a8e794ca0649a82865552b35794e8f7bb6af14a047fc84a6512cf6dea6df2195664977784a67e263eed1c4fde55d6d6b8b61702
6
+ metadata.gz: 14b38895e972a549842ec6a1f7388f4f2bd5dff742860689d189a15702843ef3babb1b6b9ff181faabd626391f2e41abf8825aff596c67b8aa9bc422dcde547d
7
+ data.tar.gz: 639783c23011fc7567b9c8397bf214d0dcc89604660297cc77da29fd9a899f17bffd7bd8f142b50ee4c24804246b201f5278fc5bd4f9d2938262038d239f8b28
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.6.5)
4
+ bolognese (0.6.6)
5
5
  activesupport (~> 4.2, >= 4.2.5)
6
6
  bibtex-ruby (~> 4.1)
7
7
  builder (~> 3.2, >= 3.2.2)
@@ -7,7 +7,7 @@ module Bolognese
7
7
  orcid = get_name_identifier(author)
8
8
  author = author.fetch("creatorName", nil)
9
9
 
10
- return { "Name" => "" } if author.to_s.strip.blank?
10
+ return { "name" => "" } if author.to_s.strip.blank?
11
11
 
12
12
  author = cleanup_author(author)
13
13
  names = Namae.parse(author)
@@ -15,7 +15,7 @@ module Bolognese
15
15
  if names.blank? || !is_personal_name?(author)
16
16
  { "@type" => "Agent",
17
17
  "@id" => orcid,
18
- "Name" => author }.compact
18
+ "name" => author }.compact
19
19
  else
20
20
  name = names.first
21
21
 
@@ -171,21 +171,23 @@ module Bolognese
171
171
 
172
172
  def people(contributor_role)
173
173
  person = bibliographic_metadata.dig("contributors", "person_name")
174
- Array.wrap(person).select { |a| a["contributor_role"] == contributor_role }.map do |a|
174
+ a = Array.wrap(person).select { |a| a["contributor_role"] == contributor_role }.map do |a|
175
175
  { "@type" => "Person",
176
176
  "@id" => parse_attributes(a["ORCID"]),
177
177
  "givenName" => a["given_name"],
178
178
  "familyName" => a["surname"] }.compact
179
- end.presence
179
+ end
180
+ array_unwrap(a)
180
181
  end
181
182
 
182
183
  def funder
183
184
  fundref = Array.wrap(program_metadata).find { |a| a["name"] == "fundref" } || {}
184
- Array.wrap(fundref.fetch("assertion", [])).select { |a| a["name"] == "fundgroup" }.map do |f|
185
+ a = Array.wrap(fundref.fetch("assertion", [])).select { |a| a["name"] == "fundgroup" }.map do |f|
185
186
  { "@type" => "Organization",
186
187
  "@id" => normalize_id(f.dig("assertion", "assertion", "__content__")),
187
188
  "name" => f.dig("assertion", "__content__").strip }.compact
188
- end.presence
189
+ end
190
+ array_unwrap(a)
189
191
  end
190
192
 
191
193
  def date_published
@@ -109,13 +109,13 @@ module Bolognese
109
109
  def author
110
110
  authors = metadata.dig("creators", "creator")
111
111
  authors = [authors] if authors.is_a?(Hash)
112
- get_authors(authors).presence
112
+ array_unwrap(get_authors(authors))
113
113
  end
114
114
 
115
115
  def editor
116
116
  editors = Array.wrap(metadata.dig("contributors", "contributor"))
117
117
  .select { |r| r["contributorType"] == "Editor" }
118
- get_authors(editors).presence
118
+ array_unwrap(get_authors(editors))
119
119
  end
120
120
 
121
121
  def funder
@@ -186,20 +186,33 @@ module Bolognese
186
186
  end
187
187
 
188
188
  def related_identifiers(relation_type)
189
- Array(metadata.dig("relatedIdentifiers", "relatedIdentifier"))
189
+ a = Array.wrap(metadata.dig("relatedIdentifiers", "relatedIdentifier"))
190
190
  .select { |r| relation_type.split(" ").include?(r["relationType"]) && %w(DOI URL).include?(r["relatedIdentifierType"]) }
191
191
  .map do |work|
192
192
  { "@type" => "CreativeWork",
193
193
  "@id" => normalize_id(work["__content__"]) }
194
194
  end
195
+ array_unwrap(a)
196
+ end
197
+
198
+ def same_as
199
+ related_identifiers("IsIdenticalTo")
195
200
  end
196
201
 
197
202
  def is_part_of
198
- related_identifiers("IsPartOf").first
203
+ related_identifiers("IsPartOf")
199
204
  end
200
205
 
201
206
  def has_part
202
- related_identifiers("HasPart").presence
207
+ related_identifiers("HasPart")
208
+ end
209
+
210
+ def predecessor_of
211
+ related_identifiers("IsPreviousVersionOf")
212
+ end
213
+
214
+ def successor_of
215
+ related_identifiers("IsNewVersionOf")
203
216
  end
204
217
 
205
218
  def citation
@@ -16,7 +16,7 @@ module Bolognese
16
16
  :additional_type, :alternate_name, :url, :version, :keywords, :editor,
17
17
  :page_start, :page_end, :date_modified, :language, :spatial_coverage,
18
18
  :content_size, :funder, :journal, :bibtex_type, :date_created, :has_part,
19
- :publisher, :contributor, :schema_version
19
+ :publisher, :contributor, :schema_version, :same_as, :predecessor_of, :successor_of
20
20
 
21
21
  alias_method :datacite, :as_datacite
22
22
 
@@ -29,8 +29,8 @@ module Bolognese
29
29
  end
30
30
 
31
31
  def author_string
32
- author.map { |a| [a["familyName"], a["givenName"]].join(", ") }
33
- .join(" and ").presence
32
+ Array.wrap(author).map { |a| [a["familyName"], a["givenName"]].join(", ") }
33
+ .join(" and ").presence
34
34
  end
35
35
 
36
36
  def publisher_string
@@ -59,8 +59,11 @@ module Bolognese
59
59
  "pageStart" => page_start,
60
60
  "pageEnd" => page_end,
61
61
  "spatialCoverage" => spatial_coverage,
62
+ "sameAs" => same_as,
62
63
  "isPartOf" => is_part_of,
63
64
  "hasPart" => has_part,
65
+ "predecessor_of" => predecessor_of,
66
+ "successor_of" => successor_of,
64
67
  "citation" => citation,
65
68
  "schemaVersion" => schema_version,
66
69
  "publisher" => publisher,
@@ -100,16 +100,20 @@ module Bolognese
100
100
  normalize_ids(metadata.fetch(relation_type, nil))
101
101
  end
102
102
 
103
+ def same_as
104
+ related_identifiers("isIdenticalTo")
105
+ end
106
+
103
107
  def is_part_of
104
- related_identifiers("isPartOf").first
108
+ related_identifiers("isPartOf")
105
109
  end
106
110
 
107
111
  def has_part
108
- related_identifiers("hasPart").presence
112
+ related_identifiers("hasPart")
109
113
  end
110
114
 
111
115
  def citation
112
- related_identifiers("citation").presence
116
+ related_identifiers("citation")
113
117
  end
114
118
 
115
119
  def publisher
@@ -75,12 +75,20 @@ module Bolognese
75
75
  element.fetch(content, nil)
76
76
  elsif element.is_a?(Array)
77
77
  a = element.map { |e| e.fetch(content, nil) }.uniq
78
- a.length == 1 ? a.first : a
78
+ array_unwrap(a)
79
79
  else
80
80
  nil
81
81
  end
82
82
  end
83
83
 
84
+ def array_unwrap(element)
85
+ case element.length
86
+ when 0 then nil
87
+ when 1 then element.first
88
+ else element
89
+ end
90
+ end
91
+
84
92
  def normalize_id(id)
85
93
  return nil unless id.present?
86
94
 
@@ -96,7 +104,8 @@ module Bolognese
96
104
  end
97
105
 
98
106
  def normalize_ids(list)
99
- Array.wrap(list).map { |url| url.merge("@id" => normalize_id(url["@id"])) }
107
+ a = Array.wrap(list).map { |url| url.merge("@id" => normalize_id(url["@id"])) }
108
+ array_unwrap(a)
100
109
  end
101
110
  end
102
111
  end
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.6.5"
2
+ VERSION = "0.6.6"
3
3
  end
@@ -50,7 +50,7 @@ describe Bolognese::Crossref, vcr: true do
50
50
  {"@type"=>"Person", "givenName"=>"Michael", "familyName"=>"Breitenbach"},
51
51
  {"@type"=>"Person", "givenName"=>"Hans", "familyName"=>"Lehrach"},
52
52
  {"@type"=>"Person", "givenName"=>"Sylvia", "familyName"=>"Krobitsch"}])
53
- expect(subject.editor).to eq([{"@type"=>"Person", "givenName"=>"Guilhem", "familyName"=>"Janbon"}])
53
+ expect(subject.editor).to eq("@type"=>"Person", "givenName"=>"Guilhem", "familyName"=>"Janbon")
54
54
  expect(subject.name).to eq("Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization–Not Catalytic Inactivity–of the Mutant Enzymes")
55
55
  expect(subject.license).to eq("http://creativecommons.org/licenses/by/4.0/")
56
56
  expect(subject.date_published).to eq("2006-12-20")
@@ -25,7 +25,7 @@ describe Bolognese::Datacite, vcr: true do
25
25
  expect(subject.date_published).to eq("2011")
26
26
  expect(subject.has_part).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/1"},
27
27
  {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/2"}])
28
- expect(subject.citation).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446"}])
28
+ expect(subject.citation).to eq("@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446")
29
29
  expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"Dryad Digital Repository")
30
30
  expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
31
31
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
@@ -38,7 +38,7 @@ describe Bolognese::Datacite, vcr: true do
38
38
  expect(subject.type).to eq("ScholarlyArticle")
39
39
  expect(subject.additional_type).to eq("BlogPosting")
40
40
  expect(subject.resource_type_general).to eq("Text")
41
- expect(subject.author).to eq([{"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner"}])
41
+ expect(subject.author).to eq("@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner")
42
42
  expect(subject.name).to eq("Eating your own Dog Food")
43
43
  expect(subject.alternate_name).to eq("MS-49-3632-5083")
44
44
  expect(subject.description).to start_with("Eating your own dog food")
@@ -59,7 +59,7 @@ describe Bolognese::Datacite, vcr: true do
59
59
  expect(subject.type).to eq("ScholarlyArticle")
60
60
  expect(subject.additional_type).to eq("ConferencePaper")
61
61
  expect(subject.resource_type_general).to eq("Text")
62
- expect(subject.author).to eq([{"@type"=>"Person", "givenName"=>"Nathaniel", "familyName"=>"Johnston"}])
62
+ expect(subject.author).to eq("@type"=>"Person", "givenName"=>"Nathaniel", "familyName"=>"Johnston")
63
63
  expect(subject.name).to eq("The Minimum Size of Qubit Unextendible Product Bases")
64
64
  expect(subject.description).to start_with("We investigate the problem of constructing unextendible product bases in the qubit case")
65
65
  expect(subject.date_published).to eq("2013")
@@ -75,16 +75,36 @@ describe Bolognese::Datacite, vcr: true do
75
75
  expect(subject.type).to eq("SoftwareSourceCode")
76
76
  expect(subject.additional_type).to eq("Software")
77
77
  expect(subject.resource_type_general).to eq("Software")
78
- expect(subject.author).to eq([{"@type"=>"Agent", "Name"=>"Kristian Garza"}])
78
+ expect(subject.author).to eq("@type"=>"Agent", "name"=>"Kristian Garza")
79
79
  expect(subject.name).to eq("Analysis Tools for Crossover Experiment of UI using Choice Architecture")
80
80
  expect(subject.description).to start_with("<p>&nbsp;</p>\n\n<p>This tools are used to analyse the data produced by the Crosssover Experiment")
81
81
  expect(subject.license).to eq(["info:eu-repo/semantics/openAccess", "https://creativecommons.org/licenses/by-nc-sa/4.0/"])
82
82
  expect(subject.date_published).to eq("2016-03-27")
83
+ expect(subject.citation).to eq("@type"=>"CreativeWork", "@id"=>"https://github.com/kjgarza/frame_experiment_analysis/tree/v1.0")
83
84
  expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"Zenodo")
84
85
  expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
85
86
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
86
87
  end
87
88
 
89
+ it "is identical to" do
90
+ id = "10.6084/M9.FIGSHARE.4234751.V1"
91
+ subject = Bolognese::Datacite.new(id: id)
92
+ expect(subject.id).to eq("https://doi.org/10.6084/m9.figshare.4234751.v1")
93
+ expect(subject.type).to eq("Dataset")
94
+ expect(subject.additional_type).to eq("Dataset")
95
+ expect(subject.resource_type_general).to eq("Dataset")
96
+ expect(subject.author.count).to eq(11)
97
+ expect(subject.author.first).to eq("@type"=>"Agent", "@id"=>"http://orcid.org/0000-0002-2410-9671", "name"=>"Alexander Junge")
98
+ expect(subject.name).to eq("RAIN v1")
99
+ expect(subject.description).to start_with("<div><b>RAIN: RNA–protein Association and Interaction Networks")
100
+ expect(subject.license).to eq("https://creativecommons.org/licenses/by/4.0/")
101
+ expect(subject.date_published).to eq("2016")
102
+ expect(subject.same_as).to eq("@type"=>"CreativeWork", "@id"=>"https://doi.org/10.6084/m9.figshare.4234751")
103
+ expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"Figshare")
104
+ expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
105
+ expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
106
+ end
107
+
88
108
  it "funding schema version 3" do
89
109
  id = "https://doi.org/10.5281/ZENODO.1239"
90
110
  subject = Bolognese::Datacite.new(id: id)
@@ -153,7 +173,7 @@ describe Bolognese::Datacite, vcr: true do
153
173
  expect(subject.date_published).to eq("2011")
154
174
  expect(subject.has_part).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/1"},
155
175
  {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/2"}])
156
- expect(subject.citation).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446"}])
176
+ expect(subject.citation).to eq("@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446")
157
177
  expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
158
178
  end
159
179
 
@@ -187,7 +207,7 @@ describe Bolognese::Datacite, vcr: true do
187
207
  expect(subject.date_published).to eq("2011")
188
208
  expect(subject.has_part).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/1"},
189
209
  {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5061/dryad.8515/2"}])
190
- expect(subject.citation).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446"}])
210
+ expect(subject.citation).to eq("@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446")
191
211
  expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"Dryad Digital Repository")
192
212
  expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
193
213
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
@@ -0,0 +1,176 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/10.6084/m9.figshare.4234751.v1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma - https://github.com/datacite/maremma
12
+ Accept:
13
+ - application/vnd.datacite.datacite+xml
14
+ response:
15
+ status:
16
+ code: 303
17
+ message: ''
18
+ headers:
19
+ Server:
20
+ - Apache-Coyote/1.1
21
+ Vary:
22
+ - Accept
23
+ Location:
24
+ - http://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1
25
+ Expires:
26
+ - Thu, 23 Feb 2017 08:31:06 GMT
27
+ Content-Type:
28
+ - text/html;charset=utf-8
29
+ Content-Length:
30
+ - '199'
31
+ Date:
32
+ - Thu, 23 Feb 2017 07:48:39 GMT
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ <html><head><title>Handle Redirect</title></head>
37
+ <body><a href="http://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1">http://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1</a></body></html>
38
+ http_version:
39
+ recorded_at: Thu, 23 Feb 2017 07:48:39 GMT
40
+ - request:
41
+ method: get
42
+ uri: http://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1
43
+ body:
44
+ encoding: US-ASCII
45
+ string: ''
46
+ headers:
47
+ User-Agent:
48
+ - Maremma - https://github.com/datacite/maremma
49
+ Accept:
50
+ - application/vnd.datacite.datacite+xml
51
+ response:
52
+ status:
53
+ code: 301
54
+ message: ''
55
+ headers:
56
+ Server:
57
+ - openresty/1.11.2.2
58
+ Date:
59
+ - Thu, 23 Feb 2017 07:48:39 GMT
60
+ Content-Type:
61
+ - text/html
62
+ Content-Length:
63
+ - '191'
64
+ Connection:
65
+ - keep-alive
66
+ Location:
67
+ - https://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1
68
+ body:
69
+ encoding: UTF-8
70
+ string: "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body
71
+ bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>openresty/1.11.2.2</center>\r\n</body>\r\n</html>\r\n"
72
+ http_version:
73
+ recorded_at: Thu, 23 Feb 2017 07:48:39 GMT
74
+ - request:
75
+ method: get
76
+ uri: https://data.datacite.org/10.6084%2Fm9.figshare.4234751.v1
77
+ body:
78
+ encoding: US-ASCII
79
+ string: ''
80
+ headers:
81
+ User-Agent:
82
+ - Maremma - https://github.com/datacite/maremma
83
+ Accept:
84
+ - application/vnd.datacite.datacite+xml
85
+ response:
86
+ status:
87
+ code: 200
88
+ message: ''
89
+ headers:
90
+ Server:
91
+ - openresty/1.11.2.2
92
+ Date:
93
+ - Thu, 23 Feb 2017 07:48:40 GMT
94
+ Content-Type:
95
+ - application/vnd.datacite.datacite+xml
96
+ Content-Length:
97
+ - '2704'
98
+ Connection:
99
+ - keep-alive
100
+ Cache-Control:
101
+ - no-transform, max-age=3600
102
+ Last-Modified:
103
+ - Wed, 16 Nov 2016 10:49:12 GMT
104
+ Vary:
105
+ - Accept
106
+ Access-Control-Allow-Origin:
107
+ - "*"
108
+ Access-Control-Allow-Methods:
109
+ - GET, POST, OPTIONS
110
+ body:
111
+ encoding: ASCII-8BIT
112
+ string: !binary |-
113
+ PHJlc291cmNlIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9r
114
+ ZXJuZWwtMyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN
115
+ TFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8v
116
+ ZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyBodHRwOi8vc2NoZW1hLmRh
117
+ dGFjaXRlLm9yZy9tZXRhL2tlcm5lbC0zL21ldGFkYXRhLnhzZCI+PGlkZW50
118
+ aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNjA4NC9tOS5maWdzaGFy
119
+ ZS40MjM0NzUxLnYxPC9pZGVudGlmaWVyPjxjcmVhdG9ycz48Y3JlYXRvcj48
120
+ Y3JlYXRvck5hbWU+QWxleGFuZGVyIEp1bmdlPC9jcmVhdG9yTmFtZT48bmFt
121
+ ZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hl
122
+ bWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi0yNDEwLTk2NzE8
123
+ L25hbWVJZGVudGlmaWVyPjwvY3JlYXRvcj48Y3JlYXRvcj48Y3JlYXRvck5h
124
+ bWU+SmFuIEMuIFJlZnNnYWFyZDwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjxj
125
+ cmVhdG9yPjxjcmVhdG9yTmFtZT5DaHJpc3RpYW4gR2FyZGU8L2NyZWF0b3JO
126
+ YW1lPjwvY3JlYXRvcj48Y3JlYXRvcj48Y3JlYXRvck5hbWU+WGlhb3lvbmcg
127
+ UGFuPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JO
128
+ YW1lPkFsYmVydG8gU2FudG9zPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNy
129
+ ZWF0b3I+PGNyZWF0b3JOYW1lPkZlcmhhdCBBbGthbjwvY3JlYXRvck5hbWU+
130
+ PC9jcmVhdG9yPjxjcmVhdG9yPjxjcmVhdG9yTmFtZT5DaHJpc3RpYW4gQW50
131
+ aG9uPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JO
132
+ YW1lPkNocmlzdGlhbiB2b24gTWVyaW5nPC9jcmVhdG9yTmFtZT48L2NyZWF0
133
+ b3I+PGNyZWF0b3I+PGNyZWF0b3JOYW1lPkNocmlzdG9waGVyIFQuIFdvcmtt
134
+ YW48L2NyZWF0b3JOYW1lPjwvY3JlYXRvcj48Y3JlYXRvcj48Y3JlYXRvck5h
135
+ bWU+TGFycyBKdWhsIEplbnNlbjwvY3JlYXRvck5hbWU+PG5hbWVJZGVudGlm
136
+ aWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJo
137
+ dHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtNzg4NS03MTVYPC9uYW1lSWRl
138
+ bnRpZmllcj48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JOYW1lPkphbiBH
139
+ b3JvZGtpbjwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjwvY3JlYXRvcnM+PHRp
140
+ dGxlcz48dGl0bGU+UkFJTiB2MTwvdGl0bGU+PC90aXRsZXM+PGRlc2NyaXB0
141
+ aW9ucz48ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJBYnN0cmFjdCI+
142
+ Jmx0O2RpdiZndDsmbHQ7YiZndDtSQUlOOiBSTkHigJNwcm90ZWluIEFzc29j
143
+ aWF0aW9uIGFuZCBJbnRlcmFjdGlvbiBOZXR3b3JrcyZsdDsvYiZndDsmbHQ7
144
+ L2RpdiZndDsmbHQ7ZGl2Jmd0OyZsdDticiZndDsmbHQ7L2RpdiZndDsmbHQ7
145
+ ZGl2Jmd0O1JBSU4gaW50ZWdyYXRlcyBub24tY29kaW5nIFJOQSAobmNSTkEp
146
+ IGFuZCBwcm90ZWluIGludGVyYWN0aW9uIG5ldHdvcmtzIGluIGFuIGVhc2ls
147
+ eSBhY2Nlc3NpYmxlIHdlYiBpbnRlcmZhY2UuwqAmbHQ7L2RpdiZndDsmbHQ7
148
+ ZGl2Jmd0O0l0IGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIG5jUk5BIGFzc29j
149
+ aWF0aW9uczogbWljcm9STkEtdGFyZ2V0LCBuY1JOQS1wcm90ZWluIGFuZCBu
150
+ Y1JOQS1uY1JOQSBpbnRlcmFjdGlvbnMgYW5kIGNvbWJpbmVzIHRoZW0gd2l0
151
+ aCBwcm90ZWluLXByb3RlaW4gaW50ZXJhY3Rpb24gYXZhaWxhYmxlIGluIHRo
152
+ ZSBTVFJJTkcgZGF0YWJhc2UuIG5jUk5BIGFzc29jaWF0aW9ucyBjb3ZlciBm
153
+ b3VyIG1vZGVsIG9yZ2FuaXNtcyBhbmQgYXJlIGV4dHJhY3RlZCBmcm9tIGV4
154
+ cGVyaW1lbnRhbCBkYXRhLCBhdXRvbWF0aWMgbGl0ZXJhdHVyZSBtaW5pbmcg
155
+ YW5kIGN1cmF0ZWQgZXhhbXBsZXMuIEZvciBtaVJOQXMsIHdlIGZ1cnRoZXIg
156
+ aW5jbHVkZSBwcmVjb21wdXRlZCB0YXJnZXQgcHJlZGljdGlvbnMuwqAmbHQ7
157
+ L2RpdiZndDs8L2Rlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb25zPjxzdWJqZWN0
158
+ cz48c3ViamVjdD5CaW9pbmZvcm1hdGljczwvc3ViamVjdD48c3ViamVjdD5D
159
+ b21wdXRhdGlvbmFsICBCaW9sb2d5PC9zdWJqZWN0PjxzdWJqZWN0PlN5c3Rl
160
+ bXMgQmlvbG9neTwvc3ViamVjdD48L3N1YmplY3RzPjxwdWJsaXNoZXI+Rmln
161
+ c2hhcmU8L3B1Ymxpc2hlcj48cHVibGljYXRpb25ZZWFyPjIwMTY8L3B1Ymxp
162
+ Y2F0aW9uWWVhcj48ZGF0ZXM+PGRhdGUgZGF0ZVR5cGU9IkNyZWF0ZWQiPjIw
163
+ MTYtMTEtMTY8L2RhdGU+PGRhdGUgZGF0ZVR5cGU9IlVwZGF0ZWQiPjIwMTYt
164
+ MTEtMTY8L2RhdGU+PC9kYXRlcz48cmVzb3VyY2VUeXBlIHJlc291cmNlVHlw
165
+ ZUdlbmVyYWw9IkRhdGFzZXQiPkRhdGFzZXQ8L3Jlc291cmNlVHlwZT48c2l6
166
+ ZXM+PHNpemU+MTEyMDMzNTUxMiBCeXRlczwvc2l6ZT48L3NpemVzPjxyZWxh
167
+ dGVkSWRlbnRpZmllcnM+PHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0ZWRJZGVu
168
+ dGlmaWVyVHlwZT0iRE9JIiByZWxhdGlvblR5cGU9IklzSWRlbnRpY2FsVG8i
169
+ PjEwLjYwODQvbTkuZmlnc2hhcmUuNDIzNDc1MTwvcmVsYXRlZElkZW50aWZp
170
+ ZXI+PC9yZWxhdGVkSWRlbnRpZmllcnM+PHJpZ2h0c0xpc3Q+PHJpZ2h0cyBy
171
+ aWdodHNVUkk9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNl
172
+ cy9ieS80LjAvIj5DQy1CWTwvcmlnaHRzPjwvcmlnaHRzTGlzdD48L3Jlc291
173
+ cmNlPg==
174
+ http_version:
175
+ recorded_at: Thu, 23 Feb 2017 07:48:40 GMT
176
+ recorded_with: VCR 3.0.3
data/spec/utils_spec.rb CHANGED
@@ -75,7 +75,7 @@ describe Bolognese::Crossref, vcr: true do
75
75
  it "url" do
76
76
  ids = [{"@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food/"}]
77
77
  response = subject.normalize_ids(ids)
78
- expect(response).to eq([{"@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food"}])
78
+ expect(response).to eq("@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food")
79
79
  end
80
80
  end
81
81
  end
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.6.5
4
+ version: 0.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
@@ -420,6 +420,7 @@ files:
420
420
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_3.yml
421
421
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_4.yml
422
422
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON.yml
423
+ - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/is_identical_to.yml
423
424
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/multiple_licenses.yml
424
425
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/BlogPosting.yml
425
426
  - spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/Dataset.yml