puree 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +49 -3
- data/lib/puree/api/map.rb +4 -0
- data/lib/puree/extractor/collection.rb +1 -1
- data/lib/puree/extractor/external_organisation.rb +28 -0
- data/lib/puree/extractor/person.rb +1 -0
- data/lib/puree/extractor/resource.rb +4 -4
- data/lib/puree/model/external_organisation.rb +16 -0
- data/lib/puree/model/person.rb +3 -0
- data/lib/puree/query/funding.rb +69 -0
- data/lib/puree/query/person.rb +121 -0
- data/lib/puree/query/query.rb +6 -0
- data/lib/puree/version.rb +1 -1
- data/lib/puree/xml_extractor/external_organisation.rb +28 -0
- data/lib/puree/xml_extractor/person.rb +12 -0
- data/lib/puree.rb +6 -0
- data/spec/query/funding_http_spec.rb +29 -0
- data/spec/query/person_http_spec.rb +30 -0
- data/spec/resource/person_http_spec.rb +4 -0
- data/spec/spec_helper.rb +6 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5f9f37e95e788189e6f4acb7a066e5732e157e8
|
4
|
+
data.tar.gz: b1f37ec7f78e5adef5d0443f565b5526bc2f85c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7356834acf18066281420d8794360b747828f684fe7a709f22b01a38f4cc2c67768a66aa7f72f4b3b7c7b227014115a8eae66d22e1f77221e892b5ecfc56b33d
|
7
|
+
data.tar.gz: 499e3b30bedd4b2d08c957f041fd070488a63af104f5bcc06689f3df2a0086e6b290d35c2e39370c9c43aafbe5785f43439e6eacaf6aa2aabfea2e92de803560
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
5
5
|
## Unreleased
|
6
6
|
- Metadata: activity?, clipping?, externalPerson?
|
7
7
|
|
8
|
+
## 1.6.0 - 2017-10-24
|
9
|
+
### Added
|
10
|
+
- ExternalOrganisation.
|
11
|
+
- Person - employee_id.
|
12
|
+
- Query - Person - publication_count, publications.
|
13
|
+
- Query - Funding - project_funders, publication_funders.
|
14
|
+
|
8
15
|
## 1.5.0 - 2017-10-03
|
9
16
|
### Added
|
10
17
|
- Dataset, Publication - workflow_state.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Purée
|
1
|
+
# Purée
|
2
2
|
|
3
3
|
Metadata extraction from the Pure Research Information System.
|
4
4
|
|
@@ -92,7 +92,7 @@ collection_extractor = Puree::Extractor::Collection.new config: config,
|
|
92
92
|
Fetch a bunch of resources.
|
93
93
|
|
94
94
|
```ruby
|
95
|
-
|
95
|
+
collection_extractor.find limit: 2
|
96
96
|
# =>
|
97
97
|
#<Puree::Model::Dataset:0xa62fd90>
|
98
98
|
#<Puree::Model::Dataset:0xa5e8c24>
|
@@ -101,7 +101,53 @@ dataset_collection = collection_extractor.find limit: 2
|
|
101
101
|
Fetch a random resource from the entire collection.
|
102
102
|
|
103
103
|
```ruby
|
104
|
-
|
104
|
+
collection_extractor.random_resource
|
105
105
|
# =>
|
106
106
|
#<Puree::Model::Dataset:0x97998bc>
|
107
|
+
```
|
108
|
+
|
109
|
+
### Query
|
110
|
+
|
111
|
+
Get answers to important questions.
|
112
|
+
|
113
|
+
#### Funding
|
114
|
+
|
115
|
+
Configure a funding query to retrieve data from a Pure host.
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
funding_query = Puree::Query::Funding.new config
|
119
|
+
```
|
120
|
+
|
121
|
+
Who are the funders (if any) for a project?
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
funding_query.project_funders uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
|
125
|
+
# =>
|
126
|
+
#<Puree::Model::ExternalOrganisation:0x98986f0>
|
127
|
+
```
|
128
|
+
|
129
|
+
Who are the funders (if any) for a publication, via a project?
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
funding_query.publication_funders uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
|
133
|
+
```
|
134
|
+
|
135
|
+
#### Person
|
136
|
+
|
137
|
+
Configure a person query to retrieve data from a Pure host.
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
person_query = Puree::Query::Person.new config
|
141
|
+
```
|
142
|
+
|
143
|
+
Get at most ten publications published by a person during the first six months of 2017.
|
144
|
+
|
145
|
+
```ruby
|
146
|
+
person_query.publications uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx',
|
147
|
+
limit: 10,
|
148
|
+
published_start: '2017-01-01',
|
149
|
+
published_end: '2017-06-30'
|
150
|
+
# =>
|
151
|
+
#<Puree::Model::Publication:0x9d2c004>
|
152
|
+
#<Puree::Model::Publication:0xa285028>
|
107
153
|
```
|
data/lib/puree/api/map.rb
CHANGED
@@ -86,7 +86,7 @@ module Puree
|
|
86
86
|
|
87
87
|
def collect_resources
|
88
88
|
data = []
|
89
|
-
resource_class = "Puree::Extractor::#{@resource_type
|
89
|
+
resource_class = "Puree::Extractor::#{Puree::Util::String.titleize(@resource_type)}"
|
90
90
|
|
91
91
|
# whitelist symbol
|
92
92
|
if @api_map[:resource_type].has_key?(@resource_type)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Puree
|
2
|
+
|
3
|
+
module Extractor
|
4
|
+
|
5
|
+
# External organisation extractor.
|
6
|
+
#
|
7
|
+
class ExternalOrganisation < Puree::Extractor::Resource
|
8
|
+
|
9
|
+
# @option (see Puree::Extractor::Resource#initialize)
|
10
|
+
def initialize(config)
|
11
|
+
super
|
12
|
+
setup :external_organisation
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def combine_metadata
|
18
|
+
super
|
19
|
+
@model.name = @extractor.name
|
20
|
+
@model.type = @extractor.type
|
21
|
+
@model
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -18,6 +18,7 @@ module Puree
|
|
18
18
|
super
|
19
19
|
@model.affiliations = @extractor.affiliations
|
20
20
|
@model.email_addresses = @extractor.email_addresses
|
21
|
+
@model.employee_id = @extractor.employee_id
|
21
22
|
@model.image_urls = @extractor.image_urls
|
22
23
|
@model.keywords = @extractor.keywords
|
23
24
|
@model.name = @extractor.name
|
@@ -48,18 +48,18 @@ module Puree
|
|
48
48
|
def setup(resource)
|
49
49
|
@resource_type = resource
|
50
50
|
if @model_type
|
51
|
-
resource_class = "Puree::Model::#{Puree::Util::String.titleize(@model_type
|
51
|
+
resource_class = "Puree::Model::#{Puree::Util::String.titleize(@model_type)}"
|
52
52
|
else
|
53
|
-
resource_class = "Puree::Model::#{resource
|
53
|
+
resource_class = "Puree::Model::#{Puree::Util::String.titleize(resource)}"
|
54
54
|
end
|
55
55
|
@model = Object.const_get(resource_class).new
|
56
56
|
end
|
57
57
|
|
58
58
|
def make_xml_extractor xml
|
59
59
|
if @model_type
|
60
|
-
resource_class = "Puree::XMLExtractor::#{Puree::Util::String.titleize(@model_type
|
60
|
+
resource_class = "Puree::XMLExtractor::#{Puree::Util::String.titleize(@model_type)}"
|
61
61
|
else
|
62
|
-
resource_class = "Puree::XMLExtractor::#{@resource_type
|
62
|
+
resource_class = "Puree::XMLExtractor::#{Puree::Util::String.titleize(@resource_type)}"
|
63
63
|
end
|
64
64
|
@extractor = Object.const_get(resource_class).new xml: xml
|
65
65
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Puree
|
2
|
+
module Model
|
3
|
+
|
4
|
+
# An external organisational unit as defined by the institution.
|
5
|
+
#
|
6
|
+
class ExternalOrganisation < Resource
|
7
|
+
|
8
|
+
# @return [String, nil]
|
9
|
+
attr_accessor :name
|
10
|
+
|
11
|
+
# @return [String, nil]
|
12
|
+
attr_accessor :type
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/puree/model/person.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
module Puree
|
2
|
+
|
3
|
+
module Query
|
4
|
+
|
5
|
+
# For querying information about funding.
|
6
|
+
#
|
7
|
+
class Funding
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
@config = config
|
11
|
+
end
|
12
|
+
|
13
|
+
# Project funders
|
14
|
+
# @param uuid [String] Project UUID.
|
15
|
+
# @return [Array<Puree::Model::ExternalOrganisation>] List of funders which have funded this project.
|
16
|
+
def project_funders(uuid:)
|
17
|
+
funders = []
|
18
|
+
project_extractor = Puree::Extractor::Project.new @config
|
19
|
+
project = project_extractor.find uuid: uuid
|
20
|
+
if project
|
21
|
+
if project.funded
|
22
|
+
project.external_organisations.each do |org|
|
23
|
+
external_organisation_extractor = Puree::Extractor::ExternalOrganisation.new @config
|
24
|
+
external_organisation = external_organisation_extractor.find uuid: org.uuid
|
25
|
+
funders << external_organisation if external_organisation.type == '/dk/atira/pure/ueoexternalorganisation/ueoexternalorganisationtypes/ueoexternalorganisation/researchFundingBody'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
deduplicate_funders funders
|
30
|
+
end
|
31
|
+
|
32
|
+
# Publication funders
|
33
|
+
# @param uuid [String] Publication UUID.
|
34
|
+
# @return [Array<Puree::Model::ExternalOrganisation>] List of funders which have funded this publication via a project.
|
35
|
+
def publication_funders(uuid:)
|
36
|
+
funders = []
|
37
|
+
publication_extractor = Puree::Extractor::Publication.new @config
|
38
|
+
publication = publication_extractor.find uuid: uuid
|
39
|
+
if publication
|
40
|
+
publication.associated.each do |associated|
|
41
|
+
if associated.type == 'Research'
|
42
|
+
single_project_funders = project_funders uuid: associated.uuid
|
43
|
+
funders += single_project_funders
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
deduplicate_funders funders
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def deduplicate_funders(funders)
|
53
|
+
uuids_in_list = []
|
54
|
+
funder_list = []
|
55
|
+
funders.each do |funder|
|
56
|
+
uuid = funder.uuid
|
57
|
+
unless uuids_in_list.include? uuid
|
58
|
+
funder_list << funder
|
59
|
+
uuids_in_list << uuid
|
60
|
+
end
|
61
|
+
end
|
62
|
+
funder_list
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Puree
|
2
|
+
|
3
|
+
module Query
|
4
|
+
|
5
|
+
# For querying information about a person.
|
6
|
+
#
|
7
|
+
class Person
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
@url = config[:url]
|
11
|
+
@headers = {}
|
12
|
+
basic_auth username: config[:username],
|
13
|
+
password: config[:password]
|
14
|
+
@config = config
|
15
|
+
end
|
16
|
+
|
17
|
+
# Count of publications available for a person.
|
18
|
+
#
|
19
|
+
# @param uuid [String] person UUID.
|
20
|
+
# @return [Fixnum]
|
21
|
+
def publication_count(uuid:)
|
22
|
+
params = {}
|
23
|
+
params['associatedPersonUuids.uuid'] = uuid
|
24
|
+
params['rendering'] = :system
|
25
|
+
params['window.size'] = 0
|
26
|
+
headers
|
27
|
+
response = @req.get(build_publication_url, params: params)
|
28
|
+
doc = make_doc response.body
|
29
|
+
extract_publication_count doc
|
30
|
+
end
|
31
|
+
|
32
|
+
# Publications for a person.
|
33
|
+
#
|
34
|
+
# @param uuid [String] person UUID.
|
35
|
+
# @param limit [Fixnum]
|
36
|
+
# @param offset [Fixnum]
|
37
|
+
# @param published_start [String] using format YYYY-MM-DD
|
38
|
+
# @param published_end [String] using format YYYY-MM-DD
|
39
|
+
# @return [Array<Puree::Model::Publication>]
|
40
|
+
def publications(uuid:, limit:, offset: 0, published_start: nil, published_end: nil)
|
41
|
+
uuids = publication_uuids(uuid: uuid,
|
42
|
+
limit: limit,
|
43
|
+
offset: offset,
|
44
|
+
published_start: published_start,
|
45
|
+
published_end: published_end)
|
46
|
+
publications = []
|
47
|
+
uuids.each do |uuid|
|
48
|
+
publication_extractor = Puree::Extractor::Publication.new @config
|
49
|
+
publication = publication_extractor.find uuid: uuid
|
50
|
+
publications << publication if publication
|
51
|
+
end
|
52
|
+
publications
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def publication_uuids(uuid:, limit:, offset: 0, published_start: nil, published_end: nil)
|
59
|
+
params = {}
|
60
|
+
params['associatedPersonUuids.uuid'] = uuid
|
61
|
+
params['rendering'] = :system
|
62
|
+
params['window.size'] = limit.to_s
|
63
|
+
params['window.offset'] = offset if limit > 0
|
64
|
+
params['publicationDate.fromDate'] = published_start if published_start
|
65
|
+
params['publicationDate.toDate'] = published_end if published_end
|
66
|
+
headers
|
67
|
+
response = @req.get(build_publication_url, params: params)
|
68
|
+
doc = make_doc response.body
|
69
|
+
extract_publication_uuids doc
|
70
|
+
end
|
71
|
+
|
72
|
+
def make_doc(xml)
|
73
|
+
doc = Nokogiri::XML xml
|
74
|
+
doc.remove_namespaces!
|
75
|
+
doc
|
76
|
+
end
|
77
|
+
|
78
|
+
def extract_publication_count(doc)
|
79
|
+
doc.xpath('/GetPublicationResponse/count').text.strip.to_i
|
80
|
+
end
|
81
|
+
|
82
|
+
def extract_publication_uuids(doc)
|
83
|
+
records = doc.xpath('/GetPublicationResponse/result/renderedItem')
|
84
|
+
uuids = []
|
85
|
+
records.each do |record|
|
86
|
+
uuid = extract_publication_uuid record
|
87
|
+
uuids << uuid
|
88
|
+
end
|
89
|
+
uuids
|
90
|
+
end
|
91
|
+
|
92
|
+
def extract_publication_uuid(doc)
|
93
|
+
doc.xpath('@renderedContentUUID').text.strip
|
94
|
+
end
|
95
|
+
|
96
|
+
def build_publication_url
|
97
|
+
"#{@url}/publication.current"
|
98
|
+
end
|
99
|
+
|
100
|
+
# Provide credentials if necessary
|
101
|
+
#
|
102
|
+
# @param username [String]
|
103
|
+
# @param password [String]
|
104
|
+
def basic_auth(username:, password:)
|
105
|
+
auth = Base64::strict_encode64("#{username}:#{password}")
|
106
|
+
@headers['Authorization'] = 'Basic ' + auth
|
107
|
+
end
|
108
|
+
|
109
|
+
def headers
|
110
|
+
@headers['Accept'] = 'application/xml'
|
111
|
+
@req = HTTP.headers accept: @headers['Accept']
|
112
|
+
if @headers['Authorization']
|
113
|
+
@req = @req.auth @headers['Authorization']
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
data/lib/puree/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Puree
|
2
|
+
|
3
|
+
module XMLExtractor
|
4
|
+
|
5
|
+
# External organisation XML extractor.
|
6
|
+
#
|
7
|
+
class ExternalOrganisation < Puree::XMLExtractor::Resource
|
8
|
+
|
9
|
+
def initialize(xml:)
|
10
|
+
super
|
11
|
+
@resource_type = :external_organisation
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [String, nil]
|
15
|
+
def name
|
16
|
+
xpath_query_for_single_value '/name'
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [String, nil]
|
20
|
+
def type
|
21
|
+
xpath_query_for_single_value '/typeClassification/uri'
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -22,6 +22,18 @@ module Puree
|
|
22
22
|
xpath_query_for_multi_value '//emails/classificationDefinedStringFieldExtension/value'
|
23
23
|
end
|
24
24
|
|
25
|
+
# @return [String, nil]
|
26
|
+
def employee_id
|
27
|
+
xpath_result = xpath_query '/sources/classificationDefinedStringFieldExtension'
|
28
|
+
if xpath_result
|
29
|
+
xpath_result.each do |i|
|
30
|
+
if i.xpath('classification/uri').text.strip === '/dk/atira/pure/person/personsources/employee'
|
31
|
+
return i.xpath('value').text.strip
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
25
37
|
# @return [Array<String>]
|
26
38
|
def image_urls
|
27
39
|
xpath_query_for_multi_value '/photos/file/url'
|
data/lib/puree.rb
CHANGED
@@ -24,6 +24,7 @@ require 'puree/xml_extractor/download'
|
|
24
24
|
require 'puree/xml_extractor/event'
|
25
25
|
require 'puree/xml_extractor/journal'
|
26
26
|
require 'puree/xml_extractor/organisation'
|
27
|
+
require 'puree/xml_extractor/external_organisation'
|
27
28
|
require 'puree/xml_extractor/person'
|
28
29
|
require 'puree/xml_extractor/project'
|
29
30
|
|
@@ -52,6 +53,7 @@ require 'puree/model/dataset'
|
|
52
53
|
require 'puree/model/download_header'
|
53
54
|
require 'puree/model/event'
|
54
55
|
require 'puree/model/event_header'
|
56
|
+
require 'puree/model/external_organisation'
|
55
57
|
require 'puree/model/journal'
|
56
58
|
require 'puree/model/journal_header'
|
57
59
|
require 'puree/model/link'
|
@@ -88,6 +90,7 @@ require 'puree/model/temporal_range'
|
|
88
90
|
require 'puree/extractor/resource'
|
89
91
|
require 'puree/extractor/dataset'
|
90
92
|
require 'puree/extractor/event'
|
93
|
+
require 'puree/extractor/external_organisation'
|
91
94
|
require 'puree/extractor/journal'
|
92
95
|
require 'puree/extractor/organisation'
|
93
96
|
require 'puree/extractor/person'
|
@@ -107,6 +110,9 @@ require 'puree/extractor/collection'
|
|
107
110
|
require 'puree/extractor/download'
|
108
111
|
require 'puree/extractor/server'
|
109
112
|
|
113
|
+
require 'puree/query/funding'
|
114
|
+
require 'puree/query/person'
|
115
|
+
|
110
116
|
# Metadata extraction from the Pure Research Information System.
|
111
117
|
#
|
112
118
|
module Puree
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Funding' do
|
4
|
+
|
5
|
+
it '#new' do
|
6
|
+
q = Puree::Query::Funding.new config
|
7
|
+
expect(q).to be_a Puree::Query::Funding
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'project data retrieval' do
|
11
|
+
before(:all) do
|
12
|
+
request :project
|
13
|
+
@project_uuid = @p.uuid
|
14
|
+
@q = Puree::Query::Funding.new config
|
15
|
+
end
|
16
|
+
|
17
|
+
it '#project_funders' do
|
18
|
+
funders = @q.project_funders uuid: @project_uuid
|
19
|
+
expect(funders).to all( be_a Puree::Model::ExternalOrganisation )
|
20
|
+
end
|
21
|
+
|
22
|
+
it '#publication_funders' do
|
23
|
+
funders = @q.publication_funders uuid: @project_uuid
|
24
|
+
expect(funders).to all( be_a Puree::Model::ExternalOrganisation )
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Person' do
|
4
|
+
|
5
|
+
it '#new' do
|
6
|
+
q = Puree::Query::Person.new config
|
7
|
+
expect(q).to be_a Puree::Query::Person
|
8
|
+
end
|
9
|
+
|
10
|
+
before(:all) do
|
11
|
+
request :person
|
12
|
+
@person_uuid = @p.uuid
|
13
|
+
@q = Puree::Query::Person.new config
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'data retrieval' do
|
17
|
+
it '#publication_count' do
|
18
|
+
publication_count = @q.publication_count uuid: @person_uuid
|
19
|
+
expect(publication_count).to be_a Fixnum if publication_count
|
20
|
+
end
|
21
|
+
|
22
|
+
it '#publications' do
|
23
|
+
publications = @q.publications uuid: @person_uuid,
|
24
|
+
limit: 3
|
25
|
+
expect(publications).to all( be_a Puree::Model::Publication )
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -24,6 +24,7 @@ require 'puree/xml_extractor/download'
|
|
24
24
|
require 'puree/xml_extractor/event'
|
25
25
|
require 'puree/xml_extractor/journal'
|
26
26
|
require 'puree/xml_extractor/organisation'
|
27
|
+
require 'puree/xml_extractor/external_organisation'
|
27
28
|
require 'puree/xml_extractor/person'
|
28
29
|
require 'puree/xml_extractor/project'
|
29
30
|
|
@@ -52,6 +53,7 @@ require 'puree/model/dataset'
|
|
52
53
|
require 'puree/model/download_header'
|
53
54
|
require 'puree/model/event'
|
54
55
|
require 'puree/model/event_header'
|
56
|
+
require 'puree/model/external_organisation'
|
55
57
|
require 'puree/model/journal'
|
56
58
|
require 'puree/model/journal_header'
|
57
59
|
require 'puree/model/link'
|
@@ -88,6 +90,7 @@ require 'puree/model/temporal_range'
|
|
88
90
|
require 'puree/extractor/resource'
|
89
91
|
require 'puree/extractor/dataset'
|
90
92
|
require 'puree/extractor/event'
|
93
|
+
require 'puree/extractor/external_organisation'
|
91
94
|
require 'puree/extractor/journal'
|
92
95
|
require 'puree/extractor/organisation'
|
93
96
|
require 'puree/extractor/person'
|
@@ -107,6 +110,9 @@ require 'puree/extractor/collection'
|
|
107
110
|
require 'puree/extractor/download'
|
108
111
|
require 'puree/extractor/server'
|
109
112
|
|
113
|
+
require 'puree/query/funding'
|
114
|
+
require 'puree/query/person'
|
115
|
+
|
110
116
|
def config
|
111
117
|
{
|
112
118
|
url: ENV['PURE_URL'],
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Albin-Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/puree/extractor/doctoral_thesis.rb
|
78
78
|
- lib/puree/extractor/download.rb
|
79
79
|
- lib/puree/extractor/event.rb
|
80
|
+
- lib/puree/extractor/external_organisation.rb
|
80
81
|
- lib/puree/extractor/extractor.rb
|
81
82
|
- lib/puree/extractor/journal.rb
|
82
83
|
- lib/puree/extractor/journal_article.rb
|
@@ -100,6 +101,7 @@ files:
|
|
100
101
|
- lib/puree/model/endeavour_person.rb
|
101
102
|
- lib/puree/model/event.rb
|
102
103
|
- lib/puree/model/event_header.rb
|
104
|
+
- lib/puree/model/external_organisation.rb
|
103
105
|
- lib/puree/model/external_organisation_header.rb
|
104
106
|
- lib/puree/model/file.rb
|
105
107
|
- lib/puree/model/helper/validation.rb
|
@@ -127,6 +129,9 @@ files:
|
|
127
129
|
- lib/puree/model/structure.rb
|
128
130
|
- lib/puree/model/temporal_range.rb
|
129
131
|
- lib/puree/model/thesis.rb
|
132
|
+
- lib/puree/query/funding.rb
|
133
|
+
- lib/puree/query/person.rb
|
134
|
+
- lib/puree/query/query.rb
|
130
135
|
- lib/puree/util/date.rb
|
131
136
|
- lib/puree/util/string.rb
|
132
137
|
- lib/puree/util/util.rb
|
@@ -138,6 +143,7 @@ files:
|
|
138
143
|
- lib/puree/xml_extractor/doctoral_thesis.rb
|
139
144
|
- lib/puree/xml_extractor/download.rb
|
140
145
|
- lib/puree/xml_extractor/event.rb
|
146
|
+
- lib/puree/xml_extractor/external_organisation.rb
|
141
147
|
- lib/puree/xml_extractor/journal.rb
|
142
148
|
- lib/puree/xml_extractor/journal_article.rb
|
143
149
|
- lib/puree/xml_extractor/masters_thesis.rb
|
@@ -164,6 +170,8 @@ files:
|
|
164
170
|
- puree.gemspec
|
165
171
|
- spec/download_http_spec.rb
|
166
172
|
- spec/open_api_dataset_http_spec.rb
|
173
|
+
- spec/query/funding_http_spec.rb
|
174
|
+
- spec/query/person_http_spec.rb
|
167
175
|
- spec/resource/collection_all_http_spec.rb
|
168
176
|
- spec/resource/collection_http_spec.rb
|
169
177
|
- spec/resource/dataset_http_spec.rb
|
@@ -203,6 +211,8 @@ summary: Metadata extraction from the Pure Research Information System.
|
|
203
211
|
test_files:
|
204
212
|
- spec/download_http_spec.rb
|
205
213
|
- spec/open_api_dataset_http_spec.rb
|
214
|
+
- spec/query/funding_http_spec.rb
|
215
|
+
- spec/query/person_http_spec.rb
|
206
216
|
- spec/resource/collection_all_http_spec.rb
|
207
217
|
- spec/resource/collection_http_spec.rb
|
208
218
|
- spec/resource/dataset_http_spec.rb
|