qa_server 1.0.0 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb899be9f195123d4e4b12780679afac70ea5322
4
- data.tar.gz: a12013b8d2434dae73f9d8ccf46ce0964fa95d9e
3
+ metadata.gz: 9ac54427130510f4f5dc59e1359ecc154dbc2b94
4
+ data.tar.gz: 07b349e08fa02aab38e5b6090e16dd0df16871e5
5
5
  SHA512:
6
- metadata.gz: 52e2544fe44d77e9db9e93402caf3d922bd68bbaf1cfd02c62bd26aa5615aa68ad22836797a9fd1a8bd18891592c3c3c2be5ef5d16d452823873c1bce38e91de
7
- data.tar.gz: 6eba1a6ffc47017d4ee5d8e5cc58e7c4bbadd84bb8bd2937483585fe520c49f0fd16a0699e6948b7e3c364620a4044a39fa30dd0823ea5bf727bcb614bb709b9
6
+ metadata.gz: b804da6a0a5234a44ec0405685b6b0a948f1e9027043a0d864b935cb46cdfeb02400611d6f4d8ca391a4f6e69ab98a146f3f01a8491c6f046a1fd1b2858ad074
7
+ data.tar.gz: ed2f9fd29a267b4a435ac11e4e3ca4a4c41c04b3c37bdb846243dafc71d14229a7b426ca37b7cd420eb2304b9226bb32443ef4328bab1dd4046231b2b9a4a628
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### 1.1.0 (2018-10-31)
2
+
3
+ * allow historical data to be displayed as graph or datatable (configuration)
4
+ * drive main nav menu from navmenu_presenter (configuration)
5
+ * Add better install instructions in README
6
+
1
7
  ### 1.0.0 (2018-09-24)
2
8
 
3
9
  * drive URL base host path from qa engine mount location
data/Gemfile.lock CHANGED
@@ -1,6 +1,6 @@
1
1
  GIT
2
2
  remote: https://github.com/samvera/questioning_authority.git
3
- revision: e870fc07b991188053d2cd9eeb6a843b896911d8
3
+ revision: f44e597474cd55f64fb31a77bdb39ece81b97fa8
4
4
  branch: min_context
5
5
  specs:
6
6
  qa (2.1.1)
@@ -53,7 +53,7 @@ GEM
53
53
  activemodel (= 5.1.6)
54
54
  activesupport (= 5.1.6)
55
55
  arel (~> 8.0)
56
- activerecord-import (0.25.0)
56
+ activerecord-import (0.27.0)
57
57
  activerecord (>= 3.2)
58
58
  activesupport (5.1.6)
59
59
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -329,9 +329,9 @@ GEM
329
329
  sprockets (>= 2.8, < 4.0)
330
330
  sprockets-rails (>= 2.0, < 4.0)
331
331
  tilt (>= 1.1, < 3)
332
- selenium-webdriver (3.14.0)
332
+ selenium-webdriver (3.14.1)
333
333
  childprocess (~> 0.5)
334
- rubyzip (~> 1.2)
334
+ rubyzip (~> 1.2, >= 1.2.2)
335
335
  shex (0.5.2)
336
336
  ebnf (~> 1.1)
337
337
  json-ld (>= 2.2, < 4.0)
@@ -381,7 +381,7 @@ GEM
381
381
  websocket-driver (0.6.5)
382
382
  websocket-extensions (>= 0.1.0)
383
383
  websocket-extensions (0.1.3)
384
- xpath (3.1.0)
384
+ xpath (3.2.0)
385
385
  nokogiri (~> 1.8)
386
386
 
387
387
  PLATFORMS
