-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcharacteristics-decision-tree.pu
188 lines (158 loc) · 4.36 KB
/
characteristics-decision-tree.pu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
' Copyright (c) 2023 Robert Bosch Manufacturing Solutions GmbH
'
' See the AUTHORS file(s) distributed with this work for additional information regarding authorship.
'
' This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
' If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/
' SPDX-License-Identifier: MPL-2.0
@startuml
skinparam shadowing false
skinparam activity {
BackgroundColor White
BorderColor Black
FontName Roboto Condensed
FontSize 16
ArrowColor Black
}
skinparam activityDiamond {
BackgroundColor White
BorderColor Black
FontName Roboto Condensed
FontSize 16
ArrowColor Black
}
(*) -> "Should the value\nuse Constraints?"
if "" then
-right->[yes] "Trait" #b7c9e3
--> "Continue to follow\ndecision tree\nfor Trait's\nbaseCharacteristic"
--> "Is the value\nan Object?" as IsObject
else
-->[no] IsObject
endif
IsObject --> if "" then
-right->[yes] "Single Entity" #b7c9e3
else
-->[no] "Is the value\na compound value\nof multiple parts?" as IsStructuredValue
endif
IsStructuredValue --> if "" then
-right->[yes] "Structured Value" #b7c9e3
else
-->[no] "Is the value\na disjoint union\nof two values?" as IsEither
endif
IsEither --> if "" then
-right->[yes] "Either" #b7c9e3
else
-->[no] "Is the value\na collection?" as ACollection
endif
ACollection --> if "" then
-left->[yes] "Are the values\nordered?" as Ordered
else
-right->[no] "Is the value\na number?" as NumberKind
endif
partition Collections {
Ordered --> if "" then
-->[yes] "Are duplicates\nallowed?" as Duplicates1
else
-->[no] "Are duplicates\nallowed?" as Duplicates2
endif
Duplicates1 --> if "" then
-->[yes] "List" #b7c9e3
else
-->[no] "Are the values\nrecorded with\na timestamp?" as HaveTimestamp
endif
HaveTimestamp --> if "" then
-->[yes] "Time Series" #b7c9e3
else
-->[no] "Sorted Set" #b7c9e3
endif
Duplicates2 --> if "" then
-->[yes] "Collection" #b7c9e3
else
-->[no] "Set" #b7c9e3
endif
}
NumberKind --> if "" then
-->[yes] "Are the possible\nvalues known?" as NumberValuesKnown
else
-->[no] "Is the value a boolean?" as BooleanKind
endif
partition "Nominal scaled values" {
BooleanKind --> if "" then
-->[yes] "Boolean" #b7c9e3
else
-->[no] "Are the possible\nvalues known?" as StringValuesKnown
endif
StringValuesKnown --> if "" then
-->[yes] "Is there a\ndefault value?" as DefaultValue
else
-->[no] "Is the value\na kind of code\nor identifier?" as Identifier
endif
Identifier --> if "" then
-->[yes] "Code" #b7c9e3
else
-->[no] "Does the value\nrepresent a\npoint in time?" as PointInTime
endif
PointInTime --> if "" then
-->[yes] "Timestamp" #b7c9e3
else
-->[no] "Does the value\nrepresent a\nlanguage?" as IsLanguage
endif
IsLanguage --> if "" then
-->[yes] "What does the\nvalue look like?" as LanguageCode
else
-->[no] "Does the value\ncontain a\nMIME Type?" as IsMime
endif
LanguageCode --> if "" then
-->[ISO 639,\ne.g., 'en'] "Language" #b7c9e3
else
-->[BCP 47,\ne.g., 'en-US'] "Locale" #b7c9e3
endif
IsMime --> if "" then
-right->[yes] "MIME Type" #b7c9e3
else
-->[no] "Does the value\nrefer to a\nresource?" as IsResource
endif
IsResource --> if "" then
-right->[yes] "ResourcePath" #b7c9e3
else
-->[no] "Does the value\nrefer to a\nunit?" as IsUnit
endif
IsUnit --> if "" then
-right->[yes] "UnitReference" #b7c9e3
else
-->[no] "Is the value\na text meant\nonly for\nhumans?" as Humans
endif
Humans --> if "" then
-->[yes] "Is the text\ninternationalized?" as Intl
else
-->[no] "Introduce a\ncustom Characteristic"
else
Intl --> if "" then
-->[yes] "Multi Language Text" #b7c9e3
else
-->[no] "Text" #b7c9e3
endif
DefaultValue --> if "" then
-->[yes] "State" #b7c9e3
else
-->[no] "Enumeration" #b7c9e3
endif
}
NumberValuesKnown --> if "" then
-->[yes] "Is there a\ndefault value?" as DefaultValue
else
-->[no] "Does it describe\na time duration?" as TimeDuration
endif
partition "Interval/Ratio scaled values" {
TimeDuration --> if "" then
-->[yes] "Duration" #b7c9e3
else
-->[no] "Is it a\nmeasured value?" as MeasuredValue
endif
MeasuredValue --> if "" then
-->[yes] "Measurement" #b7c9e3
else
-->[no] "Quantifiable" #b7c9e3
endif
}
@enduml