bolognese 0.6.5 → 0.6.6

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