qa 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/controllers/qa/linked_data_terms_controller.rb +30 -9
  4. data/app/controllers/qa/terms_controller.rb +3 -2
  5. data/app/models/qa/linked_data/config/context_property_map.rb +6 -25
  6. data/app/services/qa/iri_template_service.rb +32 -24
  7. data/app/services/qa/linked_data/authority_service.rb +8 -0
  8. data/app/services/qa/linked_data/authority_url_service.rb +27 -8
  9. data/app/services/qa/linked_data/deep_sort_service.rb +3 -2
  10. data/app/services/qa/linked_data/graph_service.rb +13 -0
  11. data/app/services/qa/linked_data/language_service.rb +12 -0
  12. data/app/services/qa/linked_data/language_sort_service.rb +7 -2
  13. data/app/services/qa/linked_data/ldpath_service.rb +40 -0
  14. data/app/services/qa/linked_data/mapper/graph_ldpath_mapper_service.rb +49 -0
  15. data/app/services/qa/linked_data/mapper/graph_mapper_service.rb +3 -11
  16. data/app/services/qa/linked_data/mapper/graph_predicate_mapper_service.rb +40 -0
  17. data/app/services/qa/linked_data/mapper/search_results_mapper_service.rb +58 -11
  18. data/app/services/qa/linked_data/mapper/term_results_mapper_service.rb +80 -0
  19. data/config/authorities/linked_data/loc.json +13 -7
  20. data/config/authorities/linked_data/oclc_fast.json +13 -8
  21. data/lib/generators/qa/discogs/USAGE +10 -0
  22. data/lib/generators/qa/discogs/discogs_generator.rb +12 -0
  23. data/lib/generators/qa/discogs/templates/config/discogs-formats.yml +346 -0
  24. data/lib/generators/qa/discogs/templates/config/discogs-genres.yml +627 -0
  25. data/lib/generators/qa/install/templates/config/initializers/qa.rb +4 -0
  26. data/lib/qa.rb +6 -0
  27. data/lib/qa/authorities.rb +2 -0
  28. data/lib/qa/authorities/discogs.rb +28 -0
  29. data/lib/qa/authorities/discogs/discogs_instance_builder.rb +145 -0
  30. data/lib/qa/authorities/discogs/discogs_translation.rb +126 -0
  31. data/lib/qa/authorities/discogs/discogs_utils.rb +89 -0
  32. data/lib/qa/authorities/discogs/discogs_works_builder.rb +153 -0
  33. data/lib/qa/authorities/discogs/generic_authority.rb +151 -0
  34. data/lib/qa/authorities/discogs_subauthority.rb +9 -0
  35. data/lib/qa/authorities/linked_data/config.rb +7 -3
  36. data/lib/qa/authorities/linked_data/config/search_config.rb +99 -11
  37. data/lib/qa/authorities/linked_data/config/term_config.rb +112 -8
  38. data/lib/qa/authorities/linked_data/find_term.rb +154 -84
  39. data/lib/qa/authorities/linked_data/search_query.rb +76 -13
  40. data/lib/qa/configuration.rb +8 -0
  41. data/lib/qa/version.rb +1 -1
  42. data/spec/controllers/linked_data_terms_controller_spec.rb +151 -30
  43. data/spec/controllers/terms_controller_spec.rb +4 -0
  44. data/spec/features/linked_data/language_spec.rb +298 -0
  45. data/spec/fixtures/authorities/linked_data/lod_full_config.json +21 -5
  46. data/spec/fixtures/authorities/linked_data/lod_lang_defaults.json +4 -4
  47. data/spec/fixtures/authorities/linked_data/lod_lang_multi_defaults.json +4 -4
  48. data/spec/fixtures/authorities/linked_data/lod_lang_no_defaults.json +4 -5
  49. data/spec/fixtures/authorities/linked_data/lod_lang_param.json +4 -4
  50. data/spec/fixtures/authorities/linked_data/lod_term_uri_param_config.json +1 -1
  51. data/spec/fixtures/discogs-find-response-json.json +1 -0
  52. data/spec/fixtures/discogs-find-response-jsonld-master.json +1 -0
  53. data/spec/fixtures/discogs-find-response-jsonld-release.json +1 -0
  54. data/spec/fixtures/discogs-id-matches-master.json +1 -0
  55. data/spec/fixtures/discogs-id-matches-release.json +1 -0
  56. data/spec/fixtures/discogs-id-not-found-master.json +1 -0
  57. data/spec/fixtures/discogs-id-not-found-release.json +1 -0
  58. data/spec/fixtures/discogs-search-response-no-auth.json +1 -0
  59. data/spec/fixtures/discogs-search-response-no-subauth.json +1 -0
  60. data/spec/fixtures/discogs-search-response-subauth.json +1 -0
  61. data/spec/fixtures/lod_lang_search_enesfrde.rdf.xml +60 -0
  62. data/spec/fixtures/lod_lang_search_sv.rdf.xml +42 -0
  63. data/spec/fixtures/lod_loc_term_found.rdf.xml +5 -0
  64. data/spec/lib/authorities/discogs/generic_authority_spec.rb +235 -0
  65. data/spec/lib/authorities/discogs_spec.rb +17 -0
  66. data/spec/lib/authorities/linked_data/config_spec.rb +68 -5
  67. data/spec/lib/authorities/linked_data/find_term_spec.rb +298 -3
  68. data/spec/lib/authorities/linked_data/generic_authority_spec.rb +46 -485
  69. data/spec/lib/authorities/linked_data/search_config_spec.rb +154 -3
  70. data/spec/lib/authorities/linked_data/search_query_spec.rb +240 -3
  71. data/spec/lib/authorities/linked_data/term_config_spec.rb +193 -5
  72. data/spec/lib/configuration_spec.rb +18 -0
  73. data/spec/models/linked_data/config/context_property_map_spec.rb +3 -31
  74. data/spec/services/iri_template_service_spec.rb +54 -12
  75. data/spec/{lib/authorities → services}/linked_data/authority_service_spec.rb +47 -0
  76. data/spec/services/linked_data/language_service_spec.rb +52 -11
  77. data/spec/services/linked_data/ldpath_service_spec.rb +61 -0
  78. data/spec/services/linked_data/mapper/graph_ldpath_mapper_service_spec.rb +118 -0
  79. data/spec/services/linked_data/mapper/graph_predicate_mapper_service_spec.rb +110 -0
  80. data/spec/services/linked_data/mapper/term_results_mapper_service_spec.rb +94 -0
  81. data/spec/spec_helper.rb +1 -1
  82. data/spec/support/matchers/include_hash.rb +5 -0
  83. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -0
  84. metadata +73 -5
  85. data/lib/qa/authorities/linked_data/rdf_helper.rb +0 -49
