-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuldm.uml
492 lines (464 loc) · 51.5 KB
/
uldm.uml
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:ldml="http:///schemas/ldml/_Fgv60OxAEe61G9x-vNlaow/10" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/ldml/_Fgv60OxAEe61G9x-vNlaow/10 ldml.profile.uml#_FgxI8OxAEe61G9x-vNlaow">
<uml:Model xmi:id="_3xOcUJz_EeuyF7meMlB1iQ" name="uldm">
<packageImport xmi:type="uml:PackageImport" xmi:id="_3x0SMJz_EeuyF7meMlB1iQ">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Package" href="Retail.uml#_vSeywJ0dEeuosN6Nd1GBJQ"/>
<packagedElement xmi:type="uml:Package" href="FinancialServices.uml#_wIJPcJ0dEeuosN6Nd1GBJQ"/>
<packagedElement xmi:type="uml:Package" href="Manufacturing.uml#_uXs2YG1vEeyGYpzd-2skXA"/>
<packagedElement xmi:type="uml:Package" href="SharedServices.uml#_xRjHgJ0dEeuosN6Nd1GBJQ"/>
<packagedElement xmi:type="uml:Package" xmi:id="_jTSc4J0dEeuosN6Nd1GBJQ" name="Common">
<packagedElement xmi:type="uml:Package" xmi:id="_KAL6YKHSEeuDk9H_gpfrgQ" name="Base">
<packagedElement xmi:type="uml:Package" xmi:id="_aPLioJ0eEeuosN6Nd1GBJQ" name="Primitive">
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Odt00J0gEeuosN6Nd1GBJQ" name="Numeric" isAbstract="true"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Ujp4UJ0gEeuosN6Nd1GBJQ" name="Integer">
<generalization xmi:type="uml:Generalization" xmi:id="_Yjej4J0gEeuosN6Nd1GBJQ" general="_Odt00J0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_W1-gQJ0gEeuosN6Nd1GBJQ" name="Real">
<generalization xmi:type="uml:Generalization" xmi:id="_ZIf8gJ0gEeuosN6Nd1GBJQ" general="_Odt00J0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_ac5joJ0gEeuosN6Nd1GBJQ" name="String"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_f3ztIJ0gEeuosN6Nd1GBJQ" name="Boolean"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_q9tDgJ0gEeuosN6Nd1GBJQ" name="Identifier"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_v0B5QJ0gEeuosN6Nd1GBJQ" name="Date"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_xpKO4J0gEeuosN6Nd1GBJQ" name="Time"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_0Ik3oJ0gEeuosN6Nd1GBJQ" name="DateTime"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_vBfW8KHfEeuHzbyMPKOJaA" name="NumericString">
<generalization xmi:type="uml:Generalization" xmi:id="_xmAiIKHfEeuHzbyMPKOJaA" general="_ac5joJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_cAcr8J0eEeuosN6Nd1GBJQ" name="ReferenceData">
<packagedElement xmi:type="uml:Interface" xmi:id="_j2_KYJ0eEeuosN6Nd1GBJQ" name="IReferenceEntity">
<ownedComment xmi:type="uml:Comment" xmi:id="_4s44YFXpEe2AS-AxgfYWgA">
<body><p>The IReferenceData Interface is a utility Interface that makes it easy to declare Reference Data.&nbsp;Unlike a Class,&nbsp;an Interface does not imply a form of&nbsp;identity - a sub-Class of a super-Class has an identity that is sub set of its super-Class because of the implied &quot;is a&quot; relationship, but a Class implementing an Interface is not&nbsp;intrinsically related to any other Class implementing the same Interface. The Interface only describes common characteristics (Properties). In LDML, Reference Data has two key requirements: a Property to act as the &lt;&lt;ReferenceLabel&gt;&gt; and a Property to act as the &lt;&lt;ReferenceCode&gt;&gt;. Implementing this Interface causes the implmenting Class to automatically declare a &lt;&lt;ReferenceLabel&gt;&gt; Property (name) along with an optional description string. This Interface is, therefore, designed to be used when declaring Reference Data where it is desirable for the corresponding &lt;&lt;ReferenceCode&gt;&gt; Property to by given a specific name or Type.</p>
</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_K-8dUJ0fEeuosN6Nd1GBJQ" name="name" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<ownedComment xmi:type="uml:Comment" xmi:id="__VE34FXqEe2AS-AxgfYWgA">
<body><p>The name to be used as a displayed label, and which essentially defines the meaning of the associated code.</p>
</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_5NMBAJ0gEeuosN6Nd1GBJQ" name="description" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_E29zIFXrEe2AS-AxgfYWgA">
<body><p>An optional description that can be used to further clarify the intention of the defined code.</p>
</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__vU4UJ0gEeuosN6Nd1GBJQ"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_oOSMsErMEe2JaYM2HfjWkA" name="ReferenceValue">
<ownedComment xmi:type="uml:Comment" xmi:id="_dlAIQFXtEe2AS-AxgfYWgA">
<body><p>This DataType is specifically provided as a generic mechanism to record a point in time view of an instance of Reference Data, given that reference data may change over time and permitted values may be removed such that the &lt;&lt;ReferenceCode&gt;&gt; can no longer be used as a reference to the&nbsp;associated value (business definition). This is not a common requirement but is required when an historical view of data is explicitly required within the logical data model (e.g. HR where there is an obligation to maintain an employee history).</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_txgMEFXtEe2AS-AxgfYWgA">
<body><p>Note that the specific set of Reference Data to which the historic value belongs is defined by the instantiating Property.</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_RTRFEFaWEe2AS-AxgfYWgA">
<body><p>Note also that, while this DataType is directly usable for values from a simple controlled vocabulary, it can be sub-Classed&nbsp;locally, as required.</p>
</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_qeEeAErMEe2JaYM2HfjWkA" name="code" type="_q9tDgJ0gEeuosN6Nd1GBJQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_1AEEgFXtEe2AS-AxgfYWgA">
<body><p>A point in time value of a &lt;&lt;ReferenceCode&gt;&gt;.</p>
</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_uKoPUErMEe2JaYM2HfjWkA" name="name" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_46vKUFXtEe2AS-AxgfYWgA">
<body><p>The point in time value of a &lt;&lt;ReferenceLabel&gt;&gt;.</p>
</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_m0ooEKHQEeuDk9H_gpfrgQ" name="Geography">
<packagedElement xmi:type="uml:Class" xmi:id="_1ZfGsKHSEeuDk9H_gpfrgQ" name="Country">
<ownedAttribute xmi:type="uml:Property" xmi:id="_1I1JoKHUEeuDk9H_gpfrgQ" name="iso3166_1Alpha3" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_5f-JAKHUEeuDk9H_gpfrgQ" name="iso3166_1Alpha2" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E3jFQKHVEeuDk9H_gpfrgQ"/>
<upperValue xmi:type="uml:LiteralInteger" xmi:id="_E3lhgKHVEeuDk9H_gpfrgQ" value="1"/>
</ownedAttribute>
<interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_R5np4KHUEeuDk9H_gpfrgQ" client="_1ZfGsKHSEeuDk9H_gpfrgQ" supplier="_j2_KYJ0eEeuosN6Nd1GBJQ" contract="_j2_KYJ0eEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Bund4KaVEeuFv72Lf76jxQ" name="CountrySubdivision">
<ownedAttribute xmi:type="uml:Property" xmi:id="_IEvScKaVEeuFv72Lf76jxQ" name="iso3166_2" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_IJE7kL4dEeujfLsUf8U-Bw" name="country" type="_1ZfGsKHSEeuDk9H_gpfrgQ"/>
<interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Df6cYKaVEeuFv72Lf76jxQ" client="_Bund4KaVEeuFv72Lf76jxQ" supplier="_j2_KYJ0eEeuosN6Nd1GBJQ" contract="_j2_KYJ0eEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_jRsa4KHSEeuDk9H_gpfrgQ" name="Language">
<ownedAttribute xmi:type="uml:Property" xmi:id="_bMotYKHUEeuDk9H_gpfrgQ" name="iso639_2" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_lX4ZYKHUEeuDk9H_gpfrgQ" name="iso639_1" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVOP0KHUEeuDk9H_gpfrgQ"/>
</ownedAttribute>
<interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Sc3g4KHUEeuDk9H_gpfrgQ" client="_jRsa4KHSEeuDk9H_gpfrgQ" supplier="_j2_KYJ0eEeuosN6Nd1GBJQ" contract="_j2_KYJ0eEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ydvuUKHSEeuDk9H_gpfrgQ" name="Currency">
<ownedAttribute xmi:type="uml:Property" xmi:id="_HhMBAKHVEeuDk9H_gpfrgQ" name="iso4217" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_TBM9AKHUEeuDk9H_gpfrgQ" client="_ydvuUKHSEeuDk9H_gpfrgQ" supplier="_j2_KYJ0eEeuosN6Nd1GBJQ" contract="_j2_KYJ0eEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_ZZrskKHVEeuDk9H_gpfrgQ" name="InternationalString">
<ownedAttribute xmi:type="uml:Property" xmi:id="_cuH40KHVEeuDk9H_gpfrgQ" name="language" type="_jRsa4KHSEeuDk9H_gpfrgQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_gJRxEKHVEeuDk9H_gpfrgQ" name="value" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_pn7c0KHVEeuDk9H_gpfrgQ" name="CurrencyAmount">
<ownedAttribute xmi:type="uml:Property" xmi:id="_rvniEKHVEeuDk9H_gpfrgQ" name="currency" type="_ydvuUKHSEeuDk9H_gpfrgQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_0ag1oKHVEeuDk9H_gpfrgQ" name="value" type="_W1-gQJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_opgfAKHQEeuDk9H_gpfrgQ" name="Party">
<packagedElement xmi:type="uml:Interface" xmi:id="_lSkM0KHaEeunjrVPm6TZ0Q" name="IParty">
<ownedAttribute xmi:type="uml:Property" xmi:id="_hE2LAKHhEeuHzbyMPKOJaA" name="contactPoint" type="_t4ZIQKHcEeuHzbyMPKOJaA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kaXVUKHhEeuHzbyMPKOJaA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kabmwKHhEeuHzbyMPKOJaA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_s1z70KHaEeunjrVPm6TZ0Q" name="IPerson">
<generalization xmi:type="uml:Generalization" xmi:id="_zxf7kKHaEeunjrVPm6TZ0Q" general="_lSkM0KHaEeunjrVPm6TZ0Q"/>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_vSpxsKHaEeunjrVPm6TZ0Q" name="IOrganisation">
<generalization xmi:type="uml:Generalization" xmi:id="_zKaGYKHaEeunjrVPm6TZ0Q" general="_lSkM0KHaEeunjrVPm6TZ0Q"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_qQCX8KHQEeuDk9H_gpfrgQ" name="ContactPoint">
<packagedElement xmi:type="uml:Class" xmi:id="_hqWTgKHbEeunjrVPm6TZ0Q" name="ITUCountryCode">
<ownedAttribute xmi:type="uml:Property" xmi:id="_kyRGsKHbEeunjrVPm6TZ0Q" name="ituTerritory" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_8r080KHbEeunjrVPm6TZ0Q" name="code" type="_Ujp4UJ0gEeuosN6Nd1GBJQ"/>
<interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_HEOUAKHcEeunjrVPm6TZ0Q" client="_hqWTgKHbEeunjrVPm6TZ0Q" supplier="_j2_KYJ0eEeuosN6Nd1GBJQ" contract="_j2_KYJ0eEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_t4ZIQKHcEeuHzbyMPKOJaA" name="ContactPoint" isAbstract="true"/>
<packagedElement xmi:type="uml:DataType" xmi:id="_x9A0QKHcEeuHzbyMPKOJaA" name="Address">
<generalization xmi:type="uml:Generalization" xmi:id="_ehVscKHhEeuHzbyMPKOJaA" general="_t4ZIQKHcEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_52GQYKHcEeuHzbyMPKOJaA" name="addressLilne" type="_ac5joJ0gEeuosN6Nd1GBJQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9b3dMKHcEeuHzbyMPKOJaA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9cERgKHcEeuHzbyMPKOJaA" value="3"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Dj25sKHeEeuHzbyMPKOJaA" name="postTown" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_KldUMKHeEeuHzbyMPKOJaA" name="region" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_NEs90KHeEeuHzbyMPKOJaA" name="postCode" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_RqqcUKHeEeuHzbyMPKOJaA" name="country" type="_1ZfGsKHSEeuDk9H_gpfrgQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_AGhasKHfEeuHzbyMPKOJaA" name="TelephoneNumber">
<generalization xmi:type="uml:Generalization" xmi:id="_dnKjMKHhEeuHzbyMPKOJaA" general="_t4ZIQKHcEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_EwkvAKHfEeuHzbyMPKOJaA" name="countryCode" type="_hqWTgKHbEeunjrVPm6TZ0Q"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_SGQWsKHfEeuHzbyMPKOJaA" name="areaCode" type="_vBfW8KHfEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_TZTS8KHfEeuHzbyMPKOJaA" name="line" type="_vBfW8KHfEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_UtOY8KHfEeuHzbyMPKOJaA" name="extension" type="_vBfW8KHfEeuHzbyMPKOJaA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P_VRAKHgEeuHzbyMPKOJaA"/>
<upperValue xmi:type="uml:LiteralInteger" xmi:id="_P_XGMKHgEeuHzbyMPKOJaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_WPigQKHfEeuHzbyMPKOJaA" name="type" type="_F9nUcKHgEeuHzbyMPKOJaA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OwT5IKHgEeuHzbyMPKOJaA"/>
<upperValue xmi:type="uml:LiteralInteger" xmi:id="_OwW8cKHgEeuHzbyMPKOJaA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_F9nUcKHgEeuHzbyMPKOJaA" name="TelephoneNumberType"/>
<packagedElement xmi:type="uml:DataType" xmi:id="_oZ3GMKHgEeuHzbyMPKOJaA" name="EmailAddress">
<generalization xmi:type="uml:Generalization" xmi:id="_cxEBoKHhEeuHzbyMPKOJaA" general="_t4ZIQKHcEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_rVXOAKHgEeuHzbyMPKOJaA" name="name" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_sOpmcKHgEeuHzbyMPKOJaA" name="domain" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_QlF0AKHhEeuHzbyMPKOJaA" name="SocialNetworkHandle">
<generalization xmi:type="uml:Generalization" xmi:id="_cIuPQKHhEeuHzbyMPKOJaA" general="_t4ZIQKHcEeuHzbyMPKOJaA"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Sgw2gKHhEeuHzbyMPKOJaA" name="handle" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_TgKeAKHhEeuHzbyMPKOJaA" name="network" type="_U9A2gKHhEeuHzbyMPKOJaA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_U9A2gKHhEeuHzbyMPKOJaA" name="SocialNetwork"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_NxTqIKaJEeuFv72Lf76jxQ" name="UnitOfMeasure">
<packagedElement xmi:type="uml:Class" xmi:id="_h8vosKaJEeuFv72Lf76jxQ" name="UnitOfMeasure" isAbstract="true">
<ownedAttribute xmi:type="uml:Property" xmi:id="_pQdG4KaJEeuFv72Lf76jxQ" name="symbol" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_sD-XYKaJEeuFv72Lf76jxQ" name="WeightUnit">
<generalization xmi:type="uml:Generalization" xmi:id="_6jCB8KaJEeuFv72Lf76jxQ" general="_h8vosKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_wMxYwKaJEeuFv72Lf76jxQ" name="DistanceUnit">
<generalization xmi:type="uml:Generalization" xmi:id="_98YjYKaJEeuFv72Lf76jxQ" general="_h8vosKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_x8m-sKaJEeuFv72Lf76jxQ" name="TimeUnit">
<generalization xmi:type="uml:Generalization" xmi:id="_9OaDEKaJEeuFv72Lf76jxQ" general="_h8vosKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_zVBjIKaJEeuFv72Lf76jxQ" name="TemperatureUnit">
<generalization xmi:type="uml:Generalization" xmi:id="_8mqGkKaJEeuFv72Lf76jxQ" general="_h8vosKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_TRuJQKaKEeuFv72Lf76jxQ" name="Quantity" isAbstract="true"/>
<packagedElement xmi:type="uml:DataType" xmi:id="_XISLIKaKEeuFv72Lf76jxQ" name="DiscreteQuantity">
<generalization xmi:type="uml:Generalization" xmi:id="_Ek8WUKaLEeuFv72Lf76jxQ" general="_TRuJQKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_hZOPcKaKEeuFv72Lf76jxQ" name="count" type="_Ujp4UJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_dczdMKaKEeuFv72Lf76jxQ" name="MeasuredQuantity">
<generalization xmi:type="uml:Generalization" xmi:id="_FIo5QKaLEeuFv72Lf76jxQ" general="_TRuJQKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_kLpTwKaKEeuFv72Lf76jxQ" name="amount" type="_W1-gQJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_oI0T8KaKEeuFv72Lf76jxQ" name="MeasuredWeight">
<generalization xmi:type="uml:Generalization" xmi:id="_F0n1gKaLEeuFv72Lf76jxQ" general="_dczdMKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_5i0ssKaKEeuFv72Lf76jxQ" name="unitOfMeasure" type="_sD-XYKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_vLg6oKaKEeuFv72Lf76jxQ" name="MeasuredDistance">
<generalization xmi:type="uml:Generalization" xmi:id="_GY1V0KaLEeuFv72Lf76jxQ" general="_dczdMKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_-WDLIKaKEeuFv72Lf76jxQ" name="unitOfMeasure" type="_wMxYwKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_1LbOoKaKEeuFv72Lf76jxQ" name="MeasuredTime">
<generalization xmi:type="uml:Generalization" xmi:id="_HI_ncKaLEeuFv72Lf76jxQ" general="_dczdMKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_-iuVMKaKEeuFv72Lf76jxQ" name="unitOfMeasure" type="_x8m-sKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_3C6UsKaKEeuFv72Lf76jxQ" name="MeasuredTemperature">
<generalization xmi:type="uml:Generalization" xmi:id="_H6fV0KaLEeuFv72Lf76jxQ" general="_dczdMKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_-xei4KaKEeuFv72Lf76jxQ" name="unitOfMeasure" type="_zVBjIKaJEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_qCR6gKaLEeuFv72Lf76jxQ" name="DimensionSet" isAbstract="true"/>
<packagedElement xmi:type="uml:DataType" xmi:id="_tgvlcKaLEeuFv72Lf76jxQ" name="RectangularDimensionSet">
<generalization xmi:type="uml:Generalization" xmi:id="_43jssKaLEeuFv72Lf76jxQ" general="_qCR6gKaLEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_6s7S4KaLEeuFv72Lf76jxQ" name="height" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_7lX90KaLEeuFv72Lf76jxQ" name="width" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_xcdNEKaLEeuFv72Lf76jxQ" name="CuboidDimensionSet">
<generalization xmi:type="uml:Generalization" xmi:id="_5fdaMKaLEeuFv72Lf76jxQ" general="_qCR6gKaLEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_OD68wKaMEeuFv72Lf76jxQ" name="height" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Om340KaMEeuFv72Lf76jxQ" name="width" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QNvI8KaMEeuFv72Lf76jxQ" name="depth" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_zdi7EKaLEeuFv72Lf76jxQ" name="CylindricalDimensionSet">
<generalization xmi:type="uml:Generalization" xmi:id="_6Oax8KaLEeuFv72Lf76jxQ" general="_qCR6gKaLEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Tcm4sKaMEeuFv72Lf76jxQ" name="diameter" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_XxHa0KaMEeuFv72Lf76jxQ" name="depth" type="_vLg6oKaKEeuFv72Lf76jxQ"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_zsUOkMPTEe2Lu61MUBYm3A" name="Agreement">
<packagedElement xmi:type="uml:Interface" xmi:id="_3y_wEMPTEe2Lu61MUBYm3A" name="IAgreement" isAbstract="true">
<ownedAttribute xmi:type="uml:Property" xmi:id="_BxYEwMPUEe2Lu61MUBYm3A" name="name" type="_ac5joJ0gEeuosN6Nd1GBJQ"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_DK3nQMPUEe2Lu61MUBYm3A" name="originalInceptionDate" type="_v0B5QJ0gEeuosN6Nd1GBJQ"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_hU9WYNesEe6Xsc5ufzhAPA" name="DateTime">
<packagedElement xmi:type="uml:Class" xmi:id="_orwk0NesEe6Xsc5ufzhAPA" name="Month"/>
<packagedElement xmi:type="uml:Class" xmi:id="_6RIgENesEe6Xsc5ufzhAPA" name="Day"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_kfcG8J0dEeuosN6Nd1GBJQ" name="Documentation">
<ownedComment xmi:type="uml:Comment" xmi:id="_ObmioG1uEeyGYpzd-2skXA">
<body><p>The ULDM is intended to be a generic logical model of the data that underpins a variety of industry verticals. It is inherently&nbsp;domain-centric in that all data is modelled within a specific domain where the domain structure is hierarchical. This means that, as well as modelling the specifics of the industry verticals (in vertical domains), the ULDM allows non-industry specific processes (e.g. Finance) to be described within a horizontal Shared Services domain, as well as all domains being able to leverage the same common core of generic concepts (such as primitives and reference data).</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_nXI9sG1vEeyGYpzd-2skXA">
<body><p>While other structures could be considered, the top level of the ULDM is organised as list of vertical domains followed by the Shared Services domain and the Common domain. In principle, the ULDM could efficiently represent the needs of a great many different verticals and their derivatives but, in practice, the associated modelling effort must inevitably be prioritised according to actual need. Accordingly, the scope of the ULDM is necessarily constrained by the needs of its authors and currently focuses on Retail and Financial Services.</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_kXp0IG13EeyySo6rP8QG2w">
<body><p>Some thought needs to be given to the difference between genuuinely shared services (e.g. Finance and HR) as compared to common capabilities that can be adapted across different industry verticals (e.g. Logistics/Supply Chain, Contact Centre, etc.)</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_nXJkwG1vEeyGYpzd-2skXA">
<body><p>The structure of this documentation deliberately reflects the structure of the ULDM itself and is intended as a detailed guide for those wishing to understand the intent of the model and the thought processes that have driven it.</p>
</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_1vxXgG1sEeyGYpzd-2skXA" name="Retail">
<ownedComment xmi:type="uml:Comment" xmi:id="_YVhtgG4QEeyXoOFUHXlY1w">
<body><p>The Retail industry vertical domain describes the specific data requirements for the procurement, management, selling and delivery of goods and services to retail customers. It is divided in to sub-domains covering:</p>
<ul>
<li>${link=Selling} - the transacting with retail customers for the sale of Products (goods and services)</li>
<li>${link=LogicalSupplyChain} - the planning and management of the flow of goods through the whole of the supply chain</li>
<li>${link=PhysicalSupplyChain} - the physical movement of goods through the whole of the supply chain</li>
</ul>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_vB-v8G4TEeyMwO_fjf6e7A">
<body><p>${diagram=/Retail/Retail Package Diagram@50%}</p>
</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_bIMCYG4QEeyXoOFUHXlY1w" name="Selling">
<ownedComment xmi:type="uml:Comment" xmi:id="_qsexcG7mEeyk79Vd6xgsXA">
<body><p>The Selling sub-domain is concerned with the processes and data required to support the act of transacting with the retail customer for goods and services. As such, the domain essentially splits into a description of the various ways in which the transaction is handled (e.g. Point of Sale, online orders), and the actual products (good and services) which are subject of those transactions.</p>
</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_qruIEG4YEey7jY2uX29XZA" name="SalesTransaction">
<ownedComment xmi:type="uml:Comment" xmi:id="_AZwZYG7rEeyk79Vd6xgsXA">
<body><p>In its most basic form, a Sales Transaction is an exchange of products (goods and/or&nbsp;services) and monetary funds in the context of an applicable&nbsp;legislatory framework that may impose charges or constraints on the transaction (e.g. sales tax). This view of a Sales Transaction is, however,&nbsp;abstracted from the specifics of how the transaction is enacted. Consequently, this domain also includes sub-domains to describe the elements of the transacting process specific to the following contexts:</p>
<ul>
<li>${link=PointOfSale} -&nbsp;the purchasing of products in person&nbsp;in a physical store</li>
<li>${link=CustomerOrder} - the purchasing of products through an order placed for fulfilment (e.g. placed online, by telephone, or some other mechanism)</li>
</ul>
<p>Note that a Sales Transaction typically involves the supply of products by the retailer&nbsp;to the customer for an agreed fee, but this situation may reversed in the context of a return which may be thought of as a form of compensating transaction that reverses the effects of some or all of the original transaction.</p>
</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_s-DXEG4YEey7jY2uX29XZA" name="PointOfSale"/>
<packagedElement xmi:type="uml:Package" xmi:id="_uuG_cG4YEey7jY2uX29XZA" name="CustomerOrder"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_wz61YG4YEey7jY2uX29XZA" name="Product">
<ownedComment xmi:type="uml:Comment" xmi:id="_aAxbcG4dEey7jY2uX29XZA">
<body><p>While there is necessarily a direct correspondence between theproducts that are sold to the customer and the goods managed by the supply chain (as otherwise customers might choose to buy products that cannot be fulfilled), the way products are represented to the customer for sale may not always reflect the way they are supplied. At a basic level, the way products are described (i.e. the product attributes) serves a different purpose in the context of&nbsp;selling (attracting&nbsp;a sale) compared to the purpose&nbsp;in the supply chain (storing goods in warehouses and moving them on trucks). However, there may also be more structural changes in selling, e.g. when multiple products are bundled together for sale as a single derived product.</p>
<p>Creating original data is never free and so the cost of maintaining separate views of product for both selling and supply chain must be carefully considered but not implementing this separation is, in practice, an unworkable constraint on the heart of the the retail process - representing the offer in the most appealing way for the customer to maximise the possibility of a sale. However, this does not mean that the processes for managing the data ar required to&nbsp;be inefficient - common data can be copied by value (rather than by direct reference) from one domain to another&nbsp;at no&nbsp;manual cost&nbsp;which then allows for the possibility of changing or augmenting this data in the downstream domain if (and only if) this is deemed appropriate.</p>
<p>Note that the process of copying data by value is not without its challenges - primarily (as with all duplication of data) there is the question of consitency. Again, though, this is entirely manageable as long as absolute clarity is maintained regarding which domain is authoritative with regard which data - anything that is necessarily an artefact of how products are supplied must be mastered within the supply chain while anything that is specific to how products are sold to customers is owned within selling. In practice, the bulk of the work is done in the supply chain processes with the product&nbsp;data in the selling domain providing the cosmetic veneer to make the products look attractive.</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_myNw0G4hEeyQLf-pXvFQRg">
<body><p>Central to the way products are organised for sale is the concept of a Catalogue, which is simply a mechanism for providing a layer of navigation over the complete list of products availble for sale in a given context. Note that this concept is as valid in a physical store as it is online, although the typical business terminology (ranges, assortments and planograms) is different.</p>
</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_MdIBgG4jEeyk79Vd6xgsXA" name="Catalogue"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_cSt70G4QEeyXoOFUHXlY1w" name="LogicalSupplyChain"/>
<packagedElement xmi:type="uml:Package" xmi:id="_eKqU4G4QEeyXoOFUHXlY1w" name="PhysicalSupplyChain"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_32yHUG1sEeyGYpzd-2skXA" name="FinancialServices"/>
<packagedElement xmi:type="uml:Package" xmi:id="_6ZcRUG1sEeyGYpzd-2skXA" name="SharedServices">
<packagedElement xmi:type="uml:Package" xmi:id="_W9jjYL2ZEe2hVri8Wh2pVA" name="Finance">
<packagedElement xmi:type="uml:Package" xmi:id="_ZJ6tQL2ZEe2hVri8Wh2pVA" name="BookKeeping">
<ownedComment xmi:type="uml:Comment" xmi:id="_d1iu4L2ZEe2hVri8Wh2pVA">
<body><p>The Bookkeeping Package is the core of supporting both Financial Accounting and Management Accounting as it deals with the ways BusinessTransactions are recorded in Journals and Ledgers that track the balances of the Accounts. These are, in turn, used to prepare both Financial Statements and Management Reports.</p>
<p>Typically, there are at least two philosophical approaches that one can consider within this domain:</p>
<ul>
<li>Integrated or separate accounts</li>
<li>Double entry or single entry bookkeeping</li>
</ul>
<p>The model presented here represents the prevailing approach, i.e. integrated double entry. The adoption of the double entry framework arguably creates a level of redundancy that is unnecessary in a computer-based accounting system but it has the advantage of conforming to an accounting approach that has been well understood for hundreds of years. Integrating the Financial Accounts and Management Accounts simply requires the granularity at which Accounts are managed to be determined by a number of intersecting hierarchies rather than just a single Account hierarchy.</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_d1jV8L2ZEe2hVri8Wh2pVA">
<body><p>Despite the fact that Accounting is a broad and complex subject, the structure of the core underlying data is relatively simple:</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/Book Keeping@50%}</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_d1lLIL2ZEe2hVri8Wh2pVA">
<body><p>As Len Silverston discusses in the first volume of his Data Model Resource Book, an immediate consideration is the difference between a Business Transaction and an Accounting Transaction. Silverston wisely opts to separate these concepts as there are many different types of Business Transaction (Invoices, Purchase Orders, Stock Transfers, etc.) each of which needs to be fully described in the context of their own domain. Silverston&#39;s ERD&#39;s, however, lack the modelling richness of LDML and so he has no option but to use an optional one-to-one relationship to show this link. Heree, the Abstraction link of LDML is ideal for representing the fact that they are related but distinct concepts. The use of&nbsp;the Interface ${link=/SharedServices/Finance/BookKeeping/IBusinessTransaction} to hold this Abstraction further simplifies the representation of the model by allowing us to show a single Business Transaction within the Bookkeeping Domain rather than shown either an exhaustive or simply representative set of Abstractions between specific Business Transactions and the ${link=/SharedServices/Finance/BookKeeping/JournalEntry}.</p>
<p>At this point, it is worth noting that there are at least two ways to think about the concept of an Accounting Transaction:</p>
<ul>
<li>As a Transaction concept that is subsequently recorded in a Journal</li>
<li>As an entry in a Journal arising from the need to record a Business Transaction</li>
</ul>
<p>Silverston adopts the former approach and there is nothing wrong with that. Here we adopt the latter approach, however, because Accounting Transactions are first recorded in a ${link=/SharedServices/Finance/BookKeeping/Journal} (Journals are books of first or prime entry), hence a ${link=/SharedServices/Finance/BookKeeping/JournalEntry} is the (notional) first recording of the Accounting Transaction.</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_d1lLIb2ZEe2hVri8Wh2pVA">
<body><p>If we consider the structure of a ${link=/SharedServices/Finance/BookKeeping/JournalEntry} it should be apparent from basic bookkeeping theory that each ${link=/SharedServices/Finance/BookKeeping/JournalEntry} must have at least one ${link=/SharedServices/Finance/BookKeeping/CreditPosting} and at least one ${link=/SharedServices/Finance/BookKeeping/DebitPosting} - this is required in order to satisfy the need for the double entry records to be balanced. In a paper-based Accounting System, the Accounting Transaction would be fully recorded in a Journal and then the postings would be <u>copied</u> into the Ledgers where the balances of the Accounts could be determined. In a computer-based Accounting System, this duplicate recording of the Postings is clearly unnecessary. Accordingly, the model presented here (as per the Silverston model, albeit with different entity names)&nbsp;treats the Postings recorded against the ${link=/SharedServices/Finance/BookKeeping/JournalEntry} directly as Ledger Entries. The use of the distinct sub-Classes of ${link=/SharedServices/Finance/BookKeeping/DebitPosting} and ${link=/SharedServices/Finance/BookKeeping/CreditPosting} confer no additional structure but further allow us to enforce the requirements of balanced double entry Accounting Transactions.</p>
</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_LYEcQL3AEe2Rbrgyz5QEFw" name="JournalsAndLedgers">
<ownedComment xmi:type="uml:Comment" xmi:id="_frerEL3AEe2Rbrgyz5QEFw">
<body><p>Journals and Ledgers used to be physical books in which transactions were recorded but, in the world of computer-based Accounting Systems, these physical concepts have less significance. However, it is still useful to be able to classify how we group transactions and Accounts into Journals and Ledgers and so it is trivial to declare &lt;&lt;ReferenceData&gt;&gt; entities to reflect these concepts. JournalEntries are &quot;recorded&quot; in Journals and Postings are recorded in the Ledger relevant to the Account to which the Posting is made.</p>
<p>The only remaining point to examine is what we consider to be an Account. With Financial Accounting separate&nbsp;from Management Accounting then statutory needs to can be met with a single hierarchy to represent the structure of the General Ledger. In an Integrated Accounting System a minor additional complexity is required to allow us to use the Account to understand the performance of the business. This is described in detail in the ${link=../ChartOfAccounts} section but is easily achieved by allowing an Account to be defined by the intersection of multiple hierarchies. The GL Account hierarchy will always be required but other segments or dimensions can be added as desired. In this way, the disposition of the accounts with regard to any one hierarchy can easily be determined by aggregating all of the accounts for that specific hierarchy.</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/Journals, Accounts and Ledgers@50%}</p>
</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_C4u5cL21Ee2Rbrgyz5QEFw" name="AccountingPeriods">
<ownedComment xmi:type="uml:Comment" xmi:id="_5b7OgL25Ee2Rbrgyz5QEFw">
<body><p>An ${link=/SharedServices/Finance/BookKeeping/AccountingPeriod} simply defines a period for which AccountBalances are managed within the Ledgers. At the end of one period the AccountBalance is confirmed as a Closing Balance which then also becomes the Opening Balance for the next AccountingPeriod. It follows, therefore, that AccountingPeriods should be contiguous. As reporting cycles are generally annual, AccountingPeriods will typically belong to a reporting year but it is important to note that it may be desirable to have rolled up views of AccountingPeriods that are more granular than just the FiscalYear. Typically, the underlying granularity of an AccountingPeriod may be a calendar month so it is potentially valuable to identify which months roll up to a given quarter in addition to knowing which fiscal year they belong to.</p>
<p>Some Accounting Systems choose to stick with the simple FiscalYear/AccountingPeriod model. Silverston opts for a simple hierachy but this requires some care as AccountBalances cannot be opened and closed at multiple levels of granularity - it is important that this process happens at the most granular level of the hierarchy, i.e. the leaf nodes. In LDML we have the ability to declare hierarchies where we can explicitly identify leaf and root nodes so the most flexible model is as defined here:</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/Accounting Periods@50%}</p>
</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_G6RYEL28Ee2Rbrgyz5QEFw">
<body><p>Within this structure, the FiscalYear is always the root of a given AccountingPeriod hierarchy and it is entirely possible for each FiscalYear to lead directly to a contiguous set of AccountingPeriod leaf nodes. However, it also allows an arbitrary number of intermediate levels for the purpose of rolling up.</p>
</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_p1EnsL20Ee2Rbrgyz5QEFw" name="AccountBalances">
<ownedComment xmi:type="uml:Comment" xmi:id="_Ojym0L2_Ee2Rbrgyz5QEFw">
<body><p>Again, as discussed by Silverston, there is a design decision to be made as to whether an AccountBalance should be considered an entity in its own right as it clearly represents the total impact of the LedgerEntries on each Account - it is clearly a derived concept and so it represents inherent data duplication. At the same time, transaction volumes, particularly in a Retail business, can be huge so it is important to consider the cost of recomputing balances from source.</p>
<p>From a data modelling perspective, however, the position is arguably a bit simpler as the structure of the AccountBalance remains independent of how it is derived. The ULDM formally declares the AccountBalance as a &lt;&lt;Derived&gt;&gt; entity to make this clear and it then becomes a choice as to whether the AccountBalances are assumed to be correct from the Accounting System in an analytical context or whether they should be recomputed.</p>
<p>&nbsp;</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/Book Keeping@50%}</p>
</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_sy8uEL20Ee2Rbrgyz5QEFw" name="ChartOfAccounts">
<ownedComment xmi:type="uml:Comment" xmi:id="_uqS18L3PEe2Rbrgyz5QEFw">
<body><p>As previously discussed under ${link=../JournalsAndLedgers}, Accounts are defined as the intersection of multiple hierarchies, one of which <strong>must</strong> reflect the structure of the General Ledger and the other facilitating an understanding of the performance of the business according to different lenses. It is perfectly possible to model this as a list of generic hierarchies (this is likely to reflect most physical implementations) but the GL Account hierarchy is specific for (at least)&nbsp;a couple of reasons:</p>
<ul>
<li>The GL Hierarchy determines the type of each Account and, hence, the impact on the Account of a Debit or Credit Posting</li>
<li>The application of the GL Hierarchy is mandatory while all other &quot;Segments&quot; are defined according to the needs of the specific organisation</li>
</ul>
<p>Accordingly, the ULDM models the GL Hierarchy separately from the Management Accounting Segment Hierarchies such that we can be clear about the construction of the unique&nbsp;AccountCombination that is tied to each Account.</p>
<p>Note that the Accounts are maintained at the lowest level of granularity in the hierarchies (i.e.leaf nodes) and the disposition of the Accounts at intermediate levels of a hierarchy can be obtained by simply aggregating the nodes immediately below in the desired hierarchy. For this reason, the LDML pattern fo a hierarchy with Parent Node and Leaf Node identification is again used such that the model can robustly declare that the Account Combination references only leaf nodes.</p>
<p>The resulting GL Account Hierarchy data model is thus:</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/ChartOfAccounts/GL Account Hierarchy@50%}</p>
<p>Unsurprisingly, the generic hierarchies for Management Accounting are defined in a very similar manner:</p>
<p>${diagram=/SharedServices/Finance/BookKeeping/ChartOfAccounts/Segment Hierarchies@50%}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_0rohkL20Ee2Rbrgyz5QEFw" name="ControlAccounts"/>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_8e464G1sEeyGYpzd-2skXA" name="Common"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_mAwvwJ0dEeuosN6Nd1GBJQ" name="Tutorials"/>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_OBzRsJ0cEeuosN6Nd1GBJQ">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xCNIIOxBEe61G9x-vNlaow" source="PapyrusVersion">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xCNIIexBEe61G9x-vNlaow" key="Version" value="0.1.10"/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xCNIIuxBEe61G9x-vNlaow" key="Comment" value="Allowed <<TypeConsistent>> to be applied to Interfaces"/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xCNII-xBEe61G9x-vNlaow" key="Copyright" value=""/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xCNIJOxBEe61G9x-vNlaow" key="Date" value="2024-03-27"/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xCNIJexBEe61G9x-vNlaow" key="Author" value="Oliver Gardiner"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OB0f0J0cEeuosN6Nd1GBJQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="ldml.profile.uml#_FgxI8OxAEe61G9x-vNlaow"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="ldml.profile.uml#_e7vP0J0HEeuosN6Nd1GBJQ"/>
</profileApplication>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_LTxo0NTNEeuW8fcvHu-kJw">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LTzeANTNEeuW8fcvHu-kJw" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
</profileApplication>
</uml:Model>
<ldml:Documentation xmi:id="_oJhzEJ0dEeuosN6Nd1GBJQ" base_Package="_kfcG8J0dEeuosN6Nd1GBJQ"/>
<ldml:Tutorial xmi:id="_ptm08J0dEeuosN6Nd1GBJQ" base_Package="_mAwvwJ0dEeuosN6Nd1GBJQ"/>
<ldml:ReferenceLabel xmi:id="_X0xEkKHSEeuDk9H_gpfrgQ" base_Property="_K-8dUJ0fEeuosN6Nd1GBJQ"/>
<ldml:ReferenceData xmi:id="_84iSMKHSEeuDk9H_gpfrgQ" base_Class="_1ZfGsKHSEeuDk9H_gpfrgQ"/>
<ldml:ReferenceData xmi:id="_t9wDAKHUEeuDk9H_gpfrgQ" base_Class="_jRsa4KHSEeuDk9H_gpfrgQ"/>
<ldml:ReferenceData xmi:id="_vTmboKHUEeuDk9H_gpfrgQ" base_Class="_ydvuUKHSEeuDk9H_gpfrgQ"/>
<ldml:ReferenceCode xmi:id="__KLSwKHUEeuDk9H_gpfrgQ" base_Property="_1I1JoKHUEeuDk9H_gpfrgQ"/>
<ldml:ReferenceCode xmi:id="_G_SN0KHVEeuDk9H_gpfrgQ" base_Property="_bMotYKHUEeuDk9H_gpfrgQ"/>
<ldml:ReferenceCode xmi:id="_LDnl8KHVEeuDk9H_gpfrgQ" base_Property="_HhMBAKHVEeuDk9H_gpfrgQ"/>
<ldml:ReferenceData xmi:id="_nM0BEKHcEeuHzbyMPKOJaA" base_Class="_hqWTgKHbEeunjrVPm6TZ0Q"/>
<ldml:ReferenceData xmi:id="_KL6g4KHgEeuHzbyMPKOJaA" base_Class="_F9nUcKHgEeuHzbyMPKOJaA"/>
<ldml:ReferenceData xmi:id="_YFiGoKHhEeuHzbyMPKOJaA" base_Class="_U9A2gKHhEeuHzbyMPKOJaA"/>
<ldml:ReferenceData xmi:id="_kZ5noKaJEeuFv72Lf76jxQ" base_Class="_h8vosKaJEeuFv72Lf76jxQ"/>
<ldml:ReferenceData xmi:id="_5hXJkKaJEeuFv72Lf76jxQ" base_Class="_sD-XYKaJEeuFv72Lf76jxQ"/>
<ldml:ReferenceData xmi:id="_5hXwoKaJEeuFv72Lf76jxQ" base_Class="_wMxYwKaJEeuFv72Lf76jxQ"/>
<ldml:ReferenceData xmi:id="_5hYXsKaJEeuFv72Lf76jxQ" base_Class="_x8m-sKaJEeuFv72Lf76jxQ"/>
<ldml:ReferenceData xmi:id="_5hYXsaaJEeuFv72Lf76jxQ" base_Class="_zVBjIKaJEeuFv72Lf76jxQ"/>
<ldml:ReferenceData xmi:id="_Cm0RMKaVEeuFv72Lf76jxQ" base_Class="_Bund4KaVEeuFv72Lf76jxQ"/>
<ldml:ReferenceCode xmi:id="_OrMpEKaVEeuFv72Lf76jxQ" base_Property="_IEvScKaVEeuFv72Lf76jxQ"/>
<ldml:Documentation xmi:id="_PZypMG1uEeyGYpzd-2skXA" base_Comment="_ObmioG1uEeyGYpzd-2skXA"/>
<ldml:Documentation xmi:id="_omVUsG1vEeyGYpzd-2skXA" base_Comment="_nXI9sG1vEeyGYpzd-2skXA"/>
<ldml:Documentation xmi:id="_omXJ4G1vEeyGYpzd-2skXA" base_Comment="_nXJkwG1vEeyGYpzd-2skXA"/>
<ldml:Documentation xmi:id="_aM5e0G4QEeyXoOFUHXlY1w" base_Comment="_kXp0IG13EeyySo6rP8QG2w"/>
<ldml:Documentation xmi:id="_cm3U8G4SEeygTIJIRhM36Q" base_Comment="_YVhtgG4QEeyXoOFUHXlY1w"/>
<ldml:Documentation xmi:id="_v3W4wG4TEeyMwO_fjf6e7A" base_Comment="_vB-v8G4TEeyMwO_fjf6e7A"/>
<ldml:Documentation xmi:id="_eNPb4G4dEey7jY2uX29XZA" base_Comment="_aAxbcG4dEey7jY2uX29XZA"/>
<ldml:Documentation xmi:id="_BssaMG7mEeyk79Vd6xgsXA" base_Comment="_myNw0G4hEeyQLf-pXvFQRg"/>
<ldml:Documentation xmi:id="_Ym7E0G7nEeyk79Vd6xgsXA" base_Comment="_qsexcG7mEeyk79Vd6xgsXA"/>
<ldml:Documentation xmi:id="_J2cWQG7rEeyk79Vd6xgsXA" base_Comment="_AZwZYG7rEeyk79Vd6xgsXA"/>
<ldml:ReferenceCode xmi:id="_YOWaMFXNEe2AS-AxgfYWgA" base_Property="_8r080KHbEeunjrVPm6TZ0Q"/>
<ldml:Documentation xmi:id="_4s6GgFXpEe2AS-AxgfYWgA" base_Comment="_4s44YFXpEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="__VFe8FXqEe2AS-AxgfYWgA" base_Comment="__VE34FXqEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_E2-aMFXrEe2AS-AxgfYWgA" base_Comment="_E29zIFXrEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_dlAvUFXtEe2AS-AxgfYWgA" base_Comment="_dlAIQFXtEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_txgMEVXtEe2AS-AxgfYWgA" base_Comment="_txgMEFXtEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_1AErkFXtEe2AS-AxgfYWgA" base_Comment="_1AEEgFXtEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_46vKUVXtEe2AS-AxgfYWgA" base_Comment="_46vKUFXtEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_RTSTMFaWEe2AS-AxgfYWgA" base_Comment="_RTRFEFaWEe2AS-AxgfYWgA"/>
<ldml:Documentation xmi:id="_d1lyML2ZEe2hVri8Wh2pVA" base_Comment="_d1iu4L2ZEe2hVri8Wh2pVA"/>
<ldml:Documentation xmi:id="_d1ymgL2ZEe2hVri8Wh2pVA" base_Comment="_d1jV8L2ZEe2hVri8Wh2pVA"/>
<ldml:Documentation xmi:id="_d1zNkL2ZEe2hVri8Wh2pVA" base_Comment="_d1lLIL2ZEe2hVri8Wh2pVA"/>
<ldml:Documentation xmi:id="_d1z0oL2ZEe2hVri8Wh2pVA" base_Comment="_d1lLIb2ZEe2hVri8Wh2pVA"/>
<ldml:Documentation xmi:id="_5b71kL25Ee2Rbrgyz5QEFw" base_Comment="_5b7OgL25Ee2Rbrgyz5QEFw"/>
<ldml:Documentation xmi:id="_G6R_IL28Ee2Rbrgyz5QEFw" base_Comment="_G6RYEL28Ee2Rbrgyz5QEFw"/>
<ldml:Documentation xmi:id="_OjzN4L2_Ee2Rbrgyz5QEFw" base_Comment="_Ojym0L2_Ee2Rbrgyz5QEFw"/>
<ldml:Documentation xmi:id="_frerEb3AEe2Rbrgyz5QEFw" base_Comment="_frerEL3AEe2Rbrgyz5QEFw"/>
<ldml:Documentation xmi:id="_uqTdAL3PEe2Rbrgyz5QEFw" base_Comment="_uqS18L3PEe2Rbrgyz5QEFw"/>
<ldml:ReferenceData xmi:id="_BgMHwNetEe6Xsc5ufzhAPA" base_Class="_orwk0NesEe6Xsc5ufzhAPA"/>
<ldml:ReferenceData xmi:id="_CfzKoNetEe6Xsc5ufzhAPA" base_Class="_6RIgENesEe6Xsc5ufzhAPA"/>
</xmi:XMI>