Module: Bolognese::MetadataUtils

Constant Summary

Constants included from Readers::SchemaOrgReader

Readers::SchemaOrgReader::SO_TO_DC_RELATION_TYPES

Constants included from Readers::RisReader

Readers::RisReader::RIS_TO_BIB_TRANSLATIONS, Readers::RisReader::RIS_TO_CP_TRANSLATIONS, Readers::RisReader::RIS_TO_SO_TRANSLATIONS

Constants included from Readers::CrossrefReader

Readers::CrossrefReader::CONTACT_EMAIL

Constants included from Readers::CiteprocReader

Readers::CiteprocReader::CP_TO_RIS_TRANSLATIONS, Readers::CiteprocReader::CP_TO_SO_TRANSLATIONS

Constants included from Readers::BibtexReader

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

Methods included from Writers::TurtleWriter

#turtle

Methods included from Writers::SchemaOrgWriter

#schema_hsh, #schema_org

Methods included from Writers::RisWriter

#ris

Methods included from Writers::RdfXmlWriter

#rdf_xml

Methods included from Writers::JatsWriter

#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

Methods included from Writers::DataciteJsonWriter

#datacite_json

Methods included from Writers::DataciteWriter

#datacite

Methods included from Writers::CrossrefWriter

#crossref

Methods included from Writers::CrossciteWriter

#crosscite

Methods included from Writers::CodemetaWriter

#codemeta

Methods included from Writers::CiteprocWriter

#citeproc

Methods included from Writers::CitationWriter

#citation

Methods included from Writers::BibtexWriter

#bibtex

Methods included from Readers::SchemaOrgReader

#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

Methods included from Readers::RisReader

#read_ris, #ris_meta

Methods included from Readers::DataciteJsonReader

#read_datacite_json

Methods included from Readers::DataciteReader

#get_datacite, #read_datacite, #set_periodical

Methods included from Readers::CrossrefReader

#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

Methods included from Readers::CrossciteReader

#read_crosscite

Methods included from Readers::CodemetaReader

#get_codemeta, #read_codemeta

Methods included from Readers::CiteprocReader

#read_citeproc

Methods included from Readers::BibtexReader

#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_datacite_json, #from_schema_org, #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_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_datacite_json, #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

Methods included from DataciteUtils

#datacite_errors, #datacite_xml, #insert_alternate_identifiers, #insert_contributors, #insert_creators, #insert_dates, #insert_descriptions, #insert_funding_references, #insert_identifier, #insert_person, #insert_publication_year, #insert_publisher, #insert_related_identifiers, #insert_resource_type, #insert_rights_list, #insert_subjects, #insert_titles, #insert_version, #insert_work, #root_attributes

Methods included from AuthorUtils

#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

#docObject (readonly)

Returns the value of attribute doc.



65
66
67
# File 'lib/bolognese/metadata_utils.rb', line 65

def doc
  @doc
end

#fromObject

Returns the value of attribute from.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def from
  @from
end

#issueObject

Returns the value of attribute issue.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def issue
  @issue
end

#localeObject



154
155
156
# File 'lib/bolognese/metadata_utils.rb', line 154

def locale
  @locale ||= "en-US"
end

#metaObject

Returns the value of attribute meta.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def meta
  @meta
end

#name_detectorObject (readonly)

recognize given name. Can be loaded once as ::NameDetector, e.g. in a Rails initializer



106
107
108
# File 'lib/bolognese/metadata_utils.rb', line 106

def name_detector
  @name_detector
end

#page_endObject (readonly)

Returns the value of attribute page_end.



65
66
67
# File 'lib/bolognese/metadata_utils.rb', line 65

def page_end
  @page_end
end

#page_startObject (readonly)

Returns the value of attribute page_start.



65
66
67
# File 'lib/bolognese/metadata_utils.rb', line 65

def page_start
  @page_start
end

#regenerateObject

Returns the value of attribute regenerate.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def regenerate
  @regenerate
end

#reverseObject (readonly)

Returns the value of attribute reverse.



65
66
67
# File 'lib/bolognese/metadata_utils.rb', line 65

def reverse
  @reverse
end

#sandboxObject

Returns the value of attribute sandbox.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def sandbox
  @sandbox
end

#stringObject

Returns the value of attribute string.



64
65
66
# File 'lib/bolognese/metadata_utils.rb', line 64

def string
  @string
end

#styleObject



150
151
152
# File 'lib/bolognese/metadata_utils.rb', line 150

def style
  @style ||= "apa"
end

Instance Method Details

#citeproc_hshObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/bolognese/metadata_utils.rb', line 127

def citeproc_hsh
  {
    "type" => types["citeproc"],
    "id" => identifier,
    "categories" => Array.wrap(subjects).map { |k| parse_attributes(k, content: "subject", first: true) }.presence,
    "language" => language,
    "author" => to_citeproc(creator),
    "contributor" => to_citeproc(contributor),
    "issued" => get_date(dates, "Issued") ? get_date_parts(get_date(dates, "Issued")) : nil,
    "submitted" => Array.wrap(dates).find { |d| d["dateType"] == "Submitted" }.to_h.fetch("__content__", nil),
    "abstract" => parse_attributes(descriptions, content: "description", first: true),
    "container-title" => container_title,
    "DOI" => doi,
    "issue" => issue,
    "page" => [first_page, last_page].compact.join("-").presence,
    "publisher" => publisher,
    "title" => parse_attributes(titles, content: "title", first: true),
    "URL" => url,
    "version" => version,
    "volume" => volume
  }.compact.symbolize_keys
end

#container_titleObject



95
96
97
98
99
100
101
102
103
# File 'lib/bolognese/metadata_utils.rb', line 95

def container_title
  if periodical.present?
    periodical["title"]
  elsif types["citeproc"] == "article-journal"
    publisher
  else
    nil
  end
end

#first_pageObject



87
88
89
# File 'lib/bolognese/metadata_utils.rb', line 87

def first_page
  @first_page ||= meta.fetch("first_page", nil)
end

#graphObject



123
124
125
# File 'lib/bolognese/metadata_utils.rb', line 123

def graph
  RDF::Graph.new << JSON::LD::API.toRdf(schema_hsh)
end

#last_pageObject



91
92
93
# File 'lib/bolognese/metadata_utils.rb', line 91

def last_page
  @last_page ||= meta.fetch("last_page", nil)
end

#rawObject

replace DOI in XML if provided in options



69
70
71
72
73
74
75
76
77
# File 'lib/bolognese/metadata_utils.rb', line 69

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_passthruObject



79
80
81
# File 'lib/bolognese/metadata_utils.rb', line 79

def should_passthru
  (from == "datacite") && regenerate.blank? && raw.present?
end

#volumeObject



83
84
85
# File 'lib/bolognese/metadata_utils.rb', line 83

def volume
  @volume ||= meta.fetch("volume", nil)
end