ieee-idams 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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