relaton-w3c 1.20.0 → 1.20.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.
@@ -9,7 +9,7 @@ module RelatonW3c
9
9
  @prefix = "W3C"
10
10
  @defaultprefix = %r{^W3C\s}
11
11
  @idtype = "W3C"
12
- @datasets = %w[w3c-rdf]
12
+ @datasets = %w[w3c-api]
13
13
  end
14
14
 
15
15
  # @param code [String]
@@ -0,0 +1,32 @@
1
+ module RelatonW3c
2
+ module RateLimitHandler
3
+ def self.fetched_objects
4
+ @fetched_objects ||= {}
5
+ end
6
+
7
+ def realize(obj)
8
+ href = obj.href || obj.links.self.href
9
+ return RateLimitHandler.fetched_objects[href] if RateLimitHandler.fetched_objects.key?(href)
10
+
11
+ n = 1
12
+ begin
13
+ RateLimitHandler.fetched_objects[href] = obj.realize
14
+ rescue NameError, # NameError caused by lutaml-hal-0.1.7/lib/lutaml/hal/client.rb:51:in `rescue in get': uninitialized constant Lutaml::Hal::Client::ConnectionError
15
+ Faraday::ConnectionFailed, Net::OpenTimeout => e
16
+ if n < 5
17
+ sleep_time = n * n
18
+ n += 1
19
+ Util.warn "Rate limit exceeded for #{href}, retrying in #{sleep_time} seconds..."
20
+ sleep sleep_time
21
+ retry
22
+ else
23
+ Util.warn "Failed to realize object: #{href}"
24
+ raise e
25
+ end
26
+ rescue Lutaml::Hal::NotFoundError
27
+ Util.warn "Object not found: #{href}"
28
+ RateLimitHandler.fetched_objects[href] = nil
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module RelatonW3c
2
- VERSION = "1.20.0".freeze
2
+ VERSION = "1.20.1".freeze
3
3
  end
data/relaton_w3c.gemspec CHANGED
@@ -31,14 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ["lib"]
33
33
 
34
- spec.add_dependency "linkeddata", "~> 3.2"
35
- spec.add_dependency "mechanize", "~> 2.10"
36
- spec.add_dependency "rdf", "~> 3.2"
37
- spec.add_dependency "rdf-normalize", "~> 0.6"
38
34
  spec.add_dependency "relaton-bib", "~> 1.20.0"
39
35
  spec.add_dependency "relaton-index", "~> 0.2.8"
40
- spec.add_dependency "rubyzip", "~> 2.3"
41
- spec.add_dependency "shex", "~> 0.7"
42
- spec.add_dependency "csv", "~> 3.0"
43
- spec.add_dependency "sparql", "~> 3.2"
36
+ spec.add_dependency "w3c_api", "~> 0.1.3"
44
37
  end
metadata CHANGED
@@ -1,71 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-w3c
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.0
4
+ version: 1.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-13 00:00:00.000000000 Z
11
+ date: 2025-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: linkeddata
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '3.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '3.2'
27
- - !ruby/object:Gem::Dependency
28
- name: mechanize
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.10'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.10'
41
- - !ruby/object:Gem::Dependency
42
- name: rdf
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.2'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.2'
55
- - !ruby/object:Gem::Dependency
56
- name: rdf-normalize
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.6'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.6'
69
13
  - !ruby/object:Gem::Dependency
70
14
  name: relaton-bib
71
15
  requirement: !ruby/object:Gem::Requirement
@@ -95,61 +39,19 @@ dependencies:
95
39
  - !ruby/object:Gem::Version
96
40
  version: 0.2.8
97
41
  - !ruby/object:Gem::Dependency
98
- name: rubyzip
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.3'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '2.3'
111
- - !ruby/object:Gem::Dependency
112
- name: shex
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.7'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.7'
125
- - !ruby/object:Gem::Dependency
126
- name: csv
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.0'
139
- - !ruby/object:Gem::Dependency
140
- name: sparql
42
+ name: w3c_api
141
43
  requirement: !ruby/object:Gem::Requirement
142
44
  requirements:
143
45
  - - "~>"
144
46
  - !ruby/object:Gem::Version
