relaton 3.0.0.pre.alpha.13 → 3.0.0.pre.alpha.15

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/relaton/3gpp/bibliography.rb +7 -2
  3. data/lib/relaton/3gpp.rb +4 -0
  4. data/lib/relaton/adobe/bibliography.rb +5 -2
  5. data/lib/relaton/adobe.rb +4 -0
  6. data/lib/relaton/bib/model/item_shared.rb +5 -1
  7. data/lib/relaton/bib/model/localized_string.rb +10 -0
  8. data/lib/relaton/bipm/bibliography.rb +5 -1
  9. data/lib/relaton/bipm.rb +4 -0
  10. data/lib/relaton/calconnect/hit_collection.rb +7 -2
  11. data/lib/relaton/calconnect.rb +4 -0
  12. data/lib/relaton/ccsds/hit_collection.rb +5 -1
  13. data/lib/relaton/ccsds.rb +4 -0
  14. data/lib/relaton/cie/scrapper.rb +5 -1
  15. data/lib/relaton/cie.rb +4 -0
  16. data/lib/relaton/db/cache.rb +10 -5
  17. data/lib/relaton/db/registry.rb +1 -1
  18. data/lib/relaton/easc/bibliography.rb +5 -2
  19. data/lib/relaton/easc.rb +4 -0
  20. data/lib/relaton/ecma/bibliography.rb +5 -1
  21. data/lib/relaton/ecma.rb +4 -0
  22. data/lib/relaton/etsi/bibliography.rb +5 -1
  23. data/lib/relaton/etsi.rb +4 -0
  24. data/lib/relaton/evs/bibliography.rb +138 -0
  25. data/lib/relaton/evs/hit.rb +32 -0
  26. data/lib/relaton/evs/hit_collection.rb +73 -0
  27. data/lib/relaton/evs/item_data.rb +7 -0
  28. data/lib/relaton/evs/model/bibdata.rb +8 -0
  29. data/lib/relaton/evs/model/bibitem.rb +8 -0
  30. data/lib/relaton/evs/model/docidentifier.rb +79 -0
  31. data/lib/relaton/evs/model/ext.rb +12 -0
  32. data/lib/relaton/evs/model/item.rb +14 -0
  33. data/lib/relaton/evs/model/structured_identifier.rb +9 -0
  34. data/lib/relaton/evs/processor.rb +50 -0
  35. data/lib/relaton/evs/scraper.rb +212 -0
  36. data/lib/relaton/evs/util.rb +8 -0
  37. data/lib/relaton/evs.rb +27 -0
  38. data/lib/relaton/gost/bibliography.rb +5 -2
  39. data/lib/relaton/gost.rb +4 -0
  40. data/lib/relaton/iala/bibliography.rb +5 -2
  41. data/lib/relaton/iala.rb +4 -0
  42. data/lib/relaton/iana/bibliography.rb +5 -2
  43. data/lib/relaton/iana.rb +4 -0
  44. data/lib/relaton/iec/hit_collection.rb +7 -2
  45. data/lib/relaton/iec.rb +4 -0
  46. data/lib/relaton/ieee/bibliography.rb +14 -2
  47. data/lib/relaton/ieee.rb +4 -0
  48. data/lib/relaton/ietf/scraper.rb +7 -2
  49. data/lib/relaton/ietf.rb +4 -0
  50. data/lib/relaton/iho/bibliography.rb +5 -2
  51. data/lib/relaton/iho/processor.rb +3 -0
  52. data/lib/relaton/iho.rb +4 -0
  53. data/lib/relaton/iso/hit_collection.rb +7 -2
  54. data/lib/relaton/iso.rb +4 -0
  55. data/lib/relaton/itu/hit_collection.rb +7 -2
  56. data/lib/relaton/itu/model/ext.rb +10 -0
  57. data/lib/relaton/itu.rb +4 -0
  58. data/lib/relaton/jcgm/bibliography.rb +5 -2
  59. data/lib/relaton/jcgm.rb +4 -0
  60. data/lib/relaton/nist/hit_collection.rb +20 -1
  61. data/lib/relaton/oasis/bibliography.rb +5 -2
  62. data/lib/relaton/oasis.rb +4 -0
  63. data/lib/relaton/ogc/hit_collection.rb +7 -2
  64. data/lib/relaton/ogc.rb +4 -0
  65. data/lib/relaton/oiml/bibliography.rb +5 -2
  66. data/lib/relaton/oiml.rb +4 -0
  67. data/lib/relaton/omg/bibliography.rb +40 -2
  68. data/lib/relaton/omg/scraper.rb +14 -2
  69. data/lib/relaton/omg.rb +11 -0
  70. data/lib/relaton/version.rb +1 -1
  71. data/lib/relaton/xsf/hit_collection.rb +5 -2
  72. data/lib/relaton/xsf.rb +4 -0
  73. data/lib/relaton.rb +1 -0
  74. metadata +20 -6
