relaton-plateau 2.0.0.pre.alpha.1 → 2.0.0.pre.alpha.2

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
  SHA256:
3
- metadata.gz: fb3cc6cdfa3cd0363255bab96606035fb447b921604c6e1714eadda34aefe7de
4
- data.tar.gz: c11916205329861dfc3f39a4a3f2d0850c6befff87fa8e9e42597fefb8b26ffa
3
+ metadata.gz: e319307851d018547c6ee5249c4a25494143187ae4de543a852c514b14db18ab
4
+ data.tar.gz: 280d98098a0940e148b4ad0cb2c682245553523aceed83cfe737f6e5b519b9d1
5
5
  SHA512:
6
- metadata.gz: e5302a8675a7ffc39319b8dddbc784cc7e63984ed516b4aaeae5fcf28625fc34e03b1251b655df91f731f968d17da98d1c47453c2f140307f6ce409daebd6eb0
7
- data.tar.gz: 80f019f1da353cf7dc1bdebba2d20a1eee0b49205d892d7d703f43def4f59c9eeedfe67397f73f0683a9b2d2f131df7cfcfea336a7dc0be69e424214ff013607
6
+ metadata.gz: ea7ca91ad74199efc694e6b76ae631feb9c8d2d5da3ab9b5446d599c86f4e886e988761e831adc2fba114749280324b6af8cffe97f735bd0bcda755fe2b073ca
7
+ data.tar.gz: dd49dc77518ce931f5ae868065f20f1ea28ce0505779df16897b6741edf79a5b4133625c09b2fd58417765c46c714af9a441f56ff8a90af29e9a3b8292ecb0a3
@@ -187,6 +187,15 @@ Applicable to modify and delete</a:documentation>
187
187
  <a:documentation>Optional caption of this block</a:documentation>
188
188
  </attribute>
189
189
  </optional>
190
+ <optional>
191
+ <attribute name="position">
192
+ <a:documentation>For an "add" change, whether the change is added before or after the location</a:documentation>
193
+ <choice>
194
+ <value>before</value>
195
+ <value>after</value>
196
+ </choice>
197
+ </attribute>
198
+ </optional>
190
199
  <optional>
191
200
  <element name="location">
192
201
  <a:documentation>The location(s) in the original document which have undergone the change described in this block</a:documentation>
@@ -208,11 +217,15 @@ Applicable to modify and delete</a:documentation>
208
217
  </zeroOrMore>
209
218
  <optional>
210
219
  <element name="newcontent">
211
- <a:documentation>New content to be added to the document; applicable to add and modify</a:documentation>
220
+ <a:documentation>New content to be added to the document; applicable to add and modify.
221
+ Can be blocks and/or sections</a:documentation>
212
222
  <ref name="OptionalId"/>
213
223
  <zeroOrMore>
214
224
  <ref name="BasicBlock"/>
215
225
  </zeroOrMore>
226
+ <zeroOrMore>
227
+ <ref name="section"/>
228
+ </zeroOrMore>
216
229
  </element>
217
230
  </optional>
218
231
  <zeroOrMore>
data/grammars/biblio.rng CHANGED
@@ -1142,11 +1142,11 @@ NOTE: This should preferably be encoded as a URI or short identifier, rather th
1142
1142
  <a:documentation>Information about how long the current description of the bibliographic item is valid for</a:documentation>
1143
1143
  </ref>
1144
1144
  </optional>
1145
- <optional>
1145
+ <zeroOrMore>
1146
1146
  <ref name="depiction">
1147
1147
  <a:documentation>Depiction of the bibliographic item, typically an image</a:documentation>
1148
1148
  </ref>
1149
- </optional>
1149
+ </zeroOrMore>
1150
1150
  </define>
1151
1151
  <define name="ReducedBibliographicItem">
1152
1152
  <a:documentation>Reduced description of a bibliographic resource, without mandatory title and docidentifier, used for document relations
@@ -1939,10 +1939,10 @@ Detailed in https://www.relaton.org/model/relations/</a:documentation>
1939
1939
  <value>hasAnnotation</value>
1940
1940
  <value>draftOf</value>
1941
1941
  <value>hasDraft</value>
1942
- <value>preliminaryDraftOf</value>
1943
- <value>hasPreliminaryDraft</value>
1944
- <value>revisionDraftOf</value>
1945
- <value>hasRevisionDraft</value>
1942
+ <value>predecessorDraftOf</value>
1943
+ <value>hasPredecessorDraft</value>
1944
+ <value>successorDraftOf</value>
1945
+ <value>hasSuccessorDraft</value>
1946
1946
  <value>editionOf</value>
1947
1947
  <value>hasEdition</value>
1948
1948
  <value>updates</value>