@@ -52,6 +52,10 @@ describe Qa::TermsController, type: :controller do
52
52
  get :search, params: { q: "a query", vocab: "oclcts" }
53
53
  expect(response.code).to eq("400")
54
54
  end
55
+ it "returns 400 for discogs" do
56
+ get :search, params: { q: "a query", vocab: "discogs" }
57
+ expect(response.code).to eq("400")
58
+ end
55
59
  end
56
60
  end
57
61
 
@@ -0,0 +1,298 @@
1
+ require 'spec_helper'
2
+ require 'qa/authorities/linked_data/config/search_config'
3
+ require 'json'
4
+
5
+ RSpec.describe 'language processing', type: :controller do # rubocop:disable RSpec/DescribeClass
6
+ before do
7
+ @controller = Qa::LinkedDataTermsController.new
8
+ @routes = Qa::Engine.routes
9
+ stub_request(:get, "http://localhost/test_default/search?query=my_query")
10
+ .to_return(status: 200, body: webmock_fixture("lod_lang_search_enesfrde.rdf.xml"), headers: { 'Content-Type' => 'application/rdf+xml' })
11
+ end
12
+
13
+ let(:de_expected_results) do
14
+ [
15
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "http://id.worldcat.org/fast/530369", "label" => "Buttermilch" }, # de only b/c all tagged
16
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "http://id.worldcat.org/fast/557490", "label" => "[Kondensmilch, lakto densigita]" }, # de + untagged
17
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "http://id.worldcat.org/fast/5140", "label" => "getrocknete Milch" } # de only b/c all tagged
18
+ ]
19
+ end
20
+ let(:en_expected_results) do
21
+ [
22
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "http://id.worldcat.org/fast/530369", "label" => "buttermilk" }, # en only b/c all tagged
23
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "http://id.worldcat.org/fast/557490", "label" => "[condensed milk, lakto densigita]" }, # en + untagged
24
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "http://id.worldcat.org/fast/5140", "label" => "dried milk" } # en only b/c all tagged
25
+ ]
26
+ end
27
+ let(:es_expected_results) do
28
+ [
29
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "http://id.worldcat.org/fast/530369", "label" => "[Buttermilch, buttermilk, Babeurre]" }, # all matches b/c no matching tag
30
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "http://id.worldcat.org/fast/557490", "label" => "[leche condensada, lakto densigita]" }, # es + untagged
31
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "http://id.worldcat.org/fast/5140", "label" => "leche en polvo" } # es only b/c all tagged
32
+ ]
33
+ end
34
+ let(:fr_expected_results) do
35
+ [
36
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "http://id.worldcat.org/fast/530369", "label" => "Babeurre" }, # fr only b/c all tagged
37
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "http://id.worldcat.org/fast/557490", "label" => "[lait condensé, lakto densigita]" }, # fr + untagged
38
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "http://id.worldcat.org/fast/5140", "label" => "lait en poudre" } # fr only b/c all tagged
39
+ ]
40
+ end
41
+ let(:fr_alt_expected_results) do
42
+ [
43
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "530369", "label" => "Babeurre (délicieux)" }, # fr only in results + (alt label)
44
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "557490", "label" => "lait condensé (crémeux)" }, # fr only in results + (alt label)
45
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "5140", "label" => "lait en poudre (poudreux)" } # fr only in results + (alt label)
46
+ ]
47
+ end
48
+ let(:sv_alt_expected_results) do
49
+ [
50
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "530369", "label" => "kärnmjölk (smaskigt)" }, # sv only in results + (alt label)
51
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "557490", "label" => "kondenserad mjölk (krämig)" }, # sv only in results + (alt label)
52
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "5140", "label" => "mjölkpulver (pulver-)" } # sv only in results + (alt label)
53
+ ]
54
+ end
55
+ let(:nil_expected_results) do
56
+ # returns values for all language when requested lang is nil
57
+ [
58
+ { "uri" => "http://id.worldcat.org/fast/530369", "id" => "http://id.worldcat.org/fast/530369", "label" => "[Buttermilch, buttermilk, Babeurre]" },
59
+ { "uri" => "http://id.worldcat.org/fast/557490", "id" => "http://id.worldcat.org/fast/557490", "label" => "[Kondensmilch, condensed milk, leche condensada, lait condensé, lakto densigita]" },
60
+ { "uri" => "http://id.worldcat.org/fast/5140", "id" => "http://id.worldcat.org/fast/5140", "label" => "[getrocknete Milch, dried milk, leche en polvo, lait en poudre]" }
61
+ ]
62
+ end
63
+
64
+ context 'when configured authority URL includes a language parameter' do
65
+ before do
66
+ stub_request(:get, "http://localhost/test_default/search?lang=sv&param1=delta&param2=echo&query=my_query&subauth=search_sub1_name")
67
+ .to_return(status: 200, body: webmock_fixture("lod_lang_search_sv.rdf.xml"), headers: { 'Content-Type' => 'application/rdf+xml' })
68
+ end
69
+
70
+ it 'passes language to authority for filtering based on user specified language' do
71
+ get :search, params: { q: 'my_query', vocab: 'LOD_FULL_CONFIG', maximumRecords: '3', lang: 'sv' }
72
+ expect(response).to be_successful
73
+ results = JSON.parse(response.body)
74
+ expect(results).to match_array sv_alt_expected_results
75
+ end
76
+ end
77
+
78
+ context 'when language includes a WILDCARD (i.e. *)' do
79
+ before do
80
+ stub_request(:get, "http://localhost/test_default/search?subauth=search_sub1_name&query=my_query&param1=delta&param2=echo&lang=fr")
81
+ .to_return(status: 200, body: webmock_fixture("lod_lang_search_fr.rdf.xml"), headers: { 'Content-Type' => 'application/rdf+xml' })
82
+ end
83
+
84
+ it 'does not filter languages through graph service' do
85
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: '*' }
86
+ expect(response).to be_successful
87
+ results = JSON.parse(response.body)
88
+ expect(results).to match_array nil_expected_results
89
+ end
90
+
91
+ it 'reverts to parameter default when passing to the authority' do
92
+ get :search, params: { q: 'my_query', vocab: 'LOD_FULL_CONFIG', maximumRecords: '3', lang: '*' }
93
+ expect(response).to be_successful
94
+ results = JSON.parse(response.body)
95
+ expect(results).to match_array fr_alt_expected_results
96
+ end
97
+ end
98
+
99
+ context 'when site defined default language' do
100
+ before do
101
+ allow(Qa.config).to receive(:default_language).and_return('en')
102
+ end
103
+
104
+ context 'and authority defined default language' do
105
+ before do
106
+ allow_any_instance_of(Qa::Authorities::LinkedData::SearchConfig).to receive(:language).and_return('de') # rubocop:disable RSpec/AnyInstance
107
+ end
108
+
109
+ context 'and language is passed via access_language in the http request header' do
110
+ context 'and user passes language as parameter' do
111
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
112
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
113
+ expect(response).to be_successful
114
+ results = JSON.parse(response.body)
115
+ expect(results).to match_array es_expected_results
116
+ end
117
+ end
118
+
119
+ context 'and user does NOT pass in language as a parameter' do
120
+ it 'filters results to the http request access_language (e.g. fr + untagged)' do
121
+ request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr'
122
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
123
+ expect(response).to be_successful
124
+ results = JSON.parse(response.body)
125
+ expect(results).to match_array fr_expected_results
126
+ end
127
+ end
128
+ end
129
+
130
+ context 'and language is NOT passed via access_language in the http request header' do
131
+ context 'and user passes language as parameter' do
132
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
133
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
134
+ expect(response).to be_successful
135
+ results = JSON.parse(response.body)
136
+ expect(results).to match_array es_expected_results
137
+ end
138
+ end
139
+
140
+ context 'and user does NOT pass in language as a parameter' do
141
+ it 'filters results to the authority defined language (e.g. de + untagged)' do
142
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
143
+ expect(response).to be_successful
144
+ results = JSON.parse(response.body)
145
+ expect(results).to match_array de_expected_results
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ context 'and authority does NOT define default language' do
152
+ before do
153
+ allow_any_instance_of(Qa::Authorities::LinkedData::SearchConfig).to receive(:language).and_return(nil) # rubocop:disable RSpec/AnyInstance
154
+ end
155
+
156
+ context 'and language is passed via access_language in the http request header' do
157
+ context 'and user passes language as parameter' do
158
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
159
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
160
+ expect(response).to be_successful
161
+ results = JSON.parse(response.body)
162
+ expect(results).to match_array es_expected_results
163
+ end
164
+ end
165
+
166
+ context 'and user does NOT pass in language as a parameter' do
167
+ it 'filters results to the http request access_language (e.g. fr + untagged)' do
168
+ request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr'
169
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
170
+ expect(response).to be_successful
171
+ results = JSON.parse(response.body)
172
+ expect(results).to match_array fr_expected_results
173
+ end
174
+ end
175
+ end
176
+
177
+ context 'and language is NOT passed via access_language in the http request header' do
178
+ context 'and user passes language as parameter' do
179
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
180
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
181
+ expect(response).to be_successful
182
+ results = JSON.parse(response.body)
183
+ expect(results).to match_array es_expected_results
184
+ end
185
+ end
186
+
187
+ context 'and user does NOT pass in language as a parameter' do
188
+ it 'filters results to the site defined language (e.g. en + untagged)' do
189
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
190
+ expect(response).to be_successful
191
+ results = JSON.parse(response.body)
192
+ expect(results).to match_array en_expected_results
193
+ end
194
+ end
195
+ end
196
+ end
197
+ end
198
+
199
+ context 'when site does NOT define default language' do
200
+ before do
201
+ allow(Qa.config).to receive(:default_language).and_return(nil)
202
+ end
203
+
204
+ context 'and authority defined default language' do
205
+ before do
206
+ allow_any_instance_of(Qa::Authorities::LinkedData::SearchConfig).to receive(:language).and_return('de') # rubocop:disable RSpec/AnyInstance
207
+ end
208
+
209
+ context 'and language is passed via access_language in the http request header' do
210
+ context 'and user passes language as parameter' do
211
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
212
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
213
+ expect(response).to be_successful
214
+ results = JSON.parse(response.body)
215
+ expect(results).to match_array es_expected_results
216
+ end
217
+ end
218
+
219
+ context 'and user does NOT pass in language as a parameter' do
220
+ it 'filters results to the http request access_language (e.g. fr + untagged)' do
221
+ request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr'
222
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
223
+ expect(response).to be_successful
224
+ results = JSON.parse(response.body)
225
+ expect(results).to match_array fr_expected_results
226
+ end
227
+ end
228
+ end
229
+
230
+ context 'and language is NOT passed via access_language in the http request header' do
231
+ context 'and user passes language as parameter' do
232
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
233
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
234
+ expect(response).to be_successful
235
+ results = JSON.parse(response.body)
236
+ expect(results).to match_array es_expected_results
237
+ end
238
+ end
239
+
240
+ context 'and user does NOT pass in language as a parameter' do
241
+ it 'filters results to the authority defined language (e.g. de + untagged)' do
242
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
243
+ expect(response).to be_successful
244
+ results = JSON.parse(response.body)
245
+ expect(results).to match_array de_expected_results
246
+ end
247
+ end
248
+ end
249
+ end
250
+
251
+ context 'and authority does NOT define default language' do
252
+ before do
253
+ allow_any_instance_of(Qa::Authorities::LinkedData::SearchConfig).to receive(:language).and_return(nil) # rubocop:disable RSpec/AnyInstance
254
+ end
255
+
256
+ context 'and language is passed via access_language in the http request header' do
257
+ context 'and user passes language as parameter' do
258
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
259
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
260
+ expect(response).to be_successful
261
+ results = JSON.parse(response.body)
262
+ expect(results).to match_array es_expected_results
263
+ end
264
+ end
265
+
266
+ context 'and user does NOT pass in language as a parameter' do
267
+ it 'filters results to the http request access_language (e.g. fr + untagged)' do
268
+ request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr'
269
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
270
+ expect(response).to be_successful
271
+ results = JSON.parse(response.body)
272
+ expect(results).to match_array fr_expected_results
273
+ end
274
+ end
275
+ end
276
+
277
+ context 'and language is NOT passed via access_language in the http request header' do
278
+ context 'and user passes language as parameter' do
279
+ it 'filters results to the user passed in language (e.g. es + untagged)' do
280
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3', lang: 'es' }
281
+ expect(response).to be_successful
282
+ results = JSON.parse(response.body)
283
+ expect(results).to match_array es_expected_results
284
+ end
285
+ end
286
+
287
+ context 'and user does NOT pass in language as a parameter' do
288
+ it 'does not filter results' do
289
+ get :search, params: { q: 'my_query', vocab: 'LOD_MIN_CONFIG', maximumRecords: '3' }
290
+ expect(response).to be_successful
291
+ results = JSON.parse(response.body)
292
+ expect(results).to match_array nil_expected_results
293
+ end
294
+ end
295
+ end
296
+ end
297
+ end
298
+ end
@@ -8,7 +8,7 @@
8
8
  "url": {
9
9
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
10
10
  "@type": "IriTemplate",
11
- "template": "http://localhost/test_default/term/{subauth}/{term_id}?{?param1}&{?param2}",
11
+ "template": "http://localhost/test_default/term/{subauth}/{term_id}?{?param1}&{?param2}&{?lang}",
12
12
  "variableRepresentation": "BasicRepresentation",
13
13
  "mapping": [
14
14
  {
@@ -37,15 +37,23 @@
37
37
  "property": "hydra:freetextQuery",
38
38
  "required": false,
39
39
  "default": "beta"
40
+ },
41
+ {
42
+ "@type": "IriTemplateMapping",
43
+ "variable": "lang",
44
+ "property": "hydra:freetextQuery",
45
+ "required": false,
46
+ "default": "de"
40
47
  }
41
48
  ]
42
49
  },
