bolognese 1.7.2 → 1.8.3
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 +4 -4
- data/Gemfile.lock +10 -7
- data/lib/bolognese/datacite_utils.rb +10 -3
- data/lib/bolognese/metadata.rb +11 -10
- data/lib/bolognese/metadata_utils.rb +1 -1
- data/lib/bolognese/readers/crossref_reader.rb +2 -1
- data/lib/bolognese/utils.rb +2 -0
- data/lib/bolognese/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content_copernicus.yml +94 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Another_dataset.yml +73 -0
- data/spec/metadata_spec.rb +1 -1
- data/spec/readers/crossref_reader_spec.rb +22 -1
- data/spec/readers/datacite_json_reader_spec.rb +1 -1
- data/spec/readers/datacite_reader_spec.rb +3 -1
- data/spec/writers/bibtex_writer_spec.rb +12 -0
- data/spec/writers/citeproc_writer_spec.rb +13 -0
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9eff0ba27c9712dc643e647b3800df6177e13cb1e01c8269b2b172a61616dc9b
|
|
4
|
+
data.tar.gz: 8ef53004829fede6fdbcd4b5942a8e63950fe3b8bdcff770be69a66c34e6caa9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 476ec065a05d4c6fed3f4bee2deccf944723cbdbff07202f9e88ca29a1fb16310424b7e647a5e57c8cbc445adf345ef179e307b7aabaa61379e39ab42e03158d
|
|
7
|
+
data.tar.gz: 2115e97733f06c4d67fdcf75eb8496758aa85a60b78888c296a6b25d1f7eb98ef5b9f82bff196b9c9e5544de75806c5787715b2aac2ea1848df027ec1d862eb8
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
bolognese (1.
|
|
4
|
+
bolognese (1.8.3)
|
|
5
5
|
activesupport (>= 4.2.5)
|
|
6
6
|
benchmark_methods (~> 0.7)
|
|
7
7
|
bibtex-ruby (>= 5.1.0)
|
|
@@ -58,8 +58,10 @@ GEM
|
|
|
58
58
|
csl (~> 1.0)
|
|
59
59
|
diff-lcs (1.4.4)
|
|
60
60
|
docile (1.3.2)
|
|
61
|
-
ebnf (1.
|
|
61
|
+
ebnf (2.1.1)
|
|
62
|
+
htmlentities (~> 4.3)
|
|
62
63
|
rdf (~> 3.1)
|
|
64
|
+
scanf (~> 1.0)
|
|
63
65
|
sxp (~> 1.1)
|
|
64
66
|
edtf (3.0.5)
|
|
65
67
|
activesupport (>= 3.0, < 7.0)
|
|
@@ -79,7 +81,7 @@ GEM
|
|
|
79
81
|
concurrent-ruby (~> 1.0)
|
|
80
82
|
hashdiff (1.0.1)
|
|
81
83
|
htmlentities (4.3.4)
|
|
82
|
-
i18n (1.8.
|
|
84
|
+
i18n (1.8.5)
|
|
83
85
|
concurrent-ruby (~> 1.0)
|
|
84
86
|
iso8601 (0.9.1)
|
|
85
87
|
json-canonicalization (0.2.0)
|
|
@@ -119,7 +121,7 @@ GEM
|
|
|
119
121
|
namae (1.0.1)
|
|
120
122
|
nokogiri (1.10.10)
|
|
121
123
|
mini_portile2 (~> 2.4.0)
|
|
122
|
-
oj (3.10.
|
|
124
|
+
oj (3.10.8)
|
|
123
125
|
oj_mimic_json (1.0.1)
|
|
124
126
|
optimist (3.0.1)
|
|
125
127
|
postrank-uri (1.0.24)
|
|
@@ -148,8 +150,8 @@ GEM
|
|
|
148
150
|
rdf (~> 3.1)
|
|
149
151
|
rdf-rdfa (~> 3.1)
|
|
150
152
|
rdf-xsd (~> 3.1)
|
|
151
|
-
rdf-turtle (3.1.
|
|
152
|
-
ebnf (~>
|
|
153
|
+
rdf-turtle (3.1.2)
|
|
154
|
+
ebnf (~> 2.0)
|
|
153
155
|
rdf (~> 3.1, >= 3.1.2)
|
|
154
156
|
rdf-vocab (3.1.7)
|
|
155
157
|
rdf (~> 3.1, >= 3.1.2)
|
|
@@ -172,6 +174,7 @@ GEM
|
|
|
172
174
|
nokogiri (~> 1.6)
|
|
173
175
|
rspec (~> 3)
|
|
174
176
|
safe_yaml (1.0.5)
|
|
177
|
+
scanf (1.0.0)
|
|
175
178
|
simplecov (0.18.5)
|
|
176
179
|
docile (~> 1.1)
|
|
177
180
|
simplecov-html (~> 0.11)
|
|
@@ -190,7 +193,7 @@ GEM
|
|
|
190
193
|
addressable (>= 2.3.6)
|
|
191
194
|
crack (>= 0.3.2)
|
|
192
195
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
193
|
-
zeitwerk (2.
|
|
196
|
+
zeitwerk (2.4.0)
|
|
194
197
|
|
|
195
198
|
PLATFORMS
|
|
196
199
|
ruby
|
|
@@ -11,7 +11,13 @@ module Bolognese
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def datacite_errors(xml: nil, schema_version: nil)
|
|
14
|
-
|
|
14
|
+
if xml.present?
|
|
15
|
+
namespaces = Nokogiri::XML(xml, nil, 'UTF-8').root.namespaces
|
|
16
|
+
schema_version = namespaces.fetch('xmlns',nil).presence || namespaces.fetch('xmlns:ns0',nil).presence
|
|
17
|
+
else
|
|
18
|
+
schema_version = schema_version.to_s.start_with?("http://datacite.org/schema/kernel") ? schema_version : "http://datacite.org/schema/kernel-4"
|
|
19
|
+
end
|
|
20
|
+
|
|
15
21
|
kernel = schema_version.to_s.split("/").last
|
|
16
22
|
filepath = File.expand_path("../../../resources/#{kernel}/metadata.xsd", __FILE__)
|
|
17
23
|
schema = Nokogiri::XML::Schema(open(filepath))
|
|
@@ -116,10 +122,11 @@ module Bolognese
|
|
|
116
122
|
end
|
|
117
123
|
|
|
118
124
|
def insert_alternate_identifiers(xml)
|
|
119
|
-
|
|
125
|
+
alternate_identifiers = Array.wrap(identifiers).select { |r| r["identifierType"] != "DOI" }
|
|
126
|
+
return xml unless alternate_identifiers.present?
|
|
120
127
|
|
|
121
128
|
xml.alternateIdentifiers do
|
|
122
|
-
Array.wrap(
|
|
129
|
+
Array.wrap(alternate_identifiers).each do |alternate_identifier|
|
|
123
130
|
xml.alternateIdentifier(alternate_identifier["identifier"], 'alternateIdentifierType' => alternate_identifier["identifierType"])
|
|
124
131
|
end
|
|
125
132
|
end
|
data/lib/bolognese/metadata.rb
CHANGED
|
@@ -15,12 +15,13 @@ module Bolognese
|
|
|
15
15
|
:format, :funding_references, :state, :geo_locations,
|
|
16
16
|
:types, :content_url, :related_identifiers, :style, :locale, :date_registered
|
|
17
17
|
|
|
18
|
-
def initialize(
|
|
19
|
-
|
|
18
|
+
def initialize(options={})
|
|
19
|
+
options.symbolize_keys!
|
|
20
|
+
id = normalize_id(options[:input], options)
|
|
20
21
|
ra = nil
|
|
21
22
|
|
|
22
23
|
if id.present?
|
|
23
|
-
@from = from || find_from_format(id: id)
|
|
24
|
+
@from = options[:from] || find_from_format(id: id)
|
|
24
25
|
|
|
25
26
|
# mEDRA, KISTI, JaLC and OP DOIs are found in the Crossref index
|
|
26
27
|
if @from == "medra"
|
|
@@ -37,9 +38,9 @@ module Bolognese
|
|
|
37
38
|
hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) : {}
|
|
38
39
|
string = hsh.fetch("string", nil)
|
|
39
40
|
|
|
40
|
-
elsif input.present? && File.exist?(input)
|
|
41
|
-
filename = File.basename(input)
|
|
42
|
-
ext = File.extname(input)
|
|
41
|
+
elsif options[:input].present? && File.exist?(options[:input])
|
|
42
|
+
filename = File.basename(options[:input])
|
|
43
|
+
ext = File.extname(options[:input])
|
|
43
44
|
if %w(.bib .ris .xml .json).include?(ext)
|
|
44
45
|
hsh = {
|
|
45
46
|
"url" => options[:url],
|
|
@@ -49,8 +50,8 @@ module Bolognese
|
|
|
49
50
|
"provider_id" => options[:provider_id],
|
|
50
51
|
"client_id" => options[:client_id],
|
|
51
52
|
"content_url" => options[:content_url] }
|
|
52
|
-
string = IO.read(input)
|
|
53
|
-
@from = from || find_from_format(string: string, filename: filename, ext: ext)
|
|
53
|
+
string = IO.read(options[:input])
|
|
54
|
+
@from = options[:from] || find_from_format(string: string, filename: filename, ext: ext)
|
|
54
55
|
else
|
|
55
56
|
$stderr.puts "File type #{ext} not supported"
|
|
56
57
|
exit 1
|
|
@@ -69,8 +70,8 @@ module Bolognese
|
|
|
69
70
|
"titles" => options[:titles],
|
|
70
71
|
"publisher" => options[:publisher],
|
|
71
72
|
"publication_year" => options[:publication_year] }
|
|
72
|
-
string = input
|
|
73
|
-
@from = from || find_from_format(string: string)
|
|
73
|
+
string = options[:input]
|
|
74
|
+
@from = options[:from] || find_from_format(string: string)
|
|
74
75
|
end
|
|
75
76
|
|
|
76
77
|
# make sure input is encoded as utf8
|
|
@@ -153,7 +153,7 @@ module Bolognese
|
|
|
153
153
|
"language" => language,
|
|
154
154
|
"author" => author,
|
|
155
155
|
"contributor" => to_citeproc(contributors),
|
|
156
|
-
"issued" => get_date(dates, "Issued") ? get_date_parts(get_date(dates, "Issued")) : get_date_parts(publication_year),
|
|
156
|
+
"issued" => get_date(dates, "Issued") ? get_date_parts(get_date(dates, "Issued")) : get_date_parts(publication_year.to_s),
|
|
157
157
|
"submitted" => Array.wrap(dates).find { |d| d["dateType"] == "Submitted" }.to_h.fetch("__content__", nil),
|
|
158
158
|
"abstract" => parse_attributes(descriptions, content: "description", first: true),
|
|
159
159
|
"container-title" => container_title,
|
|
@@ -41,6 +41,7 @@ module Bolognese
|
|
|
41
41
|
journal_issue = {}
|
|
42
42
|
journal_metadata = nil
|
|
43
43
|
publisher = query.dig("crm_item", 0)
|
|
44
|
+
publisher = nil unless publisher.is_a?(String)
|
|
44
45
|
|
|
45
46
|
case model
|
|
46
47
|
when "book"
|
|
@@ -69,7 +70,7 @@ module Bolognese
|
|
|
69
70
|
end
|
|
70
71
|
when "posted_content"
|
|
71
72
|
bibliographic_metadata = meta.dig("crossref", "posted_content").to_h
|
|
72
|
-
publisher
|
|
73
|
+
publisher ||= bibliographic_metadata.dig("institution", "institution_name")
|
|
73
74
|
when "sa_component"
|
|
74
75
|
bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component").to_h
|
|
75
76
|
related_identifier = Array.wrap(query.to_h["crm_item"]).find { |cr| cr["name"] == "relation" }
|
data/lib/bolognese/utils.rb
CHANGED
data/lib/bolognese/version.rb
CHANGED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://doi.org/ra/10.5194
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
User-Agent:
|
|
11
|
+
- Mozilla/5.0 (compatible; Maremma/4.7.1; mailto:info@datacite.org)
|
|
12
|
+
Accept:
|
|
13
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
|
14
|
+
response:
|
|
15
|
+
status:
|
|
16
|
+
code: 200
|
|
17
|
+
message: ''
|
|
18
|
+
headers:
|
|
19
|
+
Date:
|
|
20
|
+
- Wed, 29 Jul 2020 06:09:32 GMT
|
|
21
|
+
Content-Type:
|
|
22
|
+
- application/json;charset=UTF-8
|
|
23
|
+
Connection:
|
|
24
|
+
- keep-alive
|
|
25
|
+
Set-Cookie:
|
|
26
|
+
- __cfduid=d405b79b8c70ba4b495e3fcba1355b80c1596002972; expires=Fri, 28-Aug-20
|
|
27
|
+
06:09:32 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
|
|
28
|
+
Cf-Cache-Status:
|
|
29
|
+
- DYNAMIC
|
|
30
|
+
Cf-Request-Id:
|
|
31
|
+
- 043ac9cad6000005bbc5b4f200000001
|
|
32
|
+
Expect-Ct:
|
|
33
|
+
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
|
|
34
|
+
Strict-Transport-Security:
|
|
35
|
+
- max-age=31536000; includeSubDomains; preload
|
|
36
|
+
Server:
|
|
37
|
+
- cloudflare
|
|
38
|
+
Cf-Ray:
|
|
39
|
+
- 5ba4abf15d0705bb-FRA
|
|
40
|
+
body:
|
|
41
|
+
encoding: ASCII-8BIT
|
|
42
|
+
string: |-
|
|
43
|
+
[
|
|
44
|
+
{
|
|
45
|
+
"DOI": "10.5194",
|
|
46
|
+
"RA": "Crossref"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
http_version:
|
|
50
|
+
recorded_at: Wed, 29 Jul 2020 06:09:32 GMT
|
|
51
|
+
- request:
|
|
52
|
+
method: get
|
|
53
|
+
uri: https://api.crossref.org/works/10.5194/cp-2020-95/transform/application/vnd.crossref.unixsd+xml
|
|
54
|
+
body:
|
|
55
|
+
encoding: US-ASCII
|
|
56
|
+
string: ''
|
|
57
|
+
headers:
|
|
58
|
+
User-Agent:
|
|
59
|
+
- Mozilla/5.0 (compatible; Maremma/4.7.1; mailto:info@datacite.org)
|
|
60
|
+
Accept:
|
|
61
|
+
- text/xml
|
|
62
|
+
response:
|
|
63
|
+
status:
|
|
64
|
+
code: 200
|
|
65
|
+
message: OK
|
|
66
|
+
headers:
|
|
67
|
+
Link:
|
|
68
|
+
- <http://dx.doi.org/10.5194/cp-2020-95>; rel="canonical", <https://creativecommons.org/licenses/by/4.0/>;
|
|
69
|
+
rel="license", <http://orcid.org/0000-0001-6130-6474>; title="Jun Shao"; rel="author",
|
|
70
|
+
<http://orcid.org/0000-0002-5068-1591>; title="Laurie Menviel"; rel="author",
|
|
71
|
+
<http://orcid.org/0000-0003-3306-0969>; title="Mayhar Mohtadi"; rel="author"
|
|
72
|
+
Access-Control-Allow-Origin:
|
|
73
|
+
- "*"
|
|
74
|
+
Access-Control-Allow-Headers:
|
|
75
|
+
- X-Requested-With
|
|
76
|
+
Content-Length:
|
|
77
|
+
- '7366'
|
|
78
|
+
Server:
|
|
79
|
+
- http-kit
|
|
80
|
+
Date:
|
|
81
|
+
- Wed, 29 Jul 2020 06:09:33 GMT
|
|
82
|
+
X-Rate-Limit-Limit:
|
|
83
|
+
- '50'
|
|
84
|
+
X-Rate-Limit-Interval:
|
|
85
|
+
- 1s
|
|
86
|
+
Connection:
|
|
87
|
+
- close
|
|
88
|
+
body:
|
|
89
|
+
encoding: ASCII-8BIT
|
|
90
|
+
string: !binary |-
|
|
91
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0icG9zdGVkX2NvbnRlbnQiPjEwLjUxOTQvY3AtMjAyMC05NTwvZG9pPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icHVibGlzaGVyLW5hbWUiIHR5cGU9InN0cmluZyI+Q29wZXJuaWN1cyBHbWJIPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InByZWZpeC1uYW1lIiB0eXBlPSJzdHJpbmciPkNvcGVybmljdXMgR21iSDwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJtZW1iZXItaWQiIHR5cGU9Im51bWJlciI+MzE0NTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRhdGlvbi1pZCIgdHlwZT0ibnVtYmVyIj4xMTgzMTgxNTE8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iYm9vay1pZCIgdHlwZT0ibnVtYmVyIj4zNDMwMzQyPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImRlcG9zaXQtdGltZXN0YW1wIiB0eXBlPSJudW1iZXIiPjIwMjAwNzI4MDczNjMxPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im93bmVyLXByZWZpeCIgdHlwZT0ic3RyaW5nIj4xMC41MTk0PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Imxhc3QtdXBkYXRlIiB0eXBlPSJkYXRlIj4yMDIwLTA3LTI4VDA5OjE2OjExWjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjcmVhdGVkIiB0eXBlPSJkYXRlIj4yMDIwLTA3LTI4VDA5OjE2OjEwWjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRlZGJ5LWNvdW50IiB0eXBlPSJudW1iZXIiPjA8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icmVsYXRpb24iIHR5cGU9ImRvaSIgY2xhaW09ImlzU3VwcGxlbWVudFRvIj4xMC41MTk0L2NwLTIwMjAtOTUtc3VwcGxlbWVudDwvY3JtLWl0ZW0+DQogICAgICAgIDxkb2lfcmVjb3JkPg0KICAgICAgICAgIDxjcm9zc3JlZiB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcveHNjaGVtYS8xLjEiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcveHNjaGVtYS8xLjEgaHR0cDovL2RvaS5jcm9zc3JlZi5vcmcvc2NoZW1hcy91bml4cmVmMS4xLnhzZCI+DQogICAgICAgICAgICA8cG9zdGVkX2NvbnRlbnQgdHlwZT0icHJlcHJpbnQiPg0KICAgICAgICAgICAgICA8Z3JvdXBfdGl0bGU+Q2FyYm9uIEN5Y2xlL01vZGVsbGluZyBvbmx5L01pbGxlbmlhbC9ELU88L2dyb3VwX3RpdGxlPg0KICAgICAgICAgICAgICA8Y29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iZmlyc3QiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5KdW48L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5TaGFvPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEPmh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMS02MTMwLTY0NzQ8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIHNlcXVlbmNlPSJhZGRpdGlvbmFsIiBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+TG93ZWxsIEQ8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5TdG90dDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iYWRkaXRpb25hbCIgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkxhdXJpZTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPk1lbnZpZWw8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTUwNjgtMTU5MTwvT1JDSUQ+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5BbmR5PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+UmlkZ3dlbGw8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYWxpbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPsOWZGFsZW48L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXloYXI8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5Nb2h0YWRpPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEPmh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0zMzA2LTA5Njk8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgIDwvY29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgQXRtb3NwaGVyaWMgQnJpZGdlIENvbW11bmljYXRlZCB0aGUgzrQmYW1wO2x0O3N1cCZhbXA7Z3Q7MTMmYW1wO2x0Oy9zdXAmYW1wO2d0O0MgRGVjbGluZWR1cmluZyB0aGUgTGFzdCBEZWdsYWNpYXRpb24gdG8gdGhlIEdsb2JhbCBVcHBlciBPY2VhbjwvdGl0bGU+DQogICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICA8cG9zdGVkX2RhdGU+DQogICAgICAgICAgICAgICAgPG1vbnRoPjc8L21vbnRoPg0KICAgICAgICAgICAgICAgIDxkYXk+Mjg8L2RheT4NCiAgICAgICAgICAgICAgICA8eWVhcj4yMDIwPC95ZWFyPg0KICAgICAgICAgICAgICA8L3Bvc3RlZF9kYXRlPg0KICAgICAgICAgICAgICA8amF0czphYnN0cmFjdCB4bWxuczpqYXRzPSJodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvSkFUUzEiPg0KICAgICAgICAgICAgICAgIDxqYXRzOnA+PCFbQ0RBVEFbQWJzdHJhY3QuIER1cmluZyB0aGUgZWFybHkgbGFzdCBnbGFjaWFsIHRlcm1pbmF0aW9uICgxNy4y4oCTMTXigIlrYSkgYXRtb3NwaGVyaWMgzrQxM0MgZGVjbGluZWQgc2hhcnBseSBieSAwLjPigJMwLjTigInigLAgYXMgYXRtb3NwaGVyaWMgcENPMiByb3NlLiBUaGlzIHdhcyB0aGUgaW5pdGlhbCBwYXJ0IG9mIHRoZSBhdG1vc3BoZXJpYyDOtDEzQyBleGN1cnNpb24gdGhhdCBsYXN0ZWQgZm9yIG11bHRpcGxlIHRob3VzYW5kIHllYXJzLiBBIHNpbWlsYXIgzrQxM0MgZGVjbGluZSBoYXMgYmVlbiBkb2N1bWVudGVkIGluIG1hcmluZSBwcm94eSByZWNvcmRzIGZyb20gYm90aCBzdXJmYWNlIGFuZCB0aGVybW9jbGluZS1kd2VsbGluZyBwbGFua3RpYyBmb3JhbWluaWZlcmEuIFRoZSBmb3JhbWluaWZlcmFsIM60MTNDIGRlY2xpbmUgaGFzIHByZXZpb3VzbHkgYmVlbiBhdHRyaWJ1dGVkIHRvIGEgZmx1eCBvZiByZXNwaXJlZCBjYXJib24gZnJvbSB0aGUgZGVlcCBvY2VhbiB0aGF0IHdhcyBzdWJzZXF1ZW50bHkgdHJhbnNwb3J0ZWQgd2l0aGluIHRoZSB1cHBlciBvY2VhbiAoaS5lLiBib3R0b20gdXAgdHJhbnNwb3J0KSB0byBzaXRlcyB3aGVyZSB0aGUgc2lnbmFsIGlzIHJlY29yZGVkLiBIZXJlLCB3ZSBwcm92aWRlIG1vZGVsaW5nIGV2aWRlbmNlIHRoYXQgd2hlbiByZXNwaXJlZCBjYXJib24gdXB3ZWxscyBpbiB0aGUgU291dGhlcm4gT2NlYW4sIG5lZ2F0aXZlIM60MTNDIGFub21hbGllcyBpbiB0aGUgZ2xvYmFsIHVwcGVyIG9jZWFuIHdlcmUgaW5zdGVhZCB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBhdG1vc3BoZXJlIChpLmUuIHRvcCBkb3duIHRyYW5zcG9ydCkuIER1ZSB0byB0aGlzIGVmZmljaWVudCBhdG1vc3BoZXJpYyBicmlkZ2UsIHRoZSBwYXRod2F5IG9mIM60MTNDIHRyYW5zcG9ydCB3YXMgbGlrZWx5IHRvIGJlIGRpZmZlcmVudCBmcm9tIG51dHJpZW50IHRyYW5zcG9ydCBkdXJpbmcgdGhlIGVhcmx5IGRlZ2xhY2lhdGlvbi4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHVzYWdlIG9mIHBsYW5rdGljIM60MTNDIHJlY29yZHMgZm9yIGlkZW50aWZ5aW5nIHRoZSBjYXJib24gc291cmNlKHMpIHJlc3BvbnNpYmxlIGZvciB0aGUgYXRtb3NwaGVyaWMgcENPMiByaXNlIGR1cmluZyB0aGUgZWFybHkgZGVnbGFjaWF0aW9uIGlzIGxpbWl0ZWQuIFRoZSBtb2RlbCByZXN1bHRzIGFsc28gc3VnZ2VzdCB0aGF0IHRoZXJtb2NsaW5lIHdhdGVycyBpbiB1cHdlbGxpbmcgc3lzdGVtcyBsaWtlIHRoZSBlYXN0ZXJuIGVxdWF0b3JpYWwgUGFjaWZpYywgYW5kIGV2ZW4gdXBwZXIgZGVlcCB3YXRlcnMgYWJvdmUgMjAwMOKAiW0sIGNhbiBiZSBhZmZlY3RlZCBieSB0aGlzIGF0bW9zcGhlcmljIGJyaWRnZSBkdXJpbmcgdGhlIGVhcmx5IGRlZ2xhY2lhdGlvbi4gT3VyIHJlc3VsdHMgaW1wbHkgdGhhdCBjYXV0aW9uIG11c3QgYmUgYXBwbGllZCB3aGVuIGludGVycHJldGluZyBlYXJseSBkZWdsYWNpYWwgbWFyaW5lIM60MTNDIHJlY29yZHMgZnJvbSBkZXB0aHMgdGhhdCBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgdGhlIGF0bW9zcGhlcmUuXV0+PC9qYXRzOnA+DQogICAgICAgICAgICAgIDwvamF0czphYnN0cmFjdD4NCiAgICAgICAgICAgICAgPGZyOnByb2dyYW0geG1sbnM6ZnI9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL2Z1bmRyZWYueHNkIiBuYW1lPSJmdW5kcmVmIj4NCiAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRncm91cCI+DQogICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9uYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgRGl2aXNpb24gb2YgT2NlYW4gU2NpZW5jZXMNCiAgICAgICAgICAgICAgICAgICAgPGZyOmFzc2VydGlvbiBuYW1lPSJmdW5kZXJfaWRlbnRpZmllciI+aHR0cDovL2R4LmRvaS5vcmcvMTAuMTMwMzkvMTAwMDAwMTQxPC9mcjphc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iYXdhcmRfbnVtYmVyIj4xNTU4OTkwPC9mcjphc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImF3YXJkX251bWJlciI+MTczNjc3MTwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICBBdXN0cmFsaWFuIFJlc2VhcmNoIENvdW5jaWwNCiAgICAgICAgICAgICAgICAgICAgPGZyOmFzc2VydGlvbiBuYW1lPSJmdW5kZXJfaWRlbnRpZmllciI+aHR0cDovL2R4LmRvaS5vcmcvMTAuMTMwMzkvNTAxMTAwMDAwOTIzPC9mcjphc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iYXdhcmRfbnVtYmVyIj5GVDE4MDEwMDYwNjwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPGZyOmFzc2VydGlvbiBuYW1lPSJhd2FyZF9udW1iZXIiPkRQMTgwMTAwMDQ4PC9mcjphc3NlcnRpb24+DQogICAgICAgICAgICAgICAgPC9mcjphc3NlcnRpb24+DQogICAgICAgICAgICAgIDwvZnI6cHJvZ3JhbT4NCiAgICAgICAgICAgICAgPGFpOnByb2dyYW0geG1sbnM6YWk9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL0FjY2Vzc0luZGljYXRvcnMueHNkIiBuYW1lPSJBY2Nlc3NJbmRpY2F0b3JzIj4NCiAgICAgICAgICAgICAgICA8YWk6bGljZW5zZV9yZWY+aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC88L2FpOmxpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICA8L2FpOnByb2dyYW0+DQogICAgICAgICAgICAgIDxyZWw6cHJvZ3JhbSB4bWxuczpyZWw9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3JlbGF0aW9ucy54c2QiIG5hbWU9InJlbGF0aW9ucyI+DQogICAgICAgICAgICAgICAgPHJlbDpyZWxhdGVkX2l0ZW0+DQogICAgICAgICAgICAgICAgICA8cmVsOmRlc2NyaXB0aW9uPlN1cHBsZW1lbnRhcnkgbWF0ZXJpYWw8L3JlbDpkZXNjcmlwdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxyZWw6aW50ZXJfd29ya19yZWxhdGlvbiBpZGVudGlmaWVyLXR5cGU9ImRvaSIgcmVsYXRpb25zaGlwLXR5cGU9ImlzU3VwcGxlbWVudGVkQnkiPjEwLjUxOTQvY3AtMjAyMC05NS1zdXBwbGVtZW50PC9yZWw6aW50ZXJfd29ya19yZWxhdGlvbj4NCiAgICAgICAgICAgICAgICA8L3JlbDpyZWxhdGVkX2l0ZW0+DQogICAgICAgICAgICAgIDwvcmVsOnByb2dyYW0+DQogICAgICAgICAgICAgIDxkb2lfZGF0YT4NCiAgICAgICAgICAgICAgICA8ZG9pPjEwLjUxOTQvY3AtMjAyMC05NTwvZG9pPg0KICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwczovL2NwLmNvcGVybmljdXMub3JnL3ByZXByaW50cy9jcC0yMDIwLTk1LzwvcmVzb3VyY2U+DQogICAgICAgICAgICAgIDwvZG9pX2RhdGE+DQogICAgICAgICAgICA8L3Bvc3RlZF9jb250ZW50Pg0KICAgICAgICAgIDwvY3Jvc3NyZWY+DQogICAgICAgIDwvZG9pX3JlY29yZD4NCiAgICAgIDwvcXVlcnk+DQogICAgPC9ib2R5Pg0KICA8L3F1ZXJ5X3Jlc3VsdD4NCjwvY3Jvc3NyZWZfcmVzdWx0Pg==
|
|
92
|
+
http_version:
|
|
93
|
+
recorded_at: Wed, 29 Jul 2020 06:09:33 GMT
|
|
94
|
+
recorded_with: VCR 3.0.3
|
data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Another_dataset.yml
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://api.datacite.org/dois/10.26301/qdpd-2250?include=media,client
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
User-Agent:
|
|
11
|
+
- Mozilla/5.0 (compatible; Maremma/4.7.1; mailto:info@datacite.org)
|
|
12
|
+
Accept:
|
|
13
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
|
14
|
+
response:
|
|
15
|
+
status:
|
|
16
|
+
code: 200
|
|
17
|
+
message: OK
|
|
18
|
+
headers:
|
|
19
|
+
Date:
|
|
20
|
+
- Fri, 24 Jul 2020 09:45:26 GMT
|
|
21
|
+
Content-Type:
|
|
22
|
+
- application/json; charset=utf-8
|
|
23
|
+
Connection:
|
|
24
|
+
- keep-alive
|
|
25
|
+
Status:
|
|
26
|
+
- 200 OK
|
|
27
|
+
X-Anonymous-Consumer:
|
|
28
|
+
- 'true'
|
|
29
|
+
Cache-Control:
|
|
30
|
+
- max-age=0, private, must-revalidate
|
|
31
|
+
Vary:
|
|
32
|
+
- Accept-Encoding, Origin
|
|
33
|
+
X-Request-Id:
|
|
34
|
+
- 9e991a49-1b31-467e-8398-17c65f21adff
|
|
35
|
+
Etag:
|
|
36
|
+
- W/"f61889405ef061735e59275bdbe3242a"
|
|
37
|
+
X-Runtime:
|
|
38
|
+
- '1.280903'
|
|
39
|
+
X-Powered-By:
|
|
40
|
+
- Phusion Passenger 6.0.6
|
|
41
|
+
Server:
|
|
42
|
+
- nginx/1.14.0 + Phusion Passenger 6.0.6
|
|
43
|
+
body:
|
|
44
|
+
encoding: ASCII-8BIT
|
|
45
|
+
string: '{"data":{"id":"10.26301/qdpd-2250","type":"dois","attributes":{"doi":"10.26301/qdpd-2250","prefix":"10.26301","suffix":"qdpd-2250","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"USS
|
|
46
|
+
Pampanito","nameType":"Organizational","givenName":null,"familyName":null,"affiliation":[],"nameIdentifiers":[]}],"titles":[{"lang":null,"title":"USS
|
|
47
|
+
Pampanito Submarine","titleType":null}],"publisher":"Open Heritage 3D","container":{},"publicationYear":2020,"subjects":[],"contributors":[],"dates":[],"language":null,"types":{"ris":"DATA","bibtex":"misc","citeproc":"dataset","schemaOrg":"Dataset","resourceType":"3D
|
|
48
|
+
Data","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[],"sizes":[],"formats":[],"version":null,"rightsList":[],"descriptions":[],"geoLocations":[],"fundingReferences":[],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuMjYzMDEvUURQRC0yMjUwPC9pZGVudGlmaWVyPgogIDxjcmVhdG9ycz4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9Ik9yZ2FuaXphdGlvbmFsIj5VU1MgUGFtcGFuaXRvPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICA8L2NyZWF0b3JzPgogIDx0aXRsZXM+CiAgICA8dGl0bGU+VVNTIFBhbXBhbml0byBTdWJtYXJpbmU8L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXI+T3BlbiBIZXJpdGFnZSAzRDwvcHVibGlzaGVyPgogIDxwdWJsaWNhdGlvblllYXI+MjAyMDwvcHVibGljYXRpb25ZZWFyPgogIDxyZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlR2VuZXJhbD0iRGF0YXNldCI+M0QgRGF0YTwvcmVzb3VyY2VUeXBlPgogIDxzaXplcy8+CiAgPGZvcm1hdHMvPgogIDx2ZXJzaW9uLz4KPC9yZXNvdXJjZT4K","url":"https://openheritage3d.org/project.php?id=qdpd-2250","contentUrl":null,"metadataVersion":1,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"fabricaForm","isActive":true,"state":"findable","reason":null,"viewCount":0,"viewsOverTime":[],"downloadCount":0,"downloadsOverTime":[],"referenceCount":0,"citationCount":0,"citationsOverTime":[],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2020-01-10T18:51:00.000Z","registered":"2020-01-16T00:17:10.000Z","published":"2020","updated":"2020-07-24T09:41:35.000Z"},"relationships":{"client":{"data":{"id":"cyark.oh","type":"clients"}},"media":{"data":{"id":"10.26301/qdpd-2250","type":"media"}},"references":{"data":[]},"citations":{"data":[]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}},"included":[{"id":"cyark.oh","type":"clients","attributes":{"name":"OpenHeritage3D","symbol":"CYARK.OH","year":2019,"contactEmail":"scott.lee@cyark.org","alternateName":"Open
|
|
49
|
+
Heritage 3D","description":"As 3D and reality capture strategies for heritage
|
|
50
|
+
documentation become more widespread and available, there has emerged a growing
|
|
51
|
+
need to assist with guiding and facilitating accessibility to data, while
|
|
52
|
+
maintaining scientific rigor, cultural and ethical sensitivity, discoverability,
|
|
53
|
+
and archival standards. In response to these areas of need, The Open Heritage
|
|
54
|
+
3D Alliance (OHA) has developed as an advisory group governing the Open Heritage
|
|
55
|
+
3D initiative. This collaborative advisory group are among some of the earliest
|
|
56
|
+
adopters of 3D heritage documentation technologies, and offer first-hand guidance
|
|
57
|
+
for best practices in data management, sharing, and dissemination approaches
|
|
58
|
+
for 3D cultural heritage projects.\n\nThe founding members of the OHA, consist
|
|
59
|
+
of experts and organizational leaders from CyArk, Historic Environment Scotland,
|
|
60
|
+
and the University of South Florida Libraries, who together have significant
|
|
61
|
+
repositories of legacy and on-going 3D research and documentation projects.
|
|
62
|
+
These groups offer unique insight into not only the best practices for 3D
|
|
63
|
+
data capture and sharing, but also have come together around concerns dealing
|
|
64
|
+
with standards, formats, approach, ethics, and archive commitment. Together,
|
|
65
|
+
the OHA has begun the journey to provide open access to cultural heritage
|
|
66
|
+
3D data, while maintaining integrity, security, and standards relating to
|
|
67
|
+
discoverable dissemination. Together, the OHA will work to provide democratized
|
|
68
|
+
access to primary heritage 3D data submitted from donors and organizations,
|
|
69
|
+
and will help to facilitate an operation platform, archive, and organization
|
|
70
|
+
of resources into the future","language":["en"],"clientType":"repository","domains":"*","re3data":null,"opendoar":null,"issn":{},"url":"https://openheritage3d.org/","created":"2019-03-26T16:21:19.000Z","updated":"2020-04-27T15:30:01.000Z","isActive":true,"hasPassword":true},"relationships":{"provider":{"data":{"id":"cyark","type":"providers"}},"prefixes":{"data":[{"id":"10.26301","type":"prefixes"}]}}}]}'
|
|
71
|
+
http_version:
|
|
72
|
+
recorded_at: Fri, 24 Jul 2020 09:45:26 GMT
|
|
73
|
+
recorded_with: VCR 3.0.3
|
data/spec/metadata_spec.rb
CHANGED
|
@@ -153,7 +153,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
153
153
|
it "missing_comma" do
|
|
154
154
|
json = IO.read(fixture_path + "datacite_software_missing_comma.json")
|
|
155
155
|
response = subject.jsonlint(json)
|
|
156
|
-
expect(response).to eq(["expected comma, not a string (doi) at line 4, column 11 [parse.c:373]"])
|
|
156
|
+
expect(response).to eq(["expected comma, not a string (after doi) at line 4, column 11 [parse.c:373]"])
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
it "overlapping_keys" do
|
|
@@ -175,7 +175,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
175
175
|
expect(subject.descriptions.first["description"]).to start_with("This article presents a practical roadmap")
|
|
176
176
|
expect(subject.dates).to include({"date"=>"2017-10-09", "dateType"=>"Issued"})
|
|
177
177
|
expect(subject.publication_year).to eq("2017")
|
|
178
|
-
expect(subject.publisher).to eq("
|
|
178
|
+
expect(subject.publisher).to eq("Cold Spring Harbor Laboratory")
|
|
179
179
|
expect(subject.agency).to eq("Crossref")
|
|
180
180
|
end
|
|
181
181
|
|
|
@@ -602,6 +602,27 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
602
602
|
expect(subject.date_registered).to eq("2019-11-02T09:30:06Z")
|
|
603
603
|
end
|
|
604
604
|
|
|
605
|
+
it "posted content copernicus" do
|
|
606
|
+
input = "https://doi.org/10.5194/CP-2020-95"
|
|
607
|
+
subject = Bolognese::Metadata.new(input: input)
|
|
608
|
+
expect(subject.valid?).to be true
|
|
609
|
+
expect(subject.url).to eq("https://cp.copernicus.org/preprints/cp-2020-95/")
|
|
610
|
+
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
|
611
|
+
expect(subject.creators.count).to eq(6)
|
|
612
|
+
expect(subject.creators.first).to eq("nameType" => "Personal", "familyName" => "Shao",
|
|
613
|
+
"givenName" => "Jun",
|
|
614
|
+
"name" => "Shao, Jun",
|
|
615
|
+
"nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0001-6130-6474", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}])
|
|
616
|
+
expect(subject.titles).to eq([{"title"=>"The Atmospheric Bridge Communicated the δ<sup>13</sup>C Declineduring the Last Deglaciation to the Global Upper Ocean"}])
|
|
617
|
+
expect(subject.id).to eq("https://doi.org/10.5194/cp-2020-95")
|
|
618
|
+
expect(subject.identifiers).to be_empty
|
|
619
|
+
expect(subject.descriptions.first["description"]).to start_with("Abstract. During the early last glacial termination")
|
|
620
|
+
expect(subject.dates).to include({"date"=>"2020-07-28", "dateType"=>"Issued"})
|
|
621
|
+
expect(subject.publication_year).to eq("2020")
|
|
622
|
+
expect(subject.publisher).to eq("Copernicus GmbH")
|
|
623
|
+
expect(subject.agency).to eq("Crossref")
|
|
624
|
+
end
|
|
625
|
+
|
|
605
626
|
it "journal issue" do
|
|
606
627
|
input = "https://doi.org/10.6002/ect.2015.0371"
|
|
607
628
|
subject = Bolognese::Metadata.new(input: input)
|
|
@@ -46,7 +46,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
46
46
|
input = fixture_path + "datacite_software_missing_comma.json"
|
|
47
47
|
subject = Bolognese::Metadata.new(input: input, from: "datacite_json", show_errors: true)
|
|
48
48
|
expect(subject.valid?).to be false
|
|
49
|
-
expect(subject.errors).to eq(["expected comma, not a string (doi) at line 4, column 11 [parse.c:373]"])
|
|
49
|
+
expect(subject.errors).to eq(["expected comma, not a string (after doi) at line 4, column 11 [parse.c:373]"])
|
|
50
50
|
expect(subject.codemeta).to be_nil
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -340,7 +340,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
340
340
|
"funderIdentifier"=>"https://doi.org/10.13039/501100000780",
|
|
341
341
|
"funderIdentifierType"=>"Crossref Funder ID",
|
|
342
342
|
"funderName"=>"European Commission"}],
|
|
343
|
-
types: { "resourceTypeGeneral" => "Dataset", "schemaOrg" => "Dataset" }
|
|
343
|
+
types: { "resourceTypeGeneral" => "Dataset", "schemaOrg" => "Dataset" },
|
|
344
|
+
"identifiers" => [{ "identifierType"=>"Repository ID", "identifier"=>"123" }])
|
|
344
345
|
|
|
345
346
|
expect(subject.valid?).to be true
|
|
346
347
|
expect(subject.doi).to eq("10.5281/zenodo.1239")
|
|
@@ -359,6 +360,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
359
360
|
"funderIdentifier"=>"https://doi.org/10.13039/501100000780",
|
|
360
361
|
"funderIdentifierType"=>"Crossref Funder ID",
|
|
361
362
|
"funderName"=>"European Commission"}])
|
|
363
|
+
expect(subject.identifiers).to eq([{"identifier"=>"123", "identifierType"=>"Repository ID"}])
|
|
362
364
|
expect(subject.agency).to eq("DataCite")
|
|
363
365
|
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
|
|
364
366
|
expect(subject.state).to eq("findable")
|
|
@@ -19,6 +19,18 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
19
19
|
expect(bibtex[:copyright]).to eq("Creative Commons Attribution 3.0 Unported")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
it "with schema_3" do
|
|
23
|
+
# input = fixture_path + "datacite_kernel_3.json"
|
|
24
|
+
input = fixture_path + "datacite_schema_3.xml"
|
|
25
|
+
json = Bolognese::Metadata.new(input: input, from: "datacite")
|
|
26
|
+
subject = Bolognese::Metadata.new(input: json.meta.to_json, from: "datacite_json")
|
|
27
|
+
bibtex = BibTeX.parse(subject.bibtex).to_a(quotes: '').first
|
|
28
|
+
expect(bibtex[:bibtex_type].to_s).to eq("misc")
|
|
29
|
+
expect(bibtex[:bibtex_key]).to eq("https://doi.org/10.5061/dryad.8515")
|
|
30
|
+
expect(bibtex[:doi]).to eq("10.5061/dryad.8515")
|
|
31
|
+
expect(bibtex[:year]).to eq("2011")
|
|
32
|
+
end
|
|
33
|
+
|
|
22
34
|
it "with pages" do
|
|
23
35
|
input = "https://doi.org/10.1155/2012/291294"
|
|
24
36
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
|
@@ -67,6 +67,19 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
67
67
|
expect(json["issued"]).to eq("date-parts" => [[2016, 12, 20]])
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
it "Another dataset" do
|
|
71
|
+
input = "10.26301/qdpd-2250"
|
|
72
|
+
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
|
73
|
+
json = JSON.parse(subject.citeproc)
|
|
74
|
+
expect(json["type"]).to eq("dataset")
|
|
75
|
+
expect(json["id"]).to eq("https://doi.org/10.26301/qdpd-2250")
|
|
76
|
+
expect(json["DOI"]).to eq("10.26301/qdpd-2250")
|
|
77
|
+
expect(json["title"]).to eq("USS Pampanito Submarine")
|
|
78
|
+
expect(json["author"]).to eq([{"literal"=>"USS Pampanito"}])
|
|
79
|
+
expect(json["publisher"]).to eq("Open Heritage 3D")
|
|
80
|
+
expect(json["issued"]).to eq("date-parts"=>[[2020]])
|
|
81
|
+
end
|
|
82
|
+
|
|
70
83
|
it "journal article" do
|
|
71
84
|
input = "10.7554/eLife.01567"
|
|
72
85
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
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: 1.
|
|
4
|
+
version: 1.8.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Fenner
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-07-
|
|
11
|
+
date: 2020-07-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: maremma
|
|
@@ -926,6 +926,7 @@ files:
|
|
|
926
926
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles.yml
|
|
927
927
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml
|
|
928
928
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml
|
|
929
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content_copernicus.yml
|
|
929
930
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/vor_with_url.yml
|
|
930
931
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/yet_another_book.yml
|
|
931
932
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/yet_another_book_chapter.yml
|
|
@@ -1117,6 +1118,7 @@ files:
|
|
|
1117
1118
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/Missing_author.yml
|
|
1118
1119
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/interactive_resource_without_dates.yml
|
|
1119
1120
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/software_w/version.yml
|
|
1121
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Another_dataset.yml
|
|
1120
1122
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting.yml
|
|
1121
1123
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting_schema_org.yml
|
|
1122
1124
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Dataset.yml
|
|
@@ -1248,8 +1250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1248
1250
|
- !ruby/object:Gem::Version
|
|
1249
1251
|
version: '0'
|
|
1250
1252
|
requirements: []
|
|
1251
|
-
|
|
1252
|
-
rubygems_version: 2.7.7
|
|
1253
|
+
rubygems_version: 3.0.8
|
|
1253
1254
|
signing_key:
|
|
1254
1255
|
specification_version: 4
|
|
1255
1256
|
summary: Ruby client library for conversion of DOI Metadata
|