qa 5.10.0 → 5.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30ab17e283e9e6cf2e8234ef90d32bbbebe83ecdb7f52e7b07ccccf853eebd2c
4
- data.tar.gz: 83abfe73a222b69a782c54ed9120ec08c07db796656c9e942b5494c3cd32f847
3
+ metadata.gz: 0b356b770cbc77b1d67024f2a73be01b579943e75d9bda64e7f7dad04f66342b
4
+ data.tar.gz: a3f6a66764724811209c8616e00f260cab0d371f340117f335d384c1f84d1bd6
5
5
  SHA512:
6
- metadata.gz: e8e0c392d5c1c54c29e53281e2903722de989e6ce2eea8e50edef227604f4de74855f9d029123e76ce42948951603bbe56be8f32d7af5d4709c82e8dd7d35e97
7
- data.tar.gz: 28c4963e4852df3ce295c8df16cf074bb00ea123a18e62011c6f020cfaaa81c2da2da05134956d0a6a5dac921471c0bc4ea9764e81c50d810ff64d145c96f8b6
6
+ metadata.gz: 798c03132eac1750d15b0db93e2c6009925b1ebd3773619df77cd11f3f0cd661b6645d5e54122842efdc3e86d221356fb38aca6705943c35a5dc03d0a7010d2d
7
+ data.tar.gz: f1a3e23f4f3eb3197c3f8e39e2a9663ae7329a7e1e46e100f60d91f3b01b55e46a19ded39ac4b88520ec29189adc1e3d948bbfca7422044a92dc2c26d6eb3367
@@ -0,0 +1,62 @@
1
+ module Qa::Authorities
2
+ class Getty::AAT2 < Base
3
+ include WebServiceBase
4
+
5
+ def search(q)
6
+ parse_authority_response(json(build_query_url(q)))
7
+ end
8
+
9
+ def build_query_url(q)
10
+ "http://vocab.getty.edu/sparql.json?query=#{ERB::Util.url_encode(sparql(q))}&_implicit=false&implicit=true&_equivalent=false&_form=%2Fsparql"
11
+ end
12
+
13
+ def sparql(q) # rubocop:disable Metrics/MethodLength
14
+ search = untaint(q)
15
+ if search.include?(' ')
16
+ clauses = search.split(' ').collect do |i|
17
+ %((regex(?name, "#{i}", "i")))
18
+ end
19
+ ex = "(#{clauses.join(' && ')})"
20
+ else
21
+ ex = %(regex(?name, "#{search}", "i"))
22
+ end
23
+ # The full text index matches on fields besides the term, so we filter to ensure the match is in the term.
24
+ %(SELECT ?s ?name {
25
+ ?s a skos:Concept; luc:term "#{search}";
26
+ skos:inScheme <http://vocab.getty.edu/aat/> ;
27
+ gvp:prefLabelGVP [skosxl:literalForm ?name].
28
+ FILTER #{ex} .
29
+ } ORDER BY ?name).gsub(/[\s\n]+/, " ")
30
+ end
31
+
32
+ def untaint(q)
33
+ q.gsub(/[^\w\s-]/, '')
34
+ end
35
+
36
+ def find(id)
37
+ json(find_url(id))
38
+ end
39
+
40
+ def find_url(id)
41
+ "http://vocab.getty.edu/download/json?uri=http://vocab.getty.edu/aat/#{id}.json"
42
+ end
43
+
44
+ def request_options
45
+ { accept: 'application/sparql-results+json' }
46
+ end
47
+
48
+ private
49
+
50
+ # Reformats the data received from the Getty service
51
+ def parse_authority_response(response)
52
+ response['results']['bindings'].map do |result|
53
+ { 'id' => result['s']['value'], 'label' => result['name']['value'] }
54
+ end
55
+ rescue StandardError => e
56
+ cause = response.fetch('error', {}).fetch('cause', 'UNKNOWN')
57
+ cause = cause.present? ? cause : 'UNKNOWN'
58
+ Rails.logger.warn " ERROR fetching Getty response: #{e.message}; cause: #{cause}"
59
+ {}
60
+ end
61
+ end
62
+ end
@@ -1,4 +1,4 @@
1
- <?xml version="1.0" encoding="US-ASCII" ?>
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
2
  <Vocabulary xmlns="http://localhost/namespace" xmlns:vp="http://localhost/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost/namespace Getty_Vocab_Export_Languages.xsd" Title="Thesaurus of Geographic Names" Part="Languages" Date="2011-04-11">