43
50
  "qa_replacement_patterns": {
44
51
  "term_id": "term_id",
45
- "subauth": "subauth"
52
+ "subauth": "subauth",
53
+ "lang": "lang"
46
54
  },
47
55
  "term_id": "ID",
48
- "language": [ "en" ],
56
+ "language": [ "es" ],
49
57
  "results": {
50
58
  "id_predicate": "http://purl.org/dc/terms/identifier",
51
59
  "label_predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
@@ -64,7 +72,7 @@
64
72
  "url": {
65
73
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
66
74
  "@type": "IriTemplate",
67
- "template": "http://localhost/test_default/search?{?subauth}&{?query}&{?param1}&{?param2}",
75
+ "template": "http://localhost/test_default/search?{?subauth}&{?query}&{?param1}&{?param2}&{?lang}",
68
76
  "variableRepresentation": "BasicRepresentation",
69
77
  "mapping": [
70
78
  {
@@ -93,12 +101,20 @@
93
101
  "property": "hydra:freetextQuery",
94
102
  "required": false,
95
103
  "default": "echo"
104
+ },
105
+ {
106
+ "@type": "IriTemplateMapping",
107
+ "variable": "lang",
108
+ "property": "hydra:freetextQuery",
109
+ "required": false,
110
+ "default": "fr"
96
111
  }
97
112
  ]
98
113
  },
99
114
  "qa_replacement_patterns": {
100
115
  "query": "query",
101
- "subauth": "subauth"
116
+ "subauth": "subauth",
117
+ "lang": "lang"
102
118
  },
103
119
  "language": [ "en", "fr", "de" ],
104
120
  "results": {
@@ -4,21 +4,21 @@
4
4
  "url": {
5
5
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
6
6
  "@type": "IriTemplate",
7
- "template": "http://localhost/test_default/term/{term_id}",
7
+ "template": "{term_uri}",
8
8
  "variableRepresentation": "BasicRepresentation",
9
9
  "mapping": [
10
10
  {
11
11
  "@type": "IriTemplateMapping",
12
- "variable": "term_id",
12
+ "variable": "term_uri",
13
13
  "property": "hydra:freetextQuery",
14
14
  "required": true
15
15
  }
16
16
  ]
17
17
  },
18
18
  "qa_replacement_patterns": {
19
- "term_id": "term_id"
19
+ "term_id": "term_uri"
20
20
  },
21
- "term_id": "ID",
21
+ "term_id": "URI",
22
22
  "language": [ "fr" ],
23
23
  "results": {
24
24
  "id_predicate": "http://id.loc.gov/vocabulary/identifiers/lccn",
@@ -4,21 +4,21 @@
4
4
  "url": {
5
5
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
6
6
  "@type": "IriTemplate",
7
- "template": "http://localhost/test_default/term/{term_id}",
7
+ "template": "{term_uri}",
8
8
  "variableRepresentation": "BasicRepresentation",
9
9
  "mapping": [
10
10
  {
11
11
  "@type": "IriTemplateMapping",
12
- "variable": "term_id",
12
+ "variable": "term_uri",
13
13
  "property": "hydra:freetextQuery",
14
14
  "required": true
15
15
  }
16
16
  ]
17
17
  },
18
18
  "qa_replacement_patterns": {
19
- "term_id": "term_id"
19
+ "term_id": "term_uri"
20
20
  },
21
- "term_id": "ID",
21
+ "term_id": "URI",
22
22
  "language": [ "en", "fr" ],
23
23
  "results": {
24
24
  "id_predicate": "http://purl.org/dc/terms/identifier",
@@ -4,23 +4,22 @@
4
4
  "url": {
5
5
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
6
6
  "@type": "IriTemplate",
7
- "template": "http://localhost/test_no_default/term/{term_id}",
7
+ "template": "{term_uri}",
8
8
  "variableRepresentation": "BasicRepresentation",
9
9
  "mapping": [
10
10
  {
11
11
  "@type": "IriTemplateMapping",
12
- "variable": "term_id",
12
+ "variable": "term_uri",
13
13
  "property": "hydra:freetextQuery",
14
14
  "required": true
15
15
  }
16
16
  ]
17
17
  },
18
18
  "qa_replacement_patterns": {
19
- "term_id": "term_id"
19
+ "term_id": "term_uri"
20
20
  },
21
- "term_id": "ID",
21
+ "term_id": "URI",
22
22
  "results": {
23
- "id_predicate": "http://id.loc.gov/vocabulary/identifiers/lccn",
24
23
  "label_predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
25
24
  "altlabel_predicate": "http://www.w3.org/2004/02/skos/core#altLabel"
26
25
  }