@@ -2063,13 +2063,13 @@ provided that it is not the entire bibliographic item that is so related</a:docu
2063
2063
  <ref name="LocalizedString"/>
2064
2064
  </element>
2065
2065
  </optional>
2066
- <oneOrMore>
2066
+ <zeroOrMore>
2067
2067
  <element name="taxon">
2068
2068
  <a:documentation>The keywords as a hierarchical taxonomy. For example, the sequence of `taxon` elements
2069
2069
  `pump`, `centrifugal pump`, `line shaft pump` represents a taxonomic classification</a:documentation>
2070
2070
  <ref name="LocalizedString"/>
2071
2071
  </element>
2072
- </oneOrMore>
2072
+ </zeroOrMore>
2073
2073
  <zeroOrMore>
2074
2074
  <ref name="vocabid">
2075
2075
  <a:documentation>Identifiers for the keyword as a controlled vocabulary</a:documentation>
@@ -16,6 +16,10 @@ module Relaton
16
16
  @index ||= Relaton::Index.find_or_create :plateau, file: "#{INDEXFILE}.yaml"
17
17
  end
18
18
 
19
+ def log_error(msg)
20
+ Util.error msg
21
+ end
22
+
19
23
  def fetch(source)
20
24
  case source
21
25
  when "plateau-handbooks" then extract_handbooks_data
@@ -90,11 +94,12 @@ module Relaton
90
94
  doctype = entry["slug"].match("-") ? "annex" : "handbook"
91
95
 
92
96
  handbook["versions"].each do |version|
93
- item = HandbookParser.new(version: version, entry: entry, doctype: doctype).parse
97
+ item = HandbookParser.new(version: version, entry: entry, doctype: doctype, errors: @errors).parse
94
98
  save_document(item)
95
99
  end
96
100
  end
97
101
  index.save
102
+ report_errors
98
103
  end
99
104
 
100
105
  #
@@ -104,9 +109,10 @@ module Relaton
104
109
  data = fetch_json_data(TECHNICAL_REPORTS_URL)
105
110
  Util.info "Extracting technical reports data..."
106
111
  data["pageProps"]["nodes"].map do |entry|
107
- save_document(TechnicalReportParser.new(entry).parse)
112
+ save_document(TechnicalReportParser.new(entry, @errors).parse)
108
113
  end
109
114
  index.save
115
+ report_errors
110
116
  end
111
117
 
112
118
  def save_document(item)
@@ -3,10 +3,10 @@
3
3
  module Relaton
4
4
  module Plateau
5
5
  class HandbookParser < Parser
6
- def initialize(version:, entry:, doctype:)
6
+ def initialize(version:, entry:, doctype:, errors: {})
7
7
  @version = version
8
8
  @entry = entry
9
- super entry["handbook"]
9
+ super(entry["handbook"], errors)
10
10
  @doctype = doctype
11
11
  end
12
12
 
@@ -17,36 +17,58 @@ module Relaton
17
17
  end
18
18
 
19
19
  def parse_docnumber
20
- "Handbook ##{@entry["slug"]} #{edition}"
20
+ @errors[:hb_docnumber] &&= @entry["slug"].nil? || @entry["slug"].to_s.empty?
21
+ ["Handbook ##{@entry["slug"]}", edition].compact.join(" ")
21
22
  end
22
23
 
23
24
  def parse_abstract
24
- return [] unless @item["description"]
25
+ unless @item["description"]
26
+ @errors[:hb_abstract] &&= true
27
+ return []
28
+ end
25
29
 
26
- @item["description"].split("<br />").filter_map do |part|
30
+ result = @item["description"].split("<br />").filter_map do |part|
27
31
  text = part.strip
28
32
  next if text.empty?
29
33
 
30
34
  lang, script = detect_lang(text)
31
35
  create_abstract(text, lang, script)
32
36
  end
37
+ @errors[:hb_abstract] &&= result.empty?
38
+ result
33
39
  end
34
40
 
35
41
  def parse_edition
42
+ if edition.nil? || edition.empty?
43
+ @errors[:hb_edition] &&= true
44
+ return
45
+ end
46
+
36
47
  number = edition.match(/\d\.\d/)[0]
37
- Bib::Edition.new(content: edition, number: number)
48
+ result = Bib::Edition.new(content: edition, number: number)
49
+ @errors[:hb_edition] &&= result.nil?
50
+ result
38
51
  end
39
52
 
40
53
  def parse_date
41
- super << create_date(@version["date"].gsub(".", "-"))
54
+ if @version["date"].nil? || @version["date"].empty?
55
+ @errors[:hb_date] &&= true
56
+ return super
57
+ end
58
+
59
+ result = super << create_date(@version["date"].gsub(".", "-"))
60
+ @errors[:hb_date] &&= result.empty?
61
+ result
42
62
  end
