bolognese 0.9.71 → 0.9.72
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bolognese/metadata.rb +9 -9
- data/lib/bolognese/readers/bibtex_reader.rb +3 -1
- data/lib/bolognese/readers/citeproc_reader.rb +9 -4
- data/lib/bolognese/readers/codemeta_reader.rb +9 -5
- data/lib/bolognese/readers/crossref_reader.rb +15 -13
- data/lib/bolognese/readers/datacite_json_reader.rb +3 -1
- data/lib/bolognese/readers/datacite_reader.rb +7 -7
- data/lib/bolognese/readers/ris_reader.rb +3 -1
- data/lib/bolognese/readers/schema_org_reader.rb +20 -16
- data/lib/bolognese/version.rb +1 -1
- data/spec/fixtures/crosscite.json +2 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_id.yml +112 -0
- data/spec/readers/codemeta_reader_spec.rb +4 -2
- data/spec/readers/crossref_reader_spec.rb +4 -0
- data/spec/readers/datacite_reader_spec.rb +6 -2
- data/spec/readers/schema_org_reader_spec.rb +3 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10b7b19b50f11d59d731d5ce52c7ab445ec2a5b3090f3c33bbdc7221438dfcf2
|
4
|
+
data.tar.gz: e7470fb34f1f232bd6f6e7f16a7cccfd0081d9d0f289c1f381accc0adcc509ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f688d4378c6f8a73c12de3b022bdfd2dbb3cd4ceb13d8d7de6e37c47414235184cceee8b776d106a68a2185bcc7e3fc57853448893f8143d64ce1602035802f0
|
7
|
+
data.tar.gz: be780ab41ab782b9bf199c4ca82a626eb5f18659d43cab0a6df6b8ab8cde34e2992679b1499fef797e813863c4e2efc788250699795d91f5c7f5b85b04704ec6
|
data/Gemfile.lock
CHANGED
data/lib/bolognese/metadata.rb
CHANGED
@@ -61,14 +61,14 @@ module Bolognese
|
|
61
61
|
include Bolognese::Writers::SchemaOrgWriter
|
62
62
|
include Bolognese::Writers::TurtleWriter
|
63
63
|
|
64
|
-
attr_accessor :doi, :author, :title, :publisher, :contributor, :license,
|
64
|
+
attr_accessor :id, :doi, :author, :title, :publisher, :contributor, :license,
|
65
65
|
:date_accepted, :date_available, :date_copyrighted, :date_collected,
|
66
66
|
:date_submitted, :date_valid, :date_created, :date_modified,
|
67
67
|
:date_registered, :date_updated, :provider_id, :client_id, :journal,
|
68
68
|
:volume, :issue, :first_page, :last_page, :url, :version, :keywords, :editor,
|
69
69
|
:description, :alternate_name, :language, :content_size, :spatial_coverage,
|
70
70
|
:schema_version, :additional_type, :has_part, :same_as,
|
71
|
-
:is_previous_version_of, :is_new_version_of,
|
71
|
+
:is_previous_version_of, :is_new_version_of, :is_cited_by, :cites,
|
72
72
|
:is_supplement_to, :is_supplemented_by, :is_continued_by, :continues,
|
73
73
|
:has_metadata, :is_metadata_for, :is_referenced_by, :references,
|
74
74
|
:is_documented_by, :documents, :is_compiled_by, :compiles,
|
@@ -87,8 +87,8 @@ module Bolognese
|
|
87
87
|
@from = from || find_from_format(id: id)
|
88
88
|
|
89
89
|
# generate name for method to call dynamically
|
90
|
-
hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) :
|
91
|
-
string = hsh.
|
90
|
+
hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) : {}
|
91
|
+
string = hsh.fetch("string", nil)
|
92
92
|
elsif File.exist?(input)
|
93
93
|
ext = File.extname(input)
|
94
94
|
if %w(.bib .ris .xml .json).include?(ext)
|
@@ -110,11 +110,11 @@ module Bolognese
|
|
110
110
|
end
|
111
111
|
|
112
112
|
# generate name for method to call dynamically
|
113
|
-
@metadata = @from.present? ? send("read_" + @from, string: string, sandbox: options[:sandbox], doi: options[:doi], url: options[:url]) : {}
|
113
|
+
@metadata = @from.present? ? send("read_" + @from, string: string, id: id, sandbox: options[:sandbox], doi: options[:doi], url: options[:url]) : {}
|
114
114
|
@raw = string.present? ? string.strip : nil
|
115
115
|
|
116
116
|
# replace DOI in XML if provided in options
|
117
|
-
if @from == "datacite" && options[:doi].present?
|
117
|
+
if @from == "datacite" && options[:doi].present? && string.present?
|
118
118
|
doc = Nokogiri::XML(string, nil, 'UTF-8', &:noblanks)
|
119
119
|
node = doc.at_css("identifier")
|
120
120
|
node.content = options[:doi].upcase
|
@@ -135,7 +135,7 @@ module Bolognese
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def exists?
|
138
|
-
metadata.fetch("
|
138
|
+
metadata.fetch("state", "not_found") != "not_found"
|
139
139
|
end
|
140
140
|
|
141
141
|
def valid?
|
@@ -150,7 +150,7 @@ module Bolognese
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def id
|
153
|
-
@
|
153
|
+
@id ||= metadata.fetch("id", nil)
|
154
154
|
end
|
155
155
|
|
156
156
|
def type
|
@@ -178,7 +178,7 @@ module Bolognese
|
|
178
178
|
end
|
179
179
|
|
180
180
|
def doi
|
181
|
-
@doi ||= metadata.fetch("doi", nil)
|
181
|
+
@doi ||= @id.present? ? doi_from_url(@id) : metadata.fetch("doi", nil)
|
182
182
|
end
|
183
183
|
|
184
184
|
def url
|
@@ -44,6 +44,7 @@ module Bolognese
|
|
44
44
|
end
|
45
45
|
|
46
46
|
page_first, page_last = meta.pages.to_s.split("-")
|
47
|
+
state = doi.present? ? "findable" : "not_found"
|
47
48
|
|
48
49
|
{ "id" => normalize_doi(doi),
|
49
50
|
"type" => type,
|
@@ -61,7 +62,8 @@ module Bolognese
|
|
61
62
|
"page_first" => page_first,
|
62
63
|
"page_last" => page_last,
|
63
64
|
"description" => { "text" => meta.field?(:abstract) && sanitize(meta.abstract.to_s).presence },
|
64
|
-
"license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence }
|
65
|
+
"license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence },
|
66
|
+
"state" => state
|
65
67
|
}
|
66
68
|
end
|
67
69
|
end
|
@@ -24,8 +24,10 @@ module Bolognese
|
|
24
24
|
}
|
25
25
|
|
26
26
|
def read_citeproc(string: nil, **options)
|
27
|
-
|
28
|
-
|
27
|
+
if string.present?
|
28
|
+
errors = jsonlint(string)
|
29
|
+
return { "errors" => errors } if errors.present?
|
30
|
+
end
|
29
31
|
|
30
32
|
meta = string.present? ? Maremma.from_json(string) : {}
|
31
33
|
|
@@ -43,8 +45,10 @@ module Bolognese
|
|
43
45
|
else
|
44
46
|
nil
|
45
47
|
end
|
48
|
+
id = normalize_id(meta.fetch("id", nil))
|
49
|
+
state = id.present? ? "findable" : "not_found"
|
46
50
|
|
47
|
-
{ "id" =>
|
51
|
+
{ "id" => id,
|
48
52
|
"type" => type,
|
49
53
|
"additional_type" => meta.fetch("additionalType", nil),
|
50
54
|
"citeproc_type" => citeproc_type,
|
@@ -64,7 +68,8 @@ module Bolognese
|
|
64
68
|
"description" => meta.fetch("abstract", nil).present? ? { "text" => sanitize(meta.fetch("abstract")) } : nil,
|
65
69
|
#{ }"license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence },
|
66
70
|
"version" => meta.fetch("version", nil),
|
67
|
-
"keywords" => meta.fetch("categories", nil)
|
71
|
+
"keywords" => meta.fetch("categories", nil),
|
72
|
+
"state" => state
|
68
73
|
}
|
69
74
|
end
|
70
75
|
end
|
@@ -2,7 +2,7 @@ module Bolognese
|
|
2
2
|
module Readers
|
3
3
|
module CodemetaReader
|
4
4
|
def get_codemeta(id: nil, **options)
|
5
|
-
return nil unless id.present?
|
5
|
+
return { "string" => nil, "state" => "not_found" } unless id.present?
|
6
6
|
id = normalize_id(id)
|
7
7
|
response = Maremma.get(github_as_codemeta_url(id), accept: "json", raw: true)
|
8
8
|
string = response.body.fetch("data", nil)
|
@@ -11,17 +11,20 @@ module Bolognese
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def read_codemeta(string: nil, **options)
|
14
|
-
|
15
|
-
|
14
|
+
if string.present?
|
15
|
+
errors = jsonlint(string)
|
16
|
+
return { "errors" => errors } if errors.present?
|
17
|
+
end
|
16
18
|
|
17
19
|
meta = string.present? ? Maremma.from_json(string) : {}
|
18
|
-
identifier = meta.fetch("identifier", nil)
|
20
|
+
identifier = meta.fetch("identifier", nil) || options[:id]
|
19
21
|
id = normalize_id(meta.fetch("@id", nil) || identifier)
|
20
22
|
type = meta.fetch("@type", nil)
|
21
23
|
author = get_authors(from_schema_org(Array.wrap(meta.fetch("agents", nil))))
|
22
24
|
editor = get_authors(from_schema_org(Array.wrap(meta.fetch("editor", nil))))
|
23
25
|
date_published = meta.fetch("datePublished", nil)
|
24
26
|
publisher = meta.fetch("publisher", nil)
|
27
|
+
state = meta.present? ? "findable" : "not_found"
|
25
28
|
|
26
29
|
{ "id" => id,
|
27
30
|
"type" => type,
|
@@ -45,7 +48,8 @@ module Bolognese
|
|
45
48
|
"description" => meta.fetch("description", nil).present? ? { "text" => sanitize(meta.fetch("description")) } : nil,
|
46
49
|
"license" => { "id" => meta.fetch("license", nil) },
|
47
50
|
"version" => meta.fetch("version", nil),
|
48
|
-
"keywords" => meta.fetch("tags", nil)
|
51
|
+
"keywords" => meta.fetch("tags", nil),
|
52
|
+
"state" => state
|
49
53
|
}
|
50
54
|
end
|
51
55
|
|
@@ -63,7 +63,7 @@ module Bolognese
|
|
63
63
|
CONTACT_EMAIL = "tech@datacite.org"
|
64
64
|
|
65
65
|
def get_crossref(id: nil, **options)
|
66
|
-
return nil unless id.present?
|
66
|
+
return { "string" => nil, "state" => "not_found" } unless id.present?
|
67
67
|
|
68
68
|
doi = doi_from_url(id)
|
69
69
|
url = "http://www.crossref.org/openurl/?id=doi:#{doi}&noredirect=true&pid=#{CONTACT_EMAIL}&format=unixref"
|
@@ -82,13 +82,12 @@ module Bolognese
|
|
82
82
|
meta = {}
|
83
83
|
end
|
84
84
|
|
85
|
-
return meta unless meta["crossref"].present?
|
86
|
-
|
87
85
|
# model should be one of book, conference, database, dissertation, journal, peer_review, posted_content,
|
88
86
|
# report-paper, sa_component, standard
|
89
|
-
model = meta.dig("crossref").keys.first
|
87
|
+
model = meta.dig("crossref").to_h.keys.first
|
90
88
|
|
91
89
|
additional_type = nil
|
90
|
+
bibliographic_metadata = {}
|
92
91
|
program_metadata = {}
|
93
92
|
journal_metadata = nil
|
94
93
|
journal_issue = {}
|
@@ -99,15 +98,15 @@ module Bolognese
|
|
99
98
|
book_metadata = meta.dig("crossref", "book", "book_metadata")
|
100
99
|
book_series_metadata = meta.dig("crossref", "book", "book_series_metadata")
|
101
100
|
book_set_metadata = meta.dig("crossref", "book", "book_set_metadata")
|
102
|
-
bibliographic_metadata = meta.dig("crossref", "book", "content_item")
|
101
|
+
bibliographic_metadata = meta.dig("crossref", "book", "content_item").to_h
|
103
102
|
additional_type = bibliographic_metadata.fetch("component_type", nil) ? "book-" + bibliographic_metadata.fetch("component_type") : "book"
|
104
103
|
publisher = book_metadata.dig("publisher", "publisher_name")
|
105
104
|
when "conference"
|
106
105
|
event_metadata = meta.dig("crossref", "conference", "event_metadata") || {}
|
107
|
-
bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper")
|
106
|
+
bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper").to_h
|
108
107
|
when "journal"
|
109
108
|
journal_metadata = meta.dig("crossref", "journal", "journal_metadata") || {}
|
110
|
-
bibliographic_metadata = meta.dig("crossref", "journal", "journal_article")
|
109
|
+
bibliographic_metadata = meta.dig("crossref", "journal", "journal_article").to_h
|
111
110
|
program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
|
112
111
|
journal_issue = meta.dig("crossref", "journal", "journal_issue") || {}
|
113
112
|
journal_article = meta.dig("crossref", "journal", "journal_article") || {}
|
@@ -120,18 +119,20 @@ module Bolognese
|
|
120
119
|
"journal"
|
121
120
|
end
|
122
121
|
when "posted_content"
|
123
|
-
bibliographic_metadata = meta.dig("crossref", "posted_content")
|
122
|
+
bibliographic_metadata = meta.dig("crossref", "posted_content").to_h
|
124
123
|
when "sa_component"
|
125
|
-
bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component")
|
124
|
+
bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component").to_h
|
126
125
|
end
|
127
126
|
|
128
|
-
additional_type = (additional_type || model).underscore.camelize
|
127
|
+
additional_type = (additional_type || model).to_s.underscore.camelize.presence
|
129
128
|
type = CR_TO_SO_TRANSLATIONS[additional_type] || "ScholarlyArticle"
|
130
|
-
|
129
|
+
|
130
|
+
doi = bibliographic_metadata.dig("doi_data", "doi").to_s.downcase.presence || doi_from_url(options[:id])
|
131
131
|
|
132
132
|
# Crossref servers run on Eastern Time
|
133
133
|
Time.zone = 'Eastern Time (US & Canada)'
|
134
|
-
date_modified = Time.zone.parse(meta.fetch("timestamp", "")).utc.iso8601
|
134
|
+
date_modified = Time.zone.parse(meta.fetch("timestamp", "2018-01-01")).utc.iso8601
|
135
|
+
state = meta.present? ? "findable" : "not_found"
|
135
136
|
|
136
137
|
{ "id" => normalize_doi(doi),
|
137
138
|
"type" => type,
|
@@ -163,7 +164,8 @@ module Bolognese
|
|
163
164
|
"keywords" => nil,
|
164
165
|
"language" => nil,
|
165
166
|
"content_size" => nil,
|
166
|
-
"schema_version" => nil
|
167
|
+
"schema_version" => nil,
|
168
|
+
"state" => state
|
167
169
|
}
|
168
170
|
end
|
169
171
|
|
@@ -9,6 +9,7 @@ module Bolognese
|
|
9
9
|
|
10
10
|
resource_type_general = meta.fetch("resource-type-general", nil)
|
11
11
|
type = Bolognese::Utils::DC_TO_SO_TRANSLATIONS[resource_type_general.to_s.dasherize] || "CreativeWork"
|
12
|
+
state = meta.fetch("doi", nil).present? ? "findable" : "not_found"
|
12
13
|
|
13
14
|
{ "id" => meta.fetch("id", nil),
|
14
15
|
"type" => type,
|
@@ -44,7 +45,8 @@ module Bolognese
|
|
44
45
|
"keywords" => meta.fetch("subject", nil),
|
45
46
|
"language" => meta.fetch("language", nil),
|
46
47
|
"content_size" => meta.fetch("size", nil),
|
47
|
-
"schema_version" => meta.fetch("schema-version", nil)
|
48
|
+
"schema_version" => meta.fetch("schema-version", nil),
|
49
|
+
"state" => state
|
48
50
|
}
|
49
51
|
end
|
50
52
|
|
@@ -2,7 +2,7 @@ module Bolognese
|
|
2
2
|
module Readers
|
3
3
|
module DataciteReader
|
4
4
|
def get_datacite(id: nil, **options)
|
5
|
-
return nil unless id.present?
|
5
|
+
return { "string" => nil, "state" => "not_found" } unless id.present?
|
6
6
|
|
7
7
|
doi = doi_from_url(id)
|
8
8
|
search_url = doi_search(id, options)
|
@@ -10,7 +10,7 @@ module Bolognese
|
|
10
10
|
|
11
11
|
response = Maremma.get search_url
|
12
12
|
attributes = response.body.dig("data", "attributes")
|
13
|
-
return nil unless attributes.present?
|
13
|
+
return { "string" => nil, "state" => "not_found" } unless attributes.present?
|
14
14
|
|
15
15
|
client_id = response.body.dig("data", "relationships", "client", "data", "id").upcase
|
16
16
|
provider_id = response.body.dig("data", "relationships", "provider", "data", "id").upcase
|
@@ -42,9 +42,7 @@ module Bolognese
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def read_datacite(string: nil, **options)
|
45
|
-
|
46
|
-
|
47
|
-
meta = Maremma.from_xml(string).fetch("resource", {})
|
45
|
+
meta = Maremma.from_xml(string).to_h.fetch("resource", {})
|
48
46
|
schema_version = meta.fetch("xmlns", nil)
|
49
47
|
|
50
48
|
# validate only when option is set, as this step is expensive and
|
@@ -57,7 +55,7 @@ module Bolognese
|
|
57
55
|
if options[:doi]
|
58
56
|
id = normalize_doi(options[:doi], sandbox: options[:sandbox])
|
59
57
|
else
|
60
|
-
id = normalize_doi(meta.dig("identifier", "__content__"), sandbox: options[:sandbox])
|
58
|
+
id = normalize_doi(meta.dig("identifier", "__content__") || options[:id], sandbox: options[:sandbox])
|
61
59
|
end
|
62
60
|
|
63
61
|
doi = doi_from_url(id)
|
@@ -93,6 +91,7 @@ module Bolognese
|
|
93
91
|
f = datacite_funder_contributor(meta) + datacite_funding_reference(meta)
|
94
92
|
f.length > 1 ? f : f.first
|
95
93
|
end
|
94
|
+
state = doi.present? ? "findable" : "not_found"
|
96
95
|
|
97
96
|
{ "id" => id,
|
98
97
|
"type" => type,
|
@@ -133,7 +132,8 @@ module Bolognese
|
|
133
132
|
"keywords" => keywords,
|
134
133
|
"language" => meta.fetch("language", nil),
|
135
134
|
"content_size" => meta.fetch("size", nil),
|
136
|
-
"schema_version" => schema_version
|
135
|
+
"schema_version" => schema_version,
|
136
|
+
"state" => state
|
137
137
|
}
|
138
138
|
end
|
139
139
|
|
@@ -46,6 +46,7 @@ module Bolognese
|
|
46
46
|
else
|
47
47
|
nil
|
48
48
|
end
|
49
|
+
state = doi.present? ? "findable" : "not_found"
|
49
50
|
|
50
51
|
{ "id" => normalize_doi(doi),
|
51
52
|
"type" => type,
|
@@ -68,7 +69,8 @@ module Bolognese
|
|
68
69
|
"first_page" => meta.fetch("SP", nil),
|
69
70
|
"last_page" => meta.fetch("EP", nil),
|
70
71
|
"keywords" => meta.fetch("KW", nil),
|
71
|
-
"language" => meta.fetch("LA", nil)
|
72
|
+
"language" => meta.fetch("LA", nil),
|
73
|
+
"state" => state
|
72
74
|
}
|
73
75
|
end
|
74
76
|
|
@@ -10,13 +10,27 @@ module Bolognese
|
|
10
10
|
"isSuccessor" => "IsNewVersionOf"
|
11
11
|
}
|
12
12
|
|
13
|
+
def get_schema_org(id: nil, **options)
|
14
|
+
return { "string" => nil, "state" => "not_found" } unless id.present?
|
15
|
+
|
16
|
+
id = normalize_id(id)
|
17
|
+
response = Maremma.get(id)
|
18
|
+
doc = Nokogiri::XML(response.body.fetch("data", nil), nil, 'UTF-8')
|
19
|
+
string = doc.at_xpath('//script[@type="application/ld+json"]')
|
20
|
+
string = string.text if string.present?
|
21
|
+
|
22
|
+
{ "string" => string }
|
23
|
+
end
|
24
|
+
|
13
25
|
def read_schema_org(string: nil, **options)
|
14
|
-
|
15
|
-
|
26
|
+
if string.present?
|
27
|
+
errors = jsonlint(string)
|
28
|
+
return { "errors" => errors } if errors.present?
|
29
|
+
end
|
16
30
|
|
17
31
|
meta = string.present? ? Maremma.from_json(string) : {}
|
18
32
|
|
19
|
-
id = normalize_id(meta.fetch("@id", nil))
|
33
|
+
id = normalize_id(meta.fetch("@id", nil) || options[:id])
|
20
34
|
type = meta.fetch("@type", nil)
|
21
35
|
resource_type_general = Bolognese::Utils::SO_TO_DC_TRANSLATIONS[type]
|
22
36
|
author = get_authors(from_schema_org(Array.wrap(meta.fetch("author", nil))))
|
@@ -27,6 +41,7 @@ module Bolognese
|
|
27
41
|
meta.dig("publisher")
|
28
42
|
end
|
29
43
|
date_published = meta.fetch("datePublished", nil)
|
44
|
+
state = meta.present? ? "findable" : "not_found"
|
30
45
|
|
31
46
|
{ "id" => id,
|
32
47
|
"type" => type,
|
@@ -55,22 +70,11 @@ module Bolognese
|
|
55
70
|
"description" => meta.fetch("description", nil).present? ? { "text" => sanitize(meta.fetch("description")) } : nil,
|
56
71
|
"license" => { "id" => meta.fetch("license", nil) },
|
57
72
|
"version" => meta.fetch("version", nil),
|
58
|
-
"keywords" => meta.fetch("keywords", nil).to_s.split(", ")
|
73
|
+
"keywords" => meta.fetch("keywords", nil).to_s.split(", "),
|
74
|
+
"state" => state
|
59
75
|
}
|
60
76
|
end
|
61
77
|
|
62
|
-
def get_schema_org(id: nil, **options)
|
63
|
-
return nil unless id.present?
|
64
|
-
|
65
|
-
id = normalize_id(id)
|
66
|
-
response = Maremma.get(id)
|
67
|
-
doc = Nokogiri::XML(response.body.fetch("data", nil), nil, 'UTF-8')
|
68
|
-
string = doc.at_xpath('//script[@type="application/ld+json"]')
|
69
|
-
string = string.text if string.present?
|
70
|
-
|
71
|
-
{ "string" => string }
|
72
|
-
end
|
73
|
-
|
74
78
|
def schema_org_related_identifier(meta, relation_type: nil)
|
75
79
|
normalize_ids(ids: meta.fetch(relation_type, nil))
|
76
80
|
end
|
data/lib/bolognese/version.rb
CHANGED
@@ -35,5 +35,6 @@
|
|
35
35
|
"text": "This tools are used to analyse the data produced by the Crosssover Experiment I designed to test Choice Architecture techniques as UI interventions in a SEEk4Science data catalogue. It contains:\n\n- Data structures for the experimental data.<br>\n- Visualisation functions<br>\n- Analysis functions\n\n## Installation\n\n- R<br>\n- python<br>\n- ipython 4\n\nClone and use.\n\n## Usage\n\n<br>\n```python<br>\nsource('parallel_plot.r')<br>\nwith(z, parallelset(trt,response, freq=count, alpha=0.2))<br>\n```\n\n<br>\n## Contributing\n\n1. Fork it!<br>\n2. Create your feature branch: `git checkout -b my-new-feature`<br>\n3. Commit your changes: `git commit -am 'Add some feature'`<br>\n4. Push to the branch: `git push origin my-new-feature`<br>\n5. Submit a pull request :D\n\n<br>\n## License\n\nThis work supports my PhD Thesis at University of Manchester."
|
36
36
|
},
|
37
37
|
"schema_version": "http://datacite.org/schema/kernel-4",
|
38
|
-
"provider": "DataCite"
|
38
|
+
"provider": "DataCite",
|
39
|
+
"state": "findable"
|
39
40
|
}
|
@@ -0,0 +1,112 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.datacite.org/prefixes/10.5061
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Maremma - https://github.com/datacite/maremma
|
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
|
+
- Sun, 14 Jan 2018 11:23:03 GMT
|
21
|
+
Content-Type:
|
22
|
+
- application/vnd.api+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
|
33
|
+
Etag:
|
34
|
+
- W/"675f0459ac44bbdfed07edbab66f777b"
|
35
|
+
X-Runtime:
|
36
|
+
- '0.019398'
|
37
|
+
X-Request-Id:
|
38
|
+
- 872af865-7150-4f9e-b467-7c44762acadf
|
39
|
+
X-Powered-By:
|
40
|
+
- Phusion Passenger 5.1.12
|
41
|
+
Server:
|
42
|
+
- nginx/1.12.2 + Phusion Passenger 5.1.12
|
43
|
+
Access-Control-Allow-Origin:
|
44
|
+
- "*"
|
45
|
+
Access-Control-Allow-Methods:
|
46
|
+
- GET, POST, PATCH, PUT, DELETE, OPTIONS
|
47
|
+
Access-Control-Allow-Headers:
|
48
|
+
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
|
49
|
+
Access-Control-Expose-Headers:
|
50
|
+
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
|
51
|
+
body:
|
52
|
+
encoding: UTF-8
|
53
|
+
string: '{"data":{"id":"10.5061","type":"prefixes","attributes":{"registration-agency":"DataCite","created":"2010-01-01T00:00:00.000Z","updated":null},"relationships":{"clients":{"data":[{"id":"cdl.dryad","type":"clients"}]},"providers":{"data":[{"id":"cdl","type":"providers"}]}}},"included":[{"id":"cdl.dryad","type":"clients","attributes":{"name":"Dryad","symbol":"CDL.DRYAD","year":2013,"contact-name":"Greg
|
54
|
+
Janee","contact-email":"gjanee@ucop.edu","domains":"*","is-active":true,"password":null,"created":"2013-02-19T17:42:03Z","updated":"2017-11-09T00:11:37Z"},"relationships":{"prefixes":{"meta":{}},"provider":{"meta":{}},"repository":{"meta":{}}}},{"id":"cdl","type":"providers","attributes":{"name":"California
|
55
|
+
Digital Library","symbol":"CDL","year":2010,"contact-name":"Greg Janee","contact-email":"gjanee@ucop.edu","logo-url":"https://assets.datacite.org/images/members/cdl.png","is-active":true,"password":"yes","created":"2010-01-01T00:00:00.000Z","updated":"2017-11-09T00:06:44.000Z"},"relationships":{"clients":{"meta":{}},"prefixes":{"meta":{}}}}]}'
|
56
|
+
http_version:
|
57
|
+
recorded_at: Sun, 14 Jan 2018 11:23:03 GMT
|
58
|
+
- request:
|
59
|
+
method: get
|
60
|
+
uri: https://api.datacite.org/dois/10.5061/dryad.8515?include=client,provider
|
61
|
+
body:
|
62
|
+
encoding: US-ASCII
|
63
|
+
string: ''
|
64
|
+
headers:
|
65
|
+
User-Agent:
|
66
|
+
- Maremma - https://github.com/datacite/maremma
|
67
|
+
Accept:
|
68
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
69
|
+
response:
|
70
|
+
status:
|
71
|
+
code: 200
|
72
|
+
message: OK
|
73
|
+
headers:
|
74
|
+
Date:
|
75
|
+
- Sun, 14 Jan 2018 11:23:03 GMT
|
76
|
+
Content-Type:
|
77
|
+
- application/vnd.api+json; charset=utf-8
|
78
|
+
Connection:
|
79
|
+
- keep-alive
|
80
|
+
Status:
|
81
|
+
- 200 OK
|
82
|
+
X-Anonymous-Consumer:
|
83
|
+
- 'true'
|
84
|
+
Cache-Control:
|
85
|
+
- max-age=0, private, must-revalidate
|
86
|
+
Vary:
|
87
|
+
- Accept-Encoding
|
88
|
+
Etag:
|
89
|
+
- W/"94247e0a1f8d60cd1f284a23b3041e51"
|
90
|
+
X-Runtime:
|
91
|
+
- '0.143771'
|
92
|
+
X-Request-Id:
|
93
|
+
- ea9d617f-832e-4750-9101-41eed0b38227
|
94
|
+
X-Powered-By:
|
95
|
+
- Phusion Passenger 5.1.12
|
96
|
+
Server:
|
97
|
+
- nginx/1.12.2 + Phusion Passenger 5.1.12
|
98
|
+
Access-Control-Allow-Origin:
|
99
|
+
- "*"
|
100
|
+
Access-Control-Allow-Methods:
|
101
|
+
- GET, POST, PATCH, PUT, DELETE, OPTIONS
|
102
|
+
Access-Control-Allow-Headers:
|
103
|
+
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
|
104
|
+
Access-Control-Expose-Headers:
|
105
|
+
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
|
106
|
+
body:
|
107
|
+
encoding: ASCII-8BIT
|
108
|
+
string: !binary |-
|
109
|
+
eyJkYXRhIjp7ImlkIjoiMTAuNTA2MS9kcnlhZC44NTE1IiwidHlwZSI6ImRvaXMiLCJhdHRyaWJ1dGVzIjp7ImRvaSI6IjEwLjUwNjEvZHJ5YWQuODUxNSIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNTA2MS9kcnlhZC44NTE1IiwidXJsIjoiaHR0cDovL2RhdGFkcnlhZC5vcmcvcmVzb3VyY2UvZG9pOjEwLjUwNjEvZHJ5YWQuODUxNSIsImF1dGhvciI6W3sidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJCZW5qYW1pbiBPbGxvbW8iLCJnaXZlbi1uYW1lIjoiQmVuamFtaW4iLCJmYW1pbHktbmFtZSI6Ik9sbG9tbyJ9LHsidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJQYXRyaWNrIER1cmFuZCIsImdpdmVuLW5hbWUiOiJQYXRyaWNrIiwiZmFtaWx5LW5hbWUiOiJEdXJhbmQifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRnJhbmNrIFBydWdub2xsZSIsImdpdmVuLW5hbWUiOiJGcmFuY2siLCJmYW1pbHktbmFtZSI6IlBydWdub2xsZSJ9LHsidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJFbW1hbnVlbCBKLiBQLiBEb3V6ZXJ5IiwiZ2l2ZW4tbmFtZSI6IkVtbWFudWVsIEouIFAuIiwiZmFtaWx5LW5hbWUiOiJEb3V6ZXJ5In0seyJ0eXBlIjoiUGVyc29uIiwibmFtZSI6IkPDqWxpbmUgQXJuYXRoYXUiLCJnaXZlbi1uYW1lIjoiQ8OpbGluZSIsImZhbWlseS1uYW1lIjoiQXJuYXRoYXUifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRGlldWRvbm7DqSBOa29naGUiLCJnaXZlbi1uYW1lIjoiRGlldWRvbm7DqSIsImZhbWlseS1uYW1lIjoiTmtvZ2hlIn0seyJ0eXBlIjoiUGVyc29uIiwibmFtZSI6IkVyaWMgTGVyb3kiLCJnaXZlbi1uYW1lIjoiRXJpYyIsImZhbWlseS1uYW1lIjoiTGVyb3kifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRnJhbsOnb2lzIFJlbmF1ZCIsImdpdmVuLW5hbWUiOiJGcmFuw6dvaXMiLCJmYW1pbHktbmFtZSI6IlJlbmF1ZCJ9XSwidGl0bGUiOiJEYXRhIGZyb206IEEgbmV3IG1hbGFyaWEgYWdlbnQgaW4gQWZyaWNhbiBob21pbmlkcy4iLCJjb250YWluZXItdGl0bGUiOiJEcnlhZCBEaWdpdGFsIFJlcG9zaXRvcnkiLCJkZXNjcmlwdGlvbiI6bnVsbCwicmVzb3VyY2UtdHlwZS1zdWJ0eXBlIjoiRGF0YVBhY2thZ2UiLCJsaWNlbnNlIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wIiwidmVyc2lvbiI6MjAsInJlbGF0ZWQtaWRlbnRpZmllciI6W3sidHlwZSI6IkNyZWF0aXZlV29yayIsImlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUwNjEvZHJ5YWQuODUxNS8xIiwicmVsYXRpb24tdHlwZSI6Ikhhc1BhcnQifSx7InR5cGUiOiJDcmVhdGl2ZVdvcmsiLCJpZCI6Imh0dHBzOi8vZG9pLm9yZy8xMC41MDYxL2RyeWFkLjg1MTUvMiIsInJlbGF0aW9uLXR5cGUiOiJIYXNQYXJ0In0seyJ0eXBlIjoiQ3JlYXRpdmVXb3JrIiwiaWQiOiJodHRwczovL2RvaS5vcmcvMTAuMTM3MS9qb3VybmFsLnBwYXQuMTAwMDQ0NiIsInJlbGF0aW9uLXR5cGUiOiJJc1JlZmVyZW5jZWRCeSJ9LHsidHlwZSI6IkNyZWF0aXZlV29yayIsImlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEzNzEvam91cm5hbC5wcGF0LjEwMDA0NDYiLCJyZWxhdGlvbi10eXBlIjoiSXNTdXBwbGVtZW50VG8ifV0sInNjaGVtYS12ZXJzaW9uIjoiaHR0cDovL2RhdGFjaXRlLm9yZy9zY2hlbWEva2VybmVsLTQiLCJzdGF0ZSI6ImZpbmRhYmxlIiwieG1sIjoiUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BISmxjMjkxXG5jbU5sSUhodGJHNXpQU0pvZEhSd09pOHZaR0YwWVdOcGRHVXViM0puTDNOamFHVnRZUzlyWlhKdVpXd3Rcbk5DSWdlRzFzYm5NNmVITnBQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBeEwxaE5URk5qYUdWdFxuWVMxcGJuTjBZVzVqWlNJZ2VHMXNibk02YldWMGN6MGlhSFIwY0RvdkwzZDNkeTVzYjJNdVoyOTJMMDFGXG5WRk12SWlCNGJXeHVjenBrYzNCaFkyVTlJbWgwZEhBNkx5OTNkM2N1WkhOd1lXTmxMbTl5Wnk5NGJXeHVcbmN5OWtjM0JoWTJVdlpHbHRJaUI0Yld4dWN6cGthVzA5SW1oMGRIQTZMeTkzZDNjdVpITndZV05sTG05eVxuWnk5NGJXeHVjeTlrYzNCaFkyVXZaR2x0SWlCNGJXeHVjenBrY25saFpEMGlhSFIwY0RvdkwzQjFjbXd1XG5iM0puTDJSeWVXRmtMM1JsY20xekx5SWdlSE5wT25OamFHVnRZVXh2WTJGMGFXOXVQU0pvZEhSd09pOHZcblpHRjBZV05wZEdVdWIzSm5MM05qYUdWdFlTOXJaWEp1Wld3dE5DQm9kSFJ3T2k4dmMyTm9aVzFoTG1SaFxuZEdGamFYUmxMbTl5Wnk5dFpYUmhMMnRsY201bGJDMDBMMjFsZEdGa1lYUmhMbmh6WkNJK0NpQWdQR2xrXG5aVzUwYVdacFpYSWdhV1JsYm5ScFptbGxjbFI1Y0dVOUlrUlBTU0krTVRBdU5UQTJNUzlFVWxsQlJDNDRcbk5URTFQQzlwWkdWdWRHbG1hV1Z5UGdvZ0lEeDJaWEp6YVc5dVBqRThMM1psY25OcGIyNCtDaUFnUEdOeVxuWldGMGIzSnpQZ29nSUNBZ1BHTnlaV0YwYjNJK0NpQWdJQ0FnSUR4amNtVmhkRzl5VG1GdFpUNVBiR3h2XG5iVzhzSUVKbGJtcGhiV2x1UEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdcbklEeGpjbVZoZEc5eVBnb2dJQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStSSFZ5WVc1a0xDQlFZWFJ5YVdOclxuUEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdJRHhqY21WaGRHOXlQZ29nXG5JQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStVSEoxWjI1dmJHeGxMQ0JHY21GdVkyczhMMk55WldGMGIzSk9cbllXMWxQZ29nSUNBZ1BDOWpjbVZoZEc5eVBnb2dJQ0FnUEdOeVpXRjBiM0krQ2lBZ0lDQWdJRHhqY21WaFxuZEc5eVRtRnRaVDVFYjNWNlpYSjVMQ0JGYlcxaGJuVmxiQ0JLTGlCUUxqd3ZZM0psWVhSdmNrNWhiV1UrXG5DaUFnSUNBOEwyTnlaV0YwYjNJK0NpQWdJQ0E4WTNKbFlYUnZjajRLSUNBZ0lDQWdQR055WldGMGIzSk9cbllXMWxQa0Z5Ym1GMGFHRjFMQ0JEdzZsc2FXNWxQQzlqY21WaGRHOXlUbUZ0WlQ0S0lDQWdJRHd2WTNKbFxuWVhSdmNqNEtJQ0FnSUR4amNtVmhkRzl5UGdvZ0lDQWdJQ0E4WTNKbFlYUnZjazVoYldVK1RtdHZaMmhsXG5MQ0JFYVdWMVpHOXVic09wUEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdcbklEeGpjbVZoZEc5eVBnb2dJQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStUR1Z5YjNrc0lFVnlhV004TDJOeVxuWldGMGIzSk9ZVzFsUGdvZ0lDQWdQQzlqY21WaGRHOXlQZ29nSUNBZ1BHTnlaV0YwYjNJK0NpQWdJQ0FnXG5JRHhqY21WaGRHOXlUbUZ0WlQ1U1pXNWhkV1FzSUVaeVlXN0RwMjlwY3p3dlkzSmxZWFJ2Y2s1aGJXVStcbkNpQWdJQ0E4TDJOeVpXRjBiM0krQ2lBZ1BDOWpjbVZoZEc5eWN6NEtJQ0E4ZEdsMGJHVnpQZ29nSUNBZ1xuUEhScGRHeGxQa1JoZEdFZ1puSnZiVG9nUVNCdVpYY2diV0ZzWVhKcFlTQmhaMlZ1ZENCcGJpQkJabkpwXG5ZMkZ1SUdodmJXbHVhV1J6TGp3dmRHbDBiR1UrQ2lBZ1BDOTBhWFJzWlhNK0NpQWdQSEIxWW14cGMyaGxcbmNqNUVjbmxoWkNCRWFXZHBkR0ZzSUZKbGNHOXphWFJ2Y25rOEwzQjFZbXhwYzJobGNqNEtJQ0E4Y0hWaVxuYkdsallYUnBiMjVaWldGeVBqSXdNVEU4TDNCMVlteHBZMkYwYVc5dVdXVmhjajRLSUNBOGMzVmlhbVZqXG5kSE0rQ2lBZ0lDQThjM1ZpYW1WamRENVFhSGxzYjJkbGJuazhMM04xWW1wbFkzUStDaUFnSUNBOGMzVmlcbmFtVmpkRDVOWVd4aGNtbGhQQzl6ZFdKcVpXTjBQZ29nSUNBZ1BITjFZbXBsWTNRK1VHRnlZWE5wZEdWelxuUEM5emRXSnFaV04wUGdvZ0lDQWdQSE4xWW1wbFkzUStWR0Y0YjI1dmJYazhMM04xWW1wbFkzUStDaUFnXG5JQ0E4YzNWaWFtVmpkRDVOYVhSdlkyaHZibVJ5YVdGc0lHZGxibTl0WlR3dmMzVmlhbVZqZEQ0S0lDQWdcbklEeHpkV0pxWldOMFBrRm1jbWxqWVR3dmMzVmlhbVZqZEQ0S0lDQWdJRHh6ZFdKcVpXTjBQbEJzWVhOdFxuYjJScGRXMDhMM04xWW1wbFkzUStDaUFnUEM5emRXSnFaV04wY3o0S0lDQThjbVZ6YjNWeVkyVlVlWEJsXG5JSEpsYzI5MWNtTmxWSGx3WlVkbGJtVnlZV3c5SWtSaGRHRnpaWFFpUGtSaGRHRlFZV05yWVdkbFBDOXlcblpYTnZkWEpqWlZSNWNHVStDaUFnUEdGc2RHVnlibUYwWlVsa1pXNTBhV1pwWlhKelBnb2dJQ0FnUEdGc1xuZEdWeWJtRjBaVWxrWlc1MGFXWnBaWElnWVd4MFpYSnVZWFJsU1dSbGJuUnBabWxsY2xSNWNHVTlJbU5wXG5kR0YwYVc5dUlqNVBiR3h2Ylc4Z1Fpd2dSSFZ5WVc1a0lGQXNJRkJ5ZFdkdWIyeHNaU0JHTENCRWIzVjZcblpYSjVJRVZLVUN3Z1FYSnVZWFJvWVhVZ1F5d2dUbXR2WjJobElFUXNJRXhsY205NUlFVXNJRkpsYm1GMVxuWkNCR0lDZ3lNREE1S1NCQklHNWxkeUJ0WVd4aGNtbGhJR0ZuWlc1MElHbHVJRUZtY21sallXNGdhRzl0XG5hVzVwWkhNdUlGQk1iMU1nVUdGMGFHOW5aVzV6SURVb05TazZJR1V4TURBd05EUTJMand2WVd4MFpYSnVcbllYUmxTV1JsYm5ScFptbGxjajRLSUNBOEwyRnNkR1Z5Ym1GMFpVbGtaVzUwYVdacFpYSnpQZ29nSUR4eVxuWld4aGRHVmtTV1JsYm5ScFptbGxjbk0rQ2lBZ0lDQThjbVZzWVhSbFpFbGtaVzUwYVdacFpYSWdjbVZzXG5ZWFJsWkVsa1pXNTBhV1pwWlhKVWVYQmxQU0pFVDBraUlISmxiR0YwYVc5dVZIbHdaVDBpU0dGelVHRnlcbmRDSStNVEF1TlRBMk1TOUVVbGxCUkM0NE5URTFMekU4TDNKbGJHRjBaV1JKWkdWdWRHbG1hV1Z5UGdvZ1xuSUNBZ1BISmxiR0YwWldSSlpHVnVkR2xtYVdWeUlISmxiR0YwWldSSlpHVnVkR2xtYVdWeVZIbHdaVDBpXG5SRTlKSWlCeVpXeGhkR2x2YmxSNWNHVTlJa2hoYzFCaGNuUWlQakV3TGpVd05qRXZSRkpaUVVRdU9EVXhcbk5TOHlQQzl5Wld4aGRHVmtTV1JsYm5ScFptbGxjajRLSUNBZ0lEeHlaV3hoZEdWa1NXUmxiblJwWm1sbFxuY2lCeVpXeGhkR1ZrU1dSbGJuUnBabWxsY2xSNWNHVTlJa1JQU1NJZ2NtVnNZWFJwYjI1VWVYQmxQU0pKXG5jMUpsWm1WeVpXNWpaV1JDZVNJK01UQXVNVE0zTVM5S1QxVlNUa0ZNTGxCUVFWUXVNVEF3TURRME5qd3ZcbmNtVnNZWFJsWkVsa1pXNTBhV1pwWlhJK0NpQWdJQ0E4Y21Wc1lYUmxaRWxrWlc1MGFXWnBaWElnY21Wc1xuWVhSbFpFbGtaVzUwYVdacFpYSlVlWEJsUFNKRVQwa2lJSEpsYkdGMGFXOXVWSGx3WlQwaVNYTlRkWEJ3XG5iR1Z0Wlc1MFZHOGlQakV3TGpFek56RXZTazlWVWs1QlRDNVFVRUZVTGpFd01EQTBORFk4TDNKbGJHRjBcblpXUkpaR1Z1ZEdsbWFXVnlQZ29nSUNBZ1BISmxiR0YwWldSSlpHVnVkR2xtYVdWeUlISmxiR0YwWldSSlxuWkdWdWRHbG1hV1Z5Vkhsd1pUMGlVRTFKUkNJZ2NtVnNZWFJwYjI1VWVYQmxQU0pKYzFKbFptVnlaVzVqXG5aV1JDZVNJK01UazBOemc0TnpjOEwzSmxiR0YwWldSSlpHVnVkR2xtYVdWeVBnb2dJQ0FnUEhKbGJHRjBcblpXUkpaR1Z1ZEdsbWFXVnlJSEpsYkdGMFpXUkpaR1Z1ZEdsbWFXVnlWSGx3WlQwaVVFMUpSQ0lnY21Wc1xuWVhScGIyNVVlWEJsUFNKSmMxTjFjSEJzWlcxbGJuUlVieUkrTVRrME56ZzROemM4TDNKbGJHRjBaV1JKXG5aR1Z1ZEdsbWFXVnlQZ29nSUR3dmNtVnNZWFJsWkVsa1pXNTBhV1pwWlhKelBnb2dJRHh5YVdkb2RITk1cbmFYTjBQZ29nSUNBZ1BISnBaMmgwY3lCeWFXZG9kSE5WVWtrOUltaDBkSEE2THk5amNtVmhkR2wyWldOdlxuYlcxdmJuTXViM0puTDNCMVlteHBZMlJ2YldGcGJpOTZaWEp2THpFdU1DOGlMejRLSUNBOEwzSnBaMmgwXG5jMHhwYzNRK0Nqd3ZjbVZ6YjNWeVkyVStcbiIsInB1Ymxpc2hlZCI6IjIwMTEiLCJyZWdpc3RlcmVkIjoiMjAxMS0wMi0wMVQxNzozMjowMi4wMDBaIiwidXBkYXRlZCI6IjIwMTctMDktMDJUMDc6MzI6MjMuMDAwWiJ9LCJyZWxhdGlvbnNoaXBzIjp7ImNsaWVudCI6eyJkYXRhIjp7ImlkIjoiY2RsLmRyeWFkIiwidHlwZSI6ImNsaWVudHMifX0sInByb3ZpZGVyIjp7ImRhdGEiOnsiaWQiOiJjZGwiLCJ0eXBlIjoicHJvdmlkZXJzIn19LCJyZXNvdXJjZS10eXBlIjp7Im1ldGEiOnt9fSwibWVkaWEiOnsibWV0YSI6e319fX0sImluY2x1ZGVkIjpbeyJpZCI6ImNkbC5kcnlhZCIsInR5cGUiOiJjbGllbnRzIiwiYXR0cmlidXRlcyI6eyJuYW1lIjoiRHJ5YWQiLCJzeW1ib2wiOiJDREwuRFJZQUQiLCJ5ZWFyIjoyMDEzLCJjb250YWN0LW5hbWUiOiJHcmVnIEphbmVlIiwiY29udGFjdC1lbWFpbCI6ImdqYW5lZUB1Y29wLmVkdSIsImRvbWFpbnMiOiIqIiwiaXMtYWN0aXZlIjp0cnVlLCJwYXNzd29yZCI6bnVsbCwiY3JlYXRlZCI6IjIwMTMtMDItMTlUMTc6NDI6MDNaIiwidXBkYXRlZCI6IjIwMTctMTEtMDlUMDA6MTE6MzdaIn0sInJlbGF0aW9uc2hpcHMiOnsicHJlZml4ZXMiOnsibWV0YSI6e319LCJwcm92aWRlciI6eyJtZXRhIjp7fX0sInJlcG9zaXRvcnkiOnsibWV0YSI6e319fX0seyJpZCI6ImNkbCIsInR5cGUiOiJwcm92aWRlcnMiLCJhdHRyaWJ1dGVzIjp7Im5hbWUiOiJDYWxpZm9ybmlhIERpZ2l0YWwgTGlicmFyeSIsInN5bWJvbCI6IkNETCIsInllYXIiOjIwMTAsImNvbnRhY3QtbmFtZSI6IkdyZWcgSmFuZWUiLCJjb250YWN0LWVtYWlsIjoiZ2phbmVlQHVjb3AuZWR1IiwibG9nby11cmwiOiJodHRwczovL2Fzc2V0cy5kYXRhY2l0ZS5vcmcvaW1hZ2VzL21lbWJlcnMvY2RsLnBuZyIsImlzLWFjdGl2ZSI6dHJ1ZSwicGFzc3dvcmQiOiJ5ZXMiLCJjcmVhdGVkIjoiMjAxMC0wMS0wMVQwMDowMDowMC4wMDBaIiwidXBkYXRlZCI6IjIwMTctMTEtMDlUMDA6MDY6NDQuMDAwWiJ9LCJyZWxhdGlvbnNoaXBzIjp7ImNsaWVudHMiOnsibWV0YSI6e319LCJwcmVmaXhlcyI6eyJtZXRhIjp7fX19fV19
|
110
|
+
http_version:
|
111
|
+
recorded_at: Sun, 14 Jan 2018 11:23:03 GMT
|
112
|
+
recorded_with: VCR 3.0.3
|
@@ -32,15 +32,17 @@ describe Bolognese::Metadata, vcr: true do
|
|
32
32
|
it "no codemeta.json" do
|
33
33
|
input = "https://github.com/datacite/homepage"
|
34
34
|
subject = Bolognese::Metadata.new(input: input)
|
35
|
-
expect(subject.id).to
|
35
|
+
expect(subject.id).to eq("https://github.com/datacite/homepage")
|
36
36
|
expect(subject.exists?).to be false
|
37
|
+
expect(subject.state).to eq("not_found")
|
37
38
|
end
|
38
39
|
|
39
40
|
it "not found error" do
|
40
41
|
input = "https://github.com/datacite/x"
|
41
42
|
subject = Bolognese::Metadata.new(input: input)
|
42
|
-
expect(subject.id).to
|
43
|
+
expect(subject.id).to eq("https://github.com/datacite/x")
|
43
44
|
expect(subject.exists?).to be false
|
45
|
+
expect(subject.state).to eq("not_found")
|
44
46
|
end
|
45
47
|
|
46
48
|
it "rdataone" do
|
@@ -193,6 +193,10 @@ describe Bolognese::Metadata, vcr: true do
|
|
193
193
|
input = "https://doi.org/10.7554/elife.01567x"
|
194
194
|
subject = Bolognese::Metadata.new(input: input)
|
195
195
|
expect(subject.valid?).to be false
|
196
|
+
expect(subject.id).to eq("https://doi.org/10.7554/elife.01567x")
|
197
|
+
expect(subject.doi).to eq("10.7554/elife.01567x")
|
198
|
+
expect(subject.provider).to eq("Crossref")
|
199
|
+
expect(subject.state).to eq("not_found")
|
196
200
|
end
|
197
201
|
end
|
198
202
|
end
|
@@ -323,6 +323,10 @@ describe Bolognese::Metadata, vcr: true do
|
|
323
323
|
input = "https://doi.org/10.4124/05F6C379-DD68-4CDB-880D-33D3E9576D52/1"
|
324
324
|
subject = Bolognese::Metadata.new(input: input)
|
325
325
|
expect(subject.valid?).to be false
|
326
|
+
expect(subject.id).to eq("https://doi.org/10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1")
|
327
|
+
expect(subject.doi).to eq("10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1")
|
328
|
+
expect(subject.provider).to eq("DataCite")
|
329
|
+
expect(subject.state).to eq("not_found")
|
326
330
|
end
|
327
331
|
|
328
332
|
it "DOI in test system" do
|
@@ -368,8 +372,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
368
372
|
end
|
369
373
|
|
370
374
|
context "change datacite metadata" do
|
371
|
-
it "change
|
372
|
-
subject.
|
375
|
+
it "change id" do
|
376
|
+
subject.id = "https://doi.org/10.5061/8515"
|
373
377
|
expect(subject.valid?).to be true
|
374
378
|
expect(subject.id).to eq("https://doi.org/10.5061/8515")
|
375
379
|
expect(subject.doi).to eq("10.5061/8515")
|
@@ -34,7 +34,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
34
34
|
|
35
35
|
it "BlogPosting with new DOI" do
|
36
36
|
subject = Bolognese::Metadata.new(input: input)
|
37
|
-
subject.
|
37
|
+
subject.id = "https://doi.org/10.5438/0000-00ss"
|
38
38
|
expect(subject.valid?).to be true
|
39
39
|
expect(subject.id).to eq("https://doi.org/10.5438/0000-00ss")
|
40
40
|
expect(subject.doi).to eq("10.5438/0000-00ss")
|
@@ -45,8 +45,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
45
45
|
it "not found error" do
|
46
46
|
input = "https://doi.org/10.5438/4K3M-NYVGx"
|
47
47
|
subject = Bolognese::Metadata.new(input: input, from: "schema_org")
|
48
|
-
expect(subject.id).to
|
48
|
+
expect(subject.id).to eq("https://doi.org/10.5438/4k3m-nyvgx")
|
49
49
|
expect(subject.exists?).to be false
|
50
|
+
expect(subject.state).to eq("not_found")
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
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: 0.9.
|
4
|
+
version: 0.9.72
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: maremma
|
@@ -584,6 +584,7 @@ files:
|
|
584
584
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/single_author.yml
|
585
585
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/with_organization.yml
|
586
586
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_doi.yml
|
587
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_id.yml
|
587
588
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_title.yml
|
588
589
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/validates_against_schema.yml
|
589
590
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/with_data_citation.yml
|