data/lib/relaton/iso.rb CHANGED
@@ -19,6 +19,10 @@ require_relative "iso/bibliography"
19
19
  module Relaton
20
20
  module Iso
21
21
  INDEXFILE = "index-v2"
22
+ # The machine index on the data repo's Pages site (relaton#206) —
23
+ # manifest + per-shard rows read by HitCollection's index; the zip stays
24
+ # on the Pages site for the whole-index retry on a miss.
25
+ PAGES_URL = "https://relaton.github.io/relaton-data-iso/"
22
26
 
23
27
  def self.grammar_hash
24
28
  # gem_path = File.expand_path "..", __dir__
@@ -144,9 +144,14 @@ module Relaton
144
144
  [year.to_i, month.to_i]
145
145
  end
146
146
 
147
+ #
148
+ # The machine index on the Pages site (relaton#206, the W3C pilot's
149
+ # contract): a parsed query reads only its own shard. A Pages failure
150
+ # raises `Relaton::RequestError`; the whole-index zip on the same site
151
+ # serves only the retry on a miss.
152
+ #
147
153
  def index
148
- Relaton::Index.find_or_create :itu, url: "#{GH_ITU}#{INDEXFILE}.zip",
149
- file: "#{INDEXFILE}.yaml",
154
+ Relaton::Index.find_or_create :itu, pages_url: PAGES_URL,
150
155
  pubid_class: ::Pubid::Itu::Identifier
151
156
  end
152
157
 
@@ -8,6 +8,14 @@ require_relative "structured_identifier"
8
8
  module Relaton
9
9
  module Itu
10
10
  class Ext < Bib::Ext
11
+ # The `<flavor>` element is required by the shared ext grammar, and an
12
+ # ITU record is always flavor "itu" — including a legacy record
13
+ # deserialized before the producers stamped the attribute, which
14
+ # carries nil. The derived attribute keeps the element in the
15
+ # round-tripped XML (a `default:` would be suppressed by the
16
+ # serializer, omitting the element for every record).
17
+ attribute :flavor, :string, method: :itu_flavor
18
+
11
19
  attribute :doctype, Doctype
12
20
  attribute :structuredidentifier, StructuredIdentifier
13
21
  attribute :question, Question, collection: true
@@ -42,6 +50,8 @@ module Relaton
42
50
  end
43
51
 
44
52
  def get_schema_version = Relaton.schema_versions["relaton-model-itu"]
53
+
54
+ def itu_flavor = "itu"
45
55
  end
46
56
  end
47
57
  end
data/lib/relaton/itu.rb CHANGED
@@ -17,6 +17,10 @@ require_relative "itu/bibliography"
17
17
  module Relaton
18
18
  module Itu
19
19
  INDEXFILE = "index-v2"
20
+ # The machine index on the data repo's Pages site (relaton#206) —
21
+ # manifest + per-shard rows read by HitCollection's index; the zip stays
22
+ # on the Pages site for the whole-index retry on a miss.
23
+ PAGES_URL = "https://relaton.github.io/relaton-data-itu/"
20
24
 
21
25
  class Error < StandardError; end
22
26
 
@@ -66,10 +66,13 @@ module Relaton
66
66
  end
67
67
 
68
68
  def index
