Module: Bolognese::MetadataUtils
- Includes:
- AuthorUtils, DataciteUtils, DoiUtils, Readers::BibtexReader, Readers::CiteprocReader, Readers::CodemetaReader, Readers::CrossciteReader, Readers::CrossrefReader, Readers::DataciteJsonReader, Readers::DataciteReader, Readers::RisReader, Readers::SchemaOrgReader, Utils, Writers::BibtexWriter, Writers::CitationWriter, Writers::CiteprocWriter, Writers::CodemetaWriter, Writers::CrossciteWriter, Writers::CrossrefWriter, Writers::DataciteJsonWriter, Writers::DataciteWriter, Writers::JatsWriter, Writers::RdfXmlWriter, Writers::RisWriter, Writers::SchemaOrgWriter, Writers::TurtleWriter
- Included in:
- Metadata
- Defined in:
- lib/bolognese/metadata_utils.rb
Constant Summary
Readers::SchemaOrgReader::SO_TO_DC_RELATION_TYPES
Readers::RisReader::RIS_TO_BIB_TRANSLATIONS, Readers::RisReader::RIS_TO_CP_TRANSLATIONS, Readers::RisReader::RIS_TO_SO_TRANSLATIONS
Readers::CrossrefReader::CONTACT_EMAIL
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::CR_TO_BIB_TRANSLATIONS, Utils::CR_TO_CP_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::LICENSE_NAMES, 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
Constants included
from AuthorUtils
AuthorUtils::IDENTIFIER_SCHEME_URIS
Instance Attribute Summary collapse
Instance Method Summary
collapse
#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
#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
#read_datacite_json
#datacite_date, #datacite_funder_contributor, #datacite_funding_reference, #get_datacite, #read_datacite, #set_periodical
#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_id, #find_from_format_by_string, #from_citeproc, #from_schema_org, #get_date_from_date_parts, #get_date_from_parts, #get_date_parts, #get_date_parts_from_parts, #get_datetime_from_iso8601, #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, #jsonlint, #map_hash_keys, #normalize_id, #normalize_ids, #normalize_licenses, #normalize_orcid, #normalize_url, #orcid_as_url, #orcid_from_url, #parse_attributes, #sanitize, #to_citeproc, #to_identifier, #to_ris, #to_schema_org, #to_schema_org_container, #to_schema_org_funder, #to_schema_org_identifier, #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_date, #insert_dates, #insert_descriptions, #insert_funding_reference, #insert_funding_references, #insert_identifier, #insert_person, #insert_publication_year, #insert_publisher, #insert_related_identifiers, #insert_resource_type, #insert_rights_list, #insert_subjects, #insert_title, #insert_titles, #insert_version, #insert_work, #res_type, #root_attributes
#authors_as_string, #cleanup_author, #get_authors, #get_name_identifiers, #get_one_author, #is_personal_name?, #name_exists?
Methods included from DoiUtils
#doi_as_url, #doi_from_url, #doi_resolver, #doi_search, #get_doi_ra, #normalize_doi, #validate_doi, #validate_prefix
Instance Attribute Details
#additional_type ⇒ Object
94
95
96
|
# File 'lib/bolognese/metadata_utils.rb', line 94
def additional_type
@additional_type ||= meta.fetch("additional_type", nil)
end
|
#alternate_identifiers ⇒ Object
118
119
120
|
# File 'lib/bolognese/metadata_utils.rb', line 118
def alternate_identifiers
@alternate_identifiers ||= meta.fetch("alternate_identifiers", nil)
end
|
202
203
204
|
# File 'lib/bolognese/metadata_utils.rb', line 202
def b_format
@b_format ||= meta.fetch("b_format", nil)
end
|
#b_url ⇒ Object
218
219
220
|
# File 'lib/bolognese/metadata_utils.rb', line 218
def b_url
@b_url ||= meta.fetch("b_url", nil)
end
|
#b_version ⇒ Object
222
223
224
|
# File 'lib/bolognese/metadata_utils.rb', line 222
def b_version
@b_version ||= meta.fetch("b_version", nil)
end
|
#bibtex_type ⇒ Object
102
103
104
|
# File 'lib/bolognese/metadata_utils.rb', line 102
def bibtex_type
@bibtex_type ||= meta.fetch("bibtex_type", nil)
end
|
#citeproc_type ⇒ Object
98
99
100
|
# File 'lib/bolognese/metadata_utils.rb', line 98
def citeproc_type
@citeproc_type ||= meta.fetch("citeproc_type", nil)
end
|
#content_url ⇒ Object
122
123
124
|
# File 'lib/bolognese/metadata_utils.rb', line 122
def content_url
@content_url ||= meta.fetch("content_url", nil)
end
|
#contributor ⇒ Object
Returns the value of attribute contributor.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def contributor
@contributor
end
|
#creator ⇒ Object
134
135
136
|
# File 'lib/bolognese/metadata_utils.rb', line 134
def creator
@creator ||= meta.fetch("creator", nil)
end
|
#date_modified ⇒ Object
158
159
160
|
# File 'lib/bolognese/metadata_utils.rb', line 158
def date_modified
@date_modified ||= meta.fetch("date_modified", nil)
end
|
#date_published ⇒ Object
154
155
156
|
# File 'lib/bolognese/metadata_utils.rb', line 154
def date_published
@date_published ||= meta.fetch("date_published", nil)
end
|
#date_updated ⇒ Object
162
163
164
|
# File 'lib/bolognese/metadata_utils.rb', line 162
def date_updated
@date_updated ||= meta.fetch("date_updated", nil)
end
|
#dates ⇒ Object
150
151
152
|
# File 'lib/bolognese/metadata_utils.rb', line 150
def dates
@dates ||= meta.fetch("dates", nil)
end
|
#description ⇒ Object
182
183
184
|
# File 'lib/bolognese/metadata_utils.rb', line 182
def description
@description ||= meta.fetch("description", nil)
end
|
#doc ⇒ Object
Returns the value of attribute doc.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def doc
@doc
end
|
#editor ⇒ Object
138
139
140
|
# File 'lib/bolognese/metadata_utils.rb', line 138
def editor
@editor ||= meta.fetch("editor", nil)
end
|
#first_page ⇒ Object
174
175
176
|
# File 'lib/bolognese/metadata_utils.rb', line 174
def first_page
@first_page ||= meta.fetch("first_page", nil)
end
|
Sets the attribute format
66
67
68
|
# File 'lib/bolognese/metadata_utils.rb', line 66
def format=(value)
@format = value
end
|
#from ⇒ Object
Returns the value of attribute from.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def from
@from
end
|
#funding_references ⇒ Object
210
211
212
|
# File 'lib/bolognese/metadata_utils.rb', line 210
def funding_references
@funding_references ||= meta.fetch("funding_references", nil)
end
|
#geo_location ⇒ Object
166
167
168
|
# File 'lib/bolognese/metadata_utils.rb', line 166
def geo_location
@geo_location ||= meta.fetch("geo_location", nil)
end
|
#identifier ⇒ Object
114
115
116
|
# File 'lib/bolognese/metadata_utils.rb', line 114
def identifier
@identifier ||= meta.fetch("id", nil)
end
|
#issue ⇒ Object
Returns the value of attribute issue.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def issue
@issue
end
|
#journal=(value) ⇒ Object
Sets the attribute journal
66
67
68
|
# File 'lib/bolognese/metadata_utils.rb', line 66
def journal=(value)
@journal = value
end
|
#keywords ⇒ Object
190
191
192
|
# File 'lib/bolognese/metadata_utils.rb', line 190
def keywords
@keywords ||= meta.fetch("keywords", nil)
end
|
#language ⇒ Object
194
195
196
|
# File 'lib/bolognese/metadata_utils.rb', line 194
def language
@language ||= meta.fetch("language", nil)
end
|
#last_page ⇒ Object
178
179
180
|
# File 'lib/bolognese/metadata_utils.rb', line 178
def last_page
@last_page ||= meta.fetch("last_page", nil)
end
|
#locale ⇒ Object
287
288
289
|
# File 'lib/bolognese/metadata_utils.rb', line 287
def locale
@locale ||= "en-US"
end
|
Returns the value of attribute meta.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def meta
@meta
end
|
#name_detector ⇒ Object
recognize given name. Can be loaded once as ::NameDetector, e.g. in a Rails initializer
227
228
229
|
# File 'lib/bolognese/metadata_utils.rb', line 227
def name_detector
@name_detector
end
|
#page_end ⇒ Object
Returns the value of attribute page_end.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def page_end
@page_end
end
|
#page_start ⇒ Object
Returns the value of attribute page_start.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def page_start
@page_start
end
|
#periodical ⇒ Object
235
236
237
|
# File 'lib/bolognese/metadata_utils.rb', line 235
def periodical
@periodical ||= meta.fetch("periodical", nil)
end
|
#publisher ⇒ Object
142
143
144
|
# File 'lib/bolognese/metadata_utils.rb', line 142
def publisher
@publisher ||= meta.fetch("publisher", nil)
end
|
#regenerate ⇒ Object
Returns the value of attribute regenerate.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def regenerate
@regenerate
end
|
Returns the value of attribute related_identifier.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def related_identifier
@related_identifier
end
|
214
215
216
|
# File 'lib/bolognese/metadata_utils.rb', line 214
def related_identifiers
@related_identifiers ||= meta.fetch("related_identifiers", nil)
end
|
#resource_type_general ⇒ Object
110
111
112
|
# File 'lib/bolognese/metadata_utils.rb', line 110
def resource_type_general
@resource_type_general ||= meta.fetch("resource_type_general", nil)
end
|
#reverse ⇒ Object
Returns the value of attribute reverse.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def reverse
@reverse
end
|
#rights ⇒ Object
186
187
188
|
# File 'lib/bolognese/metadata_utils.rb', line 186
def rights
@rights ||= meta.fetch("rights", nil)
end
|
#ris_type ⇒ Object
106
107
108
|
# File 'lib/bolognese/metadata_utils.rb', line 106
def ris_type
@ris_type ||= meta.fetch("ris_type", nil)
end
|
#sandbox ⇒ Object
Returns the value of attribute sandbox.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def sandbox
@sandbox
end
|
#schema_version ⇒ Object
206
207
208
|
# File 'lib/bolognese/metadata_utils.rb', line 206
def schema_version
@schema_version ||= meta.fetch("schema_version", nil)
end
|
#service_provider ⇒ Object
Returns the value of attribute service_provider.
73
74
75
|
# File 'lib/bolognese/metadata_utils.rb', line 73
def service_provider
@service_provider
end
|
#size ⇒ Object
198
199
200
|
# File 'lib/bolognese/metadata_utils.rb', line 198
def size
@size ||= meta.fetch("size", nil)
end
|
#state ⇒ Object
126
127
128
|
# File 'lib/bolognese/metadata_utils.rb', line 126
def state
@state ||= meta.fetch("state", nil)
end
|
#string ⇒ Object
Returns the value of attribute string.
64
65
66
|
# File 'lib/bolognese/metadata_utils.rb', line 64
def string
@string
end
|
#style ⇒ Object
283
284
285
|
# File 'lib/bolognese/metadata_utils.rb', line 283
def style
@style ||= "apa"
end
|
#title ⇒ Object
130
131
132
|
# File 'lib/bolognese/metadata_utils.rb', line 130
def title
@title ||= meta.fetch("title", nil)
end
|
#type ⇒ Object
90
91
92
|
# File 'lib/bolognese/metadata_utils.rb', line 90
def type
@type ||= meta.fetch("type", nil)
end
|
#volume ⇒ Object
170
171
172
|
# File 'lib/bolognese/metadata_utils.rb', line 170
def volume
@volume ||= meta.fetch("volume", nil)
end
|
Instance Method Details
#citeproc_hsh ⇒ Object
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
# File 'lib/bolognese/metadata_utils.rb', line 260
def citeproc_hsh
{
"type" => citeproc_type,
"id" => identifier,
"categories" => Array.wrap(keywords).map { |k| parse_attributes(k, content: "text", first: true) }.presence,
"language" => language,
"author" => to_citeproc(creator),
"editor" => to_citeproc(editor),
"issued" => date_published ? get_date_parts(date_published) : nil,
"submitted" => Array.wrap(dates).find { |d| d["type"] == "Submitted" }.to_h.fetch("__content__", nil),
"abstract" => parse_attributes(description, content: "text", first: true),
"container-title" => periodical && periodical["title"],
"DOI" => doi,
"issue" => issue,
"page" => [first_page, last_page].compact.join("-").presence,
"publisher" => publisher,
"title" => parse_attributes(title, content: "text", first: true),
"URL" => b_url,
"version" => b_version,
"volume" => volume
}.compact.symbolize_keys
end
|
#descriptions ⇒ Object
239
240
241
|
# File 'lib/bolognese/metadata_utils.rb', line 239
def descriptions
Array.wrap(description)
end
|
#graph ⇒ Object
256
257
258
|
# File 'lib/bolognese/metadata_utils.rb', line 256
def graph
RDF::Graph.new << JSON::LD::API.toRdf(schema_hsh)
end
|
#publication_year ⇒ Object
231
232
233
|
# File 'lib/bolognese/metadata_utils.rb', line 231
def publication_year
date_published.present? ? date_published[0..3].to_i.presence : nil
end
|
#raw ⇒ Object
replace DOI in XML if provided in options
76
77
78
79
80
81
82
83
84
|
# File 'lib/bolognese/metadata_utils.rb', line 76
def raw
r = string.present? ? string.strip : nil
return r unless (from == "datacite" && r.present?)
doc = Nokogiri::XML(string, nil, 'UTF-8', &:noblanks)
node = doc.at_css("identifier")
node.content = doi.to_s.upcase if node.present? && doi.present?
doc.to_xml.strip
end
|
#should_passthru ⇒ Object
86
87
88
|
# File 'lib/bolognese/metadata_utils.rb', line 86
def should_passthru
(from == "datacite") && regenerate.blank? && raw.present?
end
|