qa 4.2.0 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/app/controllers/qa/linked_data_terms_controller.rb +17 -39
- data/app/controllers/qa/terms_controller.rb +26 -2
- data/app/services/qa/linked_data/authority_url_service.rb +35 -21
- data/app/services/qa/linked_data/graph_service.rb +2 -4
- data/app/services/qa/linked_data/request_header_service.rb +97 -0
- data/lib/qa/authorities/discogs/discogs_instance_builder.rb +17 -19
- data/lib/qa/authorities/discogs/discogs_translation.rb +26 -22
- data/lib/qa/authorities/discogs/discogs_utils.rb +32 -20
- data/lib/qa/authorities/discogs/discogs_works_builder.rb +26 -47
- data/lib/qa/authorities/discogs/generic_authority.rb +64 -33
- data/lib/qa/authorities/getty/tgn.rb +1 -1
- data/lib/qa/authorities/linked_data/find_term.rb +60 -18
- data/lib/qa/authorities/linked_data/search_query.rb +43 -15
- data/lib/qa/authorities/loc/generic_authority.rb +2 -2
- data/lib/qa/version.rb +1 -1
- data/spec/controllers/linked_data_terms_controller_spec.rb +36 -0
- data/spec/controllers/terms_controller_spec.rb +26 -2
- data/spec/fixtures/discogs-find-response-json.json +1 -1
- data/spec/lib/authorities/discogs/generic_authority_spec.rb +103 -9
- data/spec/lib/authorities/getty/tgn_spec.rb +2 -2
- data/spec/lib/authorities/linked_data/find_term_spec.rb +11 -11
- data/spec/lib/authorities/linked_data/search_query_spec.rb +9 -9
- data/spec/lib/authorities/loc_spec.rb +9 -9
- data/spec/services/linked_data/authority_url_service_spec.rb +14 -8
- data/spec/services/linked_data/graph_service_spec.rb +2 -1
- data/spec/services/linked_data/request_header_service_spec.rb +124 -0
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7e4ee1da3b72cee5194380a24b44e96793395d110cbe2234da55541da3f962c9
|
4
|
+
data.tar.gz: 27dffc56d77c9e583000c99823a31fe8c90f3591ea3de04935c4e476bda9d289
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1a1bc75bcde5877679a355e7afec3f992e869686f3c3c706d5e1ffee6ecdcc66c4be4a8572c9ca1c27b6b177b12b211debc8a579268037aff006872d3e9b5a
|
7
|
+
data.tar.gz: 789919e7a524d155d69ae2ca0203900cc0509f613d94d3b2b14ed697e2c80134b9d13dd56fb013c9db052069296955f4b948b43ff95ae10f93e4dd2ccbd643d6
|
@@ -7,9 +7,15 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
7
7
|
before_action :check_show_subauthority, :check_id_param, only: :show
|
8
8
|
before_action :check_uri_param, only: :fetch
|
9
9
|
before_action :validate_auth_reload_token, only: :reload
|
10
|
+
before_action :create_request_header_service, only: [:search, :show, :fetch]
|
10
11
|
|
11
12
|
delegate :cors_allow_origin_header, to: Qa::ApplicationController
|
12
13
|
|
14
|
+
class_attribute :request_header_service_class
|
15
|
+
self.request_header_service_class = Qa::LinkedData::RequestHeaderService
|
16
|
+
|
17
|
+
attr_reader :request_header_service
|
18
|
+
|
13
19
|
# Provide a warning if there is a request for all terms.
|
14
20
|
def index
|
15
21
|
logger.warn 'Linked data authorities do not support retrieving all terms.'
|
@@ -35,8 +41,8 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
35
41
|
# Return a list of terms based on a query
|
36
42
|
# get "/search/linked_data/:vocab(/:subauthority)"
|
37
43
|
# @see Qa::Authorities::LinkedData::SearchQuery#search
|
38
|
-
def search # rubocop:disable Metrics/MethodLength
|
39
|
-
terms = @authority.search(query,
|
44
|
+
def search # rubocop:disable Metrics/MethodLength
|
45
|
+
terms = @authority.search(query, request_header: request_header_service.search_header)
|
40
46
|
cors_allow_origin_header(response)
|
41
47
|
render json: terms
|
42
48
|
rescue Qa::ServiceUnavailable
|
@@ -59,10 +65,9 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
59
65
|
# get "/show/linked_data/:vocab/:subauthority/:id
|
60
66
|
# @see Qa::Authorities::LinkedData::FindTerm#find
|
61
67
|
def show # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
62
|
-
term = @authority.find(id,
|
68
|
+
term = @authority.find(id, request_header: request_header_service.fetch_header)
|
63
69
|
cors_allow_origin_header(response)
|
64
|
-
|
65
|
-
render json: term, content_type: content_type
|
70
|
+
render json: term, content_type: request_header_service.content_type_for_format
|
66
71
|
rescue Qa::TermNotFound
|
67
72
|
msg = "Term Not Found - Fetch term #{id} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}"
|
68
73
|
logger.warn msg
|
@@ -90,10 +95,9 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
90
95
|
# get "/fetch/linked_data/:vocab"
|
91
96
|
# @see Qa::Authorities::LinkedData::FindTerm#find
|
92
97
|
def fetch # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
93
|
-
term = @authority.find(uri,
|
98
|
+
term = @authority.find(uri, request_header: request_header_service.fetch_header)
|
94
99
|
cors_allow_origin_header(response)
|
95
|
-
|
96
|
-
render json: term, content_type: content_type
|
100
|
+
render json: term, content_type: request_header_service.content_type_for_format
|
97
101
|
rescue Qa::TermNotFound
|
98
102
|
msg = "Term Not Found - Fetch term #{uri} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}"
|
99
103
|
logger.warn msg
|
@@ -149,6 +153,10 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
149
153
|
end
|
150
154
|
end
|
151
155
|
|
156
|
+
def create_request_header_service
|
157
|
+
@request_header_service = request_header_service_class.new(request, params)
|
158
|
+
end
|
159
|
+
|
152
160
|
def init_authority
|
153
161
|
@authority = Qa::Authorities::LinkedData::GenericAuthority.new(vocab_param)
|
154
162
|
rescue Qa::InvalidLinkedDataAuthority => e
|
@@ -192,47 +200,17 @@ class Qa::LinkedDataTermsController < ::ApplicationController
|
|
192
200
|
params[:id]
|
193
201
|
end
|
194
202
|
|
195
|
-
def language
|
196
|
-
request_language = request.env['HTTP_ACCEPT_LANGUAGE']
|
197
|
-
request_language = request_language.scan(/^[a-z]{2}/).first if request_language.present?
|
198
|
-
params[:lang] || request_language
|
199
|
-
end
|
200
|
-
|
201
203
|
def subauthority
|
202
204
|
params[:subauthority]
|
203
205
|
end
|
204
206
|
|
205
|
-
def replacement_params
|
206
|
-
params.reject { |k, _v| ['q', 'vocab', 'controller', 'action', 'subauthority', 'lang', 'id'].include?(k) }
|
207
|
-
end
|
208
|
-
|
209
207
|
def subauth_warn_msg
|
210
208
|
subauthority.blank? ? "" : " sub-authority #{subauthority} in"
|
211
209
|
end
|
212
210
|
|
213
|
-
def format
|
214
|
-
return 'json' unless params.key?(:format)
|
215
|
-
return 'json' if params[:format].blank?
|
216
|
-
params[:format]
|
217
|
-
end
|
218
|
-
|
219
|
-
def jsonld?
|
220
|
-
format.casecmp('jsonld').zero?
|
221
|
-
end
|
222
|
-
|
223
|
-
def context?
|
224
|
-
context = params.fetch(:context, 'false')
|
225
|
-
context.casecmp('true').zero?
|
226
|
-
end
|
227
|
-
|
228
211
|
def details?
|
229
212
|
details = params.fetch(:details, 'false')
|
230
|
-
details.casecmp('true')
|
231
|
-
end
|
232
|
-
|
233
|
-
def performance_data?
|
234
|
-
performance_data = params.fetch(:performance_data, 'false')
|
235
|
-
performance_data.casecmp('true').zero?
|
213
|
+
details.casecmp?('true')
|
236
214
|
end
|
237
215
|
|
238
216
|
def validate_auth_reload_token
|
@@ -30,8 +30,7 @@ class Qa::TermsController < ::ApplicationController
|
|
30
30
|
def show
|
31
31
|
term = @authority.method(:find).arity == 2 ? @authority.find(params[:id], self) : @authority.find(params[:id])
|
32
32
|
cors_allow_origin_header(response)
|
33
|
-
|
34
|
-
render json: term, content_type: content_type
|
33
|
+
render json: term, content_type: content_type_for_format
|
35
34
|
end
|
36
35
|
|
37
36
|
def check_vocab_param
|
@@ -81,4 +80,29 @@ class Qa::TermsController < ::ApplicationController
|
|
81
80
|
def url_search
|
82
81
|
params[:q].gsub("*", "%2A")
|
83
82
|
end
|
83
|
+
|
84
|
+
def format
|
85
|
+
return 'json' unless params.key?(:format)
|
86
|
+
return 'json' if params[:format].blank?
|
87
|
+
params[:format]
|
88
|
+
end
|
89
|
+
|
90
|
+
def jsonld?
|
91
|
+
format.casecmp?('jsonld')
|
92
|
+
end
|
93
|
+
|
94
|
+
def n3?
|
95
|
+
format.casecmp?('n3')
|
96
|
+
end
|
97
|
+
|
98
|
+
def ntriples?
|
99
|
+
format.casecmp?('ntriples')
|
100
|
+
end
|
101
|
+
|
102
|
+
def content_type_for_format
|
103
|
+
return 'application/ld+json' if jsonld?
|
104
|
+
return 'text/n3' if n3?
|
105
|
+
return 'application/n-triples' if ntriples?
|
106
|
+
'application/json'
|
107
|
+
end
|
84
108
|
end
|
@@ -7,14 +7,17 @@ module Qa
|
|
7
7
|
# @param action_config [Qa::Authorities::LinkedData::SearchConfig | Qa::Authorities::LinkedData::TermConfig] action configuration for the authority
|
8
8
|
# @param action [Symbol] action with valid values :search or :term
|
9
9
|
# @param action_request [String] the request the user is making of the authority (e.g. query text or term id/uri)
|
10
|
-
# @param
|
11
|
-
# @
|
12
|
-
# @
|
10
|
+
# @param request_header [Hash] optional attributes that can be appended to the generated URL
|
11
|
+
# @option replacements [Hash] variable-value pairs to substitute into the URL template
|
12
|
+
# @option subauthority [String] name of a subauthority
|
13
|
+
# @option language [Array<Symbol>] languages for filtering returned literals
|
13
14
|
# @return a valid URL that submits the action request to the external authority
|
14
|
-
|
15
|
+
# @note All parameters after request_header are deprecated and will be removed in the next major release.
|
16
|
+
def build_url(action_config:, action:, action_request:, request_header: {}, substitutions: {}, subauthority: nil, language: nil) # rubocop:disable Metrics/ParameterLists
|
17
|
+
request_header = build_request_header(substitutions, subauthority, language) if request_header.empty?
|
15
18
|
action_validation(action)
|
16
19
|
url_config = action_config.url_config
|
17
|
-
selected_substitutions = url_config.extract_substitutions(combined_substitutions(action_config, action, action_request,
|
20
|
+
selected_substitutions = url_config.extract_substitutions(combined_substitutions(action_config, action, action_request, request_header))
|
18
21
|
Qa::IriTemplateService.build_url(url_config: url_config, substitutions: selected_substitutions)
|
19
22
|
end
|
20
23
|
|
@@ -25,10 +28,12 @@ module Qa
|
|
25
28
|
raise Qa::UnsupportedAction, "#{action} Not Supported - Action must be one of the supported actions (e.g. :term, :search)"
|
26
29
|
end
|
27
30
|
|
28
|
-
def combined_substitutions(action_config, action, action_request,
|
31
|
+
def combined_substitutions(action_config, action, action_request, request_header)
|
32
|
+
substitutions = request_header.fetch(:replacements, {})
|
29
33
|
substitutions[action_request_variable(action_config, action)] = action_request
|
30
|
-
substitutions[action_subauth_variable(action_config)] = action_subauth_variable_value(action_config,
|
31
|
-
substitutions[action_language_variable(action_config)] = language_value(
|
34
|
+
substitutions[action_subauth_variable(action_config)] = action_subauth_variable_value(action_config, request_header)
|
35
|
+
substitutions[action_language_variable(action_config)] = language_value(action_config, request_header)
|
36
|
+
substitutions.reject { |_k, v| v.nil? }
|
32
37
|
substitutions
|
33
38
|
end
|
34
39
|
|
@@ -37,29 +42,38 @@ module Qa
|
|
37
42
|
action_config.qa_replacement_patterns[key]
|
38
43
|
end
|
39
44
|
|
40
|
-
def supports_subauthorities?(action_config)
|
41
|
-
action_config.supports_subauthorities?
|
42
|
-
end
|
43
|
-
|
44
45
|
def action_subauth_variable(action_config)
|
45
46
|
action_config.qa_replacement_patterns[:subauth]
|
46
47
|
end
|
47
48
|
|
48
|
-
def action_subauth_variable_value(action_config,
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def supports_language_parameter?(action_config)
|
53
|
-
action_config.supports_language_parameter?
|
49
|
+
def action_subauth_variable_value(action_config, request_header)
|
50
|
+
subauth = request_header.fetch(:subauthority, nil)
|
51
|
+
return nil unless subauth && action_config.supports_subauthorities?
|
52
|
+
action_config.subauthorities[subauth.to_sym]
|
54
53
|
end
|
55
54
|
|
56
55
|
def action_language_variable(action_config)
|
57
56
|
action_config.qa_replacement_patterns[:lang]
|
58
57
|
end
|
59
58
|
|
60
|
-
def language_value(
|
61
|
-
return nil
|
62
|
-
language.first
|
59
|
+
def language_value(action_config, request_header)
|
60
|
+
return nil unless action_config.supports_language_parameter?
|
61
|
+
request_header.fetch(:language, []).first
|
62
|
+
end
|
63
|
+
|
64
|
+
# This is providing support for calling build_url with individual parameters instead of the request_header.
|
65
|
+
# This is deprecated and will be removed in the next major release.
|
66
|
+
def build_request_header(substitutions, subauthority, language) # rubocop:disable Metrics/CyclomaticComplexity
|
67
|
+
return {} if substitutions.blank? && subauthority.blank? && language.blank?
|
68
|
+
Qa.deprecation_warning(
|
69
|
+
in_msg: 'Qa::LinkedData::AuthorityUrlService',
|
70
|
+
msg: "individual attributes for options (e.g. substitutions, subauthority, language) are deprecated; use request_header instead"
|
71
|
+
)
|
72
|
+
request_header = {}
|
73
|
+
request_header[:replacements] = substitutions unless substititions.blank?
|
74
|
+
request_header[:subauthority] = subauthority unless subauthority.blank?
|
75
|
+
request_header[:language] = language unless language.blank?
|
76
|
+
request_header
|
63
77
|
end
|
64
78
|
end
|
65
79
|
end
|
@@ -106,12 +106,10 @@ module Qa
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
# process ioerror_code from RDF::Graph.load whether the code is in parentheses (i.e. "... (404)"), or not (i.e. "... 404")
|
109
110
|
def ioerror_code(e)
|
110
111
|
msg = e.message
|
111
|
-
|
112
|
-
a = msg.size - 4
|
113
|
-
z = msg.size - 2
|
114
|
-
msg[a..z]
|
112
|
+
msg[/(\(?)(\d\d\d)(\)?)$/, 2]
|
115
113
|
end
|
116
114
|
end
|
117
115
|
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# Service to construct a request header that includes optional attributes for search and fetch requests.
|
2
|
+
module Qa
|
3
|
+
module LinkedData
|
4
|
+
class RequestHeaderService
|
5
|
+
attr_reader :request, :params
|
6
|
+
|
7
|
+
# @param request [HttpRequest] request from controller
|
8
|
+
# @param params [Hash] attribute-value pairs holding the request parameters
|
9
|
+
# @option subauthority [String] the subauthority to query
|
10
|
+
# @option lang [Symbol] language used to select literals when multi-language is supported (e.g. :en, :fr, etc.)
|
11
|
+
# @option performance_data [Boolean] true if include_performance_data should be returned with the results; otherwise, false (default: false)
|
12
|
+
# @option context [Boolean] true if context should be returned with the results; otherwise, false (default: false) (search only)
|
13
|
+
# @option format [String] return data in this format (fetch only)
|
14
|
+
# @note params may have additional attribute-value pairs that are passed through via replacements (only configured replacements are used)
|
15
|
+
def initialize(request, params)
|
16
|
+
@request = request
|
17
|
+
@params = params
|
18
|
+
end
|
19
|
+
|
20
|
+
# Construct request parameters to pass to search_query (linked data module).
|
21
|
+
# @returns [Hash] parsed out attribute-value pairs that are required for the search query
|
22
|
+
# @see Qa::Authorities::LinkedData::SearchQuery
|
23
|
+
def search_header
|
24
|
+
header = {}
|
25
|
+
header[:subauthority] = params.fetch(:subauthority, nil)
|
26
|
+
header[:user_language] = user_language
|
27
|
+
header[:performance_data] = performance_data?
|
28
|
+
header[:context] = context?
|
29
|
+
header[:replacements] = replacements
|
30
|
+
header
|
31
|
+
end
|
32
|
+
|
33
|
+
# Construct request parameters to pass to fetching a term (linked data module).
|
34
|
+
# @returns [Hash] parsed out attribute-value pairs that are required for the term fetch.
|
35
|
+
# @see Qa::Authorities::LinkedData::FindTerm
|
36
|
+
def fetch_header
|
37
|
+
header = {}
|
38
|
+
header[:subauthority] = params.fetch(:subauthority, nil)
|
39
|
+
header[:user_language] = user_language
|
40
|
+
header[:performance_data] = performance_data?
|
41
|
+
header[:format] = format
|
42
|
+
header[:replacements] = replacements
|
43
|
+
header
|
44
|
+
end
|
45
|
+
|
46
|
+
# @returns [String] the response header content type based on requested format
|
47
|
+
def content_type_for_format
|
48
|
+
case format
|
49
|
+
when 'jsonld'
|
50
|
+
'application/ld+json'
|
51
|
+
when 'n3'
|
52
|
+
'text/n3'
|
53
|
+
when 'ntriples'
|
54
|
+
'application/n-triples'
|
55
|
+
else
|
56
|
+
'application/json'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
# filter literals in results to this language
|
63
|
+
def user_language
|
64
|
+
request_language = request.env['HTTP_ACCEPT_LANGUAGE']
|
65
|
+
request_language = request_language.scan(/^[a-z]{2}/).first if request_language.present?
|
66
|
+
lang = params[:lang] || request_language
|
67
|
+
lang.present? ? Array(lang) : nil
|
68
|
+
end
|
69
|
+
|
70
|
+
# include extended context in the results if true (applies to search only)
|
71
|
+
def context?
|
72
|
+
context = params.fetch(:context, 'false')
|
73
|
+
context.casecmp?('true')
|
74
|
+
end
|
75
|
+
|
76
|
+
# include performance data in the results if true
|
77
|
+
def performance_data?
|
78
|
+
performance_data = params.fetch(:performance_data, 'false')
|
79
|
+
performance_data.casecmp?('true')
|
80
|
+
end
|
81
|
+
|
82
|
+
# any params not specifically handled are passed through via replacements
|
83
|
+
def replacements
|
84
|
+
params.reject do |k, _v|
|
85
|
+
['q', 'vocab', 'controller', 'action', 'subauthority', 'lang', 'id',
|
86
|
+
'context', 'performance_data', 'response_header', 'format'].include?(k)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# results are returned in the format (applies to fetch only)
|
91
|
+
def format
|
92
|
+
f = params.fetch(:format, 'json').downcase
|
93
|
+
['jsonld', 'n3', 'ntriples'].include?(f) ? f : 'json'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -44,11 +44,12 @@ module Qa::Authorities
|
|
44
44
|
count = 1
|
45
45
|
return stmts unless response["identifiers"].present?
|
46
46
|
response["identifiers"].each do |activity|
|
47
|
-
stmts << contruct_stmt_uri_object(
|
48
|
-
stmts << contruct_stmt_uri_object("
|
49
|
-
stmts << contruct_stmt_literal_object("
|
47
|
+
stmts << contruct_stmt_uri_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/identifiedBy", "iidn#{count}")
|
48
|
+
stmts << contruct_stmt_uri_object("iidn#{count}", rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/Identifier")
|
49
|
+
stmts << contruct_stmt_literal_object("iidn#{count}", rdfs_label_predicate, activity["value"])
|
50
50
|
count += 1
|
51
51
|
end
|
52
|
+
stmts.concat(build_year_statements(response)) if response["released"].present?
|
52
53
|
stmts # w/out this line, building the graph throws an undefined method `graph_name=' error
|
53
54
|
end
|
54
55
|
|
@@ -64,7 +65,7 @@ module Qa::Authorities
|
|
64
65
|
if df.present?
|
65
66
|
stmts += build_format_characteristics(df, count)
|
66
67
|
else
|
67
|
-
stmts << contruct_stmt_literal_object(
|
68
|
+
stmts << contruct_stmt_literal_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/editionStatement", desc)
|
68
69
|
end
|
69
70
|
end
|
70
71
|
stmts
|
@@ -77,15 +78,13 @@ module Qa::Authorities
|
|
77
78
|
stmts = []
|
78
79
|
case df["type"]
|
79
80
|
when "playbackChannel"
|
80
|
-
stmts << contruct_stmt_uri_object(
|
81
|
+
stmts << contruct_stmt_uri_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/soundCharacteristic", df["uri"])
|
81
82
|
stmts << contruct_stmt_uri_object(df["uri"], rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/PlaybackChannel")
|
82
83
|
stmts << contruct_stmt_literal_object(df["uri"], rdfs_label_predicate, df["label"])
|
83
84
|
when "dimension"
|
84
|
-
stmts <<
|
85
|
+
stmts << contruct_stmt_literal_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/dimensions", df["label"])
|
85
86
|
when "playingSpeed"
|
86
|
-
stmts
|
87
|
-
stmts << contruct_stmt_uri_object("PlayingSpeed#{count}", rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/PlayingSpeed")
|
88
|
-
stmts << contruct_stmt_literal_object("PlayingSpeed#{count}", rdfs_label_predicate, df["label"])
|
87
|
+
stmts.concat(build_playing_speed_stmts(df["label"], count))
|
89
88
|
end
|
90
89
|
stmts # w/out this line, building the graph throws an undefined method `graph_name=' error
|
91
90
|
end
|
@@ -98,13 +97,13 @@ module Qa::Authorities
|
|
98
97
|
return stmts unless name.present?
|
99
98
|
dc = discogs_formats[name.gsub(/\s+/, "")]
|
100
99
|
if dc.present?
|
101
|
-
stmts << contruct_stmt_uri_object(
|
100
|
+
stmts << contruct_stmt_uri_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/carrier", dc["uri"])
|
102
101
|
stmts << contruct_stmt_uri_object(dc["uri"], rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/Carrier")
|
103
102
|
stmts << contruct_stmt_literal_object(dc["uri"], rdfs_label_predicate, dc["label"])
|
104
103
|
stmts.concat(build_base_materials(name))
|
105
104
|
else
|
106
105
|
# if it's not a carrier, it's an edition statement
|
107
|
-
stmts << contruct_stmt_literal_object(
|
106
|
+
stmts << contruct_stmt_literal_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/editionStatement", name)
|
108
107
|
end
|
109
108
|
stmts # w/out this line, building the graph throws an undefined method `graph_name=' error
|
110
109
|
end
|
@@ -116,7 +115,7 @@ module Qa::Authorities
|
|
116
115
|
return stmts unless name == "Vinyl" || name == "Shellac"
|
117
116
|
id = name == "Vinyl" ? "300014502" : "300014918"
|
118
117
|
|
119
|
-
stmts << contruct_stmt_uri_object(
|
118
|
+
stmts << contruct_stmt_uri_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/baseMaterial", "http://vocab.getty.edu/aat/" + id)
|
120
119
|
stmts << contruct_stmt_uri_object("http://vocab.getty.edu/aat/" + id, rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/BaseMaterial")
|
121
120
|
stmts << contruct_stmt_literal_object("http://vocab.getty.edu/aat/" + id, rdfs_label_predicate, name)
|
122
121
|
stmts # w/out this line, building the graph throws an undefined method `graph_name=' error
|
@@ -129,13 +128,12 @@ module Qa::Authorities
|
|
129
128
|
# need to distinguish among different provision activities and roles
|
130
129
|
count = 1
|
131
130
|
activities.each do |activity|
|
132
|
-
stmts << contruct_stmt_uri_object(
|
133
|
-
stmts << contruct_stmt_uri_object("
|
134
|
-
stmts << contruct_stmt_uri_object("
|
135
|
-
stmts << contruct_stmt_uri_object(
|
136
|
-
stmts <<
|
137
|
-
stmts
|
138
|
-
stmts << contruct_stmt_literal_object("PA_Role#{count}", rdfs_label_predicate, activity["entity_type_name"])
|
131
|
+
stmts << contruct_stmt_uri_object(instance_uri, "http://id.loc.gov/ontologies/bibframe/provisionActivity", "proact#{count}")
|
132
|
+
stmts << contruct_stmt_uri_object("proact#{count}", rdf_type_predicate, "http://id.loc.gov/ontologies/bibframe/ProvisionActivity")
|
133
|
+
stmts << contruct_stmt_uri_object("proact#{count}", bf_agent_predicate, "agentn3#{count}")
|
134
|
+
stmts << contruct_stmt_uri_object("agentn3#{count}", rdf_type_predicate, bf_agent_type_object)
|
135
|
+
stmts << contruct_stmt_literal_object("agentn3#{count}", rdfs_label_predicate, activity["name"])
|
136
|
+
stmts += build_role_stmts("agentn3#{count}", "role3#{count}", activity["entity_type_name"])
|
139
137
|
count += 1
|
140
138
|
end
|
141
139
|
stmts # w/out this line, building the graph throws an undefined method `graph_name=' error
|