Class: Puree::XMLExtractor::Publication
Overview
Publication XML extractor.
Instance Method Summary
collapse
#workflow_state
#external_organisations
#associated
Methods inherited from Resource
#created, #get_data?, #locale, #modified, #uuid, #xpath_query
Methods inherited from Base
#xpath_query_for_multi_value, #xpath_query_for_single_value
Constructor Details
Returns a new instance of Publication.
12
13
14
15
|
# File 'lib/puree/xml_extractor/publication.rb', line 12
def initialize(xml:)
@resource_type = :publication
super
end
|
Instance Method Details
#bibliographical_note ⇒ String?
18
19
20
|
# File 'lib/puree/xml_extractor/publication.rb', line 18
def bibliographical_note
xpath_query_for_single_value('/bibliographicalNote')
end
|
#category ⇒ String?
23
24
25
|
# File 'lib/puree/xml_extractor/publication.rb', line 23
def category
xpath_query_for_single_value '/publicationCategory/publicationCategory/term/localizedString'
end
|
#description ⇒ String?
28
29
30
|
# File 'lib/puree/xml_extractor/publication.rb', line 28
def description
xpath_query_for_single_value '/abstract/localizedString'
end
|
#doi ⇒ String?
33
34
35
36
|
# File 'lib/puree/xml_extractor/publication.rb', line 33
def doi
multiple_dois = dois
multiple_dois.empty? ? nil : multiple_dois.first
end
|
#dois ⇒ Array<String>?
40
41
42
|
# File 'lib/puree/xml_extractor/publication.rb', line 40
def dois
xpath_query_for_multi_value '/electronicVersionAssociations/electronicVersionDOIAssociations/electronicVersionDOIAssociation/doi'
end
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/puree/xml_extractor/publication.rb', line 45
def files
xpath_result = xpath_query '/electronicVersionAssociations/electronicVersionFileAssociations/electronicVersionFileAssociation'
docs = []
xpath_result.each do |d|
model = Puree::Model::File.new
model.name = d.xpath('file/fileName').text.strip
model.mime = d.xpath('file/mimeType').text.strip
model.size = d.xpath('file/size').text.strip.to_i
model.url = d.xpath('file/url').text.strip
document_license = d.xpath('licenseType')
if !document_license.empty?
license = Puree::Model::CopyrightLicense.new
license.name = document_license.xpath('term/localizedString').text.strip
license.url = document_license.xpath('description/localizedString').text.strip
model.license = license if license.data?
end
docs << model
end
docs.uniq { |d| d.url }
end
|
#keywords ⇒ Array<String>
67
68
69
70
71
|
# File 'lib/puree/xml_extractor/publication.rb', line 67
def keywords
xpath_result = xpath_query '/keywordGroups/keywordGroup/keyword/userDefinedKeyword/freeKeyword'
data_arr = xpath_result.map { |i| i.text.strip }
data_arr.uniq
end
|
#language ⇒ String?
74
75
76
|
# File 'lib/puree/xml_extractor/publication.rb', line 74
def language
xpath_query_for_single_value '/language/term/localizedString'
end
|
#links ⇒ Array<String>?
79
80
81
|
# File 'lib/puree/xml_extractor/publication.rb', line 79
def links
xpath_query_for_multi_value '/electronicVersionAssociations/electronicVersionLinkAssociations/electronicVersionLinkAssociation/link'
end
|
84
85
86
87
|
# File 'lib/puree/xml_extractor/publication.rb', line 84
def organisations
xpath_result = xpath_query '/organisations/association/organisation'
Puree::::Shared. xpath_result
end
|
90
91
92
93
|
# File 'lib/puree/xml_extractor/publication.rb', line 90
def owner
xpath_result = xpath_query '/owner'
Puree::::Shared. xpath_result
end
|
101
102
103
|
# File 'lib/puree/xml_extractor/publication.rb', line 101
def persons_external
persons 'external'
end
|
96
97
98
|
# File 'lib/puree/xml_extractor/publication.rb', line 96
def persons_internal
persons 'internal'
end
|
106
107
108
|
# File 'lib/puree/xml_extractor/publication.rb', line 106
def persons_other
persons 'other'
end
|
#publication_place ⇒ String?
111
112
113
114
115
116
|
# File 'lib/puree/xml_extractor/publication.rb', line 111
def publication_place
xpath_result = xpath_query_for_single_value '/associatedPublisher/placeOfPublication'
xpath_result = xpath_query_for_single_value '/associatedPublishers/placeOfPublication' if !xpath_result
xpath_result
end
|
#publisher ⇒ String?
119
120
121
122
123
124
|
# File 'lib/puree/xml_extractor/publication.rb', line 119
def publisher
xpath_result = xpath_query_for_single_value '/associatedPublisher/publisher/name'
xpath_result = xpath_query_for_single_value '/associatedPublishers/publisher/name' if !xpath_result
xpath_result
end
|
#scopus_id ⇒ String?
127
128
129
130
131
132
133
134
|
# File 'lib/puree/xml_extractor/publication.rb', line 127
def scopus_id
xpath_result = xpath_query '/external/secondarySource'
return if xpath_result.empty?
source = xpath_result.xpath('@source')
if source && source.text.strip === 'Scopus'
return xpath_result.xpath('@source_id').text.strip
end
end
|
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# File 'lib/puree/xml_extractor/publication.rb', line 137
def statuses
xpath_result = xpath_query '/publicationStatuses/publicationStatus'
data = []
xpath_result.each do |i|
s = Puree::Model::PublicationStatus.new
s.stage = i.xpath('publicationStatus/term/localizedString').text.strip
ymd = {}
ymd['year'] = i.xpath('publicationDate/year').text.strip
ymd['month'] = i.xpath('publicationDate/month').text.strip
ymd['day'] = i.xpath('publicationDate/day').text.strip
s.date = Puree::Util::Date.hash_to_time ymd
data << s
end
data.uniq { |d| d.stage }
end
|
#subtitle ⇒ String?
157
158
159
|
# File 'lib/puree/xml_extractor/publication.rb', line 157
def subtitle
xpath_query_for_single_value '/subtitle'
end
|
#title ⇒ String?
162
163
164
|
# File 'lib/puree/xml_extractor/publication.rb', line 162
def title
xpath_query_for_single_value '/title'
end
|
#translated_subtitle ⇒ String?
167
168
169
|
# File 'lib/puree/xml_extractor/publication.rb', line 167
def translated_subtitle
xpath_query_for_single_value '/translatedSubtitle/localizedString'
end
|
#translated_title ⇒ String?
172
173
174
|
# File 'lib/puree/xml_extractor/publication.rb', line 172
def translated_title
xpath_query_for_single_value '/translatedTitle/localizedString'
end
|
#type ⇒ String?
177
178
179
|
# File 'lib/puree/xml_extractor/publication.rb', line 177
def type
xpath_query_for_single_value '/typeClassification/term/localizedString'
end
|