activefacts-examples 1.7.2 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6adce89f6d0f635d4a04c797a57108d7a9383fd4
4
- data.tar.gz: ce83f699090b2224dcbf622ec476d53cf3afe42c
3
+ metadata.gz: 7f93f35c1d7ac88faac09133a9553a32b9d4703c
4
+ data.tar.gz: e8dfdc6c577ed8bcb6b32bf66a4a57c0946f7187
5
5
  SHA512:
6
- metadata.gz: 9fd1c3464285ab449310cf8db1c823a3c239d7b816a6bb8206c455b28db64e1171b6d1c8ea569fb0e073769ae2ae1360a4e62ef3f327093a3f861db263b31340
7
- data.tar.gz: a4b06621a15442c8711a03468d5e5ee69e503ddd1542f36282e6610212cbd3b7d3a5da40fb212e216dae7f3b483ffa787a6415e775d50853ee2c8340753169b0
6
+ metadata.gz: bdfb1294b59b39e9ca14df1d434e117ae1d3880088b3f208f826ce19c7aff46d09031e33c70dac76a3d417f04f3ab339751c2c37b68a54bd52ff7d9b8797766c
7
+ data.tar.gz: ba58358aa52fceeec9aaf3099c8cc99a6461bd9af6649ea127e927d96a9d5f58117f037f1b980b790fde67874841994c140c1963d77390615bf372c7f55ceecf
data/Gemfile CHANGED
@@ -2,7 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- if ENV['PWD'] =~ %r{\A/Users/cjh/work/activefacts}
5
+ if ENV['PWD'] =~ %r{\A#{ENV['HOME']}/work}
6
+ $stderr.puts "Using work area gems for #{File.basename(File.dirname(__FILE__))} from activefacts-examples"
7
+ gem 'activefacts-api', path: '/Users/cjh/work/activefacts/api'
8
+ gem 'activefacts-metamodel', path: '/Users/cjh/work/activefacts/metamodel'
9
+ gem 'activefacts-rmap', path: '/Users/cjh/work/activefacts/rmap'
6
10
  gem 'activefacts-cql', path: '/Users/cjh/work/activefacts/cql'
7
11
  gem 'activefacts-orm', path: '/Users/cjh/work/activefacts/orm'
8
12
  gem 'activefacts-generators', path: '/Users/cjh/work/activefacts/generators'
@@ -4,11 +4,11 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "activefacts-examples"
7
- spec.version = "1.7.2"
7
+ spec.version = "1.8.0"
8
8
  spec.authors = ["Clifford Heath"]
9
9
  spec.email = ["clifford.heath@gmail.com"]
10
10
 
11
- spec.summary = %q{Example models in the Constellation Query Language for use with ActiveFacts}
11
+ spec.summary = %q{Example models for use with ActiveFacts}
12
12
  spec.description = %q{Example models in the Constellation Query Language for use with ActiveFacts}
13
13
  spec.homepage = "http://github.com/cjheath/activefacts-examples"
14
14
  spec.license = "MIT"
@@ -16,11 +16,9 @@ Gem::Specification.new do |spec|
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_development_dependency "bundler", "~> 1.10.a"
19
+ spec.add_development_dependency "bundler", ">= 1.10", "~> 1.10.6"
20
20
  spec.add_development_dependency "rake", "~> 10.0"
21
- spec.add_development_dependency "rspec"
21
+ spec.add_development_dependency "rspec", "~> 3.3"
22
22
 
23
- spec.add_runtime_dependency "activefacts-cql"
24
- spec.add_runtime_dependency "activefacts-orm"
25
- spec.add_runtime_dependency "activefacts-generators"
23
+ spec.add_runtime_dependency "activefacts", ">= 1.8", "~> 1.8.0"
26
24
  end
data/cql/Metamodel.cql CHANGED
@@ -53,6 +53,17 @@ Coefficient is identified by Numerator and Denominator and Coefficient is precis
53
53
  Coefficient has one Denominator,
54
54
  Coefficient is precise;
55
55
 
56
+ Component is identified by Guid where
57
+ Component has one Guid,
58
+ Guid is of at most one Component;
59
+ Component projects at most one Name;
60
+
61
+ Composition is identified by Guid where
62
+ Composition has one Guid,
63
+ Guid is of at most one Composition;
64
+ Composition is called one Name,
65
+ Name is of at most one Composition;
66
+
56
67
  Concept is identified by Guid where
57
68
  Concept has one Guid,
58
69
  Guid is of at most one Concept;
@@ -75,6 +86,8 @@ Context Note has one Discussion,
75
86
  Context Note applies to at most one relevant-Concept,
76
87
  Concept has Context Note;
77
88
 
89
+ Discriminator is a kind of Component;
90
+
78
91
  Enforcement is identified by Constraint where
79
92
  Constraint requires at most one Enforcement,
80
93
  Enforcement applies to one Constraint;
@@ -92,6 +105,8 @@ Fact is of one Fact Type;
92
105
  Implication Rule is identified by its Name;
93
106
  Concept is implied by at most one Implication Rule;
94
107
 
108
+ Indicator is a kind of Component;
109
+
95
110
  Instance is identified by Concept where
96
111
  Instance is an instance of one Concept;
97
112
  Instance objectifies at most one Fact,
@@ -103,6 +118,10 @@ Location is identified by X and Y where
103
118
  Location is at one X,
104
119
  Location is at one Y;
105
120
 
121
+ Mapping is a kind of Component;
122
+ Mapping (as Parent) contains Component (as Member) [acyclic, stronglyintransitive],
123
+ Member belongs to at most one Parent;
124
+
106
125
  Presence Constraint is a kind of Constraint;
107
126
  Presence Constraint has at most one max-Frequency restricted to {1..};
108
127
  Presence Constraint has at most one min-Frequency restricted to {2..};
@@ -128,6 +147,7 @@ Role is identified by Fact Type and Ordinal where
128
147
  Fact Type contains Role,
129
148
  Role fills one Ordinal,
130
149
  Ordinal applies to Role;
150
+ Indicator indicates one Role played;
131
151
  Link Fact Type has one implying-Role,
132
152
  implying-Role implies at most one Link Fact Type;
133
153
  Ring Constraint has at most one other-Role,
@@ -154,6 +174,8 @@ Role Value is identified by Fact and Role where
154
174
  Instance plays Role Value,
155
175
  Role Value is of one Instance;
156
176
 
177
+ Scoping is a kind of Mapping;
178
+
157
179
  Set Constraint is a kind of Constraint;
158
180
 
159
181
  Shape is identified by Guid where
@@ -229,6 +251,12 @@ Vocabulary contains Constraint,
229
251
  Vocabulary includes Unit,
230
252
  Unit is in one Vocabulary;
231
253
 
254
+ Absorption is a kind of Mapping;
255
+ Absorption traverses to one child-Role;
256
+ Absorption traverses from one parent-Role;
257
+ Absorption is matched by at most one reverse-Absorption;
258
+ Absorption flattens;
259
+
232
260
  Aggregation is where
233
261
  Variable is bound to Aggregate over aggregated-Variable,
234
262
  Aggregate of aggregated-Variable is bound as one Variable;
@@ -244,6 +272,12 @@ Bound is identified by Value and Bound is inclusive where
244
272
  Value is of at least one Bound,
245
273
  Bound is inclusive;
246
274
 
275
+ Composite is identified by Mapping where
276
+ Mapping projects at most one Composite,
277
+ Composite consists of one Mapping;
278
+ Composition contains Composite,
279
+ Composite belongs to one Composition;
280
+
247
281
  Constraint Shape is a kind of Shape;
248
282
  Constraint Shape is for one Constraint;
249
283
 
@@ -266,15 +300,30 @@ Diagram is identified by Vocabulary and Name where
266
300
  Diagram is called one Name,
267
301
  Name is of Diagram;
268
302
 
303
+ Discriminated Role is where
304
+ Discriminator distinguishes Role using one Value,
305
+ Role is indicated by Value for Discriminator;
306
+
269
307
  Fact Type Shape is a kind of Shape;
270
308
  Fact Type Shape has at most one Display Role Names Setting;
271
309
  Fact Type Shape is for one Fact Type,
272
310
  Fact Type has Fact Type Shape;
273
311
  Fact Type Shape has at most one Rotation Setting;
274
312
 
313
+ Injection is a kind of Mapping;
314
+
315
+ Mirror Role is a kind of Role;
316
+ Mirror Role is for at most one Role (as Base Role),
317
+ Base Role implies at most one Mirror Role;
318
+
275
319
  Model Note Shape is a kind of Shape;
276
320
  Model Note Shape is for one Context Note;
277
321
 
322
+ Nesting is where
323
+ Absorption is nested under index-Role in Ordinal position,
324
+ Absorption in Ordinal position is nested under one Role,
325
+ Role keys nesting of Absorption at Ordinal priority;
326
+
278
327
  ORM Diagram is a kind of Diagram;
279
328
  Shape is in one ORM Diagram,
280
329
  ORM Diagram includes Shape;
@@ -283,6 +332,7 @@ Object Type is identified by Vocabulary and Name where
283
332
  Object Type belongs to one Vocabulary,
284
333
  Object Type is called one Name;
285
334
  Instance is of one Object Type;
335
+ Mapping represents one Object Type;
286
336
  Object Type is an instance of one Concept;
287
337
  Object Type uses at most one Pronoun;
288
338
  Object Type plays Role,
@@ -374,8 +424,8 @@ Allowed Range is where
374
424
  Domain Object Type is a kind of Object Type;
375
425
 
376
426
  Entity Type is a kind of Domain Object Type;
377
- Entity Type nests at most one Fact Type,
378
- Fact Type is nested as at most one Entity Type;
427
+ Entity Type objectifies at most one Fact Type,
428
+ Fact Type is objectified as at most one Entity Type;
379
429
 
380
430
  Type Inheritance is a kind of Fact Type identified by Subtype and Supertype where
381
431
  Entity Type (as Subtype) is subtype of super-Entity Type (as Supertype) [acyclic, intransitive],
@@ -408,11 +458,14 @@ Value Type Parameter Restriction is where
408
458
  Value Type Parameter applies to Value Type;
409
459
  Value Type Parameter Restriction has one Value;
410
460
 
411
- Implicit Boolean Value Type is a kind of Value Type;
412
-
413
461
  /*
414
462
  * Constraints:
415
463
  */
464
+ either Component belongs to Mapping(1) or Component is a Mapping(2) that projects Composite but not both;
465
+ for each Component exactly one of these holds:
466
+ Component is a Mapping,
467
+ Component is an Indicator,
468
+ Component is a Discriminator;
416
469
  for each Concept exactly one of these holds:
417
470
  Object Type is an instance of Concept,
418
471
  Fact Type is an instance of Concept,
@@ -424,12 +477,18 @@ for each Concept exactly one of these holds:
424
477
  Fact is an instance of Concept,
425
478
  Population is an instance of Concept,
426
479
  Query is an instance of Concept;
480
+ either Constraint Shape is a Ring Constraint Shape or Constraint Shape is a Value Constraint Shape but not both;
427
481
  for each Constraint exactly one of these holds:
428
482
  Constraint is a Set Constraint,
429
483
  Constraint is a Presence Constraint,
430
484
  Constraint is a Ring Constraint,
431
485
  Constraint is a Value Constraint;
432
486
  either Domain Object Type is a Value Type or Domain Object Type is an Entity Type but not both;
487
+ for each Mapping exactly one of these holds:
488
+ Mapping is an Absorption,
489
+ Mapping is an Injection,
490
+ Mapping is a Scoping,
491
+ Mapping projects Composite;
433
492
  for each Role Sequence exactly one of these holds:
434
493
  Role Sequence is for Reading,
435
494
  Presence Constraint covers Role Sequence,
@@ -451,6 +510,9 @@ either Unit is fundamental or Unit is derived from base-Unit but not both;
451
510
  either Value Constraint Shape is for Object Type Shape or Value Constraint Shape is for Role Display but not both;
452
511
  either Value Constraint allows Value Range or Value Constraint requires matching Regular Expression but not both;
453
512
  either Value Constraint constrains Value Type or Value Constraint applies to Role but not both;
513
+ for each Mapping at most one of these holds:
514
+ Mapping is an Absorption that flattens,
515
+ Mapping projects Composite;
454
516
  for each Instance at most one of these holds:
455
517
  Instance has Value,
456
518
  Instance objectifies Fact;
@@ -466,19 +528,32 @@ Step specifies Fact Type that contains Role
466
528
  Variable is for Object Type that plays Role
467
529
  if and only if
468
530
  Variable is restricted by Role of Step;
531
+ /*
532
+ Absorption traverses from parent Role that is played by Object Type and Mapping(1) is a kind of Component(2) and Mapping(1) is an Absorption
533
+ only if Member belongs to Mapping(2) that represents Object Type;
534
+ Absorption traverses to child Role that is played by Object Type and Absorption is a kind of Mapping(2)
535
+ only if Mapping(1) represents Object Type;
536
+ */
469
537
  Presence Constraint is preferred identifier
470
538
  only if Presence Constraint has max Frequency;
471
539
  Value Type has Scale
472
540
  only if Value Type has Length;
473
541
  Variable matches nesting over Step
474
542
  only if Variable is for Object Type and Step specifies Fact Type;
543
+ each Absorption(1) occurs at most one time in
544
+ Absorption(2) is matched by reverse Absorption(1);
475
545
  either Agreement was reached by Agent or Agreement was on Date;
546
+ // either Component projects Name or Component is some Absorption that flattens;
476
547
  each Concept occurs at most one time in
477
548
  Object Type is an instance of Concept;
478
549
  each Concept occurs at most one time in
479
550
  Population is an instance of Concept;
480
551
  each Concept occurs at most one time in
481
552
  Role is an instance of Concept;
553
+ each Discriminator occurs at least 2 times in
554
+ Discriminator distinguishes Role using Value;
555
+ each combination Discriminator, Value occurs one time in
556
+ Discriminator distinguishes Role using Value;
482
557
  each combination Entity Type(1), Type Inheritance occurs at most one time in
483
558
  Entity Type(1) is subtype of super Entity Type(2),
484
559
  Type Inheritance provides identification;
@@ -500,68 +575,3 @@ each combination Vocabulary, Name occurs at most one time in
500
575
  each combination Vocabulary, Name occurs at most one time in
501
576
  Unit is in Vocabulary,
502
577
  Unit is called Name;
503
-
504
- /*
505
- * Compositions
506
- */
507
- Component is identified by Guid where
508
- Component has one Guid,
509
- Guid is of at most one Component;
510
- Component projects at most one Name;
511
-
512
- Composition is identified by Guid where
513
- Composition has one Guid,
514
- Guid is of at most one Composition;
515
- Composition is called one Name,
516
- Name is of at most one Composition;
517
-
518
- Discriminator is a kind of Component;
519
-
520
- Indicator is a kind of Component;
521
- Indicator indicates one Role played;
522
-
523
- Mapping is a kind of Component;
524
- Mapping contains Component (as Member) [acyclic, stronglyintransitive],
525
- Member belongs to at most one parent-Mapping;
526
- Mapping represents one Object Type;
527
-
528
- Nesting is a kind of Mapping;
529
-
530
- Absorption is a kind of Mapping;
531
- Absorption traverses to one child-Role;
532
- Absorption is nested under at most one index-Role;
533
- Absorption traverses from one parent-Role;
534
- Absorption flattens;
535
-
536
- Composite is identified by Mapping where
537
- Mapping projects at most one Composite,
538
- Composite consists of one Mapping;
539
- Composition contains Composite,
540
- Composite belongs to one Composition;
541
-
542
- Discriminated Role is where
543
- Discriminator distinguishes Role using one Value,
544
- Role is indicated by Value for Discriminator;
545
-
546
- Injection is a kind of Mapping;
547
- for each Component exactly one of these holds:
548
- that Component is a Mapping,
549
- that Component is an Indicator,
550
- that Component is a Discriminator;
551
- either Component is a Mapping(2) that projects some Composite or Component belongs to parent Mapping(1) but not both;
552
- for each Mapping exactly one of these holds:
553
- that Mapping is an Absorption,
554
- that Mapping is an Injection,
555
- that Mapping is a Nesting,
556
- that Mapping projects some Composite;
557
- for each Mapping at most one of these holds:
558
- that Mapping projects some Composite,
559
- that Mapping is an Absorption and that Absorption flattens;
560
- some Mapping represents some Object Type
561
- if and only if
562
- that Mapping is an Absorption that traverses to some child- Role and that Role is played by that Object Type;
563
- either Component projects some Name or that Component flattens;
564
- each Discriminator occurs at least 2 times in
565
- Discriminator distinguishes Role using Value;
566
- each combination Discriminator, Value occurs one time in
567
- Discriminator distinguishes Role using Value;
@@ -22,7 +22,7 @@ Person is identified by its Name;
22
22
  Vehicle Incident is a kind of Incident [separate];
23
23
 
24
24
  Witness is a kind of Person;
25
- Witness saw Incident,
25
+ Witness saw at least one Incident,
26
26
  Incident was independently witnessed by at most one Witness;
27
27
 
28
28
  Driver is a kind of Person;
@@ -50,7 +50,6 @@ diagrams: [
50
50
  {"uuid":"e6680c4a-00bb-7cf1-52c9-dfb39a","name":"Guid","shapes":[]},
51
51
  {"uuid":"8604dec4-1c72-930b-e1bb-8bb865","name":"Implication Rule Name","shapes":[],"supertype":"5b5d04ca-7705-d36c-c15f-241d6e"},
52
52
  {"uuid":"6fe06eff-b88e-2459-21e6-39df51","name":"Implication Rule","shapes":[],"ref_mode":".Name"},
53
- {"uuid":"c66500bd-38ff-595f-30df-ecc500","name":"Implicit Boolean Value Type","shapes":[],"supertypes":[["56c9cec4-88ef-1e86-9ca6-970913","0039d3ee-54b1-91c9-8e6c-c21232"]]},
54
53
  {"uuid":"64b45d52-1c9c-0d5f-75fa-a98e6a","name":"Indicator","shapes":[],"supertypes":[["fd47e94d-1f36-025d-73df-6cb546","ff4c4a9e-da54-ac2b-8b5d-c45854"]]},
55
54
  {"uuid":"8774195f-10a4-2fbf-b99e-caeed9","name":"Injection","shapes":[],"supertypes":[["32358c40-0d09-b3bc-7875-8ef402","a017a7b2-8b77-412c-c724-c441b0"]]},
56
55
  {"uuid":"bb3ea578-9bed-15bd-db91-59046d","name":"Instance","shapes":[]},
@@ -59,9 +58,10 @@ diagrams: [
59
58
  {"uuid":"de09e03e-7bb2-1c53-9d85-d230d6","name":"Literal","shapes":[],"supertype":"5b5d04ca-7705-d36c-c15f-241d6e"},
60
59
  {"uuid":"c7a2feb2-46ce-d506-271d-c47da0","name":"Location","shapes":[]},
61
60
  {"uuid":"32358c40-0d09-b3bc-7875-8ef402","name":"Mapping","shapes":[],"supertypes":[["fd47e94d-1f36-025d-73df-6cb546","48009576-8002-bd90-9dab-04f062"]]},
61
+ {"uuid":"5e0598ad-c975-eb1d-7e21-6ecd97","name":"Mirror Role","shapes":[],"supertypes":[["92fe2e9f-6dd4-a626-d621-777493","b523c75d-1aa4-c7df-5ba7-0525b5"]]},
62
62
  {"uuid":"ba49770f-0fba-1aa9-f1c1-5a9730","name":"Model Note Shape","shapes":[],"supertypes":[["6ed24bcf-12f0-0369-0af8-fa24eb","6b8a8c1c-2889-10e0-5299-6a2b70"]]},
63
63
  {"uuid":"46e08c2e-b6b9-c3e4-ac7b-2bf98b","name":"Name","shapes":[],"supertype":"5b5d04ca-7705-d36c-c15f-241d6e"},
64
- {"uuid":"45951ee0-d56a-c690-2a8a-e8a114","name":"Nesting","shapes":[],"supertypes":[["32358c40-0d09-b3bc-7875-8ef402","bb11a2d7-f14e-d7e8-366b-dd920c"]]},
64
+ {"uuid":"45951ee0-d56a-c690-2a8a-e8a114","name":"Nesting","shapes":[],"objectifies":"e246a361-39ce-5177-93cb-0cbcfe"},
65
65
  {"uuid":"8042d033-71e4-ac59-286a-a79a18","name":"Numerator","shapes":[],"supertype":"33545e34-44c4-aed3-f30e-93433b"},
66
66
  {"uuid":"deadd195-6677-b612-ebe8-dc8de0","name":"ORM Diagram","shapes":[],"supertypes":[["a6898a8b-e5be-0049-b633-3fa1f7","25496941-e2bb-b787-cb8e-58dfe7"]]},
67
67
  {"uuid":"af0275ad-cd84-2a95-1b71-4af0c7","name":"Object Type Shape","shapes":[],"supertypes":[["6ed24bcf-12f0-0369-0af8-fa24eb","f730c683-7409-6f3d-4891-e1f48f"]]},
@@ -82,13 +82,13 @@ diagrams: [
82
82
  {"uuid":"2f6e7cda-bd43-216e-e8f9-b82e8d","name":"Ring Type","shapes":[],"supertype":"5b5d04ca-7705-d36c-c15f-241d6e"},
83
83
  {"uuid":"a81ebc59-bd22-f66e-b7ad-d123ce","name":"Role Display","shapes":[],"objectifies":"341ce05d-b225-6e99-2cfd-3882c5"},
84
84
  {"uuid":"6bd8fca9-e6dd-e3c8-26a7-3e61df","name":"Role Name Shape","shapes":[],"supertypes":[["6ed24bcf-12f0-0369-0af8-fa24eb","2f164350-d200-387a-f1b0-7c31f2"]]},
85
- {"uuid":"93eec55b-0bdf-efec-1c65-231051","name":"Role Proxy","shapes":[],"supertypes":[["92fe2e9f-6dd4-a626-d621-777493","b523c75d-1aa4-c7df-5ba7-0525b5"]]},
86
85
  {"uuid":"f80e850c-f4cb-25dd-6a6c-e97290","name":"Role Ref","shapes":[],"objectifies":"1c28387a-5103-97e6-e46e-16346f"},
87
86
  {"uuid":"af212182-e76c-e1b5-07ec-883f03","name":"Role Sequence","shapes":[],"ref_mode":"Guid"},
88
87
  {"uuid":"18d23fe3-f58b-8824-165c-973561","name":"Role Value","shapes":[]},
89
88
  {"uuid":"92fe2e9f-6dd4-a626-d621-777493","name":"Role","shapes":[]},
90
89
  {"uuid":"376bb1d6-ede0-cc6b-e2b2-80a1d0","name":"Rotation Setting","shapes":[],"supertype":"5b5d04ca-7705-d36c-c15f-241d6e"},
91
90
  {"uuid":"93d28ddf-f746-bdb2-5494-b3f23a","name":"Scale","shapes":[],"supertype":"d0b1295f-80c0-cfc2-53c9-f8803c"},
91
+ {"uuid":"37fe75ff-1c97-8a69-89d1-b95d61","name":"Scoping","shapes":[],"supertypes":[["32358c40-0d09-b3bc-7875-8ef402","bb11a2d7-f14e-d7e8-366b-dd920c"]]},
92
92
  {"uuid":"6f67a00a-d62b-5846-f83d-b3d0a2","name":"Set Comparison Constraint","shapes":[],"supertypes":[["9d13ab35-012e-499c-def6-431913","42e4fe2a-1959-2ea2-f75f-cedba9"]]},
93
93
  {"uuid":"9c29ecab-9b22-0138-deeb-4fb3b6","name":"Set Comparison Roles","shapes":[],"objectifies":"1f6cf707-9269-75fc-bfb5-54501e"},
94
94
  {"uuid":"9d13ab35-012e-499c-def6-431913","name":"Set Constraint","shapes":[],"supertypes":[["0c0b0ef2-8be9-7569-da46-943be0","a0fcdd7c-2c3d-4b24-a6ca-dc66da"]]},
@@ -138,13 +138,14 @@ diagrams: [
138
138
  {"uuid":"5568314b-1f47-0995-1153-4cf75e","roles":[{"uuid":"6bb4823f-7c2b-2ff7-d920-989e18","player":"bb3ea578-9bed-15bd-db91-59046d"},{"uuid":"5269f001-275f-25cb-d694-56475f","player":"db16b4f2-5a16-acb5-3976-556bf2"}],"readings":[["01","{0} is an instance of {1}"]],"shapes":[],"constraints":[{"uuid":"edd31516-0a0a-903b-cb3e-303c80","min":0,"max":1,"is_preferred":true,"mandatory":null,"uniqueExcept":"6bb4823f-7c2b-2ff7-d920-989e18"},{"uuid":"967f6d91-c34f-bfc5-ac73-1a3268","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"6bb4823f-7c2b-2ff7-d920-989e18"}]},
139
139
  {"uuid":"d2bc1c81-e1b9-5529-9821-071a4b","roles":[{"uuid":"75605efb-167f-6f22-b5ae-b89890","player":"c1f018e7-5506-22b4-83d8-a7fd95"},{"uuid":"06aa4037-fabb-2b71-ce2f-ad576a","player":"f80e850c-f4cb-25dd-6a6c-e97290"}],"readings":[["01","{0} projects {1}"],["10","{0} is projected from {1}"]],"shapes":[],"constraints":[{"uuid":"792b635a-5a67-d1b6-aab0-0df608","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"06aa4037-fabb-2b71-ce2f-ad576a"},{"uuid":"23e20efa-b564-aa18-e037-5fac19","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"75605efb-167f-6f22-b5ae-b89890"}]},
140
140
  {"uuid":"b197d1d9-04e7-f866-124c-d7601d","roles":[{"uuid":"8b81ce52-f3d7-4128-107b-b81856","player":"737c9487-58a1-8a78-d92b-1af9c9"},{"uuid":"36199b2e-021a-6a64-83cd-5773a1","player":"1f75e35a-fb0d-5de1-e866-d9cc0e"}],"readings":[["01","{0} has {1}"],["10","{0} is for {1}"]],"shapes":[],"constraints":[{"uuid":"cc21b269-00de-4eda-2a9e-6ca4c6","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"36199b2e-021a-6a64-83cd-5773a1"}]},
141
+ {"uuid":"248472f5-d632-2280-8710-b23435","roles":[{"uuid":"fff69eb8-53c1-e338-05e8-7c0e5d","player":"b7027c11-048b-f45f-19fa-a561ef"},{"uuid":"239508fe-3e68-9e49-919a-73ca5c","player":"b7027c11-048b-f45f-19fa-a561ef"}],"readings":[["01","{0} is matched by reverse-{1}"]],"shapes":[],"constraints":[{"uuid":"712f1453-1790-5316-8313-3b0fc2","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"239508fe-3e68-9e49-919a-73ca5c"},{"uuid":"9628475a-5c5c-671f-9f9d-5ca3c6","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"fff69eb8-53c1-e338-05e8-7c0e5d"}]},
141
142
  {"uuid":"dc8e87f5-0ddd-bf7c-8630-2ca8a3","roles":[{"uuid":"545f00fc-2b18-b7b9-adeb-e4faab","player":"6ed24bcf-12f0-0369-0af8-fa24eb"},{"uuid":"7c710b26-72a8-441e-06c8-6f5836","player":"deadd195-6677-b612-ebe8-dc8de0"}],"readings":[["01","{0} is in {1}"],["10","{0} includes {1}"]],"shapes":[],"constraints":[{"uuid":"b4e65c4c-73b9-0153-ec04-2d080b","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"545f00fc-2b18-b7b9-adeb-e4faab"}]},
142
143
  {"uuid":"96ff4650-5580-2a10-4f79-2a7568","roles":[{"uuid":"d629f92a-f43a-3956-19f8-cd4943","player":"88982edc-3f15-3d6d-c1bd-f031d3"},{"uuid":"248224d0-4984-786a-d90f-aead3c","player":"8042d033-71e4-ac59-286a-a79a18"}],"readings":[["01","{0} has {1}"]],"shapes":[],"constraints":[{"uuid":"2a211a01-7d4e-d063-cc7c-a64b60","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"d629f92a-f43a-3956-19f8-cd4943"}]},
143
144
  {"uuid":"44f39f00-52a8-1bd9-0bb3-a070fc","objectified_as":"2f1b6363-3a18-23a5-de73-1f61e7","roles":[{"uuid":"5e0a698b-e219-4e94-9910-aa86ae","player":"d6e42408-cc1a-4c0a-8a36-4e7309"},{"uuid":"ea076bd9-a6e3-f112-5dd8-bd8b97","player":"d6e42408-cc1a-4c0a-8a36-4e7309"}],"readings":[["01","{0} is derived from base-{1}"]],"shapes":[],"constraints":[{"uuid":"c2a9805d-a15c-fc36-58ac-90df9b","min":1,"max":1,"is_preferred":true,"mandatory":true,"uniqueExcept":null},{"uuid":"9d6176e2-700e-cc1d-f447-6caa34","shapes":[],"ringKind":"AcyclicIntransitive","roles":["5e0a698b-e219-4e94-9910-aa86ae","ea076bd9-a6e3-f112-5dd8-bd8b97"]}]},
144
145
  {"uuid":"86c64ee1-120a-cf76-34c1-166de9","roles":[{"uuid":"fc6e6541-5314-fdb3-2f70-223c46","player":"7f06b39d-3155-b771-8af2-f10607"},{"uuid":"e78b3691-4bea-1338-4654-809305","player":"59fb40da-b1f6-bff6-9e6b-63d1d4"}],"readings":[["01","{0} has maximum-{1}"]],"shapes":[],"constraints":[{"uuid":"ffc4202d-2e06-e529-e2e6-dafd01","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"e78b3691-4bea-1338-4654-809305"}]},
145
146
  {"uuid":"ca362777-6aa3-cf11-ccb7-6dd4ef","objectified_as":"561c84ca-8d23-5e14-bb16-b199ac","roles":[{"uuid":"c5e97af6-6248-3056-be06-e40eae","player":"6bb15109-e63b-394b-0bd0-25fc60"},{"uuid":"05658efc-abaf-536b-660c-ab39fd","player":"4a566166-83c2-64f7-31c3-430fa2"},{"uuid":"6817e12f-8887-ba23-0db8-765874","player":"6bb15109-e63b-394b-0bd0-25fc60"}],"readings":[["012","{0} is bound to {1} over aggregated-{2}"],["120","{0} of aggregated-{1} is bound as {2}"]],"shapes":[],"constraints":[{"uuid":"7046b316-07ca-63a2-aa50-28a4de","min":1,"max":1,"is_preferred":true,"mandatory":true,"uniqueExcept":"c5e97af6-6248-3056-be06-e40eae"}]},
146
- {"uuid":"eb024dcf-1185-ca9c-8d65-3dee5d","roles":[{"uuid":"e5ee27c2-90c9-9fa7-9662-786f8f","player":"3e320962-99f2-83a8-1612-63ebe0"},{"uuid":"45c8f9da-ebab-c5d9-6562-ed2f6c","player":"737c9487-58a1-8a78-d92b-1af9c9"}],"readings":[["01","{0} nests {1}"],["10","{0} is nested as {1}"]],"shapes":[],"constraints":[{"uuid":"dd816ca8-3792-ec28-00d2-68119d","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"45c8f9da-ebab-c5d9-6562-ed2f6c"},{"uuid":"9a6b93c4-c9b5-53fa-7339-3a647d","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"e5ee27c2-90c9-9fa7-9662-786f8f"}]},
147
- {"uuid":"96bc1adf-62c4-fa84-ca74-4a9b7b","roles":[{"uuid":"d1e0a43c-8194-81c6-6d76-3e8941","player":"92fe2e9f-6dd4-a626-d621-777493"},{"uuid":"f15d5c38-574e-15a0-854d-65a5a9","player":"92fe2e9f-6dd4-a626-d621-777493"}],"readings":[["01","{0} is for {1}"],["10","{0} implies {1}"]],"shapes":[],"constraints":[{"uuid":"7331d44d-a40f-e6fd-03d9-9e9f4b","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"f15d5c38-574e-15a0-854d-65a5a9"},{"uuid":"0c839f42-1004-a49c-fb52-24d514","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"d1e0a43c-8194-81c6-6d76-3e8941"}]},
147
+ {"uuid":"eb024dcf-1185-ca9c-8d65-3dee5d","roles":[{"uuid":"e5ee27c2-90c9-9fa7-9662-786f8f","player":"3e320962-99f2-83a8-1612-63ebe0"},{"uuid":"45c8f9da-ebab-c5d9-6562-ed2f6c","player":"737c9487-58a1-8a78-d92b-1af9c9"}],"readings":[["01","{0} objectifies {1}"],["10","{0} is objectified as {1}"]],"shapes":[],"constraints":[{"uuid":"dd816ca8-3792-ec28-00d2-68119d","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"45c8f9da-ebab-c5d9-6562-ed2f6c"},{"uuid":"9a6b93c4-c9b5-53fa-7339-3a647d","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"e5ee27c2-90c9-9fa7-9662-786f8f"}]},
148
+ {"uuid":"96bc1adf-62c4-fa84-ca74-4a9b7b","roles":[{"uuid":"d1e0a43c-8194-81c6-6d76-3e8941","player":"5e0598ad-c975-eb1d-7e21-6ecd97"},{"uuid":"f15d5c38-574e-15a0-854d-65a5a9","player":"92fe2e9f-6dd4-a626-d621-777493"}],"readings":[["01","{0} is for {1}"],["10","{0} implies {1}"]],"shapes":[],"constraints":[{"uuid":"7331d44d-a40f-e6fd-03d9-9e9f4b","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"f15d5c38-574e-15a0-854d-65a5a9"},{"uuid":"0c839f42-1004-a49c-fb52-24d514","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"d1e0a43c-8194-81c6-6d76-3e8941"}]},
148
149
  {"uuid":"3053c493-1c28-1718-af5a-284d91","roles":[{"uuid":"bbb88a3a-8b77-8be2-815f-c50e3a","player":"463fa50c-acb0-0c46-a16f-71af4e"},{"uuid":"c364bb49-8c2f-9bba-93a6-2d7c4a","player":"1f75e35a-fb0d-5de1-e866-d9cc0e"}],"readings":[["01","{0} is for {1}"],["10","{0} has {1}"]],"shapes":[],"constraints":[{"uuid":"cb802f64-d9be-4597-f56e-0ad80a","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"bbb88a3a-8b77-8be2-815f-c50e3a"},{"uuid":"c6ee9a58-907f-e8e3-a5b4-35a5dd","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"bbb88a3a-8b77-8be2-815f-c50e3a"}]},
149
150
  {"uuid":"5f89c8f1-f06c-fc75-886b-65d904","roles":[{"uuid":"b359db59-65ec-993b-7e21-c146d7","player":"a57f16bc-9c4c-f5b2-0b5e-7cb0db"},{"uuid":"ab8aa695-15d3-30e6-735e-d2e9ca","player":"b0d73911-4de8-15b3-32af-858aef"}],"readings":[["10","{0} uses {1}"]],"shapes":[],"constraints":[{"uuid":"a07f03c0-842b-6a55-ca1d-38ef64","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"b359db59-65ec-993b-7e21-c146d7"}]},
150
151
  {"uuid":"cc81d560-7aa9-18f1-5eaa-423124","roles":[{"uuid":"5e66fc0a-7d33-f5a1-ec73-af5d52","player":"f80e850c-f4cb-25dd-6a6c-e97290"},{"uuid":"3cd9a38f-ec5a-ca64-26e1-c3e2a1","player":"caab36b4-3b15-a2d9-bfb1-5e0086"}],"readings":[["01","{0} has leading-{1}"]],"shapes":[],"constraints":[{"uuid":"3b659353-62f7-fb2c-54b3-36b631","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"3cd9a38f-ec5a-ca64-26e1-c3e2a1"}]},
@@ -220,7 +221,7 @@ diagrams: [
220
221
  {"uuid":"0be6b656-00a8-3641-c5f6-d545e7","roles":[{"uuid":"d55f706c-4f95-fa15-c8aa-b9bc39","player":"92fe2e9f-6dd4-a626-d621-777493"},{"uuid":"1b6f13c9-649b-d6f0-1698-0edf06","player":"737c9487-58a1-8a78-d92b-1af9c9"}],"readings":[["01","{0} belongs to {1}"],["10","{0} contains {1}"]],"shapes":[],"constraints":[{"uuid":"4ba638f7-d458-adf6-eac8-daaafa","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"d55f706c-4f95-fa15-c8aa-b9bc39"}]},
221
222
  {"uuid":"e95b4165-cccc-7926-3724-fe5c68","roles":[{"uuid":"d0d6c3a0-ac4a-ff39-5130-1399b3","player":"490ebbb9-8f57-9dab-df0b-b38b5f"},{"uuid":"d7074aa2-9f37-70d3-8f6f-b10099","player":"d6e42408-cc1a-4c0a-8a36-4e7309"}],"readings":[["01","{0} includes {1}"],["10","{0} is in {1}"]],"shapes":[],"constraints":[{"uuid":"415ec2a8-954d-0fb0-58bc-1ad9dc","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"d7074aa2-9f37-70d3-8f6f-b10099"}]},
222
223
  {"uuid":"ab8a4003-cd30-3132-692c-8cddc6","roles":[{"uuid":"a3943554-546e-0ab5-d8fe-98d9f6","player":"edb2c4be-ef98-0eae-8842-6bcd65"},{"uuid":"40bb5907-ed03-b882-211c-1f810c","player":"a4da9732-565f-9626-fcae-29a9c5"}],"readings":[["01","{0} has min-{1}"]],"shapes":[],"constraints":[{"uuid":"c0c7c33c-2a61-eb75-8244-318aef","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"40bb5907-ed03-b882-211c-1f810c"}]},
223
- {"uuid":"e246a361-39ce-5177-93cb-0cbcfe","roles":[{"uuid":"7f04d38a-2243-9f43-b8c7-83a314","player":"b7027c11-048b-f45f-19fa-a561ef"},{"uuid":"e60b4a21-e5af-8573-e42b-233ab0","player":"92fe2e9f-6dd4-a626-d621-777493"}],"readings":[["01","{0} is nested under index-{1}"]],"shapes":[],"constraints":[{"uuid":"17660010-ba7e-6d6e-c862-7a98ab","min":0,"max":1,"is_preferred":null,"mandatory":null,"uniqueExcept":"e60b4a21-e5af-8573-e42b-233ab0"}]},
224
+ {"uuid":"e246a361-39ce-5177-93cb-0cbcfe","objectified_as":"45951ee0-d56a-c690-2a8a-e8a114","roles":[{"uuid":"7f04d38a-2243-9f43-b8c7-83a314","player":"b7027c11-048b-f45f-19fa-a561ef"},{"uuid":"e60b4a21-e5af-8573-e42b-233ab0","player":"92fe2e9f-6dd4-a626-d621-777493"},{"uuid":"eacc0016-c705-a860-ef02-55bfb1","player":"63beb402-8ac5-0c64-1313-9cda5a"}],"readings":[["012","{0} is nested under index-{1} in {2} position"],["021","{0} in {1} position is nested under {2}"],["102","{0} keys nesting of {1} at {2} priority"]],"shapes":[],"constraints":[{"uuid":"28b2b85c-496f-6a04-7164-7c5f30","min":1,"max":1,"is_preferred":true,"mandatory":true,"uniqueExcept":"e60b4a21-e5af-8573-e42b-233ab0"}]},
224
225
  {"uuid":"16acc2a1-7467-2c53-59c1-1d3d71","objectified_as":"203abdc9-60b9-e2da-80da-01bc26","roles":[{"uuid":"982d233a-43ba-7236-9ee2-2de80d","player":"02b2f76d-2394-741c-f8ad-03fdf2"},{"uuid":"d4a91ec0-5c04-d42d-635b-388042","player":"7f06b39d-3155-b771-8af2-f10607"}],"readings":[["01","{0} allows {1}"]],"shapes":[],"constraints":[{"uuid":"7cd7c366-1253-eb7e-fef0-8d3c8a","min":1,"max":1,"is_preferred":true,"mandatory":true,"uniqueExcept":null}]},
225
226
  {"uuid":"a974ed80-1d3f-bce4-70cb-852bda","objectified_as":"3bd0fb48-0f5e-2f7a-c37d-7bb029","roles":[{"uuid":"5ebf5c0a-403f-9ace-89ae-0b3eac","player":"46e08c2e-b6b9-c3e4-ac7b-2bf98b"},{"uuid":"9e3c5915-12a9-57bf-446a-c76846","player":"56c9cec4-88ef-1e86-9ca6-970913"}],"readings":[["01","{0} is a facet of {1}"],["10","{0} has facet called {1}"]],"shapes":[],"constraints":[{"uuid":"fe7eb0b1-1fc6-e2a1-58c0-ab38ff","min":1,"max":1,"is_preferred":true,"mandatory":true,"uniqueExcept":null}]},
226
227
  {"uuid":"4ffc19af-45c9-11a6-ef08-e5198e","roles":[{"uuid":"5bcae2a4-b612-30aa-9a49-f7efb3","player":"92fe2e9f-6dd4-a626-d621-777493"},{"uuid":"27974f89-9bb2-74e6-0bf7-6f009b","player":"63beb402-8ac5-0c64-1313-9cda5a"}],"readings":[["01","{0} fills {1}"],["10","{0} applies to {1}"]],"shapes":[],"constraints":[{"uuid":"a9f4ec65-73e3-8196-17da-e671c4","min":1,"max":1,"is_preferred":null,"mandatory":true,"role":"5bcae2a4-b612-30aa-9a49-f7efb3"}]},
@@ -291,6 +292,7 @@ diagrams: [
291
292
  ],
292
293
  constraints: [
293
294
  {"uuid":"1ca9a8f2-f1dd-d8fa-080c-cd39e8","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["5c33c08c-ebec-93ef-3a05-b4dfc0"],["31ffb1f0-da35-5caa-1974-747450"]]},
295
+ {"uuid":"ded0530c-5815-950d-910d-3d15c3","type":"SubsetConstraint","shapes":[],"role_sequences":[["d3238d10-9740-14aa-a79a-cec656","4fcd0e4e-def0-c86e-c4a0-58b1e0"],["3599b0bb-82aa-91f8-d2c5-39cb59","50238e51-4650-4c0d-9a26-fbfa2a"]]},
294
296
  {"uuid":"ce755310-2b8d-35b3-a3bd-733a44","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["34c89c4c-9110-6d8f-3abf-9521f8"],["c7d2736d-3c19-72a2-0af4-d5ed94"]]},
295
297
  {"uuid":"67759b07-657b-189a-4b2d-5d30ff","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":true,"role_sequences":[["248224d0-4984-786a-d90f-aead3c","3b16d9bd-11e2-823e-988e-980572","56f1e6b1-d4c8-9c91-057d-016774"]]},
296
298
  {"uuid":"90db5044-afc1-bee7-2621-15297c","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":null,"role_sequences":[["7c710b26-72a8-441e-06c8-6f5836","02608e50-a385-dc39-805c-d36ea6"]]},
@@ -320,13 +322,13 @@ diagrams: [
320
322
  {"uuid":"122ec7ef-792e-a0f0-e135-b9e34c","type":"SetExclusionConstraint","shapes":[],"is_mandatory":null,"role_sequences":[["461ee7f4-1a68-c8bc-5161-1a1bc6"],["35912c3c-4c86-99c5-0ae6-62f70f"]]},
321
323
  {"uuid":"e85cd970-d1be-fcb7-3063-946bbb","type":"PresenceConstraint","shapes":[],"min_frequency":1,"max_frequency":null,"is_mandatory":true,"is_preferred_identifier":false,"role_sequences":[["e2150d8b-02c1-86e1-717f-03594d","fc6e6541-5314-fdb3-2f70-223c46"]]},
322
324
  {"uuid":"8c925616-a393-0177-5536-cc7d05","type":"PresenceConstraint","shapes":[],"min_frequency":1,"max_frequency":null,"is_mandatory":true,"is_preferred_identifier":false,"role_sequences":[["a3943554-546e-0ab5-d8fe-98d9f6","4a84136a-40ef-2e4c-aadc-3d5100","f30933f6-afb8-f139-f8ee-e5ed79"]]},
323
- {"uuid":"9b4ec9fa-c3a8-0a36-0301-675beb","type":"SetEqualityConstraint","shapes":[],"role_sequences":[["3599b0bb-82aa-91f8-d2c5-39cb59","50238e51-4650-4c0d-9a26-fbfa2a"],["d3238d10-9740-14aa-a79a-cec656","4fcd0e4e-def0-c86e-c4a0-58b1e0"]]},
324
325
  {"uuid":"59eeb2cf-8f4d-2b73-8c14-cfd93a","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["36cc99c3-6cfb-e1a5-0de6-3d9d37"],["2d892cff-e9f2-0eff-8edb-fd66ef"],["c0b7cce4-b7a9-1a3f-8119-6c08e6"],["64fe9174-c381-e74a-c4c4-449980"],["66763657-128a-760f-f29d-d87961"],["06938c72-f876-9d59-73e1-3935db"],["5269f001-275f-25cb-d694-56475f"],["0ef687a2-b0f5-1736-4069-3b50a6"],["c3aa8291-45fb-e19c-dbcd-3ef475"],["57fe3c40-9e0b-3d8e-a686-5f7e04"]]},
325
326
  {"uuid":"628b2e80-f96d-aad5-dd57-f46810","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":null,"role_sequences":[["6730ee91-ef6f-b933-256f-8848ce","5a2b3955-1718-292a-893b-93e6df"]]},
326
327
  {"uuid":"2a6864e2-a2cd-e3bb-0696-5f1de8","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["e6c3bf64-89ea-09f1-ca9f-dd5400"],["e3dd5eb3-1929-5dd3-2576-9b61d7"]]},
327
328
  {"uuid":"101ab982-cfdc-c110-6301-8f7542","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["a0fcdd7c-2c3d-4b24-a6ca-dc66da"],["55696af9-9d80-51f6-cb75-418b60"],["edde05ca-634b-aad4-f1f9-58ad24"],["076b5284-b7b3-0be8-b552-50c2d7"]]},
328
329
  {"uuid":"c83e7bf5-b678-bfe1-9b28-a1c133","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":true,"role_sequences":[["35bf5616-886d-40b2-3e50-fad733","663fdf1d-186c-eee9-0c43-b15d2d"]]},
329
330
  {"uuid":"f90d0d45-9dcb-2f12-2f33-4a78a3","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":true,"role_sequences":[["e88974b6-b9db-c7bf-23a8-048fbd","5bd76555-2ea3-fb91-f0a8-8eb260"]]},
331
+ {"uuid":"498e8226-dcc0-f075-cc5d-e8740f","type":"SubsetConstraint","shapes":[],"role_sequences":[["88cc5478-86ce-8f4b-b95f-4ccbc7","4fcd0e4e-def0-c86e-c4a0-58b1e0"],["4f4e8a76-8cd7-7bf3-7d1e-556446","50238e51-4650-4c0d-9a26-fbfa2a"]]},
330
332
  {"uuid":"df180e7f-60e6-d7f3-fd09-76cec5","type":"SetExclusionConstraint","shapes":[],"is_mandatory":null,"role_sequences":[["2eca8649-1cbe-b527-abf1-71b81e"],["64aee8ea-6693-9dd9-5ee5-2db6b6"]]},
331
333
  {"uuid":"da1392c9-c50d-2998-5eed-377664","type":"PresenceConstraint","shapes":[],"min_frequency":0,"max_frequency":1,"is_mandatory":null,"is_preferred_identifier":null,"role_sequences":[["6e21df09-1a88-ee34-8fbc-1b5ffe","2da75c9b-a8c0-1e93-921b-aed6c7"]]},
332
334
  {"uuid":"6ef3d5c5-adec-2808-bfe0-dc3fc4","type":"SetExclusionConstraint","shapes":[],"is_mandatory":true,"role_sequences":[["fb453a48-2e27-2811-e222-7d660f"],["1bc1b389-889b-cd56-c388-19524d"]]},