qa 4.1.0 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/qa/authorities/linked_data/config/search_config.rb +14 -8
- data/lib/qa/authorities/linked_data/config/term_config.rb +29 -2
- data/lib/qa/authorities/linked_data/find_term.rb +34 -10
- data/lib/qa/authorities/linked_data/search_query.rb +9 -9
- data/lib/qa/version.rb +1 -1
- data/spec/fixtures/lod_loc_second_term_found.rdf.xml +68 -0
- data/spec/lib/authorities/linked_data/find_term_spec.rb +21 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa5880f67c4587fb44e2740ce97df0cecc2a119
|
4
|
+
data.tar.gz: 50e47d7b72d95bf8a3a93ecc8ab8dcd5f1c442cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78b5ce231dc3fdcc74e254c5e578f5024a3ea1abb0c3696655dd4b8619a683e06d1caaa65ba2a87f683b594ecc6b8db79444ac63b6bd441d4a7821e82dc7236a
|
7
|
+
data.tar.gz: 3b02f86177cc7c5f84d232619ff0b1e024cfc1c36eb9847deca5a760632ce2059cc248d15b20539b51be1cf6d98ba7e589879cd6a60873096123ea1cccffd5e6
|
@@ -60,7 +60,8 @@ module Qa::Authorities
|
|
60
60
|
def results_id_predicate
|
61
61
|
Qa.deprecation_warning(
|
62
62
|
in_msg: 'Qa::Authorities::LinkedData::SearchConfig',
|
63
|
-
msg: "`results_id_predicate` is deprecated; use `results_id_ldpath` by updating linked data search config results
|
63
|
+
msg: "`results_id_predicate` is deprecated; use `results_id_ldpath` by updating linked data search config results " \
|
64
|
+
"in authority #{authority_name} to specify as `id_ldpath`"
|
64
65
|
)
|
65
66
|
Config.predicate_uri(results, :id_predicate)
|
66
67
|
end
|
@@ -73,11 +74,14 @@ module Qa::Authorities
|
|
73
74
|
|
74
75
|
# Return results label_predicate
|
75
76
|
# @return [String] the configured predicate to use to extract label values from the results
|
76
|
-
def results_label_predicate
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
77
|
+
def results_label_predicate(suppress_deprecation_warning: false)
|
78
|
+
unless suppress_deprecation_warning
|
79
|
+
Qa.deprecation_warning(
|
80
|
+
in_msg: 'Qa::Authorities::LinkedData::SearchConfig',
|
81
|
+
msg: "`results_label_predicate` is deprecated; use `results_label_ldpath` by updating linked data search config results " \
|
82
|
+
"in authority #{authority_name} to specify as `label_ldpath`"
|
83
|
+
)
|
84
|
+
end
|
81
85
|
Config.predicate_uri(results, :label_predicate)
|
82
86
|
end
|
83
87
|
|
@@ -92,7 +96,8 @@ module Qa::Authorities
|
|
92
96
|
def results_altlabel_predicate
|
93
97
|
Qa.deprecation_warning(
|
94
98
|
in_msg: 'Qa::Authorities::LinkedData::SearchConfig',
|
95
|
-
msg: "`results_altlabel_predicate` is deprecated; use `results_altlabel_ldpath` by updating linked data
|
99
|
+
msg: "`results_altlabel_predicate` is deprecated; use `results_altlabel_ldpath` by updating linked data " \
|
100
|
+
"search config results in authority #{authority_name} to specify as `altlabel_ldpath`"
|
96
101
|
)
|
97
102
|
Config.predicate_uri(results, :altlabel_predicate)
|
98
103
|
end
|
@@ -115,7 +120,8 @@ module Qa::Authorities
|
|
115
120
|
def results_sort_predicate
|
116
121
|
Qa.deprecation_warning(
|
117
122
|
in_msg: 'Qa::Authorities::LinkedData::SearchConfig',
|
118
|
-
msg: "`results_sort_predicate` is deprecated; use `results_sort_ldpath` by updating linked data
|
123
|
+
msg: "`results_sort_predicate` is deprecated; use `results_sort_ldpath` by updating linked data " \
|
124
|
+
"search config results in authority #{authority_name} to specify as `sort_ldpath`"
|
119
125
|
)
|
120
126
|
Config.predicate_uri(results, :sort_predicate)
|
121
127
|
end
|
@@ -12,7 +12,7 @@ module Qa::Authorities
|
|
12
12
|
|
13
13
|
# @param [Hash] config the term portion of the config
|
14
14
|
# @param [Hash<Symbol><String>] prefixes URL map of prefixes to use with ldpaths
|
15
|
-
# @param [Qa::Authorities::LinkedData::Config] full_config the full linked data configuration that the passed in
|
15
|
+
# @param [Qa::Authorities::LinkedData::Config] full_config the full linked data configuration that the passed in term config is part of
|
16
16
|
def initialize(config, prefixes = {}, full_config = nil)
|
17
17
|
@term_config = config
|
18
18
|
@prefixes = prefixes
|
@@ -87,7 +87,14 @@ module Qa::Authorities
|
|
87
87
|
|
88
88
|
# Return results label_predicate
|
89
89
|
# @return [String] the configured predicate to use to extract label values from the results
|
90
|
-
def term_results_label_predicate
|
90
|
+
def term_results_label_predicate(suppress_deprecation_warning: false)
|
91
|
+
unless suppress_deprecation_warning
|
92
|
+
Qa.deprecation_warning(
|
93
|
+
in_msg: 'Qa::Authorities::LinkedData::TermConfig',
|
94
|
+
msg: "`term_results_label_predicate` is deprecated; use `term_results_label_ldpath` by updating linked data " \
|
95
|
+
"term config results in authority #{authority_name} to specify as `label_ldpath`"
|
96
|
+
)
|
97
|
+
end
|
91
98
|
Config.predicate_uri(term_results, :label_predicate)
|
92
99
|
end
|
93
100
|
|
@@ -100,6 +107,11 @@ module Qa::Authorities
|
|
100
107
|
# Return results altlabel_predicate
|
101
108
|
# @return [String] the configured predicate to use to extract altlabel values from the results
|
102
109
|
def term_results_altlabel_predicate
|
110
|
+
Qa.deprecation_warning(
|
111
|
+
in_msg: 'Qa::Authorities::LinkedData::TermConfig',
|
112
|
+
msg: "`term_results_altlabel_predicate` is deprecated; use `term_results_altlabel_ldpath` by updating linked data " \
|
113
|
+
"term config results in authority #{authority_name} to specify as `altlabel_ldpath`"
|
114
|
+
)
|
103
115
|
Config.predicate_uri(term_results, :altlabel_predicate)
|
104
116
|
end
|
105
117
|
|
@@ -112,6 +124,11 @@ module Qa::Authorities
|
|
112
124
|
# Return results broader_predicate
|
113
125
|
# @return [String] the configured predicate to use to extract URIs for broader terms from the results
|
114
126
|
def term_results_broader_predicate
|
127
|
+
Qa.deprecation_warning(
|
128
|
+
in_msg: 'Qa::Authorities::LinkedData::TermConfig',
|
129
|
+
msg: "`term_results_broader_predicate` is deprecated; use `term_results_broader_ldpath` by updating linked data " \
|
130
|
+
"term config results in authority #{authority_name} to specify as `broader_ldpath`"
|
131
|
+
)
|
115
132
|
Config.predicate_uri(term_results, :broader_predicate)
|
116
133
|
end
|
117
134
|
|
@@ -124,6 +141,11 @@ module Qa::Authorities
|
|
124
141
|
# Return results narrower_predicate
|
125
142
|
# @return [String] the configured predicate to use to extract URIs for narrower terms from the results
|
126
143
|
def term_results_narrower_predicate
|
144
|
+
Qa.deprecation_warning(
|
145
|
+
in_msg: 'Qa::Authorities::LinkedData::TermConfig',
|
146
|
+
msg: "`term_results_narrower_predicate` is deprecated; use `term_results_narrower_ldpath` by updating linked data " \
|
147
|
+
"term config results in authority #{authority_name} to specify as `narrower_ldpath`"
|
148
|
+
)
|
127
149
|
Config.predicate_uri(term_results, :narrower_predicate)
|
128
150
|
end
|
129
151
|
|
@@ -136,6 +158,11 @@ module Qa::Authorities
|
|
136
158
|
# Return results sameas_predicate
|
137
159
|
# @return [String] the configured predicate to use to extract URIs for sameas terms from the results
|
138
160
|
def term_results_sameas_predicate
|
161
|
+
Qa.deprecation_warning(
|
162
|
+
in_msg: 'Qa::Authorities::LinkedData::TermConfig',
|
163
|
+
msg: "`term_results_sameas_predicate` is deprecated; use `term_results_sameas_ldpath` by updating linked data " \
|
164
|
+
"term config results in authority #{authority_name} to specify as `sameas_ldpath`"
|
165
|
+
)
|
139
166
|
Config.predicate_uri(term_results, :sameas_predicate)
|
140
167
|
end
|
141
168
|
|
@@ -15,8 +15,8 @@ module Qa::Authorities
|
|
15
15
|
@term_config = term_config
|
16
16
|
end
|
17
17
|
|
18
|
-
attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :access_time_s, :normalize_time_s
|
19
|
-
private :full_graph, :filtered_graph, :language, :id, :access_time_s, :normalize_time_s
|
18
|
+
attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s
|
19
|
+
private :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s
|
20
20
|
|
21
21
|
delegate :term_subauthority?, :prefixes, :authority_name, to: :term_config
|
22
22
|
|
@@ -80,6 +80,7 @@ module Qa::Authorities
|
|
80
80
|
return full_graph.dump(:jsonld, standard_prefixes: true) if jsonld?
|
81
81
|
|
82
82
|
filter_graph
|
83
|
+
extract_uri
|
83
84
|
results = map_results
|
84
85
|
convert_results_to_json(results)
|
85
86
|
end
|
@@ -93,13 +94,13 @@ module Qa::Authorities
|
|
93
94
|
predicate_map = preds_for_term
|
94
95
|
ldpath_map = ldpaths_for_term
|
95
96
|
|
96
|
-
raise Qa::InvalidConfiguration, "do not specify results using both predicates and ldpath in term configuration for
|
97
|
-
raise Qa::InvalidConfiguration, "must specify label_ldpath or label_predicate in term configuration for
|
97
|
+
raise Qa::InvalidConfiguration, "do not specify results using both predicates and ldpath in term configuration for linked data authority #{authority_name} (ldpath is preferred)" if predicate_map.present? && ldpath_map.present? # rubocop:disable Metrics/LineLength
|
98
|
+
raise Qa::InvalidConfiguration, "must specify label_ldpath or label_predicate in term configuration for linked data authority #{authority_name} (label_ldpath is preferred)" unless ldpath_map.key?(:label) || predicate_map.key?(:label) # rubocop:disable Metrics/LineLength
|
98
99
|
|
99
100
|
if predicate_map.present?
|
100
101
|
Qa.deprecation_warning(
|
101
102
|
in_msg: 'Qa::Authorities::LinkedData::FindTerm',
|
102
|
-
msg:
|
103
|
+
msg: "defining results using predicates in term config is deprecated; update to define using ldpaths (authority: #{authority_name})"
|
103
104
|
)
|
104
105
|
end
|
105
106
|
|
@@ -107,19 +108,42 @@ module Qa::Authorities
|
|
107
108
|
ldpath_map: ldpaths_for_term, predicate_map: preds_for_term)
|
108
109
|
end
|
109
110
|
|
111
|
+
# special processing for loc ids for backward compatibility
|
110
112
|
def normalize_id
|
111
113
|
return id if expects_uri?
|
112
|
-
|
114
|
+
loc? ? id.delete(' ') : id
|
115
|
+
end
|
116
|
+
|
117
|
+
# special processing for loc ids for backward compatibility
|
118
|
+
def loc_id
|
119
|
+
loc_id = URI.unescape(id)
|
120
|
+
digit_idx = loc_id.index(/\d/)
|
121
|
+
loc_id.insert(digit_idx, ' ') if loc? && loc_id.index(' ').blank? && digit_idx > 0
|
122
|
+
loc_id
|
123
|
+
end
|
124
|
+
|
125
|
+
# determine if the current authority is LOC which may require special processing of its ids for backward compatibility
|
126
|
+
def loc?
|
127
|
+
authority_name.to_s.casecmp('loc').zero?
|
113
128
|
end
|
114
129
|
|
115
130
|
def expects_uri?
|
116
131
|
term_config.term_id_expects_uri?
|
117
132
|
end
|
118
133
|
|
119
|
-
def
|
120
|
-
return @uri if @uri.present?
|
134
|
+
def extract_uri
|
121
135
|
return @uri = RDF::URI.new(id) if expects_uri?
|
122
|
-
@uri = graph_service.subjects_for_object_value(graph: @filtered_graph, predicate: RDF::URI.new(term_config.term_results_id_predicate), object_value:
|
136
|
+
@uri = graph_service.subjects_for_object_value(graph: @filtered_graph, predicate: RDF::URI.new(term_config.term_results_id_predicate), object_value: URI.unescape(id)).first
|
137
|
+
return @uri unless loc? && @uri.blank?
|
138
|
+
# for backward compatibility, if an loc id as passed in fails to extract the URI, try to adding a blank to the id
|
139
|
+
@uri = graph_service.subjects_for_object_value(graph: @filtered_graph, predicate: RDF::URI.new(term_config.term_results_id_predicate), object_value: loc_id).first
|
140
|
+
if @uri.present?
|
141
|
+
Qa.deprecation_warning(
|
142
|
+
in_msg: 'Qa::Authorities::LinkedData::FindTerm',
|
143
|
+
msg: 'Special processing of LOC ids is deprecated; id should be an exact match of the id in the graph'
|
144
|
+
)
|
145
|
+
end
|
146
|
+
@uri
|
123
147
|
end
|
124
148
|
|
125
149
|
def ldpaths_for_term
|
@@ -148,7 +172,7 @@ module Qa::Authorities
|
|
148
172
|
end
|
149
173
|
|
150
174
|
def preds_for_term
|
151
|
-
label_pred_uri = term_config.term_results_label_predicate
|
175
|
+
label_pred_uri = term_config.term_results_label_predicate(suppress_deprecation_warning: true)
|
152
176
|
return {} if label_pred_uri.blank?
|
153
177
|
preds = { label: label_pred_uri }
|
154
178
|
preds.merge(optional_preds)
|
@@ -15,8 +15,8 @@ module Qa::Authorities
|
|
15
15
|
@search_config = search_config
|
16
16
|
end
|
17
17
|
|
18
|
-
attr_reader :search_config, :
|
19
|
-
private :
|
18
|
+
attr_reader :search_config, :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s
|
19
|
+
private :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s
|
20
20
|
|
21
21
|
delegate :subauthority?, :supports_sort?, :prefixes, :authority_name, to: :search_config
|
22
22
|
|
@@ -48,7 +48,7 @@ module Qa::Authorities
|
|
48
48
|
def load_graph(url:)
|
49
49
|
access_start_dt = Time.now.utc
|
50
50
|
|
51
|
-
@
|
51
|
+
@full_graph = graph_service.load_graph(url: url)
|
52
52
|
|
53
53
|
access_end_dt = Time.now.utc
|
54
54
|
@access_time_s = access_end_dt - access_start_dt
|
@@ -58,7 +58,7 @@ module Qa::Authorities
|
|
58
58
|
def normalize_results
|
59
59
|
normalize_start_dt = Time.now.utc
|
60
60
|
|
61
|
-
@
|
61
|
+
@filtered_graph = graph_service.filter(graph: @full_graph, language: language)
|
62
62
|
results = map_results
|
63
63
|
json = convert_results_to_json(results)
|
64
64
|
|
@@ -73,17 +73,17 @@ module Qa::Authorities
|
|
73
73
|
predicate_map = preds_for_search
|
74
74
|
ldpath_map = ldpaths_for_search
|
75
75
|
|
76
|
-
raise Qa::InvalidConfiguration, "do not specify results using both predicates and ldpath in search configuration for
|
77
|
-
raise Qa::InvalidConfiguration, "must specify label_ldpath or label_predicate in search configuration for
|
76
|
+
raise Qa::InvalidConfiguration, "do not specify results using both predicates and ldpath in search configuration for linked data authority #{authority_name} (ldpath is preferred)" if predicate_map.present? && ldpath_map.present? # rubocop:disable Metrics/LineLength
|
77
|
+
raise Qa::InvalidConfiguration, "must specify label_ldpath or label_predicate in search configuration for linked data authority #{authority_name} (label_ldpath is preferred)" unless ldpath_map.key?(:label) || predicate_map.key?(:label) # rubocop:disable Metrics/LineLength
|
78
78
|
|
79
79
|
if predicate_map.present?
|
80
80
|
Qa.deprecation_warning(
|
81
81
|
in_msg: 'Qa::Authorities::LinkedData::SearchQuery',
|
82
|
-
msg:
|
82
|
+
msg: "defining results using predicates in search config is deprecated; update to define using ldpaths (authority: #{authority_name})"
|
83
83
|
)
|
84
84
|
end
|
85
85
|
|
86
|
-
results_mapper_service.map_values(graph:
|
86
|
+
results_mapper_service.map_values(graph: filtered_graph, prefixes: prefixes, ldpath_map: ldpath_map,
|
87
87
|
predicate_map: predicate_map, sort_key: :sort,
|
88
88
|
preferred_language: @language, context_map: context_map)
|
89
89
|
end
|
@@ -119,7 +119,7 @@ module Qa::Authorities
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def preds_for_search
|
122
|
-
label_pred_uri = search_config.results_label_predicate
|
122
|
+
label_pred_uri = search_config.results_label_predicate(suppress_deprecation_warning: true)
|
123
123
|
return {} if label_pred_uri.blank?
|
124
124
|
preds = { label: label_pred_uri, uri: :subject_uri }
|
125
125
|
preds[:altlabel] = search_config.results_altlabel_predicate unless search_config.results_altlabel_predicate.nil?
|
data/lib/qa/version.rb
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
2
|
+
<madsrdf:Topic rdf:about="http://id.loc.gov/authorities/subjects/sh1234" xmlns:madsrdf="http://www.loc.gov/mads/rdf/v1#">
|
3
|
+
<rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#Authority"/>
|
4
|
+
<madsrdf:authoritativeLabel xml:lang="en">More Science</madsrdf:authoritativeLabel>
|
5
|
+
<madsrdf:elementList rdf:parseType="Collection">
|
6
|
+
<madsrdf:TopicElement>
|
7
|
+
<madsrdf:elementValue xml:lang="en">More Science</madsrdf:elementValue>
|
8
|
+
</madsrdf:TopicElement>
|
9
|
+
</madsrdf:elementList>
|
10
|
+
<madsrdf:hasVariant>
|
11
|
+
<madsrdf:Topic>
|
12
|
+
<rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#Variant"/>
|
13
|
+
<madsrdf:variantLabel xml:lang="en">More Natural science</madsrdf:variantLabel>
|
14
|
+
<madsrdf:elementList rdf:parseType="Collection">
|
15
|
+
<madsrdf:TopicElement>
|
16
|
+
<madsrdf:elementValue xml:lang="en">More Natural science</madsrdf:elementValue>
|
17
|
+
</madsrdf:TopicElement>
|
18
|
+
</madsrdf:elementList>
|
19
|
+
</madsrdf:Topic>
|
20
|
+
</madsrdf:hasVariant>
|
21
|
+
<madsrdf:hasVariant>
|
22
|
+
<madsrdf:Topic>
|
23
|
+
<rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#Variant"/>
|
24
|
+
<madsrdf:variantLabel xml:lang="en">More Science of science</madsrdf:variantLabel>
|
25
|
+
<madsrdf:elementList rdf:parseType="Collection">
|
26
|
+
<madsrdf:TopicElement>
|
27
|
+
<madsrdf:elementValue xml:lang="en">More Science of science</madsrdf:elementValue>
|
28
|
+
</madsrdf:TopicElement>
|
29
|
+
</madsrdf:elementList>
|
30
|
+
</madsrdf:Topic>
|
31
|
+
</madsrdf:hasVariant>
|
32
|
+
<madsrdf:hasVariant>
|
33
|
+
<madsrdf:Topic>
|
34
|
+
<rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#Variant"/>
|
35
|
+
<madsrdf:variantLabel xml:lang="en">More Sciences</madsrdf:variantLabel>
|
36
|
+
<madsrdf:elementList rdf:parseType="Collection">
|
37
|
+
<madsrdf:TopicElement>
|
38
|
+
<madsrdf:elementValue xml:lang="en">More Sciences</madsrdf:elementValue>
|
39
|
+
</madsrdf:TopicElement>
|
40
|
+
</madsrdf:elementList>
|
41
|
+
</madsrdf:Topic>
|
42
|
+
</madsrdf:hasVariant>
|
43
|
+
<identifiers:lccn xmlns:identifiers="http://id.loc.gov/vocabulary/identifiers/">sh 1234</identifiers:lccn>
|
44
|
+
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
|
45
|
+
<skos:prefLabel xml:lang="en" xmlns:skos="http://www.w3.org/2004/02/skos/core#">More Science</skos:prefLabel>
|
46
|
+
<skosxl:altLabel xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#">
|
47
|
+
<rdf:Description>
|
48
|
+
<rdf:type rdf:resource="http://www.w3.org/2008/05/skos-xl#Label"/>
|
49
|
+
<skosxl:literalForm xml:lang="en">More Natural science</skosxl:literalForm>
|
50
|
+
</rdf:Description>
|
51
|
+
</skosxl:altLabel>
|
52
|
+
<skosxl:altLabel xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#">
|
53
|
+
<rdf:Description>
|
54
|
+
<rdf:type rdf:resource="http://www.w3.org/2008/05/skos-xl#Label"/>
|
55
|
+
<skosxl:literalForm xml:lang="en">More Science of science</skosxl:literalForm>
|
56
|
+
</rdf:Description>
|
57
|
+
</skosxl:altLabel>
|
58
|
+
<skosxl:altLabel xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#">
|
59
|
+
<rdf:Description>
|
60
|
+
<rdf:type rdf:resource="http://www.w3.org/2008/05/skos-xl#Label"/>
|
61
|
+
<skosxl:literalForm xml:lang="en">More Sciences</skosxl:literalForm>
|
62
|
+
</rdf:Description>
|
63
|
+
</skosxl:altLabel>
|
64
|
+
<skos:altLabel xml:lang="en" xmlns:skos="http://www.w3.org/2004/02/skos/core#">More Natural science</skos:altLabel>
|
65
|
+
<skos:altLabel xml:lang="en" xmlns:skos="http://www.w3.org/2004/02/skos/core#">More Science of science</skos:altLabel>
|
66
|
+
<skos:altLabel xml:lang="en" xmlns:skos="http://www.w3.org/2004/02/skos/core#">More Sciences</skos:altLabel>
|
67
|
+
</madsrdf:Topic>
|
68
|
+
</rdf:RDF>
|
@@ -95,11 +95,17 @@ RSpec.describe Qa::Authorities::LinkedData::FindTerm do
|
|
95
95
|
|
96
96
|
context 'in LOC authority' do
|
97
97
|
context 'term found' do
|
98
|
-
|
98
|
+
before do
|
99
99
|
stub_request(:get, 'http://id.loc.gov/authorities/subjects/sh85118553')
|
100
100
|
.to_return(status: 200, body: webmock_fixture('lod_loc_term_found.rdf.xml'), headers: { 'Content-Type' => 'application/rdf+xml' })
|
101
|
-
|
101
|
+
stub_request(:get, 'http://id.loc.gov/authorities/subjects/sh1234')
|
102
|
+
.to_return(status: 200, body: webmock_fixture('lod_loc_second_term_found.rdf.xml'), headers: { 'Content-Type' => 'application/rdf+xml' })
|
102
103
|
end
|
104
|
+
|
105
|
+
let(:results) { lod_loc.find('sh 85118553', subauth: 'subjects') }
|
106
|
+
let(:second_results) { lod_loc.find('sh 1234', subauth: 'subjects') }
|
107
|
+
let(:results_without_blank) { lod_loc.find('sh85118553', subauth: 'subjects') }
|
108
|
+
|
103
109
|
it 'has correct primary predicate values' do
|
104
110
|
expect(results[:uri]).to eq 'http://id.loc.gov/authorities/subjects/sh85118553'
|
105
111
|
expect(results[:uri]).to be_kind_of String
|
@@ -156,6 +162,19 @@ RSpec.describe Qa::Authorities::LinkedData::FindTerm do
|
|
156
162
|
.to eq ['headings beginning with the word [Scientific;] and subdivision [Science] under ethnic groups and individual wars, e.g. [World War, 1939-1945--Science]']
|
157
163
|
expect(results['predicates']['http://www.w3.org/2004/02/skos/core#inScheme']).to eq ['http://id.loc.gov/authorities/subjects']
|
158
164
|
end
|
165
|
+
|
166
|
+
it 'has correct primary predicate values for second request' do
|
167
|
+
expect(results[:uri]).to eq 'http://id.loc.gov/authorities/subjects/sh85118553'
|
168
|
+
expect(second_results[:uri]).to eq 'http://id.loc.gov/authorities/subjects/sh1234'
|
169
|
+
expect(second_results[:uri]).to be_kind_of String
|
170
|
+
expect(second_results[:id]).to eq 'sh 1234'
|
171
|
+
expect(second_results[:label]).to eq ['More Science']
|
172
|
+
expect(second_results[:altlabel]).to include('More Natural science', 'More Science of science', 'More Sciences')
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'extracts correct uri when loc id does not have blank' do
|
176
|
+
expect(results_without_blank[:uri]).to eq 'http://id.loc.gov/authorities/subjects/sh85118553'
|
177
|
+
end
|
159
178
|
end
|
160
179
|
end
|
161
180
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Anderson
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date: 2019-05-
|
19
|
+
date: 2019-05-08 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: activerecord-import
|
@@ -487,6 +487,7 @@ files:
|
|
487
487
|
- spec/fixtures/lod_lang_term_enfr_noalt.rdf.xml
|
488
488
|
- spec/fixtures/lod_lang_term_enfrde.rdf.xml
|
489
489
|
- spec/fixtures/lod_lang_term_fr.rdf.xml
|
490
|
+
- spec/fixtures/lod_loc_second_term_found.rdf.xml
|
490
491
|
- spec/fixtures/lod_loc_term_found.rdf.xml
|
491
492
|
- spec/fixtures/lod_oclc_all_query_3_results.rdf.xml
|
492
493
|
- spec/fixtures/lod_oclc_personalName_query_3_results.rdf.xml
|
@@ -697,6 +698,7 @@ test_files:
|
|
697
698
|
- spec/fixtures/lod_oclc_term_found.rdf.xml
|
698
699
|
- spec/fixtures/lod_search_with_blanknode_subjects.nt
|
699
700
|
- spec/fixtures/assign-fast-noheader.json
|
701
|
+
- spec/fixtures/lod_loc_second_term_found.rdf.xml
|
700
702
|
- spec/fixtures/lod_lang_search_enfrde.rdf.xml
|
701
703
|
- spec/fixtures/funders-result.json
|
702
704
|
- spec/fixtures/lod_lang_search_sv.rdf.xml
|