69
+ # The machine index on the Pages site (relaton#206): a parsed query
70
+ # reads only its own shard; a Pages failure raises
71
+ # `Relaton::RequestError`; the whole-index zip on the same site
72
+ # serves only the retry on a miss.
69
73
  Relaton::Index.find_or_create(
70
74
  :jcgm,
71
- url: "#{ENDPOINT}#{INDEXFILE}.zip",
72
- file: "#{INDEXFILE}.yaml",
75
+ pages_url: PAGES_URL,
73
76
  pubid_class: ::Pubid::Jcgm::Identifier,
74
77
  )
75
78
  end
data/lib/relaton/jcgm.rb CHANGED
@@ -12,6 +12,10 @@ require_relative "jcgm/bibliography"
12
12
  module Relaton
13
13
  module Jcgm
14
14
  INDEXFILE = "index-v1".freeze
15
+ # The machine index on the data repo's Pages site (relaton#206) —
16
+ # manifest + per-shard rows read by the consumer's index; the zip stays
17
+ # on the Pages site for the whole-index retry on a miss.
18
+ PAGES_URL = "https://relaton.github.io/relaton-data-jcgm/"
15
19
 
16
20
  class Error < StandardError; end
17
21
 
@@ -60,9 +60,16 @@ module Relaton
60
60
  def search_filter # rubocop:disable Metrics/MethodLength
61
61
  refid = ::Pubid::Nist::Identifier.parse(@reference)
62
62
  parts = exclude_parts refid
63
+ # A stage-carrying reference matches stage-less rows: the published
64
+ # index has no stage-typed rows for these documents, and the
65
+ # from_ga search already fell back to the base document on the
66
+ # stage-narrowed miss (relaton#146) — so exclude the stage from
67
+ # both sides of the equality, not only from the hits.
68
+ parts << :stage if refid.stage
69
+ compare_refid = refid.stage ? refid.exclude(:stage) : refid
63
70
  arr = @array.select do |item|
64
71
  pubid = ::Pubid::Nist::Identifier.parse(item.hit[:code])
65
- pubid.exclude(*parts) == refid
72
+ pubid.exclude(*parts) == compare_refid
66
73
  rescue StandardError
67
74
  item.hit[:code] == ref
68
75
  end
@@ -250,6 +257,18 @@ module Relaton
250
257
  rows = index.search(r) { |row| row[:id].to_s.include?(needle) }
251
258
  .sort_by { |row| row[:id].to_s }
252
259
 
260
+ if rows.empty? && r.is_a?(::Pubid::Nist::Identifier) && r.stage
261
+ # A stage-carrying reference (the "fpd" of NIST FIPS 197) has no
262
+ # stage-typed row of its own in the published index — the data repo
263
+ # indexes the document family by number. Retry with the stage
264
+ # excluded so the base document answers, as the released
265
+ # 3.0.0.pre.alpha.1 line did (relaton#146).
266
+ base = r.exclude(:stage)
267
+ needle = base.to_s
268
+ rows = index.search(base) { |row| row[:id].to_s.include?(needle) }
269
+ .sort_by { |row| row[:id].to_s }
270
+ end
271
+
253
272
  rows.map do |row|
254
273
  # index-v2 stores Pubid objects; the rest of the pipeline (search_filter,
255
274
  # Hit, Scraper) works on string codes, so stringify at the boundary.
@@ -50,9 +50,12 @@ module Relaton
50
50
  # @return [Relaton::Index::Type]
51
51
  #
52
52
  def index
53
+ # The machine index on the Pages site (relaton#206): a parsed query
54
+ # reads only its own shard; a Pages failure raises
55
+ # `Relaton::RequestError`; the whole-index zip on the same site
56
+ # serves only the retry on a miss.
53
57
  Relaton::Index.find_or_create(
54
- :oasis, url: "#{ENDPOINT}#{INDEXFILE}.zip",
55
- file: "#{INDEXFILE}.yaml",
58
+ :oasis, pages_url: PAGES_URL,
56
59
  pubid_class: ::Pubid::Oasis::Identifier
57
60
  )
58
61
  end
data/lib/relaton/oasis.rb CHANGED
@@ -25,6 +25,10 @@ module Relaton
25
25
  # crawler derives it from the v2 rows for relaton v2 consumers (the
26
26
  # IANA/BIPM/W3C/ECMA shape).
27
27
  INDEXFILE = "index-v2".freeze