43
63
 
44
64
  def parse_source
45
- %w[pdf html].map do |type|
65
+ result = %w[pdf html].map do |type|
46
66
  next unless @version[type]
47
67
 
48
68
  create_link(@version[type], type)
49
69
  end.compact
70
+ @errors[:hb_source] &&= result.empty?
71
+ result
50
72
  end
51
73
 
52
74
  def parse_ext
@@ -57,9 +79,13 @@ module Relaton
57
79
  doctype: Doctype.new(content: @doctype),
58
80
  flavor: "plateau",
59
81
  structuredidentifier: [strid],
60
- filesize: @version["filesize"].to_i
82
+ filesize: filesize
61
83
  )
62
84
  end
85
+ def filesize
86
+ @errors[:hb_filesize] &&= @version["filesize"].nil?
87
+ @version["filesize"].to_i
88
+ end
63
89
  end
64
90
  end
65
91
  end
@@ -5,8 +5,9 @@ module Relaton
5
5
  ATTRIS = %i[docidentifier docnumber title abstract depiction edition type
6
6
  date source contributor keyword ext].freeze
7
7
 
8
- def initialize(item)
8
+ def initialize(item, errors = {})
9
9
  @item = item
10
+ @errors = errors
10
11
  end
11
12
 
12
13
  def parse
@@ -19,7 +20,9 @@ module Relaton
19
20
  private
20
21
 
21
22
  def parse_docidentifier
22
- [create_docid("PLATEAU #{parse_docnumber}")]
23
+ result = [create_docid("PLATEAU #{parse_docnumber}")]
24
+ @errors[:parse_docidentifier] &&= result.empty?
25
+ result
23
26
  end
24
27
 
25
28
  def parse_docnumber; end
@@ -29,7 +32,7 @@ module Relaton
29
32
  end
30
33
 
31
34
  def create_abstract(content, lang = "ja", script = "Jpan")
32
- Bib::LocalizedMarkedUpString.new(content: content, language: lang, script: script)
35
+ Bib::Abstract.new(content: content, language: lang, script: script)
33
36
  end
34
37
 
35
38
  def detect_lang(text)
@@ -42,7 +45,9 @@ module Relaton
42
45
 
43
46
  def parse_title
44
47
  lang, script = detect_lang(@item["title"])
45
- [create_title(@item["title"], lang, script)]
48
+ result = [create_title(@item["title"], lang, script)]
49
+ @errors[:title] &&= result.empty?
50
+ result
46
51
  end
47
52
 
48
53
  def create_title(title, lang, script)
@@ -57,7 +62,9 @@ module Relaton
57
62
  mimetype += image_ext == "jpg" ? "jpeg" : image_ext
58
63
  src = "https://www.mlit.go.jp/#{@item["thumbnail"]["mediaItemUrl"]}"
59
64
  image = Bib::Image.new(src: src, mimetype: mimetype)
60
- Bib::Depiction.new(scope: "cover", image: [image])
65
+ result = Bib::Depiction.new(scope: "cover", image: [image])
66
+ @errors[:parse_depiction] &&= result.nil?
67
+ [result]
61
68
  end
62
69
 
63
70
  def parse_edition; raise "Not implemented" end
@@ -74,7 +81,9 @@ module Relaton
74
81
  ),
75
82
  ]
76
83
  org = Bib::Organization.new(name: name, abbreviation: Bib::LocalizedString.new(content: "MLIT"))
77
- [Bib::Contributor.new(organization: org, role: [Bib::Contributor::Role.new(type: "publisher")])]
84
+ result = [Bib::Contributor.new(organization: org, role: [Bib::Contributor::Role.new(type: "publisher")])]
85
+ @errors[:parse_contributor] &&= result.empty?
86
+ result
78
87
  end
79
88
 
80
89
  def create_date(date, type = "published")
@@ -1,42 +1,65 @@
1
1
  module Relaton
2
2
  module Plateau
3
3
  class TechnicalReportParser < Parser
4
- def initialize(entry)
4
+ def initialize(entry, errors = {})
5
5
  @entry = entry
6
- super entry["technicalReport"]
6
+ super(entry["technicalReport"], errors)
7
7
  end
8
8
 
9
9
  private
10
10
 
11
11
  def parse_docnumber
12
+ @errors[:tr_docnumber] &&= @entry["slug"].nil? || @entry["slug"].to_s.empty?
12
13
  "Technical Report ##{@entry["slug"]} #{edition_number}"
13
14
  end
14
15
 
15
16
  def parse_abstract
