/
GIAglobalDefs.hpp
1233 lines (1089 loc) · 82.4 KB
/
GIAglobalDefs.hpp
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
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*******************************************************************************
*
* License: GNU Affero General Public License version 3 (AGPLv3)
*
*******************************************************************************/
/*******************************************************************************
*
* File Name: GIAglobalsDefs.hpp
* Author: Richard Bruce Baxter - Copyright (c) 2005-2022 Baxter AI (baxterai.com)
* Project: General Intelligence Algorithm
* Project Version: 3r1a 05-June-2022
* Requirements:
* Description: GIA specific global definitions
* /
*******************************************************************************/
#ifndef HEADER_GIA_GLOBAL_DEFS
#define HEADER_GIA_GLOBAL_DEFS
#include "SHAREDglobalDefs.hpp"
#include "LRPglobalDefs.hpp"
#define GIA_PRINT_EXECUTION_TIME //disable this while performing incremental automated testing
#ifdef USE_NLC
#define GIA_DISABLE_CROSS_SENTENCE_REFERENCING //added 2g5a/05-September-2014 - required for NLC 1j2b+, optional for NLC 1k11a+
#define GIA_EXTERNAL_PROCESSING
#endif
#ifdef USE_SANI
#define GIA_POS_REL_TRANSLATOR //GIA3 //requires LRP_PREPROCESSOR
#ifdef GIA_POS_REL_TRANSLATOR
#include "SANIglobalDefs.hpp"
#ifndef SANI_SEQUENCE_GRAMMAR
#define GIA_POS_REL_TRANSLATOR_RULES_USE //identified GIA3m3b
#endif
#endif
#else
//#define GIA_SEM_REL_TRANSLATOR //GIA2
#endif
//#define GIA_DEBUG_DISABLE_3i_CODE
#ifndef GIA_DEBUG_DISABLE_3i_CODE
//#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBERS //not yet defined
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_SUBJECT_MULTI
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_SUBJECT_MULTI
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_SUBJECT_MULTI_POSTHOC_COLLAPSE_CONJUNCTION_ENTITIES //resolves the meaning of conjunction entities //NOTYETCODED
#endif
//#endif
#endif
//#define GIA_DEBUG_DISABLE_3f_CODE
#ifndef GIA_DEBUG_DISABLE_3f_CODE
#ifdef GIA_POS_REL_TRANSLATOR
//#ifdef GIA_POS_REL_TRANSLATOR_RULES_USE //FUTURE: apply this restriction (requires relaxing GIA_POS_REL_TRANSLATOR_RULES_GIA3 restrictions)
#define GIA_POS_REL_TRANSLATOR_RULES
//#endif
#ifdef GIA_POS_REL_TRANSLATOR_RULES
#ifdef SANI_DEBUG_RULES_PRINT_PARSE_PROCESS_POS_TYPES
#define SANI_DEBUG_RULES
#endif
//#define SANI_DEBUG_RULES_PRINT_PARSE_PROCESS3
//#define SANI_DEBUG_RULES_PRINT_PARSE_PROCESS2
//#define SANI_DEBUG_RULES_PRINT_PARSE_PROCESS
#define GIA_POS_REL_TRANSLATOR_RULES_INTERPRET_ALL_NON_PROPER_NOUNS_WITHOUT_DETERMINER_AS_CONCEPT_IE_NOT_JUST_PLURAL //GIA3f10d //this implementation has been taken from GIAsynRelTranslator
//#define SANI_DEBUG_RULES_SYN_REL_TRANSLATOR_OUTPUT_BACKWARDS_COMPATIBILITY //not supported (due to propernouns being replicated in wordlistNouns.txt)
#define GIA_POS_REL_TRANSLATOR_RULES_ASSUME_HIGH_LEVEL_REFERENCE_SETS_DO_NOT_CONTAIN_EXPLICIT_SEMANTIC_RELATION_FUNCTION
//#define GIA_POS_REL_TRANSLATOR_RULES_END_OF_SENTENCE_STRING (STRING_FULLSTOP)
#define GIA_POS_REL_TRANSLATOR_RULES_LAYER_START (SANI_POS_REL_TRANSLATOR_RULES_LAYER_START)
#define GIA_POS_REL_TRANSLATOR_RULES_LOGIC_REFERENCES
#ifdef GIA_POS_REL_TRANSLATOR_RULES_LOGIC_REFERENCES
#define GIA_POS_REL_TRANSLATOR_LOGIC_REFERENCE
#ifdef GIA_POS_REL_TRANSLATOR_LOGIC_REFERENCE
#define GIA_POS_REL_TRANSLATOR_LOGIC_REFERENCE_DYNAMIC_RELATIONSHIP_ENTITY_TYPES
#endif
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_RESTRICT_RECURSION //mandatory
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_RESTRICT_RECURSION
#define GIA_POS_REL_TRANSLATOR_GROUP_TYPE_MAX_NUMBER_CONSECUTIVE_LAYERS (2) //prevents infinite loop of groupType referenceSetType="logicReferenceSet/subReferenceSet/etc" (ie groupTypeName="logicReferenceSets/subReferenceSets/etc") parsing //figure must take into account any intermediary groupType layers, eg logicReferenceSetsOptional:logicReferenceSet
#ifdef GIA_POS_REL_TRANSLATOR_RULES_LOGIC_REFERENCES
#define GIA_POS_REL_TRANSLATOR_GROUP_TYPE_MAX_NUMBER_CONSECUTIVE_LAYERS_LOGIC_REFERENCES (7) //6
#endif
#endif
#ifdef USE_NLC
#define GIA_POS_REL_TRANSLATOR_RULES_PARSE_ISOLATED_SUBREFERENCE_SETS //GIA3f2l
#ifdef GIA_POS_REL_TRANSLATOR_RULES_PARSE_ISOLATED_SUBREFERENCE_SETS
#ifdef USE_NLC
#define GIA_POS_REL_TRANSLATOR_RULES_PARSE_ISOLATED_SUBREFERENCE_SETS_OPTIMISED //GIA3f4a
#endif
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_INTERPRET_NUMBERS_AS_NOUNS
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_GIA3 //GIA3
#ifdef GIA_POS_REL_TRANSLATOR_RULES_GIA3
//parse SANIrules.xml file for all semantic relations
#define GIA_POS_REL_TRANSLATOR_RULES_GIA3_CONNECT_MEAURES_AS_CONDITIONS_BACKWARDS_COMPATIBILITY
#define GIA_POS_REL_TRANSLATOR_RULES_GIA3_COLLAPSE_ALIASES_ONLY //this is required for GIA3 as there is no independent relation distribution stage (to collapse entity names) before which networkIndex nodes are defined
#define GIA_POS_REL_TRANSLATOR_RULES_PARSE_SUBREFERENCE_SETS //mandatory (equivalent to GIA_POS_REL_TRANSLATOR_RULES_GIA3)
//#define GIA_POS_REL_TRANSLATOR_HYBRID_RECONCILE_REFERENCES_AFTER_SEMANTIC_PARSING_EVERY_SENTENCE //???
//#define GIA_POS_REL_TRANSLATOR_RULES_GIA3_USE_SEM_REL_TRANSLATOR_PARSER //optional //retains sem rel parser as an intermediary translation format
#ifdef GIA_POS_REL_TRANSLATOR_RULES_GIA3_USE_SEM_REL_TRANSLATOR_PARSER
#define GIA_SEM_REL_TRANSLATOR_COMMON
#endif
//#define GIA_POS_REL_TRANSLATOR_RULES_GIA3_USE_SYN_REL_TRANSLATOR_FEATURES //optional //retains external nlp for feature detection
#ifdef GIA_POS_REL_TRANSLATOR_RULES_GIA3_USE_SYN_REL_TRANSLATOR_FEATURES
#ifdef GIA_POS_REL_TRANSLATOR_RULES_GIA3_USE_SEM_REL_TRANSLATOR_PARSER
#define GIA_SEM_REL_TRANSLATOR_GIA2_USE_SYN_REL_TRANSLATOR_FEATURES //enable syn rel translator features for semantic relation parser GIA2 code
#endif
#else
#define GIA_TRANSLATOR_WITHOUT_SYN_REL_TRANSLATOR_FEATURES
#define GIA_POS_REL_TRANSLATOR_RULES_GIA3_WITHOUT_SYN_REL_TRANSLATOR_FEATURES
#define GIA_DISABLE_SYNTACTIC_TRANSLATOR
#define GIA_POS_REL_TRANSLATOR_RULES_ENTITY_GRAMMAR
#endif
#define GIA_POS_REL_TRANSLATOR_STORE_REFERENCE_SETS //for backwards compatibility
#else
//parse SANIrules.xml file for logicReference and referenceSets only (not coded)
#define GIA_POS_REL_TRANSLATOR_HYBRID //NOT currently supported //optional: only parses logic references and reference sets - doesn't parse subreference sets (relies on GIA syn/sem translator to parse these)
#endif
#define GIA_POS_REL_TRANSLATOR_MAX_NUMBER_OF_SEMANTIC_FUNCTIONS_EXECUTED_PER_GROUP (2)
//debug (make mandatory):
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_QUERIES //GIA3f1t
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_NEW_CONDITIONS
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_QUERY
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_SEMANTIC_RELATION_RETURN_FUNCTION_NAME
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_SEMANTIC_RELATION_RETURN_FUNCTION_NAME
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_SEMANTIC_RELATION_RETURN_FUNCTION_NAME_SPECIAL_FUNCTION_TESTS //GIA3f1t
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_SEMANTIC_RELATION_RETURN_FUNCTION_NAME_DYNAMIC_INDEX_TESTS //GIA3f2l
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_SEMANTIC_RELATION_RECORD_AND_CONNECT
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_OPTIONAL
//#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_MISSING //not currently used (is it compatible or necessary with the current implementation?)
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_GROUP_PREVIOUS_WORD_POS_TYPE
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_GROUP_PREVIOUS_WORD_POS_TYPE
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_GROUP_EXISTS_PRECEEDING_WORD_POS_TYPE //GIA3f2h //note not strictly dependent on GIA_POS_REL_TRANSLATOR_RULES_CODE_GROUP_PREVIOUS_WORD_POS_TYPE
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_REPEAT
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_REPEAT
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_REPEAT_IGNORE_CONSECUTIVE_PLURAL_NOUNS //GIA3f2n
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_REPEAT_IGNORE_CONSECUTIVE_PLURAL_NOUNS
//#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_REPEAT_IGNORE_CONSECUTIVE_PLURAL_NOUNS_DETECT_IRREGULAR_NOUN_FORMS //GIA3f5a optional
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_WORD_NOUN_VERB_VARIANT //GIA3f2p
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_WORD_NOUN_VERB_VARIANT
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_WORD_NOUN_VERB_VARIANT_DETECT_IRREGULAR_NOUN_FORMS //GIA3f5a
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_WORD_NOUN_VERB_VARIANT_INTERPRET_PAST_AND_PAST_PARTICIPLE_THE_SAME
#endif
#endif
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_OR
#define GIA_POS_REL_TRANSLATOR_RULES_TREAT_CONJUNCTION_ITEMS_AS_SAME_REFERENCE_SET
#ifndef LRP_PREPROCESSOR_INITIALISE_WORD_INDEX_LIST_FROM_LRP_FILES_SUPPORT_UPPERCASE_PROPERNOUN_WORD_LISTS
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_COMPONENT_STRING_EXPLICIT_CASE_INSENSITIVE
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBERS
#ifdef GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBERS
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_DATE
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_UNIT
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_MONEY
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_QUANTITY //reuired for multiple cases
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_MEASURE
#endif
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_TITLE
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_PROPERNOUNS
//#ifdef GIA_ALIASES //not yet defined
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_ALIASES
//#endif
//#ifdef GIA_TRANSLATOR_NUMBER_OF //not yet defined
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBER_OF //GIA3f3d
//#endif
//#ifdef GIA_TRANSLATOR_EXPLETIVES //not yet defined
#define GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBER_EXPLETIVES //GIA3f7a
//#endif
GIA_POS_REL_TRANSLATOR_RULES_CODE_NUMBER_EXPLETIVES
#else
//#define GIA_POS_REL_TRANSLATOR_HYBRID_DEPRECIATED //depreciated: superceeded by GIA_POS_REL_TRANSLATOR_RULES //depreciated dedicated (hard coded) logic reference / reference set parse code
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_DEPRECIATED
#define GIA_POS_REL_TRANSLATOR_HYBRID
#endif
#endif
#else
#define GIA_SEM_REL_TRANSLATOR_GIA2_USE_SYN_REL_TRANSLATOR_FEATURES //optional //semantic relation parser uses external synactic parser features
#ifndef GIA_SEM_REL_TRANSLATOR_GIA2_USE_SYN_REL_TRANSLATOR_FEATURES
#define GIA_TRANSLATOR_WITHOUT_SYN_REL_TRANSLATOR_FEATURES
#endif
#endif
#endif
//#define GIA_ADVANCED_REFERENCING_SUPPORT_REFERENCING_OF_ENTITIES_WITH_PREDETERMINERS //when was this disabled?
//#define GIA_DEBUG_DISABLE_3e_CODE
#ifndef GIA_DEBUG_DISABLE_3e_CODE
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_DISABLE_CHANGES //used until changes have been debugged //GIA3e8d
#define GIA_POS_REL_TRANSLATOR_HYBRID_DETERMINE_AMBIGUOUS_PREPOSITION_POS_TYPES_BASED_ON_CONTEXT //GIA3e12a //uses heuristics to verify preposition pos type - designed to replace the need for a more accurate pos tagger; GIA_POS_REL_TRANSLATOR_HYBRID_EXECUTE_PRELIM_POS_TAGGER/LRP_PREPROCESSOR_POS_TAGGER
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_DETERMINE_AMBIGUOUS_PREPOSITION_POS_TYPES_BASED_ON_CONTEXT
#define GIA_POS_REL_TRANSLATOR_HYBRID_DETERMINE_AMBIGUOUS_PREPOSITION_POS_TYPES_BASED_ON_CONTEXT_METHOD1
#define GIA_POS_REL_TRANSLATOR_HYBRID_DETERMINE_AMBIGUOUS_PREPOSITION_POS_TYPES_BASED_ON_CONTEXT_METHOD2
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITER_SPECIAL_CASE_DELIMITER_VERB_STATE_SUCCEEDED_BY_NOUN
//#define GIA_GRAMMATICAL_WORD_TYPES_EXTENDED //GIA3e5a //removed 3e11a - no longer required by GIA pos tagger - use GIAposTag arrays instead //GIA only; not in wordnet
#define GIA_POS_REL_TRANSLATOR_GRAMMATICALLY_STRICT_VERB_VARIANTS_ONLY //GIA3e8b
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID
#define GIA_POS_REL_TRANSLATOR_STORE_REFERENCE_SETS //mandatory with GIA_POS_REL_TRANSLATOR_HYBRID as hybrid uses reference sets
#ifndef LRP_PREPROCESSOR_POS_TAGGER_DISABLE
//#ifndef GIA_POS_REL_TRANSLATOR_HYBRID_DETERMINE_AMBIGUOUS_PREPOSITION_POS_TYPES_BASED_ON_CONTEXT
#define GIA_POS_REL_TRANSLATOR_HYBRID_EXECUTE_PRELIM_POS_TAGGER //GIA3e1a //either uses third party NLP POS tagger or GIA pos tagger (LRP_PREPROCESSOR_POS_TAGGER)
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_EXECUTE_PRELIM_POS_TAGGER
#define LRP_PREPROCESSOR_POS_TAGGER //GIA3e2a //GIA pos tagger (optional); else use third party NLP pos tagger
#endif
//#endif
#endif
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_EXECUTE_PRELIM_POS_TAGGER
//#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SET_PREFERENCE_NLP_PRELIM_POS_TAGS_OVER_LRP_WORD_TYPE_LISTS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_PREFERENCE_NLP_PRELIM_POS_TAGS_OVER_LRP_WORD_TYPE_LISTS
#define GIA_POS_REL_TRANSLATOR_HYBRID_NLC_PREPROCESSOR_PREFERENCE_NLP_PRELIM_POS_TAGS_OVER_LRP_WORD_TYPE_LISTS
#endif
#ifndef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_PREFERENCE_NLP_PRELIM_POS_TAGS_OVER_LRP_WORD_TYPE_LISTS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_PREFERENCE_VERB_OR_NOUN_OVER_ADJECTIVE_POS_AMBIGUITY //doesnt work as it is unsure whether to select adjective over verb/noun or verb/noun over adjective. Therefore GIA_POS_REL_TRANSLATOR_HYBRID must rely on a functioning LRP_PREPROCESSOR_POS_TAGGER
#endif
#endif
#endif
//#define GIA_DEBUG_DISABLE_3d_CODE
#ifndef GIA_DEBUG_DISABLE_3d_CODE
#define GIA_QUERY_SIMPLIFIED_SEARCH_ENFORCE_EXACT_MATCH_CONCEPTS //GIA3d2a
#ifdef GIA_QUERY_SIMPLIFIED_SEARCH_ENFORCE_EXACT_MATCH_CONCEPTS
//#define GIA_DEBUG_QUERY2
#endif
#ifdef USE_ANN
#ifndef COMPILE_LRP_GENERATE_POS_TAGGER_DATABASE_ORIG
#define GIA_NEURAL_NETWORK //experimental only
#endif
#ifdef GIA_NEURAL_NETWORK
#define GIA_NEURAL_NETWORK_MAX_SPECIFIC_CONCEPT_DEPTH (5)
#define GIA_NEURAL_NETWORK_MAX_INSTANCE_DEPTH (5)
#ifndef SANI_SEQUENCE_GRAMMAR
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE //GIA3d6a
#endif
#ifdef GIA_NEURAL_NETWORK_SYMBOLIC_CORE
//#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_3D //not yet coded
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS //not yet coded (connect each concept to concept index bits, and store binary index code in each neuron [which is used to tune synapse weights between instances and concept index bits]. Connect instances to concept index bits)
#ifdef GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_NEGATIVE_WEIGHTS
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_TYPE_UNKNOWN (0)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_TYPE_SUBSTANCE (1)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_TYPE_REFERENCE_SET_DELIMITER (2)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_NUMBER_OF_TYPES (2)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_MAX (8) //32 bits = supports 4 billion concepts, 20 bits = supports 1 million concepts
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_LAYER (GIA_NEURAL_NETWORK_MAX_SPECIFIC_CONCEPT_DEPTH)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_OFFSET (1)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_TYPE_OFFSET (GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_MAX * GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_OFFSET * 1)
#endif
//#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_ACTIVE //not yet coded (must replace GIA referencing and queries with neural net processing)
#ifdef GIA_NEURAL_NETWORK_SYMBOLIC_CORE_ACTIVE
#define GIA_NEURAL_NETWORK_ACTIVE
#endif
#else
//#define GIA_NEURAL_NETWORK_NON_SEMANTIC //not used
#ifdef GIA_NEURAL_NETWORK_NON_SEMANTIC
//#define GIA_NEURAL_NETWORK_USE_ARTIFICIAL_INSTANCE_NEURON_SYNAPSES
#ifdef GIA_POS_REL_TRANSLATOR_STORE_REFERENCE_SETS
//#define GIA_NEURAL_NETWORK_NON_SEMANTIC_ACTIVE //GIA3d4a //not yet finished (must replace GIA referencing and queries with neural net processing)
#endif
#ifdef GIA_NEURAL_NETWORK_NON_SEMANTIC_ACTIVE
//#assert GIA_NEURAL_NETWORK_USE_ARTIFICIAL_INSTANCE_NEURON_SYNAPSES - NB GIA_NEURAL_NETWORK_NON_SEMANTIC_ACTIVE currently requires GIA_NEURAL_NETWORK_USE_ARTIFICIAL_INSTANCE_NEURON_SYNAPSES (this is not an architectural limitation; the alternative just hasn't been coded)
#define GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS_TYPE_UNKNOWN (0)
#define GIA_DISABLE_SEMANTIC_TRANSLATOR
#define GIA_NEURAL_NETWORK_ACTIVE
//#define GIA_NEURAL_NETWORK_NON_SEMANTIC_CREATE_DIRECT_CONNECTION_BETWEEN_DELIMITER_AND_OBJECT //not coded or used
#define GIA_NEURAL_NETWORK_NON_SEMANTIC_BYPASS_AUXILIARIES
#define GIA_NEURAL_NETWORK_NON_SEMANTIC_REPLACE_WORDS_WITH_LEMMAS
#define GIA_NEURAL_NETWORK_NON_SEMANTIC_REFERENCE_SET_IDENTIFICATION_MAX_ERROR (1) //should be dynamic depending on size of reference set (currently set to 1 to take into account mismatch between indefinite/definite determiners for a uniquely identifiable/referenced referenceSet; a/the) //assume that there are no stray words (e.g. "that") //FUTURE: need to take into account lemma differences - eg The dog rides the bike. The dog that rode the bike... (rides/rode)
#define GIA_DEBUG_NEURAL_NETWORK_ACTIVE
#endif
#endif
#endif
//#ifdef GIA_CREATE_SHORTCUTS_TO_CONCEPT_ENTITIES //not yet defined
#define GIA_NEURAL_NETWORK_GENERATE_SPECIFIC_CONCEPT_NETWORKS
#ifdef GIA_NEURAL_NETWORK_GENERATE_SPECIFIC_CONCEPT_NETWORKS
#define GIA_NEURAL_NETWORK_GENERATE_SEPARATE_CONCEPT_NETWORKS_RECURSE //this is required in the case where there are multiple layers of specific concepts
#endif
//#endif
//#define GIA_DEBUG_NEURAL_NETWORK
#define GIA_NEURAL_NETWORK_OFFSET_INSTANCE_NEURONS
#ifdef GIA_NEURAL_NETWORK_OFFSET_INSTANCE_NEURONS
#ifdef GIA_NEURAL_NETWORK_SYMBOLIC_CORE_CONCEPT_INDEX_BITS
#define GIA_NEURAL_NETWORK_OFFSET_INSTANCE_NEURONS_LAYERS (GIA_NEURAL_NETWORK_MAX_SPECIFIC_CONCEPT_DEPTH+1+GIA_NEURAL_NETWORK_MAX_INSTANCE_DEPTH)
#else
#define GIA_NEURAL_NETWORK_OFFSET_INSTANCE_NEURONS_LAYERS (GIA_NEURAL_NETWORK_MAX_SPECIFIC_CONCEPT_DEPTH+GIA_NEURAL_NETWORK_MAX_INSTANCE_DEPTH) //this should equal max number of specific concepts in hierachy //NB this should be padded (ie increased) slightly (eg +2) to take into account the fact subnets may be parsed such that they result in lower (negative) layers relative to the entry point neuron
#endif
#else
#define GIA_NEURAL_NETWORK_OFFSET_INSTANCE_NEURONS_LAYERS (1)
#endif
#ifndef SANI_SEQUENCE_GRAMMAR
#ifndef GIA_NEURAL_NETWORK_SYMBOLIC_CORE
#ifndef GIA_NEURAL_NETWORK_ACTIVE
#define GIA_NEURAL_NETWORK_PASSIVE
#endif
#endif
#endif
#endif
#endif
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID //not yet defined
//#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_PREPOSITIONS_MUST_SUCCEED_COMMA //removed GIA3d5b
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_SUPPORT_CONSECUTIVE_VERBS //GIA3d5d
//#define GIA_DEBUG_PREPROCESSOR_SENTENCE_RECONCILE_REFERENCES_DISABLE //temp debug
#ifndef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_DISABLE_CHANGES
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_AND_OBJECT_FIRST_SUBREFERENCE_ONLY //GIA3d5e
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_ONLY //GIA3d5e
#endif
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITER_SPECIAL_CASE_DELIMITER_VERB_STATE_SUCCEEDED_BY_NOUN //GIA3d8b
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITER_SPECIAL_CASE_DELIMITER_VERB_NOT_PRECEEDED_BY_THAT_WHICH_AND_NOT_PRECEEDED_BY_AUXILIARY_DETECT //GIA3d5d
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITER_SPECIAL_CASE_DELIMITER_VERB_NOT_PRECEEDED_BY_THAT_WHICH_AND_NOT_PRECEEDED_BY_AUXILIARY_DETECT
//#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITER_SPECIAL_CASE_DELIMITER_VERB_NOT_PRECEEDED_BY_THAT_WHICH_AND_NOT_PRECEEDED_BY_AUXILIARY_IGNORE //GIA3d5f //disabled GIA3e8b (not required because verb case states e.g. "the moved bike..." will be detected based on preceeding determiners, and subsequently ignored as reference set delimiters )
#endif
#endif
#endif
//#define GIA_DEBUG_DISABLE_3c_CODE
#ifndef GIA_DEBUG_DISABLE_3c_CODE
#define GIA_EXPECT_NEWLINE_AT_END_OF_INPUT_TEXT_FILE //GIA3c1e
#define GIA_DRAW_IGNORE_INITIALISED_ENTITY_CONNECTION_FOR_PRINTING_BOOL //GIA3c1d
#endif
//#define GIA_DEBUG_DISABLE_3b_CODE
#ifndef GIA_DEBUG_DISABLE_3b_CODE
#define GIA_STANFORD_PARSER_AND_CORENLP_VERSION_2016_10_31_OR_GREATER
#ifdef GIA_STANFORD_PARSER_AND_CORENLP_VERSION_2016_10_31_OR_GREATER
#define GIA_NLP_CLIENT_SERVER //GIA3b1a
#endif
//#ifdef LRP_PREPROCESSOR //has not yet been defined
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_WORD_CHANGES //GIA3b5b
#ifdef GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_WORD_CHANGES
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_LEFT_BRACKET_WORD "-LRB-"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_LEFT_BRACKET_LEMMA "-lrb-"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_RIGHT_BRACKET_WORD "-RRB-"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_RIGHT_BRACKET_LEMMA "-rrb-"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD1 "``" //GIA3d5a
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD2 "''"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_LEMMA1 "``" //GIA3d5a
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_LEMMA2 "''"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD_ARRAY_SIZE (2)
static string stanfordParserAndCoreNLPinvertedCommasWordArray[GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD_ARRAY_SIZE] = {GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD1, GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_INVERTED_COMMAS_WORD2};
#endif
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_INTERPRET_CANNOT_AS_CAN_NOT //GIA3b5b //note this will break characterIndexInSentenceContentsOriginalText (required implementation: need to preprepreprocess words like "cannot" that require splitting by NLP - ie preprocess the text before executing the GIA prepreprocessor createPreprocessSentences)
#ifdef GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_INTERPRET_CANNOT_AS_CAN_NOT
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_INTERPRET_CANNOT_AS_CAN_NOT_ORIGINAL_WORD "cannot"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_INTERPRET_CANNOT_AS_CAN_NOT_NEW_WORD_1 "can"
#define GIA_STANFORD_PARSER_AND_CORENLP_FEATURE_PARSER_ANOMALY_INTERPRET_CANNOT_AS_CAN_NOT_NEW_WORD_2 "not"
#endif
//#endif
#endif
//#define GIA_DEBUG_DISABLE_3a_CODE
#ifndef GIA_DEBUG_DISABLE_3a_CODE
//this provides a major architectural change:
#define GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS //creates an artificial have/be entity node for every property/definition connection [required to store time information consistently and reference the connection] //this is required for GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE
#ifdef GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS
//#define GIA_QUERY_SKIP_OVER_PROPERTY_AND_DEFINITION_RELATIONSHIP_ENTITIES //this is designed for GIA3 but is not operative (not used for advanced referencing; only used for post processing reference set matching GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING; ie specific concepts)
#ifdef GIA_QUERY_SKIP_OVER_PROPERTY_AND_DEFINITION_RELATIONSHIP_ENTITIES
#define GIA_QUERY_SKIP_OVER_PROPERTY_AND_DEFINITION_RELATIONSHIP_ENTITIES_QUERIES //this is optional
#endif
#else
//NB linkHavingPropertyConditionsAndBeingDefinitionConditions is no longer supported
#endif
//#define GIA_NLG_MORPHOLOGY_GENERATOR
#define GIA_REFERENCING_UPDATE_ENTITY_INDEXES_OF_REFERENCE_SOURCE_TO_THOSE_OF_CURRENT_SENTENCE //GIA3a1f //aka GIA_REFERENCING_UPDATE_ENTITY_INDEXES_CONTINUOUSLY (this is an extension of GIA_SET_ENTITY_ENTITY_AND_SENTENCE_INDICIES_NORMALLY)
#ifdef GIA_REFERENCING_UPDATE_ENTITY_INDEXES_OF_REFERENCE_SOURCE_TO_THOSE_OF_CURRENT_SENTENCE
//#define GIA_REFERENCING_UPDATE_ENTITY_INDEXES_OF_REFERENCE_SOURCE_TO_THOSE_OF_CURRENT_SENTENCE_NETWORK_INDICES
#endif
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_DISABLE_SUBCLASSES
#define GIA_ENTITY_CONNECTION_RECORD_ENTITY_ORIGIN
#ifdef GIA_ENTITY_CONNECTION_RECORD_ENTITY_ORIGIN
#define GIA_ENTITY_CONNECTION_RECORD_RELATIONSHIP_TYPE //this is required for !GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS generalised code
#endif
#define GIA_CREATE_SHORTCUTS_TO_CONCEPT_ENTITIES
#define GIA_NLG //NLG codebase has been upgraded so is now defined in GIA_DEBUG_DISABLE_3a_CODE
#ifdef GIA_NLG
//#define GIA_NLG_ADD_AUXILIARIES_TO_SAME_REFERENCE_SET_QUALITIES //eg "the dog that is blue" (vs "the blue dog")
#define GIA_NLG_ADD_AUXILIARIES_TO_SAME_REFERENCE_SET_CONDITIONS //eg "the dog that is near" (vs "the dog near the house")
#endif
//#define GIA_ADD_INSTANCES_TO_ACTIVE_LIST_AFTER_PARSE_SENTENCE //?
#ifdef LRP_PREPROCESSOR
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID
//#define GIA_POS_REL_TRANSLATOR_HYBRID_TEMPORARY_SENTENCE_INDEX (-2)
#define LRP_PREPROCESSOR_REASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES
#ifdef LRP_PREPROCESSOR_REASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES
#ifdef LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES_DUMMY_SENTENCE_CONTENTS "giadummysentence"
#endif
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE
//#assert defined GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS
#define GIA_POS_REL_TRANSLATOR_LOGIC_REFERENCE
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_ERROR_CHECKING
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_CONJUNCTIONS_ALLOW_INTERMEDIARY_PREPOSITION_AND_VERB_LOGIC_REFERENCES
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_CONJUNCTIONS_ALLOW_INTERMEDIARY_PREPOSITION_AND_VERB_LOGIC_REFERENCES
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_CONJUNCTION_LR_WITH_EMBEDDED_PREPOSITION_VERB_LR //GIA3a5i
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_CONJUNCTION_LR_WITH_EMBEDDED_PREPOSITION_VERB_LR
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_CONJUNCTION_LR_WITH_EMBEDDED_PREPOSITION_VERB_LR_DELETE_IMPLICIT_GOVERNOR
#endif
#endif
//#define LRP_PREPROCESSOR_REASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES //after parsing semantic relations for individual reference sets, GIA will assign every entity in the logic reference structure the same sentenceIndex, and each logic reference variable (with all its reference sets) the same sentence index
#ifdef LRP_PREPROCESSOR_REASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES
//after parsing semantic relations for individual reference sets, GIA will assign every entity in the original pre-preprocessed sentence to the same sentenceIndex
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES
#ifdef LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES_DUMMY_LOGIC_REFERENCE_CONTENTS "giadummylogicreference"
#endif
//#define LRP_PREPROCESSOR_REASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES_IGNORE_CONNECTIONS_TO_SENTENCE_LOGIC_REFERENCE_SET //use this if the connection between the logicReference entity and the logicReferenceVariable should have the sentenceIndex of the currentLRPpreprocessorSentenceInList rather than that of the logicReferenceVariable
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_REMOVE_DOUBLE_WHITE_SPACE
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_OUTPUT_LOGIC_REFERENCE_SETS_FOR_HIGH_LEVEL_SEMANTIC_PARSE //GIA3a7a //OLD: this is not required as the information is contained within GIAposRelTranslatorHybridLogicReference structure and it can be manually derived (without NLP)
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_OUTPUT_LOGIC_REFERENCE_SETS_FOR_HIGH_LEVEL_SEMANTIC_PARSE
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_SENTENCES //mandatory
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_OUTPUT_LOGIC_REFERENCE_SETS_FOR_HIGH_LEVEL_SEMANTIC_PARSE_SUPPORT_VERB_TENSE
//#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_OUTPUT_LOGIC_REFERENCE_SETS_FOR_HIGH_LEVEL_SEMANTIC_PARSE_VERBOSE
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_OUTPUT_LOGIC_REFERENCE_SETS_FOR_HIGH_LEVEL_SEMANTIC_PARSE_VERB_DELIMITERS_ONLY //this is required because NLP doesn't parse "A giadummyrelationshipsubject [logic reference preposition eg considering] a giadummyrelationshipobject."
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_RECURSION //mandatory 3a5e //eg It is proposed that [X is Q] but [all [chickens are blue] except for [Tom]], Tom said that [Mary said [the car goes to the fair]], I think that [Tom thinks [I am happy]]
//#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_ABSTRACT_CONJUNCTIONS //eg eg subsequent_to and before (FUTURE: and -> subsequent_to + before)
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SKIP_APPENDED_THAT //eg Tom said that... ['that' will not be recorded in the logical condition variable]
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SKIP_APPENDED_THAT
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SKIP_APPENDED_THAT_NAME "that"
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SUPPORT_PREPOSITIONS_WITH_THAT
#endif
//#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_CONJUNCTIONS_ADD_EXPLICIT_SUBJECT_TEXT_FOR_CONJUNCTIONS //CHECKTHIS (based on splitMathDetectedLineIntoNLPparsablePhrasesLogicalConditionAddExplicitSubjectTextForConjunctions)
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_ASSUME_PARSING_REFERENCE_VARIABLE_AT_START_OF_SENTENCE //required for some logic references (eg propositions; "Tom said that B"), but not other logic references (eg regarding; "Regards Q...")
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET
//#assert defined GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_RECORD_SAME_REFERENCE_SET_DELIMITERS //this is currently required to process delimiter (eg being/having/verb/preposition) tense, adverbs (eg very near), and adjectives (eg rides fast) using NLP
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_RECORD_SAME_REFERENCE_SET_DELIMITERS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_RECORD_SAME_REFERENCE_SET_DELIMITERS_UPDATE_ENTITY_OLD_METHOD
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_SUB_REFERENCE_SETS //this improves NLP/GIA translator semantic parser (by reducing the size of the text chunks being processed)
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_SUB_REFERENCE_SETS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_SUB_REFERENCE_SETS_DELIMITERS //mandatory //eg The car had a bike. -> GIAdummyactionsubject + "had " + GIAdummyactionobject
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_SUB_REFERENCE_SETS_DELIMITERS
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITERS_DISCARD_THAT_WHICH
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_DELIMITERS_CONTAIN_VERB_ADJECTIVES //this is currently required to process verb delimiter adjectives (eg rides fast) using NLP
#endif
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT //this is required a) for third party NLP (as opposed to GIA direct semantic relation parser) and b) to relink logic reference variable entities without a subject/delimiter back to the high level logic reference GIA network structure
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT
#ifdef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_NO_ADVANCED_REFERENCING //will be disabled by default
#else
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_NO_ADVANCED_REFERENCING
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP "compartmentalises" //giadummyrelationship //verify no conflict with NLC_PREPROCESSOR_INTERPRET_SINGLE_WORD_SENTENCES_AS_ACTIONS_DUMMY_TEXT_ACTION //"do"?
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_SUBJECT "giadummyrelationshipsubject" //verify no conflict with NLC_PREPROCESSOR_INTERPRET_SINGLE_WORD_SENTENCES_AS_ACTIONS_DUMMY_TEXT_ACTION_SUBJECT //"they"?
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_OBJECT "giadummyrelationshipobject" //verify no conflict with NLC_PREPROCESSOR_INTERPRET_SINGLE_WORD_SENTENCES_AS_ACTIONS_DUMMY_TEXT_ACTION_OBJECT //"this"?
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_FULL_SIZE (1)
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_SUBJECT_FULL_SIZE (2)
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_OBJECT_FULL_SIZE (2)
static string giaPreprocessorSentenceReferenceSetAddDummyNLPtextRelationshipFullArray[GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_FULL_SIZE] = {GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP};
static string giaPreprocessorSentenceReferenceSetAddDummyNLPtextRelationshipSubjectFullArray[GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_SUBJECT_FULL_SIZE] = {"A", GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_SUBJECT};
static string giaPreprocessorSentenceReferenceSetAddDummyNLPtextRelationshipObjectFullArray[GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_OBJECT_FULL_SIZE] = {"a", GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_OBJECT};
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_NLP_TEXT_RELATIONSHIP_LEMMA "compartmentalise"
#ifndef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_ONLY
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_SUBJECT_AND_DUMMY_DELIMITER_AND_DUMMY_OBJECT
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_AND_OBJECT //set reference set as subject/object before semantic relation parse //this is required to parse object conditions that are parsed by GIA as properties/conditions (instead of actions) of the relationship eg Tom rides to the park ('to' is connected to 'ride')
#ifdef GIA_POS_REL_TRANSLATOR_HYBRID_REFERENCE_SET_ADD_DUMMY_SUBJECT_AND_DUMMY_DELIMITER_AND_OBJECT
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_SET_CONJUNCTION_AND_OR_TEXT_TO_REFERENCE_SET_OBJECT_BEFORE_SEMANTIC_RELATION_PARSE
#endif
#endif
#else
#define LRP_PREPROCESSOR_ASSIGN_UNIQUE_SENTENCE_INDICES_FOR_LOGIC_REFERENCE_VARIABLES //mandatory
#endif
//#define GIA_POS_REL_TRANSLATOR_HYBRID_RECONCILE_REFERENCES_AFTER_SEMANTIC_PARSING_EVERY_SENTENCE //this is unsupported as each LRPpreprocessorSentence will contain multiple GIAsentences
//#define LRP_PREPROCESSOR_RECORD_PARSABLE_PHRASE_POSITION_APPROXIMATE //unimplemented
//#define LRP_PREPROCESSOR_SUPPORT_MULTILINE_SENTENCES //unimplemented
//#define GIA_DEBUG_PREPROCESSOR_SENTENCE_REFERENCE_SET
//#define GIA_DEBUG_PREPROCESSOR_SENTENCE_LOGIC_REFERENCE
//#define GIA_DEBUG_PREPROCESSOR_SENTENCE_PREMATURE_QUIT
#define GIA_POS_REL_TRANSLATOR_HYBRID_PRINT_OUTPUT //temp debug
#endif
#define GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE_NEW_LOGIC_REFERENCE_CHAR (CHAR_COMMA)
#endif
#endif
//#define GIA_DEBUG_DISABLE_2g_CODE
//#define GIA_DEBUG_DISABLE_2h_CODE
//#define GIA_DEBUG_DISABLE_2i_CODE
//#define GIA_DEBUG_DISABLE_2j_CODE
//#define GIA_DEBUG_DISABLE_2k_CODE
//#define GIA_DEBUG_DISABLE_2l_CODE
//#define GIA_DEBUG_DISABLE_2m_CODE
//#define GIA_DEBUG_DISABLE_2n_CODE
//#define GIA_DEBUG_DISABLE_2o_CODE
#ifndef GIA_DEBUG_DISABLE_2o_CODE
#ifdef USE_NLC
#ifndef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_ADVANCED_REFERENCING_PREVENT_REFERENCING_OF_PLURAL_ENTITIES //GIA2o7b (assumes that the application built on GIA, eg NLC, can handle their referencing independently)
//#ifdef GIA_PREDETERMINERS //has not yet been defined
#define GIA_ADVANCED_REFERENCING_PREVENT_REFERENCING_OF_ENTITIES_WITH_PREDETERMINERS //GIA2o7b (assumes that the application built on GIA, eg NLC, can handle their referencing independently)
//#endif
#endif
#endif
#ifndef GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS
#define GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_INTO_A_PROPERTY_BASIC //disabled GIA2c1a, reenabled GIA2o6a, removed GIA3a1a //required for !GIA_DISABLE_CROSS_SENTENCE_REFERENCING //NB if modified, need to update GIArules.xml accordingly
#endif
#ifdef GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_INTO_A_PROPERTY_BASIC
#define GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_INTO_A_PROPERTY_BASIC_RECORD_AUX_INFO //GIA2o6a
#endif
#define GIA_ADVANCED_REFERENCING_ENSURE_QUANTITY_MATCHES //GIA2o2a
#ifdef GIA_ADVANCED_REFERENCING_ENSURE_QUANTITY_MATCHES
//#define GIA_ADVANCED_REFERENCING_ENSURE_QUANTITY_MATCHES_SUPPORT_QUERY_PLURAL_TO_QUANTITY_MATCH //added 2o5a, removed 2o7a
#endif
#ifdef USE_NLC
#ifndef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_ADVANCED_REFERENCING_IDENTIFY_DEFINITE_SETS_ACCEPT_PROPERNOUNS_ISOLATE //2o5b, disabled 2o5c, reenabled 2o9b (assumes that the application built on GIA, eg NLC, can handle their referencing independently)
#endif
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2n_CODE
#define GIA_TRANSLATOR_EXPLETIVES //GIA2n7b
#ifdef GIA_TRANSLATOR_EXPLETIVES
#define GIA_TRANSLATOR_EXPLETIVES_WORKAROUND_STANFORD_ANOMALY_HAS_ASSIGNMENTS //GIA2n7b
#ifndef GIA_TRANSLATOR_EXPLETIVES_WORKAROUND_STANFORD_ANOMALY_HAS_ASSIGNMENTS
#define GIA_ADVANCED_REFERENCING_PREVENT_DOUBLE_LINKS_IN_SAME_SENTENCE //GIA2n7b //this is only necessary due to faulty NLP relation assignments
#endif
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2m_CODE
#define GIA_SYNONYMN_DETECTION_DISABLE_DURING_SPECIFIC_CONCEPT_ACTION_LINKING //GIA2m3a
#define GIA_TRANSLATOR_UNIQUE_CONCATENATION_TYPES //GIA2m2a
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_OF_AS_POSSESSIVE_FOR_SUBSTANCES_PLURAL_GOVERNOR //GIA2m1b
//#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_QUALITIES //added GIA2m1a, disabled GIA2m1c, removed GIA3a1a
#define GIA_TRANSLATOR_INTERPRET_OF_AS_DEFINITION_FOR_SUBSTANCES_PROPERNOUN_DEPENDENT //GIA2m1c
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_DISABLE_PROPERTIES_OR_DEFINITIONS //GIA2m1a/b
#ifndef GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_DISABLE_SUBCLASSES
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES //disabled GIA3a1a //GIA2m1c - create subclasses based on prenominal modifiers (eg toyshop:shop), or add alias (eg "the planet Earth")
#endif
#ifdef GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES_ENABLE_INCONSISTENT_REFERENCING //GIA2m4a //eg The fruit is an apple. The apple fruit is happy.
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES_ARTIFICAL_ENTITY_INDEX (-1) //GIA2m5a
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES_DISABLE_REFERENCING_OF_SUBCLASS_ARTIFICIAL_ENTITIES //GIA2m5a
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_SUBCLASSES_DETECT_USER_DECLARED_SUBCLASS_ENTITIES //GIA2m6a
#endif
#ifdef GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_DISABLE_PROPERTIES_OR_DEFINITIONS
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_ENSURE_DEPENDENT_IS_NOT_ASSIGNED_CONCEPT //CHECKTHIS
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2l_CODE
#define GIA_REFERENCING_WILD_CARDS //GIA2l3a //interpret something/anything entities as GIA wild card - affects both GIA advanced referencing and queries
#ifdef GIA_REFERENCING_WILD_CARDS
#define GIA_REFERENCING_WILD_CARDS_SUBSTANCES_NUMBER_OF_TYPES (2)
#define GIA_REFERENCING_WILD_CARDS_ACTIONS_NUMBER_OF_TYPES (1)
static string giaReferencingWildCardSubstanceArray[GIA_REFERENCING_WILD_CARDS_SUBSTANCES_NUMBER_OF_TYPES] = {"something", "anything"};
static string giaReferencingWildCardActionArray[GIA_REFERENCING_WILD_CARDS_ACTIONS_NUMBER_OF_TYPES] = {"do"};
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2k_CODE
//#ifdef GIA_SEM_REL_TRANSLATOR_SUBSETS //has not yet been defined
#ifndef GIA_POS_REL_TRANSLATOR_HYBRID_LOGIC_REFERENCE //logic reference preprocessor already splits/processes conjunctions
//#define GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISE_BASED_ON_CONJUNCTIONS //GIA2k1a [UNTESTED] //NB training a connectionist network with this optimisation requires the NLP to directly connect the primary entity (object) in each subphrase to the subject, with the conjunction relations being auxiliary to these connections (not supported by Stanford Parser/CoreNLP at present; to implement a workaround see NLC removeRedundantConditionConjunctions/addConjunctionsConnectedToConditionConjunctionObject for related code)
#endif
//#define GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE //GIA2k3a //optionally disabled 3a4a for user friendly output format
#ifdef GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE
//#define GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS_UNOPTIMISED_TEXT_CORPUS //for offline reimplementions of GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE only
#define GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE_EXTENSIVE //added 2k3d; record semantic relation tuple files for all non-existant relations
#ifdef GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE_EXTENSIVE
//#ifdef GIA_SEM_REL_TRANSLATOR_SUPPORT_BOTH_FAST_CORPUS_LOOKUP_PATH_AND_SLOW_SYNTACTIC_RULE_BASED_PATH //has not yet been defined
#define GIA_SEM_REL_TRANSLATOR_SUBSETS_EXPECT_TO_FIND_DATABASE_FILES_FOR_ALL_FEATURE_PERMUTATIONS //added GIA2k3d
//#endif
#endif
#else
#define GIA_SEM_REL_TRANSLATOR_SUBSETS_UNOPTIMISED_TEXT_CORPUS //original GIA2 implementation: semantic relation designation based on text corpus lookup (indexed by POS permutation)
#ifdef GIA_SEM_REL_TRANSLATOR_SUBSETS_UNOPTIMISED_TEXT_CORPUS
#define GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS_UNOPTIMISED_TEXT_CORPUS
//#ifdef GIA_SEM_REL_TRANSLATOR_SUPPORT_BOTH_FAST_CORPUS_LOOKUP_PATH_AND_SLOW_SYNTACTIC_RULE_BASED_PATH //has not yet been defined
#define GIA_SEM_REL_TRANSLATOR_SUBSETS_EXPECT_TO_FIND_DATABASE_FILES_FOR_ALL_FEATURE_PERMUTATIONS //added GIA2k3d
//#endif
#endif
#endif
#ifdef GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS_UNOPTIMISED_TEXT_CORPUS
//#define GIA_SEM_REL_TRANSLATOR_CONNECTIONIST_NETWORK_USE_TEXT_CORPUS_FOR_TEMP_RELATION_DATA_STORAGE //original GIA2 implementation //disabled GIA2k3a
//#define GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS_UNOPTIMISED_TEXT_CORPUS_OLD //disabled GIA2k3d
#endif
//#endif
#ifdef GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_INTO_A_PROPERTY_BASIC_RECORD_AUX_INFO
#define GIA_RECORD_POSSESSION_AUXILIARY_HAS_INFORMATION //added GIA2k3a //supported by GIA2 including GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE (unlike GIA_RECORD_RCMOD_SET_INFORMATION) //only required to identify subject (primary entity holding math value) in nlp parsable phrase?
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2j_CODE
#define GIA_STANFORD_PARSER_AND_CORENLP_VERSION_2015_04_20_OR_GREATER //takes into account changes in dependency relations generated by Stanford
#ifdef GIA_STANFORD_PARSER_AND_CORENLP_VERSION_2015_04_20_OR_GREATER
#define GIA_STANFORD_PARSER_VERSION_2015_04_20_BUG_FAILURE_TO_PARSE_SHORT_POSSESSIVE_CASES //eg "The dog's value."
#endif
#define GIA_STANFORD_PARSER_AND_CORENLP_VERSION_2014_04_04_OR_GREATER
#define GIA_SYN_REL_TRANSLATOR_DYNAMICALLY_LINK_FROM_CONDITIONS //added GIA2j4a
#ifdef GIA_SYN_REL_TRANSLATOR_DYNAMICALLY_LINK_FROM_CONDITIONS
//#define GIA_DYNAMICALLY_LINK_FROM_CONDITIONS_GENERALISE_ACTION_TYPES //disabled 2j13b (to only support move function; this supports use of from conditions in other contexts)
#define GIA_STANFORD_PARSER_CONNECT_TO_CONDITION_TO_FROM_CONDITION_BUG_GIA_WORKAROUND
#ifdef GIA_STANFORD_PARSER_CONNECT_TO_CONDITION_TO_FROM_CONDITION_BUG_GIA_WORKAROUND
//#define GIA_STANFORD_PARSER_CONNECT_TO_CONDITION_TO_FROM_CONDITION_BUG_GIA_WORKAROUND_GENERALISE_ACTION_TYPES //GIA2j7a, disabled GIA2j15b for special cases, eg "Given the nature of the bank, write the letter."
#define GIA_STANFORD_PARSER_CONNECT_TO_CONDITION_TO_FROM_CONDITION_BUG_GIA_WORKAROUND_GENERALISE_CONDITION_TYPES //GIA2j7a
#endif
//#define GIA_STANFORD_PARSER_CONNECT_PREPOSITIONS_TO_ACTION_RATHER_THAN_ACTION_OBJECT_GENERALISE_ACTION_TYPES //added GIA2j7a, disable 2j10a for backwards compatibility in GIA output (NB does not improve grammatical correctness of translation, as it just parses that which is ambiguous differently)
//#define GIA_SYN_REL_TRANSLATOR_LINK_ACTION_CONDITIONS_CORRECT_SAME_REFERENCE_SET //GIA2j7a, disabled GIA2j14a for NLC compatibility
//#define GIA_DYNAMICALLY_LINK_FROM_CONDITIONS_ONLY_ACCEPT_AT_CONDITIONS //not coded
#define GIA_STANFORD_PARSER_CONNECT_PREPOSITIONS_TO_ACTION_OBJECT_RATHER_THAN_ACTION //GIA2j7a //eg "Move the bike near the car." - note this case is ambigious - note stanford connects the "near" preposition to the car object (instead of the move action)
#endif
#define GIA_DYNAMICALLY_LINK_ENTITIES_DISABLE_GIA_SEM_REL_TRANSLATOR_SEMANTIC_RELATION_GENERATION //GIA2j5b
//#define GIA_SEM_REL_TRANSLATOR_CREATE_FEATURES_FOR_ARTIFICIAL_ENTITIES //depreciated GIA3f1a //considered for GIA2j5a but rejected //this method is broken as of GIA3b4a and requires reimplementation
#ifndef GIA_SEM_REL_TRANSLATOR_CREATE_FEATURES_FOR_ARTIFICIAL_ENTITIES
#define GIA_SEM_REL_TRANSLATOR_CORRECT_POSTAGS_FIX1 //GIA2j5a
#define GIA_SEM_REL_TRANSLATOR_CORRECT_POSTAGS_FIX2 //GIA2j5d
#endif
#ifndef GIA_RECORD_POSSESSION_AUXILIARY_HAS_INFORMATION
//#define GIA_RECORD_RCMOD_SET_INFORMATION //added GIA2j8a, disabled GIA2k3a (not supported by GIA_SEM_REL_TRANSLATOR_SUBSETS_OPTIMISED_DATABASE), no longer supported GIA2l5b //was only required to identify subject (primary entity holding math value) in nlp parsable phrase, but possessionAuxiliaryHave is now used for this purpose //originally implemented 2i16a but rejected
#endif
#endif
#ifndef GIA_DEBUG_DISABLE_2g_CODE
#define GIA_TRANSLATOR_NUMBER_OF //added 2g9a/24-September-2014
#ifdef USE_NLC
#define GIA_NLC_INTEGRATION //GIA uses NLCpreprocessorSentence code
#ifdef GIA_NLC_INTEGRATION
#define GIA_NLC_INTEGRATION_DISABLE_ADVANCED_REFERENCING_FOR_LOGICAL_CONDITIONS_CONCEPTS //added GIA2i24a
#endif
#endif
#ifdef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_DISABLE_ALIAS_ENTITY_MERGING //added GIA2g11a/21-October-2014 - required for NLC1k14a+ //IMPORTANT: when activating/deactivating from compilation, ensure GIArules.xml is updated accordingly (search for "GIA_DISABLE_ALIAS_ENTITY_MERGING")
//#define GIA_TRANSLATOR_DREAM_MODE_CREATE_AND_LINK_NON_SPECIFIC_CONCEPTS_FOR_ALL_ENTITIES //untested and unused
#ifdef GIA_NLC_INTEGRATION
//#define GIA_NLC_INTEGRATION_DISABLE_ADVANCED_REFERENCING_FOR_LOGICAL_CONDITIONS //added GIA2i31a, disabled GIA2k7a
#endif
#else
#ifdef GIA_NLC_INTEGRATION
#define GIA_NLC_INTEGRATION_DEFINE_REFERENCE_CONTEXT_BY_TEXT_INDENTATION //added GIA2g10a/17-October-2014 //requires NLC preprocessor to be executed to extract text indentation, NLCpreprocessorSentenceClass.h, and setNLCsentence() to be called before executing GIA
#endif
#endif
#define GIA_STORE_CONNECTION_SENTENCE_INDEX //mandatory GIA3a1a //added GIA2f15d/16-July-2014 [required for NLC 1g15a+]
#define GIA_SYN_REL_TRANSLATOR_REMOVE_REDUNDANT_LOGICAL_CONDITION_ENTITIES //added GIA2f13a/14-July-2014
#define GIA_XML_RECORD_ADDITIONAL_VARIABLES
#endif
#define GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES //mandatory as of GIA3a1a //2a7a
#ifndef GIA_DEBUG_DISABLE_2i_CODE
//#ifdef GIA_SYN_REL_TRANSLATOR_INTERPRET_OF_AS_POSSESSIVE_FOR_SUBSTANCES //defined out of scope
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_OF_AS_POSSESSIVE_FOR_SUBSTANCES_PLURAL_DEPENDENT //added GIA2i7e
//endif
#define GIA_PREDETERMINERS //added GIA2i34a
#define GIA_PREVENT_CONCEPTS_FROM_BEEN_ADDED_AS_CHILDREN_OF_NON_CONCEPTS //GIA2i20a
#ifdef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING_ONLY //GIA2i19c //NB this requires !GIA_QUERY_TRACE_NETWORK_INDEX_NODES_DEFINING_INSTANTIATIONS //designed for GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES
#ifdef GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING_ONLY
#define GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING //GIA2i19e
#endif
#else
#define GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING //GIA2i19e
#endif
#ifndef GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING
#define GIA_TRANSLATOR_DREAM_MODE_LINK_SPECIFIC_CONCEPTS_AND_ACTIONS_ADVANCED //GIA2i19a, disabled GIA2i27a
#endif
#define GIA_SYN_REL_TRANSLATOR_CONVERT_AMOD_WITH_NUMBERS_TO_QUANTITY_RELATION //GIA2i12a
#define GIA_TRANSLATOR_DO_NOT_CREATE_CONCEPT_PROPERTIES_FOR_NON_CONCEPT_PARENTS //GIA2i10a
#ifdef GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES
#ifndef GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_DISABLE_PROPERTIES_OR_DEFINITIONS
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_OR_DEFINITIONS_DYNAMICALLY_LINK_PRENOMINAL_MODIFIERS_OF_NOUNS //disabled GIA2m1a //GIA2i9a //requires GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES (this is required such that only the instance list of a networkIndex need be parsed when tracing both its definitions and properties/conditions)
#endif
#ifdef GIA_SYN_REL_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_OR_DEFINITIONS_DYNAMICALLY_LINK_PRENOMINAL_MODIFIERS_OF_NOUNS
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_OR_DEFINITIONS_DYNAMICALLY_LINK_PRENOMINAL_MODIFIERS_OF_NOUNS_SWITCH_DEFINITION_LINKS_IF_NON_MATCHING_CONCEPTS //GIA2i10b - designed to enable compatibility with NLC
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_OR_DEFINITIONS_DYNAMICALLY_LINK_PRENOMINAL_MODIFIERS_OF_NOUNS_ENSURE_PROPERTY_PARENT_IS_DEFINITE //GIA2i28a
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_OR_DEFINITIONS_DYNAMICALLY_LINK_PRENOMINAL_MODIFIERS_OF_NOUNS_ENSURE_PROPERTY_PARENT_IS_CONCEPT_IF_NECESSARY //GIA2i30a
#endif
#endif
#define GIA_REFERENCING_QUERY_SUPPORT_SAME_REFERENCE_SET_TESTS //GIA2i6a
#define GIA_FEATURE_POS_TAG_NN_ONLY_MARK_AS_SINGULAR_WITH_DETERMINER //GIA2i5a
#define GIA_EXTRA_DETERMINERS //added GIA2i2a
#endif
#ifndef GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING
#define GIA_CREATE_NEW_CONCEPT_FOR_EVERY_REFERENCE_TO_A_CONCEPT //GIA2a10a //disabled GIA2i19b
#endif
#ifndef GIA_DEBUG_DISABLE_2h_CODE
#define GIA_SPATIOTEMPORAL_NETWORK //yet to implement ~GIA2h2a/17-November-2014+
#ifdef GIA_SPATIOTEMPORAL_NETWORK
#define GIA_ACTIONS_OF_ACTIONS
#ifdef GIA_ACTIONS_OF_ACTIONS
#ifndef LRP_PREPROCESSOR_GRAMMATICALLY_STRICT_VERB_VARIANTS_ONLY
#define GIA_NONSTANDARD_INTERMEDIARY_VERB_TYPES
#endif
#ifdef GIA_NONSTANDARD_INTERMEDIARY_VERB_TYPES
#define GIA_FEATURE_POS_TAG_VERB_POTENTIAL //added GIA2h2a/18-November-2014 - required for NLC1m2a+ - adds new non-standard pos tag for "able" words
#ifdef GIA_FEATURE_POS_TAG_VERB_POTENTIAL
#define GIA_FEATURE_POS_TAG_VERB_POTENTIAL_INVERSE //added GIA2h2c/18-November-2014 - required for NLC1m2a+ - adds new non-standard pos tag for "ive" words
#endif
#define GIA_FEATURE_POS_TAG_VERB_STATE //added GIA2h2b/18-November-2014 - required for NLC1m2a+ - adds new non-standard pos tag for states "eg open/opened" words
#define GIA_FEATURE_POS_TAG_VERB_DESCRIPTION //added GIA2h2d/18-November-2014 - required for NLC1m2a+ - adds new non-standard pos tag for states "eg ion/ment" words
#endif
#endif
#endif
#define GIA_INITIALISE_PREPOSITION_ENTITIES_AT_START_OF_TRANSLATOR_NEW //mandatory GIA3a1a //added 2h1c/14-November-2014 - required for NLC1m1a+
#endif
#define GIA_GRAMMAR_IMPERATIVE_DETECTION //GIA2e1a //required to distinguish action concepts from infinitive cases
//#define GIA_ENABLE_WARNINGS
#define GIA_TRANSLATOR_ONLY_MERGE_ENTITY_NODES_WHEN_LINK_PREESTABLISHED_REFERENCES_GIA //disabled GIA2c3c [for GIA_SEM_REL_TRANSLATOR_GENERATE_EXPERIENCES_FOR_CONNECTIONIST_NETWORK_TRAIN], upgraded and reenabled GIA3c4b
#define GIA_SYN_REL_TRANSLATOR_NON_STANDARD_CONDITION_CONDITION_CONNECTIONS_CONNECT_CONJUNCTIONS_TO_THEIR_RELEVANT_PREPOSITIONS //required for USE_NLC
//#ifndef GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_INTO_A_PROPERTY_BASIC //requirement removed GIA2o6a
#define GIA_INITIALISE_PREPOSITION_ENTITIES_AT_START_OF_TRANSLATOR //mandatory GIA3a1a //assumes GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES is true (why is this required?)
#ifdef GIA_INITIALISE_PREPOSITION_ENTITIES_AT_START_OF_TRANSLATOR
#define GIA_SET_ENTITY_ENTITY_AND_SENTENCE_INDICIES_NORMALLY //mandatory GIA3a1a //this is required for !GIA_TRANSLATOR_ONLY_MERGE_ENTITY_NODES_WHEN_LINK_PREESTABLISHED_REFERENCES_GIA //verify this still works with GIA_TRANSLATOR_ONLY_MERGE_ENTITY_NODES_WHEN_LINK_PREESTABLISHED_REFERENCES_GIA
#endif
//#endif
#ifndef GIA_ADD_ARTIFICIAL_AUXILIARY_FOR_ALL_PROPERTIES_AND_DEFINITIONS
#define GIA_TRANSLATOR_TRANSFORM_THE_ACTION_OF_BEING_EG_BEING_INTO_A_DEFINITION_BASIC //removed GIA3a1a
#endif
#ifdef LRP_PREPROCESSOR_WORD_REDUCE_QUOTES_TO_SINGLE_WORDS
#define GIA_ASSUME_QUOTES_HAVE_BEEN_REDUCED_TO_SINGLE_WORDS //added GIA2i36a
#endif
#ifdef GIA_SEM_REL_TRANSLATOR
#define GIA_SEM_REL_TRANSLATOR_COMMON
#define GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS
#define GIA_SEM_REL_TRANSLATOR_READ_SEMANTIC_RELATIONS //GIA2b1a - sets GIA into semantic parser (OLD: corpus) read mode
#ifdef GIA_SEM_REL_TRANSLATOR_READ_SEMANTIC_RELATIONS
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_BOTH_FAST_CORPUS_LOOKUP_PATH_AND_SLOW_SYNTACTIC_RULE_BASED_PATH
#ifdef GIA_SEM_REL_TRANSLATOR_SUPPORT_BOTH_FAST_CORPUS_LOOKUP_PATH_AND_SLOW_SYNTACTIC_RULE_BASED_PATH
#ifdef GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS
#define GIA_SEM_REL_TRANSLATOR_GENERATE_EXPERIENCES_FOR_CONNECTIONIST_NETWORK_TRAIN
#endif
#else
#define GIA_SEM_REL_TRANSLATOR_DO_NOT_PARSE_DEPENDENCY_RELATION_FILE
//#define GIA_SEM_REL_TRANSLATOR_PARSE_PARTIALLY_FILLED_SEMANTIC_RELATIONS
#endif
#else
//this compilation is for development purposes only:
#ifdef GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS
#define GIA_SEM_REL_TRANSLATOR_GENERATE_EXPERIENCES_FOR_CONNECTIONIST_NETWORK_TRAIN
#ifdef GIA_SEM_REL_TRANSLATOR_GENERATE_EXPERIENCES_FOR_CONNECTIONIST_NETWORK_TRAIN
//#define GIA_RECORD_LINK_PREESTABLISHED_REFERENCES_GIA
#endif
#define GIA_ADVANCED_REFERENCING_DISABLE_LINKING //do not link references when generating semantic relation text corpus
#endif
#endif
#define GIA_SEM_REL_TRANSLATOR_RECORD_DETERMINERS_AS_DEFINITE_INDEFINITE_SPECIFIC
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES
#ifdef GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES
//new implementation of GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_QVAR_AND_IS_QUERY_TAG_TAG_NAME "_$qVarisQuery"
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_QVAR_AND_IS_NAME_QUERY_TAG_TAG_NAME "_$qVarisNameQuery"
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_QVAR_AND_IS_WHICH_OR_EQUIVALENT_WHAT_QUERY_TAG_TAG_NAME "_$qVarisWhichOrEquivalentWhatQuery"
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_IS_QUERY_TAG_TAG_NAME "isQuery"
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_IS_NAME_QUERY_TAG_TAG_NAME "isNameQuery"
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_QUERIES_SPECIAL_SEMANTIC_RELATION_IS_WHICH_OR_EQUIVALENT_WHAT_QUERY_TAG_TAG_NAME "isWhichOrEquivalentWhatQuery"
#endif
#define GIA_SEM_REL_TRANSLATOR_SUBSETS //GIA2d1a //switches between just using the primary sentence files generated by GIA_SEM_REL_TRANSLATOR_WRITE_SEMANTIC_RELATIONS_UNOPTIMISED_TEXT_CORPUS and the subset sentence files generated by either
#ifdef GIA_SEM_REL_TRANSLATOR_SUBSETS
#define GIA_RECORD_MAXIMUM_NUMBER_OF_WORDS_IN_SENTENCE //NB numberOfWordsInSentence is only currently used by GIA2
#define GIA_SEM_REL_TRANSLATOR_DATABASE_FILESYSTEM_USE_FLAT_FILE //temporarily enabled for debugging
#define GIA_SEM_REL_TRANSLATOR_CONNECTIONIST_NETWORK_MIN_SUBSET_SIZE (2) //ie 2 words in subset is the minimimum //CHECKTHIS
#else
#define GIA_SEM_REL_TRANSLATOR_DATABASE_FILESYSTEM_USE_FLAT_FILE
#endif
#ifdef GIA_SEM_REL_TRANSLATOR_GENERATE_EXPERIENCES_FOR_CONNECTIONIST_NETWORK_TRAIN
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_USE_RELEX_COMPATIBILITY_MODE_FOR_FEATURE_PARSER_TO_GENERATE_ADDITIONAL_RELATIONS_REQUIRED_BY_GIA2
#elif defined GIA_SEM_REL_TRANSLATOR_SUBSETS
#define GIA_SEM_REL_TRANSLATOR_SUPPORT_USE_RELEX_COMPATIBILITY_MODE_FOR_FEATURE_PARSER_TO_GENERATE_ADDITIONAL_RELATIONS_REQUIRED_BY_GIA2 //this is required as semantic relations from multiple corpus files may be required to properly parse a sentence [if a single corpus file does not exist for the entire sentence]
#endif
#endif
#define GIA_RECORD_MAXIMUM_NUMBER_OF_WORDS_IN_SENTENCE_OR_MAX_FEATURE_INDEX //created GIA2d1a, enabled GIA3b4a //OLD: numberOfWordsInSentence is only currently used by GIA2
#ifdef GIA_RECORD_MAXIMUM_NUMBER_OF_WORDS_IN_SENTENCE_OR_MAX_FEATURE_INDEX
#define GIA_RECORD_MAXIMUM_NUMBER_OF_WORDS_IN_SENTENCE
//#define GIA_RECORD_MAX_FEATURE_INDEX //extracts maximum number of words from dependency relation indicies (not robust and not required)
#endif
//variables currently being tested (3a4a+)
#define GIA_RELEX_FIX_DO_NOT_ASSIGN_DEFINITE_IF_UNCOUNTABLE
//variables currently being tested (2a1a+)
#define GIA_SYN_REL_TRANSLATOR_SUPPORT_CSUB_AND_COP_GENERATE_ADJECTIVES
//variables currently being tested (1q1a+)
#define GIA_TRANSLATOR_DREAM_MODE_LINK_SPECIFIC_CONCEPTS_AND_ACTIONS //required for NLC
#define GIA_QUERY_SIMPLIFIED_SEARCH
#define GIA_QUERY_SIMPLIFIED_SEARCH_REPLACE_ADVANCED_SEARCH
//#define GIA_QUERY_SIMPLIFIED_SEARCH_ENFORCE_EXACT_MATCH //depreciated (see GIA_QUERY_SIMPLIFIED_SEARCH_ENFORCE_EXACT_MATCH_CONCEPTS)
//variables currently being tested (1t1a+)
#define GIA_TRANSLATOR_XML_INTERPRETATION
//#define GIA_TEMPORARY_COMPILATION_GCC_FLAG_E_PREPROCESS_TRANSLATOR_XML_FILES //for use with compileGIAstopAfterPreprocessingXML.bat only: g++ -E GIAmain.cpp GIAparser.cpp GIAtranslator.cpp GIAtranslatorGrammar.cpp GIAtranslatorReferencing.cpp GIAsynRelTranslatorRedistributeRelationsStanford.xml GIAsynRelTranslatorRedistributeRelationsRelex.xml GIAsynRelTranslatorDefineSubstances.xml GIAsynRelTranslatorLinkEntities.xml GIAsynRelTranslatorApplyAdvancedFeatures.xml GIAtranslatorOperations.cpp GIAentityNodeClass.cpp GIAentityConnectionClass.cpp GIAconditionNodeClass.cpp GIAsentenceClass.cpp GIAdraw.cpp GIAxmlConversion.cpp GIAcxlConversion.cpp GIAquery.cpp GIAdatabase.cpp GIAnlp.cpp GIAwordnet.cpp GIAnlg.cpp LRPpreprocessorWordIdentification.cpp GIAbot.cpp XMLparserClass.cpp XMLrulesClass.cpp LDsvg.cpp LDopengl.cpp LDparser.cpp LDsprite.cpp LDreferenceManipulation.cpp LDreferenceClass.cpp RToperations.cpp RTparser.cpp RTpixelMaps.cpp RTppm.cpp RTraytracer.cpp RTreferenceManipulation.cpp RTscene.cpp RTviewinfo.cpp SHAREDglobalDefs.cpp SHAREDvector.cpp SHAREDvars.cpp
//#define GIA_DO_NOT_USE_UNTESTED_BUGFIX_REGARDING_grammaticalDefiniteIndexOfDeterminerTemp //GIA1t6b
#define GIA_SPECIFIC_ACTION_NETWORK_INDEXES
#define GIA_SYN_REL_TRANSLATOR_WORKAROUND_RELEX_BUG_OCCASIONAL_QVAR_INDEX_SAME_AS_ANOTHER_RELATION_INDEX
#define GIA_GENERIC_ENTITY_INTERPRETATION //mandatory GIA3a1a //GIA1t6b
#define GIA_GENERIC_DEPENDENCY_RELATION_INTERPRETATION //mandatory GIA3a1a
#ifdef GIA_GENERIC_DEPENDENCY_RELATION_INTERPRETATION
#define GIA_SYN_REL_TRANSLATOR_GENERIC_DEPENDENCY_RELATION_INTERPRETATION_REDISTRIBUTION //1t1a (tested 1ttd, tested with generalised link entity preparation generalised redistribution modifications GIA1t2m)
#define GIA_GENERIC_DEPENDENCY_RELATION_INTERPRETATION_LINK //GIA1t2a (tested GIA1t3a)
#define GIA_GENERIC_DEPENDENCY_RELATION_INTERPRETATION_SUBSTANCES //GIA1t2b (tested GIA1t3a)
#endif
#define GIA_DEPENDENCY_RELATIONS_TYPE_RELEX_PARSE_QUESTIONS_IN_NON_QUERY_INPUTTEXT //allows questions to be properly parsed during relation redistribution when they are added to inputText also (instead of just inputTextQuery)
//#define GIA_WARNINGS
//variables currently being tested (1s1a+)
#define GIA_STANFORD_CORE_NLP_VERSION_2013_04_04_OR_GREATER //disable this if using previously tested version of Stanford CoreNLP (stanford-corenlp-2012-04-03)
#define GIA_TRANSLATOR_REDISTRIBUTE_RELATIONS_WORKAROUND_STANFORD_BUG_SINGLE_DIGIT_TIMES_MARKED_AS_ADJECTIVE
#define GIA_1S8D_LOW_PRI_RELEX_UPDATE_CHECK_THAT_IT_DOESNT_BREAK_STANFORD_OPTIMISATION_APPLY_FIX_TO_IS_NAME_QUERY_PROPOGATION
//#define GIA_SYN_REL_TRANSLATOR_ADD_INTERPRETION_OF_IN_AS_POSSESSIVE_FOR_SUBSTANCES //disabled in GIA 1s10d due to misinterpretation of "in" in "Apples are used for eating in the forest."
//variables currently being tested (1r1a+)
#define GIA_BOT
#ifdef GIA_BOT
#define GIA_BOT_SWITCH_FIRST_AND_SECOND_PERSON //Switch "you for I" (and vice versa)
#endif
#define GIA_QUERY_DO_NOT_SEARCH_DISABLED_NODES
#define GIA_SYN_REL_TRANSLATOR_REDISTRIBUTE_STANFORD_RELATIONS_EXPLITIVES
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_CLAUSAL_COMPLEMENT_AS_ACTION_OBJECT_INSTEAD_OF_ACTION_PROPERTY //added to bring Stanford back into line with Relex: eg He says that you like to swim / ccomp(say, like) -> obj(say, like), Moses knew I was angry. / ccomp(knew-2, angry-5) -> obj(knew-2, angry-5
#define GIA_SYN_REL_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_TAKE_DEPENDENT_AS_PROPERTY_INSTEAD_OF_GOVERNOR //interpret "toy"/"red" as property of "shop"/"dog" (originally "shop"/"dog" was interpreted as property of "toy"/"red")
#ifdef GIA_SYN_REL_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_TAKE_DEPENDENT_AS_PROPERTY_INSTEAD_OF_GOVERNOR
#define GIA_TRANSLATOR_INTERPRET_PRENOMINAL_MODIFIER_PROPERTIES_DEFINE_NOUNS_WITH_PRENOMINAL_MODIFIERS_AS_SUBSTANCES //redundant with GIA_CREATE_NON_SPECIFIC_CONCEPTS_FOR_ALL_NETWORK_INDEXES //only enable this when "toy" is property of "shop" (ie do not enable this when "shop" is property of "toy")
#endif
//variables currently being tested (1q1a+)
#define GIA_SPECIFIC_CONCEPTS //added 1q4a to take into account specific networkIndexes eg 'red bears' as opposed to 'bears' //eg Red dogs are bad animals. / A blue chicken is a happy bird.
#ifdef GIA_SPECIFIC_CONCEPTS
//#define GIA_SPECIFIC_CONCEPTS_ASSIGN_TO_PROPERNOUNS //added 1q10a [activated 1q10c] //removed GIA1t2d
//#define GIA_SPECIFIC_CONCEPTS_ASSIGN_TO_PRONOUNS //added 1q10a [activated 1q10c] //removed GIA1s8c //check this does not undo advanced referencing/quering...
#endif
//NB the phrase 'concept'/'substance quality' is a misnomer, as networkIndexes and qualities are not really substances [NB networkIndexes are considered secondary substances in Aristotle's categories, but GIA has a separate Entity class for networkIndexes marked by isNetworkIndex: which is confusingly not being used in this case of 'specific networkIndexes' - a software development/history artefact]" << endl;
//variables currently being tested (1p1a+)
#define STANFORD_CORENLP_DISABLE_INDEPENDENT_POS_TAGGER_WHEN_PARSING_DEPENDENCY_RELATIONS //added 22 Sept to enable Stanford CoreNLP to be used to parse dependency relations with comparable (NOT: same) accuracy as stanford parser (ie when stanford CoreNLP is set as both relation and feature parser)
#ifndef GIA_DEBUG_DISABLE_2i_CODE
#ifndef GIA_SEM_REL_TRANSLATOR //NB GIA2 doesn't support STANFORD_PARSER_USE_POS_TAGS (because the semantic relations word types being written must match those being read [and read can only use feature parser])
#define STANFORD_PARSER_USE_POS_TAGS //added 23 July 2012 to support Stanford Parser POS tags instead of Stanford CoreNLP POS tags (Stanford Parser POS tags are sometimes more accurate than Stanford CoreNLP POS tags)
#endif
#ifndef STANFORD_PARSER_USE_POS_TAGS
#define STANFORD_CORENLP_POS_TAGS_BUG_GIA_WORKAROUND_SET_DETERMINER_DEPENDENT_TO_NOUN //added GIA2i2b - eg "a human" in "A human is a player." should always be interpreted as a noun
#endif
#endif
#define GIA_APPLY_BUG_WORKAROUND_WHERE_A_NETWORK_INDEX_ENTITY_OF_INSTANCE_0_CAN_HAVE_NODE_DEFINING_INSTANCE
#define GIA_INPUT_FILE_LISTS
#define GIA_INCONSISTENCY_BETWEEN_STANFORD_PARSER_AND_STANFORD_CORENLP_PARSING_OF_CONSECUTIVE_FULL_STOPS
//#define GIA_QUERIES_MUST_BE_QUESTIONS //disabled 30 June 2012
//variables currently being tested (1o1a+)
#define GIA_ALIASES
#ifdef GIA_ALIASES
#define GIA_MORE_THAN_ONE_NODE_DEFINING_AN_INSTANCE //NB this is required for advanced referencing to work properly with specific cases of aliasing eg; The name of the red dog is Tom. Tom ate a bone near the house.
#define GIA_ALIASES_RELEX_COMPATIBILITY
#endif
#define GIA_TEMPORARILY_DISABLE_GIA_XML_READ_CHECKS
#ifdef GIA_NLG
#define GIA_NLG_OUTPUT_TO_COMMAND_LINE
#define GIA_WORD_ORIG //NB wordOrig is now used by more than just NLG (it is also used by LRP)
#endif
//variables currently being tested (1n1a+)
#define GIA_DATABASE //requires further testing
#ifdef GIA_DATABASE
#define GIA_DATABASE_TEST_MODE_LOAD_ALL_ENTITIES_AND_CONNECTIONS_TO_ACTIVE_LIST_UPON_READ //enable this for debugging only - not required for GIA
#define GIA_DATABASE_DO_NOT_WRITE_DISABLED_ENTITY_NODES //added 29 Nov 2012
#ifdef GIA_DATABASE_DO_NOT_WRITE_DISABLED_ENTITY_NODES
#define GIA_DATABASE_DO_NOT_WRITE_CONNECTIONS_TO_DISABLED_ENTITY_NODES //added 29 Nov 2012
#else
//#define GIA_DATABASE_DO_NOT_WRITE_CONNECTIONS_TO_DISABLED_ENTITY_NODES //optional to enable disbled node i/o without recording their connections
//#define GIA_DATABASE_DO_NOT_WRITE_CONNECTIONS_FROM_DISABLED_ENTITY_NODES //optional to enable disbled node i/o without recording their connections
#endif
#define GIA_DATABASE_FILESYSTEM
//#define GIA_DATABASE_ALWAYS_LOAD_NETWORK_INDEX_NODE_REFERENCE_LISTS
#define GIA_DATABASE_CLEAR_CACHE_EVERY_SENTENCE
#endif
#define GIA_SEMANTIC_NET_DO_NOT_WRITE_DISABLED_ENTITY_NODES //added 29 Nov 2012 (this cannot be used at present as <entityNode> idActiveList values must be consecutive in xml file)
#ifdef GIA_SEMANTIC_NET_DO_NOT_WRITE_DISABLED_ENTITY_NODES
#define GIA_SEMANTIC_NET_DO_NOT_WRITE_CONNECTIONS_TO_DISABLED_ENTITY_NODES //added 29 Nov 2012
#else
//#define GIA_SEMANTIC_NET_DO_NOT_WRITE_CONNECTIONS_TO_DISABLED_ENTITY_NODES //optional to enable disbled node i/o without recording their connections
//#define GIA_SEMANTIC_NET_DO_NOT_WRITE_CONNECTIONS_FROM_DISABLED_ENTITY_NODES //optional to enable disbled node i/o without recording their connections
#endif
#define GIA_RECORD_SAME_REFERENCE_SET_INFORMATION //mandatory GIA3a1a //separated from GIA_ADVANCED_REFERENCING GIA2g5a/05 September 2014 //added 2g5a - required for advanced referencing, dream mode (identifyReferenceSetsSpecificConceptsAndLinkWithConcepts{}:identifyReferenceSetDetermineNextCourseOfAction{}:identifyReferenceSet()), and NLC 1j2b+
#ifndef GIA_DISABLE_CROSS_SENTENCE_REFERENCING
#define GIA_ADVANCED_REFERENCING
#endif
#ifdef GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING_ONLY
#define GIA_ADVANCED_REFERENCING
#endif
#ifdef GIA_ADVANCED_REFERENCING
#define GIA_TRANSLATOR_MARK_DOUBLE_LINKS_AS_REFERENCE_CONNECTIONS //added GIA2f21a/20-August-2014 - required for NLC1i2a+, disabled for NLC1j2b+, optional for NLC1k11a+
#define GIA_RECORD_WAS_REFERENCE_INFORMATION
#ifdef USE_NLC
#ifndef GIA_DISABLE_CROSS_SENTENCE_REFERENCING //ie #ifndef GIA_ENABLE_CONCEPT_ADVANCED_REFERENCING_ONLY. Note NLC does not require intrasentence referencing when NLC_USE_ADVANCED_REFERENCING is enabled (ie GIA_DISABLE_CROSS_SENTENCE_REFERENCING is enabled)
#define GIA_ADVANCED_REFERENCING_SUPPORT_INTRASENTENCE_REFERENCING
#endif
#else
#define GIA_ADVANCED_REFERENCING_SUPPORT_INTRASENTENCE_REFERENCING
#endif
#define GIA_ADVANCED_REFERENCING_DO_NOT_REAPPLY_IS_CONCEPT_TO_REFERENCES
#else
//#define GIA_NON_ADVANCED_REFERENCING
#endif
#ifdef GIA_RECORD_SAME_REFERENCE_SET_INFORMATION
#define GIA_IDENTIFY_REFERENCE_SET_NETWORK_INDEX_ENTITY_ENTRANCE_DO_NOT_ENTER_ON_AN_ACTION_NODE //GIA2a8a //this update is required for NLC if statement parsing //this update enforces orginal GIA specification: '//an action is considered by default not to be part of the same reference set as its subject/object (eg "the man fires the bow"). An rcmod /"that" is explicitly required for an action to be considered part of the same reference set as its subject/object (eg "the man that fires the bow...")'
#define GIA_ADVANCED_REFERENCING_IDENTIFY_DEFINITE_SETS_ONLY //this is required considering reference look up of non definite sets is never desired
#ifdef GIA_ADVANCED_REFERENCING_IDENTIFY_DEFINITE_SETS_ONLY
#define GIA_ADVANCED_REFERENCING_IDENTIFY_DEFINITE_SETS_ACCEPT_PROPERNOUNS //added 12 August 2012
#endif
//#define GIA_ADVANCED_REFERENCING_FIND_SUBJ_OBJ_RELATION_MATCHING_AUXILIARY_AND_SET_NOT_SAME_REFERENCE_SET
#define GIA_ADVANCED_REFERENCING_SEARCH_CODE
#ifdef GIA_ADVANCED_REFERENCING_SEARCH_CODE
#define GIA_ADVANCED_REFERENCING_ORIGINAL
#define GIA_ADVANCED_REFERENCING_UPDATE //activated GIA3d2c