lutaml-uml 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +36 -0
  3. data/.github/workflows/ubuntu.yml +38 -0
  4. data/.github/workflows/windows.yml +41 -0
  5. data/.gitignore +1 -0
  6. data/Gemfile +2 -1
  7. data/LUTAML.adoc +314 -0
  8. data/{README.md → README.adoc} +15 -16
  9. data/Rakefile +3 -1
  10. data/bin/console +1 -0
  11. data/bin/lutaml2dotpng +23 -0
  12. data/bin/yaml2lutaml +108 -0
  13. data/exe/lutaml-uml +4 -3
  14. data/lib/lutaml/layout/engine.rb +15 -0
  15. data/lib/lutaml/layout/graph_viz_engine.rb +16 -0
  16. data/lib/lutaml/uml.rb +3 -0
  17. data/lib/lutaml/uml/abstraction.rb +7 -5
  18. data/lib/lutaml/uml/activity.rb +7 -5
  19. data/lib/lutaml/uml/actor.rb +14 -12
  20. data/lib/lutaml/uml/association.rb +40 -14
  21. data/lib/lutaml/uml/behavior.rb +7 -5
  22. data/lib/lutaml/uml/class.rb +56 -16
  23. data/lib/lutaml/uml/classifier.rb +9 -6
  24. data/lib/lutaml/uml/connector.rb +16 -12
  25. data/lib/lutaml/uml/constraint.rb +8 -7
  26. data/lib/lutaml/uml/constructor_end.rb +11 -8
  27. data/lib/lutaml/uml/data_type.rb +9 -4
  28. data/lib/lutaml/uml/dependency.rb +16 -13
  29. data/lib/lutaml/uml/document.rb +71 -0
  30. data/lib/lutaml/uml/enum.rb +33 -0
  31. data/lib/lutaml/uml/event.rb +7 -5
  32. data/lib/lutaml/uml/final_state.rb +7 -5
  33. data/lib/lutaml/uml/formatter.rb +21 -0
  34. data/lib/lutaml/uml/formatter/base.rb +67 -0
  35. data/lib/lutaml/uml/formatter/graphviz.rb +335 -0
  36. data/lib/lutaml/uml/has_attributes.rb +14 -0
  37. data/lib/lutaml/uml/has_members.rb +30 -0
  38. data/lib/lutaml/uml/instance.rb +15 -10
  39. data/lib/lutaml/uml/interface/base.rb +28 -0
  40. data/lib/lutaml/uml/interface/command_line.rb +265 -0
  41. data/lib/lutaml/uml/model.rb +11 -8
  42. data/lib/lutaml/uml/node/base.rb +21 -0
  43. data/lib/lutaml/uml/node/class_node.rb +57 -0
  44. data/lib/lutaml/uml/node/class_relationship.rb +14 -0
  45. data/lib/lutaml/uml/node/document.rb +18 -0
  46. data/lib/lutaml/uml/node/field.rb +34 -0
  47. data/lib/lutaml/uml/node/has_name.rb +15 -0
  48. data/lib/lutaml/uml/node/has_type.rb +15 -0
  49. data/lib/lutaml/uml/node/method.rb +29 -0
  50. data/lib/lutaml/uml/node/method_argument.rb +16 -0
  51. data/lib/lutaml/uml/node/relationship.rb +28 -0
  52. data/lib/lutaml/uml/opaque_behavior.rb +7 -6
  53. data/lib/lutaml/uml/package.rb +16 -13
  54. data/lib/lutaml/uml/parsers/attribute.rb +70 -0
  55. data/lib/lutaml/uml/parsers/dsl.rb +375 -0
  56. data/lib/lutaml/uml/parsers/dsl_preprocessor.rb +44 -0
  57. data/lib/lutaml/uml/parsers/dsl_transform.rb +27 -0
  58. data/lib/lutaml/uml/parsers/yaml.rb +46 -0
  59. data/lib/lutaml/uml/port.rb +6 -4
  60. data/lib/lutaml/uml/primitive_type.rb +9 -4
  61. data/lib/lutaml/uml/property.rb +25 -15
  62. data/lib/lutaml/uml/pseudostate.rb +7 -6
  63. data/lib/lutaml/uml/realization.rb +7 -5
  64. data/lib/lutaml/uml/region.rb +7 -6
  65. data/lib/lutaml/uml/serializers/association.rb +58 -0
  66. data/lib/lutaml/uml/serializers/base.rb +16 -0
  67. data/lib/lutaml/uml/serializers/class.rb +29 -0
  68. data/lib/lutaml/uml/serializers/top_element_attribute.rb +14 -0
  69. data/lib/lutaml/uml/serializers/yaml_view.rb +18 -0
  70. data/lib/lutaml/uml/state.rb +8 -6
  71. data/lib/lutaml/uml/state_machine.rb +7 -5
  72. data/lib/lutaml/uml/top_element.rb +45 -35
  73. data/lib/lutaml/uml/top_element_attribute.rb +25 -0
  74. data/lib/lutaml/uml/transition.rb +8 -6
  75. data/lib/lutaml/uml/trigger.rb +8 -6
  76. data/lib/lutaml/uml/version.rb +3 -1
  77. data/lib/lutaml/uml/vertex.rb +7 -5
  78. data/lutaml-uml.gemspec +9 -2
  79. data/spec/fixtures/datamodel/models/AddressClassProfile.yml +90 -0
  80. data/spec/fixtures/datamodel/models/AddressComponentProfile.yml +63 -0
  81. data/spec/fixtures/datamodel/models/AddressComponentSpecification.yml +15 -0
  82. data/spec/fixtures/datamodel/models/AddressProfile.yml +36 -0
  83. data/spec/fixtures/datamodel/models/AttributeProfile.yml +32 -0
  84. data/spec/fixtures/datamodel/models/InterchangeAddressClassProfile.yml +79 -0
  85. data/spec/fixtures/datamodel/models/Localization copy.yml +23 -0
  86. data/spec/fixtures/datamodel/models/Localization.yml +23 -0
  87. data/spec/fixtures/datamodel/models/ProfileCompliantAddress.yml +36 -0
  88. data/spec/fixtures/datamodel/models/ProfileCompliantAddressComponent.yml +15 -0
  89. data/spec/fixtures/datamodel/models/Signature.yml +20 -0
  90. data/spec/fixtures/datamodel/models/SignatureBlankDefinition.yml +20 -0
  91. data/spec/fixtures/datamodel/models/TextDirectionCode copy.yml +16 -0
  92. data/spec/fixtures/datamodel/models/TextDirectionCode.yml +16 -0
  93. data/spec/fixtures/datamodel/models/Validity.yml +14 -0
  94. data/spec/fixtures/datamodel/models/iso19160-1/Address.yml +22 -0
  95. data/spec/fixtures/datamodel/models/iso19160-1/AddressComponent.yml +2 -0
  96. data/spec/fixtures/datamodel/style.uml.inc +37 -0
  97. data/spec/fixtures/datamodel/views/AddressClassProfile.yml +12 -0
  98. data/spec/fixtures/datamodel/views/AddressProfile.yml +3 -0
  99. data/spec/fixtures/datamodel/views/CommonModels.yml +9 -0
  100. data/spec/fixtures/datamodel/views/TopDown.yml +62 -0
  101. data/spec/fixtures/dsl/diagram.lutaml +3 -0
  102. data/spec/fixtures/dsl/diagram_attributes.lutaml +5 -0
  103. data/spec/fixtures/dsl/diagram_class_assocation.lutaml +29 -0
  104. data/spec/fixtures/dsl/diagram_class_fields.lutaml +19 -0
  105. data/spec/fixtures/dsl/diagram_comments.lutaml +28 -0
  106. data/spec/fixtures/dsl/diagram_concept_model.lutaml +132 -0
  107. data/spec/fixtures/dsl/diagram_data_types.lutaml +24 -0
  108. data/spec/fixtures/dsl/diagram_includes.lutaml +6 -0
  109. data/spec/fixtures/dsl/diagram_multiply_classes.lutaml +7 -0
  110. data/spec/fixtures/dsl/shared.lutaml +3 -0
  111. data/spec/fixtures/dsl/shared1.lutaml +4 -0
  112. data/spec/fixtures/generated_dot/AddressClassProfile.dot +170 -0
  113. data/spec/fixtures/generated_dot/AddressProfile.dot +34 -0
  114. data/spec/lutaml/uml/formatter/graphviz_spec.rb +41 -0
  115. data/spec/lutaml/uml/parsers/dsl_spec.rb +252 -0
  116. data/spec/lutaml/uml/parsers/yaml_spec.rb +18 -0
  117. data/spec/lutaml/uml/serializers/yaml_view_spec.rb +20 -0
  118. data/spec/lutaml/uml_spec.rb +2 -4
  119. data/spec/spec_helper.rb +11 -0
  120. metadata +161 -13
