qa 4.1.0 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|