28
+ # The machine index on the data repo's Pages site (relaton#206) —
29
+ # manifest + per-shard rows read by the consumer's index; the zip stays
30
+ # on the Pages site for the whole-index retry on a miss.
31
+ PAGES_URL = "https://relaton.github.io/relaton-data-oasis/"
28
32
 
29
33
  class Error < StandardError; end
30
34
  # Your code goes here...
@@ -26,10 +26,15 @@ module Relaton
26
26
  end
27
27
 
28
28
  # @return [Relaton::Index::Type]
29
+ #
30
+ # The machine index on the Pages site (relaton#206, the W3C pilot's
31
+ # contract): a parsed query reads only its own shard. A Pages failure
32
+ # raises `Relaton::RequestError`; the whole-index zip on the same site
33
+ # serves only the retry on a miss.
34
+ #
29
35
  def index
30
36
  @index ||= Relaton::Index.find_or_create(
31
- :ogc, url: "#{ENDPOINT}#{INDEXFILE}.zip", file: "#{INDEXFILE}.yaml",
32
- pubid_class: ::Pubid::Ogc::Identifier
37
+ :ogc, pages_url: PAGES_URL, pubid_class: ::Pubid::Ogc::Identifier
33
38
  )
34
39
  end
35
40
 
data/lib/relaton/ogc.rb CHANGED
@@ -16,6 +16,10 @@ require_relative "ogc/bibliography"
16
16
  module Relaton
17
17
  module Ogc
18
18
  INDEXFILE = "index-v2".freeze
19
+ # The machine index on the data repo's Pages site (relaton#206) —
20
+ # manifest + per-shard rows read by HitCollection's index; the zip stays
21
+ # on the Pages site for the whole-index retry on a miss.
22
+ PAGES_URL = "https://relaton.github.io/relaton-data-ogc/"
19
23
  class Error < StandardError; end
20
24
 
21
25
  # Returns hash of XML reammar
@@ -70,10 +70,13 @@ module Relaton
70
70
  private
71
71
 
72
72
  def index
73
+ # The machine index on the Pages site (relaton#206): a parsed query
74
+ # reads only its own shard; a Pages failure raises
75
+ # `Relaton::RequestError`; the whole-index zip on the same site
76
+ # serves only the retry on a miss.
73
77
  Relaton::Index.find_or_create(
74
78
  :oiml,
75
- url: "#{ENDPOINT}#{INDEXFILE}.zip",
76
- file: "#{INDEXFILE}.yaml",
79
+ pages_url: PAGES_URL,
77
80
  pubid_class: ::Pubid::Oiml::Identifier,
78
81
  )
79
82
  end
data/lib/relaton/oiml.rb CHANGED
@@ -12,6 +12,10 @@ require_relative "oiml/bibliography"
12
12
  module Relaton
13
13
  module Oiml
14
14
  INDEXFILE = "index-v2".freeze
15
+ # The machine index on the data repo's Pages site (relaton#206) —
16
+ # manifest + per-shard rows read by the consumer's index; the zip stays
17
+ # on the Pages site for the whole-index retry on a miss.
18
+ PAGES_URL = "https://relaton.github.io/relaton-data-oiml/"
15
19
 
16
20
  class Error < StandardError; end
17
21
 
@@ -6,10 +6,48 @@ module Relaton
6
6
  module Bibliography
7
7
  extend self
8
8
 
9
+ ENDPOINT = "https://raw.githubusercontent.com/relaton/relaton-data-omg/main/".freeze
10
+
9
11
  # @param ref [String, Pubid::Omg::Identifier] the OMG standard reference
10
- # @return [Relaton::Omg::Item]
12
+ # @return [Relaton::Omg::Item, nil] nil when neither the machine index
13
+ # nor the live scrape answers
11
14
  def search(ref)