@@ -0,0 +1,23 @@
1
+ name: Localization
2
+ modelType: class
3
+ definition: |
4
+ The language and script used within the parent object.
5
+
6
+ Represented by the `PT_Locale` object defined in <<ISO19115-1>> and an
7
+ <<ISO15924>> script code.
8
+ attributes:
9
+ locale:
10
+ definition: The locale of the parent object.
11
+ type: iso19115PT_Locale
12
+ script:
13
+ definition: The type of written script used in the parent object.
14
+ type: iso15924Code
15
+ textDirection:
16
+ definition: Indicating in which direction the text of the parent should be read.
17
+ type: TextDirectionCode
18
+ relations:
19
+ - target: Validity
20
+ relationship:
21
+ target:
22
+ type: direct
23
+ direction: "[hidden]"
@@ -0,0 +1,36 @@
1
+ name: ProfileCompliantAddress
2
+ modelType: class
3
+ definition: |
4
+ ProfileCompliantAddress extends from the `Address` model defined in
5
+ <<ISO19160-1>> to represent an `Address` complying with an
6
+ `AddressClassProfile`.
7
+
8
+ A `ProfileCompliantAddress` MUST conform to the constraints and
9
+ requirements specified in `AddressClassProfile`, and its associated
10
+ profiles and specifications.
11
+ relations:
12
+ - target: Address
13
+ relationship:
14
+ target:
15
+ type: inheritance
16
+
17
+ - target: ProfileCompliantAddressComponent
18
+ relationship:
19
+ source:
20
+ type: aggregation
21
+ attributes:
22
+ address:
23
+ cardinality:
24
+ min: 1
25
+ max: "*"
26
+ target:
27
+ type: direct
28
+ attributes:
29
+ addressComponent:
30
+ cardinality:
31
+ min: 1
32
+ max: "*"
33
+ association: AddressComponentSpecification
34
+ action:
35
+ verb: comprises
36
+ direction: target
@@ -0,0 +1,15 @@
1
+ name: ProfileCompliantAddressComponent
2
+ modelType: class
3
+ definition: |
4
+ ProfileCompliantAddressComponent extends from the AddressComponent model
5
+ defined in <<ISO19160-1>> to represent an Address complying with an
6
+ AddressClassProfile.
7
+
8
+ A ProfileCompliantAddressComponent MUST conform to the constraints and
9
+ requirements specified in AddressComponentProfile, and its associated
10
+ profiles and specifications.
11
+ relations:
12
+ - target: AddressComponent
13
+ relationship:
14
+ target:
15
+ type: inheritance
@@ -0,0 +1,20 @@
1
+ name: Signature
2
+ modelType: class
3
+ definition: |
4
+ A cryptographic signature used to determine data integrity and validity of the object it belongs to.
5
+ attributes:
6
+ algorithm:
7
+ definition: The public key cryptographic algorithm used for this digital signature.
8
+ type: iso14888Oid
9
+ publicKey:
10
+ definition: A reference to the actual public key used to verify the digital signature, a URI where the public key of the signer used for this signature is found.
11
+ type: Uri
12
+ signature:
13
+ definition: The actual digital signature value encoded in Base64 format.
14
+ type: CharacterString
15
+ relations:
16
+ - target: Localization
17
+ relationship:
18
+ target:
19
+ type: direct
20
+ direction: "[hidden]"
@@ -0,0 +1,20 @@
1
+ name: Signature
2
+ modelType: class
3
+ definition: |
4
+ A cryptographic signature used to determine data integrity and validity of the object it belongs to.
5
+ attributes:
6
+ algorithm:
7
+ definition:
8
+ type: iso14888Oid
9
+ publicKey:
10
+ definition:
11
+ type: Uri
12
+ signature:
13
+ definition: The actual digital signature value encoded in Base64 format.
14
+ type: CharacterString
15
+ relations:
16
+ - target: Localization
17
+ relationship:
18
+ target:
19
+ type: direct
20
+ direction: "[hidden]"
@@ -0,0 +1,16 @@
1
+ name: TextDirectionCode
2
+ modelType: enum
3
+ definition: |
4
+ An enumeration value of TextDirectionCode represents the reading
5
+ direction of textual data whether it is from left to right or right to
6
+ left, and from top to bottom or bottom to top.
7
+ type: enumeration
8
+ values:
9
+ leftToRightTopToBottom:
10
+ definition: Indicating that text should be read left to right, and top to bottom.
11
+ rightToLeftTopToBottom:
12
+ definition: Indicating that text should be read right to left, and top to bottom.
13
+ leftToRightBottomToTop:
14
+ definition: Indicating that text should be read left to right, and bottom to top.
15
+ rightToLeftBottomToTop:
16
+ definition: Indicating that text should be read right to left, and bottom to top.
@@ -0,0 +1,16 @@
1
+ name: TextDirectionCode
2
+ modelType: enum
3
+ definition: |
4
+ An enumeration value of TextDirectionCode represents the reading
5
+ direction of textual data whether it is from left to right or right to
6
+ left, and from top to bottom or bottom to top.
7
+ type: enumeration
8
+ values:
9
+ leftToRightTopToBottom:
10
+ definition: Indicating that text should be read left to right, and top to bottom.
11
+ rightToLeftTopToBottom:
12
+ definition: Indicating that text should be read right to left, and top to bottom.
13
+ leftToRightBottomToTop:
14
+ definition: Indicating that text should be read left to right, and bottom to top.
15
+ rightToLeftBottomToTop:
16
+ definition: Indicating that text should be read right to left, and bottom to top.
@@ -0,0 +1,14 @@
1
+ name: Validity
2
+ modelType: class
3
+ definition: |
4
+ The time interval where this interchange address profile is determined valid, and the revision number (represented as a date).
5
+ attributes:
6
+ validityBegins:
7
+ definition: The date and time when this object becomes valid.
8
+ type: iso19115CI_Date
9
+ validityEnds:
10
+ definition: The date and time when this object becomes invalid.
11
+ type: iso19115CI_Date
12
+ revision:
13
+ definition: Issuance date/time of this object.
14
+ type: iso19115CI_Date
@@ -0,0 +1,22 @@
1
+ name: Address
2
+ modelType: class
3
+ relations:
4
+ - target: AddressComponent
5
+ relationship:
6
+ source:
7
+ type: aggregation
8
+ attributes:
9
+ address:
10
+ cardinality:
11
+ min: 1
12
+ max: "*"
13
+ target:
14
+ type: direct
15
+ attributes:
16
+ addressComponent:
17
+ cardinality:
18
+ min: 1
19
+ max: "*"
20
+ action:
21
+ verb: comprises
22
+ direction: target
@@ -0,0 +1,2 @@
1
+ name: AddressComponent
2
+ modelType: class
@@ -0,0 +1,37 @@
1
+ skinparam Dpi 150
2
+ skinparam Monochrome false
3
+ hide circle
4
+ /' skinparam CircledCharacterRadius 0 '/
5
+ /' skinparam CircledCharacterFontSize 0 '/
6
+ skinparam Default {
7
+ TextAlignment center
8
+ FontName Helvetica
9
+ }
10
+ skinparam Class {
11
+ AttributeIconSize 0
12
+ BackgroundColor White
13
+ ArrowColor Black
14
+ BorderColor Black
15
+ FontStyle bold
16
+ StereotypeFontSize 10
17
+ }
18
+ skinparam Rectangle {
19
+ BackgroundColor White
20
+ ArrowColor Black
21
+ BorderColor Black
22
+ FontStyle bold
23
+ FontSize 11
24
+ StereotypeFontSize 10
25
+ }
26
+ skinparam Object {
27
+ BackgroundColor White
28
+ ArrowColor Black
29
+ BorderColor Black
30
+ FontStyle bold
31
+ FontSize 11
32
+ StereotypeFontSize 10
33
+ }
34
+
35
+ skinparam Entity {
36
+ StereotypeFontSize 10
37
+ }
@@ -0,0 +1,12 @@
1
+ name: AddressClassProfile
2
+ imports:
3
+ AddressProfile:
4
+ AddressClassProfile:
5
+ AddressClassProfile:
6
+ AddressComponentProfile:
7
+ AttributeProfile:
8
+ ProfileCompliantAddress:
9
+ InterchangeAddressClassProfile:
10
+ fidelity:
11
+ hideMembers: true
12
+ hideOtherClasses: true
@@ -0,0 +1,3 @@
1
+ name: AddressProfile
2
+ imports:
3
+ AddressProfile:
@@ -0,0 +1,9 @@
1
+ name: CommonModels
2
+ title: Common models
3
+ caption: Common models to be used in this standard
4
+ directive: ix-common
5
+ imports:
6
+ Localization:
7
+ Validity:
8
+ Signature:
9
+ TextDirectionCode:
@@ -0,0 +1,62 @@
1
+ name: TopDown
2
+ title: Address profile model overview
3
+ caption: Address profile model overview in UML
4
+ imports:
5
+ iso19160-1/Address:
6
+ iso19160-1/AddressComponent:
7
+ ProfileCompliantAddress:
8
+ ProfileCompliantAddressComponent:
9
+ AddressProfile:
10
+ AddressClassProfile:
11
+ InterchangeAddressClassProfile:
12
+ AddressComponentProfile:
13
+ AddressComponentSpecification:
14
+ AttributeProfile:
15
+ groups:
16
+ - - AddressProfile
17
+ - - InterchangeAddressClassProfile
18
+ - AddressClassProfile
19
+ - AddressComponentProfile
20
+ - - AddressComponentSpecification
21
+ - - ProfileCompliantAddress
22
+ - ProfileCompliantAddressComponent
23
+ - - Address
24
+ - AddressComponent
25
+ relations:
26
+ - source: InterchangeAddressClassProfile
27
+ target: AddressClassProfile
28
+ direction: '[hidden]right'
29
+ - source: AddressClassProfile
30
+ target: AddressComponentProfile
31
+ direction: '[hidden]right'
32
+
33
+ - source: ProfileCompliantAddress
34
+ target: ProfileCompliantAddressComponent
35
+ direction: '[hidden]right'
36
+
37
+ - source: Address
38
+ target: AddressComponent
39
+ direction: '[hidden]right'
40
+
41
+ - source: AddressProfile
42
+ target: AddressClassProfile
43
+ direction: '[hidden]down'
44
+ - source: AddressClassProfile
45
+ target: ProfileCompliantAddress
46
+ direction: '[hidden]down'
47
+ - source: AddressComponentProfile
48
+ target: AddressComponentSpecification
49
+ direction: '[hidden]down'
50
+ - source: AddressComponentSpecification
51
+ target: ProfileCompliantAddressComponent
52
+ direction: '[hidden]down'
53
+ - source: ProfileCompliantAddress
54
+ target: Address
55
+ direction: '[hidden]down'
56
+ - source: ProfileCompliantAddressComponent
57
+ target: AddressComponent
58
+ direction: '[hidden]down'
59
+
60
+ fidelity:
61
+ hideMembers: true
62
+ hideOtherClasses: true
@@ -0,0 +1,3 @@
1
+ diagram MyView {
2
+ class Foo {}
3
+ }
@@ -0,0 +1,5 @@
1
+ diagram MyView {
2
+ fontname "Arial"
3
+ title "my diagram"
4
+ class Foo {}
5
+ }
@@ -0,0 +1,29 @@
1
+ diagram MyView {
2
+ title "my diagram"
3
+
4
+ class AddressClassProfile {
5
+ addressClassProfile
6
+ }
7
+ class AttributeProfile {
8
+ attributeProfile
9
+ }
10
+
11
+ association BidirectionalAsscoiation {
12
+ owner_type aggregation
13
+ member_type direct
14
+ owner AddressClassProfile#addressClassProfile
15
+ member AttributeProfile#attributeProfile [0..*]
16
+ }
17
+
18
+ association DirectAsscoiation {
19
+ member_type direct
20
+ owner AddressClassProfile
21
+ member AttributeProfile#attributeProfile
22
+ }
23
+
24
+ association ReverseAsscoiation {
25
+ owner_type aggregation
26
+ owner AddressClassProfile#addressClassProfile
27
+ member AttributeProfile
28
+ }
29
+ }
@@ -0,0 +1,19 @@
1
+ diagram MyView {
2
+ title "my diagram"
3
+
4
+ class Component {}
5
+
6
+ class AddressClassProfile {
7
+ +addressClassProfile: CharacterString [0..1]
8
+ }
9
+
10
+ class AttributeProfile {
11
+ imlicistAttributeProfile: CharacterString [0..1]
12
+ +attributeProfile: <<BasicDocument>> LocalizedString [0..1]
13
+ +attributeProfile1: <<BasicDocument>> 'LocalizedString'
14
+ -privateAttributeProfile: CharacterString [1]
15
+ ~friendlyAttributeProfile: <<Type>> "CharacterString" [1..*]
16
+ ~friendlyAttributeProfile1: <<Type>> "CharacterString"
17
+ #protectedAttributeProfile: CharacterString
18
+ }
19
+ }
@@ -0,0 +1,28 @@
1
+ diagram MyView {
2
+ title "my diagram"
3
+
4
+ ** My comment
5
+
6
+ class Component {}
7
+
8
+ *|
9
+ this is multiline
10
+ comment with {} special
11
+ chars/
12
+
13
+ +-|/
14
+ |*
15
+ class AddressClassProfile {
16
+ // TODO: write attributes
17
+ +addressClassProfile: CharacterString [0..1]
18
+ }
19
+
20
+ // TODO: description
21
+ class AttributeProfile {
22
+ ** this is attribute comment
23
+ imlicistAttributeProfile: CharacterString [0..1]
24
+ *| this is another comment line
25
+ with multiply lines
26
+ |*
27
+ }
28
+ }
@@ -0,0 +1,132 @@
1
+ diagram Designations {
2
+ title 'Designation models'
3
+ association {
4
+ owner NormativeStatus
5
+ member_type direct
6
+ member Designation
7
+ }
8
+ association {
9
+ owner PrefixDesignation
10
+ member_type inheritance
11
+ member ExpressionDesignation
12
+ }
13
+ association {
14
+ owner SuffixDesignation
15
+ member_type inheritance
16
+ member ExpressionDesignation
17
+ }
18
+ association {
19
+ owner AbbreviationDesignation
20
+ member_type inheritance
21
+ member ExpressionDesignation
22
+ }
23
+ association {
24
+ owner GrammarInfo
25
+ member_type direct
26
+ member ExpressionDesignation
27
+ }
28
+ association {
29
+ owner AbbreviationType
30
+ member_type direct
31
+ member AbbreviationDesignation
32
+ }
33
+ association {
34
+ owner GrammarGender
35
+ member_type direct
36
+ member GrammarInfo
37
+ }
38
+ association {
39
+ owner GlossaristTextElementType
40
+ member_type inheritance
41
+ member TextElementType
42
+ }
43
+ association {
44
+ owner GlossaristTextElementType
45
+ member_type direct
46
+ member ExpressionDesignation
47
+ }
48
+ association {
49
+ owner TextElement
50
+ member_type inheritance
51
+ member GlossaristTextElement
52
+ }
53
+ association {
54
+ owner EmptySlot
55
+ member_type inheritance
56
+ member GlossaristTextElement
57
+ }
58
+ association {
59
+ owner GlossaristTextElement
60
+ member_type direct
61
+ member GlossaristTextElementType
62
+ }
63
+ class Designation {
64
+ +normativeStatus: 'NormativeStatus'
65
+ +absent: 'Boolean' [0..1]
66
+ +geographicArea: 'Iso3166Code' [0..*]
67
+ +sources: 'ConceptSource' [0..*]
68
+ }
69
+ enum NormativeStatus {
70
+ }
71
+ class ExpressionDesignation {
72
+ +text: 'GlossaristTextElementType'
73
+ +language: 'Iso639ThreeCharCode'
74
+ +script: 'Iso15924Code' [0..1]
75
+ +pronunciation: <<BasicDocument>> 'LocalizedString' [0..*]
76
+ +grammarInfo: 'GrammarInfo' [0..*]
77
+ }
78
+ association {
79
+ owner ExpressionDesignation
80
+ member_type inheritance
81
+ member Designation
82
+ }
83
+ class GrammarInfo {
84
+ +gender: 'GrammarGender' [0..*]
85
+ +isPreposition: 'Boolean' [0..1]
86
+ +isParticiple: 'Boolean' [0..1]
87
+ +isAdjective: 'Boolean' [0..1]
88
+ +isVerb: 'Boolean' [0..1]
89
+ +isAdverb: 'Boolean' [0..1]
90
+ +isNoun: 'Boolean' [0..1]
91
+ }
92
+ class SymbolDesignation {
93
+ +isInternational: 'Boolean'
94
+ }
95
+ association {
96
+ owner SymbolDesignation
97
+ member_type inheritance
98
+ member Designation
99
+ }
100
+ class PrefixDesignation {
101
+ }
102
+ class SuffixDesignation {
103
+ }
104
+ class AbbreviationDesignation {
105
+ +isInternational: 'Boolean'
106
+ +abbreviationType: 'AbbreviationType' [0..1]
107
+ }
108
+ enum AbbreviationType {
109
+ }
110
+ class LetterSymbolDesignation {
111
+ +text: <<BasicDocument>> 'LocalizedString'
112
+ +language: 'Iso639ThreeCharCode'
113
+ +script: 'Iso15924Code' [0..1]
114
+ }
115
+ association {
116
+ owner LetterSymbolDesignation
117
+ member_type inheritance
118
+ member SymbolDesignation
119
+ }
120
+ class GraphicalSymbolDesignation {
121
+ +text: <<BasicDocument>> 'LocalizedString' [0..1]
122
+ +image: 'Image' [0..1]
123
+ +isInternational: 'Boolean'
124
+ }
125
+ association {
126
+ owner GraphicalSymbolDesignation
127
+ member_type inheritance
128
+ member SymbolDesignation
129
+ }
130
+ enum GrammarGender {
131
+ }
132
+ }