3
3
  <Language>
4
4
  <Language_Code>70115</Language_Code>
data/lib/qa/engine.rb CHANGED
@@ -4,5 +4,18 @@ require 'qa/linked_data/authority_service'
4
4
  module Qa
5
5
  class Engine < ::Rails::Engine
6
6
  isolate_namespace Qa
7
+
8
+ config.before_configuration do
9
+ # rubocop:disable Style/IfUnlessModifier
10
+
11
+ # see https://github.com/fxn/zeitwerk#for_gem
12
+ # Blacklight puts a generator into LOCAL APP lib/generators, so tell
13
+ # zeitwerk to ignore the whole directory? If we're using zeitwerk
14
+ #
15
+ # See: https://github.com/cbeer/engine_cart/issues/117
16
+ if Rails.try(:autoloaders).try(:main).respond_to?(:ignore)
17
+ Rails.autoloaders.main.ignore(Rails.root.join('lib', 'generators'))
18
+ end
19
+ end
7
20
  end
8
21
  end
data/lib/qa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Qa
2
- VERSION = "5.10.0".freeze
2
+ VERSION = "5.11.0".freeze
3
3
  end
@@ -2,7 +2,7 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Qa::Services::RDFAuthorityParser do
5
- let(:source) { [File.join(fixture_path, 'lexvo_snippet.rdf.xml')] }
5
+ let(:source) { [Qa::Engine.root.join('spec', 'fixtures', 'lexvo_snippet.rdf.xml')] }
6
6
  let(:format) { 'rdfxml' }
7
7
  let(:predicate) { RDF::URI("http://www.w3.org/2008/05/skos#prefLabel") }
8
8
  let(:name) { 'language' }
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: 5.10.0
4
+ version: 5.11.0
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: 2022-12-05 00:00:00.000000000 Z
19
+ date: 2023-11-09 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: activerecord-import
@@ -117,7 +117,7 @@ dependencies:
117
117
  version: '5.0'
118
118
  - - "<"
119
119
  - !ruby/object:Gem::Version
120
- version: '7.1'
120
+ version: '7.2'
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
@@ -127,7 +127,7 @@ dependencies:
127
127
  version: '5.0'
128
128
  - - "<"
129
129
  - !ruby/object:Gem::Version
130
- version: '7.1'
130
+ version: '7.2'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: rdf
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -475,6 +475,7 @@ files:
475
475
  - lib/qa/authorities/geonames.rb
476
476
  - lib/qa/authorities/getty.rb
477
477
  - lib/qa/authorities/getty/aat.rb
478
+ - lib/qa/authorities/getty/aat2.rb
478
479
  - lib/qa/authorities/getty/tgn.rb
479
480
  - lib/qa/authorities/getty/ulan.rb
480
481
  - lib/qa/authorities/linked_data.rb
@@ -660,7 +661,8 @@ files:
660
661
  homepage: https://github.com/projecthydra/questioning_authority
661
662
  licenses:
662
663
  - APACHE-2
663
- metadata: {}
664
+ metadata:
665
+ rubygems_mfa_required: 'true'
664
666
  post_install_message:
665
667
  rdoc_options: []
666
668
  require_paths:
@@ -676,7 +678,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
676
678
  - !ruby/object:Gem::Version
677
679
  version: '0'
678
680
  requirements: []
679
- rubygems_version: 3.3.20
681
+ rubygems_version: 3.4.21
680
682
  signing_key:
681
683
  specification_version: 4
682
684
  summary: You should question your authorities.