12
- Scraper.scrape_page ref
15
+ pubid = ref.is_a?(String) ? ::Pubid::Omg::Identifier.parse(ref) : ref
16
+ Util.info "Fetching from Relaton repository ...", key: pubid.to_s
17
+ from_index(pubid) || begin
18
+ # The crawl does not cover every spec (beta-version pages carry no
19
+ # download link), so a machine-index miss falls back to the live
20
+ # scrape. Index transport failures still raise — they are not
21
+ # misses.
22
+ Util.info "Not in the machine index; scraping www.omg.org ...", key: pubid.to_s
23
+ Scraper.scrape_page ref
24
+ end
25
+ end
26
+
27
+ # The machine index on the Pages site (relaton#206): the consumer reads
28
+ # the published index-v2 (whole-index mode — the manifest publishes no
29
+ # shards) and fetches the document from the data repo.
30
+ #
31
+ # @param pubid [Pubid::Omg::Identifier]
32
+ # @return [Relaton::Omg::Item, nil]
33
+ def from_index(pubid)
34
+ row = index.search(pubid).min_by { |r| r[:id].version.to_s }
35
+ return unless row
36
+
37
+ uri = URI("#{ENDPOINT}#{row[:file]}")
38
+ resp = Net::HTTP.get_response uri
39
+ unless resp.code == "200"
40
+ raise Relaton::RequestError, "Could not access #{uri}: HTTP #{resp.code}"
41
+ end
42
+
43
+ Relaton::Omg::Item.from_yaml resp.body
44
+ end
45
+
46
+ # @return [Relaton::Index::Type]
47
+ def index
48
+ Relaton::Index.find_or_create(
49
+ :omg, pages_url: PAGES_URL, pubid_class: ::Pubid::Omg::Identifier
50
+ )
13
51
  end
14
52
 
15
53
  # @param ref [String, Pubid::Omg::Identifier] the OMG standard reference
@@ -38,7 +38,16 @@ module Relaton
38
38
  @url += @version.gsub(" ", "/") if @version
39
39
  agent = Mechanize.new
40
40
  agent.open_timeout = 10
41
- @doc = agent.get(@url)
41
+ begin
42
+ @doc = agent.get(@url)
43
+ rescue Mechanize::ResponseCodeError => e
44
+ raise if e.response_code != "404" || !@part
45
+
46
+ # A glued beta label parses as the part ("1.5 Beta1" → version
47
+ # 1.5, part Beta1) but on omg.org it lives in the version URL
48
+ # segment — retry with the part appended.
49
+ @doc = agent.get("#{@url}/#{@part}")
50
+ end
42
51
  rescue Mechanize::ResponseCodeError => e
43
52
  return if e.response_code == "404"
44
53
 
@@ -155,7 +164,10 @@ module Relaton
155
164
  acronym = row.at_xpath("td[3]/a")[:href].split("/")[4]
156
165
  id = render_id(acronym, ver)
157
166
  docid = Docidentifier.new(content: id, type: "OMG")
158
- bibitem = Bib::ItemBase.new(formattedref: Bib::Formattedref.new(content: id), docidentifier: [docid])
167
+ # Bib::Relation's bibitem is typed ItemData on this model path —
168
+ # a plain ItemBase fails lutaml's type validation at serialization
169
+ # (the crawl's "attribute 'bibitem' value is a 'ItemBase'" skips).
170
+ bibitem = Bib::ItemData.new(formattedref: Bib::Formattedref.new(content: id), docidentifier: [docid])
159
171
  mem << Bib::Relation.new(type: "obsoletes", bibitem: bibitem)
160
172
  end
161
173
  mem
data/lib/relaton/omg.rb CHANGED
@@ -13,6 +13,17 @@ require_relative "omg/bibliography"
13
13
 
14
14
  module Relaton
15
15
  module Omg
16
+ # The flavor's published index on relaton-data-omg (relaton#206): the
17
+ # machine index the Pages site serves, built from the crawled
18
+ # data/*.yaml with pubid_class ::Pubid::Omg::Identifier. relaton-data-omg
19
+ # supersedes the flavor's earlier "no index, no data repository" shape —
20
+ # the crawler and the Pages site are live.
21
+ INDEXFILE = "index-v2"
22
+ # The machine index on the data repo's Pages site (relaton#206) — the
23
+ # manifest + whole-index zip the consumer reads; the crawl does not cover
24
+ # every spec, so Bibliography falls back to the live scrape on a miss.
25
+ PAGES_URL = "https://relaton.github.io/relaton-data-omg/"
26
+
16
27
  # Returns hash of XML reammar
17
28
  # @return [String]