16
- super << create_abstract(@item["subtitle"])
17
+ if @item["subtitle"].nil? || @item["subtitle"].empty?
18
+ @errors[:tr_abstract] &&= true
19
+ return super
20
+ end
21
+
22
+ result = super << create_abstract(@item["subtitle"])
23
+ @errors[:tr_abstract] &&= result.empty?
24
+ result
17
25
  end
18
26
 
19
27
  def parse_edition
20
- Bib::Edition.new(content: edition_number, number: edition_number)
28
+ result = Bib::Edition.new(content: edition_number, number: edition_number)
29
+ result
21
30
  end
22
31
 
23
- def edition_number
24
- "1.0"
25
- end
32
+ def edition_number = "1.0"
26
33
 
27
34
  def parse_date
35
+ if @entry["date"].nil? || @entry["date"].empty?
36
+ @errors[:tr_date] &&= true
37
+ return super
38
+ end
39
+
28
40
  date_str = @entry["date"].sub(/T.*/, "")
29
- super << create_date(date_str)
41
+ result = super << create_date(date_str)
42
+ @errors[:tr_date] &&= result.empty?
43
+ result
30
44
  end
31
45
 
32
46
  def parse_source
33
- super << create_link(@item["pdf"], "pdf")
47
+ if @item["pdf"].nil? || @item["pdf"].empty?
48
+ @errors[:tr_source] &&= true
49
+ return super
50
+ end
51
+
52
+ result = super << create_link(@item["pdf"], "pdf")
53
+ @errors[:tr_source] &&= result.empty?
54
+ result
34
55
  end
35
56
 
36
57
  def parse_keyword
37
- @entry["globalTags"]["nodes"].map do |tag|
38
- Bib::Keyword.new(taxon: [Bib::LocalizedString.new(content: tag["name"])])
58
+ result = @entry["globalTags"]["nodes"].map do |tag|
59
+ Bib::Keyword.new(vocab: Bib::LocalizedString.new(content: tag["name"]))
39
60
  end
61
+ @errors[:tr_keyword] &&= result.empty?
62
+ result
40
63
  end
41
64
 
42
65
  def parse_ext
@@ -49,12 +72,19 @@ module Relaton
49
72
  subdoctype: parse_subdoctype,
50
73
  flavor: "plateau",
51
74
  structuredidentifier: [strid],
52
- filesize: @item["filesize"].to_i
75
+ filesize: filesize
53
76
  )
54
77
  end
55
78
 
79
+ def filesize
80
+ @errors[:tr_filesize] &&= @item["filesize"].nil?
81
+ @item["filesize"].to_i
82
+ end
83
+
56
84
  def parse_subdoctype
57
- @entry["technicalReportCategories"]["nodes"].dig(0, "name")
85
+ result = @entry["technicalReportCategories"]["nodes"].dig(0, "name")
86
+ @errors[:tr_subdoctype] &&= result.nil?
87
+ result
58
88
  end
59
89
  end
60
90
  end
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Plateau
3
- VERSION = "2.0.0-alpha.1".freeze
3
+ VERSION = "2.0.0-alpha.2".freeze
4
4
  end
5
5
  end
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  # spec.add_dependency "pubid", "~> 0.1.1"
27
27
  spec.add_dependency "base64"
28
+ spec.add_dependency "relaton-core", "~> 0.0.13"
28
29
  spec.add_dependency "relaton-index", "~> 0.2.12"
29
30
  spec.add_dependency "relaton-logger", "~> 0.2.0"
30
- spec.add_dependency "relaton-iso", "~> 2.0.0-alpha.2"
31
- spec.add_dependency "relaton-core", "~> 0.0.9"
31
+ spec.add_dependency "relaton-iso", "~> 2.0.0-alpha.7"
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-plateau
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.alpha.1
4
+ version: 2.0.0.pre.alpha.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -24,61 +24,61 @@ dependencies:
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
- name: relaton-index
27
+ name: relaton-core
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.12
32
+ version: 0.0.13
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.2.12
39
+ version: 0.0.13
40
40
  - !ruby/object:Gem::Dependency
41
- name: relaton-logger
41
+ name: relaton-index
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.2.0
46
+ version: 0.2.12
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 0.2.0
53
+ version: 0.2.12
54
54
  - !ruby/object:Gem::Dependency
55
- name: relaton-iso
55
+ name: relaton-logger
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 2.0.0.pre.alpha.2
60
+ version: 0.2.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 2.0.0.pre.alpha.2
67
+ version: 0.2.0
68
68
  - !ruby/object:Gem::Dependency
69
- name: relaton-core
69
+ name: relaton-iso
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.0.9
74
+ version: 2.0.0.pre.alpha.7
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.0.9
81
+ version: 2.0.0.pre.alpha.7
82
82
  description: Retrieve Project PLATEAU bibliographic items.
83
83
  email:
84
84
  - open.source@ribose.com