Class: Briard::Metadata
Constant Summary
Readers::SchemaOrgReader::SO_TO_DC_RELATION_TYPES, Readers::SchemaOrgReader::SO_TO_DC_REVERSE_RELATION_TYPES
Readers::RisReader::RIS_TO_BIB_TRANSLATIONS, Readers::RisReader::RIS_TO_CP_TRANSLATIONS, Readers::RisReader::RIS_TO_SO_TRANSLATIONS
Readers::CiteprocReader::CP_TO_RIS_TRANSLATIONS, Readers::CiteprocReader::CP_TO_SO_TRANSLATIONS
Readers::BibtexReader::BIB_TO_CP_TRANSLATIONS, Readers::BibtexReader::BIB_TO_RIS_TRANSLATIONS, Readers::BibtexReader::BIB_TO_SO_TRANSLATIONS
Constants included
from Utils
Utils::BIB_TO_CR_TRANSLATIONS, Utils::BIB_TO_DC_TRANSLATIONS, Utils::CP_TO_DC_TRANSLATIONS, Utils::CR_TO_BIB_TRANSLATIONS, Utils::CR_TO_CP_TRANSLATIONS, Utils::CR_TO_DC_TRANSLATIONS, Utils::CR_TO_JATS_TRANSLATIONS, Utils::CR_TO_RIS_TRANSLATIONS, Utils::CR_TO_SO_TRANSLATIONS, Utils::DC_TO_CP_TRANSLATIONS, Utils::DC_TO_RIS_TRANSLATIONS, Utils::DC_TO_SO_TRANSLATIONS, Utils::NORMALIZED_LICENSES, Utils::RIS_TO_DC_TRANSLATIONS, Utils::SO_TO_BIB_TRANSLATIONS, Utils::SO_TO_CP_TRANSLATIONS, Utils::SO_TO_DC_TRANSLATIONS, Utils::SO_TO_JATS_TRANSLATIONS, Utils::SO_TO_RIS_TRANSLATIONS, Utils::UNKNOWN_INFORMATION
Constants included
from AuthorUtils
AuthorUtils::IDENTIFIER_SCHEME_URIS
Instance Attribute Summary collapse
#name_detector, #reverse
Instance Method Summary
collapse
#citeproc_hsh, #container_title, #crosscite_hsh, #graph, #locale, #raw, #should_passthru, #style
#turtle
#schema_hsh, #schema_org
#ris
#rdf_xml
#date, #insert_authors, #insert_citation, #insert_citation_title, #insert_contributor, #insert_editors, #insert_fpage, #insert_issue, #insert_lpage, #insert_pub_id, #insert_publication_date, #insert_publisher_name, #insert_source, #insert_version, #insert_volume, #is_article?, #is_chapter?, #is_data?, #jats, #publication_type
#datacite_json
#datacite
#csv
#crossref
#crosscite
#codemeta
#citeproc
#citation
#bibtex
#get_schema_org, #read_schema_org, #schema_org_has_part, #schema_org_is_identical_to, #schema_org_is_new_version_of, #schema_org_is_part_of, #schema_org_is_previous_version_of, #schema_org_is_referenced_by, #schema_org_is_supplement_to, #schema_org_is_supplemented_by, #schema_org_references, #schema_org_related_identifier, #schema_org_reverse_related_identifier
#read_ris, #ris_meta
#get_npm, #read_npm
#read_datacite_json
#get_datacite, #get_titles, #read_datacite, #set_container
#crossref_alternate_identifiers, #crossref_date_published, #crossref_description, #crossref_funding_reference, #crossref_is_part_of, #crossref_license, #crossref_people, #crossref_references, #get_crossref, #read_crossref
#read_crosscite
#get_codemeta, #read_codemeta
#read_citeproc
#read_bibtex
Methods included from Utils
#find_from_format, #find_from_format_by_ext, #find_from_format_by_filename, #find_from_format_by_id, #find_from_format_by_string, #from_citeproc, #from_datacite_json, #from_schema_org, #from_schema_org_contributors, #from_schema_org_creators, #get_contributor, #get_date, #get_date_from_date_parts, #get_date_from_parts, #get_date_parts, #get_date_parts_from_parts, #get_datetime_from_iso8601, #get_datetime_from_time, #get_identifier, #get_identifier_type, #get_iso8601_date, #get_series_information, #get_year_month, #get_year_month_day, #github_as_codemeta_url, #github_as_owner_url, #github_as_release_url, #github_as_repo_url, #github_from_url, #github_owner_from_url, #github_release_from_url, #github_repo_from_url, #hsh_to_fos, #hsh_to_spdx, #jsonlint, #map_hash_keys, #name_to_fos, #name_to_spdx, #normalize_cc_url, #normalize_id, #normalize_ids, #normalize_issn, #normalize_licenses, #normalize_orcid, #normalize_url, #orcid_as_url, #orcid_from_url, #parse_attributes, #sanitize, #strip_milliseconds, #to_citeproc, #to_datacite_json, #to_identifier, #to_ris, #to_schema_org, #to_schema_org_container, #to_schema_org_contributors, #to_schema_org_creators, #to_schema_org_funder, #to_schema_org_identifiers, #to_schema_org_relation, #to_schema_org_spatial_coverage, #validate_orcid, #validate_orcid_scheme, #validate_url
#datacite_errors, #datacite_xml, #insert_alternate_identifiers, #insert_contributors, #insert_creators, #insert_dates, #insert_descriptions, #insert_formats, #insert_funding_references, #insert_geo_locations, #insert_identifier, #insert_language, #insert_person, #insert_publication_year, #insert_publisher, #insert_related_identifiers, #insert_related_items, #insert_resource_type, #insert_rights_list, #insert_sizes, #insert_subjects, #insert_titles, #insert_version, #insert_work, #root_attributes
#crossref_errors, #crossref_root_attributes, #crossref_xml, #insert_citation_list, #insert_crossref_abstract, #insert_crossref_access_indicators, #insert_crossref_alternate_identifiers, #insert_crossref_creators, #insert_crossref_issn, #insert_crossref_language, #insert_crossref_person, #insert_crossref_publication_date, #insert_crossref_rights_list, #insert_crossref_subjects, #insert_crossref_titles, #insert_crossref_work, #insert_doi_data, #insert_group_title, #insert_institution, #insert_journal, #insert_posted_content, #insert_posted_date
#authors_as_string, #cleanup_author, #get_affiliations, #get_authors, #get_one_author, #is_personal_name?, #name_exists?
Methods included from DoiUtils
#doi_api_url, #doi_as_url, #doi_from_url, #doi_resolver, #get_doi_ra, #normalize_doi, #validate_doi, #validate_funder_doi, #validate_prefix
Constructor Details
#initialize(options = {}) ⇒ Metadata
Returns a new instance of Metadata.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/briard/metadata.rb', line 19
def initialize(options={})
options.symbolize_keys!
id = normalize_id(options[:input], options)
ra = nil
if id.present?
@from = options[:from] || find_from_format(id: id)
if @from == "medra"
ra = "mEDRA"
elsif @from == "kisti"
ra = "KISTI"
elsif @from == "jalc"
ra = "JaLC"
elsif @from == "op"
ra = "OP"
end
hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) : {}
string = hsh.fetch("string", nil)
elsif options[:input].present? && File.exist?(options[:input])
filename = File.basename(options[:input])
ext = File.extname(options[:input])
if %w(.bib .ris .xml .json).include?(ext)
hsh = {
"url" => options[:url],
"state" => options[:state],
"date_registered" => options[:date_registered],
"date_updated" => options[:date_updated],
"provider_id" => options[:provider_id],
"client_id" => options[:client_id],
"depositor" => options[:depositor],
"email" => options[:email],
"registrant" => options[:registrant],
"content_url" => options[:content_url] }
string = IO.read(options[:input])
@from = options[:from] || find_from_format(string: string, filename: filename, ext: ext)
else
$stderr.puts "File type #{ext} not supported"
exit 1
end
else
hsh = {
"url" => options[:url],
"state" => options[:state],
"date_registered" => options[:date_registered],
"date_updated" => options[:date_updated],
"provider_id" => options[:provider_id],
"client_id" => options[:client_id],
"depositor" => options[:depositor],
"email" => options[:email],
"registrant" => options[:registrant],
"content_url" => options[:content_url],
"creators" => options[:creators],
"contributors" => options[:contributors],
"titles" => options[:titles],
"publisher" => options[:publisher],
"publication_year" => options[:publication_year] }
string = options[:input]
@from = options[:from] || find_from_format(string: string)
end
string = string.force_encoding("UTF-8") if string.present?
@string = string
@style = options[:style]
@locale = options[:locale]
@sandbox = options[:sandbox]
@url = hsh.to_h["url"].presence || options[:url].presence
@state = hsh.to_h["state"].presence
@date_registered = hsh.to_h["date_registered"].presence
@date_updated = hsh.to_h["date_updated"].presence
@provider_id = hsh.to_h["provider_id"].presence
@client_id = hsh.to_h["client_id"].presence
@content_url = hsh.to_h["content_url"].presence
@depositor = hsh.to_h["depositor"].presence
@email = hsh.to_h["email"].presence
@registrant = hsh.to_h["registrant"].presence
read_options = options.slice(
:creators,
:contributors,
:titles,
:types,
:identifiers,
:container,
:publisher,
:funding_references,
:dates,
:publication_year,
:descriptions,
:rights_list,
:version_info,
:subjects,
:language,
:geo_locations,
:related_identifiers,
:related_items,
:formats,
:sizes
).compact
@regenerate = options[:regenerate] || read_options.present?
opts = { string: string, sandbox: options[:sandbox], doi: options[:doi], id: id, ra: ra }.merge(read_options)
@meta = @from.present? ? send("read_" + @from, **opts) : {}
end
|
Instance Attribute Details
#agency ⇒ Object
257
258
259
|
# File 'lib/briard/metadata.rb', line 257
def agency
@agency ||= meta.fetch("agency", nil)
end
|
#client_id ⇒ Object
164
165
166
|
# File 'lib/briard/metadata.rb', line 164
def client_id
@client_id ||= meta.fetch("client_id", nil)
end
|
#container ⇒ Object
233
234
235
|
# File 'lib/briard/metadata.rb', line 233
def container
@container ||= meta.fetch("container", nil)
end
|
#content_url ⇒ Object
253
254
255
|
# File 'lib/briard/metadata.rb', line 253
def content_url
@content_url ||= meta.fetch("content_url", nil)
end
|
#contributor=(value) ⇒ Object
Sets the attribute contributor
11
12
13
|
# File 'lib/briard/metadata.rb', line 11
def contributor=(value)
@contributor = value
end
|
#contributors ⇒ Object
281
282
283
|
# File 'lib/briard/metadata.rb', line 281
def contributors
@contributors ||= meta.fetch("contributors", nil)
end
|
#creators ⇒ Object
277
278
279
|
# File 'lib/briard/metadata.rb', line 277
def creators
@creators ||= meta.fetch("creators", nil)
end
|
#date_registered ⇒ Object
265
266
267
|
# File 'lib/briard/metadata.rb', line 265
def date_registered
@date_registered ||= meta.fetch("date_registered", nil)
end
|
#dates ⇒ Object
241
242
243
|
# File 'lib/briard/metadata.rb', line 241
def dates
@dates ||= meta.fetch("dates", nil)
end
|
#depositor ⇒ Object
140
141
142
|
# File 'lib/briard/metadata.rb', line 140
def depositor
@depositor
end
|
#descriptions ⇒ Object
181
182
183
|
# File 'lib/briard/metadata.rb', line 181
def descriptions
@descriptions ||= meta.fetch("descriptions", nil)
end
|
#doc ⇒ Object
Returns the value of attribute doc.
10
11
12
|
# File 'lib/briard/metadata.rb', line 10
def doc
@doc
end
|
#doi ⇒ Object
156
157
158
|
# File 'lib/briard/metadata.rb', line 156
def doi
@doi ||= meta.fetch("doi", nil)
end
|
#email ⇒ Object
144
145
146
|
# File 'lib/briard/metadata.rb', line 144
def email
@email
end
|
Sets the attribute format
11
12
13
|
# File 'lib/briard/metadata.rb', line 11
def format=(value)
@format = value
end
|
201
202
203
|
# File 'lib/briard/metadata.rb', line 201
def formats
@formats ||= meta.fetch("formats", nil)
end
|
#from ⇒ Object
Returns the value of attribute from.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def from
@from
end
|
#funding_references ⇒ Object
209
210
211
|
# File 'lib/briard/metadata.rb', line 209
def funding_references
@funding_references ||= meta.fetch("funding_references", nil)
end
|
#geo_locations ⇒ Object
237
238
239
|
# File 'lib/briard/metadata.rb', line 237
def geo_locations
@geo_locations ||= meta.fetch("geo_locations", nil)
end
|
#id ⇒ Object
152
153
154
|
# File 'lib/briard/metadata.rb', line 152
def id
@id ||= meta.fetch("id", nil)
end
|
#identifiers ⇒ Object
249
250
251
|
# File 'lib/briard/metadata.rb', line 249
def identifiers
@identifiers ||= meta.fetch("identifiers", nil)
end
|
#issue ⇒ Object
Returns the value of attribute issue.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def issue
@issue
end
|
#language ⇒ Object
193
194
195
|
# File 'lib/briard/metadata.rb', line 193
def language
@language ||= meta.fetch("language", nil)
end
|
#locale=(value) ⇒ Object
Sets the attribute locale
11
12
13
|
# File 'lib/briard/metadata.rb', line 11
def locale=(value)
@locale = value
end
|
Returns the value of attribute meta.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def meta
@meta
end
|
#page_end ⇒ Object
Returns the value of attribute page_end.
10
11
12
|
# File 'lib/briard/metadata.rb', line 10
def page_end
@page_end
end
|
#page_start ⇒ Object
Returns the value of attribute page_start.
10
11
12
|
# File 'lib/briard/metadata.rb', line 10
def page_start
@page_start
end
|
#provider_id ⇒ Object
160
161
162
|
# File 'lib/briard/metadata.rb', line 160
def provider_id
@provider_id ||= meta.fetch("provider_id", nil)
end
|
#publication_year ⇒ Object
229
230
231
|
# File 'lib/briard/metadata.rb', line 229
def publication_year
@publication_year ||= meta.fetch("publication_year", nil)
end
|
#publisher ⇒ Object
245
246
247
|
# File 'lib/briard/metadata.rb', line 245
def publisher
@publisher ||= meta.fetch("publisher", nil)
end
|
#regenerate ⇒ Object
Returns the value of attribute regenerate.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def regenerate
@regenerate
end
|
#registrant ⇒ Object
148
149
150
|
# File 'lib/briard/metadata.rb', line 148
def registrant
@registrant
end
|
213
214
215
|
# File 'lib/briard/metadata.rb', line 213
def related_identifiers
@related_identifiers ||= meta.fetch("related_identifiers", nil)
end
|
217
218
219
|
# File 'lib/briard/metadata.rb', line 217
def related_items
@related_items ||= meta.fetch("related_items", nil)
end
|
#rights_list ⇒ Object
185
186
187
|
# File 'lib/briard/metadata.rb', line 185
def rights_list
@rights_list ||= meta.fetch("rights_list", nil)
end
|
#sandbox ⇒ Object
Returns the value of attribute sandbox.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def sandbox
@sandbox
end
|
#schema_version ⇒ Object
205
206
207
|
# File 'lib/briard/metadata.rb', line 205
def schema_version
@schema_version ||= meta.fetch("schema_version", nil)
end
|
#show_errors ⇒ Object
Returns the value of attribute show_errors.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def show_errors
@show_errors
end
|
#sizes ⇒ Object
197
198
199
|
# File 'lib/briard/metadata.rb', line 197
def sizes
@sizes ||= meta.fetch("sizes", nil)
end
|
#state ⇒ Object
261
262
263
|
# File 'lib/briard/metadata.rb', line 261
def state
@state ||= meta.fetch("state", nil)
end
|
#string ⇒ Object
Returns the value of attribute string.
9
10
11
|
# File 'lib/briard/metadata.rb', line 9
def string
@string
end
|
#style=(value) ⇒ Object
11
12
13
|
# File 'lib/briard/metadata.rb', line 11
def style=(value)
@style = value
end
|
#subjects ⇒ Object
189
190
191
|
# File 'lib/briard/metadata.rb', line 189
def subjects
@subjects ||= meta.fetch("subjects", nil)
end
|
#titles ⇒ Object
273
274
275
|
# File 'lib/briard/metadata.rb', line 273
def titles
@titles ||= meta.fetch("titles", nil)
end
|
#types ⇒ Object
269
270
271
|
# File 'lib/briard/metadata.rb', line 269
def types
@types ||= meta.fetch("types", nil)
end
|
#url ⇒ Object
221
222
223
|
# File 'lib/briard/metadata.rb', line 221
def url
@url ||= meta.fetch("url", nil)
end
|
#version_info ⇒ Object
225
226
227
|
# File 'lib/briard/metadata.rb', line 225
def version_info
@version_info ||= meta.fetch("version_info", nil) || meta.fetch("version", nil)
end
|
#volume=(value) ⇒ Object
Sets the attribute volume
11
12
13
|
# File 'lib/briard/metadata.rb', line 11
def volume=(value)
@volume = value
end
|
Instance Method Details
#errors ⇒ Object
validate against DataCite schema, unless already errors in the reader
177
178
179
|
# File 'lib/briard/metadata.rb', line 177
def errors
meta.fetch("errors", nil) || datacite_errors(xml: datacite, schema_version: schema_version)
end
|
#exists? ⇒ Boolean
168
169
170
|
# File 'lib/briard/metadata.rb', line 168
def exists?
(@state || meta.fetch("state", nil)) != "not_found"
end
|
#valid? ⇒ Boolean
172
173
174
|
# File 'lib/briard/metadata.rb', line 172
def valid?
exists? && errors.nil?
end
|