ieee-idams 0.2.6

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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +10 -0
  4. data/.rubocop_todo.yml +36 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/README.adoc +30 -0
  7. data/Rakefile +12 -0
  8. data/lib/ieee/idams/address.rb +32 -0
  9. data/lib/ieee/idams/affiliation.rb +34 -0
  10. data/lib/ieee/idams/affiliation_address.rb +37 -0
  11. data/lib/ieee/idams/affiliation_group.rb +19 -0
  12. data/lib/ieee/idams/article.rb +24 -0
  13. data/lib/ieee/idams/article_abstract.rb +22 -0
  14. data/lib/ieee/idams/article_copyright.rb +20 -0
  15. data/lib/ieee/idams/article_date.rb +33 -0
  16. data/lib/ieee/idams/article_filename.rb +22 -0
  17. data/lib/ieee/idams/article_info.rb +160 -0
  18. data/lib/ieee/idams/article_page_nums.rb +22 -0
  19. data/lib/ieee/idams/author.rb +64 -0
  20. data/lib/ieee/idams/author_group.rb +19 -0
  21. data/lib/ieee/idams/conf_group.rb +19 -0
  22. data/lib/ieee/idams/copyright.rb +24 -0
  23. data/lib/ieee/idams/copyright_group.rb +19 -0
  24. data/lib/ieee/idams/ics_code_term.rb +17 -0
  25. data/lib/ieee/idams/ics_codes.rb +17 -0
  26. data/lib/ieee/idams/isbn.rb +32 -0
  27. data/lib/ieee/idams/keyword.rb +19 -0
  28. data/lib/ieee/idams/keyword_set.rb +24 -0
  29. data/lib/ieee/idams/multimedia.rb +43 -0
  30. data/lib/ieee/idams/multimedia_component.rb +32 -0
  31. data/lib/ieee/idams/multimedia_compressed.rb +32 -0
  32. data/lib/ieee/idams/package_member_set.rb +15 -0
  33. data/lib/ieee/idams/product_number.rb +19 -0
  34. data/lib/ieee/idams/pub_sponsor.rb +17 -0
  35. data/lib/ieee/idams/pub_sponsoring_committee_set.rb +17 -0
  36. data/lib/ieee/idams/pub_topical_browse_set.rb +48 -0
  37. data/lib/ieee/idams/publication.rb +40 -0
  38. data/lib/ieee/idams/publication_acronym.rb +22 -0
  39. data/lib/ieee/idams/publication_info.rb +184 -0
  40. data/lib/ieee/idams/publisher.rb +29 -0
  41. data/lib/ieee/idams/standard_bundle.rb +43 -0
  42. data/lib/ieee/idams/standard_modifier_set.rb +15 -0
  43. data/lib/ieee/idams/standard_package_set.rb +15 -0
  44. data/lib/ieee/idams/standard_relationship.rb +36 -0
  45. data/lib/ieee/idams/version.rb +7 -0
  46. data/lib/ieee/idams/volume.rb +25 -0
  47. data/lib/ieee/idams/volume_info.rb +35 -0
  48. data/lib/ieee/idams/volume_info_issue.rb +22 -0
  49. data/lib/ieee/idams/volume_note_group.rb +17 -0
  50. data/lib/ieee/idams.rb +10 -0
  51. data/lib/ieee-idams.rb +16 -0
  52. data/references/ieee-books-xml-metadata-documentation.pdf +0 -0
  53. metadata +209 -0
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "affiliation_group"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # Represents an individual author
8
+ class Author < Lutaml::Model::Serializable
9
+ # AMS ID
10
+ # @return [Integer] author's AMS ID
11
+ attribute :amsid, :integer
12
+
13
+ # Order of authorship
14
+ # @return [Integer] author's order in the list of authors
15
+ attribute :authororder, :integer
16
+
17
+ # Normalized author name
18
+ # @return [String] surname, initials format
19
+ attribute :normname, :string
20
+
21
+ # Non-normalized author name
22
+ # @return [String] original format name
23
+ attribute :nonnormname, :string
24
+
25
+ # First name
26
+ # @return [String] author's first name
27
+ attribute :firstname, :string
28
+
29
+ # Middle name
30
+ # @return [String] author's middle name/initial
31
+ attribute :othername, :string
32
+
33
+ # Last name
34
+ # @return [String] author's surname
35
+ attribute :surname, :string
36
+
37
+ # Affiliation
38
+ # @return [String] author's institutional affiliation
39
+ attribute :affiliation, :string
40
+
41
+ # Affiliation information
42
+ # @return [AffiliationGroup] author's institutional affiliations
43
+ attribute :affgrp, AffiliationGroup
44
+
45
+ # Author type/role
46
+ # @return [String] one of: author, editor
47
+ attribute :authortype, :string, values: %w[author editor]
48
+
49
+ xml do
50
+ root "author"
51
+ map_element "amsid", to: :amsid
52
+ map_element "authororder", to: :authororder
53
+ map_element "normname", to: :normname, cdata: true
54
+ map_element "nonnormname", to: :nonnormname, cdata: true
55
+ map_element "firstname", to: :firstname, cdata: true
56
+ map_element "othername", to: :othername, cdata: true
57
+ map_element "surname", to: :surname, cdata: true
58
+ map_element "affiliation", to: :affiliation, cdata: true
59
+ map_element "affgrp", to: :affgrp
60
+ map_element "authortype", to: :authortype
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "author"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # Represents a group of authors
8
+ class AuthorGroup < Lutaml::Model::Serializable
9
+ # List of authors
10
+ # @return [Array<Author>] authors of the work
11
+ attribute :author, Author, collection: true
12
+
13
+ xml do
14
+ root "authorgroup"
15
+ map_element "author", to: :author
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Configuration Groiup
6
+ class ConfGroup < Lutaml::Model::Serializable
7
+ # <confgroup>
8
+ # <doi_permission>F</doi_permission>
9
+ # </confgroup>
10
+
11
+ attribute :doi_permission, :string, collection: true
12
+
13
+ xml do
14
+ root "confgroup"
15
+ map_element "doi_permission", to: :doi_permission
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "copyright"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # Represents a copyright entry
8
+ class Copyright < Lutaml::Model::Serializable
9
+ # Copyright year
10
+ # @return [Integer] year of copyright
11
+ attribute :year, :integer
12
+
13
+ # Copyright holder
14
+ # @return [String] name of copyright holder
15
+ attribute :holder, :string
16
+
17
+ xml do
18
+ root "copyright"
19
+ map_element "year", to: :year
20
+ map_element "holder", to: :holder
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "copyright"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # Represents a group of copyright information
8
+ class CopyrightGroup < Lutaml::Model::Serializable
9
+ # Copyright entries
10
+ # @return [Array<Copyright>] copyright information
11
+ attribute :copyright, Copyright, collection: true
12
+
13
+ xml do
14
+ root "copyrightgroup"
15
+ map_element "copyright", to: :copyright
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # ICS code with term
6
+ class IcsCodeTerm < Lutaml::Model::Serializable
7
+ attribute :codenum, :string
8
+ attribute :name, :string
9
+
10
+ xml do
11
+ root "code_term"
12
+ map_attribute "codenum", to: :codenum
13
+ map_content to: :name
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ics_code_term"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # ICS Codes
8
+ class IcsCodes < Lutaml::Model::Serializable
9
+ attribute :code_term, IcsCodeTerm, collection: true
10
+
11
+ xml do
12
+ root "icscodes"
13
+ map_element "code_term", to: :code_term
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Represents an ISBN identifier for a book
6
+ class Isbn < Lutaml::Model::Serializable
7
+ # ISBN number
8
+ # @return [String] 13 or 10 digit ISBN, max 15 chars
9
+ attribute :content, :string
10
+
11
+ # File type for this ISBN
12
+ # @return [String] one of: paperback, hardcover, ePub, PDF
13
+ attribute :isbnfiletype, :string, values: %w[paperback hardcover ePub PDF]
14
+
15
+ # ISBN type specification
16
+ # @return [String] one of: New-2005, Historical
17
+ attribute :isbntype, :string, values: %w[New-2005 Historical]
18
+
19
+ # Media type
20
+ # @return [String] one of: Paper, CD, Online, Electronic
21
+ attribute :mediatype, :string, values: %w[Paper CD Online Electronic]
22
+
23
+ xml do
24
+ root "isbn"
25
+ map_content to: :content
26
+ map_attribute "isbnfiletype", to: :isbnfiletype
27
+ map_attribute "isbntype", to: :isbntype
28
+ map_attribute "mediatype", to: :mediatype
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Represents a keyword
6
+ class Keyword < Lutaml::Model::Serializable
7
+ # Keyword term
8
+ # @return [String] keyword text
9
+ attribute :keywordterm, :string
10
+ attribute :keywordmodifier, :string
11
+
12
+ xml do
13
+ root "keyword"
14
+ map_element "keywordterm", to: :keywordterm, cdata: true
15
+ map_element "keywordmodifier", to: :keywordmodifier
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "keyword"
4
+
5
+ module Ieee
6
+ module Idams
7
+ # Represents a set of keywords
8
+ class KeywordSet < Lutaml::Model::Serializable
9
+ # Keyword type
10
+ # @return [String] type of keywords
11
+ attribute :keywordtype, :string
12
+
13
+ # List of keywords
14
+ # @return [Array<Keyword>] keywords
15
+ attribute :keyword, Keyword, collection: true
16
+
17
+ xml do
18
+ root "keywordset"
19
+ map_attribute "keywordtype", to: :keywordtype
20
+ map_element "keyword", to: :keyword
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "multimedia_compressed"
4
+ require_relative "multimedia_component"
5
+
6
+ module Ieee
7
+ module Idams
8
+ # Multimedia
9
+ class Multimedia < Lutaml::Model::Serializable
10
+ # <multimedia>
11
+ # <summary>The IEEE 1584 calculators can be accessed via the auxiliary files (5), ¿IEEE_1584_Bolted_Fault_Cal.xls¿ and
12
+ # ¿IEEE_1584_Arc_Flash_Hazard.xls¿, and test data can be accessed via the auxiliary files, ¿Data_set.xls¿,
13
+ # ¿Test_results_database.xls¿, and ¿CL_Fuse_test_data.xls¿ provided for use with IEEE 1584-2002.</summary>
14
+ # <compressed>
15
+ # <compressedfilename>IEEE1584-2002_AncillaryFiles.zip</compressedfilename>
16
+ # <compressedfilesize>180</compressedfilesize>
17
+ # <compressiontype>ZIP</compressiontype>
18
+ # <environmenttype>Windows</environmenttype>
19
+ # <readmefile>IEEE1584-2002_AncillaryFiles.readme.txt</readmefile>
20
+ # </compressed>
21
+ # <component>
22
+ # <componentfilename/>
23
+ # <componentfilesize/>
24
+ # <componenttype/>
25
+ # <componentplatform/>
26
+ # <componentdoi/>
27
+ # </component>
28
+ # </multimedia>
29
+
30
+ attribute :summary, :string
31
+ attribute :compressed, MultimediaCompressed
32
+ attribute :component, MultimediaComponent
33
+
34
+ xml do
35
+ root "multimedia"
36
+
37
+ map_element "summary", to: :summary
38
+ map_element "compressed", to: :compressed
39
+ map_element "component", to: :component
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Multimedia component
6
+ class MultimediaComponent < Lutaml::Model::Serializable
7
+ # <component>
8
+ # <componentfilename/>
9
+ # <componentfilesize/>
10
+ # <componenttype/>
11
+ # <componentplatform/>
12
+ # <componentdoi/>
13
+ # </component>
14
+
15
+ attribute :filename, :string
16
+ attribute :filesize, :string
17
+ attribute :type, :string
18
+ attribute :platform, :string
19
+ attribute :doi, :string
20
+
21
+ xml do
22
+ root "component"
23
+
24
+ map_element "componentfilename", to: :filename, render_nil: true
25
+ map_element "componentfilesize", to: :filesize, render_nil: true
26
+ map_element "componenttype", to: :type, render_nil: true
27
+ map_element "componentplatform", to: :platform, render_nil: true
28
+ map_element "componentdoi", to: :doi, render_nil: true
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Multimedia compressed
6
+ class MultimediaCompressed < Lutaml::Model::Serializable
7
+ # <compressed>
8
+ # <compressedfilename>IEEE1584-2002_AncillaryFiles.zip</compressedfilename>
9
+ # <compressedfilesize>180</compressedfilesize>
10
+ # <compressiontype>ZIP</compressiontype>
11
+ # <environmenttype>Windows</environmenttype>
12
+ # <readmefile>IEEE1584-2002_AncillaryFiles.readme.txt</readmefile>
13
+ # </compressed>
14
+
15
+ attribute :filename, :string
16
+ attribute :filesize, :string
17
+ attribute :compression_type, :string
18
+ attribute :environment_type, :string
19
+ attribute :readme_file, :string
20
+
21
+ xml do
22
+ root "compressed"
23
+
24
+ map_element "compressedfilename", to: :filename
25
+ map_element "compressedfilesize", to: :filesize
26
+ map_element "compressiontype", to: :compression_type
27
+ map_element "environmenttype", to: :environment_type
28
+ map_element "readmefile", to: :readme_file
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Represents a set of package members
6
+ class PackageMemberSet < Lutaml::Model::Serializable
7
+ attribute :package_member, :string, collection: true
8
+
9
+ xml do
10
+ root "packagememberset"
11
+ map_element "packagemember", to: :package_member
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Product number
6
+ class ProductNumber < Lutaml::Model::Serializable
7
+ # <productnumber pubtype="Online">STDWD94477</productnumber>
8
+
9
+ attribute :pubtype, :string
10
+ attribute :value, :string
11
+
12
+ xml do
13
+ root "productnumber"
14
+ map_attribute "pubtype", to: :pubtype
15
+ map_content to: :value
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Contains volume metadata
6
+ class PubSponsor < Lutaml::Model::Serializable
7
+ # IEEE Society that sponsors the publication
8
+ # @return [String] Society name that sponsors the publication
9
+ attribute :society, :string, collection: true
10
+
11
+ xml do
12
+ root "pubsponsor"
13
+ map_element "society", to: :society
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Represents a set of sponsoring committees
6
+ class PubSponsoringCommitteeSet < Lutaml::Model::Serializable
7
+ # List of committees
8
+ # @return [Array<String>] sponsoring committees
9
+ attribute :pubsponsoringcommittee, :string, collection: true
10
+
11
+ xml do
12
+ root "pubsponsoringcommitteeset"
13
+ map_element "pubsponsoringcommittee", to: :pubsponsoringcommittee, cdata: true
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Represents a set of topical browse categories
6
+ class PubTopicalBrowseSet < Lutaml::Model::Serializable
7
+ # List of topical browse categories
8
+ VALID_CATEGORIES = [
9
+ "Aerospace",
10
+ "Bioengineering",
11
+ "Communication, Networking, and Broadcast Technologies",
12
+ "Components, Circuits, Devices and Systems",
13
+ "Computing and Processing",
14
+ "Engineered Materials, Dielectrics and Plasmas",
15
+ "Engineering Profession",
16
+ "Fields, Waves and Electromagnetics",
17
+ "General Topics for Engineers",
18
+ "Geoscience",
19
+ "Nuclear Engineering",
20
+ "Photonics and Electrooptics",
21
+ "Power, Industry and Industry Applications",
22
+ "Robotics and Control Systems",
23
+ "Signal Processing and Analysis",
24
+ "Transportation"
25
+ ].freeze
26
+
27
+ # List of topical categories
28
+ # @return [Array<String>] subject classifications
29
+ attribute :pubtopicalbrowse, :string, collection: true,
30
+ values: VALID_CATEGORIES
31
+
32
+ xml do
33
+ root "pubtopicalbrowseset"
34
+ map_element "pubtopicalbrowse", to: :pubtopicalbrowse
35
+ end
36
+
37
+ # def validate
38
+ # errors = super
39
+ # pubtopicalbrowse.each do |category|
40
+ # unless VALID_CATEGORIES.include?(category)
41
+ # errors << "Invalid topical browse category: #{category}"
42
+ # end
43
+ # end
44
+ # errors
45
+ # end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "publication_info"
4
+ require_relative "volume"
5
+
6
+ module Ieee
7
+ module Idams
8
+ # Represents an IEEE IDAMS publication record
9
+ class Publication < Lutaml::Model::Serializable
10
+ # Publication title
11
+ # @return [String] normalized title
12
+ attribute :title, :string
13
+
14
+ # Publication normalized title
15
+ # @return [String] normalized title
16
+ attribute :normtitle, :string
17
+
18
+ # Standards family title
19
+ # @return [String] family title for standards
20
+ attribute :standardsfamilytitle, :string
21
+
22
+ # Publication information
23
+ # @return [PublicationInfo] detailed publication metadata
24
+ attribute :publicationinfo, PublicationInfo
25
+
26
+ # Volume information
27
+ # @return [Volume] volume details
28
+ attribute :volume, Volume
29
+
30
+ xml do
31
+ root "publication"
32
+ map_element "title", to: :title, cdata: true
33
+ map_element "normtitle", to: :normtitle, cdata: true
34
+ map_element "standardsfamilytitle", to: :standardsfamilytitle
35
+ map_element "publicationinfo", to: :publicationinfo
36
+ map_element "volume", to: :volume
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ieee
4
+ module Idams
5
+ # Publication ID acronym
6
+ class PublicationAcronym < Lutaml::Model::Serializable
7
+ # Type of acronym
8
+ # @return [String]
9
+ attribute :type, :string
10
+
11
+ # Acronym value
12
+ # @return [String]
13
+ attribute :value, :string
14
+
15
+ xml do
16
+ root "acronym"
17
+ map_attribute "acronymtype", to: :type
18
+ map_content to: :value
19
+ end
20
+ end
21
+ end
22
+ end