-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGraphFlooding.pl
865 lines (828 loc) · 55.9 KB
/
GraphFlooding.pl
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
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
#! /usr/bin/perl
use strict;
use FindBin;
use lib "$FindBin::Bin/.";
use GraphJG::SimilarityJG;
my %templateGraphs = {};
my $BantuCA = Graph->new(multiedged => 1);
$BantuCA->set_graph_attribute("name", "BantuCA");
$BantuCA->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$BantuCA->add_edge_by_id("desmeme", "order", "STRICTURE");
$BantuCA->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$BantuCA->add_edge_by_id("order", "COUNT3-1", "COUNT");
$BantuCA->add_edge_by_id("order", "simple", "RELATIONS");
$BantuCA->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$BantuCA->add_edge_by_id("arch", "component1", "KEYSTONE");
$BantuCA->add_edge_by_id("component1", "open1", "FILLEDNESS");
$BantuCA->add_edge_by_id("open1", "coherent1", "COHERENCE");
$BantuCA->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$BantuCA->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$BantuCA->add_edge_by_id("component1", "stable1", "STABILITY");
$BantuCA->add_edge_by_id("arch", "component2", "LEFT_VOUSSOIR");
$BantuCA->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$BantuCA->add_edge_by_id("inelastic2", "COUNT0-1", "COUNT");
$BantuCA->add_edge_by_id("component2", "null1", "FILLEDNESS");
$BantuCA->add_edge_by_id("component2", "stable2", "STABILITY");
$BantuCA->add_edge_by_id("arch", "component3", "RIGHT_VOUSSOIR");
$BantuCA->add_edge_by_id("component3", "stable3", "STABILITY");
$BantuCA->add_edge_by_id("component3", "filled1", "FILLEDNESS");
$BantuCA->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$BantuCA->add_edge_by_id("component3", "elastic1", "ELASTICITY");
$BantuCA->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$BantuCA->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$BantuCA->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$BantuCA->add_edge_by_id("arch", "component4", "RIGHT_SUPPORT");
$BantuCA->add_edge_by_id("component4", "elastic2", "ELASTICITY");
$BantuCA->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$BantuCA->add_edge_by_id("elastic2", "MAXIMUM1-2", "MAXIMUM");
$BantuCA->add_edge_by_id("component4", "filled2", "FILLEDNESS");
$BantuCA->add_edge_by_id("filled2", "canonicalLineate2", "FORM");
$BantuCA->add_edge_by_id("component4", "stable4", "STABILITY");
$BantuCA->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$BantuCA->add_edge_by_id("lexicoconstructionalConditioning", "multiple", "FILLER_POSITION");
$BantuCA->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$BantuCA->add_edge_by_id("filledComponentSet", "component3", "FILLED_COMPONENT");
$BantuCA->add_edge_by_id("filledComponentSet", "component4", "FILLED_COMPONENT");
$templateGraphs{BantuCA} = $BantuCA;
my $BantuCT = Graph->new(multiedged => 1);
$BantuCT->set_graph_attribute("name", "BantuCT");
$BantuCT->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$BantuCT->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$BantuCT->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$BantuCT->add_edge_by_id("restkomponentenSet", "component1", "RESTKOMPONENTE");
$BantuCT->add_edge_by_id("component1", "open1", "FILLEDNESS");
$BantuCT->add_edge_by_id("open1", "coherent1", "COHERENCE");
$BantuCT->add_edge_by_id("component1", "stable1", "STABILITY");
$BantuCT->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$BantuCT->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$BantuCT->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$BantuCT->add_edge_by_id("arch", "component2", "RIGHT_VOUSSOIR");
$BantuCT->add_edge_by_id("component2", "elastic2", "ELASTICITY");
$BantuCT->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$BantuCT->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$BantuCT->add_edge_by_id("component2", "filled1", "FILLEDNESS");
$BantuCT->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$BantuCT->add_edge_by_id("component2", "unstable1", "STABILITY");
$BantuCT->add_edge_by_id("unstable1", "right", "ASSOCIATE_POSITION");
$BantuCT->add_edge_by_id("unstable1", "component3", "ASSOCIATE");
$BantuCT->add_edge_by_id("component3", "stable2", "STABILITY");
$BantuCT->add_edge_by_id("component3", "filled2", "FILLEDNESS");
$BantuCT->add_edge_by_id("filled2", "canonicalLineate2", "FORM");
$BantuCT->add_edge_by_id("component3", "elastic3", "ELASTICITY");
$BantuCT->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$BantuCT->add_edge_by_id("elastic3", "MAXIMUM1-2", "MAXIMUM");
$BantuCT->add_edge_by_id("arch", "component3", "RIGHT_SUPPORT");
$BantuCT->add_edge_by_id("arch", "component4", "KEYSTONE");
$BantuCT->add_edge_by_id("component4", "open2", "FILLEDNESS");
$BantuCT->add_edge_by_id("open2", "coherent2", "COHERENCE");
$BantuCT->add_edge_by_id("component4", "inelastic1", "ELASTICITY");
$BantuCT->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$BantuCT->add_edge_by_id("component4", "stable3", "STABILITY");
$BantuCT->add_edge_by_id("arch", "component4", "LEFT_SUPPORT");
$BantuCT->add_edge_by_id("arch", "component5", "LEFT_VOUSSOIR");
$BantuCT->add_edge_by_id("component5", "inelastic2", "ELASTICITY");
$BantuCT->add_edge_by_id("inelastic2", "COUNT0-1", "COUNT");
$BantuCT->add_edge_by_id("component5", "null1", "FILLEDNESS");
$BantuCT->add_edge_by_id("component5", "stable4", "STABILITY");
$BantuCT->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$BantuCT->add_edge_by_id("lexicoconstructionalConditioning", "final1", "FILLER_POSITION");
$BantuCT->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$BantuCT->add_edge_by_id("filledComponentSet", "component3", "FILLED_COMPONENT");
$BantuCT->add_edge_by_id("filledComponentSet", "component2", "FILLED_COMPONENT");
$BantuCT->add_edge_by_id("desmeme", "order", "STRICTURE");
$BantuCT->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$BantuCT->add_edge_by_id("order", "simple", "RELATIONS");
$BantuCT->add_edge_by_id("order", "COUNT4-1", "COUNT");
$templateGraphs{BantuCT} = $BantuCT;
my $SerboCroatianTopicalization = Graph->new(multiedged => 1);
$SerboCroatianTopicalization->set_graph_attribute("name", "SerboCroatianTopicalization");
$SerboCroatianTopicalization->add_edge_by_id("desmeme", "length", "STRICTURE");
$SerboCroatianTopicalization->add_edge_by_id("length", "COUNT2-1", "COUNT");
$SerboCroatianTopicalization->add_edge_by_id("length", "prosodicWord", "CONSTITUENT");
$SerboCroatianTopicalization->add_edge_by_id("desmeme", "prosodicConditioning", "CONDITIONING");
$SerboCroatianTopicalization->add_edge_by_id("desmeme", "span", "FOUNDATION");
$SerboCroatianTopicalization->add_edge_by_id("span", "component1", "LEFT_SUPPORT");
$SerboCroatianTopicalization->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$SerboCroatianTopicalization->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$SerboCroatianTopicalization->add_edge_by_id("elastic1", "MINIMUM1-1", "MINIMUM");
$SerboCroatianTopicalization->add_edge_by_id("component1", "open1", "FILLEDNESS");
$SerboCroatianTopicalization->add_edge_by_id("open1", "coherent1", "COHERENCE");
$SerboCroatianTopicalization->add_edge_by_id("component1", "stable1", "STABILITY");
$SerboCroatianTopicalization->add_edge_by_id("span", "component2", "RIGHT_SUPPORT");
$SerboCroatianTopicalization->add_edge_by_id("component2", "open2", "FILLEDNESS");
$SerboCroatianTopicalization->add_edge_by_id("open2", "coherent2", "COHERENCE");
$SerboCroatianTopicalization->add_edge_by_id("component2", "elastic2", "ELASTICITY");
$SerboCroatianTopicalization->add_edge_by_id("elastic2", "MAXIMUM100-2", "MAXIMUM");
$SerboCroatianTopicalization->add_edge_by_id("elastic2", "MINIMUM1-2", "MINIMUM");
$SerboCroatianTopicalization->add_edge_by_id("component2", "stable2", "STABILITY");
$SerboCroatianTopicalization->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$SerboCroatianTopicalization->add_edge_by_id("potentiallyViolable", "noKnownExceptions", "EXCEPTIONALITY");
$SerboCroatianTopicalization->add_edge_by_id("potentiallyViolable", "irreparable", "REPARABILITY");
$templateGraphs{SerboCroatianTopicalization} = $SerboCroatianTopicalization;
my $MeskwakiClause = Graph->new(multiedged => 1);
$MeskwakiClause->set_graph_attribute("name", "MeskwakiClause");
$MeskwakiClause->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$MeskwakiClause->add_edge_by_id("arch", "component1", "RIGHT_SUPPORT");
$MeskwakiClause->add_edge_by_id("component1", "stable1", "STABILITY");
$MeskwakiClause->add_edge_by_id("component1", "open1", "FILLEDNESS");
$MeskwakiClause->add_edge_by_id("open1", "coherent1", "COHERENCE");
$MeskwakiClause->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$MeskwakiClause->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$MeskwakiClause->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$MeskwakiClause->add_edge_by_id("arch", "component2", "LEFT_SUPPORT");
$MeskwakiClause->add_edge_by_id("component2", "elastic2", "ELASTICITY");
$MeskwakiClause->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$MeskwakiClause->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$MeskwakiClause->add_edge_by_id("component2", "unstable1", "STABILITY");
$MeskwakiClause->add_edge_by_id("unstable1", "component3", "ASSOCIATE");
$MeskwakiClause->add_edge_by_id("component3", "open2", "FILLEDNESS");
$MeskwakiClause->add_edge_by_id("open2", "coherent2", "COHERENCE");
$MeskwakiClause->add_edge_by_id("component3", "inelastic1", "ELASTICITY");
$MeskwakiClause->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$MeskwakiClause->add_edge_by_id("component3", "stable2", "STABILITY");
$MeskwakiClause->add_edge_by_id("unstable1", "right", "ASSOCIATE_POSITION");
$MeskwakiClause->add_edge_by_id("component2", "open3", "FILLEDNESS");
$MeskwakiClause->add_edge_by_id("open3", "coherent3", "COHERENCE");
$MeskwakiClause->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$MeskwakiClause->add_edge_by_id("restkomponentenSet", "component4", "RESTKOMPONENTE");
$MeskwakiClause->add_edge_by_id("component4", "open4", "FILLEDNESS");
$MeskwakiClause->add_edge_by_id("open4", "coherent4", "COHERENCE");
$MeskwakiClause->add_edge_by_id("component4", "elastic3", "ELASTICITY");
$MeskwakiClause->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$MeskwakiClause->add_edge_by_id("elastic3", "MAXIMUM1-2", "MAXIMUM");
$MeskwakiClause->add_edge_by_id("component4", "stable3", "STABILITY");
$MeskwakiClause->add_edge_by_id("arch", "component5", "LEFT_VOUSSOIR");
$MeskwakiClause->add_edge_by_id("component5", "elastic4", "ELASTICITY");
$MeskwakiClause->add_edge_by_id("elastic4", "MAXIMUM1-3", "MAXIMUM");
$MeskwakiClause->add_edge_by_id("elastic4", "MINIMUM0-4", "MINIMUM");
$MeskwakiClause->add_edge_by_id("component5", "stable4", "STABILITY");
$MeskwakiClause->add_edge_by_id("component5", "open5", "FILLEDNESS");
$MeskwakiClause->add_edge_by_id("open5", "coherent5", "COHERENCE");
$MeskwakiClause->add_edge_by_id("arch", "component3", "KEYSTONE");
$MeskwakiClause->add_edge_by_id("arch", "component1", "RIGHT_VOUSSOIR");
$MeskwakiClause->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$MeskwakiClause->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$MeskwakiClause->add_edge_by_id("desmeme", "order", "STRICTURE");
$MeskwakiClause->add_edge_by_id("order", "syntacticConstituent", "CONSTITUENT");
$MeskwakiClause->add_edge_by_id("order", "COUNT5-1", "COUNT");
$MeskwakiClause->add_edge_by_id("order", "simple", "RELATIONS");
$templateGraphs{MeskwakiClause} = $MeskwakiClause;
my $GermanClause = Graph->new(multiedged => 1);
$GermanClause->set_graph_attribute("name", "GermanClause");
$GermanClause->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$GermanClause->add_edge_by_id("desmeme", "order", "STRICTURE");
$GermanClause->add_edge_by_id("order", "COUNT5-1", "COUNT");
$GermanClause->add_edge_by_id("order", "syntacticConstituent", "CONSTITUENT");
$GermanClause->add_edge_by_id("order", "taxonomic", "RELATIONS");
$GermanClause->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$GermanClause->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$GermanClause->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$GermanClause->add_edge_by_id("component1", "open1", "FILLEDNESS");
$GermanClause->add_edge_by_id("open1", "incoherent1", "COHERENCE");
$GermanClause->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$GermanClause->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$GermanClause->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$GermanClause->add_edge_by_id("component1", "unstable1", "STABILITY");
$GermanClause->add_edge_by_id("unstable1", "component2", "ASSOCIATE");
$GermanClause->add_edge_by_id("component2", "open2", "FILLEDNESS");
$GermanClause->add_edge_by_id("open2", "incoherent2", "COHERENCE");
$GermanClause->add_edge_by_id("component2", "unstable2", "STABILITY");
$GermanClause->add_edge_by_id("unstable2", "component3", "ASSOCIATE");
$GermanClause->add_edge_by_id("component3", "unstable3", "STABILITY");
$GermanClause->add_edge_by_id("unstable3", "component2", "ASSOCIATE");
$GermanClause->add_edge_by_id("unstable3", "left", "ASSOCIATE_POSITION");
$GermanClause->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$GermanClause->add_edge_by_id("elastic2", "MAXIMUM100-1", "MAXIMUM");
$GermanClause->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$GermanClause->add_edge_by_id("component3", "open3", "FILLEDNESS");
$GermanClause->add_edge_by_id("open3", "incoherent3", "COHERENCE");
$GermanClause->add_edge_by_id("unstable2", "right", "ASSOCIATE_POSITION");
$GermanClause->add_edge_by_id("component2", "inelastic1", "ELASTICITY");
$GermanClause->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$GermanClause->add_edge_by_id("unstable1", "right", "ASSOCIATE_POSITION");
$GermanClause->add_edge_by_id("arch", "component4", "RIGHT_SUPPORT");
$GermanClause->add_edge_by_id("component4", "open4", "FILLEDNESS");
$GermanClause->add_edge_by_id("open4", "incoherent4", "COHERENCE");
$GermanClause->add_edge_by_id("component4", "stable1", "STABILITY");
$GermanClause->add_edge_by_id("component4", "elastic3", "ELASTICITY");
$GermanClause->add_edge_by_id("elastic3", "MAXIMUM100-2", "MAXIMUM");
$GermanClause->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$GermanClause->add_edge_by_id("arch", "component2", "KEYSTONE");
$GermanClause->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$GermanClause->add_edge_by_id("restkomponentenSet", "component3", "RESTKOMPONENTE");
$GermanClause->add_edge_by_id("arch", "component5", "RIGHT_VOUSSOIR");
$GermanClause->add_edge_by_id("component5", "open5", "FILLEDNESS");
$GermanClause->add_edge_by_id("open5", "incoherent5", "COHERENCE");
$GermanClause->add_edge_by_id("component5", "elastic4", "ELASTICITY");
$GermanClause->add_edge_by_id("elastic4", "MINIMUM0-4", "MINIMUM");
$GermanClause->add_edge_by_id("elastic4", "MAXIMUM100-3", "MAXIMUM");
$GermanClause->add_edge_by_id("component5", "stable2", "STABILITY");
$GermanClause->add_edge_by_id("arch", "component1", "LEFT_VOUSSOIR");
$templateGraphs{GermanClause} = $GermanClause;
my $BantuVCy = Graph->new(multiedged => 1);
$BantuVCy->set_graph_attribute("name", "BantuVCy");
$BantuVCy->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$BantuVCy->add_edge_by_id("arch", "component1", "RIGHT_VOUSSOIR");
$BantuVCy->add_edge_by_id("component1", "open1", "FILLEDNESS");
$BantuVCy->add_edge_by_id("open1", "coherent1", "COHERENCE");
$BantuVCy->add_edge_by_id("component1", "stable1", "STABILITY");
$BantuVCy->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$BantuVCy->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$BantuVCy->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$BantuVCy->add_edge_by_id("arch", "component2", "LEFT_VOUSSOIR");
$BantuVCy->add_edge_by_id("component2", "inelastic1", "ELASTICITY");
$BantuVCy->add_edge_by_id("inelastic1", "COUNT0-1", "COUNT");
$BantuVCy->add_edge_by_id("component2", "null1", "FILLEDNESS");
$BantuVCy->add_edge_by_id("component2", "stable2", "STABILITY");
$BantuVCy->add_edge_by_id("arch", "component3", "RIGHT_SUPPORT");
$BantuVCy->add_edge_by_id("component3", "stable3", "STABILITY");
$BantuVCy->add_edge_by_id("component3", "filled1", "FILLEDNESS");
$BantuVCy->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$BantuVCy->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$BantuVCy->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$BantuVCy->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$BantuVCy->add_edge_by_id("arch", "component4", "LEFT_SUPPORT");
$BantuVCy->add_edge_by_id("component4", "open2", "FILLEDNESS");
$BantuVCy->add_edge_by_id("open2", "coherent2", "COHERENCE");
$BantuVCy->add_edge_by_id("component4", "inelastic2", "ELASTICITY");
$BantuVCy->add_edge_by_id("inelastic2", "COUNT1-1", "COUNT");
$BantuVCy->add_edge_by_id("component4", "stable4", "STABILITY");
$BantuVCy->add_edge_by_id("arch", "component4", "KEYSTONE");
$BantuVCy->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$BantuVCy->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$BantuVCy->add_edge_by_id("filledComponentSet", "component3", "FILLED_COMPONENT");
$BantuVCy->add_edge_by_id("lexicoconstructionalConditioning", "final1", "FILLER_POSITION");
$BantuVCy->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$BantuVCy->add_edge_by_id("desmeme", "order", "STRICTURE");
$BantuVCy->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$BantuVCy->add_edge_by_id("order", "COUNT3-1", "COUNT");
$BantuVCy->add_edge_by_id("order", "simple", "RELATIONS");
$templateGraphs{BantuVCy} = $BantuVCy;
my $ChechenPreverbalA = Graph->new(multiedged => 1);
$ChechenPreverbalA->set_graph_attribute("name", "ChechenPreverbalA");
$ChechenPreverbalA->add_edge_by_id("desmeme", "span", "FOUNDATION");
$ChechenPreverbalA->add_edge_by_id("span", "component1", "RIGHT_SUPPORT");
$ChechenPreverbalA->add_edge_by_id("component1", "open1", "FILLEDNESS");
$ChechenPreverbalA->add_edge_by_id("open1", "coherent1", "COHERENCE");
$ChechenPreverbalA->add_edge_by_id("component1", "stable1", "STABILITY");
$ChechenPreverbalA->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$ChechenPreverbalA->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$ChechenPreverbalA->add_edge_by_id("span", "component2", "LEFT_SUPPORT");
$ChechenPreverbalA->add_edge_by_id("component2", "stable2", "STABILITY");
$ChechenPreverbalA->add_edge_by_id("component2", "partiallyFilled1", "FILLEDNESS");
$ChechenPreverbalA->add_edge_by_id("partiallyFilled1", "canonicalLineate1", "FORM");
$ChechenPreverbalA->add_edge_by_id("partiallyFilled1", "coherent2", "COHERENCE");
$ChechenPreverbalA->add_edge_by_id("partiallyFilled1", "final1", "FILLER_PLACEMENT");
$ChechenPreverbalA->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$ChechenPreverbalA->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$ChechenPreverbalA->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$ChechenPreverbalA->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$ChechenPreverbalA->add_edge_by_id("filledComponentSet", "component2", "FILLED_COMPONENT");
$ChechenPreverbalA->add_edge_by_id("lexicoconstructionalConditioning", "medial", "FILLER_POSITION");
$ChechenPreverbalA->add_edge_by_id("desmeme", "length", "STRICTURE");
$ChechenPreverbalA->add_edge_by_id("length", "prosodicWord", "CONSTITUENT");
$ChechenPreverbalA->add_edge_by_id("length", "COUNT2-1", "COUNT");
$ChechenPreverbalA->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$ChechenPreverbalA->add_edge_by_id("potentiallyViolable", "noKnownExceptions", "EXCEPTIONALITY");
$ChechenPreverbalA->add_edge_by_id("potentiallyViolable", "morphosyntacticInsertion", "REPARABILITY");
$templateGraphs{ChechenPreverbalA} = $ChechenPreverbalA;
my $TurkishNominalMinimality = Graph->new(multiedged => 1);
$TurkishNominalMinimality->set_graph_attribute("name", "TurkishNominalMinimality");
$TurkishNominalMinimality->add_edge_by_id("desmeme", "prosodicConditioning", "CONDITIONING");
$TurkishNominalMinimality->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$TurkishNominalMinimality->add_edge_by_id("potentiallyViolable", "irreparable", "REPARABILITY");
$TurkishNominalMinimality->add_edge_by_id("potentiallyViolable", "lexical", "EXCEPTIONALITY");
$TurkishNominalMinimality->add_edge_by_id("desmeme", "span", "FOUNDATION");
$TurkishNominalMinimality->add_edge_by_id("span", "component1", "RIGHT_SUPPORT");
$TurkishNominalMinimality->add_edge_by_id("component1", "stable1", "STABILITY");
$TurkishNominalMinimality->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$TurkishNominalMinimality->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$TurkishNominalMinimality->add_edge_by_id("component1", "open1", "FILLEDNESS");
$TurkishNominalMinimality->add_edge_by_id("open1", "coherent1", "COHERENCE");
$TurkishNominalMinimality->add_edge_by_id("span", "component2", "LEFT_SUPPORT");
$TurkishNominalMinimality->add_edge_by_id("component2", "open2", "FILLEDNESS");
$TurkishNominalMinimality->add_edge_by_id("open2", "coherent2", "COHERENCE");
$TurkishNominalMinimality->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$TurkishNominalMinimality->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$TurkishNominalMinimality->add_edge_by_id("component2", "stable2", "STABILITY");
$TurkishNominalMinimality->add_edge_by_id("desmeme", "length", "STRICTURE");
$TurkishNominalMinimality->add_edge_by_id("length", "COUNT2-1", "COUNT");
$TurkishNominalMinimality->add_edge_by_id("length", "Syllable", "CONSTITUENT");
$templateGraphs{TurkishNominalMinimality} = $TurkishNominalMinimality;
my $EnglishPlural = Graph->new(multiedged => 1);
$EnglishPlural->set_graph_attribute("name", "EnglishPlural");
$EnglishPlural->add_edge_by_id("desmeme", "order", "STRICTURE");
$EnglishPlural->add_edge_by_id("order", "simple", "RELATIONS");
$EnglishPlural->add_edge_by_id("order", "COUNT2-1", "COUNT");
$EnglishPlural->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$EnglishPlural->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$EnglishPlural->add_edge_by_id("lexicoconstructionalConditioning", "final1", "FILLER_POSITION");
$EnglishPlural->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$EnglishPlural->add_edge_by_id("filledComponentSet", "component1", "FILLED_COMPONENT");
$EnglishPlural->add_edge_by_id("component1", "filled1", "FILLEDNESS");
$EnglishPlural->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$EnglishPlural->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$EnglishPlural->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$EnglishPlural->add_edge_by_id("component1", "stable1", "STABILITY");
$EnglishPlural->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$EnglishPlural->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$EnglishPlural->add_edge_by_id("arch", "component2", "KEYSTONE");
$EnglishPlural->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$EnglishPlural->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$EnglishPlural->add_edge_by_id("component2", "open1", "FILLEDNESS");
$EnglishPlural->add_edge_by_id("open1", "coherent1", "COHERENCE");
$EnglishPlural->add_edge_by_id("component2", "stable2", "STABILITY");
$EnglishPlural->add_edge_by_id("arch", "component3", "LEFT_SUPPORT");
$EnglishPlural->add_edge_by_id("component3", "null1", "FILLEDNESS");
$EnglishPlural->add_edge_by_id("component3", "stable3", "STABILITY");
$EnglishPlural->add_edge_by_id("component3", "inelastic3", "ELASTICITY");
$EnglishPlural->add_edge_by_id("inelastic3", "COUNT0-1", "COUNT");
$EnglishPlural->add_edge_by_id("arch", "component3", "LEFT_VOUSSOIR");
$EnglishPlural->add_edge_by_id("arch", "component1", "RIGHT_SUPPORT");
$EnglishPlural->add_edge_by_id("arch", "component1", "RIGHT_VOUSSOIR");
$templateGraphs{EnglishPlural} = $EnglishPlural;
my $NdebeleCA = Graph->new(multiedged => 1);
$NdebeleCA->set_graph_attribute("name", "NdebeleCA");
$NdebeleCA->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$NdebeleCA->add_edge_by_id("arch", "component1", "LEFT_VOUSSOIR");
$NdebeleCA->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$NdebeleCA->add_edge_by_id("inelastic1", "COUNT0-1", "COUNT");
$NdebeleCA->add_edge_by_id("component1", "null1", "FILLEDNESS");
$NdebeleCA->add_edge_by_id("component1", "stable1", "STABILITY");
$NdebeleCA->add_edge_by_id("arch", "component2", "LEFT_SUPPORT");
$NdebeleCA->add_edge_by_id("component2", "open1", "FILLEDNESS");
$NdebeleCA->add_edge_by_id("open1", "coherent1", "COHERENCE");
$NdebeleCA->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$NdebeleCA->add_edge_by_id("inelastic2", "COUNT1-1", "COUNT");
$NdebeleCA->add_edge_by_id("component2", "stable2", "STABILITY");
$NdebeleCA->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$NdebeleCA->add_edge_by_id("restkomponentenSet", "component3", "RESTKOMPONENTE");
$NdebeleCA->add_edge_by_id("component3", "elastic1", "ELASTICITY");
$NdebeleCA->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$NdebeleCA->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$NdebeleCA->add_edge_by_id("component3", "stable3", "STABILITY");
$NdebeleCA->add_edge_by_id("component3", "open2", "FILLEDNESS");
$NdebeleCA->add_edge_by_id("open2", "coherent2", "COHERENCE");
$NdebeleCA->add_edge_by_id("arch", "component4", "RIGHT_VOUSSOIR");
$NdebeleCA->add_edge_by_id("component4", "filled1", "FILLEDNESS");
$NdebeleCA->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$NdebeleCA->add_edge_by_id("component4", "elastic2", "ELASTICITY");
$NdebeleCA->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$NdebeleCA->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$NdebeleCA->add_edge_by_id("component4", "stable4", "STABILITY");
$NdebeleCA->add_edge_by_id("arch", "component2", "KEYSTONE");
$NdebeleCA->add_edge_by_id("arch", "component5", "RIGHT_SUPPORT");
$NdebeleCA->add_edge_by_id("component5", "elastic3", "ELASTICITY");
$NdebeleCA->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$NdebeleCA->add_edge_by_id("elastic3", "MAXIMUM1-2", "MAXIMUM");
$NdebeleCA->add_edge_by_id("component5", "filled2", "FILLEDNESS");
$NdebeleCA->add_edge_by_id("filled2", "canonicalLineate2", "FORM");
$NdebeleCA->add_edge_by_id("component5", "stable5", "STABILITY");
$NdebeleCA->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$NdebeleCA->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$NdebeleCA->add_edge_by_id("filledComponentSet", "component5", "FILLED_COMPONENT");
$NdebeleCA->add_edge_by_id("filledComponentSet", "component4", "FILLED_COMPONENT");
$NdebeleCA->add_edge_by_id("lexicoconstructionalConditioning", "multiple", "FILLER_POSITION");
$NdebeleCA->add_edge_by_id("desmeme", "order", "STRICTURE");
$NdebeleCA->add_edge_by_id("order", "COUNT4-1", "COUNT");
$NdebeleCA->add_edge_by_id("order", "simple", "RELATIONS");
$NdebeleCA->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$NdebeleCA->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$templateGraphs{NdebeleCA} = $NdebeleCA;
my $AghemClause = Graph->new(multiedged => 1);
$AghemClause->set_graph_attribute("name", "AghemClause");
$AghemClause->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$AghemClause->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$AghemClause->add_edge_by_id("arch", "component1", "RIGHT_SUPPORT");
$AghemClause->add_edge_by_id("component1", "elastic1", "ELASTICITY");
$AghemClause->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$AghemClause->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$AghemClause->add_edge_by_id("component1", "open1", "FILLEDNESS");
$AghemClause->add_edge_by_id("open1", "coherent1", "COHERENCE");
$AghemClause->add_edge_by_id("component1", "stable1", "STABILITY");
$AghemClause->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$AghemClause->add_edge_by_id("restkomponentenSet", "component2", "RESTKOMPONENTE");
$AghemClause->add_edge_by_id("component2", "stable2", "STABILITY");
$AghemClause->add_edge_by_id("component2", "elastic2", "ELASTICITY");
$AghemClause->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$AghemClause->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$AghemClause->add_edge_by_id("component2", "open2", "FILLEDNESS");
$AghemClause->add_edge_by_id("open2", "coherent2", "COHERENCE");
$AghemClause->add_edge_by_id("arch", "component3", "LEFT_VOUSSOIR");
$AghemClause->add_edge_by_id("component3", "open3", "FILLEDNESS");
$AghemClause->add_edge_by_id("open3", "coherent3", "COHERENCE");
$AghemClause->add_edge_by_id("component3", "elastic3", "ELASTICITY");
$AghemClause->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$AghemClause->add_edge_by_id("elastic3", "MAXIMUM100-2", "MAXIMUM");
$AghemClause->add_edge_by_id("component3", "stable3", "STABILITY");
$AghemClause->add_edge_by_id("arch", "component4", "LEFT_SUPPORT");
$AghemClause->add_edge_by_id("component4", "stable4", "STABILITY");
$AghemClause->add_edge_by_id("component4", "inelastic1", "ELASTICITY");
$AghemClause->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$AghemClause->add_edge_by_id("component4", "open4", "FILLEDNESS");
$AghemClause->add_edge_by_id("open4", "coherent4", "COHERENCE");
$AghemClause->add_edge_by_id("arch", "component5", "KEYSTONE");
$AghemClause->add_edge_by_id("component5", "inelastic2", "ELASTICITY");
$AghemClause->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$AghemClause->add_edge_by_id("component5", "stable5", "STABILITY");
$AghemClause->add_edge_by_id("component5", "open5", "FILLEDNESS");
$AghemClause->add_edge_by_id("open5", "coherent5", "COHERENCE");
$AghemClause->add_edge_by_id("arch", "component6", "RIGHT_VOUSSOIR");
$AghemClause->add_edge_by_id("component6", "inelastic3", "ELASTICITY");
$AghemClause->add_edge_by_id("inelastic3", "COUNT1-3", "COUNT");
$AghemClause->add_edge_by_id("component6", "unstable1", "STABILITY");
$AghemClause->add_edge_by_id("unstable1", "left", "ASSOCIATE_POSITION");
$AghemClause->add_edge_by_id("unstable1", "component2", "ASSOCIATE");
$AghemClause->add_edge_by_id("component6", "open6", "FILLEDNESS");
$AghemClause->add_edge_by_id("open6", "coherent6", "COHERENCE");
$AghemClause->add_edge_by_id("desmeme", "order", "STRICTURE");
$AghemClause->add_edge_by_id("order", "simple", "RELATIONS");
$AghemClause->add_edge_by_id("order", "COUNT6-1", "COUNT");
$AghemClause->add_edge_by_id("order", "syntacticConstituent", "CONSTITUENT");
$AghemClause->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$AghemClause->add_edge_by_id("potentiallyViolable", "lexical", "EXCEPTIONALITY");
$AghemClause->add_edge_by_id("potentiallyViolable", "morphosyntacticInsertion", "REPARABILITY");
$templateGraphs{AghemClause} = $AghemClause;
my $TurkishVerbalMinimality = Graph->new(multiedged => 1);
$TurkishVerbalMinimality->set_graph_attribute("name", "TurkishVerbalMinimality");
$TurkishVerbalMinimality->add_edge_by_id("desmeme", "span", "FOUNDATION");
$TurkishVerbalMinimality->add_edge_by_id("span", "component1", "RIGHT_SUPPORT");
$TurkishVerbalMinimality->add_edge_by_id("component1", "stable1", "STABILITY");
$TurkishVerbalMinimality->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$TurkishVerbalMinimality->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$TurkishVerbalMinimality->add_edge_by_id("component1", "open1", "FILLEDNESS");
$TurkishVerbalMinimality->add_edge_by_id("open1", "coherent1", "COHERENCE");
$TurkishVerbalMinimality->add_edge_by_id("span", "component2", "LEFT_SUPPORT");
$TurkishVerbalMinimality->add_edge_by_id("component2", "open2", "FILLEDNESS");
$TurkishVerbalMinimality->add_edge_by_id("open2", "coherent2", "COHERENCE");
$TurkishVerbalMinimality->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$TurkishVerbalMinimality->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$TurkishVerbalMinimality->add_edge_by_id("component2", "stable2", "STABILITY");
$TurkishVerbalMinimality->add_edge_by_id("desmeme", "length", "STRICTURE");
$TurkishVerbalMinimality->add_edge_by_id("length", "COUNT2-1", "COUNT");
$TurkishVerbalMinimality->add_edge_by_id("length", "Syllable", "CONSTITUENT");
$TurkishVerbalMinimality->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$TurkishVerbalMinimality->add_edge_by_id("potentiallyViolable", "lexical", "EXCEPTIONALITY");
$TurkishVerbalMinimality->add_edge_by_id("potentiallyViolable", "morphosyntacticInsertion", "REPARABILITY");
$TurkishVerbalMinimality->add_edge_by_id("desmeme", "prosodicConditioning", "CONDITIONING");
$templateGraphs{TurkishVerbalMinimality} = $TurkishVerbalMinimality;
my $NimboranVerb = Graph->new(multiedged => 1);
$NimboranVerb->set_graph_attribute("name", "NimboranVerb");
$NimboranVerb->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$NimboranVerb->add_edge_by_id("desmeme", "span", "FOUNDATION");
$NimboranVerb->add_edge_by_id("span", "restkomponentenSet", "RESTKOMPONENTEN");
$NimboranVerb->add_edge_by_id("restkomponentenSet", "component1", "RESTKOMPONENTE");
$NimboranVerb->add_edge_by_id("component1", "open1", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("open1", "coherent1", "COHERENCE");
$NimboranVerb->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$NimboranVerb->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$NimboranVerb->add_edge_by_id("component1", "unstable1", "STABILITY");
$NimboranVerb->add_edge_by_id("unstable1", "left", "ASSOCIATE_POSITION");
$NimboranVerb->add_edge_by_id("unstable1", "component2", "ASSOCIATE");
$NimboranVerb->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$NimboranVerb->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$NimboranVerb->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$NimboranVerb->add_edge_by_id("component2", "stable1", "STABILITY");
$NimboranVerb->add_edge_by_id("component2", "open2", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("open2", "coherent2", "COHERENCE");
$NimboranVerb->add_edge_by_id("restkomponentenSet", "component2", "RESTKOMPONENTE");
$NimboranVerb->add_edge_by_id("restkomponentenSet", "component3", "RESTKOMPONENTE");
$NimboranVerb->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$NimboranVerb->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$NimboranVerb->add_edge_by_id("elastic2", "MAXIMUM1-2", "MAXIMUM");
$NimboranVerb->add_edge_by_id("component3", "filled1", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$NimboranVerb->add_edge_by_id("component3", "stable2", "STABILITY");
$NimboranVerb->add_edge_by_id("restkomponentenSet", "component4", "RESTKOMPONENTE");
$NimboranVerb->add_edge_by_id("component4", "elastic3", "ELASTICITY");
$NimboranVerb->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$NimboranVerb->add_edge_by_id("elastic3", "MAXIMUM1-3", "MAXIMUM");
$NimboranVerb->add_edge_by_id("component4", "stable3", "STABILITY");
$NimboranVerb->add_edge_by_id("component4", "filled2", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("filled2", "canonicalLineate2", "FORM");
$NimboranVerb->add_edge_by_id("restkomponentenSet", "component5", "RESTKOMPONENTE");
$NimboranVerb->add_edge_by_id("component5", "stable4", "STABILITY");
$NimboranVerb->add_edge_by_id("component5", "filled3", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("filled3", "canonicalLineate3", "FORM");
$NimboranVerb->add_edge_by_id("component5", "elastic4", "ELASTICITY");
$NimboranVerb->add_edge_by_id("elastic4", "MINIMUM0-4", "MINIMUM");
$NimboranVerb->add_edge_by_id("elastic4", "MAXIMUM1-4", "MAXIMUM");
$NimboranVerb->add_edge_by_id("span", "component6", "RIGHT_SUPPORT");
$NimboranVerb->add_edge_by_id("component6", "inelastic2", "ELASTICITY");
$NimboranVerb->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$NimboranVerb->add_edge_by_id("component6", "stable5", "STABILITY");
$NimboranVerb->add_edge_by_id("component6", "open3", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("open3", "coherent3", "COHERENCE");
$NimboranVerb->add_edge_by_id("span", "component7", "LEFT_SUPPORT");
$NimboranVerb->add_edge_by_id("component7", "elastic5", "ELASTICITY");
$NimboranVerb->add_edge_by_id("elastic5", "MINIMUM0-5", "MINIMUM");
$NimboranVerb->add_edge_by_id("elastic5", "MAXIMUM1-5", "MAXIMUM");
$NimboranVerb->add_edge_by_id("component7", "open4", "FILLEDNESS");
$NimboranVerb->add_edge_by_id("open4", "incoherent1", "COHERENCE");
$NimboranVerb->add_edge_by_id("component7", "stable6", "STABILITY");
$NimboranVerb->add_edge_by_id("desmeme", "order", "STRICTURE");
$NimboranVerb->add_edge_by_id("order", "COUNT7-1", "COUNT");
$NimboranVerb->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$NimboranVerb->add_edge_by_id("order", "taxonomic", "RELATIONS");
$NimboranVerb->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$NimboranVerb->add_edge_by_id("potentiallyViolable", "homophony", "REPARABILITY");
$NimboranVerb->add_edge_by_id("potentiallyViolable", "noKnownExceptions", "EXCEPTIONALITY");
$templateGraphs{NimboranVerb} = $NimboranVerb;
my $MandeClause = Graph->new(multiedged => 1);
$MandeClause->set_graph_attribute("name", "MandeClause");
$MandeClause->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$MandeClause->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$MandeClause->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$MandeClause->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$MandeClause->add_edge_by_id("component1", "stable1", "STABILITY");
$MandeClause->add_edge_by_id("component1", "open1", "FILLEDNESS");
$MandeClause->add_edge_by_id("open1", "coherent1", "COHERENCE");
$MandeClause->add_edge_by_id("arch", "component2", "RIGHT_VOUSSOIR");
$MandeClause->add_edge_by_id("component2", "open2", "FILLEDNESS");
$MandeClause->add_edge_by_id("open2", "incoherent1", "COHERENCE");
$MandeClause->add_edge_by_id("component2", "stable2", "STABILITY");
$MandeClause->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$MandeClause->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$MandeClause->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$MandeClause->add_edge_by_id("arch", "restkomponentenSet", "RESTKOMPONENTEN");
$MandeClause->add_edge_by_id("restkomponentenSet", "component3", "RESTKOMPONENTE");
$MandeClause->add_edge_by_id("component3", "stable3", "STABILITY");
$MandeClause->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$MandeClause->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$MandeClause->add_edge_by_id("elastic2", "MAXIMUM1-1", "MAXIMUM");
$MandeClause->add_edge_by_id("component3", "open3", "FILLEDNESS");
$MandeClause->add_edge_by_id("open3", "coherent2", "COHERENCE");
$MandeClause->add_edge_by_id("arch", "component4", "KEYSTONE");
$MandeClause->add_edge_by_id("component4", "inelastic2", "ELASTICITY");
$MandeClause->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$MandeClause->add_edge_by_id("component4", "stable4", "STABILITY");
$MandeClause->add_edge_by_id("component4", "open4", "FILLEDNESS");
$MandeClause->add_edge_by_id("open4", "coherent3", "COHERENCE");
$MandeClause->add_edge_by_id("arch", "component2", "RIGHT_SUPPORT");
$MandeClause->add_edge_by_id("arch", "component5", "LEFT_VOUSSOIR");
$MandeClause->add_edge_by_id("component5", "open5", "FILLEDNESS");
$MandeClause->add_edge_by_id("open5", "coherent4", "COHERENCE");
$MandeClause->add_edge_by_id("component5", "elastic3", "ELASTICITY");
$MandeClause->add_edge_by_id("elastic3", "MINIMUM0-3", "MINIMUM");
$MandeClause->add_edge_by_id("elastic3", "MAXIMUM1-2", "MAXIMUM");
$MandeClause->add_edge_by_id("component5", "stable5", "STABILITY");
$MandeClause->add_edge_by_id("desmeme", "order", "STRICTURE");
$MandeClause->add_edge_by_id("order", "COUNT5-1", "COUNT");
$MandeClause->add_edge_by_id("order", "simple", "RELATIONS");
$MandeClause->add_edge_by_id("order", "syntacticConstituent", "CONSTITUENT");
$MandeClause->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$MandeClause->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$templateGraphs{MandeClause} = $MandeClause;
my $EnglishVP = Graph->new(multiedged => 1);
$EnglishVP->set_graph_attribute("name", "EnglishVP");
$EnglishVP->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$EnglishVP->add_edge_by_id("arch", "component1", "LEFT_VOUSSOIR");
$EnglishVP->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$EnglishVP->add_edge_by_id("inelastic1", "COUNT0-1", "COUNT");
$EnglishVP->add_edge_by_id("component1", "null1", "FILLEDNESS");
$EnglishVP->add_edge_by_id("component1", "stable1", "STABILITY");
$EnglishVP->add_edge_by_id("arch", "component2", "RIGHT_SUPPORT");
$EnglishVP->add_edge_by_id("component2", "open1", "FILLEDNESS");
$EnglishVP->add_edge_by_id("open1", "coherent1", "COHERENCE");
$EnglishVP->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$EnglishVP->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$EnglishVP->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$EnglishVP->add_edge_by_id("component2", "stable2", "STABILITY");
$EnglishVP->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$EnglishVP->add_edge_by_id("arch", "component3", "KEYSTONE");
$EnglishVP->add_edge_by_id("component3", "inelastic2", "ELASTICITY");
$EnglishVP->add_edge_by_id("inelastic2", "COUNT1-1", "COUNT");
$EnglishVP->add_edge_by_id("component3", "stable3", "STABILITY");
$EnglishVP->add_edge_by_id("component3", "open2", "FILLEDNESS");
$EnglishVP->add_edge_by_id("open2", "coherent2", "COHERENCE");
$EnglishVP->add_edge_by_id("arch", "component4", "RIGHT_VOUSSOIR");
$EnglishVP->add_edge_by_id("component4", "elastic2", "ELASTICITY");
$EnglishVP->add_edge_by_id("elastic2", "MAXIMUM1-2", "MAXIMUM");
$EnglishVP->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$EnglishVP->add_edge_by_id("component4", "open3", "FILLEDNESS");
$EnglishVP->add_edge_by_id("open3", "coherent3", "COHERENCE");
$EnglishVP->add_edge_by_id("component4", "stable4", "STABILITY");
$EnglishVP->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$EnglishVP->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$EnglishVP->add_edge_by_id("desmeme", "order", "STRICTURE");
$EnglishVP->add_edge_by_id("order", "COUNT3-1", "COUNT");
$EnglishVP->add_edge_by_id("order", "simple", "RELATIONS");
$EnglishVP->add_edge_by_id("order", "syntacticConstituent", "CONSTITUENT");
$templateGraphs{EnglishVP} = $EnglishVP;
my $TieneVerbSegments = Graph->new(multiedged => 1);
$TieneVerbSegments->set_graph_attribute("name", "TieneVerbSegments");
$TieneVerbSegments->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$TieneVerbSegments->add_edge_by_id("arch", "component1", "KEYSTONE");
$TieneVerbSegments->add_edge_by_id("component1", "stable1", "STABILITY");
$TieneVerbSegments->add_edge_by_id("component1", "open1", "FILLEDNESS");
$TieneVerbSegments->add_edge_by_id("open1", "coherent1", "COHERENCE");
$TieneVerbSegments->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$TieneVerbSegments->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$TieneVerbSegments->add_edge_by_id("arch", "component2", "RIGHT_VOUSSOIR");
$TieneVerbSegments->add_edge_by_id("component2", "open2", "FILLEDNESS");
$TieneVerbSegments->add_edge_by_id("open2", "coherent2", "COHERENCE");
$TieneVerbSegments->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$TieneVerbSegments->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$TieneVerbSegments->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$TieneVerbSegments->add_edge_by_id("component2", "unstable1", "STABILITY");
$TieneVerbSegments->add_edge_by_id("unstable1", "component3", "ASSOCIATE");
$TieneVerbSegments->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$TieneVerbSegments->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$TieneVerbSegments->add_edge_by_id("elastic2", "MAXIMUM1-2", "MAXIMUM");
$TieneVerbSegments->add_edge_by_id("component3", "unstable2", "STABILITY");
$TieneVerbSegments->add_edge_by_id("unstable2", "component2", "ASSOCIATE");
$TieneVerbSegments->add_edge_by_id("unstable2", "left", "ASSOCIATE_POSITION");
$TieneVerbSegments->add_edge_by_id("component3", "open3", "FILLEDNESS");
$TieneVerbSegments->add_edge_by_id("open3", "coherent3", "COHERENCE");
$TieneVerbSegments->add_edge_by_id("unstable1", "right", "ASSOCIATE_POSITION");
$TieneVerbSegments->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$TieneVerbSegments->add_edge_by_id("arch", "component3", "RIGHT_SUPPORT");
$TieneVerbSegments->add_edge_by_id("arch", "component4", "LEFT_VOUSSOIR");
$TieneVerbSegments->add_edge_by_id("component4", "stable2", "STABILITY");
$TieneVerbSegments->add_edge_by_id("component4", "null1", "FILLEDNESS");
$TieneVerbSegments->add_edge_by_id("component4", "inelastic2", "ELASTICITY");
$TieneVerbSegments->add_edge_by_id("inelastic2", "COUNT0-1", "COUNT");
$TieneVerbSegments->add_edge_by_id("desmeme", "prosodicConditioning", "CONDITIONING");
$TieneVerbSegments->add_edge_by_id("desmeme", "order", "STRICTURE");
$TieneVerbSegments->add_edge_by_id("order", "segment", "CONSTITUENT");
$TieneVerbSegments->add_edge_by_id("order", "COUNT3-1", "COUNT");
$TieneVerbSegments->add_edge_by_id("order", "simple", "RELATIONS");
$TieneVerbSegments->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$TieneVerbSegments->add_edge_by_id("potentiallyViolable", "phonologicalRepair", "REPARABILITY");
$TieneVerbSegments->add_edge_by_id("potentiallyViolable", "noKnownExceptions", "EXCEPTIONALITY");
$templateGraphs{TieneVerbSegments} = $TieneVerbSegments;
my $ChichewaAR = Graph->new(multiedged => 1);
$ChichewaAR->set_graph_attribute("name", "ChichewaAR");
$ChichewaAR->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$ChichewaAR->add_edge_by_id("arch", "component1", "LEFT_SUPPORT");
$ChichewaAR->add_edge_by_id("component1", "open1", "FILLEDNESS");
$ChichewaAR->add_edge_by_id("open1", "coherent1", "COHERENCE");
$ChichewaAR->add_edge_by_id("component1", "stable1", "STABILITY");
$ChichewaAR->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$ChichewaAR->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$ChichewaAR->add_edge_by_id("arch", "component2", "RIGHT_VOUSSOIR");
$ChichewaAR->add_edge_by_id("component2", "stable2", "STABILITY");
$ChichewaAR->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$ChichewaAR->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$ChichewaAR->add_edge_by_id("elastic1", "MAXIMUM1-1", "MAXIMUM");
$ChichewaAR->add_edge_by_id("component2", "filled1", "FILLEDNESS");
$ChichewaAR->add_edge_by_id("filled1", "canonicalLineate1", "FORM");
$ChichewaAR->add_edge_by_id("arch", "component3", "RIGHT_SUPPORT");
$ChichewaAR->add_edge_by_id("component3", "filled2", "FILLEDNESS");
$ChichewaAR->add_edge_by_id("filled2", "canonicalLineate2", "FORM");
$ChichewaAR->add_edge_by_id("component3", "stable3", "STABILITY");
$ChichewaAR->add_edge_by_id("component3", "elastic2", "ELASTICITY");
$ChichewaAR->add_edge_by_id("elastic2", "MINIMUM0-2", "MINIMUM");
$ChichewaAR->add_edge_by_id("elastic2", "MAXIMUM1-2", "MAXIMUM");
$ChichewaAR->add_edge_by_id("arch", "component1", "KEYSTONE");
$ChichewaAR->add_edge_by_id("arch", "component4", "LEFT_VOUSSOIR");
$ChichewaAR->add_edge_by_id("component4", "null1", "FILLEDNESS");
$ChichewaAR->add_edge_by_id("component4", "inelastic2", "ELASTICITY");
$ChichewaAR->add_edge_by_id("inelastic2", "COUNT0-1", "COUNT");
$ChichewaAR->add_edge_by_id("component4", "stable4", "STABILITY");
$ChichewaAR->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$ChichewaAR->add_edge_by_id("potentiallyViolable", "semantic", "EXCEPTIONALITY");
$ChichewaAR->add_edge_by_id("potentiallyViolable", "morphosyntacticInsertion", "REPARABILITY");
$ChichewaAR->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$ChichewaAR->add_edge_by_id("lexicoconstructionalConditioning", "multiple", "FILLER_POSITION");
$ChichewaAR->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$ChichewaAR->add_edge_by_id("filledComponentSet", "component3", "FILLED_COMPONENT");
$ChichewaAR->add_edge_by_id("filledComponentSet", "component2", "FILLED_COMPONENT");
$ChichewaAR->add_edge_by_id("desmeme", "order", "STRICTURE");
$ChichewaAR->add_edge_by_id("order", "morphologicalConstituent", "CONSTITUENT");
$ChichewaAR->add_edge_by_id("order", "COUNT3-1", "COUNT");
$ChichewaAR->add_edge_by_id("order", "simple", "RELATIONS");
$templateGraphs{ChichewaAR} = $ChichewaAR;
my $TieneVerbProsodic = Graph->new(multiedged => 1);
$TieneVerbProsodic->set_graph_attribute("name", "TieneVerbProsodic");
$TieneVerbProsodic->add_edge_by_id("desmeme", "prosodicConditioning", "CONDITIONING");
$TieneVerbProsodic->add_edge_by_id("desmeme", "length", "STRICTURE");
$TieneVerbProsodic->add_edge_by_id("length", "COUNT2-1", "COUNT");
$TieneVerbProsodic->add_edge_by_id("length", "Mora", "CONSTITUENT");
$TieneVerbProsodic->add_edge_by_id("desmeme", "span", "FOUNDATION");
$TieneVerbProsodic->add_edge_by_id("span", "component1", "RIGHT_SUPPORT");
$TieneVerbProsodic->add_edge_by_id("component1", "open1", "FILLEDNESS");
$TieneVerbProsodic->add_edge_by_id("open1", "coherent1", "COHERENCE");
$TieneVerbProsodic->add_edge_by_id("component1", "stable1", "STABILITY");
$TieneVerbProsodic->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$TieneVerbProsodic->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$TieneVerbProsodic->add_edge_by_id("span", "component2", "LEFT_SUPPORT");
$TieneVerbProsodic->add_edge_by_id("component2", "open2", "FILLEDNESS");
$TieneVerbProsodic->add_edge_by_id("open2", "coherent2", "COHERENCE");
$TieneVerbProsodic->add_edge_by_id("component2", "stable2", "STABILITY");
$TieneVerbProsodic->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$TieneVerbProsodic->add_edge_by_id("inelastic2", "COUNT1-2", "COUNT");
$TieneVerbProsodic->add_edge_by_id("desmeme", "potentiallyViolable", "VIOLABILITY");
$TieneVerbProsodic->add_edge_by_id("potentiallyViolable", "noKnownExceptions", "EXCEPTIONALITY");
$TieneVerbProsodic->add_edge_by_id("potentiallyViolable", "shortening", "REPARABILITY");
$templateGraphs{TieneVerbProsodic} = $TieneVerbProsodic;
my $SerboCroatianJe = Graph->new(multiedged => 1);
$SerboCroatianJe->set_graph_attribute("name", "SerboCroatianJe");
$SerboCroatianJe->add_edge_by_id("desmeme", "span", "FOUNDATION");
$SerboCroatianJe->add_edge_by_id("span", "component1", "LEFT_SUPPORT");
$SerboCroatianJe->add_edge_by_id("component1", "partiallyFilled1", "FILLEDNESS");
$SerboCroatianJe->add_edge_by_id("partiallyFilled1", "embeddedDesmeme", "FORM");
$SerboCroatianJe->add_edge_by_id("partiallyFilled1", "final1", "FILLER_PLACEMENT");
$SerboCroatianJe->add_edge_by_id("partiallyFilled1", "coherent1", "COHERENCE");
$SerboCroatianJe->add_edge_by_id("component1", "stable1", "STABILITY");
$SerboCroatianJe->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$SerboCroatianJe->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$SerboCroatianJe->add_edge_by_id("span", "component2", "RIGHT_SUPPORT");
$SerboCroatianJe->add_edge_by_id("component2", "open1", "FILLEDNESS");
$SerboCroatianJe->add_edge_by_id("open1", "coherent2", "COHERENCE");
$SerboCroatianJe->add_edge_by_id("component2", "stable2", "STABILITY");
$SerboCroatianJe->add_edge_by_id("component2", "elastic1", "ELASTICITY");
$SerboCroatianJe->add_edge_by_id("elastic1", "MINIMUM0-1", "MINIMUM");
$SerboCroatianJe->add_edge_by_id("elastic1", "MAXIMUM100-1", "MAXIMUM");
$SerboCroatianJe->add_edge_by_id("desmeme", "order", "STRICTURE");
$SerboCroatianJe->add_edge_by_id("order", "COUNT2-1", "COUNT");
$SerboCroatianJe->add_edge_by_id("order", "prosodicWord", "CONSTITUENT");
$SerboCroatianJe->add_edge_by_id("order", "simple", "RELATIONS");
$SerboCroatianJe->add_edge_by_id("desmeme", "lexicoconstructionalConditioning", "CONDITIONING");
$SerboCroatianJe->add_edge_by_id("lexicoconstructionalConditioning", "medial", "FILLER_POSITION");
$SerboCroatianJe->add_edge_by_id("lexicoconstructionalConditioning", "filledComponentSet", "FILLED_COMPONENTS");
$SerboCroatianJe->add_edge_by_id("filledComponentSet", "component1", "FILLED_COMPONENT");
$SerboCroatianJe->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$templateGraphs{SerboCroatianJe} = $SerboCroatianJe;
my $ChintangPrefixes = Graph->new(multiedged => 1);
$ChintangPrefixes->set_graph_attribute("name", "ChintangPrefixes");
$ChintangPrefixes->add_edge_by_id("desmeme", "order", "STRICTURE");
$ChintangPrefixes->add_edge_by_id("order", "COUNT2-1", "COUNT");
$ChintangPrefixes->add_edge_by_id("order", "prosodicWord", "CONSTITUENT");
$ChintangPrefixes->add_edge_by_id("order", "simple", "RELATIONS");
$ChintangPrefixes->add_edge_by_id("desmeme", "constructionalConditioning", "CONDITIONING");
$ChintangPrefixes->add_edge_by_id("desmeme", "notViolable", "VIOLABILITY");
$ChintangPrefixes->add_edge_by_id("desmeme", "arch", "FOUNDATION");
$ChintangPrefixes->add_edge_by_id("arch", "component1", "RIGHT_VOUSSOIR");
$ChintangPrefixes->add_edge_by_id("component1", "open1", "FILLEDNESS");
$ChintangPrefixes->add_edge_by_id("open1", "coherent1", "COHERENCE");
$ChintangPrefixes->add_edge_by_id("component1", "stable1", "STABILITY");
$ChintangPrefixes->add_edge_by_id("component1", "inelastic1", "ELASTICITY");
$ChintangPrefixes->add_edge_by_id("inelastic1", "COUNT1-1", "COUNT");
$ChintangPrefixes->add_edge_by_id("arch", "component2", "LEFT_VOUSSOIR");
$ChintangPrefixes->add_edge_by_id("component2", "null1", "FILLEDNESS");
$ChintangPrefixes->add_edge_by_id("component2", "inelastic2", "ELASTICITY");
$ChintangPrefixes->add_edge_by_id("inelastic2", "COUNT0-1", "COUNT");
$ChintangPrefixes->add_edge_by_id("component2", "stable2", "STABILITY");
$ChintangPrefixes->add_edge_by_id("arch", "component1", "RIGHT_SUPPORT");
$ChintangPrefixes->add_edge_by_id("arch", "component3", "LEFT_SUPPORT");
$ChintangPrefixes->add_edge_by_id("component3", "stable3", "STABILITY");
$ChintangPrefixes->add_edge_by_id("component3", "open2", "FILLEDNESS");
$ChintangPrefixes->add_edge_by_id("open2", "coherent2", "COHERENCE");
$ChintangPrefixes->add_edge_by_id("component3", "inelastic3", "ELASTICITY");
$ChintangPrefixes->add_edge_by_id("inelastic3", "COUNT1-2", "COUNT");
$ChintangPrefixes->add_edge_by_id("arch", "component3", "KEYSTONE");
$templateGraphs{ChintangPrefixes} = $ChintangPrefixes;
my @templates = ("AghemClause", "BantuCA", "BantuCT", "BantuVCy", "ChechenPreverbalA", "ChichewaAR", "ChintangPrefixes", "EnglishPlural", "EnglishVP", "GermanClause", "MandeClause", "MeskwakiClause", "NdebeleCA", "NimboranVerb", "SerboCroatianJe", "SerboCroatianTopicalization", "TieneVerbProsodic", "TieneVerbSegments", "TurkishNominalMinimality", "TurkishVerbalMinimality");
my @templatesCopy = @templates;
open (NULL, '>FloodingSimilarities.txt'); #Erase file
my %seenPairs = { };
for my $templateName1 (@templates) {
for my $templateName2 (@templatesCopy) {
if ($seenPairs{$templateName2."/".$templateName1}) { print next; }
# Initialize simList for calculating Euclidean distances.
my $initialS = new GraphJG::SimilarityJG(graph => [$templateGraphs{$templateName1}, $templateGraphs{$templateName2}]);
my $initialMethod = $initialS->use('SimilarityFlooding');
$initialMethod->setNumOfIteration(1);
$initialMethod->calculate();
my %simList = $initialMethod->getAllSimilarities;
print "$templateName1/$templateName2\n";
# Keep incrementing the iteration until we reach Euclidean distance of less than or equal to .05. Start at 2 to get difference from initial condition.
for (my $count = 2; $count <=100; $count++) {
my $s = new GraphJG::SimilarityJG(graph => [$templateGraphs{$templateName1}, $templateGraphs{$templateName2}]);
my $method = $s->use('SimilarityFlooding');
$method->setNumOfIteration($count);
$method->calculate();
my %newSimList = $method->getAllSimilarities;
my @dists;
for my $v (keys(%simList)) {
# This is messy: We run through the paired graph to see if this paired node is in any subgraph.
# "Free-floating" nodes get ignored for the purposes of calculating the Euclidean distance.
# Appears to not actually make a difference if epsilon is set to .05 since the residuals converge pretty quickly to nearly the same. This is because free-floating nodes rapidly get a score close to zero.
my $pcg = $method->pcg;
my @pairedvs = $pcg->vertices();
for my $pairedv (@pairedvs) {
if($v eq $pairedv) {
my $oldSim = $simList{$v};
my $newSim = $newSimList{$v};
my $diff = $oldSim - $newSim;
push(@dists,$diff);
last;
}
}
}
my $eucSum;
for my $dist (@dists) {
$eucSum += $dist*$dist;
}
my $eucDist = sqrt($eucSum);
print "$count: $eucDist\n";
if ($eucDist < .05) {
$method->getLargeSimilarities($templateName1,$templateName2);
$seenPairs{$templateName1."/".$templateName2} = 1;
last;
}
%simList = %newSimList;
}
}
}