18
29
  def self.grammar_hash
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "3.0.0.pre.alpha.13".freeze
2
+ VERSION = "3.0.0.pre.alpha.15".freeze
3
3
  end
@@ -31,10 +31,13 @@ module Relaton
31
31
  end
32
32
 
33
33
  def index
34
+ # The machine index on the Pages site (relaton#206): a parsed query
35
+ # reads only its own shard; a Pages failure raises
36
+ # `Relaton::RequestError`; the whole-index zip on the same site
37
+ # serves only the retry on a miss.
34
38
  @index ||= Relaton::Index.find_or_create(
35
39
  :xsf,
36
- url: "#{GHDATA_URL}#{INDEXFILE}.zip",
37
- file: "#{INDEXFILE}.yaml",
40
+ pages_url: PAGES_URL,
38
41
  pubid_class: ::Pubid::Xsf::Identifier,
39
42
  )
40
43
  end
data/lib/relaton/xsf.rb CHANGED
@@ -20,6 +20,10 @@ require_relative "xsf/bibliography"
20
20
  module Relaton
21
21
  module Xsf
22
22
  INDEXFILE = "index-v2".freeze
23
+ # The machine index on the data repo's Pages site (relaton#206) —
24
+ # manifest + per-shard rows read by the consumer's index; the zip stays
25
+ # on the Pages site for the whole-index retry on a miss.
26
+ PAGES_URL = "https://relaton.github.io/relaton-data-xsf/"
23
27
 
24
28
  class Error < StandardError; end
25
29
 
data/lib/relaton.rb CHANGED
@@ -33,6 +33,7 @@ module Relaton
33
33
  autoload :Ecma, "relaton/ecma"
34
34
  autoload :Etsi, "relaton/etsi"
35
35
  autoload :Easc, "relaton/easc"
36
+ autoload :Evs, "relaton/evs"
36
37
  autoload :Gost, "relaton/gost"
37
38
  autoload :Iana, "relaton/iana"
38
39
  autoload :Iala, "relaton/iala"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.pre.alpha.13
4
+ version: 3.0.0.pre.alpha.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-09 00:00:00.000000000 Z
11
+ date: 2026-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -98,14 +98,14 @@ dependencies:
98
98
  name: sqlite3
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.7'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.7'
111
111
  - !ruby/object:Gem::Dependency
@@ -442,14 +442,14 @@ dependencies:
442
442
  requirements:
443
443
  - - "~>"
444
444
  - !ruby/object:Gem::Version
445
- version: 2.0.0.pre.alpha.21
445
+ version: 2.0.0.pre.alpha.28
446
446
  type: :runtime
447
447
  prerelease: false
448
448
  version_requirements: !ruby/object:Gem::Requirement
449
449
  requirements:
450
450
  - - "~>"
451
451
  - !ruby/object:Gem::Version
452
- version: 2.0.0.pre.alpha.21
452
+ version: 2.0.0.pre.alpha.28
453
453
  - !ruby/object:Gem::Dependency
454
454
  name: yeptris
455
455
  requirement: !ruby/object:Gem::Requirement
@@ -809,6 +809,20 @@ files:
809
809
  - lib/relaton/etsi/pubid.rb
810
810
  - lib/relaton/etsi/status.rb
811
811
  - lib/relaton/etsi/util.rb
812
+ - lib/relaton/evs.rb
813
+ - lib/relaton/evs/bibliography.rb
814
+ - lib/relaton/evs/hit.rb
815
+ - lib/relaton/evs/hit_collection.rb
816
+ - lib/relaton/evs/item_data.rb
817
+ - lib/relaton/evs/model/bibdata.rb
818
+ - lib/relaton/evs/model/bibitem.rb
819
+ - lib/relaton/evs/model/docidentifier.rb
820
+ - lib/relaton/evs/model/ext.rb
821
+ - lib/relaton/evs/model/item.rb
822
+ - lib/relaton/evs/model/structured_identifier.rb
823
+ - lib/relaton/evs/processor.rb
824
+ - lib/relaton/evs/scraper.rb
825
+ - lib/relaton/evs/util.rb
812
826
  - lib/relaton/gb.rb
813
827
  - lib/relaton/gb/bibdata.rb
814
828
  - lib/relaton/gb/bibitem.rb