145
- version: '3.2'
47
+ version: 0.1.3
146
48
  type: :runtime
147
49
  prerelease: false
148
50
  version_requirements: !ruby/object:Gem::Requirement
149
51
  requirements:
150
52
  - - "~>"
151
53
  - !ruby/object:Gem::Version
152
- version: '3.2'
54
+ version: 0.1.3
153
55
  description: 'RelatonIso: retrieve W3C Standards for bibliographic using the IsoBibliographicItem
154
56
  model'
155
57
  email:
@@ -187,12 +89,11 @@ files:
187
89
  - lib/relaton_w3c/hit_collection.rb
188
90
  - lib/relaton_w3c/processor.rb
189
91
  - lib/relaton_w3c/pubid.rb
190
- - lib/relaton_w3c/rdf_archive.rb
92
+ - lib/relaton_w3c/rate_limit_handler.rb
191
93
  - lib/relaton_w3c/util.rb
192
94
  - lib/relaton_w3c/version.rb
193
95
  - lib/relaton_w3c/w3c_bibliographic_item.rb
194
96
  - lib/relaton_w3c/w3c_bibliography.rb
195
- - lib/relaton_w3c/workgroups.yaml
196
97
  - lib/relaton_w3c/xml_parser.rb
197
98
  - relaton_w3c.gemspec
198
99
  homepage: https://github.com/relaton/relaton-wc3
@@ -215,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
116
  - !ruby/object:Gem::Version
216
117
  version: '0'
217
118
  requirements: []
218
- rubygems_version: 3.3.27
119
+ rubygems_version: 3.5.22
219
120
  signing_key:
220
121
  specification_version: 4
221
122
  summary: 'RelatonIso: retrieve W3C Standards for bibliographic using the IsoBibliographicItem
@@ -1,67 +0,0 @@
1
- module RelatonW3c
2
- class RDFArchive
3
- def initialize(file = "archive.rdf")
4
- @file = file
5
- end
6
-
7
- #
8
- # Get RDF data from the updated archive file.
9
- #
10
- # @return [RDF::Repository]
11
- #
12
- def get_data
13
- if !File.exist?(@file) || File.mtime(@file) < Time.now - 86_400
14
- get_archive
15
- update_archive
16
- end
17
- RDF::Repository.load(@file)
18
- end
19
-
20
- private
21
-
22
- def update_archive
23
- # Load the older RDF/XML file
24
- older = Nokogiri::XML File.read(@file, encoding: "UTF-8")
25
-
26
- # Load the newer RDF/XML file
27
- url = "http://www.w3.org/2002/01/tr-automation/tr.rdf"
28
- newer = Nokogiri::XML OpenURI.open_uri(url).read
29
-
30
- # Create a hash to store rdf:about attributes from the newer file
31
- newer_elements = {}
32
- newer.root.element_children.each do |element|
33
- rdf_about = element.attribute('about')&.value
34
- newer_elements[rdf_about.sub(/^http\s:/, "")] = element if rdf_about
35
- end
36
-
37
- # Replace elements in the older document
38
- older.root.element_children.each do |element|
39
- rdf_about = element.attribute('about')&.value
40
- if rdf_about && newer_elements[url = rdf_about.sub(/^http\s:/, "")]
41
- element.replace(newer_elements[url])
42
- newer_elements.delete(url)
43
- end
44
- end
45
-
46
- # Add remaining new elements to the older document
47
- newer_elements.each_value do |element|
48
- older.root.add_child(element)
49
- end
50
-
51
- # Add new namespaces from the newer document to the older document
52
- newer.root.namespace_definitions.each do |ns|
53
- unless older.root.namespace_definitions.any? { |old_ns| old_ns.href == ns.href }
54
- older.root.add_namespace_definition(ns.prefix, ns.href)
55
- end
56
- end
57
- File.write @file, older.to_xml, encoding: "UTF-8"
58
- end
59
-
60
- def get_archive
61
- unless File.exist? @file
62
- url = "https://raw.githubusercontent.com/relaton/relaton-data-w3c/refs/heads/main/archive.rdf"
63
- File.write @file, OpenURI.open_uri(url).read, encoding: "UTF-8"
64
- end
65
- end
66
- end
67
- end