data/README.md CHANGED
@@ -6,6 +6,7 @@ This rails engine can be installed into your app to serve as a Questioning Autho
6
6
  * [Architecture for Authority Lookup](https://wiki.duraspace.org/x/84E2BQ) document describes the authority access and normalization layer that provides applications with a consistent output for processing.
7
7
  * [Authority aggregation and indexing](https://wiki.duraspace.org/display/ld4lLABS/Authority+aggregation+and+indexing) document describes the technology used for caching authority data.
8
8
  * [samvera/questioning_authority](https://github.com/samvera/questioning_authority) (QA) is the gem that provides access to external authorities and normalizes the results. See the [Linked Open Data (LOD) Authorities](https://github.com/samvera/questioning_authority#linked-open-data-lod-authorities) section for details on the primary part of QA that is used by this engine.
9
+ * [ruby-rdf/linkeddata](https://github.com/ruby-rdf/linkeddata) is a gem that processes linked data in a number of RDF formats.
9
10
  * [LD4P/linked_data_authorities](https://github.com/LD4P/linked_data_authorities) holds predefined Questioning Authority configurations that work with this qa_server engine.
10
11
 
11
12
 
@@ -20,7 +21,7 @@ Tested with...
20
21
 
21
22
  ### Prerequisites
22
23
 
23
- 1. [ImageMagick](http://www.imagemagick.org/)
24
+ 1. [ImageMagick](http://www.imagemagick.org/) - Used to generate status charts. Generated charts will be saved in `app/assets/images/qa_server/charts` directory.
24
25
 
25
26
  ### Installation Instructions
26
27
 
@@ -49,6 +50,8 @@ $ rails g qa_server:install
49
50
  $ rake db:migrate
50
51
  ```
51
52
 
53
+ If upgrading instead of installing, see the Release notes for steps you may need to take manually since you won't be running the installer.
54
+
52
55
  #### Test the install
53
56
 
54
57
  * Start rails server with `rails s`
@@ -67,6 +67,11 @@ td.position {
67
67
  background-color: #ffcccc;
68
68
  }
69
69
 
70
+ .status-neutral {
71
+ text-align: center;
72
+ background-color: #ffffff;
73
+ }
74
+
70
75
  label.horizontal-list {
71
76
  padding-right: 15px;
72
77
  }
@@ -6,6 +6,10 @@ require 'gruff'
6
6
  # This presenter class provides all data needed by the view that monitors status of authorities.
7
7
  module QaServer
8
8
  class MonitorStatusPresenter # rubocop:disable Metrics/ClassLength
9
+ HISTORICAL_AUTHORITY_NAME_IDX = 0
10
+ HISTORICAL_FAILURE_COUNT_IDX = 1
11
+ HISTORICAL_PASSING_COUNT_IDX = 2
12
+
9
13
  # @param current_summary [ScenarioRunSummary] summary status of the latest run of test scenarios
10
14
  # @param current_data [Array<Hash>] current set of failures for the latest test run, if any
11
15
  # @param historical_summary_data [Array<Hash>] summary of past failuring runs per authority to drive chart
@@ -124,6 +128,53 @@ module QaServer
124
128
  end
125
129
  end
126
130
 
131
+ def historical_data_authority_name(historical_entry)
132
+ historical_entry[QaServer::MonitorStatusPresenter::HISTORICAL_AUTHORITY_NAME_IDX]
133
+ end
134
+
135
+ def days_authority_passing(historical_entry)
136
+ historical_entry[QaServer::MonitorStatusPresenter::HISTORICAL_PASSING_COUNT_IDX]
137
+ end
138
+
139
+ def days_authority_failing(historical_entry)
140
+ historical_entry[QaServer::MonitorStatusPresenter::HISTORICAL_FAILURE_COUNT_IDX]
141
+ end
142
+
143
+ def days_authority_tested(historical_entry)
144
+ days_authority_passing(historical_entry) + days_authority_failing(historical_entry)
145
+ end
146
+
147
+ def percent_authority_failing(historical_entry)
148
+ days_authority_failing(historical_entry).to_f / days_authority_tested(historical_entry)
149
+ end
150
+
151
+ def percent_authority_failing_str(historical_entry)
152
+ "#{percent_authority_failing(historical_entry) * 100}%"
153
+ end
154
+
155
+ def failure_style_class(historical_entry)
156
+ return "status-neutral" if days_authority_failing(historical_entry) <= 0
157
+ return "status-unknown" if percent_authority_failing(historical_entry) < 0.1
158
+ "status-bad"
159
+ end
160
+
161
+ def passing_style_class(historical_entry)
162
+ return "status-bad" if days_authority_passing(historical_entry) <= 0
163
+ "status-good"
164
+ end
165
+
166
+ def display_history_details?
167
+ display_historical_graph? || display_historical_datatable?
168
+ end
169
+
170
+ def display_historical_graph?
171
+ QaServer.config.display_historical_graph?
172
+ end
173
+
174
+ def display_historical_datatable?
175
+ QaServer.config.display_historical_datatable?
176
+ end
177
+
127
178
  private
128
179
 
129
180
  def graph_theme(g)
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+ # This presenter class provides all data needed by the view that show the list of authorities.
3
+ module QaServer
4
+ class NavmenuPresenter
5
+ include QaServer::Engine.routes.url_helpers
6
+
7
+ # @return [Array<Hash>] label-url pairs for the navigation bar's menu items justified left
8
+ # @example
9
+ # [
10
+ # { label: 'Home', url: '/' },
11
+ # { label: 'Usage', url: '/usage' },
12
+ # { label: 'Authorities', url: '/authorities' },
13
+ # { label: 'Check Status', url: '/check_status' },
14
+ # { label: 'Monitor Status', url: '/monitor_status' }
15
+ # ]
16
+ attr_reader :leftmenu_items
17
+
18
+ # @return [Array<Hash>] label-url pairs for the navigation bar's menu items justified right
19
+ # @example
20
+ # [
21
+ # { label: 'LD4L Gateway', url: 'http://ld4l.org' }
22
+ # ]
23
+ attr_reader :rightmenu_items
24
+
25
+ def initialize
26
+ @leftmenu_items = []
27
+ @leftmenu_items << { label: I18n.t("qa_server.menu.home"), url: root_path }
28
+ @leftmenu_items << { label: I18n.t("qa_server.menu.usage"), url: usage_index_path }
29
+ @leftmenu_items << { label: I18n.t("qa_server.menu.authorities"), url: authority_list_index_path }
30
+ @leftmenu_items << { label: I18n.t("qa_server.menu.check_status"), url: check_status_index_path }
31
+ @leftmenu_items << { label: I18n.t("qa_server.menu.monitor_status"), url: monitor_status_index_path }
32
+
33
+ @rightmenu_items = []
34
+ @rightmenu_items << { label: "LD4L Gateway", url: "http://ld4l.org/" }
35
+ end
36
+
37
+ # Append additional left justified menu items to the main navigation menu
38
+ # @param [Array<Hash<String,String>>] array of menu items to append with hash key = menu item label to display and hash value = URL for the menu item link
39
+ # @example
40
+ # [
41
+ # { label: 'New Item Label', url: 'http://new.item/one' },
42
+ # { label: '2nd New Item Label', url: 'http://new.item/two' }
43
+ # ]
44
+ def append_leftmenu_items(additional_items = [])
45
+ return if additional_items.nil?
46
+ additional_items.each { |item| @leftmenu_items << item }
47
+ end
48
+ end
49
+ end
@@ -33,18 +33,17 @@
33
33
  <div class="container-fluid">
34
34
  <div class="navbar-header">
35
35
  <ul class="nav-menu">
36
- <li class="left-menu"><%= link_to t("qa_server.menu.home"), main_app.root_path %></li>
37
- <li class="left-menu"><%= link_to t("qa_server.menu.usage"), qa_server.usage_index_path %></li>
38
- <li class="left-menu"><%= link_to t("qa_server.menu.authorities"), qa_server.authority_list_index_path %></li>
39
- <li class="left-menu"><%= link_to t("qa_server.menu.check_status"), qa_server.check_status_index_path %></li>
40
- <li class="left-menu"><%= link_to t("qa_server.menu.monitor_status"), qa_server.monitor_status_index_path %></li>
41
- <li class="right-menu"><%= link_to "LD4L Gateway", "http://ld4l.org/" %></li>
36
+ <% QaServer.config.navmenu_presenter.leftmenu_items.each do |item| %>
37
+ <li class='left-menu'><%= link_to item[:label], item[:url] %></li>
38
+ <% end %>
39
+ <% QaServer.config.navmenu_presenter.rightmenu_items.each do |item| %>
40
+ <li class='right-menu'><%= link_to item[:label], item[:url] %></li>
41
+ <% end %>
42
42
  </ul>
43
43
  </div>
44
44
  </div>
45
45
  </nav>
46
46
  </div>
47
- </div>
48
47
 
49
48
  <div id="content-wrapper" class="container" role="main">
50
49
  <a name="skip_to_content"></a>
@@ -12,11 +12,11 @@
12
12
  <th><%= t('qa_server.monitor_status.summary.total_tests') %></th>
13
13
  </tr>
14
14
  <tr>
15
- <td><%= @presenter.authorities_count %></td>
15
+ <td class="status-neutral"><%= @presenter.authorities_count %></td>
16
16
  <td class="<%= @presenter.authorities_count_style %>"><%= @presenter.failing_authorities_count %></td>
17
- <td><%= @presenter.passing_tests_count%></td>
17
+ <td class="status-neutral"><%= @presenter.passing_tests_count%></td>
18
18
  <td class="<%= @presenter.failing_tests_style %>"><%= @presenter.failing_tests_count %></td>
19
- <td><%= @presenter.tests_count %></td>
19
+ <td class="status-neutral"><%= @presenter.tests_count %></td>
20
20
  </tr>
21
21
  </table>
22
22
  <p class="status-update-dtstamp"><%= t('qa_server.monitor_status.summary.last_updated', date: @presenter.last_updated) %></p>
@@ -51,33 +51,35 @@
51
51
  </div>
52
52
  <% end %>
53
53
 
54
- <% if @presenter.history? %>
54
+ <% if @presenter.history? && @presenter.display_history_details?%>
55
55
  <div id="status-section" class="status-section">
56
56
  <h2><%= t('qa_server.monitor_status.history.title') %></h2>
57
57
  <p class="status-update-dtstamp"><%= t('qa_server.monitor_status.history.since', date: @presenter.first_updated) %></p>
58
58
  <%#= column_chart @presenter.historical_summary, stacked: true, colors: ["green", "red"], xtitle: 'Authority', ytitle: 'Pass-Fail', legend: 'bottom' %>
59
- <%= image_tag(@presenter.historical_graph, alt: 'History Graph Unavailable') %>
59
+ <% if @presenter.display_historical_graph? %>
60
+ <%= image_tag(@presenter.historical_graph, alt: 'History Graph Unavailable') %>
61
+ <% end %>
60
62
 
61
- <!--
62
- <table class="status">
63
- <tr>
64
- <th><%= t('qa_server.monitor_status.history.days_failing') %></th>
65
- <th><%= t('qa_server.monitor_status.history.authority') %></th>
66
- <th><%= t('qa_server.monitor_status.history.subauthority') %></th>
67
- <th><%= t('qa_server.monitor_status.history.service') %></th>
68
- <th><%= t('qa_server.monitor_status.history.action') %></th>
69
- </tr>
70
- <%# @presenter.history.each do |entry| %>
71
- <tr>
72
- <td><%#= entry[:days_failing] %></td>
73
- <td><%#= entry[:authority_name] %></td>
74
- <td><%#= entry[:subauthority_name] %></td>
75
- <td><%#= entry[:service] %></td>
76
- <td><%#= entry[:action] %></td>
77
- </tr>
78
- <%# end %>
79
- </table>
80
- -->
63
+ <% if @presenter.display_historical_datatable? %>
64
+ <table class="status">
65
+ <tr>
66
+ <th><%= t('qa_server.monitor_status.history.authority') %></th>
67
+ <th><%= t('qa_server.monitor_status.history.days_tested') %></th>
68
+ <th><%= t('qa_server.monitor_status.history.days_passing') %></th>
69
+ <th><%= t('qa_server.monitor_status.history.days_failing') %></th>
70
+ <th><%= t('qa_server.monitor_status.history.percent_failing') %></th>
71
+ </tr>
72
+ <% @presenter.historical_summary.each do |entry| %>
73
+ <tr>
74
+ <td><%= @presenter.historical_data_authority_name(entry) %></td>
75
+ <td class="status-neutral"><%= @presenter.days_authority_tested(entry) %></td>
76
+ <td class="<%= @presenter.passing_style_class(entry) %>"><%= @presenter.days_authority_passing(entry) %></td>
77
+ <td class="<%= @presenter.failure_style_class(entry) %>"><%= @presenter.days_authority_failing(entry) %></td>
78
+ <td class="<%= @presenter.failure_style_class(entry) %>"><%= @presenter.percent_authority_failing_str(entry) %></td>
79
+ </tr>
80
+ <% end %>
81
+ </table>
82
+ <% end %>
81
83
  </div>
82
84
  <% end %>
83
85
  </div>
@@ -60,9 +60,8 @@ en:
60
60
  history:
61
61
  title: History
62
62
  since: 'Since %{date} ET'
63
- days_failing: Days Failing
64
63
  authority: Authority
65
- subauthority: Subauthority
66
- service: Service
67
- action: Action
68
- url: Sample URL
64
+ days_failing: Days Failing
65
+ days_passing: Days Passing
66
+ days_tested: Days Tested
67
+ percent_failing: Percent Failing
@@ -57,5 +57,10 @@ module QaServer
57
57
  " <script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>\n"
58
58
  end
59
59
  end
60
+
61
+ def create_location_for_charts
62
+ say_status('info', ' -- creating directory to hold dynamically generated charts', :blue)
63
+ copy_file 'app/assets/images/qa_server/charts/.keep'
64
+ end
60
65
  end
61
66
  end
@@ -1,4 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
  QaServer.config do |config|
3
- # no configurations at this time
3
+ # Displays a graph of historical test data when true
4
+ # @param [Boolean] display history graph when true
5
+ # config.display_historical_graph = false
6
+
7
+ # Displays a datatable of historical test data when true
8
+ # @param [Boolean] display history datatable when true
9
+ # config.display_historical_datatable = true
10
+
11
+ # Additional menu items to add to the main navigation menu's set of left justified menu items
12
+ # @param [Array<Hash<String,String>>] array of menu items to append with hash label: is menu item label to display and hash url: is URL for the menu item link
13
+ # config.navmenu_extra_leftitems = [
14
+ # { label: 'Your Menu Item Label', url: 'http://your.menu.item/url' }
15
+ # ]
4
16
  end
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  en:
3
3
  qa_server:
4
- application_version: "0.1.0"
4
+ application_version: "YOUR APPS VERSION"
5
5
  application_name: "My Institution Lookup Service"
6
6
  footer:
7
7
  copyright_html: "<strong>Copyright &copy; 2018 Cornell</strong> Licensed under the Apache License, Version 2.0"
@@ -1,6 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
  module QaServer
3
3
  class Configuration
4
- # no configurations at this time
4
+ attr_writer :display_historical_graph
5
+ def display_historical_graph?
6
+ return @display_historical_graph unless @display_historical_graph.nil?
7
+ @display_historical_graph = false
8
+ end
9
+
10
+ attr_writer :display_historical_datatable
11
+ def display_historical_datatable?
12
+ return @display_historical_datatable unless @display_historical_datatable.nil?
13
+ @display_historical_datatable = true
14
+ end
15
+
16
+ # Additional menu items to add to the main navigation menu's set of left justified menu items
17
+ # @param [Array<Hash<String,String>>] array of menu items to append with hash key = menu item label to display and hash value = URL for the menu item link
18
+ # @example
19
+ # [
20
+ # { label: 'New Item Label', url: 'http://new.item/one' },
21
+ # { label: '2nd New Item Label', url: 'http://new.item/two' }
22
+ # ]
23
+ attr_accessor :navmenu_extra_leftitems
24
+
25
+ # Get the one and only instance of the navigation menu presenter used to construct the main navigation menu.
26
+ # To extend, set additional navigation menu items using #navmenu_extra_leftitems
27
+ def navmenu_presenter
28
+ return @navmenu_presenter if @navmenu_presenter.present?
29
+ @navmenu_presenter ||= QaServer::NavmenuPresenter.new
30
+ @navmenu_presenter.append_leftmenu_items(navmenu_extra_leftitems)
31
+ @navmenu_presenter
32
+ end
5
33
  end
6
34
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module QaServer
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
data/qa_server.gemspec CHANGED
@@ -31,7 +31,8 @@ Gem::Specification.new do |spec|
31
31
  # Produces dashboard charts on monitor status page
32
32
  spec.add_dependency 'gruff'
33
33
 
34
- spec.add_development_dependency 'binding_of_caller', '~> 1.0.0' # rubocop styleguide
34
+ spec.add_development_dependency 'better_errors' # provide debugging command line in
35
+ spec.add_development_dependency 'binding_of_caller' # provides deep stack info used by better_errors
35
36
  spec.add_development_dependency 'bixby', '~> 1.0.0' # rubocop styleguide
36
37
  # spec.add_development_dependency 'capybara', '~> 2.13'
37
38
  spec.add_development_dependency 'engine_cart', '~> 2.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qa_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - E. Lynette Rayle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,20 +66,34 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: better_errors
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: binding_of_caller
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 1.0.0
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: 1.0.0
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bixby
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -202,6 +216,7 @@ files:
202
216
  - app/presenters/qa_server/authority_list_presenter.rb
203
217
  - app/presenters/qa_server/check_status_presenter.rb
204
218
  - app/presenters/qa_server/monitor_status_presenter.rb
219
+ - app/presenters/qa_server/navmenu_presenter.rb
205
220
  - app/services/qa_server/authority_lister_service.rb
206
221
  - app/services/qa_server/authority_loader_service.rb
207
222
  - app/services/qa_server/authority_validator_service.rb
@@ -223,6 +238,7 @@ files:
223
238
  - lib/generators/qa_server/config_generator.rb
224
239
  - lib/generators/qa_server/install_generator.rb
225
240
  - lib/generators/qa_server/models_generator.rb
241
+ - lib/generators/qa_server/templates/app/assets/images/qa_server/charts/.keep
226
242
  - lib/generators/qa_server/templates/config/authorities/linked_data/agrovoc_direct.json
227
243
  - lib/generators/qa_server/templates/config/authorities/linked_data/agrovoc_ld4l_cache.json
228
244
  - lib/generators/qa_server/templates/config/authorities/linked_data/dbpedia_direct.json