diff --git a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/DescartesQLParser.java b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/DescartesQLParser.java
index 8028aaf72e2871f4aca3aeb8e962d32fd9100698..86b297e9c31fe999ff4e073481e06133878001b1 100644
--- a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/DescartesQLParser.java
+++ b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/DescartesQLParser.java
@@ -62,6 +62,7 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 				{
 					put(grammarAccess.getDescartesQLAccess().getQueryAlternatives_0_0(), "rule__DescartesQL__QueryAlternatives_0_0");
 					put(grammarAccess.getGoalAccess().getQueryTypeAlternatives_0_0(), "rule__Goal__QueryTypeAlternatives_0_0");
+					put(grammarAccess.getViolationAccess().getAlternatives(), "rule__Violation__Alternatives");
 					put(grammarAccess.getListQueryAccess().getQueryTypeAlternatives_1_0(), "rule__ListQuery__QueryTypeAlternatives_1_0");
 					put(grammarAccess.getGetQueryAccess().getQueryTapeAlternatives_1_0(), "rule__GetQuery__QueryTapeAlternatives_1_0");
 					put(grammarAccess.getMetricClauseTypeAccess().getAlternatives(), "rule__MetricClauseType__Alternatives");
@@ -90,6 +91,8 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 					put(grammarAccess.getStatisticalAggregateTypeAccess().getAlternatives(), "rule__StatisticalAggregateType__Alternatives");
 					put(grammarAccess.getDescartesQLAccess().getGroup(), "rule__DescartesQL__Group__0");
 					put(grammarAccess.getGoalAccess().getGroup(), "rule__Goal__Group__0");
+					put(grammarAccess.getGenerateSLAConcernAccess().getGroup(), "rule__GenerateSLAConcern__Group__0");
+					put(grammarAccess.getGenerateSLAConcernAccess().getGroup_2(), "rule__GenerateSLAConcern__Group_2__0");
 					put(grammarAccess.getSlaQueryAccess().getGroup(), "rule__SlaQuery__Group__0");
 					put(grammarAccess.getSlaQueryAccess().getGroup_2(), "rule__SlaQuery__Group_2__0");
 					put(grammarAccess.getSloQueryAccess().getGroup(), "rule__SloQuery__Group__0");
@@ -101,7 +104,8 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 					put(grammarAccess.getWeightedSloAccess().getGroup_1(), "rule__WeightedSlo__Group_1__0");
 					put(grammarAccess.getFuzzinessAccess().getGroup(), "rule__Fuzziness__Group__0");
 					put(grammarAccess.getPenaltyAccess().getGroup(), "rule__Penalty__Group__0");
-					put(grammarAccess.getViolationAccess().getGroup(), "rule__Violation__Group__0");
+					put(grammarAccess.getViolationAccess().getGroup_0(), "rule__Violation__Group_0__0");
+					put(grammarAccess.getViolationAccess().getGroup_1(), "rule__Violation__Group_1__0");
 					put(grammarAccess.getListQueryAccess().getGroup(), "rule__ListQuery__Group__0");
 					put(grammarAccess.getGetQueryAccess().getGroup(), "rule__GetQuery__Group__0");
 					put(grammarAccess.getListDoFQueryAccess().getGroup(), "rule__ListDoFQuery__Group__0");
@@ -179,6 +183,12 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 					put(grammarAccess.getGoalAccess().getDofClauseAssignment_4(), "rule__Goal__DofClauseAssignment_4");
 					put(grammarAccess.getGoalAccess().getForClauseAssignment_5(), "rule__Goal__ForClauseAssignment_5");
 					put(grammarAccess.getGoalAccess().getUsingClauseAssignment_6(), "rule__Goal__UsingClauseAssignment_6");
+					put(grammarAccess.getGenerateSLAConcernAccess().getOffsetAssignment_1(), "rule__GenerateSLAConcern__OffsetAssignment_1");
+					put(grammarAccess.getGenerateSLAConcernAccess().getPercentageAssignment_2_1(), "rule__GenerateSLAConcern__PercentageAssignment_2_1");
+					put(grammarAccess.getGenerateSLAConcernAccess().getConstraintClauseAssignment_3(), "rule__GenerateSLAConcern__ConstraintClauseAssignment_3");
+					put(grammarAccess.getGenerateSLAConcernAccess().getDofClauseAssignment_4(), "rule__GenerateSLAConcern__DofClauseAssignment_4");
+					put(grammarAccess.getGenerateSLAConcernAccess().getForClauseAssignment_5(), "rule__GenerateSLAConcern__ForClauseAssignment_5");
+					put(grammarAccess.getGenerateSLAConcernAccess().getUsingClauseAssignment_6(), "rule__GenerateSLAConcern__UsingClauseAssignment_6");
 					put(grammarAccess.getSlaQueryAccess().getTypeAssignment_0(), "rule__SlaQuery__TypeAssignment_0");
 					put(grammarAccess.getSlaQueryAccess().getSlasAssignment_1(), "rule__SlaQuery__SlasAssignment_1");
 					put(grammarAccess.getSlaQueryAccess().getSlasAssignment_2_1(), "rule__SlaQuery__SlasAssignment_2_1");
@@ -194,6 +204,7 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 					put(grammarAccess.getSloAccess().getValueAssignment_4(), "rule__Slo__ValueAssignment_4");
 					put(grammarAccess.getSloAccess().getFuzAssignment_5(), "rule__Slo__FuzAssignment_5");
 					put(grammarAccess.getSloAccess().getPenAssignment_6(), "rule__Slo__PenAssignment_6");
+					put(grammarAccess.getSloAccess().getViolationAssignment_7(), "rule__Slo__ViolationAssignment_7");
 					put(grammarAccess.getWeightedSloAccess().getSloAssignment_0(), "rule__WeightedSlo__SloAssignment_0");
 					put(grammarAccess.getWeightedSloAccess().getWeightAssignment_1_1(), "rule__WeightedSlo__WeightAssignment_1_1");
 					put(grammarAccess.getFuzzinessAccess().getTypeAssignment_0(), "rule__Fuzziness__TypeAssignment_0");
@@ -201,8 +212,8 @@ public class DescartesQLParser extends AbstractContentAssistParser {
 					put(grammarAccess.getPenaltyAccess().getTypeAssignment_0(), "rule__Penalty__TypeAssignment_0");
 					put(grammarAccess.getPenaltyAccess().getValueAssignment_1(), "rule__Penalty__ValueAssignment_1");
 					put(grammarAccess.getPenaltyAccess().getCurrencyAssignment_2(), "rule__Penalty__CurrencyAssignment_2");
-					put(grammarAccess.getPenaltyAccess().getViolationAssignment_3(), "rule__Penalty__ViolationAssignment_3");
-					put(grammarAccess.getViolationAccess().getAmountAssignment_1(), "rule__Violation__AmountAssignment_1");
+					put(grammarAccess.getViolationAccess().getAmountAssignment_0_1(), "rule__Violation__AmountAssignment_0_1");
+					put(grammarAccess.getViolationAccess().getPercentageAssignment_1_1(), "rule__Violation__PercentageAssignment_1_1");
 					put(grammarAccess.getListQueryAccess().getQueryTypeAssignment_1(), "rule__ListQuery__QueryTypeAssignment_1");
 					put(grammarAccess.getListQueryAccess().getFilterClauseAssignment_2(), "rule__ListQuery__FilterClauseAssignment_2");
 					put(grammarAccess.getListQueryAccess().getUsingClauseAssignment_3(), "rule__ListQuery__UsingClauseAssignment_3");
diff --git a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLLexer.java b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLLexer.java
index 99024663cd563177e29800b6fe4aafe34b467221..0a40279e0ad60a2a4032fba9059ec6840afe83ce 100644
--- a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLLexer.java
+++ b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLLexer.java
@@ -24,8 +24,8 @@ public class InternalDescartesQLLexer extends Lexer {
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=4;
-    public static final int RULE_INT=5;
+    public static final int RULE_ID=5;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=8;
     public static final int T__67=67;
@@ -91,7 +91,7 @@ public class InternalDescartesQLLexer extends Lexer {
     public static final int T__72=72;
     public static final int RULE_STRING=7;
     public static final int RULE_SL_COMMENT=9;
-    public static final int RULE_DOUBLE=6;
+    public static final int RULE_DOUBLE=4;
     public static final int T__77=77;
     public static final int T__78=78;
     public static final int T__79=79;
@@ -109,9 +109,13 @@ public class InternalDescartesQLLexer extends Lexer {
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -194,10 +198,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__15;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:14:7: ( 'ADD' )
-            // InternalDescartesQL.g:14:9: 'ADD'
+            // InternalDescartesQL.g:14:7: ( 'EVALUATE' )
+            // InternalDescartesQL.g:14:9: 'EVALUATE'
             {
-            match("ADD"); 
+            match("EVALUATE"); 
 
 
             }
@@ -215,10 +219,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__16;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:15:7: ( 'SUB' )
-            // InternalDescartesQL.g:15:9: 'SUB'
+            // InternalDescartesQL.g:15:7: ( 'ADD' )
+            // InternalDescartesQL.g:15:9: 'ADD'
             {
-            match("SUB"); 
+            match("ADD"); 
 
 
             }
@@ -236,10 +240,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:16:7: ( 'MULTIPLY' )
-            // InternalDescartesQL.g:16:9: 'MULTIPLY'
+            // InternalDescartesQL.g:16:7: ( 'SUB' )
+            // InternalDescartesQL.g:16:9: 'SUB'
             {
-            match("MULTIPLY"); 
+            match("SUB"); 
 
 
             }
@@ -257,10 +261,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:17:7: ( '<' )
-            // InternalDescartesQL.g:17:9: '<'
+            // InternalDescartesQL.g:17:7: ( 'MULTIPLY' )
+            // InternalDescartesQL.g:17:9: 'MULTIPLY'
             {
-            match('<'); 
+            match("MULTIPLY"); 
+
 
             }
 
@@ -277,11 +282,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:18:7: ( '<=' )
-            // InternalDescartesQL.g:18:9: '<='
+            // InternalDescartesQL.g:18:7: ( '<' )
+            // InternalDescartesQL.g:18:9: '<'
             {
-            match("<="); 
-
+            match('<'); 
 
             }
 
@@ -298,10 +302,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:19:7: ( '>' )
-            // InternalDescartesQL.g:19:9: '>'
+            // InternalDescartesQL.g:19:7: ( '<=' )
+            // InternalDescartesQL.g:19:9: '<='
             {
-            match('>'); 
+            match("<="); 
+
 
             }
 
@@ -318,11 +323,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:20:7: ( '>=' )
-            // InternalDescartesQL.g:20:9: '>='
+            // InternalDescartesQL.g:20:7: ( '>' )
+            // InternalDescartesQL.g:20:9: '>'
             {
-            match(">="); 
-
+            match('>'); 
 
             }
 
@@ -339,10 +343,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:21:7: ( '==' )
-            // InternalDescartesQL.g:21:9: '=='
+            // InternalDescartesQL.g:21:7: ( '>=' )
+            // InternalDescartesQL.g:21:9: '>='
             {
-            match("=="); 
+            match(">="); 
 
 
             }
@@ -360,10 +364,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:22:7: ( 'EUR' )
-            // InternalDescartesQL.g:22:9: 'EUR'
+            // InternalDescartesQL.g:22:7: ( '==' )
+            // InternalDescartesQL.g:22:9: '=='
             {
-            match("EUR"); 
+            match("=="); 
 
 
             }
@@ -381,10 +385,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:23:7: ( 'USD' )
-            // InternalDescartesQL.g:23:9: 'USD'
+            // InternalDescartesQL.g:23:7: ( 'EUR' )
+            // InternalDescartesQL.g:23:9: 'EUR'
             {
-            match("USD"); 
+            match("EUR"); 
 
 
             }
@@ -402,10 +406,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:24:7: ( 'AND' )
-            // InternalDescartesQL.g:24:9: 'AND'
+            // InternalDescartesQL.g:24:7: ( 'USD' )
+            // InternalDescartesQL.g:24:9: 'USD'
             {
-            match("AND"); 
+            match("USD"); 
 
 
             }
@@ -423,10 +427,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:25:7: ( 'XOR' )
-            // InternalDescartesQL.g:25:9: 'XOR'
+            // InternalDescartesQL.g:25:7: ( 'AND' )
+            // InternalDescartesQL.g:25:9: 'AND'
             {
-            match("XOR"); 
+            match("AND"); 
 
 
             }
@@ -444,10 +448,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:26:7: ( 'OR' )
-            // InternalDescartesQL.g:26:9: 'OR'
+            // InternalDescartesQL.g:26:7: ( 'XOR' )
+            // InternalDescartesQL.g:26:9: 'XOR'
             {
-            match("OR"); 
+            match("XOR"); 
 
 
             }
@@ -465,10 +469,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:27:7: ( 'INSTANCEOF' )
-            // InternalDescartesQL.g:27:9: 'INSTANCEOF'
+            // InternalDescartesQL.g:27:7: ( 'OR' )
+            // InternalDescartesQL.g:27:9: 'OR'
             {
-            match("INSTANCEOF"); 
+            match("OR"); 
 
 
             }
@@ -486,10 +490,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:28:7: ( 'CLASSREGEX' )
-            // InternalDescartesQL.g:28:9: 'CLASSREGEX'
+            // InternalDescartesQL.g:28:7: ( 'INSTANCEOF' )
+            // InternalDescartesQL.g:28:9: 'INSTANCEOF'
             {
-            match("CLASSREGEX"); 
+            match("INSTANCEOF"); 
 
 
             }
@@ -507,10 +511,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:29:7: ( 'SINCE' )
-            // InternalDescartesQL.g:29:9: 'SINCE'
+            // InternalDescartesQL.g:29:7: ( 'CLASSREGEX' )
+            // InternalDescartesQL.g:29:9: 'CLASSREGEX'
             {
-            match("SINCE"); 
+            match("CLASSREGEX"); 
 
 
             }
@@ -528,10 +532,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:30:7: ( 'NEXT' )
-            // InternalDescartesQL.g:30:9: 'NEXT'
+            // InternalDescartesQL.g:30:7: ( 'SINCE' )
+            // InternalDescartesQL.g:30:9: 'SINCE'
             {
-            match("NEXT"); 
+            match("SINCE"); 
 
 
             }
@@ -549,10 +553,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:31:7: ( '-' )
-            // InternalDescartesQL.g:31:9: '-'
+            // InternalDescartesQL.g:31:7: ( 'NEXT' )
+            // InternalDescartesQL.g:31:9: 'NEXT'
             {
-            match('-'); 
+            match("NEXT"); 
+
 
             }
 
@@ -569,10 +574,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:32:7: ( '+' )
-            // InternalDescartesQL.g:32:9: '+'
+            // InternalDescartesQL.g:32:7: ( '-' )
+            // InternalDescartesQL.g:32:9: '-'
             {
-            match('+'); 
+            match('-'); 
 
             }
 
@@ -589,10 +594,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:33:7: ( 'y' )
-            // InternalDescartesQL.g:33:9: 'y'
+            // InternalDescartesQL.g:33:7: ( '+' )
+            // InternalDescartesQL.g:33:9: '+'
             {
-            match('y'); 
+            match('+'); 
 
             }
 
@@ -609,10 +614,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:34:7: ( 'm' )
-            // InternalDescartesQL.g:34:9: 'm'
+            // InternalDescartesQL.g:34:7: ( 'y' )
+            // InternalDescartesQL.g:34:9: 'y'
             {
-            match('m'); 
+            match('y'); 
 
             }
 
@@ -629,10 +634,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:35:7: ( 'w' )
-            // InternalDescartesQL.g:35:9: 'w'
+            // InternalDescartesQL.g:35:7: ( 'm' )
+            // InternalDescartesQL.g:35:9: 'm'
             {
-            match('w'); 
+            match('m'); 
 
             }
 
@@ -649,10 +654,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:36:7: ( 'd' )
-            // InternalDescartesQL.g:36:9: 'd'
+            // InternalDescartesQL.g:36:7: ( 'w' )
+            // InternalDescartesQL.g:36:9: 'w'
             {
-            match('d'); 
+            match('w'); 
 
             }
 
@@ -669,10 +674,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:37:7: ( 'h' )
-            // InternalDescartesQL.g:37:9: 'h'
+            // InternalDescartesQL.g:37:7: ( 'd' )
+            // InternalDescartesQL.g:37:9: 'd'
             {
-            match('h'); 
+            match('d'); 
 
             }
 
@@ -689,10 +694,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:38:7: ( 'M' )
-            // InternalDescartesQL.g:38:9: 'M'
+            // InternalDescartesQL.g:38:7: ( 'h' )
+            // InternalDescartesQL.g:38:9: 'h'
             {
-            match('M'); 
+            match('h'); 
 
             }
 
@@ -709,10 +714,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:39:7: ( 's' )
-            // InternalDescartesQL.g:39:9: 's'
+            // InternalDescartesQL.g:39:7: ( 'M' )
+            // InternalDescartesQL.g:39:9: 'M'
             {
-            match('s'); 
+            match('M'); 
 
             }
 
@@ -729,10 +734,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:40:7: ( 'S' )
-            // InternalDescartesQL.g:40:9: 'S'
+            // InternalDescartesQL.g:40:7: ( 's' )
+            // InternalDescartesQL.g:40:9: 's'
             {
-            match('S'); 
+            match('s'); 
 
             }
 
@@ -749,11 +754,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:41:7: ( 'MIN' )
-            // InternalDescartesQL.g:41:9: 'MIN'
+            // InternalDescartesQL.g:41:7: ( 'S' )
+            // InternalDescartesQL.g:41:9: 'S'
             {
-            match("MIN"); 
-
+            match('S'); 
 
             }
 
@@ -770,10 +774,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:42:7: ( 'MAX' )
-            // InternalDescartesQL.g:42:9: 'MAX'
+            // InternalDescartesQL.g:42:7: ( 'MIN' )
+            // InternalDescartesQL.g:42:9: 'MIN'
             {
-            match("MAX"); 
+            match("MIN"); 
 
 
             }
@@ -791,10 +795,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:43:7: ( 'GEOMEAN' )
-            // InternalDescartesQL.g:43:9: 'GEOMEAN'
+            // InternalDescartesQL.g:43:7: ( 'MAX' )
+            // InternalDescartesQL.g:43:9: 'MAX'
             {
-            match("GEOMEAN"); 
+            match("MAX"); 
 
 
             }
@@ -812,10 +816,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:44:7: ( 'N' )
-            // InternalDescartesQL.g:44:9: 'N'
+            // InternalDescartesQL.g:44:7: ( 'GEOMEAN' )
+            // InternalDescartesQL.g:44:9: 'GEOMEAN'
             {
-            match('N'); 
+            match("GEOMEAN"); 
+
 
             }
 
@@ -832,11 +837,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:45:7: ( 'SUM' )
-            // InternalDescartesQL.g:45:9: 'SUM'
+            // InternalDescartesQL.g:45:7: ( 'N' )
+            // InternalDescartesQL.g:45:9: 'N'
             {
-            match("SUM"); 
-
+            match('N'); 
 
             }
 
@@ -853,10 +857,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:46:7: ( 'SUMOFSQUARES' )
-            // InternalDescartesQL.g:46:9: 'SUMOFSQUARES'
+            // InternalDescartesQL.g:46:7: ( 'SUM' )
+            // InternalDescartesQL.g:46:9: 'SUM'
             {
-            match("SUMOFSQUARES"); 
+            match("SUM"); 
 
 
             }
@@ -874,10 +878,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:47:7: ( 'STDDEV' )
-            // InternalDescartesQL.g:47:9: 'STDDEV'
+            // InternalDescartesQL.g:47:7: ( 'SUMOFSQUARES' )
+            // InternalDescartesQL.g:47:9: 'SUMOFSQUARES'
             {
-            match("STDDEV"); 
+            match("SUMOFSQUARES"); 
 
 
             }
@@ -895,10 +899,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:48:7: ( 'VAR' )
-            // InternalDescartesQL.g:48:9: 'VAR'
+            // InternalDescartesQL.g:48:7: ( 'STDDEV' )
+            // InternalDescartesQL.g:48:9: 'STDDEV'
             {
-            match("VAR"); 
+            match("STDDEV"); 
 
 
             }
@@ -916,10 +920,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:49:7: ( 'PERCENTILE' )
-            // InternalDescartesQL.g:49:9: 'PERCENTILE'
+            // InternalDescartesQL.g:49:7: ( 'VAR' )
+            // InternalDescartesQL.g:49:9: 'VAR'
             {
-            match("PERCENTILE"); 
+            match("VAR"); 
 
 
             }
@@ -937,10 +941,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:50:7: ( 'MEAN' )
-            // InternalDescartesQL.g:50:9: 'MEAN'
+            // InternalDescartesQL.g:50:7: ( 'PERCENTILE' )
+            // InternalDescartesQL.g:50:9: 'PERCENTILE'
             {
-            match("MEAN"); 
+            match("PERCENTILE"); 
 
 
             }
@@ -958,10 +962,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:51:7: ( ';' )
-            // InternalDescartesQL.g:51:9: ';'
+            // InternalDescartesQL.g:51:7: ( 'MEAN' )
+            // InternalDescartesQL.g:51:9: 'MEAN'
             {
-            match(';'); 
+            match("MEAN"); 
+
 
             }
 
@@ -978,10 +983,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:52:7: ( ',' )
-            // InternalDescartesQL.g:52:9: ','
+            // InternalDescartesQL.g:52:7: ( ';' )
+            // InternalDescartesQL.g:52:9: ';'
             {
-            match(','); 
+            match(';'); 
 
             }
 
@@ -998,10 +1003,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:53:7: ( 'CONTAINS' )
-            // InternalDescartesQL.g:53:9: 'CONTAINS'
+            // InternalDescartesQL.g:53:7: ( 'GENERATE' )
+            // InternalDescartesQL.g:53:9: 'GENERATE'
             {
-            match("CONTAINS"); 
+            match("GENERATE"); 
 
 
             }
@@ -1019,10 +1024,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:54:7: ( '(' )
-            // InternalDescartesQL.g:54:9: '('
+            // InternalDescartesQL.g:54:7: ( 'SATISFACTION-LEVEL' )
+            // InternalDescartesQL.g:54:9: 'SATISFACTION-LEVEL'
             {
-            match('('); 
+            match("SATISFACTION-LEVEL"); 
+
 
             }
 
@@ -1039,10 +1045,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:55:7: ( ')' )
-            // InternalDescartesQL.g:55:9: ')'
+            // InternalDescartesQL.g:55:7: ( 'PERCENT' )
+            // InternalDescartesQL.g:55:9: 'PERCENT'
             {
-            match(')'); 
+            match("PERCENT"); 
+
 
             }
 
@@ -1059,10 +1066,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:56:7: ( ':' )
-            // InternalDescartesQL.g:56:9: ':'
+            // InternalDescartesQL.g:56:7: ( ',' )
+            // InternalDescartesQL.g:56:9: ','
             {
-            match(':'); 
+            match(','); 
 
             }
 
@@ -1079,10 +1086,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:57:7: ( '*' )
-            // InternalDescartesQL.g:57:9: '*'
+            // InternalDescartesQL.g:57:7: ( 'CONTAINS' )
+            // InternalDescartesQL.g:57:9: 'CONTAINS'
             {
-            match('*'); 
+            match("CONTAINS"); 
+
 
             }
 
@@ -1099,11 +1107,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:58:7: ( 'PER' )
-            // InternalDescartesQL.g:58:9: 'PER'
+            // InternalDescartesQL.g:58:7: ( '(' )
+            // InternalDescartesQL.g:58:9: '('
             {
-            match("PER"); 
-
+            match('('); 
 
             }
 
@@ -1120,11 +1127,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:59:7: ( 'VIOLATIONS' )
-            // InternalDescartesQL.g:59:9: 'VIOLATIONS'
+            // InternalDescartesQL.g:59:7: ( ')' )
+            // InternalDescartesQL.g:59:9: ')'
             {
-            match("VIOLATIONS"); 
-
+            match(')'); 
 
             }
 
@@ -1141,11 +1147,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:60:7: ( 'LIST' )
-            // InternalDescartesQL.g:60:9: 'LIST'
+            // InternalDescartesQL.g:60:7: ( ':' )
+            // InternalDescartesQL.g:60:9: ':'
             {
-            match("LIST"); 
-
+            match(':'); 
 
             }
 
@@ -1162,11 +1167,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:61:7: ( 'GET' )
-            // InternalDescartesQL.g:61:9: 'GET'
+            // InternalDescartesQL.g:61:7: ( '*' )
+            // InternalDescartesQL.g:61:9: '*'
             {
-            match("GET"); 
-
+            match('*'); 
 
             }
 
@@ -1183,10 +1187,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:62:7: ( 'SELECT' )
-            // InternalDescartesQL.g:62:9: 'SELECT'
+            // InternalDescartesQL.g:62:7: ( 'PER' )
+            // InternalDescartesQL.g:62:9: 'PER'
             {
-            match("SELECT"); 
+            match("PER"); 
 
 
             }
@@ -1204,10 +1208,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:63:7: ( 'DETECT' )
-            // InternalDescartesQL.g:63:9: 'DETECT'
+            // InternalDescartesQL.g:63:7: ( 'VIOLATIONS' )
+            // InternalDescartesQL.g:63:9: 'VIOLATIONS'
             {
-            match("DETECT"); 
+            match("VIOLATIONS"); 
 
 
             }
@@ -1225,10 +1229,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:64:7: ( 'BOTTLENECKS' )
-            // InternalDescartesQL.g:64:9: 'BOTTLENECKS'
+            // InternalDescartesQL.g:64:7: ( 'LIST' )
+            // InternalDescartesQL.g:64:9: 'LIST'
             {
-            match("BOTTLENECKS"); 
+            match("LIST"); 
 
 
             }
@@ -1246,10 +1250,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:65:7: ( 'CONSTRAINED AS' )
-            // InternalDescartesQL.g:65:9: 'CONSTRAINED AS'
+            // InternalDescartesQL.g:65:7: ( 'GET' )
+            // InternalDescartesQL.g:65:9: 'GET'
             {
-            match("CONSTRAINED AS"); 
+            match("GET"); 
 
 
             }
@@ -1267,10 +1271,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:66:7: ( '=' )
-            // InternalDescartesQL.g:66:9: '='
+            // InternalDescartesQL.g:66:7: ( 'SELECT' )
+            // InternalDescartesQL.g:66:9: 'SELECT'
             {
-            match('='); 
+            match("SELECT"); 
+
 
             }
 
@@ -1287,10 +1292,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:67:7: ( '.' )
-            // InternalDescartesQL.g:67:9: '.'
+            // InternalDescartesQL.g:67:7: ( 'DETECT' )
+            // InternalDescartesQL.g:67:9: 'DETECT'
             {
-            match('.'); 
+            match("DETECT"); 
+
 
             }
 
@@ -1307,10 +1313,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:68:7: ( '..' )
-            // InternalDescartesQL.g:68:9: '..'
+            // InternalDescartesQL.g:68:7: ( 'BOTTLENECKS' )
+            // InternalDescartesQL.g:68:9: 'BOTTLENECKS'
             {
-            match(".."); 
+            match("BOTTLENECKS"); 
 
 
             }
@@ -1328,10 +1334,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:69:7: ( 'BY' )
-            // InternalDescartesQL.g:69:9: 'BY'
+            // InternalDescartesQL.g:69:7: ( 'CONSTRAINED AS' )
+            // InternalDescartesQL.g:69:9: 'CONSTRAINED AS'
             {
-            match("BY"); 
+            match("CONSTRAINED AS"); 
 
 
             }
@@ -1349,11 +1355,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:70:7: ( '*.' )
-            // InternalDescartesQL.g:70:9: '*.'
+            // InternalDescartesQL.g:70:7: ( '=' )
+            // InternalDescartesQL.g:70:9: '='
             {
-            match("*."); 
-
+            match('='); 
 
             }
 
@@ -1370,10 +1375,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:71:7: ( '@' )
-            // InternalDescartesQL.g:71:9: '@'
+            // InternalDescartesQL.g:71:7: ( '.' )
+            // InternalDescartesQL.g:71:9: '.'
             {
-            match('@'); 
+            match('.'); 
 
             }
 
@@ -1390,10 +1395,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:72:7: ( 'WHAT IF' )
-            // InternalDescartesQL.g:72:9: 'WHAT IF'
+            // InternalDescartesQL.g:72:7: ( '..' )
+            // InternalDescartesQL.g:72:9: '..'
             {
-            match("WHAT IF"); 
+            match(".."); 
 
 
             }
@@ -1411,10 +1416,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:73:7: ( 'FILTERING' )
-            // InternalDescartesQL.g:73:9: 'FILTERING'
+            // InternalDescartesQL.g:73:7: ( 'BY' )
+            // InternalDescartesQL.g:73:9: 'BY'
             {
-            match("FILTERING"); 
+            match("BY"); 
 
 
             }
@@ -1432,10 +1437,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:74:7: ( 'AGREEMENTS' )
-            // InternalDescartesQL.g:74:9: 'AGREEMENTS'
+            // InternalDescartesQL.g:74:7: ( '*.' )
+            // InternalDescartesQL.g:74:9: '*.'
             {
-            match("AGREEMENTS"); 
+            match("*."); 
 
 
             }
@@ -1453,11 +1458,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:75:7: ( 'GOALS' )
-            // InternalDescartesQL.g:75:9: 'GOALS'
+            // InternalDescartesQL.g:75:7: ( '@' )
+            // InternalDescartesQL.g:75:9: '@'
             {
-            match("GOALS"); 
-
+            match('@'); 
 
             }
 
@@ -1474,10 +1478,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:76:7: ( 'FUZZINESS' )
-            // InternalDescartesQL.g:76:9: 'FUZZINESS'
+            // InternalDescartesQL.g:76:7: ( 'WHAT IF' )
+            // InternalDescartesQL.g:76:9: 'WHAT IF'
             {
-            match("FUZZINESS"); 
+            match("WHAT IF"); 
 
 
             }
@@ -1495,10 +1499,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:77:7: ( 'PENALTY' )
-            // InternalDescartesQL.g:77:9: 'PENALTY'
+            // InternalDescartesQL.g:77:7: ( 'FILTERING' )
+            // InternalDescartesQL.g:77:9: 'FILTERING'
             {
-            match("PENALTY"); 
+            match("FILTERING"); 
 
 
             }
@@ -1516,10 +1520,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:78:7: ( 'CONSTRAINTS' )
-            // InternalDescartesQL.g:78:9: 'CONSTRAINTS'
+            // InternalDescartesQL.g:78:7: ( 'AGREEMENTS' )
+            // InternalDescartesQL.g:78:9: 'AGREEMENTS'
             {
-            match("CONSTRAINTS"); 
+            match("AGREEMENTS"); 
 
 
             }
@@ -1537,10 +1541,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:79:7: ( 'EXPLORATION STRATEGIES' )
-            // InternalDescartesQL.g:79:9: 'EXPLORATION STRATEGIES'
+            // InternalDescartesQL.g:79:7: ( 'GOALS' )
+            // InternalDescartesQL.g:79:9: 'GOALS'
             {
-            match("EXPLORATION STRATEGIES"); 
+            match("GOALS"); 
 
 
             }
@@ -1558,10 +1562,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:80:7: ( 'TIME UNITS' )
-            // InternalDescartesQL.g:80:9: 'TIME UNITS'
+            // InternalDescartesQL.g:80:7: ( 'FUZZINESS' )
+            // InternalDescartesQL.g:80:9: 'FUZZINESS'
             {
-            match("TIME UNITS"); 
+            match("FUZZINESS"); 
 
 
             }
@@ -1579,10 +1583,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:81:7: ( 'DOF' )
-            // InternalDescartesQL.g:81:9: 'DOF'
+            // InternalDescartesQL.g:81:7: ( 'PENALTY' )
+            // InternalDescartesQL.g:81:9: 'PENALTY'
             {
-            match("DOF"); 
+            match("PENALTY"); 
 
 
             }
@@ -1600,10 +1604,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:82:7: ( 'ENTITIES' )
-            // InternalDescartesQL.g:82:9: 'ENTITIES'
+            // InternalDescartesQL.g:82:7: ( 'CONSTRAINTS' )
+            // InternalDescartesQL.g:82:9: 'CONSTRAINTS'
             {
-            match("ENTITIES"); 
+            match("CONSTRAINTS"); 
 
 
             }
@@ -1621,10 +1625,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:83:7: ( 'METRICS' )
-            // InternalDescartesQL.g:83:9: 'METRICS'
+            // InternalDescartesQL.g:83:7: ( 'EXPLORATION STRATEGIES' )
+            // InternalDescartesQL.g:83:9: 'EXPLORATION STRATEGIES'
             {
-            match("METRICS"); 
+            match("EXPLORATION STRATEGIES"); 
 
 
             }
@@ -1642,10 +1646,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:84:7: ( 'EVALUATE DOF' )
-            // InternalDescartesQL.g:84:9: 'EVALUATE DOF'
+            // InternalDescartesQL.g:84:7: ( 'TIME UNITS' )
+            // InternalDescartesQL.g:84:9: 'TIME UNITS'
             {
-            match("EVALUATE DOF"); 
+            match("TIME UNITS"); 
 
 
             }
@@ -1663,10 +1667,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:85:7: ( 'GUIDED BY' )
-            // InternalDescartesQL.g:85:9: 'GUIDED BY'
+            // InternalDescartesQL.g:85:7: ( 'DOF' )
+            // InternalDescartesQL.g:85:9: 'DOF'
             {
-            match("GUIDED BY"); 
+            match("DOF"); 
 
 
             }
@@ -1684,10 +1688,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:86:7: ( '[' )
-            // InternalDescartesQL.g:86:9: '['
+            // InternalDescartesQL.g:86:7: ( 'ENTITIES' )
+            // InternalDescartesQL.g:86:9: 'ENTITIES'
             {
-            match('['); 
+            match("ENTITIES"); 
+
 
             }
 
@@ -1704,10 +1709,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:87:7: ( ']' )
-            // InternalDescartesQL.g:87:9: ']'
+            // InternalDescartesQL.g:87:7: ( 'METRICS' )
+            // InternalDescartesQL.g:87:9: 'METRICS'
             {
-            match(']'); 
+            match("METRICS"); 
+
 
             }
 
@@ -1724,10 +1730,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:88:7: ( 'VARYING' )
-            // InternalDescartesQL.g:88:9: 'VARYING'
+            // InternalDescartesQL.g:88:7: ( 'EVALUATE DOF' )
+            // InternalDescartesQL.g:88:9: 'EVALUATE DOF'
             {
-            match("VARYING"); 
+            match("EVALUATE DOF"); 
 
 
             }
@@ -1745,10 +1751,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:89:7: ( 'children' )
-            // InternalDescartesQL.g:89:9: 'children'
+            // InternalDescartesQL.g:89:7: ( 'GUIDED BY' )
+            // InternalDescartesQL.g:89:9: 'GUIDED BY'
             {
-            match("children"); 
+            match("GUIDED BY"); 
 
 
             }
@@ -1766,11 +1772,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:90:7: ( 'parent' )
-            // InternalDescartesQL.g:90:9: 'parent'
+            // InternalDescartesQL.g:90:7: ( '[' )
+            // InternalDescartesQL.g:90:9: '['
             {
-            match("parent"); 
-
+            match('['); 
 
             }
 
@@ -1787,11 +1792,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:91:7: ( 'find(' )
-            // InternalDescartesQL.g:91:9: 'find('
+            // InternalDescartesQL.g:91:7: ( ']' )
+            // InternalDescartesQL.g:91:9: ']'
             {
-            match("find("); 
-
+            match(']'); 
 
             }
 
@@ -1808,10 +1812,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:92:7: ( 'FOR' )
-            // InternalDescartesQL.g:92:9: 'FOR'
+            // InternalDescartesQL.g:92:7: ( 'VARYING' )
+            // InternalDescartesQL.g:92:9: 'VARYING'
             {
-            match("FOR"); 
+            match("VARYING"); 
 
 
             }
@@ -1829,10 +1833,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:93:7: ( 'AS' )
-            // InternalDescartesQL.g:93:9: 'AS'
+            // InternalDescartesQL.g:93:7: ( 'children' )
+            // InternalDescartesQL.g:93:9: 'children'
             {
-            match("AS"); 
+            match("children"); 
 
 
             }
@@ -1850,10 +1854,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:94:7: ( 'USING' )
-            // InternalDescartesQL.g:94:9: 'USING'
+            // InternalDescartesQL.g:94:7: ( 'parent' )
+            // InternalDescartesQL.g:94:9: 'parent'
             {
-            match("USING"); 
+            match("parent"); 
 
 
             }
@@ -1871,10 +1875,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:95:7: ( 'WITH' )
-            // InternalDescartesQL.g:95:9: 'WITH'
+            // InternalDescartesQL.g:95:7: ( 'find(' )
+            // InternalDescartesQL.g:95:9: 'find('
             {
-            match("WITH"); 
+            match("find("); 
 
 
             }
@@ -1892,10 +1896,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:96:7: ( 'FILTERED BY' )
-            // InternalDescartesQL.g:96:9: 'FILTERED BY'
+            // InternalDescartesQL.g:96:7: ( 'FOR' )
+            // InternalDescartesQL.g:96:9: 'FOR'
             {
-            match("FILTERED BY"); 
+            match("FOR"); 
 
 
             }
@@ -1913,10 +1917,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:97:7: ( 'CONDITION' )
-            // InternalDescartesQL.g:97:9: 'CONDITION'
+            // InternalDescartesQL.g:97:7: ( 'AS' )
+            // InternalDescartesQL.g:97:9: 'AS'
             {
-            match("CONDITION"); 
+            match("AS"); 
 
 
             }
@@ -1934,10 +1938,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:98:7: ( 'OBSERVE' )
-            // InternalDescartesQL.g:98:9: 'OBSERVE'
+            // InternalDescartesQL.g:98:7: ( 'USING' )
+            // InternalDescartesQL.g:98:9: 'USING'
             {
-            match("OBSERVE"); 
+            match("USING"); 
 
 
             }
@@ -1955,10 +1959,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:99:8: ( 'SAMPLED BY' )
-            // InternalDescartesQL.g:99:10: 'SAMPLED BY'
+            // InternalDescartesQL.g:99:8: ( 'WITH' )
+            // InternalDescartesQL.g:99:10: 'WITH'
             {
-            match("SAMPLED BY"); 
+            match("WITH"); 
 
 
             }
@@ -1976,10 +1980,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:100:8: ( 'BETWEEN' )
-            // InternalDescartesQL.g:100:10: 'BETWEEN'
+            // InternalDescartesQL.g:100:8: ( 'FILTERED BY' )
+            // InternalDescartesQL.g:100:10: 'FILTERED BY'
             {
-            match("BETWEEN"); 
+            match("FILTERED BY"); 
 
 
             }
@@ -1997,10 +2001,11 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:101:8: ( '%' )
-            // InternalDescartesQL.g:101:10: '%'
+            // InternalDescartesQL.g:101:8: ( 'CONDITION' )
+            // InternalDescartesQL.g:101:10: 'CONDITION'
             {
-            match('%'); 
+            match("CONDITION"); 
+
 
             }
 
@@ -2012,15 +2017,98 @@ public class InternalDescartesQLLexer extends Lexer {
     }
     // $ANTLR end "T__102"
 
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalDescartesQL.g:102:8: ( 'OBSERVE' )
+            // InternalDescartesQL.g:102:10: 'OBSERVE'
+            {
+            match("OBSERVE"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalDescartesQL.g:103:8: ( 'SAMPLED BY' )
+            // InternalDescartesQL.g:103:10: 'SAMPLED BY'
+            {
+            match("SAMPLED BY"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalDescartesQL.g:104:8: ( 'BETWEEN' )
+            // InternalDescartesQL.g:104:10: 'BETWEEN'
+            {
+            match("BETWEEN"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalDescartesQL.g:105:8: ( '%' )
+            // InternalDescartesQL.g:105:10: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
     // $ANTLR start "RULE_DOUBLE"
     public final void mRULE_DOUBLE() throws RecognitionException {
         try {
             int _type = RULE_DOUBLE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13208:13: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) '.' ( '0' .. '9' )+ )
-            // InternalDescartesQL.g:13208:15: ( '0' | '1' .. '9' ( '0' .. '9' )* ) '.' ( '0' .. '9' )+
+            // InternalDescartesQL.g:14217:13: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) '.' ( '0' .. '9' )+ )
+            // InternalDescartesQL.g:14217:15: ( '0' | '1' .. '9' ( '0' .. '9' )* ) '.' ( '0' .. '9' )+
             {
-            // InternalDescartesQL.g:13208:15: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            // InternalDescartesQL.g:14217:15: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             int alt2=2;
             int LA2_0 = input.LA(1);
 
@@ -2038,17 +2126,17 @@ public class InternalDescartesQLLexer extends Lexer {
             }
             switch (alt2) {
                 case 1 :
-                    // InternalDescartesQL.g:13208:16: '0'
+                    // InternalDescartesQL.g:14217:16: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:13208:20: '1' .. '9' ( '0' .. '9' )*
+                    // InternalDescartesQL.g:14217:20: '1' .. '9' ( '0' .. '9' )*
                     {
                     matchRange('1','9'); 
-                    // InternalDescartesQL.g:13208:29: ( '0' .. '9' )*
+                    // InternalDescartesQL.g:14217:29: ( '0' .. '9' )*
                     loop1:
                     do {
                         int alt1=2;
@@ -2061,7 +2149,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                         switch (alt1) {
                     	case 1 :
-                    	    // InternalDescartesQL.g:13208:30: '0' .. '9'
+                    	    // InternalDescartesQL.g:14217:30: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2080,7 +2168,7 @@ public class InternalDescartesQLLexer extends Lexer {
             }
 
             match('.'); 
-            // InternalDescartesQL.g:13208:46: ( '0' .. '9' )+
+            // InternalDescartesQL.g:14217:46: ( '0' .. '9' )+
             int cnt3=0;
             loop3:
             do {
@@ -2094,7 +2182,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                 switch (alt3) {
             	case 1 :
-            	    // InternalDescartesQL.g:13208:47: '0' .. '9'
+            	    // InternalDescartesQL.g:14217:47: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2126,10 +2214,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13210:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
-            // InternalDescartesQL.g:13210:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalDescartesQL.g:14219:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalDescartesQL.g:14219:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             {
-            // InternalDescartesQL.g:13210:11: ( '^' )?
+            // InternalDescartesQL.g:14219:11: ( '^' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2138,7 +2226,7 @@ public class InternalDescartesQLLexer extends Lexer {
             }
             switch (alt4) {
                 case 1 :
-                    // InternalDescartesQL.g:13210:11: '^'
+                    // InternalDescartesQL.g:14219:11: '^'
                     {
                     match('^'); 
 
@@ -2156,7 +2244,7 @@ public class InternalDescartesQLLexer extends Lexer {
                 recover(mse);
                 throw mse;}
 
-            // InternalDescartesQL.g:13210:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalDescartesQL.g:14219:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             loop5:
             do {
                 int alt5=2;
@@ -2205,10 +2293,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13212:10: ( ( '0' .. '9' )+ )
-            // InternalDescartesQL.g:13212:12: ( '0' .. '9' )+
+            // InternalDescartesQL.g:14221:10: ( ( '0' .. '9' )+ )
+            // InternalDescartesQL.g:14221:12: ( '0' .. '9' )+
             {
-            // InternalDescartesQL.g:13212:12: ( '0' .. '9' )+
+            // InternalDescartesQL.g:14221:12: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -2222,7 +2310,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                 switch (alt6) {
             	case 1 :
-            	    // InternalDescartesQL.g:13212:13: '0' .. '9'
+            	    // InternalDescartesQL.g:14221:13: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2254,10 +2342,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13214:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
-            // InternalDescartesQL.g:13214:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalDescartesQL.g:14223:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalDescartesQL.g:14223:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             {
-            // InternalDescartesQL.g:13214:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalDescartesQL.g:14223:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2275,10 +2363,10 @@ public class InternalDescartesQLLexer extends Lexer {
             }
             switch (alt9) {
                 case 1 :
-                    // InternalDescartesQL.g:13214:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    // InternalDescartesQL.g:14223:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
                     {
                     match('\"'); 
-                    // InternalDescartesQL.g:13214:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalDescartesQL.g:14223:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop7:
                     do {
                         int alt7=3;
@@ -2294,7 +2382,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                         switch (alt7) {
                     	case 1 :
-                    	    // InternalDescartesQL.g:13214:21: '\\\\' .
+                    	    // InternalDescartesQL.g:14223:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2302,7 +2390,7 @@ public class InternalDescartesQLLexer extends Lexer {
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalDescartesQL.g:13214:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalDescartesQL.g:14223:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2327,10 +2415,10 @@ public class InternalDescartesQLLexer extends Lexer {
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:13214:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    // InternalDescartesQL.g:14223:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
                     {
                     match('\''); 
-                    // InternalDescartesQL.g:13214:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalDescartesQL.g:14223:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -2346,7 +2434,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                         switch (alt8) {
                     	case 1 :
-                    	    // InternalDescartesQL.g:13214:54: '\\\\' .
+                    	    // InternalDescartesQL.g:14223:54: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2354,7 +2442,7 @@ public class InternalDescartesQLLexer extends Lexer {
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalDescartesQL.g:13214:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalDescartesQL.g:14223:61: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2397,12 +2485,12 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13216:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalDescartesQL.g:13216:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalDescartesQL.g:14225:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalDescartesQL.g:14225:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalDescartesQL.g:13216:24: ( options {greedy=false; } : . )*
+            // InternalDescartesQL.g:14225:24: ( options {greedy=false; } : . )*
             loop10:
             do {
                 int alt10=2;
@@ -2427,7 +2515,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                 switch (alt10) {
             	case 1 :
-            	    // InternalDescartesQL.g:13216:52: .
+            	    // InternalDescartesQL.g:14225:52: .
             	    {
             	    matchAny(); 
 
@@ -2457,12 +2545,12 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13218:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalDescartesQL.g:13218:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalDescartesQL.g:14227:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalDescartesQL.g:14227:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalDescartesQL.g:13218:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalDescartesQL.g:14227:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop11:
             do {
                 int alt11=2;
@@ -2475,7 +2563,7 @@ public class InternalDescartesQLLexer extends Lexer {
 
                 switch (alt11) {
             	case 1 :
-            	    // InternalDescartesQL.g:13218:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalDescartesQL.g:14227:24: ~ ( ( '\\n' | '\\r' ) )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
@@ -2495,7 +2583,7 @@ public class InternalDescartesQLLexer extends Lexer {
                 }
             } while (true);
 
-            // InternalDescartesQL.g:13218:40: ( ( '\\r' )? '\\n' )?
+            // InternalDescartesQL.g:14227:40: ( ( '\\r' )? '\\n' )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -2504,9 +2592,9 @@ public class InternalDescartesQLLexer extends Lexer {
             }
             switch (alt13) {
                 case 1 :
-                    // InternalDescartesQL.g:13218:41: ( '\\r' )? '\\n'
+                    // InternalDescartesQL.g:14227:41: ( '\\r' )? '\\n'
                     {
-                    // InternalDescartesQL.g:13218:41: ( '\\r' )?
+                    // InternalDescartesQL.g:14227:41: ( '\\r' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2515,7 +2603,7 @@ public class InternalDescartesQLLexer extends Lexer {
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalDescartesQL.g:13218:41: '\\r'
+                            // InternalDescartesQL.g:14227:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2547,10 +2635,10 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13220:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalDescartesQL.g:13220:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalDescartesQL.g:14229:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalDescartesQL.g:14229:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalDescartesQL.g:13220:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalDescartesQL.g:14229:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt14=0;
             loop14:
             do {
@@ -2604,8 +2692,8 @@ public class InternalDescartesQLLexer extends Lexer {
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalDescartesQL.g:13222:16: ( . )
-            // InternalDescartesQL.g:13222:18: .
+            // InternalDescartesQL.g:14231:16: ( . )
+            // InternalDescartesQL.g:14231:18: .
             {
             matchAny(); 
 
@@ -2620,8 +2708,8 @@ public class InternalDescartesQLLexer extends Lexer {
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalDescartesQL.g:1:8: ( T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DOUBLE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt15=99;
+        // InternalDescartesQL.g:1:8: ( T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DOUBLE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt15=103;
         alt15 = dfa15.predict(input);
         switch (alt15) {
             case 1 :
@@ -3262,56 +3350,84 @@ public class InternalDescartesQLLexer extends Lexer {
                 }
                 break;
             case 92 :
-                // InternalDescartesQL.g:1:559: RULE_DOUBLE
+                // InternalDescartesQL.g:1:559: T__103
                 {
-                mRULE_DOUBLE(); 
+                mT__103(); 
 
                 }
                 break;
             case 93 :
-                // InternalDescartesQL.g:1:571: RULE_ID
+                // InternalDescartesQL.g:1:566: T__104
                 {
-                mRULE_ID(); 
+                mT__104(); 
 
                 }
                 break;
             case 94 :
-                // InternalDescartesQL.g:1:579: RULE_INT
+                // InternalDescartesQL.g:1:573: T__105
                 {
-                mRULE_INT(); 
+                mT__105(); 
 
                 }
                 break;
             case 95 :
-                // InternalDescartesQL.g:1:588: RULE_STRING
+                // InternalDescartesQL.g:1:580: T__106
                 {
-                mRULE_STRING(); 
+                mT__106(); 
 
                 }
                 break;
             case 96 :
-                // InternalDescartesQL.g:1:600: RULE_ML_COMMENT
+                // InternalDescartesQL.g:1:587: RULE_DOUBLE
                 {
-                mRULE_ML_COMMENT(); 
+                mRULE_DOUBLE(); 
 
                 }
                 break;
             case 97 :
-                // InternalDescartesQL.g:1:616: RULE_SL_COMMENT
+                // InternalDescartesQL.g:1:599: RULE_ID
                 {
-                mRULE_SL_COMMENT(); 
+                mRULE_ID(); 
 
                 }
                 break;
             case 98 :
-                // InternalDescartesQL.g:1:632: RULE_WS
+                // InternalDescartesQL.g:1:607: RULE_INT
                 {
-                mRULE_WS(); 
+                mRULE_INT(); 
 
                 }
                 break;
             case 99 :
-                // InternalDescartesQL.g:1:640: RULE_ANY_OTHER
+                // InternalDescartesQL.g:1:616: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 100 :
+                // InternalDescartesQL.g:1:628: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 101 :
+                // InternalDescartesQL.g:1:644: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 102 :
+                // InternalDescartesQL.g:1:660: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 103 :
+                // InternalDescartesQL.g:1:668: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3325,24 +3441,24 @@ public class InternalDescartesQLLexer extends Lexer {
 
     protected DFA15 dfa15 = new DFA15(this);
     static final String DFA15_eotS =
-        "\1\uffff\2\70\1\102\1\70\1\114\1\116\1\120\1\122\5\70\1\133\2\uffff\1\136\1\137\1\140\1\141\1\142\1\143\3\70\5\uffff\1\160\2\70\1\166\1\uffff\3\70\2\uffff\3\70\1\uffff\2\u0085\1\65\1\uffff\3\65\2\uffff\2\70\1\uffff\11\70\1\uffff\3\70\1\u009c\5\70\7\uffff\2\70\1\u00a6\5\70\11\uffff\6\70\7\uffff\2\70\1\u00b6\1\70\3\uffff\6\70\2\uffff\3\70\3\uffff\1\u0085\4\uffff\2\70\1\u00c3\2\70\1\u00c6\4\70\1\u00cb\1\u00cc\2\70\1\u00cf\1\u00d0\1\70\1\uffff\1\u00d2\1\u00d4\4\70\1\u00d9\1\70\1\u00db\1\uffff\6\70\1\u00e4\2\70\1\u00e8\1\70\1\u00eb\3\70\1\uffff\5\70\1\u00f4\6\70\1\uffff\2\70\1\uffff\4\70\2\uffff\1\u0101\1\70\2\uffff\1\70\1\uffff\1\70\1\uffff\4\70\1\uffff\1\70\1\uffff\6\70\1\u0110\1\70\1\uffff\3\70\1\uffff\2\70\1\uffff\1\70\1\u0118\3\70\1\u011c\2\70\1\uffff\4\70\1\u0123\7\70\1\uffff\3\70\1\u012e\3\70\1\u0132\6\70\1\uffff\1\70\1\u013a\5\70\1\uffff\2\70\2\uffff\2\70\1\uffff\2\70\2\uffff\1\u0146\1\u0147\10\70\1\uffff\1\u0150\1\u0151\1\70\1\uffff\7\70\1\uffff\12\70\1\u0165\2\uffff\3\70\1\u0169\1\70\1\u016b\2\70\2\uffff\1\70\1\u016f\5\70\1\u0175\1\uffff\1\u0176\2\70\1\u0179\1\70\1\u017b\4\70\1\uffff\1\u0180\2\70\1\uffff\1\u0183\1\uffff\2\70\2\uffff\2\70\1\u0188\2\70\2\uffff\2\70\1\uffff\1\70\1\uffff\3\70\1\u0191\1\uffff\1\70\2\uffff\4\70\1\uffff\1\70\1\u0199\3\70\1\u019d\1\uffff\1\u019e\1\uffff\1\70\1\u01a0\1\70\1\u01a2\1\u01a3\2\70\1\uffff\1\u01a6\1\u01a7\1\70\2\uffff\1\70\1\uffff\1\70\2\uffff\1\70\1\u01ac\2\uffff\1\u01ad\1\uffff\1\u01ae\4\uffff";
+        "\1\uffff\2\70\1\102\1\70\1\114\1\116\1\120\1\122\5\70\1\133\2\uffff\1\136\1\137\1\140\1\141\1\142\1\143\3\70\5\uffff\1\160\2\70\1\166\1\uffff\3\70\2\uffff\3\70\1\uffff\2\u0085\1\65\1\uffff\3\65\2\uffff\2\70\1\uffff\11\70\1\uffff\3\70\1\u009c\5\70\7\uffff\2\70\1\u00a7\5\70\11\uffff\6\70\7\uffff\2\70\1\u00b8\1\70\3\uffff\6\70\2\uffff\3\70\3\uffff\1\u0085\4\uffff\2\70\1\u00c5\3\70\1\u00c9\3\70\1\u00cd\1\u00ce\2\70\1\u00d1\1\u00d2\1\70\1\uffff\1\u00d4\1\u00d6\5\70\1\u00dc\1\70\1\u00de\1\uffff\7\70\1\u00e8\2\70\1\u00ec\1\70\1\u00ef\3\70\1\uffff\5\70\1\u00f8\6\70\1\uffff\3\70\1\uffff\3\70\2\uffff\1\u0105\1\70\2\uffff\1\70\1\uffff\1\70\1\uffff\5\70\1\uffff\1\70\1\uffff\6\70\1\u0115\2\70\1\uffff\3\70\1\uffff\2\70\1\uffff\1\70\1\u011e\3\70\1\u0122\2\70\1\uffff\4\70\1\u0129\7\70\1\uffff\3\70\1\u0134\4\70\1\u0139\6\70\1\uffff\2\70\1\u0142\5\70\1\uffff\2\70\2\uffff\2\70\1\uffff\2\70\2\uffff\1\u014e\1\u014f\10\70\1\uffff\1\u0158\2\70\1\u015b\1\uffff\10\70\1\uffff\12\70\1\u016f\2\uffff\3\70\1\u0173\1\70\1\u0175\2\70\1\uffff\2\70\1\uffff\1\u017a\5\70\1\u0180\1\70\1\uffff\1\u0182\1\70\1\u0185\1\u0186\1\70\1\u0188\4\70\1\uffff\1\u018d\1\u018f\1\70\1\uffff\1\u0191\1\uffff\3\70\2\uffff\2\70\1\u0197\2\70\1\uffff\1\u019a\1\uffff\2\70\2\uffff\1\70\1\uffff\3\70\1\u01a1\3\uffff\1\70\1\uffff\5\70\1\uffff\1\70\1\u01aa\1\uffff\3\70\1\u01ae\1\uffff\1\u01af\1\uffff\1\70\1\u01b1\2\70\1\u01b4\1\u01b5\2\70\1\uffff\1\u01b8\1\u01b9\1\70\2\uffff\1\70\1\uffff\2\70\2\uffff\1\70\1\u01bf\2\uffff\1\u01c0\1\uffff\1\u01c1\1\70\5\uffff";
     static final String DFA15_eofS =
-        "\u01af\uffff";
+        "\u01c3\uffff";
     static final String DFA15_minS =
-        "\1\0\1\105\1\116\1\60\1\104\1\60\3\75\1\123\1\117\1\102\1\116\1\114\1\60\2\uffff\6\60\1\105\1\101\1\105\5\uffff\1\56\1\111\1\105\1\56\1\uffff\1\110\2\111\2\uffff\1\150\1\141\1\151\1\uffff\2\56\1\101\1\uffff\2\0\1\52\2\uffff\1\114\1\106\1\uffff\1\123\1\122\1\120\1\101\1\116\1\114\1\116\1\130\1\101\1\uffff\2\104\1\122\1\60\1\102\1\116\1\104\1\114\1\115\7\uffff\1\104\1\122\1\60\2\123\1\101\1\116\1\130\11\uffff\1\117\1\101\1\111\1\122\1\117\1\116\7\uffff\1\123\1\124\1\60\1\124\3\uffff\1\101\1\124\1\114\1\132\1\122\1\115\2\uffff\1\151\1\162\1\156\3\uffff\1\56\4\uffff\1\124\1\105\1\60\1\125\1\111\1\60\2\114\1\111\1\124\2\60\1\116\1\122\2\60\1\105\1\uffff\2\60\1\103\1\104\1\105\1\120\1\60\1\116\1\60\1\uffff\1\105\1\124\1\123\1\104\1\124\1\115\1\60\1\114\1\104\1\60\1\114\1\60\1\101\2\124\1\uffff\1\127\1\124\1\110\1\124\1\132\1\60\1\105\1\154\1\145\1\144\1\101\1\103\1\uffff\1\122\1\124\1\uffff\1\117\1\125\1\124\1\111\2\uffff\1\60\1\111\2\uffff\1\105\1\uffff\1\106\1\uffff\2\105\1\103\1\114\1\uffff\1\107\1\uffff\1\122\1\101\1\123\1\101\1\124\1\111\1\60\1\105\1\uffff\1\123\1\105\1\111\1\uffff\1\101\1\105\1\uffff\1\114\1\60\1\114\1\105\1\40\1\60\1\105\1\111\1\uffff\1\40\1\144\1\156\1\50\1\60\1\124\1\105\1\111\1\122\1\101\1\117\1\120\1\uffff\1\103\1\115\1\123\1\60\1\126\1\124\1\105\1\60\1\126\1\116\1\122\1\111\1\122\1\124\1\uffff\1\101\1\60\1\104\1\116\1\124\1\116\1\124\1\uffff\2\105\2\uffff\1\122\1\116\1\uffff\1\162\1\164\2\uffff\2\60\1\105\1\101\1\124\1\122\1\114\1\123\1\105\1\121\1\uffff\2\60\1\104\1\uffff\1\105\1\103\1\105\1\116\1\101\1\111\1\116\1\uffff\1\40\1\107\1\111\1\124\1\131\2\116\2\105\1\145\1\60\2\uffff\1\123\1\124\1\105\1\60\1\131\1\60\1\116\1\125\2\uffff\1\40\1\60\1\105\1\107\1\123\1\111\1\117\1\60\1\uffff\1\60\1\117\1\111\1\60\1\105\1\60\1\116\1\104\1\123\1\156\1\uffff\1\60\1\111\1\40\1\uffff\1\60\1\uffff\1\124\1\101\2\uffff\1\117\1\105\1\60\2\116\2\uffff\1\116\1\114\1\uffff\1\103\1\uffff\1\107\1\40\1\123\1\60\1\uffff\1\117\2\uffff\1\123\1\122\1\106\1\130\1\uffff\1\105\1\60\1\123\1\105\1\113\1\60\1\uffff\1\60\1\uffff\1\116\1\60\1\105\2\60\1\104\1\123\1\uffff\2\60\1\123\2\uffff\1\40\1\uffff\1\123\2\uffff\1\40\1\60\2\uffff\1\60\1\uffff\1\60\4\uffff";
+        "\1\0\1\105\1\116\1\60\1\104\1\60\3\75\1\123\1\117\1\102\1\116\1\114\1\60\2\uffff\6\60\1\105\1\101\1\105\5\uffff\1\56\1\111\1\105\1\56\1\uffff\1\110\2\111\2\uffff\1\150\1\141\1\151\1\uffff\2\56\1\101\1\uffff\2\0\1\52\2\uffff\1\114\1\106\1\uffff\1\123\1\101\1\122\1\120\1\116\1\114\1\116\1\130\1\101\1\uffff\2\104\1\122\1\60\1\102\1\116\1\104\1\115\1\114\7\uffff\1\104\1\122\1\60\2\123\1\101\1\116\1\130\11\uffff\1\116\1\101\1\111\1\122\1\117\1\116\7\uffff\1\123\1\124\1\60\1\124\3\uffff\1\101\1\124\1\114\1\132\1\122\1\115\2\uffff\1\151\1\162\1\156\3\uffff\1\56\4\uffff\1\124\1\105\1\60\1\125\1\111\1\114\1\60\1\114\1\111\1\124\2\60\1\116\1\122\2\60\1\105\1\uffff\2\60\1\103\1\104\1\111\1\120\1\105\1\60\1\116\1\60\1\uffff\1\105\1\124\1\123\1\104\1\124\1\115\1\105\1\60\1\114\1\104\1\60\1\114\1\60\1\101\2\124\1\uffff\1\127\1\124\1\110\1\124\1\132\1\60\1\105\1\154\1\145\1\144\1\101\1\103\1\uffff\1\122\1\124\1\125\1\uffff\1\117\1\124\1\111\2\uffff\1\60\1\111\2\uffff\1\105\1\uffff\1\106\1\uffff\2\105\1\123\1\114\1\103\1\uffff\1\107\1\uffff\1\122\1\101\1\123\1\101\1\124\1\111\1\60\1\105\1\122\1\uffff\1\123\1\105\1\111\1\uffff\1\101\1\105\1\uffff\1\114\1\60\1\114\1\105\1\40\1\60\1\105\1\111\1\uffff\1\40\1\144\1\156\1\50\1\60\1\124\1\105\1\111\1\101\1\122\1\117\1\120\1\uffff\1\103\1\115\1\123\1\60\1\126\1\106\1\105\1\124\1\60\1\126\1\116\1\122\1\111\1\122\1\124\1\uffff\2\101\1\60\1\104\1\116\1\124\1\116\1\124\1\uffff\2\105\2\uffff\1\122\1\116\1\uffff\1\162\1\164\2\uffff\2\60\1\105\1\124\1\101\1\122\1\114\1\123\1\105\1\121\1\uffff\1\60\1\101\1\104\1\60\1\uffff\1\105\1\103\1\105\1\116\1\101\1\111\1\116\1\124\1\uffff\1\40\1\107\1\111\1\124\1\131\2\116\2\105\1\145\1\60\2\uffff\1\123\1\105\1\124\1\60\1\131\1\60\1\116\1\125\1\uffff\1\103\1\40\1\uffff\1\60\1\105\1\107\1\123\1\111\1\117\1\60\1\105\1\uffff\1\60\1\117\2\60\1\105\1\60\1\116\1\104\1\123\1\156\1\uffff\1\60\1\40\1\111\1\uffff\1\60\1\uffff\1\124\1\101\1\124\2\uffff\1\117\1\105\1\60\2\116\1\uffff\1\60\1\uffff\1\116\1\114\2\uffff\1\103\1\uffff\1\107\1\40\1\123\1\60\3\uffff\1\117\1\uffff\1\123\1\122\1\111\1\106\1\130\1\uffff\1\105\1\60\1\uffff\1\123\1\105\1\113\1\60\1\uffff\1\60\1\uffff\1\116\1\60\1\105\1\117\2\60\1\104\1\123\1\uffff\2\60\1\123\2\uffff\1\40\1\uffff\1\123\1\116\2\uffff\1\40\1\60\2\uffff\1\60\1\uffff\1\60\1\55\5\uffff";
     static final String DFA15_maxS =
-        "\1\uffff\1\117\1\130\1\172\1\123\1\172\3\75\1\123\1\117\1\122\1\116\1\117\1\172\2\uffff\6\172\1\125\1\111\1\105\5\uffff\1\56\1\111\1\131\1\56\1\uffff\1\111\1\125\1\111\2\uffff\1\150\1\141\1\151\1\uffff\1\56\1\71\1\172\1\uffff\2\uffff\1\57\2\uffff\1\124\1\106\1\uffff\1\124\1\122\1\120\1\101\1\116\1\114\1\116\1\130\1\124\1\uffff\2\104\1\122\1\172\1\115\1\116\1\104\1\114\1\115\7\uffff\1\111\1\122\1\172\2\123\1\101\1\116\1\130\11\uffff\1\124\1\101\1\111\1\122\1\117\1\122\7\uffff\1\123\1\124\1\172\1\124\3\uffff\1\101\1\124\1\114\1\132\1\122\1\115\2\uffff\1\151\1\162\1\156\3\uffff\1\71\4\uffff\1\124\1\105\1\172\1\125\1\111\1\172\2\114\1\111\1\124\2\172\1\116\1\122\2\172\1\105\1\uffff\2\172\1\103\1\104\1\105\1\120\1\172\1\116\1\172\1\uffff\1\105\1\124\1\123\2\124\1\115\1\172\1\114\1\104\1\172\1\114\1\172\1\101\2\124\1\uffff\1\127\1\124\1\110\1\124\1\132\1\172\1\105\1\154\1\145\1\144\1\101\1\103\1\uffff\1\122\1\124\1\uffff\1\117\1\125\1\124\1\111\2\uffff\1\172\1\111\2\uffff\1\105\1\uffff\1\106\1\uffff\2\105\1\103\1\114\1\uffff\1\107\1\uffff\1\122\1\101\1\123\1\101\1\124\1\111\1\172\1\105\1\uffff\1\123\1\105\1\111\1\uffff\1\101\1\105\1\uffff\1\114\1\172\1\114\1\105\1\40\1\172\1\105\1\111\1\uffff\1\40\1\144\1\156\1\50\1\172\1\124\1\105\1\111\1\122\1\101\1\117\1\120\1\uffff\1\103\1\115\1\123\1\172\1\126\1\124\1\105\1\172\1\126\1\116\1\122\1\111\1\122\1\124\1\uffff\1\101\1\172\1\104\1\116\1\124\1\116\1\124\1\uffff\2\105\2\uffff\1\122\1\116\1\uffff\1\162\1\164\2\uffff\2\172\1\105\1\101\1\124\1\122\1\114\1\123\1\105\1\121\1\uffff\2\172\1\104\1\uffff\1\105\1\103\1\105\1\116\1\101\1\111\1\116\1\uffff\1\40\1\107\1\111\1\124\1\131\2\116\1\111\1\105\1\145\1\172\2\uffff\1\123\1\124\1\105\1\172\1\131\1\172\1\116\1\125\2\uffff\1\40\1\172\1\105\1\107\1\123\1\111\1\117\1\172\1\uffff\1\172\1\117\1\111\1\172\1\105\1\172\1\116\1\104\1\123\1\156\1\uffff\1\172\1\111\1\40\1\uffff\1\172\1\uffff\1\124\1\101\2\uffff\1\117\1\105\1\172\2\116\2\uffff\1\116\1\114\1\uffff\1\103\1\uffff\1\107\1\40\1\123\1\172\1\uffff\1\117\2\uffff\1\123\1\122\1\106\1\130\1\uffff\1\124\1\172\1\123\1\105\1\113\1\172\1\uffff\1\172\1\uffff\1\116\1\172\1\105\2\172\1\104\1\123\1\uffff\2\172\1\123\2\uffff\1\40\1\uffff\1\123\2\uffff\1\40\1\172\2\uffff\1\172\1\uffff\1\172\4\uffff";
+        "\1\uffff\1\117\1\130\1\172\1\123\1\172\3\75\1\123\1\117\1\122\1\116\1\117\1\172\2\uffff\6\172\1\125\1\111\1\105\5\uffff\1\56\1\111\1\131\1\56\1\uffff\1\111\1\125\1\111\2\uffff\1\150\1\141\1\151\1\uffff\1\56\1\71\1\172\1\uffff\2\uffff\1\57\2\uffff\1\124\1\106\1\uffff\1\124\1\101\1\122\1\120\1\116\1\114\1\116\1\130\1\124\1\uffff\2\104\1\122\1\172\1\115\1\116\1\104\1\124\1\114\7\uffff\1\111\1\122\1\172\2\123\1\101\1\116\1\130\11\uffff\1\124\1\101\1\111\1\122\1\117\1\122\7\uffff\1\123\1\124\1\172\1\124\3\uffff\1\101\1\124\1\114\1\132\1\122\1\115\2\uffff\1\151\1\162\1\156\3\uffff\1\71\4\uffff\1\124\1\105\1\172\1\125\1\111\1\114\1\172\1\114\1\111\1\124\2\172\1\116\1\122\2\172\1\105\1\uffff\2\172\1\103\1\104\1\111\1\120\1\105\1\172\1\116\1\172\1\uffff\1\105\1\124\1\123\2\124\1\115\1\105\1\172\1\114\1\104\1\172\1\114\1\172\1\101\2\124\1\uffff\1\127\1\124\1\110\1\124\1\132\1\172\1\105\1\154\1\145\1\144\1\101\1\103\1\uffff\1\122\1\124\1\125\1\uffff\1\117\1\124\1\111\2\uffff\1\172\1\111\2\uffff\1\105\1\uffff\1\106\1\uffff\2\105\1\123\1\114\1\103\1\uffff\1\107\1\uffff\1\122\1\101\1\123\1\101\1\124\1\111\1\172\1\105\1\122\1\uffff\1\123\1\105\1\111\1\uffff\1\101\1\105\1\uffff\1\114\1\172\1\114\1\105\1\40\1\172\1\105\1\111\1\uffff\1\40\1\144\1\156\1\50\1\172\1\124\1\105\1\111\1\101\1\122\1\117\1\120\1\uffff\1\103\1\115\1\123\1\172\1\126\1\106\1\105\1\124\1\172\1\126\1\116\1\122\1\111\1\122\1\124\1\uffff\2\101\1\172\1\104\1\116\1\124\1\116\1\124\1\uffff\2\105\2\uffff\1\122\1\116\1\uffff\1\162\1\164\2\uffff\2\172\1\105\1\124\1\101\1\122\1\114\1\123\1\105\1\121\1\uffff\1\172\1\101\1\104\1\172\1\uffff\1\105\1\103\1\105\1\116\1\101\1\111\1\116\1\124\1\uffff\1\40\1\107\1\111\1\124\1\131\2\116\1\111\1\105\1\145\1\172\2\uffff\1\123\1\105\1\124\1\172\1\131\1\172\1\116\1\125\1\uffff\1\103\1\40\1\uffff\1\172\1\105\1\107\1\123\1\111\1\117\1\172\1\105\1\uffff\1\172\1\117\2\172\1\105\1\172\1\116\1\104\1\123\1\156\1\uffff\2\172\1\111\1\uffff\1\172\1\uffff\1\124\1\101\1\124\2\uffff\1\117\1\105\1\172\2\116\1\uffff\1\172\1\uffff\1\116\1\114\2\uffff\1\103\1\uffff\1\107\1\40\1\123\1\172\3\uffff\1\117\1\uffff\1\123\1\122\1\111\1\106\1\130\1\uffff\1\124\1\172\1\uffff\1\123\1\105\1\113\1\172\1\uffff\1\172\1\uffff\1\116\1\172\1\105\1\117\2\172\1\104\1\123\1\uffff\2\172\1\123\2\uffff\1\40\1\uffff\1\123\1\116\2\uffff\1\40\1\172\2\uffff\1\172\1\uffff\1\172\1\55\5\uffff";
     static final String DFA15_acceptS =
-        "\17\uffff\1\25\1\26\11\uffff\1\51\1\52\1\54\1\55\1\56\4\uffff\1\75\3\uffff\1\114\1\115\3\uffff\1\133\3\uffff\1\135\3\uffff\1\142\1\143\2\uffff\1\135\11\uffff\1\34\11\uffff\1\36\1\10\1\7\1\12\1\11\1\13\1\70\10\uffff\1\42\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\35\6\uffff\1\51\1\52\1\54\1\55\1\56\1\74\1\57\4\uffff\1\72\1\71\1\75\6\uffff\1\114\1\115\3\uffff\1\133\1\134\1\136\1\uffff\1\137\1\140\1\141\1\142\21\uffff\1\123\11\uffff\1\20\17\uffff\1\73\14\uffff\1\107\2\uffff\1\14\4\uffff\1\37\1\40\2\uffff\1\4\1\16\1\uffff\1\5\1\uffff\1\43\4\uffff\1\15\1\uffff\1\17\10\uffff\1\63\3\uffff\1\46\2\uffff\1\60\10\uffff\1\122\14\uffff\1\50\16\uffff\1\24\7\uffff\1\62\2\uffff\1\76\1\125\2\uffff\1\106\2\uffff\1\121\1\1\12\uffff\1\23\3\uffff\1\124\7\uffff\1\101\13\uffff\1\65\1\2\10\uffff\1\45\1\64\10\uffff\1\113\12\uffff\1\120\3\uffff\1\3\1\uffff\1\111\2\uffff\1\131\1\130\5\uffff\1\41\1\116\2\uffff\1\103\1\uffff\1\132\4\uffff\1\110\1\uffff\1\112\1\6\4\uffff\1\53\6\uffff\1\126\1\uffff\1\117\7\uffff\1\127\3\uffff\1\77\1\102\1\uffff\1\100\1\uffff\1\21\1\22\2\uffff\1\61\1\47\1\uffff\1\105\1\uffff\1\67\1\104\1\66\1\44";
+        "\17\uffff\1\26\1\27\11\uffff\1\52\1\56\1\60\1\61\1\62\4\uffff\1\101\3\uffff\1\120\1\121\3\uffff\1\137\3\uffff\1\141\3\uffff\1\146\1\147\2\uffff\1\141\11\uffff\1\35\11\uffff\1\37\1\11\1\10\1\13\1\12\1\14\1\74\10\uffff\1\43\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\36\6\uffff\1\52\1\56\1\60\1\61\1\62\1\100\1\63\4\uffff\1\76\1\75\1\101\6\uffff\1\120\1\121\3\uffff\1\137\1\140\1\142\1\uffff\1\143\1\144\1\145\1\146\21\uffff\1\127\12\uffff\1\21\20\uffff\1\77\14\uffff\1\113\3\uffff\1\15\3\uffff\1\40\1\41\2\uffff\1\5\1\17\1\uffff\1\6\1\uffff\1\44\5\uffff\1\16\1\uffff\1\20\11\uffff\1\67\3\uffff\1\47\2\uffff\1\64\10\uffff\1\126\14\uffff\1\51\17\uffff\1\25\10\uffff\1\66\2\uffff\1\102\1\131\2\uffff\1\112\2\uffff\1\125\1\1\12\uffff\1\24\4\uffff\1\130\10\uffff\1\105\13\uffff\1\71\1\2\10\uffff\1\46\2\uffff\1\70\10\uffff\1\117\12\uffff\1\124\3\uffff\1\3\1\uffff\1\115\3\uffff\1\135\1\134\5\uffff\1\42\1\uffff\1\122\2\uffff\1\55\1\107\1\uffff\1\136\4\uffff\1\114\1\116\1\4\1\uffff\1\7\5\uffff\1\57\2\uffff\1\53\4\uffff\1\132\1\uffff\1\123\10\uffff\1\133\3\uffff\1\103\1\106\1\uffff\1\104\2\uffff\1\22\1\23\2\uffff\1\65\1\50\1\uffff\1\111\2\uffff\1\73\1\110\1\72\1\45\1\54";
     static final String DFA15_specialS =
-        "\1\1\60\uffff\1\0\1\2\u017c\uffff}>";
+        "\1\0\60\uffff\1\1\1\2\u0190\uffff}>";
     static final String[] DFA15_transitionS = {
             "\11\65\2\64\2\65\1\64\22\65\1\64\1\65\1\61\2\65\1\54\1\65\1\62\1\34\1\35\1\37\1\20\1\33\1\17\1\42\1\63\1\55\11\56\1\36\1\32\1\6\1\10\1\7\1\65\1\43\1\4\1\41\1\15\1\1\1\2\1\45\1\27\1\60\1\14\2\60\1\40\1\3\1\16\1\13\1\31\2\60\1\5\1\46\1\11\1\30\1\44\1\12\2\60\1\47\1\65\1\50\1\57\1\60\1\65\2\60\1\51\1\24\1\60\1\53\1\60\1\25\4\60\1\22\2\60\1\52\2\60\1\26\3\60\1\23\1\60\1\21\1\60\uff85\65",
             "\1\66\11\uffff\1\67",
-            "\1\71\6\uffff\1\72\1\74\1\uffff\1\73",
+            "\1\71\6\uffff\1\73\1\72\1\uffff\1\74",
             "\12\70\7\uffff\1\100\3\70\1\101\3\70\1\77\5\70\1\75\5\70\1\76\5\70\4\uffff\1\70\1\uffff\32\70",
             "\1\103\2\uffff\1\105\6\uffff\1\104\4\uffff\1\106",
-            "\12\70\7\uffff\1\113\3\70\1\112\3\70\1\110\12\70\1\111\1\107\5\70\4\uffff\1\70\1\uffff\32\70",
+            "\12\70\7\uffff\1\112\3\70\1\113\3\70\1\110\12\70\1\111\1\107\5\70\4\uffff\1\70\1\uffff\32\70",
             "\1\115",
             "\1\117",
             "\1\121",
@@ -3411,8 +3527,8 @@ public class InternalDescartesQLLexer extends Lexer {
             "\1\u009d\12\uffff\1\u009e",
             "\1\u009f",
             "\1\u00a0",
-            "\1\u00a1",
-            "\1\u00a2",
+            "\1\u00a2\6\uffff\1\u00a1",
+            "\1\u00a3",
             "",
             "",
             "",
@@ -3420,14 +3536,14 @@ public class InternalDescartesQLLexer extends Lexer {
             "",
             "",
             "",
-            "\1\u00a3\4\uffff\1\u00a4",
-            "\1\u00a5",
+            "\1\u00a4\4\uffff\1\u00a5",
+            "\1\u00a6",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u00a7",
             "\1\u00a8",
             "\1\u00a9",
             "\1\u00aa",
             "\1\u00ab",
+            "\1\u00ac",
             "",
             "",
             "",
@@ -3437,12 +3553,12 @@ public class InternalDescartesQLLexer extends Lexer {
             "",
             "",
             "",
-            "\1\u00ac\4\uffff\1\u00ad",
-            "\1\u00ae",
-            "\1\u00af",
+            "\1\u00ae\1\u00ad\4\uffff\1\u00af",
             "\1\u00b0",
             "\1\u00b1",
-            "\1\u00b3\3\uffff\1\u00b2",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b5\3\uffff\1\u00b4",
             "",
             "",
             "",
@@ -3450,24 +3566,24 @@ public class InternalDescartesQLLexer extends Lexer {
             "",
             "",
             "",
-            "\1\u00b4",
-            "\1\u00b5",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00b6",
             "\1\u00b7",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00b9",
             "",
             "",
             "",
-            "\1\u00b8",
-            "\1\u00b9",
             "\1\u00ba",
             "\1\u00bb",
             "\1\u00bc",
             "\1\u00bd",
-            "",
-            "",
             "\1\u00be",
             "\1\u00bf",
+            "",
+            "",
             "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
             "",
             "",
             "",
@@ -3476,142 +3592,139 @@ public class InternalDescartesQLLexer extends Lexer {
             "",
             "",
             "",
-            "\1\u00c1",
-            "\1\u00c2",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00c3",
             "\1\u00c4",
-            "\1\u00c5",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00c6",
             "\1\u00c7",
             "\1\u00c8",
-            "\1\u00c9",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u00cd",
-            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u00d1",
+            "\1\u00d3",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\12\70\7\uffff\16\70\1\u00d3\13\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u00d5",
-            "\1\u00d6",
+            "\12\70\7\uffff\16\70\1\u00d5\13\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00d7",
             "\1\u00d8",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00d9",
             "\1\u00da",
+            "\1\u00db",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "",
-            "\1\u00dc",
             "\1\u00dd",
-            "\1\u00de",
-            "\1\u00e1\16\uffff\1\u00e0\1\u00df",
-            "\1\u00e2",
-            "\1\u00e3",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e4\16\uffff\1\u00e3\1\u00e2",
             "\1\u00e5",
             "\1\u00e6",
-            "\12\70\7\uffff\30\70\1\u00e7\1\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00e7",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00e9",
-            "\12\70\7\uffff\2\70\1\u00ea\27\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u00ec",
+            "\1\u00ea",
+            "\12\70\7\uffff\30\70\1\u00eb\1\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00ed",
-            "\1\u00ee",
-            "",
-            "\1\u00ef",
+            "\12\70\7\uffff\2\70\1\u00ee\27\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
+            "",
             "\1\u00f3",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00f4",
             "\1\u00f5",
             "\1\u00f6",
             "\1\u00f7",
-            "\1\u00f8",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u00f9",
             "\1\u00fa",
-            "",
             "\1\u00fb",
             "\1\u00fc",
-            "",
             "\1\u00fd",
             "\1\u00fe",
+            "",
             "\1\u00ff",
             "\1\u0100",
+            "\1\u0101",
             "",
-            "",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0102",
-            "",
-            "",
             "\1\u0103",
-            "",
             "\1\u0104",
             "",
-            "\1\u0105",
+            "",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0106",
+            "",
+            "",
             "\1\u0107",
+            "",
             "\1\u0108",
             "",
             "\1\u0109",
-            "",
             "\1\u010a",
             "\1\u010b",
             "\1\u010c",
             "\1\u010d",
+            "",
             "\1\u010e",
+            "",
             "\1\u010f",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0110",
             "\1\u0111",
-            "",
             "\1\u0112",
             "\1\u0113",
             "\1\u0114",
-            "",
-            "\1\u0115",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0116",
-            "",
             "\1\u0117",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u0118",
             "\1\u0119",
             "\1\u011a",
+            "",
             "\1\u011b",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u011d",
-            "\1\u011e",
+            "\1\u011c",
             "",
+            "\1\u011d",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u011f",
             "\1\u0120",
             "\1\u0121",
-            "\1\u0122",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0123",
             "\1\u0124",
+            "",
             "\1\u0125",
             "\1\u0126",
             "\1\u0127",
             "\1\u0128",
-            "\1\u0129",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u012a",
-            "",
             "\1\u012b",
             "\1\u012c",
             "\1\u012d",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u012e",
             "\1\u012f",
             "\1\u0130",
+            "",
             "\1\u0131",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0132",
             "\1\u0133",
-            "\1\u0134",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0135",
             "\1\u0136",
             "\1\u0137",
             "\1\u0138",
-            "",
-            "\1\u0139",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u013a",
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
@@ -3620,150 +3733,173 @@ public class InternalDescartesQLLexer extends Lexer {
             "",
             "\1\u0140",
             "\1\u0141",
-            "",
-            "",
-            "\1\u0142",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0143",
-            "",
             "\1\u0144",
             "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
             "",
-            "",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0148",
             "\1\u0149",
+            "",
+            "",
             "\1\u014a",
             "\1\u014b",
+            "",
             "\1\u014c",
             "\1\u014d",
-            "\1\u014e",
-            "\1\u014f",
+            "",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0150",
+            "\1\u0151",
             "\1\u0152",
-            "",
             "\1\u0153",
             "\1\u0154",
             "\1\u0155",
             "\1\u0156",
             "\1\u0157",
-            "\1\u0158",
-            "\1\u0159",
             "",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0159",
             "\1\u015a",
-            "\1\u015b",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
             "\1\u015f",
             "\1\u0160",
-            "\1\u0162\3\uffff\1\u0161",
+            "\1\u0161",
+            "\1\u0162",
             "\1\u0163",
-            "\1\u0164",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "",
             "",
+            "\1\u0164",
+            "\1\u0165",
             "\1\u0166",
             "\1\u0167",
             "\1\u0168",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0169",
             "\1\u016a",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u016c",
+            "\1\u016c\3\uffff\1\u016b",
             "\1\u016d",
-            "",
-            "",
             "\1\u016e",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
-            "\1\u0173",
-            "\1\u0174",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "",
+            "\1\u0174",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0176",
             "\1\u0177",
+            "",
             "\1\u0178",
+            "\1\u0179",
+            "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u017a",
-            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u017b",
             "\1\u017c",
             "\1\u017d",
             "\1\u017e",
             "\1\u017f",
-            "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0181",
-            "\1\u0182",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "",
-            "\1\u0184",
-            "\1\u0185",
-            "",
-            "",
-            "\1\u0186",
+            "\1\u0183",
+            "\12\70\7\uffff\10\70\1\u0184\21\70\4\uffff\1\70\1\uffff\32\70",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0187",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0189",
             "\1\u018a",
-            "",
-            "",
             "\1\u018b",
             "\1\u018c",
             "",
-            "\1\u018d",
-            "",
-            "\1\u018e",
-            "\1\u018f",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u018e\17\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\1\u0190",
+            "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "",
             "\1\u0192",
-            "",
-            "",
             "\1\u0193",
             "\1\u0194",
+            "",
+            "",
             "\1\u0195",
             "\1\u0196",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0198",
+            "\1\u0199",
             "",
-            "\1\u0197\16\uffff\1\u0198",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u019a",
+            "",
             "\1\u019b",
             "\1\u019c",
+            "",
+            "",
+            "\1\u019d",
+            "",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "",
+            "",
+            "",
+            "\1\u01a2",
+            "",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "",
+            "\1\u01a8\16\uffff\1\u01a9",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "",
-            "\1\u019f",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u01a1",
+            "",
+            "\1\u01b0",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01b2",
+            "\1\u01b3",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u01a4",
-            "\1\u01a5",
+            "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01b6",
+            "\1\u01b7",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
-            "\1\u01a8",
+            "\1\u01ba",
             "",
             "",
-            "\1\u01a9",
+            "\1\u01bb",
             "",
-            "\1\u01aa",
+            "\1\u01bc",
+            "\1\u01bd",
             "",
             "",
-            "\1\u01ab",
+            "\1\u01be",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
             "",
             "\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01c2",
+            "",
             "",
             "",
             "",
@@ -3800,23 +3936,13 @@ public class InternalDescartesQLLexer extends Lexer {
             this.transition = DFA15_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DOUBLE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DOUBLE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA15_49 = input.LA(1);
-
-                        s = -1;
-                        if ( ((LA15_49>='\u0000' && LA15_49<='\uFFFF')) ) {s = 135;}
-
-                        else s = 53;
-
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
                         int LA15_0 = input.LA(1);
 
                         s = -1;
@@ -3926,6 +4052,16 @@ public class InternalDescartesQLLexer extends Lexer {
 
                         else if ( ((LA15_0>='\u0000' && LA15_0<='\b')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\u001F')||LA15_0=='!'||(LA15_0>='#' && LA15_0<='$')||LA15_0=='&'||LA15_0=='?'||LA15_0=='\\'||LA15_0=='`'||(LA15_0>='{' && LA15_0<='\uFFFF')) ) {s = 53;}
 
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA15_49 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA15_49>='\u0000' && LA15_49<='\uFFFF')) ) {s = 135;}
+
+                        else s = 53;
+
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
diff --git a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLParser.java b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLParser.java
index 0de484ba6fd5f127798862803b8d72b50ee36633..e3032a58229559499f64d52f960cfa7259cff70d 100644
--- a/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLParser.java
+++ b/lang/tools.descartes.dql.lang.ui/src-gen/tools/descartes/dql/lang/ui/contentassist/antlr/internal/InternalDescartesQLParser.java
@@ -48,7 +48,7 @@ import java.util.ArrayList;
 @SuppressWarnings("all")
 public class InternalDescartesQLParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_DOUBLE", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'DELTA'", "'ENSURE'", "'MONITOR'", "'ADD'", "'SUB'", "'MULTIPLY'", "'<'", "'<='", "'>'", "'>='", "'=='", "'EUR'", "'USD'", "'AND'", "'XOR'", "'OR'", "'INSTANCEOF'", "'CLASSREGEX'", "'SINCE'", "'NEXT'", "'-'", "'+'", "'y'", "'m'", "'w'", "'d'", "'h'", "'M'", "'s'", "'S'", "'MIN'", "'MAX'", "'GEOMEAN'", "'N'", "'SUM'", "'SUMOFSQUARES'", "'STDDEV'", "'VAR'", "'PERCENTILE'", "'MEAN'", "';'", "','", "'CONTAINS'", "'('", "')'", "':'", "'*'", "'PER'", "'VIOLATIONS'", "'LIST'", "'GET'", "'SELECT'", "'DETECT'", "'BOTTLENECKS'", "'CONSTRAINED AS'", "'='", "'.'", "'..'", "'BY'", "'*.'", "'@'", "'WHAT IF'", "'FILTERING'", "'AGREEMENTS'", "'GOALS'", "'FUZZINESS'", "'PENALTY'", "'CONSTRAINTS'", "'EXPLORATION STRATEGIES'", "'TIME UNITS'", "'DOF'", "'ENTITIES'", "'METRICS'", "'EVALUATE DOF'", "'GUIDED BY'", "'['", "']'", "'VARYING'", "'children'", "'parent'", "'find('", "'FOR'", "'AS'", "'USING'", "'WITH'", "'FILTERED BY'", "'CONDITION'", "'OBSERVE'", "'SAMPLED BY'", "'BETWEEN'", "'%'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_DOUBLE", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'DELTA'", "'ENSURE'", "'MONITOR'", "'EVALUATE'", "'ADD'", "'SUB'", "'MULTIPLY'", "'<'", "'<='", "'>'", "'>='", "'=='", "'EUR'", "'USD'", "'AND'", "'XOR'", "'OR'", "'INSTANCEOF'", "'CLASSREGEX'", "'SINCE'", "'NEXT'", "'-'", "'+'", "'y'", "'m'", "'w'", "'d'", "'h'", "'M'", "'s'", "'S'", "'MIN'", "'MAX'", "'GEOMEAN'", "'N'", "'SUM'", "'SUMOFSQUARES'", "'STDDEV'", "'VAR'", "'PERCENTILE'", "'MEAN'", "';'", "'GENERATE'", "'SATISFACTION-LEVEL'", "'PERCENT'", "','", "'CONTAINS'", "'('", "')'", "':'", "'*'", "'PER'", "'VIOLATIONS'", "'LIST'", "'GET'", "'SELECT'", "'DETECT'", "'BOTTLENECKS'", "'CONSTRAINED AS'", "'='", "'.'", "'..'", "'BY'", "'*.'", "'@'", "'WHAT IF'", "'FILTERING'", "'AGREEMENTS'", "'GOALS'", "'FUZZINESS'", "'PENALTY'", "'CONSTRAINTS'", "'EXPLORATION STRATEGIES'", "'TIME UNITS'", "'DOF'", "'ENTITIES'", "'METRICS'", "'EVALUATE DOF'", "'GUIDED BY'", "'['", "']'", "'VARYING'", "'children'", "'parent'", "'find('", "'FOR'", "'AS'", "'USING'", "'WITH'", "'FILTERED BY'", "'CONDITION'", "'OBSERVE'", "'SAMPLED BY'", "'BETWEEN'", "'%'"
     };
     public static final int T__50=50;
     public static final int T__59=59;
@@ -62,8 +62,8 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=4;
-    public static final int RULE_INT=5;
+    public static final int RULE_ID=5;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=8;
     public static final int T__67=67;
@@ -129,7 +129,7 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     public static final int T__72=72;
     public static final int RULE_STRING=7;
     public static final int RULE_SL_COMMENT=9;
-    public static final int RULE_DOUBLE=6;
+    public static final int RULE_DOUBLE=4;
     public static final int T__77=77;
     public static final int T__78=78;
     public static final int T__79=79;
@@ -147,9 +147,13 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -342,12 +346,89 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "ruleGoal"
 
 
+    // $ANTLR start "entryRuleGenerateSLAConcern"
+    // InternalDescartesQL.g:139:1: entryRuleGenerateSLAConcern : ruleGenerateSLAConcern EOF ;
+    public final void entryRuleGenerateSLAConcern() throws RecognitionException {
+        try {
+            // InternalDescartesQL.g:140:1: ( ruleGenerateSLAConcern EOF )
+            // InternalDescartesQL.g:141:1: ruleGenerateSLAConcern EOF
+            {
+             before(grammarAccess.getGenerateSLAConcernRule()); 
+            pushFollow(FOLLOW_1);
+            ruleGenerateSLAConcern();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenerateSLAConcernRule()); 
+            match(input,EOF,FOLLOW_2); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleGenerateSLAConcern"
+
+
+    // $ANTLR start "ruleGenerateSLAConcern"
+    // InternalDescartesQL.g:148:1: ruleGenerateSLAConcern : ( ( rule__GenerateSLAConcern__Group__0 ) ) ;
+    public final void ruleGenerateSLAConcern() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:152:2: ( ( ( rule__GenerateSLAConcern__Group__0 ) ) )
+            // InternalDescartesQL.g:153:1: ( ( rule__GenerateSLAConcern__Group__0 ) )
+            {
+            // InternalDescartesQL.g:153:1: ( ( rule__GenerateSLAConcern__Group__0 ) )
+            // InternalDescartesQL.g:154:1: ( rule__GenerateSLAConcern__Group__0 )
+            {
+             before(grammarAccess.getGenerateSLAConcernAccess().getGroup()); 
+            // InternalDescartesQL.g:155:1: ( rule__GenerateSLAConcern__Group__0 )
+            // InternalDescartesQL.g:155:2: rule__GenerateSLAConcern__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__GenerateSLAConcern__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenerateSLAConcernAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleGenerateSLAConcern"
+
+
     // $ANTLR start "entryRuleSlaQuery"
-    // InternalDescartesQL.g:139:1: entryRuleSlaQuery : ruleSlaQuery EOF ;
+    // InternalDescartesQL.g:167:1: entryRuleSlaQuery : ruleSlaQuery EOF ;
     public final void entryRuleSlaQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:140:1: ( ruleSlaQuery EOF )
-            // InternalDescartesQL.g:141:1: ruleSlaQuery EOF
+            // InternalDescartesQL.g:168:1: ( ruleSlaQuery EOF )
+            // InternalDescartesQL.g:169:1: ruleSlaQuery EOF
             {
              before(grammarAccess.getSlaQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -373,21 +454,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSlaQuery"
-    // InternalDescartesQL.g:148:1: ruleSlaQuery : ( ( rule__SlaQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:176:1: ruleSlaQuery : ( ( rule__SlaQuery__Group__0 ) ) ;
     public final void ruleSlaQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:152:2: ( ( ( rule__SlaQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:153:1: ( ( rule__SlaQuery__Group__0 ) )
+            // InternalDescartesQL.g:180:2: ( ( ( rule__SlaQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:181:1: ( ( rule__SlaQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:153:1: ( ( rule__SlaQuery__Group__0 ) )
-            // InternalDescartesQL.g:154:1: ( rule__SlaQuery__Group__0 )
+            // InternalDescartesQL.g:181:1: ( ( rule__SlaQuery__Group__0 ) )
+            // InternalDescartesQL.g:182:1: ( rule__SlaQuery__Group__0 )
             {
              before(grammarAccess.getSlaQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:155:1: ( rule__SlaQuery__Group__0 )
-            // InternalDescartesQL.g:155:2: rule__SlaQuery__Group__0
+            // InternalDescartesQL.g:183:1: ( rule__SlaQuery__Group__0 )
+            // InternalDescartesQL.g:183:2: rule__SlaQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SlaQuery__Group__0();
@@ -420,11 +501,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleSloQuery"
-    // InternalDescartesQL.g:167:1: entryRuleSloQuery : ruleSloQuery EOF ;
+    // InternalDescartesQL.g:195:1: entryRuleSloQuery : ruleSloQuery EOF ;
     public final void entryRuleSloQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:168:1: ( ruleSloQuery EOF )
-            // InternalDescartesQL.g:169:1: ruleSloQuery EOF
+            // InternalDescartesQL.g:196:1: ( ruleSloQuery EOF )
+            // InternalDescartesQL.g:197:1: ruleSloQuery EOF
             {
              before(grammarAccess.getSloQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -450,21 +531,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSloQuery"
-    // InternalDescartesQL.g:176:1: ruleSloQuery : ( ( rule__SloQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:204:1: ruleSloQuery : ( ( rule__SloQuery__Group__0 ) ) ;
     public final void ruleSloQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:180:2: ( ( ( rule__SloQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:181:1: ( ( rule__SloQuery__Group__0 ) )
+            // InternalDescartesQL.g:208:2: ( ( ( rule__SloQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:209:1: ( ( rule__SloQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:181:1: ( ( rule__SloQuery__Group__0 ) )
-            // InternalDescartesQL.g:182:1: ( rule__SloQuery__Group__0 )
+            // InternalDescartesQL.g:209:1: ( ( rule__SloQuery__Group__0 ) )
+            // InternalDescartesQL.g:210:1: ( rule__SloQuery__Group__0 )
             {
              before(grammarAccess.getSloQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:183:1: ( rule__SloQuery__Group__0 )
-            // InternalDescartesQL.g:183:2: rule__SloQuery__Group__0
+            // InternalDescartesQL.g:211:1: ( rule__SloQuery__Group__0 )
+            // InternalDescartesQL.g:211:2: rule__SloQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SloQuery__Group__0();
@@ -497,11 +578,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleSla"
-    // InternalDescartesQL.g:195:1: entryRuleSla : ruleSla EOF ;
+    // InternalDescartesQL.g:223:1: entryRuleSla : ruleSla EOF ;
     public final void entryRuleSla() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:196:1: ( ruleSla EOF )
-            // InternalDescartesQL.g:197:1: ruleSla EOF
+            // InternalDescartesQL.g:224:1: ( ruleSla EOF )
+            // InternalDescartesQL.g:225:1: ruleSla EOF
             {
              before(grammarAccess.getSlaRule()); 
             pushFollow(FOLLOW_1);
@@ -527,21 +608,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSla"
-    // InternalDescartesQL.g:204:1: ruleSla : ( ( rule__Sla__Group__0 ) ) ;
+    // InternalDescartesQL.g:232:1: ruleSla : ( ( rule__Sla__Group__0 ) ) ;
     public final void ruleSla() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:208:2: ( ( ( rule__Sla__Group__0 ) ) )
-            // InternalDescartesQL.g:209:1: ( ( rule__Sla__Group__0 ) )
+            // InternalDescartesQL.g:236:2: ( ( ( rule__Sla__Group__0 ) ) )
+            // InternalDescartesQL.g:237:1: ( ( rule__Sla__Group__0 ) )
             {
-            // InternalDescartesQL.g:209:1: ( ( rule__Sla__Group__0 ) )
-            // InternalDescartesQL.g:210:1: ( rule__Sla__Group__0 )
+            // InternalDescartesQL.g:237:1: ( ( rule__Sla__Group__0 ) )
+            // InternalDescartesQL.g:238:1: ( rule__Sla__Group__0 )
             {
              before(grammarAccess.getSlaAccess().getGroup()); 
-            // InternalDescartesQL.g:211:1: ( rule__Sla__Group__0 )
-            // InternalDescartesQL.g:211:2: rule__Sla__Group__0
+            // InternalDescartesQL.g:239:1: ( rule__Sla__Group__0 )
+            // InternalDescartesQL.g:239:2: rule__Sla__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__Sla__Group__0();
@@ -574,11 +655,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleSlo"
-    // InternalDescartesQL.g:223:1: entryRuleSlo : ruleSlo EOF ;
+    // InternalDescartesQL.g:251:1: entryRuleSlo : ruleSlo EOF ;
     public final void entryRuleSlo() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:224:1: ( ruleSlo EOF )
-            // InternalDescartesQL.g:225:1: ruleSlo EOF
+            // InternalDescartesQL.g:252:1: ( ruleSlo EOF )
+            // InternalDescartesQL.g:253:1: ruleSlo EOF
             {
              before(grammarAccess.getSloRule()); 
             pushFollow(FOLLOW_1);
@@ -604,21 +685,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSlo"
-    // InternalDescartesQL.g:232:1: ruleSlo : ( ( rule__Slo__Group__0 ) ) ;
+    // InternalDescartesQL.g:260:1: ruleSlo : ( ( rule__Slo__Group__0 ) ) ;
     public final void ruleSlo() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:236:2: ( ( ( rule__Slo__Group__0 ) ) )
-            // InternalDescartesQL.g:237:1: ( ( rule__Slo__Group__0 ) )
+            // InternalDescartesQL.g:264:2: ( ( ( rule__Slo__Group__0 ) ) )
+            // InternalDescartesQL.g:265:1: ( ( rule__Slo__Group__0 ) )
             {
-            // InternalDescartesQL.g:237:1: ( ( rule__Slo__Group__0 ) )
-            // InternalDescartesQL.g:238:1: ( rule__Slo__Group__0 )
+            // InternalDescartesQL.g:265:1: ( ( rule__Slo__Group__0 ) )
+            // InternalDescartesQL.g:266:1: ( rule__Slo__Group__0 )
             {
              before(grammarAccess.getSloAccess().getGroup()); 
-            // InternalDescartesQL.g:239:1: ( rule__Slo__Group__0 )
-            // InternalDescartesQL.g:239:2: rule__Slo__Group__0
+            // InternalDescartesQL.g:267:1: ( rule__Slo__Group__0 )
+            // InternalDescartesQL.g:267:2: rule__Slo__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__Slo__Group__0();
@@ -651,11 +732,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWeightedSlo"
-    // InternalDescartesQL.g:251:1: entryRuleWeightedSlo : ruleWeightedSlo EOF ;
+    // InternalDescartesQL.g:279:1: entryRuleWeightedSlo : ruleWeightedSlo EOF ;
     public final void entryRuleWeightedSlo() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:252:1: ( ruleWeightedSlo EOF )
-            // InternalDescartesQL.g:253:1: ruleWeightedSlo EOF
+            // InternalDescartesQL.g:280:1: ( ruleWeightedSlo EOF )
+            // InternalDescartesQL.g:281:1: ruleWeightedSlo EOF
             {
              before(grammarAccess.getWeightedSloRule()); 
             pushFollow(FOLLOW_1);
@@ -681,21 +762,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWeightedSlo"
-    // InternalDescartesQL.g:260:1: ruleWeightedSlo : ( ( rule__WeightedSlo__Group__0 ) ) ;
+    // InternalDescartesQL.g:288:1: ruleWeightedSlo : ( ( rule__WeightedSlo__Group__0 ) ) ;
     public final void ruleWeightedSlo() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:264:2: ( ( ( rule__WeightedSlo__Group__0 ) ) )
-            // InternalDescartesQL.g:265:1: ( ( rule__WeightedSlo__Group__0 ) )
+            // InternalDescartesQL.g:292:2: ( ( ( rule__WeightedSlo__Group__0 ) ) )
+            // InternalDescartesQL.g:293:1: ( ( rule__WeightedSlo__Group__0 ) )
             {
-            // InternalDescartesQL.g:265:1: ( ( rule__WeightedSlo__Group__0 ) )
-            // InternalDescartesQL.g:266:1: ( rule__WeightedSlo__Group__0 )
+            // InternalDescartesQL.g:293:1: ( ( rule__WeightedSlo__Group__0 ) )
+            // InternalDescartesQL.g:294:1: ( rule__WeightedSlo__Group__0 )
             {
              before(grammarAccess.getWeightedSloAccess().getGroup()); 
-            // InternalDescartesQL.g:267:1: ( rule__WeightedSlo__Group__0 )
-            // InternalDescartesQL.g:267:2: rule__WeightedSlo__Group__0
+            // InternalDescartesQL.g:295:1: ( rule__WeightedSlo__Group__0 )
+            // InternalDescartesQL.g:295:2: rule__WeightedSlo__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WeightedSlo__Group__0();
@@ -728,11 +809,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFuzziness"
-    // InternalDescartesQL.g:279:1: entryRuleFuzziness : ruleFuzziness EOF ;
+    // InternalDescartesQL.g:307:1: entryRuleFuzziness : ruleFuzziness EOF ;
     public final void entryRuleFuzziness() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:280:1: ( ruleFuzziness EOF )
-            // InternalDescartesQL.g:281:1: ruleFuzziness EOF
+            // InternalDescartesQL.g:308:1: ( ruleFuzziness EOF )
+            // InternalDescartesQL.g:309:1: ruleFuzziness EOF
             {
              before(grammarAccess.getFuzzinessRule()); 
             pushFollow(FOLLOW_1);
@@ -758,21 +839,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFuzziness"
-    // InternalDescartesQL.g:288:1: ruleFuzziness : ( ( rule__Fuzziness__Group__0 ) ) ;
+    // InternalDescartesQL.g:316:1: ruleFuzziness : ( ( rule__Fuzziness__Group__0 ) ) ;
     public final void ruleFuzziness() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:292:2: ( ( ( rule__Fuzziness__Group__0 ) ) )
-            // InternalDescartesQL.g:293:1: ( ( rule__Fuzziness__Group__0 ) )
+            // InternalDescartesQL.g:320:2: ( ( ( rule__Fuzziness__Group__0 ) ) )
+            // InternalDescartesQL.g:321:1: ( ( rule__Fuzziness__Group__0 ) )
             {
-            // InternalDescartesQL.g:293:1: ( ( rule__Fuzziness__Group__0 ) )
-            // InternalDescartesQL.g:294:1: ( rule__Fuzziness__Group__0 )
+            // InternalDescartesQL.g:321:1: ( ( rule__Fuzziness__Group__0 ) )
+            // InternalDescartesQL.g:322:1: ( rule__Fuzziness__Group__0 )
             {
              before(grammarAccess.getFuzzinessAccess().getGroup()); 
-            // InternalDescartesQL.g:295:1: ( rule__Fuzziness__Group__0 )
-            // InternalDescartesQL.g:295:2: rule__Fuzziness__Group__0
+            // InternalDescartesQL.g:323:1: ( rule__Fuzziness__Group__0 )
+            // InternalDescartesQL.g:323:2: rule__Fuzziness__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__Fuzziness__Group__0();
@@ -805,11 +886,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRulePenalty"
-    // InternalDescartesQL.g:307:1: entryRulePenalty : rulePenalty EOF ;
+    // InternalDescartesQL.g:335:1: entryRulePenalty : rulePenalty EOF ;
     public final void entryRulePenalty() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:308:1: ( rulePenalty EOF )
-            // InternalDescartesQL.g:309:1: rulePenalty EOF
+            // InternalDescartesQL.g:336:1: ( rulePenalty EOF )
+            // InternalDescartesQL.g:337:1: rulePenalty EOF
             {
              before(grammarAccess.getPenaltyRule()); 
             pushFollow(FOLLOW_1);
@@ -835,21 +916,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rulePenalty"
-    // InternalDescartesQL.g:316:1: rulePenalty : ( ( rule__Penalty__Group__0 ) ) ;
+    // InternalDescartesQL.g:344:1: rulePenalty : ( ( rule__Penalty__Group__0 ) ) ;
     public final void rulePenalty() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:320:2: ( ( ( rule__Penalty__Group__0 ) ) )
-            // InternalDescartesQL.g:321:1: ( ( rule__Penalty__Group__0 ) )
+            // InternalDescartesQL.g:348:2: ( ( ( rule__Penalty__Group__0 ) ) )
+            // InternalDescartesQL.g:349:1: ( ( rule__Penalty__Group__0 ) )
             {
-            // InternalDescartesQL.g:321:1: ( ( rule__Penalty__Group__0 ) )
-            // InternalDescartesQL.g:322:1: ( rule__Penalty__Group__0 )
+            // InternalDescartesQL.g:349:1: ( ( rule__Penalty__Group__0 ) )
+            // InternalDescartesQL.g:350:1: ( rule__Penalty__Group__0 )
             {
              before(grammarAccess.getPenaltyAccess().getGroup()); 
-            // InternalDescartesQL.g:323:1: ( rule__Penalty__Group__0 )
-            // InternalDescartesQL.g:323:2: rule__Penalty__Group__0
+            // InternalDescartesQL.g:351:1: ( rule__Penalty__Group__0 )
+            // InternalDescartesQL.g:351:2: rule__Penalty__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__Penalty__Group__0();
@@ -882,11 +963,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleViolation"
-    // InternalDescartesQL.g:335:1: entryRuleViolation : ruleViolation EOF ;
+    // InternalDescartesQL.g:363:1: entryRuleViolation : ruleViolation EOF ;
     public final void entryRuleViolation() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:336:1: ( ruleViolation EOF )
-            // InternalDescartesQL.g:337:1: ruleViolation EOF
+            // InternalDescartesQL.g:364:1: ( ruleViolation EOF )
+            // InternalDescartesQL.g:365:1: ruleViolation EOF
             {
              before(grammarAccess.getViolationRule()); 
             pushFollow(FOLLOW_1);
@@ -912,31 +993,31 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleViolation"
-    // InternalDescartesQL.g:344:1: ruleViolation : ( ( rule__Violation__Group__0 ) ) ;
+    // InternalDescartesQL.g:372:1: ruleViolation : ( ( rule__Violation__Alternatives ) ) ;
     public final void ruleViolation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:348:2: ( ( ( rule__Violation__Group__0 ) ) )
-            // InternalDescartesQL.g:349:1: ( ( rule__Violation__Group__0 ) )
+            // InternalDescartesQL.g:376:2: ( ( ( rule__Violation__Alternatives ) ) )
+            // InternalDescartesQL.g:377:1: ( ( rule__Violation__Alternatives ) )
             {
-            // InternalDescartesQL.g:349:1: ( ( rule__Violation__Group__0 ) )
-            // InternalDescartesQL.g:350:1: ( rule__Violation__Group__0 )
+            // InternalDescartesQL.g:377:1: ( ( rule__Violation__Alternatives ) )
+            // InternalDescartesQL.g:378:1: ( rule__Violation__Alternatives )
             {
-             before(grammarAccess.getViolationAccess().getGroup()); 
-            // InternalDescartesQL.g:351:1: ( rule__Violation__Group__0 )
-            // InternalDescartesQL.g:351:2: rule__Violation__Group__0
+             before(grammarAccess.getViolationAccess().getAlternatives()); 
+            // InternalDescartesQL.g:379:1: ( rule__Violation__Alternatives )
+            // InternalDescartesQL.g:379:2: rule__Violation__Alternatives
             {
             pushFollow(FOLLOW_2);
-            rule__Violation__Group__0();
+            rule__Violation__Alternatives();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getViolationAccess().getGroup()); 
+             after(grammarAccess.getViolationAccess().getAlternatives()); 
 
             }
 
@@ -959,11 +1040,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleModelStructureQuery"
-    // InternalDescartesQL.g:363:1: entryRuleModelStructureQuery : ruleModelStructureQuery EOF ;
+    // InternalDescartesQL.g:391:1: entryRuleModelStructureQuery : ruleModelStructureQuery EOF ;
     public final void entryRuleModelStructureQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:364:1: ( ruleModelStructureQuery EOF )
-            // InternalDescartesQL.g:365:1: ruleModelStructureQuery EOF
+            // InternalDescartesQL.g:392:1: ( ruleModelStructureQuery EOF )
+            // InternalDescartesQL.g:393:1: ruleModelStructureQuery EOF
             {
              before(grammarAccess.getModelStructureQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -989,17 +1070,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleModelStructureQuery"
-    // InternalDescartesQL.g:372:1: ruleModelStructureQuery : ( ruleListQuery ) ;
+    // InternalDescartesQL.g:400:1: ruleModelStructureQuery : ( ruleListQuery ) ;
     public final void ruleModelStructureQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:376:2: ( ( ruleListQuery ) )
-            // InternalDescartesQL.g:377:1: ( ruleListQuery )
+            // InternalDescartesQL.g:404:2: ( ( ruleListQuery ) )
+            // InternalDescartesQL.g:405:1: ( ruleListQuery )
             {
-            // InternalDescartesQL.g:377:1: ( ruleListQuery )
-            // InternalDescartesQL.g:378:1: ruleListQuery
+            // InternalDescartesQL.g:405:1: ( ruleListQuery )
+            // InternalDescartesQL.g:406:1: ruleListQuery
             {
              before(grammarAccess.getModelStructureQueryAccess().getListQueryParserRuleCall()); 
             pushFollow(FOLLOW_2);
@@ -1030,11 +1111,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRulePerformanceMetricsQuery"
-    // InternalDescartesQL.g:391:1: entryRulePerformanceMetricsQuery : rulePerformanceMetricsQuery EOF ;
+    // InternalDescartesQL.g:419:1: entryRulePerformanceMetricsQuery : rulePerformanceMetricsQuery EOF ;
     public final void entryRulePerformanceMetricsQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:392:1: ( rulePerformanceMetricsQuery EOF )
-            // InternalDescartesQL.g:393:1: rulePerformanceMetricsQuery EOF
+            // InternalDescartesQL.g:420:1: ( rulePerformanceMetricsQuery EOF )
+            // InternalDescartesQL.g:421:1: rulePerformanceMetricsQuery EOF
             {
              before(grammarAccess.getPerformanceMetricsQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1060,17 +1141,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rulePerformanceMetricsQuery"
-    // InternalDescartesQL.g:400:1: rulePerformanceMetricsQuery : ( ruleSelectQuery ) ;
+    // InternalDescartesQL.g:428:1: rulePerformanceMetricsQuery : ( ruleSelectQuery ) ;
     public final void rulePerformanceMetricsQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:404:2: ( ( ruleSelectQuery ) )
-            // InternalDescartesQL.g:405:1: ( ruleSelectQuery )
+            // InternalDescartesQL.g:432:2: ( ( ruleSelectQuery ) )
+            // InternalDescartesQL.g:433:1: ( ruleSelectQuery )
             {
-            // InternalDescartesQL.g:405:1: ( ruleSelectQuery )
-            // InternalDescartesQL.g:406:1: ruleSelectQuery
+            // InternalDescartesQL.g:433:1: ( ruleSelectQuery )
+            // InternalDescartesQL.g:434:1: ruleSelectQuery
             {
              before(grammarAccess.getPerformanceMetricsQueryAccess().getSelectQueryParserRuleCall()); 
             pushFollow(FOLLOW_2);
@@ -1101,11 +1182,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRulePerformanceIssueQuery"
-    // InternalDescartesQL.g:419:1: entryRulePerformanceIssueQuery : rulePerformanceIssueQuery EOF ;
+    // InternalDescartesQL.g:447:1: entryRulePerformanceIssueQuery : rulePerformanceIssueQuery EOF ;
     public final void entryRulePerformanceIssueQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:420:1: ( rulePerformanceIssueQuery EOF )
-            // InternalDescartesQL.g:421:1: rulePerformanceIssueQuery EOF
+            // InternalDescartesQL.g:448:1: ( rulePerformanceIssueQuery EOF )
+            // InternalDescartesQL.g:449:1: rulePerformanceIssueQuery EOF
             {
              before(grammarAccess.getPerformanceIssueQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1131,17 +1212,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rulePerformanceIssueQuery"
-    // InternalDescartesQL.g:428:1: rulePerformanceIssueQuery : ( ruleDetectQuery ) ;
+    // InternalDescartesQL.g:456:1: rulePerformanceIssueQuery : ( ruleDetectQuery ) ;
     public final void rulePerformanceIssueQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:432:2: ( ( ruleDetectQuery ) )
-            // InternalDescartesQL.g:433:1: ( ruleDetectQuery )
+            // InternalDescartesQL.g:460:2: ( ( ruleDetectQuery ) )
+            // InternalDescartesQL.g:461:1: ( ruleDetectQuery )
             {
-            // InternalDescartesQL.g:433:1: ( ruleDetectQuery )
-            // InternalDescartesQL.g:434:1: ruleDetectQuery
+            // InternalDescartesQL.g:461:1: ( ruleDetectQuery )
+            // InternalDescartesQL.g:462:1: ruleDetectQuery
             {
              before(grammarAccess.getPerformanceIssueQueryAccess().getDetectQueryParserRuleCall()); 
             pushFollow(FOLLOW_2);
@@ -1172,11 +1253,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConnectorCapabilityQuery"
-    // InternalDescartesQL.g:447:1: entryRuleConnectorCapabilityQuery : ruleConnectorCapabilityQuery EOF ;
+    // InternalDescartesQL.g:475:1: entryRuleConnectorCapabilityQuery : ruleConnectorCapabilityQuery EOF ;
     public final void entryRuleConnectorCapabilityQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:448:1: ( ruleConnectorCapabilityQuery EOF )
-            // InternalDescartesQL.g:449:1: ruleConnectorCapabilityQuery EOF
+            // InternalDescartesQL.g:476:1: ( ruleConnectorCapabilityQuery EOF )
+            // InternalDescartesQL.g:477:1: ruleConnectorCapabilityQuery EOF
             {
              before(grammarAccess.getConnectorCapabilityQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1202,17 +1283,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConnectorCapabilityQuery"
-    // InternalDescartesQL.g:456:1: ruleConnectorCapabilityQuery : ( ruleGetQuery ) ;
+    // InternalDescartesQL.g:484:1: ruleConnectorCapabilityQuery : ( ruleGetQuery ) ;
     public final void ruleConnectorCapabilityQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:460:2: ( ( ruleGetQuery ) )
-            // InternalDescartesQL.g:461:1: ( ruleGetQuery )
+            // InternalDescartesQL.g:488:2: ( ( ruleGetQuery ) )
+            // InternalDescartesQL.g:489:1: ( ruleGetQuery )
             {
-            // InternalDescartesQL.g:461:1: ( ruleGetQuery )
-            // InternalDescartesQL.g:462:1: ruleGetQuery
+            // InternalDescartesQL.g:489:1: ( ruleGetQuery )
+            // InternalDescartesQL.g:490:1: ruleGetQuery
             {
              before(grammarAccess.getConnectorCapabilityQueryAccess().getGetQueryParserRuleCall()); 
             pushFollow(FOLLOW_2);
@@ -1243,11 +1324,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleListQuery"
-    // InternalDescartesQL.g:475:1: entryRuleListQuery : ruleListQuery EOF ;
+    // InternalDescartesQL.g:503:1: entryRuleListQuery : ruleListQuery EOF ;
     public final void entryRuleListQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:476:1: ( ruleListQuery EOF )
-            // InternalDescartesQL.g:477:1: ruleListQuery EOF
+            // InternalDescartesQL.g:504:1: ( ruleListQuery EOF )
+            // InternalDescartesQL.g:505:1: ruleListQuery EOF
             {
              before(grammarAccess.getListQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1273,21 +1354,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleListQuery"
-    // InternalDescartesQL.g:484:1: ruleListQuery : ( ( rule__ListQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:512:1: ruleListQuery : ( ( rule__ListQuery__Group__0 ) ) ;
     public final void ruleListQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:488:2: ( ( ( rule__ListQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:489:1: ( ( rule__ListQuery__Group__0 ) )
+            // InternalDescartesQL.g:516:2: ( ( ( rule__ListQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:517:1: ( ( rule__ListQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:489:1: ( ( rule__ListQuery__Group__0 ) )
-            // InternalDescartesQL.g:490:1: ( rule__ListQuery__Group__0 )
+            // InternalDescartesQL.g:517:1: ( ( rule__ListQuery__Group__0 ) )
+            // InternalDescartesQL.g:518:1: ( rule__ListQuery__Group__0 )
             {
              before(grammarAccess.getListQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:491:1: ( rule__ListQuery__Group__0 )
-            // InternalDescartesQL.g:491:2: rule__ListQuery__Group__0
+            // InternalDescartesQL.g:519:1: ( rule__ListQuery__Group__0 )
+            // InternalDescartesQL.g:519:2: rule__ListQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ListQuery__Group__0();
@@ -1320,11 +1401,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleGetQuery"
-    // InternalDescartesQL.g:503:1: entryRuleGetQuery : ruleGetQuery EOF ;
+    // InternalDescartesQL.g:531:1: entryRuleGetQuery : ruleGetQuery EOF ;
     public final void entryRuleGetQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:504:1: ( ruleGetQuery EOF )
-            // InternalDescartesQL.g:505:1: ruleGetQuery EOF
+            // InternalDescartesQL.g:532:1: ( ruleGetQuery EOF )
+            // InternalDescartesQL.g:533:1: ruleGetQuery EOF
             {
              before(grammarAccess.getGetQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1350,21 +1431,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleGetQuery"
-    // InternalDescartesQL.g:512:1: ruleGetQuery : ( ( rule__GetQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:540:1: ruleGetQuery : ( ( rule__GetQuery__Group__0 ) ) ;
     public final void ruleGetQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:516:2: ( ( ( rule__GetQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:517:1: ( ( rule__GetQuery__Group__0 ) )
+            // InternalDescartesQL.g:544:2: ( ( ( rule__GetQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:545:1: ( ( rule__GetQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:517:1: ( ( rule__GetQuery__Group__0 ) )
-            // InternalDescartesQL.g:518:1: ( rule__GetQuery__Group__0 )
+            // InternalDescartesQL.g:545:1: ( ( rule__GetQuery__Group__0 ) )
+            // InternalDescartesQL.g:546:1: ( rule__GetQuery__Group__0 )
             {
              before(grammarAccess.getGetQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:519:1: ( rule__GetQuery__Group__0 )
-            // InternalDescartesQL.g:519:2: rule__GetQuery__Group__0
+            // InternalDescartesQL.g:547:1: ( rule__GetQuery__Group__0 )
+            // InternalDescartesQL.g:547:2: rule__GetQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__GetQuery__Group__0();
@@ -1397,11 +1478,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleGetConstraintsQuery"
-    // InternalDescartesQL.g:531:1: entryRuleGetConstraintsQuery : ruleGetConstraintsQuery EOF ;
+    // InternalDescartesQL.g:559:1: entryRuleGetConstraintsQuery : ruleGetConstraintsQuery EOF ;
     public final void entryRuleGetConstraintsQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:532:1: ( ruleGetConstraintsQuery EOF )
-            // InternalDescartesQL.g:533:1: ruleGetConstraintsQuery EOF
+            // InternalDescartesQL.g:560:1: ( ruleGetConstraintsQuery EOF )
+            // InternalDescartesQL.g:561:1: ruleGetConstraintsQuery EOF
             {
              before(grammarAccess.getGetConstraintsQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1427,21 +1508,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleGetConstraintsQuery"
-    // InternalDescartesQL.g:540:1: ruleGetConstraintsQuery : ( ( rule__GetConstraintsQuery__ModeAssignment ) ) ;
+    // InternalDescartesQL.g:568:1: ruleGetConstraintsQuery : ( ( rule__GetConstraintsQuery__ModeAssignment ) ) ;
     public final void ruleGetConstraintsQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:544:2: ( ( ( rule__GetConstraintsQuery__ModeAssignment ) ) )
-            // InternalDescartesQL.g:545:1: ( ( rule__GetConstraintsQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:572:2: ( ( ( rule__GetConstraintsQuery__ModeAssignment ) ) )
+            // InternalDescartesQL.g:573:1: ( ( rule__GetConstraintsQuery__ModeAssignment ) )
             {
-            // InternalDescartesQL.g:545:1: ( ( rule__GetConstraintsQuery__ModeAssignment ) )
-            // InternalDescartesQL.g:546:1: ( rule__GetConstraintsQuery__ModeAssignment )
+            // InternalDescartesQL.g:573:1: ( ( rule__GetConstraintsQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:574:1: ( rule__GetConstraintsQuery__ModeAssignment )
             {
              before(grammarAccess.getGetConstraintsQueryAccess().getModeAssignment()); 
-            // InternalDescartesQL.g:547:1: ( rule__GetConstraintsQuery__ModeAssignment )
-            // InternalDescartesQL.g:547:2: rule__GetConstraintsQuery__ModeAssignment
+            // InternalDescartesQL.g:575:1: ( rule__GetConstraintsQuery__ModeAssignment )
+            // InternalDescartesQL.g:575:2: rule__GetConstraintsQuery__ModeAssignment
             {
             pushFollow(FOLLOW_2);
             rule__GetConstraintsQuery__ModeAssignment();
@@ -1474,11 +1555,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleGetExplorationStrategiesQuery"
-    // InternalDescartesQL.g:559:1: entryRuleGetExplorationStrategiesQuery : ruleGetExplorationStrategiesQuery EOF ;
+    // InternalDescartesQL.g:587:1: entryRuleGetExplorationStrategiesQuery : ruleGetExplorationStrategiesQuery EOF ;
     public final void entryRuleGetExplorationStrategiesQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:560:1: ( ruleGetExplorationStrategiesQuery EOF )
-            // InternalDescartesQL.g:561:1: ruleGetExplorationStrategiesQuery EOF
+            // InternalDescartesQL.g:588:1: ( ruleGetExplorationStrategiesQuery EOF )
+            // InternalDescartesQL.g:589:1: ruleGetExplorationStrategiesQuery EOF
             {
              before(grammarAccess.getGetExplorationStrategiesQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1504,21 +1585,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleGetExplorationStrategiesQuery"
-    // InternalDescartesQL.g:568:1: ruleGetExplorationStrategiesQuery : ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) ) ;
+    // InternalDescartesQL.g:596:1: ruleGetExplorationStrategiesQuery : ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) ) ;
     public final void ruleGetExplorationStrategiesQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:572:2: ( ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) ) )
-            // InternalDescartesQL.g:573:1: ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:600:2: ( ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) ) )
+            // InternalDescartesQL.g:601:1: ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) )
             {
-            // InternalDescartesQL.g:573:1: ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) )
-            // InternalDescartesQL.g:574:1: ( rule__GetExplorationStrategiesQuery__ModeAssignment )
+            // InternalDescartesQL.g:601:1: ( ( rule__GetExplorationStrategiesQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:602:1: ( rule__GetExplorationStrategiesQuery__ModeAssignment )
             {
              before(grammarAccess.getGetExplorationStrategiesQueryAccess().getModeAssignment()); 
-            // InternalDescartesQL.g:575:1: ( rule__GetExplorationStrategiesQuery__ModeAssignment )
-            // InternalDescartesQL.g:575:2: rule__GetExplorationStrategiesQuery__ModeAssignment
+            // InternalDescartesQL.g:603:1: ( rule__GetExplorationStrategiesQuery__ModeAssignment )
+            // InternalDescartesQL.g:603:2: rule__GetExplorationStrategiesQuery__ModeAssignment
             {
             pushFollow(FOLLOW_2);
             rule__GetExplorationStrategiesQuery__ModeAssignment();
@@ -1551,11 +1632,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleGetTimeUnitsQuery"
-    // InternalDescartesQL.g:587:1: entryRuleGetTimeUnitsQuery : ruleGetTimeUnitsQuery EOF ;
+    // InternalDescartesQL.g:615:1: entryRuleGetTimeUnitsQuery : ruleGetTimeUnitsQuery EOF ;
     public final void entryRuleGetTimeUnitsQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:588:1: ( ruleGetTimeUnitsQuery EOF )
-            // InternalDescartesQL.g:589:1: ruleGetTimeUnitsQuery EOF
+            // InternalDescartesQL.g:616:1: ( ruleGetTimeUnitsQuery EOF )
+            // InternalDescartesQL.g:617:1: ruleGetTimeUnitsQuery EOF
             {
              before(grammarAccess.getGetTimeUnitsQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1581,21 +1662,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleGetTimeUnitsQuery"
-    // InternalDescartesQL.g:596:1: ruleGetTimeUnitsQuery : ( ( rule__GetTimeUnitsQuery__ModeAssignment ) ) ;
+    // InternalDescartesQL.g:624:1: ruleGetTimeUnitsQuery : ( ( rule__GetTimeUnitsQuery__ModeAssignment ) ) ;
     public final void ruleGetTimeUnitsQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:600:2: ( ( ( rule__GetTimeUnitsQuery__ModeAssignment ) ) )
-            // InternalDescartesQL.g:601:1: ( ( rule__GetTimeUnitsQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:628:2: ( ( ( rule__GetTimeUnitsQuery__ModeAssignment ) ) )
+            // InternalDescartesQL.g:629:1: ( ( rule__GetTimeUnitsQuery__ModeAssignment ) )
             {
-            // InternalDescartesQL.g:601:1: ( ( rule__GetTimeUnitsQuery__ModeAssignment ) )
-            // InternalDescartesQL.g:602:1: ( rule__GetTimeUnitsQuery__ModeAssignment )
+            // InternalDescartesQL.g:629:1: ( ( rule__GetTimeUnitsQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:630:1: ( rule__GetTimeUnitsQuery__ModeAssignment )
             {
              before(grammarAccess.getGetTimeUnitsQueryAccess().getModeAssignment()); 
-            // InternalDescartesQL.g:603:1: ( rule__GetTimeUnitsQuery__ModeAssignment )
-            // InternalDescartesQL.g:603:2: rule__GetTimeUnitsQuery__ModeAssignment
+            // InternalDescartesQL.g:631:1: ( rule__GetTimeUnitsQuery__ModeAssignment )
+            // InternalDescartesQL.g:631:2: rule__GetTimeUnitsQuery__ModeAssignment
             {
             pushFollow(FOLLOW_2);
             rule__GetTimeUnitsQuery__ModeAssignment();
@@ -1628,11 +1709,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleListDoFQuery"
-    // InternalDescartesQL.g:615:1: entryRuleListDoFQuery : ruleListDoFQuery EOF ;
+    // InternalDescartesQL.g:643:1: entryRuleListDoFQuery : ruleListDoFQuery EOF ;
     public final void entryRuleListDoFQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:616:1: ( ruleListDoFQuery EOF )
-            // InternalDescartesQL.g:617:1: ruleListDoFQuery EOF
+            // InternalDescartesQL.g:644:1: ( ruleListDoFQuery EOF )
+            // InternalDescartesQL.g:645:1: ruleListDoFQuery EOF
             {
              before(grammarAccess.getListDoFQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1658,21 +1739,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleListDoFQuery"
-    // InternalDescartesQL.g:624:1: ruleListDoFQuery : ( ( rule__ListDoFQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:652:1: ruleListDoFQuery : ( ( rule__ListDoFQuery__Group__0 ) ) ;
     public final void ruleListDoFQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:628:2: ( ( ( rule__ListDoFQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:629:1: ( ( rule__ListDoFQuery__Group__0 ) )
+            // InternalDescartesQL.g:656:2: ( ( ( rule__ListDoFQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:657:1: ( ( rule__ListDoFQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:629:1: ( ( rule__ListDoFQuery__Group__0 ) )
-            // InternalDescartesQL.g:630:1: ( rule__ListDoFQuery__Group__0 )
+            // InternalDescartesQL.g:657:1: ( ( rule__ListDoFQuery__Group__0 ) )
+            // InternalDescartesQL.g:658:1: ( rule__ListDoFQuery__Group__0 )
             {
              before(grammarAccess.getListDoFQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:631:1: ( rule__ListDoFQuery__Group__0 )
-            // InternalDescartesQL.g:631:2: rule__ListDoFQuery__Group__0
+            // InternalDescartesQL.g:659:1: ( rule__ListDoFQuery__Group__0 )
+            // InternalDescartesQL.g:659:2: rule__ListDoFQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ListDoFQuery__Group__0();
@@ -1705,11 +1786,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleListEntitiesQuery"
-    // InternalDescartesQL.g:643:1: entryRuleListEntitiesQuery : ruleListEntitiesQuery EOF ;
+    // InternalDescartesQL.g:671:1: entryRuleListEntitiesQuery : ruleListEntitiesQuery EOF ;
     public final void entryRuleListEntitiesQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:644:1: ( ruleListEntitiesQuery EOF )
-            // InternalDescartesQL.g:645:1: ruleListEntitiesQuery EOF
+            // InternalDescartesQL.g:672:1: ( ruleListEntitiesQuery EOF )
+            // InternalDescartesQL.g:673:1: ruleListEntitiesQuery EOF
             {
              before(grammarAccess.getListEntitiesQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1735,21 +1816,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleListEntitiesQuery"
-    // InternalDescartesQL.g:652:1: ruleListEntitiesQuery : ( ( rule__ListEntitiesQuery__ModeAssignment ) ) ;
+    // InternalDescartesQL.g:680:1: ruleListEntitiesQuery : ( ( rule__ListEntitiesQuery__ModeAssignment ) ) ;
     public final void ruleListEntitiesQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:656:2: ( ( ( rule__ListEntitiesQuery__ModeAssignment ) ) )
-            // InternalDescartesQL.g:657:1: ( ( rule__ListEntitiesQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:684:2: ( ( ( rule__ListEntitiesQuery__ModeAssignment ) ) )
+            // InternalDescartesQL.g:685:1: ( ( rule__ListEntitiesQuery__ModeAssignment ) )
             {
-            // InternalDescartesQL.g:657:1: ( ( rule__ListEntitiesQuery__ModeAssignment ) )
-            // InternalDescartesQL.g:658:1: ( rule__ListEntitiesQuery__ModeAssignment )
+            // InternalDescartesQL.g:685:1: ( ( rule__ListEntitiesQuery__ModeAssignment ) )
+            // InternalDescartesQL.g:686:1: ( rule__ListEntitiesQuery__ModeAssignment )
             {
              before(grammarAccess.getListEntitiesQueryAccess().getModeAssignment()); 
-            // InternalDescartesQL.g:659:1: ( rule__ListEntitiesQuery__ModeAssignment )
-            // InternalDescartesQL.g:659:2: rule__ListEntitiesQuery__ModeAssignment
+            // InternalDescartesQL.g:687:1: ( rule__ListEntitiesQuery__ModeAssignment )
+            // InternalDescartesQL.g:687:2: rule__ListEntitiesQuery__ModeAssignment
             {
             pushFollow(FOLLOW_2);
             rule__ListEntitiesQuery__ModeAssignment();
@@ -1782,11 +1863,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleListMetricsQuery"
-    // InternalDescartesQL.g:671:1: entryRuleListMetricsQuery : ruleListMetricsQuery EOF ;
+    // InternalDescartesQL.g:699:1: entryRuleListMetricsQuery : ruleListMetricsQuery EOF ;
     public final void entryRuleListMetricsQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:672:1: ( ruleListMetricsQuery EOF )
-            // InternalDescartesQL.g:673:1: ruleListMetricsQuery EOF
+            // InternalDescartesQL.g:700:1: ( ruleListMetricsQuery EOF )
+            // InternalDescartesQL.g:701:1: ruleListMetricsQuery EOF
             {
              before(grammarAccess.getListMetricsQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1812,21 +1893,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleListMetricsQuery"
-    // InternalDescartesQL.g:680:1: ruleListMetricsQuery : ( ( rule__ListMetricsQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:708:1: ruleListMetricsQuery : ( ( rule__ListMetricsQuery__Group__0 ) ) ;
     public final void ruleListMetricsQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:684:2: ( ( ( rule__ListMetricsQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:685:1: ( ( rule__ListMetricsQuery__Group__0 ) )
+            // InternalDescartesQL.g:712:2: ( ( ( rule__ListMetricsQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:713:1: ( ( rule__ListMetricsQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:685:1: ( ( rule__ListMetricsQuery__Group__0 ) )
-            // InternalDescartesQL.g:686:1: ( rule__ListMetricsQuery__Group__0 )
+            // InternalDescartesQL.g:713:1: ( ( rule__ListMetricsQuery__Group__0 ) )
+            // InternalDescartesQL.g:714:1: ( rule__ListMetricsQuery__Group__0 )
             {
              before(grammarAccess.getListMetricsQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:687:1: ( rule__ListMetricsQuery__Group__0 )
-            // InternalDescartesQL.g:687:2: rule__ListMetricsQuery__Group__0
+            // InternalDescartesQL.g:715:1: ( rule__ListMetricsQuery__Group__0 )
+            // InternalDescartesQL.g:715:2: rule__ListMetricsQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ListMetricsQuery__Group__0();
@@ -1859,11 +1940,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleSelectQuery"
-    // InternalDescartesQL.g:699:1: entryRuleSelectQuery : ruleSelectQuery EOF ;
+    // InternalDescartesQL.g:727:1: entryRuleSelectQuery : ruleSelectQuery EOF ;
     public final void entryRuleSelectQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:700:1: ( ruleSelectQuery EOF )
-            // InternalDescartesQL.g:701:1: ruleSelectQuery EOF
+            // InternalDescartesQL.g:728:1: ( ruleSelectQuery EOF )
+            // InternalDescartesQL.g:729:1: ruleSelectQuery EOF
             {
              before(grammarAccess.getSelectQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -1889,21 +1970,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSelectQuery"
-    // InternalDescartesQL.g:708:1: ruleSelectQuery : ( ( rule__SelectQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:736:1: ruleSelectQuery : ( ( rule__SelectQuery__Group__0 ) ) ;
     public final void ruleSelectQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:712:2: ( ( ( rule__SelectQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:713:1: ( ( rule__SelectQuery__Group__0 ) )
+            // InternalDescartesQL.g:740:2: ( ( ( rule__SelectQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:741:1: ( ( rule__SelectQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:713:1: ( ( rule__SelectQuery__Group__0 ) )
-            // InternalDescartesQL.g:714:1: ( rule__SelectQuery__Group__0 )
+            // InternalDescartesQL.g:741:1: ( ( rule__SelectQuery__Group__0 ) )
+            // InternalDescartesQL.g:742:1: ( rule__SelectQuery__Group__0 )
             {
              before(grammarAccess.getSelectQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:715:1: ( rule__SelectQuery__Group__0 )
-            // InternalDescartesQL.g:715:2: rule__SelectQuery__Group__0
+            // InternalDescartesQL.g:743:1: ( rule__SelectQuery__Group__0 )
+            // InternalDescartesQL.g:743:2: rule__SelectQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SelectQuery__Group__0();
@@ -1936,11 +2017,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricReferenceClauses"
-    // InternalDescartesQL.g:727:1: entryRuleMetricReferenceClauses : ruleMetricReferenceClauses EOF ;
+    // InternalDescartesQL.g:755:1: entryRuleMetricReferenceClauses : ruleMetricReferenceClauses EOF ;
     public final void entryRuleMetricReferenceClauses() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:728:1: ( ruleMetricReferenceClauses EOF )
-            // InternalDescartesQL.g:729:1: ruleMetricReferenceClauses EOF
+            // InternalDescartesQL.g:756:1: ( ruleMetricReferenceClauses EOF )
+            // InternalDescartesQL.g:757:1: ruleMetricReferenceClauses EOF
             {
              before(grammarAccess.getMetricReferenceClausesRule()); 
             pushFollow(FOLLOW_1);
@@ -1966,21 +2047,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricReferenceClauses"
-    // InternalDescartesQL.g:736:1: ruleMetricReferenceClauses : ( ( rule__MetricReferenceClauses__Group__0 ) ) ;
+    // InternalDescartesQL.g:764:1: ruleMetricReferenceClauses : ( ( rule__MetricReferenceClauses__Group__0 ) ) ;
     public final void ruleMetricReferenceClauses() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:740:2: ( ( ( rule__MetricReferenceClauses__Group__0 ) ) )
-            // InternalDescartesQL.g:741:1: ( ( rule__MetricReferenceClauses__Group__0 ) )
+            // InternalDescartesQL.g:768:2: ( ( ( rule__MetricReferenceClauses__Group__0 ) ) )
+            // InternalDescartesQL.g:769:1: ( ( rule__MetricReferenceClauses__Group__0 ) )
             {
-            // InternalDescartesQL.g:741:1: ( ( rule__MetricReferenceClauses__Group__0 ) )
-            // InternalDescartesQL.g:742:1: ( rule__MetricReferenceClauses__Group__0 )
+            // InternalDescartesQL.g:769:1: ( ( rule__MetricReferenceClauses__Group__0 ) )
+            // InternalDescartesQL.g:770:1: ( rule__MetricReferenceClauses__Group__0 )
             {
              before(grammarAccess.getMetricReferenceClausesAccess().getGroup()); 
-            // InternalDescartesQL.g:743:1: ( rule__MetricReferenceClauses__Group__0 )
-            // InternalDescartesQL.g:743:2: rule__MetricReferenceClauses__Group__0
+            // InternalDescartesQL.g:771:1: ( rule__MetricReferenceClauses__Group__0 )
+            // InternalDescartesQL.g:771:2: rule__MetricReferenceClauses__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MetricReferenceClauses__Group__0();
@@ -2013,11 +2094,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricClauseType"
-    // InternalDescartesQL.g:755:1: entryRuleMetricClauseType : ruleMetricClauseType EOF ;
+    // InternalDescartesQL.g:783:1: entryRuleMetricClauseType : ruleMetricClauseType EOF ;
     public final void entryRuleMetricClauseType() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:756:1: ( ruleMetricClauseType EOF )
-            // InternalDescartesQL.g:757:1: ruleMetricClauseType EOF
+            // InternalDescartesQL.g:784:1: ( ruleMetricClauseType EOF )
+            // InternalDescartesQL.g:785:1: ruleMetricClauseType EOF
             {
              before(grammarAccess.getMetricClauseTypeRule()); 
             pushFollow(FOLLOW_1);
@@ -2043,21 +2124,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricClauseType"
-    // InternalDescartesQL.g:764:1: ruleMetricClauseType : ( ( rule__MetricClauseType__Alternatives ) ) ;
+    // InternalDescartesQL.g:792:1: ruleMetricClauseType : ( ( rule__MetricClauseType__Alternatives ) ) ;
     public final void ruleMetricClauseType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:768:2: ( ( ( rule__MetricClauseType__Alternatives ) ) )
-            // InternalDescartesQL.g:769:1: ( ( rule__MetricClauseType__Alternatives ) )
+            // InternalDescartesQL.g:796:2: ( ( ( rule__MetricClauseType__Alternatives ) ) )
+            // InternalDescartesQL.g:797:1: ( ( rule__MetricClauseType__Alternatives ) )
             {
-            // InternalDescartesQL.g:769:1: ( ( rule__MetricClauseType__Alternatives ) )
-            // InternalDescartesQL.g:770:1: ( rule__MetricClauseType__Alternatives )
+            // InternalDescartesQL.g:797:1: ( ( rule__MetricClauseType__Alternatives ) )
+            // InternalDescartesQL.g:798:1: ( rule__MetricClauseType__Alternatives )
             {
              before(grammarAccess.getMetricClauseTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:771:1: ( rule__MetricClauseType__Alternatives )
-            // InternalDescartesQL.g:771:2: rule__MetricClauseType__Alternatives
+            // InternalDescartesQL.g:799:1: ( rule__MetricClauseType__Alternatives )
+            // InternalDescartesQL.g:799:2: rule__MetricClauseType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__MetricClauseType__Alternatives();
@@ -2090,11 +2171,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDetectQuery"
-    // InternalDescartesQL.g:783:1: entryRuleDetectQuery : ruleDetectQuery EOF ;
+    // InternalDescartesQL.g:811:1: entryRuleDetectQuery : ruleDetectQuery EOF ;
     public final void entryRuleDetectQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:784:1: ( ruleDetectQuery EOF )
-            // InternalDescartesQL.g:785:1: ruleDetectQuery EOF
+            // InternalDescartesQL.g:812:1: ( ruleDetectQuery EOF )
+            // InternalDescartesQL.g:813:1: ruleDetectQuery EOF
             {
              before(grammarAccess.getDetectQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -2120,21 +2201,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDetectQuery"
-    // InternalDescartesQL.g:792:1: ruleDetectQuery : ( ( rule__DetectQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:820:1: ruleDetectQuery : ( ( rule__DetectQuery__Group__0 ) ) ;
     public final void ruleDetectQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:796:2: ( ( ( rule__DetectQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:797:1: ( ( rule__DetectQuery__Group__0 ) )
+            // InternalDescartesQL.g:824:2: ( ( ( rule__DetectQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:825:1: ( ( rule__DetectQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:797:1: ( ( rule__DetectQuery__Group__0 ) )
-            // InternalDescartesQL.g:798:1: ( rule__DetectQuery__Group__0 )
+            // InternalDescartesQL.g:825:1: ( ( rule__DetectQuery__Group__0 ) )
+            // InternalDescartesQL.g:826:1: ( rule__DetectQuery__Group__0 )
             {
              before(grammarAccess.getDetectQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:799:1: ( rule__DetectQuery__Group__0 )
-            // InternalDescartesQL.g:799:2: rule__DetectQuery__Group__0
+            // InternalDescartesQL.g:827:1: ( rule__DetectQuery__Group__0 )
+            // InternalDescartesQL.g:827:2: rule__DetectQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DetectQuery__Group__0();
@@ -2167,11 +2248,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDetectBottlenecksQuery"
-    // InternalDescartesQL.g:811:1: entryRuleDetectBottlenecksQuery : ruleDetectBottlenecksQuery EOF ;
+    // InternalDescartesQL.g:839:1: entryRuleDetectBottlenecksQuery : ruleDetectBottlenecksQuery EOF ;
     public final void entryRuleDetectBottlenecksQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:812:1: ( ruleDetectBottlenecksQuery EOF )
-            // InternalDescartesQL.g:813:1: ruleDetectBottlenecksQuery EOF
+            // InternalDescartesQL.g:840:1: ( ruleDetectBottlenecksQuery EOF )
+            // InternalDescartesQL.g:841:1: ruleDetectBottlenecksQuery EOF
             {
              before(grammarAccess.getDetectBottlenecksQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -2197,21 +2278,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDetectBottlenecksQuery"
-    // InternalDescartesQL.g:820:1: ruleDetectBottlenecksQuery : ( ( rule__DetectBottlenecksQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:848:1: ruleDetectBottlenecksQuery : ( ( rule__DetectBottlenecksQuery__Group__0 ) ) ;
     public final void ruleDetectBottlenecksQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:824:2: ( ( ( rule__DetectBottlenecksQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:825:1: ( ( rule__DetectBottlenecksQuery__Group__0 ) )
+            // InternalDescartesQL.g:852:2: ( ( ( rule__DetectBottlenecksQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:853:1: ( ( rule__DetectBottlenecksQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:825:1: ( ( rule__DetectBottlenecksQuery__Group__0 ) )
-            // InternalDescartesQL.g:826:1: ( rule__DetectBottlenecksQuery__Group__0 )
+            // InternalDescartesQL.g:853:1: ( ( rule__DetectBottlenecksQuery__Group__0 ) )
+            // InternalDescartesQL.g:854:1: ( rule__DetectBottlenecksQuery__Group__0 )
             {
              before(grammarAccess.getDetectBottlenecksQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:827:1: ( rule__DetectBottlenecksQuery__Group__0 )
-            // InternalDescartesQL.g:827:2: rule__DetectBottlenecksQuery__Group__0
+            // InternalDescartesQL.g:855:1: ( rule__DetectBottlenecksQuery__Group__0 )
+            // InternalDescartesQL.g:855:2: rule__DetectBottlenecksQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DetectBottlenecksQuery__Group__0();
@@ -2244,11 +2325,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConstraintClause"
-    // InternalDescartesQL.g:839:1: entryRuleConstraintClause : ruleConstraintClause EOF ;
+    // InternalDescartesQL.g:867:1: entryRuleConstraintClause : ruleConstraintClause EOF ;
     public final void entryRuleConstraintClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:840:1: ( ruleConstraintClause EOF )
-            // InternalDescartesQL.g:841:1: ruleConstraintClause EOF
+            // InternalDescartesQL.g:868:1: ( ruleConstraintClause EOF )
+            // InternalDescartesQL.g:869:1: ruleConstraintClause EOF
             {
              before(grammarAccess.getConstraintClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2274,21 +2355,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConstraintClause"
-    // InternalDescartesQL.g:848:1: ruleConstraintClause : ( ( rule__ConstraintClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:876:1: ruleConstraintClause : ( ( rule__ConstraintClause__Group__0 ) ) ;
     public final void ruleConstraintClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:852:2: ( ( ( rule__ConstraintClause__Group__0 ) ) )
-            // InternalDescartesQL.g:853:1: ( ( rule__ConstraintClause__Group__0 ) )
+            // InternalDescartesQL.g:880:2: ( ( ( rule__ConstraintClause__Group__0 ) ) )
+            // InternalDescartesQL.g:881:1: ( ( rule__ConstraintClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:853:1: ( ( rule__ConstraintClause__Group__0 ) )
-            // InternalDescartesQL.g:854:1: ( rule__ConstraintClause__Group__0 )
+            // InternalDescartesQL.g:881:1: ( ( rule__ConstraintClause__Group__0 ) )
+            // InternalDescartesQL.g:882:1: ( rule__ConstraintClause__Group__0 )
             {
              before(grammarAccess.getConstraintClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:855:1: ( rule__ConstraintClause__Group__0 )
-            // InternalDescartesQL.g:855:2: rule__ConstraintClause__Group__0
+            // InternalDescartesQL.g:883:1: ( rule__ConstraintClause__Group__0 )
+            // InternalDescartesQL.g:883:2: rule__ConstraintClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ConstraintClause__Group__0();
@@ -2321,11 +2402,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDoFClause"
-    // InternalDescartesQL.g:867:1: entryRuleDoFClause : ruleDoFClause EOF ;
+    // InternalDescartesQL.g:895:1: entryRuleDoFClause : ruleDoFClause EOF ;
     public final void entryRuleDoFClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:868:1: ( ruleDoFClause EOF )
-            // InternalDescartesQL.g:869:1: ruleDoFClause EOF
+            // InternalDescartesQL.g:896:1: ( ruleDoFClause EOF )
+            // InternalDescartesQL.g:897:1: ruleDoFClause EOF
             {
              before(grammarAccess.getDoFClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2351,21 +2432,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDoFClause"
-    // InternalDescartesQL.g:876:1: ruleDoFClause : ( ( rule__DoFClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:904:1: ruleDoFClause : ( ( rule__DoFClause__Group__0 ) ) ;
     public final void ruleDoFClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:880:2: ( ( ( rule__DoFClause__Group__0 ) ) )
-            // InternalDescartesQL.g:881:1: ( ( rule__DoFClause__Group__0 ) )
+            // InternalDescartesQL.g:908:2: ( ( ( rule__DoFClause__Group__0 ) ) )
+            // InternalDescartesQL.g:909:1: ( ( rule__DoFClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:881:1: ( ( rule__DoFClause__Group__0 ) )
-            // InternalDescartesQL.g:882:1: ( rule__DoFClause__Group__0 )
+            // InternalDescartesQL.g:909:1: ( ( rule__DoFClause__Group__0 ) )
+            // InternalDescartesQL.g:910:1: ( rule__DoFClause__Group__0 )
             {
              before(grammarAccess.getDoFClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:883:1: ( rule__DoFClause__Group__0 )
-            // InternalDescartesQL.g:883:2: rule__DoFClause__Group__0
+            // InternalDescartesQL.g:911:1: ( rule__DoFClause__Group__0 )
+            // InternalDescartesQL.g:911:2: rule__DoFClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DoFClause__Group__0();
@@ -2398,11 +2479,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleExplorationStrategyClause"
-    // InternalDescartesQL.g:895:1: entryRuleExplorationStrategyClause : ruleExplorationStrategyClause EOF ;
+    // InternalDescartesQL.g:923:1: entryRuleExplorationStrategyClause : ruleExplorationStrategyClause EOF ;
     public final void entryRuleExplorationStrategyClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:896:1: ( ruleExplorationStrategyClause EOF )
-            // InternalDescartesQL.g:897:1: ruleExplorationStrategyClause EOF
+            // InternalDescartesQL.g:924:1: ( ruleExplorationStrategyClause EOF )
+            // InternalDescartesQL.g:925:1: ruleExplorationStrategyClause EOF
             {
              before(grammarAccess.getExplorationStrategyClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2428,21 +2509,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleExplorationStrategyClause"
-    // InternalDescartesQL.g:904:1: ruleExplorationStrategyClause : ( ( rule__ExplorationStrategyClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:932:1: ruleExplorationStrategyClause : ( ( rule__ExplorationStrategyClause__Group__0 ) ) ;
     public final void ruleExplorationStrategyClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:908:2: ( ( ( rule__ExplorationStrategyClause__Group__0 ) ) )
-            // InternalDescartesQL.g:909:1: ( ( rule__ExplorationStrategyClause__Group__0 ) )
+            // InternalDescartesQL.g:936:2: ( ( ( rule__ExplorationStrategyClause__Group__0 ) ) )
+            // InternalDescartesQL.g:937:1: ( ( rule__ExplorationStrategyClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:909:1: ( ( rule__ExplorationStrategyClause__Group__0 ) )
-            // InternalDescartesQL.g:910:1: ( rule__ExplorationStrategyClause__Group__0 )
+            // InternalDescartesQL.g:937:1: ( ( rule__ExplorationStrategyClause__Group__0 ) )
+            // InternalDescartesQL.g:938:1: ( rule__ExplorationStrategyClause__Group__0 )
             {
              before(grammarAccess.getExplorationStrategyClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:911:1: ( rule__ExplorationStrategyClause__Group__0 )
-            // InternalDescartesQL.g:911:2: rule__ExplorationStrategyClause__Group__0
+            // InternalDescartesQL.g:939:1: ( rule__ExplorationStrategyClause__Group__0 )
+            // InternalDescartesQL.g:939:2: rule__ExplorationStrategyClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ExplorationStrategyClause__Group__0();
@@ -2475,11 +2556,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConfigurationPropertiesClause"
-    // InternalDescartesQL.g:923:1: entryRuleConfigurationPropertiesClause : ruleConfigurationPropertiesClause EOF ;
+    // InternalDescartesQL.g:951:1: entryRuleConfigurationPropertiesClause : ruleConfigurationPropertiesClause EOF ;
     public final void entryRuleConfigurationPropertiesClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:924:1: ( ruleConfigurationPropertiesClause EOF )
-            // InternalDescartesQL.g:925:1: ruleConfigurationPropertiesClause EOF
+            // InternalDescartesQL.g:952:1: ( ruleConfigurationPropertiesClause EOF )
+            // InternalDescartesQL.g:953:1: ruleConfigurationPropertiesClause EOF
             {
              before(grammarAccess.getConfigurationPropertiesClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2505,21 +2586,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConfigurationPropertiesClause"
-    // InternalDescartesQL.g:932:1: ruleConfigurationPropertiesClause : ( ( rule__ConfigurationPropertiesClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:960:1: ruleConfigurationPropertiesClause : ( ( rule__ConfigurationPropertiesClause__Group__0 ) ) ;
     public final void ruleConfigurationPropertiesClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:936:2: ( ( ( rule__ConfigurationPropertiesClause__Group__0 ) ) )
-            // InternalDescartesQL.g:937:1: ( ( rule__ConfigurationPropertiesClause__Group__0 ) )
+            // InternalDescartesQL.g:964:2: ( ( ( rule__ConfigurationPropertiesClause__Group__0 ) ) )
+            // InternalDescartesQL.g:965:1: ( ( rule__ConfigurationPropertiesClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:937:1: ( ( rule__ConfigurationPropertiesClause__Group__0 ) )
-            // InternalDescartesQL.g:938:1: ( rule__ConfigurationPropertiesClause__Group__0 )
+            // InternalDescartesQL.g:965:1: ( ( rule__ConfigurationPropertiesClause__Group__0 ) )
+            // InternalDescartesQL.g:966:1: ( rule__ConfigurationPropertiesClause__Group__0 )
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:939:1: ( rule__ConfigurationPropertiesClause__Group__0 )
-            // InternalDescartesQL.g:939:2: rule__ConfigurationPropertiesClause__Group__0
+            // InternalDescartesQL.g:967:1: ( rule__ConfigurationPropertiesClause__Group__0 )
+            // InternalDescartesQL.g:967:2: rule__ConfigurationPropertiesClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ConfigurationPropertiesClause__Group__0();
@@ -2552,11 +2633,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConfigurationPropertyClause"
-    // InternalDescartesQL.g:951:1: entryRuleConfigurationPropertyClause : ruleConfigurationPropertyClause EOF ;
+    // InternalDescartesQL.g:979:1: entryRuleConfigurationPropertyClause : ruleConfigurationPropertyClause EOF ;
     public final void entryRuleConfigurationPropertyClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:952:1: ( ruleConfigurationPropertyClause EOF )
-            // InternalDescartesQL.g:953:1: ruleConfigurationPropertyClause EOF
+            // InternalDescartesQL.g:980:1: ( ruleConfigurationPropertyClause EOF )
+            // InternalDescartesQL.g:981:1: ruleConfigurationPropertyClause EOF
             {
              before(grammarAccess.getConfigurationPropertyClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2582,21 +2663,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConfigurationPropertyClause"
-    // InternalDescartesQL.g:960:1: ruleConfigurationPropertyClause : ( ( rule__ConfigurationPropertyClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:988:1: ruleConfigurationPropertyClause : ( ( rule__ConfigurationPropertyClause__Group__0 ) ) ;
     public final void ruleConfigurationPropertyClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:964:2: ( ( ( rule__ConfigurationPropertyClause__Group__0 ) ) )
-            // InternalDescartesQL.g:965:1: ( ( rule__ConfigurationPropertyClause__Group__0 ) )
+            // InternalDescartesQL.g:992:2: ( ( ( rule__ConfigurationPropertyClause__Group__0 ) ) )
+            // InternalDescartesQL.g:993:1: ( ( rule__ConfigurationPropertyClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:965:1: ( ( rule__ConfigurationPropertyClause__Group__0 ) )
-            // InternalDescartesQL.g:966:1: ( rule__ConfigurationPropertyClause__Group__0 )
+            // InternalDescartesQL.g:993:1: ( ( rule__ConfigurationPropertyClause__Group__0 ) )
+            // InternalDescartesQL.g:994:1: ( rule__ConfigurationPropertyClause__Group__0 )
             {
              before(grammarAccess.getConfigurationPropertyClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:967:1: ( rule__ConfigurationPropertyClause__Group__0 )
-            // InternalDescartesQL.g:967:2: rule__ConfigurationPropertyClause__Group__0
+            // InternalDescartesQL.g:995:1: ( rule__ConfigurationPropertyClause__Group__0 )
+            // InternalDescartesQL.g:995:2: rule__ConfigurationPropertyClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ConfigurationPropertyClause__Group__0();
@@ -2629,11 +2710,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDoFVariationClause"
-    // InternalDescartesQL.g:979:1: entryRuleDoFVariationClause : ruleDoFVariationClause EOF ;
+    // InternalDescartesQL.g:1007:1: entryRuleDoFVariationClause : ruleDoFVariationClause EOF ;
     public final void entryRuleDoFVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:980:1: ( ruleDoFVariationClause EOF )
-            // InternalDescartesQL.g:981:1: ruleDoFVariationClause EOF
+            // InternalDescartesQL.g:1008:1: ( ruleDoFVariationClause EOF )
+            // InternalDescartesQL.g:1009:1: ruleDoFVariationClause EOF
             {
              before(grammarAccess.getDoFVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2659,21 +2740,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDoFVariationClause"
-    // InternalDescartesQL.g:988:1: ruleDoFVariationClause : ( ( rule__DoFVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1016:1: ruleDoFVariationClause : ( ( rule__DoFVariationClause__Group__0 ) ) ;
     public final void ruleDoFVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:992:2: ( ( ( rule__DoFVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:993:1: ( ( rule__DoFVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1020:2: ( ( ( rule__DoFVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1021:1: ( ( rule__DoFVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:993:1: ( ( rule__DoFVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:994:1: ( rule__DoFVariationClause__Group__0 )
+            // InternalDescartesQL.g:1021:1: ( ( rule__DoFVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1022:1: ( rule__DoFVariationClause__Group__0 )
             {
              before(grammarAccess.getDoFVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:995:1: ( rule__DoFVariationClause__Group__0 )
-            // InternalDescartesQL.g:995:2: rule__DoFVariationClause__Group__0
+            // InternalDescartesQL.g:1023:1: ( rule__DoFVariationClause__Group__0 )
+            // InternalDescartesQL.g:1023:2: rule__DoFVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DoFVariationClause__Group__0();
@@ -2706,11 +2787,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleValueVariationClause"
-    // InternalDescartesQL.g:1007:1: entryRuleValueVariationClause : ruleValueVariationClause EOF ;
+    // InternalDescartesQL.g:1035:1: entryRuleValueVariationClause : ruleValueVariationClause EOF ;
     public final void entryRuleValueVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1008:1: ( ruleValueVariationClause EOF )
-            // InternalDescartesQL.g:1009:1: ruleValueVariationClause EOF
+            // InternalDescartesQL.g:1036:1: ( ruleValueVariationClause EOF )
+            // InternalDescartesQL.g:1037:1: ruleValueVariationClause EOF
             {
              before(grammarAccess.getValueVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2736,21 +2817,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleValueVariationClause"
-    // InternalDescartesQL.g:1016:1: ruleValueVariationClause : ( ( rule__ValueVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1044:1: ruleValueVariationClause : ( ( rule__ValueVariationClause__Group__0 ) ) ;
     public final void ruleValueVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1020:2: ( ( ( rule__ValueVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1021:1: ( ( rule__ValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1048:2: ( ( ( rule__ValueVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1049:1: ( ( rule__ValueVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1021:1: ( ( rule__ValueVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:1022:1: ( rule__ValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:1049:1: ( ( rule__ValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1050:1: ( rule__ValueVariationClause__Group__0 )
             {
              before(grammarAccess.getValueVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1023:1: ( rule__ValueVariationClause__Group__0 )
-            // InternalDescartesQL.g:1023:2: rule__ValueVariationClause__Group__0
+            // InternalDescartesQL.g:1051:1: ( rule__ValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:1051:2: rule__ValueVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ValueVariationClause__Group__0();
@@ -2783,11 +2864,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDoubleValueVariationClause"
-    // InternalDescartesQL.g:1035:1: entryRuleDoubleValueVariationClause : ruleDoubleValueVariationClause EOF ;
+    // InternalDescartesQL.g:1063:1: entryRuleDoubleValueVariationClause : ruleDoubleValueVariationClause EOF ;
     public final void entryRuleDoubleValueVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1036:1: ( ruleDoubleValueVariationClause EOF )
-            // InternalDescartesQL.g:1037:1: ruleDoubleValueVariationClause EOF
+            // InternalDescartesQL.g:1064:1: ( ruleDoubleValueVariationClause EOF )
+            // InternalDescartesQL.g:1065:1: ruleDoubleValueVariationClause EOF
             {
              before(grammarAccess.getDoubleValueVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2813,21 +2894,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDoubleValueVariationClause"
-    // InternalDescartesQL.g:1044:1: ruleDoubleValueVariationClause : ( ( rule__DoubleValueVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1072:1: ruleDoubleValueVariationClause : ( ( rule__DoubleValueVariationClause__Group__0 ) ) ;
     public final void ruleDoubleValueVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1048:2: ( ( ( rule__DoubleValueVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1049:1: ( ( rule__DoubleValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1076:2: ( ( ( rule__DoubleValueVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1077:1: ( ( rule__DoubleValueVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1049:1: ( ( rule__DoubleValueVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:1050:1: ( rule__DoubleValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:1077:1: ( ( rule__DoubleValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1078:1: ( rule__DoubleValueVariationClause__Group__0 )
             {
              before(grammarAccess.getDoubleValueVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1051:1: ( rule__DoubleValueVariationClause__Group__0 )
-            // InternalDescartesQL.g:1051:2: rule__DoubleValueVariationClause__Group__0
+            // InternalDescartesQL.g:1079:1: ( rule__DoubleValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:1079:2: rule__DoubleValueVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DoubleValueVariationClause__Group__0();
@@ -2860,11 +2941,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleIntervalVariationClause"
-    // InternalDescartesQL.g:1063:1: entryRuleIntervalVariationClause : ruleIntervalVariationClause EOF ;
+    // InternalDescartesQL.g:1091:1: entryRuleIntervalVariationClause : ruleIntervalVariationClause EOF ;
     public final void entryRuleIntervalVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1064:1: ( ruleIntervalVariationClause EOF )
-            // InternalDescartesQL.g:1065:1: ruleIntervalVariationClause EOF
+            // InternalDescartesQL.g:1092:1: ( ruleIntervalVariationClause EOF )
+            // InternalDescartesQL.g:1093:1: ruleIntervalVariationClause EOF
             {
              before(grammarAccess.getIntervalVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2890,21 +2971,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleIntervalVariationClause"
-    // InternalDescartesQL.g:1072:1: ruleIntervalVariationClause : ( ( rule__IntervalVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1100:1: ruleIntervalVariationClause : ( ( rule__IntervalVariationClause__Group__0 ) ) ;
     public final void ruleIntervalVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1076:2: ( ( ( rule__IntervalVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1077:1: ( ( rule__IntervalVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1104:2: ( ( ( rule__IntervalVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1105:1: ( ( rule__IntervalVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1077:1: ( ( rule__IntervalVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:1078:1: ( rule__IntervalVariationClause__Group__0 )
+            // InternalDescartesQL.g:1105:1: ( ( rule__IntervalVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:1106:1: ( rule__IntervalVariationClause__Group__0 )
             {
              before(grammarAccess.getIntervalVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1079:1: ( rule__IntervalVariationClause__Group__0 )
-            // InternalDescartesQL.g:1079:2: rule__IntervalVariationClause__Group__0
+            // InternalDescartesQL.g:1107:1: ( rule__IntervalVariationClause__Group__0 )
+            // InternalDescartesQL.g:1107:2: rule__IntervalVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__IntervalVariationClause__Group__0();
@@ -2937,11 +3018,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleVaryingClause"
-    // InternalDescartesQL.g:1091:1: entryRuleVaryingClause : ruleVaryingClause EOF ;
+    // InternalDescartesQL.g:1119:1: entryRuleVaryingClause : ruleVaryingClause EOF ;
     public final void entryRuleVaryingClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1092:1: ( ruleVaryingClause EOF )
-            // InternalDescartesQL.g:1093:1: ruleVaryingClause EOF
+            // InternalDescartesQL.g:1120:1: ( ruleVaryingClause EOF )
+            // InternalDescartesQL.g:1121:1: ruleVaryingClause EOF
             {
              before(grammarAccess.getVaryingClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -2967,21 +3048,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleVaryingClause"
-    // InternalDescartesQL.g:1100:1: ruleVaryingClause : ( ( rule__VaryingClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1128:1: ruleVaryingClause : ( ( rule__VaryingClause__Group__0 ) ) ;
     public final void ruleVaryingClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1104:2: ( ( ( rule__VaryingClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1105:1: ( ( rule__VaryingClause__Group__0 ) )
+            // InternalDescartesQL.g:1132:2: ( ( ( rule__VaryingClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1133:1: ( ( rule__VaryingClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1105:1: ( ( rule__VaryingClause__Group__0 ) )
-            // InternalDescartesQL.g:1106:1: ( rule__VaryingClause__Group__0 )
+            // InternalDescartesQL.g:1133:1: ( ( rule__VaryingClause__Group__0 ) )
+            // InternalDescartesQL.g:1134:1: ( rule__VaryingClause__Group__0 )
             {
              before(grammarAccess.getVaryingClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1107:1: ( rule__VaryingClause__Group__0 )
-            // InternalDescartesQL.g:1107:2: rule__VaryingClause__Group__0
+            // InternalDescartesQL.g:1135:1: ( rule__VaryingClause__Group__0 )
+            // InternalDescartesQL.g:1135:2: rule__VaryingClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__VaryingClause__Group__0();
@@ -3014,11 +3095,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDoFReference"
-    // InternalDescartesQL.g:1119:1: entryRuleDoFReference : ruleDoFReference EOF ;
+    // InternalDescartesQL.g:1147:1: entryRuleDoFReference : ruleDoFReference EOF ;
     public final void entryRuleDoFReference() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1120:1: ( ruleDoFReference EOF )
-            // InternalDescartesQL.g:1121:1: ruleDoFReference EOF
+            // InternalDescartesQL.g:1148:1: ( ruleDoFReference EOF )
+            // InternalDescartesQL.g:1149:1: ruleDoFReference EOF
             {
              before(grammarAccess.getDoFReferenceRule()); 
             pushFollow(FOLLOW_1);
@@ -3044,21 +3125,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDoFReference"
-    // InternalDescartesQL.g:1128:1: ruleDoFReference : ( ( rule__DoFReference__Group__0 ) ) ;
+    // InternalDescartesQL.g:1156:1: ruleDoFReference : ( ( rule__DoFReference__Group__0 ) ) ;
     public final void ruleDoFReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1132:2: ( ( ( rule__DoFReference__Group__0 ) ) )
-            // InternalDescartesQL.g:1133:1: ( ( rule__DoFReference__Group__0 ) )
+            // InternalDescartesQL.g:1160:2: ( ( ( rule__DoFReference__Group__0 ) ) )
+            // InternalDescartesQL.g:1161:1: ( ( rule__DoFReference__Group__0 ) )
             {
-            // InternalDescartesQL.g:1133:1: ( ( rule__DoFReference__Group__0 ) )
-            // InternalDescartesQL.g:1134:1: ( rule__DoFReference__Group__0 )
+            // InternalDescartesQL.g:1161:1: ( ( rule__DoFReference__Group__0 ) )
+            // InternalDescartesQL.g:1162:1: ( rule__DoFReference__Group__0 )
             {
              before(grammarAccess.getDoFReferenceAccess().getGroup()); 
-            // InternalDescartesQL.g:1135:1: ( rule__DoFReference__Group__0 )
-            // InternalDescartesQL.g:1135:2: rule__DoFReference__Group__0
+            // InternalDescartesQL.g:1163:1: ( rule__DoFReference__Group__0 )
+            // InternalDescartesQL.g:1163:2: rule__DoFReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DoFReference__Group__0();
@@ -3091,11 +3172,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricClause"
-    // InternalDescartesQL.g:1147:1: entryRuleMetricClause : ruleMetricClause EOF ;
+    // InternalDescartesQL.g:1175:1: entryRuleMetricClause : ruleMetricClause EOF ;
     public final void entryRuleMetricClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1148:1: ( ruleMetricClause EOF )
-            // InternalDescartesQL.g:1149:1: ruleMetricClause EOF
+            // InternalDescartesQL.g:1176:1: ( ruleMetricClause EOF )
+            // InternalDescartesQL.g:1177:1: ruleMetricClause EOF
             {
              before(grammarAccess.getMetricClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3121,21 +3202,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricClause"
-    // InternalDescartesQL.g:1156:1: ruleMetricClause : ( ( rule__MetricClause__MetricReferenceAssignment ) ) ;
+    // InternalDescartesQL.g:1184:1: ruleMetricClause : ( ( rule__MetricClause__MetricReferenceAssignment ) ) ;
     public final void ruleMetricClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1160:2: ( ( ( rule__MetricClause__MetricReferenceAssignment ) ) )
-            // InternalDescartesQL.g:1161:1: ( ( rule__MetricClause__MetricReferenceAssignment ) )
+            // InternalDescartesQL.g:1188:2: ( ( ( rule__MetricClause__MetricReferenceAssignment ) ) )
+            // InternalDescartesQL.g:1189:1: ( ( rule__MetricClause__MetricReferenceAssignment ) )
             {
-            // InternalDescartesQL.g:1161:1: ( ( rule__MetricClause__MetricReferenceAssignment ) )
-            // InternalDescartesQL.g:1162:1: ( rule__MetricClause__MetricReferenceAssignment )
+            // InternalDescartesQL.g:1189:1: ( ( rule__MetricClause__MetricReferenceAssignment ) )
+            // InternalDescartesQL.g:1190:1: ( rule__MetricClause__MetricReferenceAssignment )
             {
              before(grammarAccess.getMetricClauseAccess().getMetricReferenceAssignment()); 
-            // InternalDescartesQL.g:1163:1: ( rule__MetricClause__MetricReferenceAssignment )
-            // InternalDescartesQL.g:1163:2: rule__MetricClause__MetricReferenceAssignment
+            // InternalDescartesQL.g:1191:1: ( rule__MetricClause__MetricReferenceAssignment )
+            // InternalDescartesQL.g:1191:2: rule__MetricClause__MetricReferenceAssignment
             {
             pushFollow(FOLLOW_2);
             rule__MetricClause__MetricReferenceAssignment();
@@ -3168,11 +3249,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleAggregateMetricClause"
-    // InternalDescartesQL.g:1175:1: entryRuleAggregateMetricClause : ruleAggregateMetricClause EOF ;
+    // InternalDescartesQL.g:1203:1: entryRuleAggregateMetricClause : ruleAggregateMetricClause EOF ;
     public final void entryRuleAggregateMetricClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1176:1: ( ruleAggregateMetricClause EOF )
-            // InternalDescartesQL.g:1177:1: ruleAggregateMetricClause EOF
+            // InternalDescartesQL.g:1204:1: ( ruleAggregateMetricClause EOF )
+            // InternalDescartesQL.g:1205:1: ruleAggregateMetricClause EOF
             {
              before(grammarAccess.getAggregateMetricClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3198,21 +3279,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleAggregateMetricClause"
-    // InternalDescartesQL.g:1184:1: ruleAggregateMetricClause : ( ( rule__AggregateMetricClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1212:1: ruleAggregateMetricClause : ( ( rule__AggregateMetricClause__Group__0 ) ) ;
     public final void ruleAggregateMetricClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1188:2: ( ( ( rule__AggregateMetricClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1189:1: ( ( rule__AggregateMetricClause__Group__0 ) )
+            // InternalDescartesQL.g:1216:2: ( ( ( rule__AggregateMetricClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1217:1: ( ( rule__AggregateMetricClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1189:1: ( ( rule__AggregateMetricClause__Group__0 ) )
-            // InternalDescartesQL.g:1190:1: ( rule__AggregateMetricClause__Group__0 )
+            // InternalDescartesQL.g:1217:1: ( ( rule__AggregateMetricClause__Group__0 ) )
+            // InternalDescartesQL.g:1218:1: ( rule__AggregateMetricClause__Group__0 )
             {
              before(grammarAccess.getAggregateMetricClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1191:1: ( rule__AggregateMetricClause__Group__0 )
-            // InternalDescartesQL.g:1191:2: rule__AggregateMetricClause__Group__0
+            // InternalDescartesQL.g:1219:1: ( rule__AggregateMetricClause__Group__0 )
+            // InternalDescartesQL.g:1219:2: rule__AggregateMetricClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__AggregateMetricClause__Group__0();
@@ -3245,11 +3326,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricClauses"
-    // InternalDescartesQL.g:1203:1: entryRuleMetricClauses : ruleMetricClauses EOF ;
+    // InternalDescartesQL.g:1231:1: entryRuleMetricClauses : ruleMetricClauses EOF ;
     public final void entryRuleMetricClauses() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1204:1: ( ruleMetricClauses EOF )
-            // InternalDescartesQL.g:1205:1: ruleMetricClauses EOF
+            // InternalDescartesQL.g:1232:1: ( ruleMetricClauses EOF )
+            // InternalDescartesQL.g:1233:1: ruleMetricClauses EOF
             {
              before(grammarAccess.getMetricClausesRule()); 
             pushFollow(FOLLOW_1);
@@ -3275,21 +3356,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricClauses"
-    // InternalDescartesQL.g:1212:1: ruleMetricClauses : ( ( rule__MetricClauses__Group__0 ) ) ;
+    // InternalDescartesQL.g:1240:1: ruleMetricClauses : ( ( rule__MetricClauses__Group__0 ) ) ;
     public final void ruleMetricClauses() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1216:2: ( ( ( rule__MetricClauses__Group__0 ) ) )
-            // InternalDescartesQL.g:1217:1: ( ( rule__MetricClauses__Group__0 ) )
+            // InternalDescartesQL.g:1244:2: ( ( ( rule__MetricClauses__Group__0 ) ) )
+            // InternalDescartesQL.g:1245:1: ( ( rule__MetricClauses__Group__0 ) )
             {
-            // InternalDescartesQL.g:1217:1: ( ( rule__MetricClauses__Group__0 ) )
-            // InternalDescartesQL.g:1218:1: ( rule__MetricClauses__Group__0 )
+            // InternalDescartesQL.g:1245:1: ( ( rule__MetricClauses__Group__0 ) )
+            // InternalDescartesQL.g:1246:1: ( rule__MetricClauses__Group__0 )
             {
              before(grammarAccess.getMetricClausesAccess().getGroup()); 
-            // InternalDescartesQL.g:1219:1: ( rule__MetricClauses__Group__0 )
-            // InternalDescartesQL.g:1219:2: rule__MetricClauses__Group__0
+            // InternalDescartesQL.g:1247:1: ( rule__MetricClauses__Group__0 )
+            // InternalDescartesQL.g:1247:2: rule__MetricClauses__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MetricClauses__Group__0();
@@ -3322,11 +3403,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricStarClause"
-    // InternalDescartesQL.g:1231:1: entryRuleMetricStarClause : ruleMetricStarClause EOF ;
+    // InternalDescartesQL.g:1259:1: entryRuleMetricStarClause : ruleMetricStarClause EOF ;
     public final void entryRuleMetricStarClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1232:1: ( ruleMetricStarClause EOF )
-            // InternalDescartesQL.g:1233:1: ruleMetricStarClause EOF
+            // InternalDescartesQL.g:1260:1: ( ruleMetricStarClause EOF )
+            // InternalDescartesQL.g:1261:1: ruleMetricStarClause EOF
             {
              before(grammarAccess.getMetricStarClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3352,21 +3433,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricStarClause"
-    // InternalDescartesQL.g:1240:1: ruleMetricStarClause : ( ( rule__MetricStarClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1268:1: ruleMetricStarClause : ( ( rule__MetricStarClause__Group__0 ) ) ;
     public final void ruleMetricStarClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1244:2: ( ( ( rule__MetricStarClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1245:1: ( ( rule__MetricStarClause__Group__0 ) )
+            // InternalDescartesQL.g:1272:2: ( ( ( rule__MetricStarClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1273:1: ( ( rule__MetricStarClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1245:1: ( ( rule__MetricStarClause__Group__0 ) )
-            // InternalDescartesQL.g:1246:1: ( rule__MetricStarClause__Group__0 )
+            // InternalDescartesQL.g:1273:1: ( ( rule__MetricStarClause__Group__0 ) )
+            // InternalDescartesQL.g:1274:1: ( rule__MetricStarClause__Group__0 )
             {
              before(grammarAccess.getMetricStarClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1247:1: ( rule__MetricStarClause__Group__0 )
-            // InternalDescartesQL.g:1247:2: rule__MetricStarClause__Group__0
+            // InternalDescartesQL.g:1275:1: ( rule__MetricStarClause__Group__0 )
+            // InternalDescartesQL.g:1275:2: rule__MetricStarClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MetricStarClause__Group__0();
@@ -3399,11 +3480,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleMetricReference"
-    // InternalDescartesQL.g:1259:1: entryRuleMetricReference : ruleMetricReference EOF ;
+    // InternalDescartesQL.g:1287:1: entryRuleMetricReference : ruleMetricReference EOF ;
     public final void entryRuleMetricReference() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1260:1: ( ruleMetricReference EOF )
-            // InternalDescartesQL.g:1261:1: ruleMetricReference EOF
+            // InternalDescartesQL.g:1288:1: ( ruleMetricReference EOF )
+            // InternalDescartesQL.g:1289:1: ruleMetricReference EOF
             {
              before(grammarAccess.getMetricReferenceRule()); 
             pushFollow(FOLLOW_1);
@@ -3429,21 +3510,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleMetricReference"
-    // InternalDescartesQL.g:1268:1: ruleMetricReference : ( ( rule__MetricReference__Group__0 ) ) ;
+    // InternalDescartesQL.g:1296:1: ruleMetricReference : ( ( rule__MetricReference__Group__0 ) ) ;
     public final void ruleMetricReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1272:2: ( ( ( rule__MetricReference__Group__0 ) ) )
-            // InternalDescartesQL.g:1273:1: ( ( rule__MetricReference__Group__0 ) )
+            // InternalDescartesQL.g:1300:2: ( ( ( rule__MetricReference__Group__0 ) ) )
+            // InternalDescartesQL.g:1301:1: ( ( rule__MetricReference__Group__0 ) )
             {
-            // InternalDescartesQL.g:1273:1: ( ( rule__MetricReference__Group__0 ) )
-            // InternalDescartesQL.g:1274:1: ( rule__MetricReference__Group__0 )
+            // InternalDescartesQL.g:1301:1: ( ( rule__MetricReference__Group__0 ) )
+            // InternalDescartesQL.g:1302:1: ( rule__MetricReference__Group__0 )
             {
              before(grammarAccess.getMetricReferenceAccess().getGroup()); 
-            // InternalDescartesQL.g:1275:1: ( rule__MetricReference__Group__0 )
-            // InternalDescartesQL.g:1275:2: rule__MetricReference__Group__0
+            // InternalDescartesQL.g:1303:1: ( rule__MetricReference__Group__0 )
+            // InternalDescartesQL.g:1303:2: rule__MetricReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MetricReference__Group__0();
@@ -3476,11 +3557,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleNavigationClause"
-    // InternalDescartesQL.g:1287:1: entryRuleNavigationClause : ruleNavigationClause EOF ;
+    // InternalDescartesQL.g:1315:1: entryRuleNavigationClause : ruleNavigationClause EOF ;
     public final void entryRuleNavigationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1288:1: ( ruleNavigationClause EOF )
-            // InternalDescartesQL.g:1289:1: ruleNavigationClause EOF
+            // InternalDescartesQL.g:1316:1: ( ruleNavigationClause EOF )
+            // InternalDescartesQL.g:1317:1: ruleNavigationClause EOF
             {
              before(grammarAccess.getNavigationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3506,21 +3587,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleNavigationClause"
-    // InternalDescartesQL.g:1296:1: ruleNavigationClause : ( ( rule__NavigationClause__Alternatives ) ) ;
+    // InternalDescartesQL.g:1324:1: ruleNavigationClause : ( ( rule__NavigationClause__Alternatives ) ) ;
     public final void ruleNavigationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1300:2: ( ( ( rule__NavigationClause__Alternatives ) ) )
-            // InternalDescartesQL.g:1301:1: ( ( rule__NavigationClause__Alternatives ) )
+            // InternalDescartesQL.g:1328:2: ( ( ( rule__NavigationClause__Alternatives ) ) )
+            // InternalDescartesQL.g:1329:1: ( ( rule__NavigationClause__Alternatives ) )
             {
-            // InternalDescartesQL.g:1301:1: ( ( rule__NavigationClause__Alternatives ) )
-            // InternalDescartesQL.g:1302:1: ( rule__NavigationClause__Alternatives )
+            // InternalDescartesQL.g:1329:1: ( ( rule__NavigationClause__Alternatives ) )
+            // InternalDescartesQL.g:1330:1: ( rule__NavigationClause__Alternatives )
             {
              before(grammarAccess.getNavigationClauseAccess().getAlternatives()); 
-            // InternalDescartesQL.g:1303:1: ( rule__NavigationClause__Alternatives )
-            // InternalDescartesQL.g:1303:2: rule__NavigationClause__Alternatives
+            // InternalDescartesQL.g:1331:1: ( rule__NavigationClause__Alternatives )
+            // InternalDescartesQL.g:1331:2: rule__NavigationClause__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__NavigationClause__Alternatives();
@@ -3553,11 +3634,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleChildrenClause"
-    // InternalDescartesQL.g:1315:1: entryRuleChildrenClause : ruleChildrenClause EOF ;
+    // InternalDescartesQL.g:1343:1: entryRuleChildrenClause : ruleChildrenClause EOF ;
     public final void entryRuleChildrenClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1316:1: ( ruleChildrenClause EOF )
-            // InternalDescartesQL.g:1317:1: ruleChildrenClause EOF
+            // InternalDescartesQL.g:1344:1: ( ruleChildrenClause EOF )
+            // InternalDescartesQL.g:1345:1: ruleChildrenClause EOF
             {
              before(grammarAccess.getChildrenClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3583,21 +3664,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleChildrenClause"
-    // InternalDescartesQL.g:1324:1: ruleChildrenClause : ( ( rule__ChildrenClause__ContentAssignment ) ) ;
+    // InternalDescartesQL.g:1352:1: ruleChildrenClause : ( ( rule__ChildrenClause__ContentAssignment ) ) ;
     public final void ruleChildrenClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1328:2: ( ( ( rule__ChildrenClause__ContentAssignment ) ) )
-            // InternalDescartesQL.g:1329:1: ( ( rule__ChildrenClause__ContentAssignment ) )
+            // InternalDescartesQL.g:1356:2: ( ( ( rule__ChildrenClause__ContentAssignment ) ) )
+            // InternalDescartesQL.g:1357:1: ( ( rule__ChildrenClause__ContentAssignment ) )
             {
-            // InternalDescartesQL.g:1329:1: ( ( rule__ChildrenClause__ContentAssignment ) )
-            // InternalDescartesQL.g:1330:1: ( rule__ChildrenClause__ContentAssignment )
+            // InternalDescartesQL.g:1357:1: ( ( rule__ChildrenClause__ContentAssignment ) )
+            // InternalDescartesQL.g:1358:1: ( rule__ChildrenClause__ContentAssignment )
             {
              before(grammarAccess.getChildrenClauseAccess().getContentAssignment()); 
-            // InternalDescartesQL.g:1331:1: ( rule__ChildrenClause__ContentAssignment )
-            // InternalDescartesQL.g:1331:2: rule__ChildrenClause__ContentAssignment
+            // InternalDescartesQL.g:1359:1: ( rule__ChildrenClause__ContentAssignment )
+            // InternalDescartesQL.g:1359:2: rule__ChildrenClause__ContentAssignment
             {
             pushFollow(FOLLOW_2);
             rule__ChildrenClause__ContentAssignment();
@@ -3630,11 +3711,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleParentClause"
-    // InternalDescartesQL.g:1343:1: entryRuleParentClause : ruleParentClause EOF ;
+    // InternalDescartesQL.g:1371:1: entryRuleParentClause : ruleParentClause EOF ;
     public final void entryRuleParentClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1344:1: ( ruleParentClause EOF )
-            // InternalDescartesQL.g:1345:1: ruleParentClause EOF
+            // InternalDescartesQL.g:1372:1: ( ruleParentClause EOF )
+            // InternalDescartesQL.g:1373:1: ruleParentClause EOF
             {
              before(grammarAccess.getParentClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3660,21 +3741,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleParentClause"
-    // InternalDescartesQL.g:1352:1: ruleParentClause : ( ( rule__ParentClause__ContentAssignment ) ) ;
+    // InternalDescartesQL.g:1380:1: ruleParentClause : ( ( rule__ParentClause__ContentAssignment ) ) ;
     public final void ruleParentClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1356:2: ( ( ( rule__ParentClause__ContentAssignment ) ) )
-            // InternalDescartesQL.g:1357:1: ( ( rule__ParentClause__ContentAssignment ) )
+            // InternalDescartesQL.g:1384:2: ( ( ( rule__ParentClause__ContentAssignment ) ) )
+            // InternalDescartesQL.g:1385:1: ( ( rule__ParentClause__ContentAssignment ) )
             {
-            // InternalDescartesQL.g:1357:1: ( ( rule__ParentClause__ContentAssignment ) )
-            // InternalDescartesQL.g:1358:1: ( rule__ParentClause__ContentAssignment )
+            // InternalDescartesQL.g:1385:1: ( ( rule__ParentClause__ContentAssignment ) )
+            // InternalDescartesQL.g:1386:1: ( rule__ParentClause__ContentAssignment )
             {
              before(grammarAccess.getParentClauseAccess().getContentAssignment()); 
-            // InternalDescartesQL.g:1359:1: ( rule__ParentClause__ContentAssignment )
-            // InternalDescartesQL.g:1359:2: rule__ParentClause__ContentAssignment
+            // InternalDescartesQL.g:1387:1: ( rule__ParentClause__ContentAssignment )
+            // InternalDescartesQL.g:1387:2: rule__ParentClause__ContentAssignment
             {
             pushFollow(FOLLOW_2);
             rule__ParentClause__ContentAssignment();
@@ -3707,11 +3788,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFindClause"
-    // InternalDescartesQL.g:1371:1: entryRuleFindClause : ruleFindClause EOF ;
+    // InternalDescartesQL.g:1399:1: entryRuleFindClause : ruleFindClause EOF ;
     public final void entryRuleFindClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1372:1: ( ruleFindClause EOF )
-            // InternalDescartesQL.g:1373:1: ruleFindClause EOF
+            // InternalDescartesQL.g:1400:1: ( ruleFindClause EOF )
+            // InternalDescartesQL.g:1401:1: ruleFindClause EOF
             {
              before(grammarAccess.getFindClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3737,21 +3818,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFindClause"
-    // InternalDescartesQL.g:1380:1: ruleFindClause : ( ( rule__FindClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1408:1: ruleFindClause : ( ( rule__FindClause__Group__0 ) ) ;
     public final void ruleFindClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1384:2: ( ( ( rule__FindClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1385:1: ( ( rule__FindClause__Group__0 ) )
+            // InternalDescartesQL.g:1412:2: ( ( ( rule__FindClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1413:1: ( ( rule__FindClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1385:1: ( ( rule__FindClause__Group__0 ) )
-            // InternalDescartesQL.g:1386:1: ( rule__FindClause__Group__0 )
+            // InternalDescartesQL.g:1413:1: ( ( rule__FindClause__Group__0 ) )
+            // InternalDescartesQL.g:1414:1: ( rule__FindClause__Group__0 )
             {
              before(grammarAccess.getFindClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1387:1: ( rule__FindClause__Group__0 )
-            // InternalDescartesQL.g:1387:2: rule__FindClause__Group__0
+            // InternalDescartesQL.g:1415:1: ( rule__FindClause__Group__0 )
+            // InternalDescartesQL.g:1415:2: rule__FindClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FindClause__Group__0();
@@ -3784,11 +3865,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleForClause"
-    // InternalDescartesQL.g:1399:1: entryRuleForClause : ruleForClause EOF ;
+    // InternalDescartesQL.g:1427:1: entryRuleForClause : ruleForClause EOF ;
     public final void entryRuleForClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1400:1: ( ruleForClause EOF )
-            // InternalDescartesQL.g:1401:1: ruleForClause EOF
+            // InternalDescartesQL.g:1428:1: ( ruleForClause EOF )
+            // InternalDescartesQL.g:1429:1: ruleForClause EOF
             {
              before(grammarAccess.getForClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3814,21 +3895,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleForClause"
-    // InternalDescartesQL.g:1408:1: ruleForClause : ( ( rule__ForClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1436:1: ruleForClause : ( ( rule__ForClause__Group__0 ) ) ;
     public final void ruleForClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1412:2: ( ( ( rule__ForClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1413:1: ( ( rule__ForClause__Group__0 ) )
+            // InternalDescartesQL.g:1440:2: ( ( ( rule__ForClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1441:1: ( ( rule__ForClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1413:1: ( ( rule__ForClause__Group__0 ) )
-            // InternalDescartesQL.g:1414:1: ( rule__ForClause__Group__0 )
+            // InternalDescartesQL.g:1441:1: ( ( rule__ForClause__Group__0 ) )
+            // InternalDescartesQL.g:1442:1: ( rule__ForClause__Group__0 )
             {
              before(grammarAccess.getForClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1415:1: ( rule__ForClause__Group__0 )
-            // InternalDescartesQL.g:1415:2: rule__ForClause__Group__0
+            // InternalDescartesQL.g:1443:1: ( rule__ForClause__Group__0 )
+            // InternalDescartesQL.g:1443:2: rule__ForClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ForClause__Group__0();
@@ -3861,11 +3942,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleEntityReferenceClause"
-    // InternalDescartesQL.g:1427:1: entryRuleEntityReferenceClause : ruleEntityReferenceClause EOF ;
+    // InternalDescartesQL.g:1455:1: entryRuleEntityReferenceClause : ruleEntityReferenceClause EOF ;
     public final void entryRuleEntityReferenceClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1428:1: ( ruleEntityReferenceClause EOF )
-            // InternalDescartesQL.g:1429:1: ruleEntityReferenceClause EOF
+            // InternalDescartesQL.g:1456:1: ( ruleEntityReferenceClause EOF )
+            // InternalDescartesQL.g:1457:1: ruleEntityReferenceClause EOF
             {
              before(grammarAccess.getEntityReferenceClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -3891,21 +3972,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleEntityReferenceClause"
-    // InternalDescartesQL.g:1436:1: ruleEntityReferenceClause : ( ( rule__EntityReferenceClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1464:1: ruleEntityReferenceClause : ( ( rule__EntityReferenceClause__Group__0 ) ) ;
     public final void ruleEntityReferenceClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1440:2: ( ( ( rule__EntityReferenceClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1441:1: ( ( rule__EntityReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1468:2: ( ( ( rule__EntityReferenceClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1469:1: ( ( rule__EntityReferenceClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1441:1: ( ( rule__EntityReferenceClause__Group__0 ) )
-            // InternalDescartesQL.g:1442:1: ( rule__EntityReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1469:1: ( ( rule__EntityReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1470:1: ( rule__EntityReferenceClause__Group__0 )
             {
              before(grammarAccess.getEntityReferenceClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1443:1: ( rule__EntityReferenceClause__Group__0 )
-            // InternalDescartesQL.g:1443:2: rule__EntityReferenceClause__Group__0
+            // InternalDescartesQL.g:1471:1: ( rule__EntityReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1471:2: rule__EntityReferenceClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__EntityReferenceClause__Group__0();
@@ -3938,11 +4019,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleEntityReference"
-    // InternalDescartesQL.g:1455:1: entryRuleEntityReference : ruleEntityReference EOF ;
+    // InternalDescartesQL.g:1483:1: entryRuleEntityReference : ruleEntityReference EOF ;
     public final void entryRuleEntityReference() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1456:1: ( ruleEntityReference EOF )
-            // InternalDescartesQL.g:1457:1: ruleEntityReference EOF
+            // InternalDescartesQL.g:1484:1: ( ruleEntityReference EOF )
+            // InternalDescartesQL.g:1485:1: ruleEntityReference EOF
             {
              before(grammarAccess.getEntityReferenceRule()); 
             pushFollow(FOLLOW_1);
@@ -3968,21 +4049,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleEntityReference"
-    // InternalDescartesQL.g:1464:1: ruleEntityReference : ( ( rule__EntityReference__Group__0 ) ) ;
+    // InternalDescartesQL.g:1492:1: ruleEntityReference : ( ( rule__EntityReference__Group__0 ) ) ;
     public final void ruleEntityReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1468:2: ( ( ( rule__EntityReference__Group__0 ) ) )
-            // InternalDescartesQL.g:1469:1: ( ( rule__EntityReference__Group__0 ) )
+            // InternalDescartesQL.g:1496:2: ( ( ( rule__EntityReference__Group__0 ) ) )
+            // InternalDescartesQL.g:1497:1: ( ( rule__EntityReference__Group__0 ) )
             {
-            // InternalDescartesQL.g:1469:1: ( ( rule__EntityReference__Group__0 ) )
-            // InternalDescartesQL.g:1470:1: ( rule__EntityReference__Group__0 )
+            // InternalDescartesQL.g:1497:1: ( ( rule__EntityReference__Group__0 ) )
+            // InternalDescartesQL.g:1498:1: ( rule__EntityReference__Group__0 )
             {
              before(grammarAccess.getEntityReferenceAccess().getGroup()); 
-            // InternalDescartesQL.g:1471:1: ( rule__EntityReference__Group__0 )
-            // InternalDescartesQL.g:1471:2: rule__EntityReference__Group__0
+            // InternalDescartesQL.g:1499:1: ( rule__EntityReference__Group__0 )
+            // InternalDescartesQL.g:1499:2: rule__EntityReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__EntityReference__Group__0();
@@ -4015,11 +4096,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleAliasClause"
-    // InternalDescartesQL.g:1483:1: entryRuleAliasClause : ruleAliasClause EOF ;
+    // InternalDescartesQL.g:1511:1: entryRuleAliasClause : ruleAliasClause EOF ;
     public final void entryRuleAliasClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1484:1: ( ruleAliasClause EOF )
-            // InternalDescartesQL.g:1485:1: ruleAliasClause EOF
+            // InternalDescartesQL.g:1512:1: ( ruleAliasClause EOF )
+            // InternalDescartesQL.g:1513:1: ruleAliasClause EOF
             {
              before(grammarAccess.getAliasClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4045,21 +4126,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleAliasClause"
-    // InternalDescartesQL.g:1492:1: ruleAliasClause : ( ( rule__AliasClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1520:1: ruleAliasClause : ( ( rule__AliasClause__Group__0 ) ) ;
     public final void ruleAliasClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1496:2: ( ( ( rule__AliasClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1497:1: ( ( rule__AliasClause__Group__0 ) )
+            // InternalDescartesQL.g:1524:2: ( ( ( rule__AliasClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1525:1: ( ( rule__AliasClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1497:1: ( ( rule__AliasClause__Group__0 ) )
-            // InternalDescartesQL.g:1498:1: ( rule__AliasClause__Group__0 )
+            // InternalDescartesQL.g:1525:1: ( ( rule__AliasClause__Group__0 ) )
+            // InternalDescartesQL.g:1526:1: ( rule__AliasClause__Group__0 )
             {
              before(grammarAccess.getAliasClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1499:1: ( rule__AliasClause__Group__0 )
-            // InternalDescartesQL.g:1499:2: rule__AliasClause__Group__0
+            // InternalDescartesQL.g:1527:1: ( rule__AliasClause__Group__0 )
+            // InternalDescartesQL.g:1527:2: rule__AliasClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__AliasClause__Group__0();
@@ -4092,11 +4173,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleUsingClause"
-    // InternalDescartesQL.g:1511:1: entryRuleUsingClause : ruleUsingClause EOF ;
+    // InternalDescartesQL.g:1539:1: entryRuleUsingClause : ruleUsingClause EOF ;
     public final void entryRuleUsingClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1512:1: ( ruleUsingClause EOF )
-            // InternalDescartesQL.g:1513:1: ruleUsingClause EOF
+            // InternalDescartesQL.g:1540:1: ( ruleUsingClause EOF )
+            // InternalDescartesQL.g:1541:1: ruleUsingClause EOF
             {
              before(grammarAccess.getUsingClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4122,21 +4203,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleUsingClause"
-    // InternalDescartesQL.g:1520:1: ruleUsingClause : ( ( rule__UsingClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1548:1: ruleUsingClause : ( ( rule__UsingClause__Group__0 ) ) ;
     public final void ruleUsingClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1524:2: ( ( ( rule__UsingClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1525:1: ( ( rule__UsingClause__Group__0 ) )
+            // InternalDescartesQL.g:1552:2: ( ( ( rule__UsingClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1553:1: ( ( rule__UsingClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1525:1: ( ( rule__UsingClause__Group__0 ) )
-            // InternalDescartesQL.g:1526:1: ( rule__UsingClause__Group__0 )
+            // InternalDescartesQL.g:1553:1: ( ( rule__UsingClause__Group__0 ) )
+            // InternalDescartesQL.g:1554:1: ( rule__UsingClause__Group__0 )
             {
              before(grammarAccess.getUsingClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1527:1: ( rule__UsingClause__Group__0 )
-            // InternalDescartesQL.g:1527:2: rule__UsingClause__Group__0
+            // InternalDescartesQL.g:1555:1: ( rule__UsingClause__Group__0 )
+            // InternalDescartesQL.g:1555:2: rule__UsingClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__UsingClause__Group__0();
@@ -4169,11 +4250,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWithClause"
-    // InternalDescartesQL.g:1539:1: entryRuleWithClause : ruleWithClause EOF ;
+    // InternalDescartesQL.g:1567:1: entryRuleWithClause : ruleWithClause EOF ;
     public final void entryRuleWithClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1540:1: ( ruleWithClause EOF )
-            // InternalDescartesQL.g:1541:1: ruleWithClause EOF
+            // InternalDescartesQL.g:1568:1: ( ruleWithClause EOF )
+            // InternalDescartesQL.g:1569:1: ruleWithClause EOF
             {
              before(grammarAccess.getWithClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4199,21 +4280,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWithClause"
-    // InternalDescartesQL.g:1548:1: ruleWithClause : ( ( rule__WithClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1576:1: ruleWithClause : ( ( rule__WithClause__Group__0 ) ) ;
     public final void ruleWithClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1552:2: ( ( ( rule__WithClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1553:1: ( ( rule__WithClause__Group__0 ) )
+            // InternalDescartesQL.g:1580:2: ( ( ( rule__WithClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1581:1: ( ( rule__WithClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1553:1: ( ( rule__WithClause__Group__0 ) )
-            // InternalDescartesQL.g:1554:1: ( rule__WithClause__Group__0 )
+            // InternalDescartesQL.g:1581:1: ( ( rule__WithClause__Group__0 ) )
+            // InternalDescartesQL.g:1582:1: ( rule__WithClause__Group__0 )
             {
              before(grammarAccess.getWithClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1555:1: ( rule__WithClause__Group__0 )
-            // InternalDescartesQL.g:1555:2: rule__WithClause__Group__0
+            // InternalDescartesQL.g:1583:1: ( rule__WithClause__Group__0 )
+            // InternalDescartesQL.g:1583:2: rule__WithClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WithClause__Group__0();
@@ -4246,11 +4327,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleModelReferenceClause"
-    // InternalDescartesQL.g:1567:1: entryRuleModelReferenceClause : ruleModelReferenceClause EOF ;
+    // InternalDescartesQL.g:1595:1: entryRuleModelReferenceClause : ruleModelReferenceClause EOF ;
     public final void entryRuleModelReferenceClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1568:1: ( ruleModelReferenceClause EOF )
-            // InternalDescartesQL.g:1569:1: ruleModelReferenceClause EOF
+            // InternalDescartesQL.g:1596:1: ( ruleModelReferenceClause EOF )
+            // InternalDescartesQL.g:1597:1: ruleModelReferenceClause EOF
             {
              before(grammarAccess.getModelReferenceClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4276,21 +4357,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleModelReferenceClause"
-    // InternalDescartesQL.g:1576:1: ruleModelReferenceClause : ( ( rule__ModelReferenceClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1604:1: ruleModelReferenceClause : ( ( rule__ModelReferenceClause__Group__0 ) ) ;
     public final void ruleModelReferenceClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1580:2: ( ( ( rule__ModelReferenceClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1581:1: ( ( rule__ModelReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1608:2: ( ( ( rule__ModelReferenceClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1609:1: ( ( rule__ModelReferenceClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1581:1: ( ( rule__ModelReferenceClause__Group__0 ) )
-            // InternalDescartesQL.g:1582:1: ( rule__ModelReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1609:1: ( ( rule__ModelReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1610:1: ( rule__ModelReferenceClause__Group__0 )
             {
              before(grammarAccess.getModelReferenceClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1583:1: ( rule__ModelReferenceClause__Group__0 )
-            // InternalDescartesQL.g:1583:2: rule__ModelReferenceClause__Group__0
+            // InternalDescartesQL.g:1611:1: ( rule__ModelReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1611:2: rule__ModelReferenceClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ModelReferenceClause__Group__0();
@@ -4323,11 +4404,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleModelFamily"
-    // InternalDescartesQL.g:1595:1: entryRuleModelFamily : ruleModelFamily EOF ;
+    // InternalDescartesQL.g:1623:1: entryRuleModelFamily : ruleModelFamily EOF ;
     public final void entryRuleModelFamily() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1596:1: ( ruleModelFamily EOF )
-            // InternalDescartesQL.g:1597:1: ruleModelFamily EOF
+            // InternalDescartesQL.g:1624:1: ( ruleModelFamily EOF )
+            // InternalDescartesQL.g:1625:1: ruleModelFamily EOF
             {
              before(grammarAccess.getModelFamilyRule()); 
             pushFollow(FOLLOW_1);
@@ -4353,21 +4434,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleModelFamily"
-    // InternalDescartesQL.g:1604:1: ruleModelFamily : ( ( rule__ModelFamily__FamilyAssignment ) ) ;
+    // InternalDescartesQL.g:1632:1: ruleModelFamily : ( ( rule__ModelFamily__FamilyAssignment ) ) ;
     public final void ruleModelFamily() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1608:2: ( ( ( rule__ModelFamily__FamilyAssignment ) ) )
-            // InternalDescartesQL.g:1609:1: ( ( rule__ModelFamily__FamilyAssignment ) )
+            // InternalDescartesQL.g:1636:2: ( ( ( rule__ModelFamily__FamilyAssignment ) ) )
+            // InternalDescartesQL.g:1637:1: ( ( rule__ModelFamily__FamilyAssignment ) )
             {
-            // InternalDescartesQL.g:1609:1: ( ( rule__ModelFamily__FamilyAssignment ) )
-            // InternalDescartesQL.g:1610:1: ( rule__ModelFamily__FamilyAssignment )
+            // InternalDescartesQL.g:1637:1: ( ( rule__ModelFamily__FamilyAssignment ) )
+            // InternalDescartesQL.g:1638:1: ( rule__ModelFamily__FamilyAssignment )
             {
              before(grammarAccess.getModelFamilyAccess().getFamilyAssignment()); 
-            // InternalDescartesQL.g:1611:1: ( rule__ModelFamily__FamilyAssignment )
-            // InternalDescartesQL.g:1611:2: rule__ModelFamily__FamilyAssignment
+            // InternalDescartesQL.g:1639:1: ( rule__ModelFamily__FamilyAssignment )
+            // InternalDescartesQL.g:1639:2: rule__ModelFamily__FamilyAssignment
             {
             pushFollow(FOLLOW_2);
             rule__ModelFamily__FamilyAssignment();
@@ -4400,11 +4481,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleModelLocation"
-    // InternalDescartesQL.g:1623:1: entryRuleModelLocation : ruleModelLocation EOF ;
+    // InternalDescartesQL.g:1651:1: entryRuleModelLocation : ruleModelLocation EOF ;
     public final void entryRuleModelLocation() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1624:1: ( ruleModelLocation EOF )
-            // InternalDescartesQL.g:1625:1: ruleModelLocation EOF
+            // InternalDescartesQL.g:1652:1: ( ruleModelLocation EOF )
+            // InternalDescartesQL.g:1653:1: ruleModelLocation EOF
             {
              before(grammarAccess.getModelLocationRule()); 
             pushFollow(FOLLOW_1);
@@ -4430,21 +4511,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleModelLocation"
-    // InternalDescartesQL.g:1632:1: ruleModelLocation : ( ( rule__ModelLocation__LocationAssignment ) ) ;
+    // InternalDescartesQL.g:1660:1: ruleModelLocation : ( ( rule__ModelLocation__LocationAssignment ) ) ;
     public final void ruleModelLocation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1636:2: ( ( ( rule__ModelLocation__LocationAssignment ) ) )
-            // InternalDescartesQL.g:1637:1: ( ( rule__ModelLocation__LocationAssignment ) )
+            // InternalDescartesQL.g:1664:2: ( ( ( rule__ModelLocation__LocationAssignment ) ) )
+            // InternalDescartesQL.g:1665:1: ( ( rule__ModelLocation__LocationAssignment ) )
             {
-            // InternalDescartesQL.g:1637:1: ( ( rule__ModelLocation__LocationAssignment ) )
-            // InternalDescartesQL.g:1638:1: ( rule__ModelLocation__LocationAssignment )
+            // InternalDescartesQL.g:1665:1: ( ( rule__ModelLocation__LocationAssignment ) )
+            // InternalDescartesQL.g:1666:1: ( rule__ModelLocation__LocationAssignment )
             {
              before(grammarAccess.getModelLocationAccess().getLocationAssignment()); 
-            // InternalDescartesQL.g:1639:1: ( rule__ModelLocation__LocationAssignment )
-            // InternalDescartesQL.g:1639:2: rule__ModelLocation__LocationAssignment
+            // InternalDescartesQL.g:1667:1: ( rule__ModelLocation__LocationAssignment )
+            // InternalDescartesQL.g:1667:2: rule__ModelLocation__LocationAssignment
             {
             pushFollow(FOLLOW_2);
             rule__ModelLocation__LocationAssignment();
@@ -4477,11 +4558,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilterClause"
-    // InternalDescartesQL.g:1651:1: entryRuleFilterClause : ruleFilterClause EOF ;
+    // InternalDescartesQL.g:1679:1: entryRuleFilterClause : ruleFilterClause EOF ;
     public final void entryRuleFilterClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1652:1: ( ruleFilterClause EOF )
-            // InternalDescartesQL.g:1653:1: ruleFilterClause EOF
+            // InternalDescartesQL.g:1680:1: ( ruleFilterClause EOF )
+            // InternalDescartesQL.g:1681:1: ruleFilterClause EOF
             {
              before(grammarAccess.getFilterClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4507,21 +4588,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilterClause"
-    // InternalDescartesQL.g:1660:1: ruleFilterClause : ( ( rule__FilterClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1688:1: ruleFilterClause : ( ( rule__FilterClause__Group__0 ) ) ;
     public final void ruleFilterClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1664:2: ( ( ( rule__FilterClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1665:1: ( ( rule__FilterClause__Group__0 ) )
+            // InternalDescartesQL.g:1692:2: ( ( ( rule__FilterClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1693:1: ( ( rule__FilterClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1665:1: ( ( rule__FilterClause__Group__0 ) )
-            // InternalDescartesQL.g:1666:1: ( rule__FilterClause__Group__0 )
+            // InternalDescartesQL.g:1693:1: ( ( rule__FilterClause__Group__0 ) )
+            // InternalDescartesQL.g:1694:1: ( rule__FilterClause__Group__0 )
             {
              before(grammarAccess.getFilterClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1667:1: ( rule__FilterClause__Group__0 )
-            // InternalDescartesQL.g:1667:2: rule__FilterClause__Group__0
+            // InternalDescartesQL.g:1695:1: ( rule__FilterClause__Group__0 )
+            // InternalDescartesQL.g:1695:2: rule__FilterClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FilterClause__Group__0();
@@ -4554,11 +4635,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilterConditionClause"
-    // InternalDescartesQL.g:1679:1: entryRuleFilterConditionClause : ruleFilterConditionClause EOF ;
+    // InternalDescartesQL.g:1707:1: entryRuleFilterConditionClause : ruleFilterConditionClause EOF ;
     public final void entryRuleFilterConditionClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1680:1: ( ruleFilterConditionClause EOF )
-            // InternalDescartesQL.g:1681:1: ruleFilterConditionClause EOF
+            // InternalDescartesQL.g:1708:1: ( ruleFilterConditionClause EOF )
+            // InternalDescartesQL.g:1709:1: ruleFilterConditionClause EOF
             {
              before(grammarAccess.getFilterConditionClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4584,21 +4665,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilterConditionClause"
-    // InternalDescartesQL.g:1688:1: ruleFilterConditionClause : ( ( rule__FilterConditionClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1716:1: ruleFilterConditionClause : ( ( rule__FilterConditionClause__Group__0 ) ) ;
     public final void ruleFilterConditionClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1692:2: ( ( ( rule__FilterConditionClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1693:1: ( ( rule__FilterConditionClause__Group__0 ) )
+            // InternalDescartesQL.g:1720:2: ( ( ( rule__FilterConditionClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1721:1: ( ( rule__FilterConditionClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1693:1: ( ( rule__FilterConditionClause__Group__0 ) )
-            // InternalDescartesQL.g:1694:1: ( rule__FilterConditionClause__Group__0 )
+            // InternalDescartesQL.g:1721:1: ( ( rule__FilterConditionClause__Group__0 ) )
+            // InternalDescartesQL.g:1722:1: ( rule__FilterConditionClause__Group__0 )
             {
              before(grammarAccess.getFilterConditionClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1695:1: ( rule__FilterConditionClause__Group__0 )
-            // InternalDescartesQL.g:1695:2: rule__FilterConditionClause__Group__0
+            // InternalDescartesQL.g:1723:1: ( rule__FilterConditionClause__Group__0 )
+            // InternalDescartesQL.g:1723:2: rule__FilterConditionClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FilterConditionClause__Group__0();
@@ -4631,11 +4712,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilterConditionValue"
-    // InternalDescartesQL.g:1707:1: entryRuleFilterConditionValue : ruleFilterConditionValue EOF ;
+    // InternalDescartesQL.g:1735:1: entryRuleFilterConditionValue : ruleFilterConditionValue EOF ;
     public final void entryRuleFilterConditionValue() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1708:1: ( ruleFilterConditionValue EOF )
-            // InternalDescartesQL.g:1709:1: ruleFilterConditionValue EOF
+            // InternalDescartesQL.g:1736:1: ( ruleFilterConditionValue EOF )
+            // InternalDescartesQL.g:1737:1: ruleFilterConditionValue EOF
             {
              before(grammarAccess.getFilterConditionValueRule()); 
             pushFollow(FOLLOW_1);
@@ -4661,21 +4742,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilterConditionValue"
-    // InternalDescartesQL.g:1716:1: ruleFilterConditionValue : ( ( rule__FilterConditionValue__ValueAssignment ) ) ;
+    // InternalDescartesQL.g:1744:1: ruleFilterConditionValue : ( ( rule__FilterConditionValue__ValueAssignment ) ) ;
     public final void ruleFilterConditionValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1720:2: ( ( ( rule__FilterConditionValue__ValueAssignment ) ) )
-            // InternalDescartesQL.g:1721:1: ( ( rule__FilterConditionValue__ValueAssignment ) )
+            // InternalDescartesQL.g:1748:2: ( ( ( rule__FilterConditionValue__ValueAssignment ) ) )
+            // InternalDescartesQL.g:1749:1: ( ( rule__FilterConditionValue__ValueAssignment ) )
             {
-            // InternalDescartesQL.g:1721:1: ( ( rule__FilterConditionValue__ValueAssignment ) )
-            // InternalDescartesQL.g:1722:1: ( rule__FilterConditionValue__ValueAssignment )
+            // InternalDescartesQL.g:1749:1: ( ( rule__FilterConditionValue__ValueAssignment ) )
+            // InternalDescartesQL.g:1750:1: ( rule__FilterConditionValue__ValueAssignment )
             {
              before(grammarAccess.getFilterConditionValueAccess().getValueAssignment()); 
-            // InternalDescartesQL.g:1723:1: ( rule__FilterConditionValue__ValueAssignment )
-            // InternalDescartesQL.g:1723:2: rule__FilterConditionValue__ValueAssignment
+            // InternalDescartesQL.g:1751:1: ( rule__FilterConditionValue__ValueAssignment )
+            // InternalDescartesQL.g:1751:2: rule__FilterConditionValue__ValueAssignment
             {
             pushFollow(FOLLOW_2);
             rule__FilterConditionValue__ValueAssignment();
@@ -4708,11 +4789,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleObserveClause"
-    // InternalDescartesQL.g:1735:1: entryRuleObserveClause : ruleObserveClause EOF ;
+    // InternalDescartesQL.g:1763:1: entryRuleObserveClause : ruleObserveClause EOF ;
     public final void entryRuleObserveClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1736:1: ( ruleObserveClause EOF )
-            // InternalDescartesQL.g:1737:1: ruleObserveClause EOF
+            // InternalDescartesQL.g:1764:1: ( ruleObserveClause EOF )
+            // InternalDescartesQL.g:1765:1: ruleObserveClause EOF
             {
              before(grammarAccess.getObserveClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4738,21 +4819,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleObserveClause"
-    // InternalDescartesQL.g:1744:1: ruleObserveClause : ( ( rule__ObserveClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1772:1: ruleObserveClause : ( ( rule__ObserveClause__Group__0 ) ) ;
     public final void ruleObserveClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1748:2: ( ( ( rule__ObserveClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1749:1: ( ( rule__ObserveClause__Group__0 ) )
+            // InternalDescartesQL.g:1776:2: ( ( ( rule__ObserveClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1777:1: ( ( rule__ObserveClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1749:1: ( ( rule__ObserveClause__Group__0 ) )
-            // InternalDescartesQL.g:1750:1: ( rule__ObserveClause__Group__0 )
+            // InternalDescartesQL.g:1777:1: ( ( rule__ObserveClause__Group__0 ) )
+            // InternalDescartesQL.g:1778:1: ( rule__ObserveClause__Group__0 )
             {
              before(grammarAccess.getObserveClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1751:1: ( rule__ObserveClause__Group__0 )
-            // InternalDescartesQL.g:1751:2: rule__ObserveClause__Group__0
+            // InternalDescartesQL.g:1779:1: ( rule__ObserveClause__Group__0 )
+            // InternalDescartesQL.g:1779:2: rule__ObserveClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveClause__Group__0();
@@ -4785,11 +4866,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleObservationClause"
-    // InternalDescartesQL.g:1763:1: entryRuleObservationClause : ruleObservationClause EOF ;
+    // InternalDescartesQL.g:1791:1: entryRuleObservationClause : ruleObservationClause EOF ;
     public final void entryRuleObservationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1764:1: ( ruleObservationClause EOF )
-            // InternalDescartesQL.g:1765:1: ruleObservationClause EOF
+            // InternalDescartesQL.g:1792:1: ( ruleObservationClause EOF )
+            // InternalDescartesQL.g:1793:1: ruleObservationClause EOF
             {
              before(grammarAccess.getObservationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4815,21 +4896,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleObservationClause"
-    // InternalDescartesQL.g:1772:1: ruleObservationClause : ( ( rule__ObservationClause__Alternatives ) ) ;
+    // InternalDescartesQL.g:1800:1: ruleObservationClause : ( ( rule__ObservationClause__Alternatives ) ) ;
     public final void ruleObservationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1776:2: ( ( ( rule__ObservationClause__Alternatives ) ) )
-            // InternalDescartesQL.g:1777:1: ( ( rule__ObservationClause__Alternatives ) )
+            // InternalDescartesQL.g:1804:2: ( ( ( rule__ObservationClause__Alternatives ) ) )
+            // InternalDescartesQL.g:1805:1: ( ( rule__ObservationClause__Alternatives ) )
             {
-            // InternalDescartesQL.g:1777:1: ( ( rule__ObservationClause__Alternatives ) )
-            // InternalDescartesQL.g:1778:1: ( rule__ObservationClause__Alternatives )
+            // InternalDescartesQL.g:1805:1: ( ( rule__ObservationClause__Alternatives ) )
+            // InternalDescartesQL.g:1806:1: ( rule__ObservationClause__Alternatives )
             {
              before(grammarAccess.getObservationClauseAccess().getAlternatives()); 
-            // InternalDescartesQL.g:1779:1: ( rule__ObservationClause__Alternatives )
-            // InternalDescartesQL.g:1779:2: rule__ObservationClause__Alternatives
+            // InternalDescartesQL.g:1807:1: ( rule__ObservationClause__Alternatives )
+            // InternalDescartesQL.g:1807:2: rule__ObservationClause__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__ObservationClause__Alternatives();
@@ -4862,11 +4943,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleSampleClause"
-    // InternalDescartesQL.g:1791:1: entryRuleSampleClause : ruleSampleClause EOF ;
+    // InternalDescartesQL.g:1819:1: entryRuleSampleClause : ruleSampleClause EOF ;
     public final void entryRuleSampleClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1792:1: ( ruleSampleClause EOF )
-            // InternalDescartesQL.g:1793:1: ruleSampleClause EOF
+            // InternalDescartesQL.g:1820:1: ( ruleSampleClause EOF )
+            // InternalDescartesQL.g:1821:1: ruleSampleClause EOF
             {
              before(grammarAccess.getSampleClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4892,21 +4973,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleSampleClause"
-    // InternalDescartesQL.g:1800:1: ruleSampleClause : ( ( rule__SampleClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1828:1: ruleSampleClause : ( ( rule__SampleClause__Group__0 ) ) ;
     public final void ruleSampleClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1804:2: ( ( ( rule__SampleClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1805:1: ( ( rule__SampleClause__Group__0 ) )
+            // InternalDescartesQL.g:1832:2: ( ( ( rule__SampleClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1833:1: ( ( rule__SampleClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1805:1: ( ( rule__SampleClause__Group__0 ) )
-            // InternalDescartesQL.g:1806:1: ( rule__SampleClause__Group__0 )
+            // InternalDescartesQL.g:1833:1: ( ( rule__SampleClause__Group__0 ) )
+            // InternalDescartesQL.g:1834:1: ( rule__SampleClause__Group__0 )
             {
              before(grammarAccess.getSampleClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1807:1: ( rule__SampleClause__Group__0 )
-            // InternalDescartesQL.g:1807:2: rule__SampleClause__Group__0
+            // InternalDescartesQL.g:1835:1: ( rule__SampleClause__Group__0 )
+            // InternalDescartesQL.g:1835:2: rule__SampleClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SampleClause__Group__0();
@@ -4939,11 +5020,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConnectorTimeUnitClause"
-    // InternalDescartesQL.g:1819:1: entryRuleConnectorTimeUnitClause : ruleConnectorTimeUnitClause EOF ;
+    // InternalDescartesQL.g:1847:1: entryRuleConnectorTimeUnitClause : ruleConnectorTimeUnitClause EOF ;
     public final void entryRuleConnectorTimeUnitClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1820:1: ( ruleConnectorTimeUnitClause EOF )
-            // InternalDescartesQL.g:1821:1: ruleConnectorTimeUnitClause EOF
+            // InternalDescartesQL.g:1848:1: ( ruleConnectorTimeUnitClause EOF )
+            // InternalDescartesQL.g:1849:1: ruleConnectorTimeUnitClause EOF
             {
              before(grammarAccess.getConnectorTimeUnitClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -4969,21 +5050,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConnectorTimeUnitClause"
-    // InternalDescartesQL.g:1828:1: ruleConnectorTimeUnitClause : ( ( rule__ConnectorTimeUnitClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1856:1: ruleConnectorTimeUnitClause : ( ( rule__ConnectorTimeUnitClause__Group__0 ) ) ;
     public final void ruleConnectorTimeUnitClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1832:2: ( ( ( rule__ConnectorTimeUnitClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1833:1: ( ( rule__ConnectorTimeUnitClause__Group__0 ) )
+            // InternalDescartesQL.g:1860:2: ( ( ( rule__ConnectorTimeUnitClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1861:1: ( ( rule__ConnectorTimeUnitClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1833:1: ( ( rule__ConnectorTimeUnitClause__Group__0 ) )
-            // InternalDescartesQL.g:1834:1: ( rule__ConnectorTimeUnitClause__Group__0 )
+            // InternalDescartesQL.g:1861:1: ( ( rule__ConnectorTimeUnitClause__Group__0 ) )
+            // InternalDescartesQL.g:1862:1: ( rule__ConnectorTimeUnitClause__Group__0 )
             {
              before(grammarAccess.getConnectorTimeUnitClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1835:1: ( rule__ConnectorTimeUnitClause__Group__0 )
-            // InternalDescartesQL.g:1835:2: rule__ConnectorTimeUnitClause__Group__0
+            // InternalDescartesQL.g:1863:1: ( rule__ConnectorTimeUnitClause__Group__0 )
+            // InternalDescartesQL.g:1863:2: rule__ConnectorTimeUnitClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ConnectorTimeUnitClause__Group__0();
@@ -5016,11 +5097,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleConnectorInstanceReferenceClause"
-    // InternalDescartesQL.g:1847:1: entryRuleConnectorInstanceReferenceClause : ruleConnectorInstanceReferenceClause EOF ;
+    // InternalDescartesQL.g:1875:1: entryRuleConnectorInstanceReferenceClause : ruleConnectorInstanceReferenceClause EOF ;
     public final void entryRuleConnectorInstanceReferenceClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1848:1: ( ruleConnectorInstanceReferenceClause EOF )
-            // InternalDescartesQL.g:1849:1: ruleConnectorInstanceReferenceClause EOF
+            // InternalDescartesQL.g:1876:1: ( ruleConnectorInstanceReferenceClause EOF )
+            // InternalDescartesQL.g:1877:1: ruleConnectorInstanceReferenceClause EOF
             {
              before(grammarAccess.getConnectorInstanceReferenceClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5046,21 +5127,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleConnectorInstanceReferenceClause"
-    // InternalDescartesQL.g:1856:1: ruleConnectorInstanceReferenceClause : ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1884:1: ruleConnectorInstanceReferenceClause : ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) ) ;
     public final void ruleConnectorInstanceReferenceClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1860:2: ( ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1861:1: ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1888:2: ( ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1889:1: ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1861:1: ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) )
-            // InternalDescartesQL.g:1862:1: ( rule__ConnectorInstanceReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1889:1: ( ( rule__ConnectorInstanceReferenceClause__Group__0 ) )
+            // InternalDescartesQL.g:1890:1: ( rule__ConnectorInstanceReferenceClause__Group__0 )
             {
              before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1863:1: ( rule__ConnectorInstanceReferenceClause__Group__0 )
-            // InternalDescartesQL.g:1863:2: rule__ConnectorInstanceReferenceClause__Group__0
+            // InternalDescartesQL.g:1891:1: ( rule__ConnectorInstanceReferenceClause__Group__0 )
+            // InternalDescartesQL.g:1891:2: rule__ConnectorInstanceReferenceClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ConnectorInstanceReferenceClause__Group__0();
@@ -5093,11 +5174,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleObserveRelativeClause"
-    // InternalDescartesQL.g:1875:1: entryRuleObserveRelativeClause : ruleObserveRelativeClause EOF ;
+    // InternalDescartesQL.g:1903:1: entryRuleObserveRelativeClause : ruleObserveRelativeClause EOF ;
     public final void entryRuleObserveRelativeClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1876:1: ( ruleObserveRelativeClause EOF )
-            // InternalDescartesQL.g:1877:1: ruleObserveRelativeClause EOF
+            // InternalDescartesQL.g:1904:1: ( ruleObserveRelativeClause EOF )
+            // InternalDescartesQL.g:1905:1: ruleObserveRelativeClause EOF
             {
              before(grammarAccess.getObserveRelativeClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5123,21 +5204,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleObserveRelativeClause"
-    // InternalDescartesQL.g:1884:1: ruleObserveRelativeClause : ( ( rule__ObserveRelativeClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1912:1: ruleObserveRelativeClause : ( ( rule__ObserveRelativeClause__Group__0 ) ) ;
     public final void ruleObserveRelativeClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1888:2: ( ( ( rule__ObserveRelativeClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1889:1: ( ( rule__ObserveRelativeClause__Group__0 ) )
+            // InternalDescartesQL.g:1916:2: ( ( ( rule__ObserveRelativeClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1917:1: ( ( rule__ObserveRelativeClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1889:1: ( ( rule__ObserveRelativeClause__Group__0 ) )
-            // InternalDescartesQL.g:1890:1: ( rule__ObserveRelativeClause__Group__0 )
+            // InternalDescartesQL.g:1917:1: ( ( rule__ObserveRelativeClause__Group__0 ) )
+            // InternalDescartesQL.g:1918:1: ( rule__ObserveRelativeClause__Group__0 )
             {
              before(grammarAccess.getObserveRelativeClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1891:1: ( rule__ObserveRelativeClause__Group__0 )
-            // InternalDescartesQL.g:1891:2: rule__ObserveRelativeClause__Group__0
+            // InternalDescartesQL.g:1919:1: ( rule__ObserveRelativeClause__Group__0 )
+            // InternalDescartesQL.g:1919:2: rule__ObserveRelativeClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveRelativeClause__Group__0();
@@ -5170,11 +5251,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleObserveBetweenClause"
-    // InternalDescartesQL.g:1903:1: entryRuleObserveBetweenClause : ruleObserveBetweenClause EOF ;
+    // InternalDescartesQL.g:1931:1: entryRuleObserveBetweenClause : ruleObserveBetweenClause EOF ;
     public final void entryRuleObserveBetweenClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1904:1: ( ruleObserveBetweenClause EOF )
-            // InternalDescartesQL.g:1905:1: ruleObserveBetweenClause EOF
+            // InternalDescartesQL.g:1932:1: ( ruleObserveBetweenClause EOF )
+            // InternalDescartesQL.g:1933:1: ruleObserveBetweenClause EOF
             {
              before(grammarAccess.getObserveBetweenClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5200,21 +5281,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleObserveBetweenClause"
-    // InternalDescartesQL.g:1912:1: ruleObserveBetweenClause : ( ( rule__ObserveBetweenClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1940:1: ruleObserveBetweenClause : ( ( rule__ObserveBetweenClause__Group__0 ) ) ;
     public final void ruleObserveBetweenClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1916:2: ( ( ( rule__ObserveBetweenClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1917:1: ( ( rule__ObserveBetweenClause__Group__0 ) )
+            // InternalDescartesQL.g:1944:2: ( ( ( rule__ObserveBetweenClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1945:1: ( ( rule__ObserveBetweenClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1917:1: ( ( rule__ObserveBetweenClause__Group__0 ) )
-            // InternalDescartesQL.g:1918:1: ( rule__ObserveBetweenClause__Group__0 )
+            // InternalDescartesQL.g:1945:1: ( ( rule__ObserveBetweenClause__Group__0 ) )
+            // InternalDescartesQL.g:1946:1: ( rule__ObserveBetweenClause__Group__0 )
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1919:1: ( rule__ObserveBetweenClause__Group__0 )
-            // InternalDescartesQL.g:1919:2: rule__ObserveBetweenClause__Group__0
+            // InternalDescartesQL.g:1947:1: ( rule__ObserveBetweenClause__Group__0 )
+            // InternalDescartesQL.g:1947:2: rule__ObserveBetweenClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveBetweenClause__Group__0();
@@ -5247,11 +5328,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleRelativeTimeWithSignClause"
-    // InternalDescartesQL.g:1931:1: entryRuleRelativeTimeWithSignClause : ruleRelativeTimeWithSignClause EOF ;
+    // InternalDescartesQL.g:1959:1: entryRuleRelativeTimeWithSignClause : ruleRelativeTimeWithSignClause EOF ;
     public final void entryRuleRelativeTimeWithSignClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1932:1: ( ruleRelativeTimeWithSignClause EOF )
-            // InternalDescartesQL.g:1933:1: ruleRelativeTimeWithSignClause EOF
+            // InternalDescartesQL.g:1960:1: ( ruleRelativeTimeWithSignClause EOF )
+            // InternalDescartesQL.g:1961:1: ruleRelativeTimeWithSignClause EOF
             {
              before(grammarAccess.getRelativeTimeWithSignClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5277,21 +5358,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleRelativeTimeWithSignClause"
-    // InternalDescartesQL.g:1940:1: ruleRelativeTimeWithSignClause : ( ( rule__RelativeTimeWithSignClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:1968:1: ruleRelativeTimeWithSignClause : ( ( rule__RelativeTimeWithSignClause__Group__0 ) ) ;
     public final void ruleRelativeTimeWithSignClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1944:2: ( ( ( rule__RelativeTimeWithSignClause__Group__0 ) ) )
-            // InternalDescartesQL.g:1945:1: ( ( rule__RelativeTimeWithSignClause__Group__0 ) )
+            // InternalDescartesQL.g:1972:2: ( ( ( rule__RelativeTimeWithSignClause__Group__0 ) ) )
+            // InternalDescartesQL.g:1973:1: ( ( rule__RelativeTimeWithSignClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:1945:1: ( ( rule__RelativeTimeWithSignClause__Group__0 ) )
-            // InternalDescartesQL.g:1946:1: ( rule__RelativeTimeWithSignClause__Group__0 )
+            // InternalDescartesQL.g:1973:1: ( ( rule__RelativeTimeWithSignClause__Group__0 ) )
+            // InternalDescartesQL.g:1974:1: ( rule__RelativeTimeWithSignClause__Group__0 )
             {
              before(grammarAccess.getRelativeTimeWithSignClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:1947:1: ( rule__RelativeTimeWithSignClause__Group__0 )
-            // InternalDescartesQL.g:1947:2: rule__RelativeTimeWithSignClause__Group__0
+            // InternalDescartesQL.g:1975:1: ( rule__RelativeTimeWithSignClause__Group__0 )
+            // InternalDescartesQL.g:1975:2: rule__RelativeTimeWithSignClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__RelativeTimeWithSignClause__Group__0();
@@ -5324,11 +5405,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleAbsoluteTimeClause"
-    // InternalDescartesQL.g:1963:1: entryRuleAbsoluteTimeClause : ruleAbsoluteTimeClause EOF ;
+    // InternalDescartesQL.g:1991:1: entryRuleAbsoluteTimeClause : ruleAbsoluteTimeClause EOF ;
     public final void entryRuleAbsoluteTimeClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1964:1: ( ruleAbsoluteTimeClause EOF )
-            // InternalDescartesQL.g:1965:1: ruleAbsoluteTimeClause EOF
+            // InternalDescartesQL.g:1992:1: ( ruleAbsoluteTimeClause EOF )
+            // InternalDescartesQL.g:1993:1: ruleAbsoluteTimeClause EOF
             {
              before(grammarAccess.getAbsoluteTimeClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5354,21 +5435,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleAbsoluteTimeClause"
-    // InternalDescartesQL.g:1972:1: ruleAbsoluteTimeClause : ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) ) ;
+    // InternalDescartesQL.g:2000:1: ruleAbsoluteTimeClause : ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) ) ;
     public final void ruleAbsoluteTimeClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:1976:2: ( ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) ) )
-            // InternalDescartesQL.g:1977:1: ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) )
+            // InternalDescartesQL.g:2004:2: ( ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) ) )
+            // InternalDescartesQL.g:2005:1: ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) )
             {
-            // InternalDescartesQL.g:1977:1: ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) )
-            // InternalDescartesQL.g:1978:1: ( rule__AbsoluteTimeClause__TimeSpecAssignment )
+            // InternalDescartesQL.g:2005:1: ( ( rule__AbsoluteTimeClause__TimeSpecAssignment ) )
+            // InternalDescartesQL.g:2006:1: ( rule__AbsoluteTimeClause__TimeSpecAssignment )
             {
              before(grammarAccess.getAbsoluteTimeClauseAccess().getTimeSpecAssignment()); 
-            // InternalDescartesQL.g:1979:1: ( rule__AbsoluteTimeClause__TimeSpecAssignment )
-            // InternalDescartesQL.g:1979:2: rule__AbsoluteTimeClause__TimeSpecAssignment
+            // InternalDescartesQL.g:2007:1: ( rule__AbsoluteTimeClause__TimeSpecAssignment )
+            // InternalDescartesQL.g:2007:2: rule__AbsoluteTimeClause__TimeSpecAssignment
             {
             pushFollow(FOLLOW_2);
             rule__AbsoluteTimeClause__TimeSpecAssignment();
@@ -5401,11 +5482,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleRelativeTimeClause"
-    // InternalDescartesQL.g:1991:1: entryRuleRelativeTimeClause : ruleRelativeTimeClause EOF ;
+    // InternalDescartesQL.g:2019:1: entryRuleRelativeTimeClause : ruleRelativeTimeClause EOF ;
     public final void entryRuleRelativeTimeClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:1992:1: ( ruleRelativeTimeClause EOF )
-            // InternalDescartesQL.g:1993:1: ruleRelativeTimeClause EOF
+            // InternalDescartesQL.g:2020:1: ( ruleRelativeTimeClause EOF )
+            // InternalDescartesQL.g:2021:1: ruleRelativeTimeClause EOF
             {
              before(grammarAccess.getRelativeTimeClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5431,21 +5512,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleRelativeTimeClause"
-    // InternalDescartesQL.g:2000:1: ruleRelativeTimeClause : ( ( rule__RelativeTimeClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2028:1: ruleRelativeTimeClause : ( ( rule__RelativeTimeClause__Group__0 ) ) ;
     public final void ruleRelativeTimeClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2004:2: ( ( ( rule__RelativeTimeClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2005:1: ( ( rule__RelativeTimeClause__Group__0 ) )
+            // InternalDescartesQL.g:2032:2: ( ( ( rule__RelativeTimeClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2033:1: ( ( rule__RelativeTimeClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2005:1: ( ( rule__RelativeTimeClause__Group__0 ) )
-            // InternalDescartesQL.g:2006:1: ( rule__RelativeTimeClause__Group__0 )
+            // InternalDescartesQL.g:2033:1: ( ( rule__RelativeTimeClause__Group__0 ) )
+            // InternalDescartesQL.g:2034:1: ( rule__RelativeTimeClause__Group__0 )
             {
              before(grammarAccess.getRelativeTimeClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2007:1: ( rule__RelativeTimeClause__Group__0 )
-            // InternalDescartesQL.g:2007:2: rule__RelativeTimeClause__Group__0
+            // InternalDescartesQL.g:2035:1: ( rule__RelativeTimeClause__Group__0 )
+            // InternalDescartesQL.g:2035:2: rule__RelativeTimeClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__RelativeTimeClause__Group__0();
@@ -5478,11 +5559,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleRelativeTimeDurationClause"
-    // InternalDescartesQL.g:2019:1: entryRuleRelativeTimeDurationClause : ruleRelativeTimeDurationClause EOF ;
+    // InternalDescartesQL.g:2047:1: entryRuleRelativeTimeDurationClause : ruleRelativeTimeDurationClause EOF ;
     public final void entryRuleRelativeTimeDurationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2020:1: ( ruleRelativeTimeDurationClause EOF )
-            // InternalDescartesQL.g:2021:1: ruleRelativeTimeDurationClause EOF
+            // InternalDescartesQL.g:2048:1: ( ruleRelativeTimeDurationClause EOF )
+            // InternalDescartesQL.g:2049:1: ruleRelativeTimeDurationClause EOF
             {
              before(grammarAccess.getRelativeTimeDurationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5508,21 +5589,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleRelativeTimeDurationClause"
-    // InternalDescartesQL.g:2028:1: ruleRelativeTimeDurationClause : ( ( rule__RelativeTimeDurationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2056:1: ruleRelativeTimeDurationClause : ( ( rule__RelativeTimeDurationClause__Group__0 ) ) ;
     public final void ruleRelativeTimeDurationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2032:2: ( ( ( rule__RelativeTimeDurationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2033:1: ( ( rule__RelativeTimeDurationClause__Group__0 ) )
+            // InternalDescartesQL.g:2060:2: ( ( ( rule__RelativeTimeDurationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2061:1: ( ( rule__RelativeTimeDurationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2033:1: ( ( rule__RelativeTimeDurationClause__Group__0 ) )
-            // InternalDescartesQL.g:2034:1: ( rule__RelativeTimeDurationClause__Group__0 )
+            // InternalDescartesQL.g:2061:1: ( ( rule__RelativeTimeDurationClause__Group__0 ) )
+            // InternalDescartesQL.g:2062:1: ( rule__RelativeTimeDurationClause__Group__0 )
             {
              before(grammarAccess.getRelativeTimeDurationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2035:1: ( rule__RelativeTimeDurationClause__Group__0 )
-            // InternalDescartesQL.g:2035:2: rule__RelativeTimeDurationClause__Group__0
+            // InternalDescartesQL.g:2063:1: ( rule__RelativeTimeDurationClause__Group__0 )
+            // InternalDescartesQL.g:2063:2: rule__RelativeTimeDurationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__RelativeTimeDurationClause__Group__0();
@@ -5555,11 +5636,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWhatIfQuery"
-    // InternalDescartesQL.g:2047:1: entryRuleWhatIfQuery : ruleWhatIfQuery EOF ;
+    // InternalDescartesQL.g:2075:1: entryRuleWhatIfQuery : ruleWhatIfQuery EOF ;
     public final void entryRuleWhatIfQuery() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2048:1: ( ruleWhatIfQuery EOF )
-            // InternalDescartesQL.g:2049:1: ruleWhatIfQuery EOF
+            // InternalDescartesQL.g:2076:1: ( ruleWhatIfQuery EOF )
+            // InternalDescartesQL.g:2077:1: ruleWhatIfQuery EOF
             {
              before(grammarAccess.getWhatIfQueryRule()); 
             pushFollow(FOLLOW_1);
@@ -5585,21 +5666,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWhatIfQuery"
-    // InternalDescartesQL.g:2056:1: ruleWhatIfQuery : ( ( rule__WhatIfQuery__Group__0 ) ) ;
+    // InternalDescartesQL.g:2084:1: ruleWhatIfQuery : ( ( rule__WhatIfQuery__Group__0 ) ) ;
     public final void ruleWhatIfQuery() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2060:2: ( ( ( rule__WhatIfQuery__Group__0 ) ) )
-            // InternalDescartesQL.g:2061:1: ( ( rule__WhatIfQuery__Group__0 ) )
+            // InternalDescartesQL.g:2088:2: ( ( ( rule__WhatIfQuery__Group__0 ) ) )
+            // InternalDescartesQL.g:2089:1: ( ( rule__WhatIfQuery__Group__0 ) )
             {
-            // InternalDescartesQL.g:2061:1: ( ( rule__WhatIfQuery__Group__0 ) )
-            // InternalDescartesQL.g:2062:1: ( rule__WhatIfQuery__Group__0 )
+            // InternalDescartesQL.g:2089:1: ( ( rule__WhatIfQuery__Group__0 ) )
+            // InternalDescartesQL.g:2090:1: ( rule__WhatIfQuery__Group__0 )
             {
              before(grammarAccess.getWhatIfQueryAccess().getGroup()); 
-            // InternalDescartesQL.g:2063:1: ( rule__WhatIfQuery__Group__0 )
-            // InternalDescartesQL.g:2063:2: rule__WhatIfQuery__Group__0
+            // InternalDescartesQL.g:2091:1: ( rule__WhatIfQuery__Group__0 )
+            // InternalDescartesQL.g:2091:2: rule__WhatIfQuery__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfQuery__Group__0();
@@ -5632,11 +5713,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleDeltaClause"
-    // InternalDescartesQL.g:2075:1: entryRuleDeltaClause : ruleDeltaClause EOF ;
+    // InternalDescartesQL.g:2103:1: entryRuleDeltaClause : ruleDeltaClause EOF ;
     public final void entryRuleDeltaClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2076:1: ( ruleDeltaClause EOF )
-            // InternalDescartesQL.g:2077:1: ruleDeltaClause EOF
+            // InternalDescartesQL.g:2104:1: ( ruleDeltaClause EOF )
+            // InternalDescartesQL.g:2105:1: ruleDeltaClause EOF
             {
              before(grammarAccess.getDeltaClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5662,17 +5743,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleDeltaClause"
-    // InternalDescartesQL.g:2084:1: ruleDeltaClause : ( 'DELTA' ) ;
+    // InternalDescartesQL.g:2112:1: ruleDeltaClause : ( 'DELTA' ) ;
     public final void ruleDeltaClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2088:2: ( ( 'DELTA' ) )
-            // InternalDescartesQL.g:2089:1: ( 'DELTA' )
+            // InternalDescartesQL.g:2116:2: ( ( 'DELTA' ) )
+            // InternalDescartesQL.g:2117:1: ( 'DELTA' )
             {
-            // InternalDescartesQL.g:2089:1: ( 'DELTA' )
-            // InternalDescartesQL.g:2090:1: 'DELTA'
+            // InternalDescartesQL.g:2117:1: ( 'DELTA' )
+            // InternalDescartesQL.g:2118:1: 'DELTA'
             {
              before(grammarAccess.getDeltaClauseAccess().getDELTAKeyword()); 
             match(input,12,FOLLOW_2); 
@@ -5699,11 +5780,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWhatIfVariation"
-    // InternalDescartesQL.g:2105:1: entryRuleWhatIfVariation : ruleWhatIfVariation EOF ;
+    // InternalDescartesQL.g:2133:1: entryRuleWhatIfVariation : ruleWhatIfVariation EOF ;
     public final void entryRuleWhatIfVariation() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2106:1: ( ruleWhatIfVariation EOF )
-            // InternalDescartesQL.g:2107:1: ruleWhatIfVariation EOF
+            // InternalDescartesQL.g:2134:1: ( ruleWhatIfVariation EOF )
+            // InternalDescartesQL.g:2135:1: ruleWhatIfVariation EOF
             {
              before(grammarAccess.getWhatIfVariationRule()); 
             pushFollow(FOLLOW_1);
@@ -5729,21 +5810,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWhatIfVariation"
-    // InternalDescartesQL.g:2114:1: ruleWhatIfVariation : ( ( rule__WhatIfVariation__Group__0 ) ) ;
+    // InternalDescartesQL.g:2142:1: ruleWhatIfVariation : ( ( rule__WhatIfVariation__Group__0 ) ) ;
     public final void ruleWhatIfVariation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2118:2: ( ( ( rule__WhatIfVariation__Group__0 ) ) )
-            // InternalDescartesQL.g:2119:1: ( ( rule__WhatIfVariation__Group__0 ) )
+            // InternalDescartesQL.g:2146:2: ( ( ( rule__WhatIfVariation__Group__0 ) ) )
+            // InternalDescartesQL.g:2147:1: ( ( rule__WhatIfVariation__Group__0 ) )
             {
-            // InternalDescartesQL.g:2119:1: ( ( rule__WhatIfVariation__Group__0 ) )
-            // InternalDescartesQL.g:2120:1: ( rule__WhatIfVariation__Group__0 )
+            // InternalDescartesQL.g:2147:1: ( ( rule__WhatIfVariation__Group__0 ) )
+            // InternalDescartesQL.g:2148:1: ( rule__WhatIfVariation__Group__0 )
             {
              before(grammarAccess.getWhatIfVariationAccess().getGroup()); 
-            // InternalDescartesQL.g:2121:1: ( rule__WhatIfVariation__Group__0 )
-            // InternalDescartesQL.g:2121:2: rule__WhatIfVariation__Group__0
+            // InternalDescartesQL.g:2149:1: ( rule__WhatIfVariation__Group__0 )
+            // InternalDescartesQL.g:2149:2: rule__WhatIfVariation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfVariation__Group__0();
@@ -5776,11 +5857,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilteringClause"
-    // InternalDescartesQL.g:2133:1: entryRuleFilteringClause : ruleFilteringClause EOF ;
+    // InternalDescartesQL.g:2161:1: entryRuleFilteringClause : ruleFilteringClause EOF ;
     public final void entryRuleFilteringClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2134:1: ( ruleFilteringClause EOF )
-            // InternalDescartesQL.g:2135:1: ruleFilteringClause EOF
+            // InternalDescartesQL.g:2162:1: ( ruleFilteringClause EOF )
+            // InternalDescartesQL.g:2163:1: ruleFilteringClause EOF
             {
              before(grammarAccess.getFilteringClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -5806,21 +5887,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilteringClause"
-    // InternalDescartesQL.g:2142:1: ruleFilteringClause : ( ( rule__FilteringClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2170:1: ruleFilteringClause : ( ( rule__FilteringClause__Group__0 ) ) ;
     public final void ruleFilteringClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2146:2: ( ( ( rule__FilteringClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2147:1: ( ( rule__FilteringClause__Group__0 ) )
+            // InternalDescartesQL.g:2174:2: ( ( ( rule__FilteringClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2175:1: ( ( rule__FilteringClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2147:1: ( ( rule__FilteringClause__Group__0 ) )
-            // InternalDescartesQL.g:2148:1: ( rule__FilteringClause__Group__0 )
+            // InternalDescartesQL.g:2175:1: ( ( rule__FilteringClause__Group__0 ) )
+            // InternalDescartesQL.g:2176:1: ( rule__FilteringClause__Group__0 )
             {
              before(grammarAccess.getFilteringClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2149:1: ( rule__FilteringClause__Group__0 )
-            // InternalDescartesQL.g:2149:2: rule__FilteringClause__Group__0
+            // InternalDescartesQL.g:2177:1: ( rule__FilteringClause__Group__0 )
+            // InternalDescartesQL.g:2177:2: rule__FilteringClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FilteringClause__Group__0();
@@ -5853,11 +5934,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilteringStrategy"
-    // InternalDescartesQL.g:2161:1: entryRuleFilteringStrategy : ruleFilteringStrategy EOF ;
+    // InternalDescartesQL.g:2189:1: entryRuleFilteringStrategy : ruleFilteringStrategy EOF ;
     public final void entryRuleFilteringStrategy() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2162:1: ( ruleFilteringStrategy EOF )
-            // InternalDescartesQL.g:2163:1: ruleFilteringStrategy EOF
+            // InternalDescartesQL.g:2190:1: ( ruleFilteringStrategy EOF )
+            // InternalDescartesQL.g:2191:1: ruleFilteringStrategy EOF
             {
              before(grammarAccess.getFilteringStrategyRule()); 
             pushFollow(FOLLOW_1);
@@ -5883,21 +5964,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilteringStrategy"
-    // InternalDescartesQL.g:2170:1: ruleFilteringStrategy : ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) ) ;
+    // InternalDescartesQL.g:2198:1: ruleFilteringStrategy : ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) ) ;
     public final void ruleFilteringStrategy() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2174:2: ( ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) ) )
-            // InternalDescartesQL.g:2175:1: ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) )
+            // InternalDescartesQL.g:2202:2: ( ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) ) )
+            // InternalDescartesQL.g:2203:1: ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) )
             {
-            // InternalDescartesQL.g:2175:1: ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) )
-            // InternalDescartesQL.g:2176:1: ( rule__FilteringStrategy__FilteringStrategyAssignment )
+            // InternalDescartesQL.g:2203:1: ( ( rule__FilteringStrategy__FilteringStrategyAssignment ) )
+            // InternalDescartesQL.g:2204:1: ( rule__FilteringStrategy__FilteringStrategyAssignment )
             {
              before(grammarAccess.getFilteringStrategyAccess().getFilteringStrategyAssignment()); 
-            // InternalDescartesQL.g:2177:1: ( rule__FilteringStrategy__FilteringStrategyAssignment )
-            // InternalDescartesQL.g:2177:2: rule__FilteringStrategy__FilteringStrategyAssignment
+            // InternalDescartesQL.g:2205:1: ( rule__FilteringStrategy__FilteringStrategyAssignment )
+            // InternalDescartesQL.g:2205:2: rule__FilteringStrategy__FilteringStrategyAssignment
             {
             pushFollow(FOLLOW_2);
             rule__FilteringStrategy__FilteringStrategyAssignment();
@@ -5930,11 +6011,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleFilteringRule"
-    // InternalDescartesQL.g:2189:1: entryRuleFilteringRule : ruleFilteringRule EOF ;
+    // InternalDescartesQL.g:2217:1: entryRuleFilteringRule : ruleFilteringRule EOF ;
     public final void entryRuleFilteringRule() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2190:1: ( ruleFilteringRule EOF )
-            // InternalDescartesQL.g:2191:1: ruleFilteringRule EOF
+            // InternalDescartesQL.g:2218:1: ( ruleFilteringRule EOF )
+            // InternalDescartesQL.g:2219:1: ruleFilteringRule EOF
             {
              before(grammarAccess.getFilteringRuleRule()); 
             pushFollow(FOLLOW_1);
@@ -5960,21 +6041,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilteringRule"
-    // InternalDescartesQL.g:2198:1: ruleFilteringRule : ( ( rule__FilteringRule__Group__0 ) ) ;
+    // InternalDescartesQL.g:2226:1: ruleFilteringRule : ( ( rule__FilteringRule__Group__0 ) ) ;
     public final void ruleFilteringRule() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2202:2: ( ( ( rule__FilteringRule__Group__0 ) ) )
-            // InternalDescartesQL.g:2203:1: ( ( rule__FilteringRule__Group__0 ) )
+            // InternalDescartesQL.g:2230:2: ( ( ( rule__FilteringRule__Group__0 ) ) )
+            // InternalDescartesQL.g:2231:1: ( ( rule__FilteringRule__Group__0 ) )
             {
-            // InternalDescartesQL.g:2203:1: ( ( rule__FilteringRule__Group__0 ) )
-            // InternalDescartesQL.g:2204:1: ( rule__FilteringRule__Group__0 )
+            // InternalDescartesQL.g:2231:1: ( ( rule__FilteringRule__Group__0 ) )
+            // InternalDescartesQL.g:2232:1: ( rule__FilteringRule__Group__0 )
             {
              before(grammarAccess.getFilteringRuleAccess().getGroup()); 
-            // InternalDescartesQL.g:2205:1: ( rule__FilteringRule__Group__0 )
-            // InternalDescartesQL.g:2205:2: rule__FilteringRule__Group__0
+            // InternalDescartesQL.g:2233:1: ( rule__FilteringRule__Group__0 )
+            // InternalDescartesQL.g:2233:2: rule__FilteringRule__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FilteringRule__Group__0();
@@ -6007,11 +6088,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWhatIfVariationClause"
-    // InternalDescartesQL.g:2217:1: entryRuleWhatIfVariationClause : ruleWhatIfVariationClause EOF ;
+    // InternalDescartesQL.g:2245:1: entryRuleWhatIfVariationClause : ruleWhatIfVariationClause EOF ;
     public final void entryRuleWhatIfVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2218:1: ( ruleWhatIfVariationClause EOF )
-            // InternalDescartesQL.g:2219:1: ruleWhatIfVariationClause EOF
+            // InternalDescartesQL.g:2246:1: ( ruleWhatIfVariationClause EOF )
+            // InternalDescartesQL.g:2247:1: ruleWhatIfVariationClause EOF
             {
              before(grammarAccess.getWhatIfVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -6037,21 +6118,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWhatIfVariationClause"
-    // InternalDescartesQL.g:2226:1: ruleWhatIfVariationClause : ( ( rule__WhatIfVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2254:1: ruleWhatIfVariationClause : ( ( rule__WhatIfVariationClause__Group__0 ) ) ;
     public final void ruleWhatIfVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2230:2: ( ( ( rule__WhatIfVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2231:1: ( ( rule__WhatIfVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:2258:2: ( ( ( rule__WhatIfVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2259:1: ( ( rule__WhatIfVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2231:1: ( ( rule__WhatIfVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:2232:1: ( rule__WhatIfVariationClause__Group__0 )
+            // InternalDescartesQL.g:2259:1: ( ( rule__WhatIfVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:2260:1: ( rule__WhatIfVariationClause__Group__0 )
             {
              before(grammarAccess.getWhatIfVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2233:1: ( rule__WhatIfVariationClause__Group__0 )
-            // InternalDescartesQL.g:2233:2: rule__WhatIfVariationClause__Group__0
+            // InternalDescartesQL.g:2261:1: ( rule__WhatIfVariationClause__Group__0 )
+            // InternalDescartesQL.g:2261:2: rule__WhatIfVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfVariationClause__Group__0();
@@ -6084,11 +6165,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleWhatIfValueVariationClause"
-    // InternalDescartesQL.g:2245:1: entryRuleWhatIfValueVariationClause : ruleWhatIfValueVariationClause EOF ;
+    // InternalDescartesQL.g:2273:1: entryRuleWhatIfValueVariationClause : ruleWhatIfValueVariationClause EOF ;
     public final void entryRuleWhatIfValueVariationClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2246:1: ( ruleWhatIfValueVariationClause EOF )
-            // InternalDescartesQL.g:2247:1: ruleWhatIfValueVariationClause EOF
+            // InternalDescartesQL.g:2274:1: ( ruleWhatIfValueVariationClause EOF )
+            // InternalDescartesQL.g:2275:1: ruleWhatIfValueVariationClause EOF
             {
              before(grammarAccess.getWhatIfValueVariationClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -6114,21 +6195,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleWhatIfValueVariationClause"
-    // InternalDescartesQL.g:2254:1: ruleWhatIfValueVariationClause : ( ( rule__WhatIfValueVariationClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2282:1: ruleWhatIfValueVariationClause : ( ( rule__WhatIfValueVariationClause__Group__0 ) ) ;
     public final void ruleWhatIfValueVariationClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2258:2: ( ( ( rule__WhatIfValueVariationClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2259:1: ( ( rule__WhatIfValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:2286:2: ( ( ( rule__WhatIfValueVariationClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2287:1: ( ( rule__WhatIfValueVariationClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2259:1: ( ( rule__WhatIfValueVariationClause__Group__0 ) )
-            // InternalDescartesQL.g:2260:1: ( rule__WhatIfValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:2287:1: ( ( rule__WhatIfValueVariationClause__Group__0 ) )
+            // InternalDescartesQL.g:2288:1: ( rule__WhatIfValueVariationClause__Group__0 )
             {
              before(grammarAccess.getWhatIfValueVariationClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2261:1: ( rule__WhatIfValueVariationClause__Group__0 )
-            // InternalDescartesQL.g:2261:2: rule__WhatIfValueVariationClause__Group__0
+            // InternalDescartesQL.g:2289:1: ( rule__WhatIfValueVariationClause__Group__0 )
+            // InternalDescartesQL.g:2289:2: rule__WhatIfValueVariationClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfValueVariationClause__Group__0();
@@ -6161,11 +6242,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleVariationInstruction"
-    // InternalDescartesQL.g:2275:1: entryRuleVariationInstruction : ruleVariationInstruction EOF ;
+    // InternalDescartesQL.g:2303:1: entryRuleVariationInstruction : ruleVariationInstruction EOF ;
     public final void entryRuleVariationInstruction() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2276:1: ( ruleVariationInstruction EOF )
-            // InternalDescartesQL.g:2277:1: ruleVariationInstruction EOF
+            // InternalDescartesQL.g:2304:1: ( ruleVariationInstruction EOF )
+            // InternalDescartesQL.g:2305:1: ruleVariationInstruction EOF
             {
              before(grammarAccess.getVariationInstructionRule()); 
             pushFollow(FOLLOW_1);
@@ -6191,21 +6272,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleVariationInstruction"
-    // InternalDescartesQL.g:2284:1: ruleVariationInstruction : ( ( rule__VariationInstruction__Group__0 ) ) ;
+    // InternalDescartesQL.g:2312:1: ruleVariationInstruction : ( ( rule__VariationInstruction__Group__0 ) ) ;
     public final void ruleVariationInstruction() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2288:2: ( ( ( rule__VariationInstruction__Group__0 ) ) )
-            // InternalDescartesQL.g:2289:1: ( ( rule__VariationInstruction__Group__0 ) )
+            // InternalDescartesQL.g:2316:2: ( ( ( rule__VariationInstruction__Group__0 ) ) )
+            // InternalDescartesQL.g:2317:1: ( ( rule__VariationInstruction__Group__0 ) )
             {
-            // InternalDescartesQL.g:2289:1: ( ( rule__VariationInstruction__Group__0 ) )
-            // InternalDescartesQL.g:2290:1: ( rule__VariationInstruction__Group__0 )
+            // InternalDescartesQL.g:2317:1: ( ( rule__VariationInstruction__Group__0 ) )
+            // InternalDescartesQL.g:2318:1: ( rule__VariationInstruction__Group__0 )
             {
              before(grammarAccess.getVariationInstructionAccess().getGroup()); 
-            // InternalDescartesQL.g:2291:1: ( rule__VariationInstruction__Group__0 )
-            // InternalDescartesQL.g:2291:2: rule__VariationInstruction__Group__0
+            // InternalDescartesQL.g:2319:1: ( rule__VariationInstruction__Group__0 )
+            // InternalDescartesQL.g:2319:2: rule__VariationInstruction__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__VariationInstruction__Group__0();
@@ -6237,12 +6318,89 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "ruleVariationInstruction"
 
 
+    // $ANTLR start "entryRuleMultipleArithmeticClause"
+    // InternalDescartesQL.g:2331:1: entryRuleMultipleArithmeticClause : ruleMultipleArithmeticClause EOF ;
+    public final void entryRuleMultipleArithmeticClause() throws RecognitionException {
+        try {
+            // InternalDescartesQL.g:2332:1: ( ruleMultipleArithmeticClause EOF )
+            // InternalDescartesQL.g:2333:1: ruleMultipleArithmeticClause EOF
+            {
+             before(grammarAccess.getMultipleArithmeticClauseRule()); 
+            pushFollow(FOLLOW_1);
+            ruleMultipleArithmeticClause();
+
+            state._fsp--;
+
+             after(grammarAccess.getMultipleArithmeticClauseRule()); 
+            match(input,EOF,FOLLOW_2); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMultipleArithmeticClause"
+
+
+    // $ANTLR start "ruleMultipleArithmeticClause"
+    // InternalDescartesQL.g:2340:1: ruleMultipleArithmeticClause : ( ( rule__MultipleArithmeticClause__Group__0 ) ) ;
+    public final void ruleMultipleArithmeticClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:2344:2: ( ( ( rule__MultipleArithmeticClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2345:1: ( ( rule__MultipleArithmeticClause__Group__0 ) )
+            {
+            // InternalDescartesQL.g:2345:1: ( ( rule__MultipleArithmeticClause__Group__0 ) )
+            // InternalDescartesQL.g:2346:1: ( rule__MultipleArithmeticClause__Group__0 )
+            {
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getGroup()); 
+            // InternalDescartesQL.g:2347:1: ( rule__MultipleArithmeticClause__Group__0 )
+            // InternalDescartesQL.g:2347:2: rule__MultipleArithmeticClause__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__MultipleArithmeticClause__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMultipleArithmeticClause"
+
+
     // $ANTLR start "entryRuleArithmeticClause"
-    // InternalDescartesQL.g:2305:1: entryRuleArithmeticClause : ruleArithmeticClause EOF ;
+    // InternalDescartesQL.g:2359:1: entryRuleArithmeticClause : ruleArithmeticClause EOF ;
     public final void entryRuleArithmeticClause() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2306:1: ( ruleArithmeticClause EOF )
-            // InternalDescartesQL.g:2307:1: ruleArithmeticClause EOF
+            // InternalDescartesQL.g:2360:1: ( ruleArithmeticClause EOF )
+            // InternalDescartesQL.g:2361:1: ruleArithmeticClause EOF
             {
              before(grammarAccess.getArithmeticClauseRule()); 
             pushFollow(FOLLOW_1);
@@ -6268,21 +6426,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleArithmeticClause"
-    // InternalDescartesQL.g:2314:1: ruleArithmeticClause : ( ( rule__ArithmeticClause__Group__0 ) ) ;
+    // InternalDescartesQL.g:2368:1: ruleArithmeticClause : ( ( rule__ArithmeticClause__Group__0 ) ) ;
     public final void ruleArithmeticClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2318:2: ( ( ( rule__ArithmeticClause__Group__0 ) ) )
-            // InternalDescartesQL.g:2319:1: ( ( rule__ArithmeticClause__Group__0 ) )
+            // InternalDescartesQL.g:2372:2: ( ( ( rule__ArithmeticClause__Group__0 ) ) )
+            // InternalDescartesQL.g:2373:1: ( ( rule__ArithmeticClause__Group__0 ) )
             {
-            // InternalDescartesQL.g:2319:1: ( ( rule__ArithmeticClause__Group__0 ) )
-            // InternalDescartesQL.g:2320:1: ( rule__ArithmeticClause__Group__0 )
+            // InternalDescartesQL.g:2373:1: ( ( rule__ArithmeticClause__Group__0 ) )
+            // InternalDescartesQL.g:2374:1: ( rule__ArithmeticClause__Group__0 )
             {
              before(grammarAccess.getArithmeticClauseAccess().getGroup()); 
-            // InternalDescartesQL.g:2321:1: ( rule__ArithmeticClause__Group__0 )
-            // InternalDescartesQL.g:2321:2: rule__ArithmeticClause__Group__0
+            // InternalDescartesQL.g:2375:1: ( rule__ArithmeticClause__Group__0 )
+            // InternalDescartesQL.g:2375:2: rule__ArithmeticClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArithmeticClause__Group__0();
@@ -6315,11 +6473,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "entryRuleVariableValue"
-    // InternalDescartesQL.g:2333:1: entryRuleVariableValue : ruleVariableValue EOF ;
+    // InternalDescartesQL.g:2387:1: entryRuleVariableValue : ruleVariableValue EOF ;
     public final void entryRuleVariableValue() throws RecognitionException {
         try {
-            // InternalDescartesQL.g:2334:1: ( ruleVariableValue EOF )
-            // InternalDescartesQL.g:2335:1: ruleVariableValue EOF
+            // InternalDescartesQL.g:2388:1: ( ruleVariableValue EOF )
+            // InternalDescartesQL.g:2389:1: ruleVariableValue EOF
             {
              before(grammarAccess.getVariableValueRule()); 
             pushFollow(FOLLOW_1);
@@ -6345,21 +6503,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleVariableValue"
-    // InternalDescartesQL.g:2342:1: ruleVariableValue : ( ( rule__VariableValue__Alternatives ) ) ;
+    // InternalDescartesQL.g:2396:1: ruleVariableValue : ( ( rule__VariableValue__Alternatives ) ) ;
     public final void ruleVariableValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2346:2: ( ( ( rule__VariableValue__Alternatives ) ) )
-            // InternalDescartesQL.g:2347:1: ( ( rule__VariableValue__Alternatives ) )
+            // InternalDescartesQL.g:2400:2: ( ( ( rule__VariableValue__Alternatives ) ) )
+            // InternalDescartesQL.g:2401:1: ( ( rule__VariableValue__Alternatives ) )
             {
-            // InternalDescartesQL.g:2347:1: ( ( rule__VariableValue__Alternatives ) )
-            // InternalDescartesQL.g:2348:1: ( rule__VariableValue__Alternatives )
+            // InternalDescartesQL.g:2401:1: ( ( rule__VariableValue__Alternatives ) )
+            // InternalDescartesQL.g:2402:1: ( rule__VariableValue__Alternatives )
             {
              before(grammarAccess.getVariableValueAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2349:1: ( rule__VariableValue__Alternatives )
-            // InternalDescartesQL.g:2349:2: rule__VariableValue__Alternatives
+            // InternalDescartesQL.g:2403:1: ( rule__VariableValue__Alternatives )
+            // InternalDescartesQL.g:2403:2: rule__VariableValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__VariableValue__Alternatives();
@@ -6392,21 +6550,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleComparator"
-    // InternalDescartesQL.g:2362:1: ruleComparator : ( ( rule__Comparator__Alternatives ) ) ;
+    // InternalDescartesQL.g:2416:1: ruleComparator : ( ( rule__Comparator__Alternatives ) ) ;
     public final void ruleComparator() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2366:1: ( ( ( rule__Comparator__Alternatives ) ) )
-            // InternalDescartesQL.g:2367:1: ( ( rule__Comparator__Alternatives ) )
+            // InternalDescartesQL.g:2420:1: ( ( ( rule__Comparator__Alternatives ) ) )
+            // InternalDescartesQL.g:2421:1: ( ( rule__Comparator__Alternatives ) )
             {
-            // InternalDescartesQL.g:2367:1: ( ( rule__Comparator__Alternatives ) )
-            // InternalDescartesQL.g:2368:1: ( rule__Comparator__Alternatives )
+            // InternalDescartesQL.g:2421:1: ( ( rule__Comparator__Alternatives ) )
+            // InternalDescartesQL.g:2422:1: ( rule__Comparator__Alternatives )
             {
              before(grammarAccess.getComparatorAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2369:1: ( rule__Comparator__Alternatives )
-            // InternalDescartesQL.g:2369:2: rule__Comparator__Alternatives
+            // InternalDescartesQL.g:2423:1: ( rule__Comparator__Alternatives )
+            // InternalDescartesQL.g:2423:2: rule__Comparator__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Comparator__Alternatives();
@@ -6439,21 +6597,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleCurrency"
-    // InternalDescartesQL.g:2381:1: ruleCurrency : ( ( rule__Currency__Alternatives ) ) ;
+    // InternalDescartesQL.g:2435:1: ruleCurrency : ( ( rule__Currency__Alternatives ) ) ;
     public final void ruleCurrency() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2385:1: ( ( ( rule__Currency__Alternatives ) ) )
-            // InternalDescartesQL.g:2386:1: ( ( rule__Currency__Alternatives ) )
+            // InternalDescartesQL.g:2439:1: ( ( ( rule__Currency__Alternatives ) ) )
+            // InternalDescartesQL.g:2440:1: ( ( rule__Currency__Alternatives ) )
             {
-            // InternalDescartesQL.g:2386:1: ( ( rule__Currency__Alternatives ) )
-            // InternalDescartesQL.g:2387:1: ( rule__Currency__Alternatives )
+            // InternalDescartesQL.g:2440:1: ( ( rule__Currency__Alternatives ) )
+            // InternalDescartesQL.g:2441:1: ( rule__Currency__Alternatives )
             {
              before(grammarAccess.getCurrencyAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2388:1: ( rule__Currency__Alternatives )
-            // InternalDescartesQL.g:2388:2: rule__Currency__Alternatives
+            // InternalDescartesQL.g:2442:1: ( rule__Currency__Alternatives )
+            // InternalDescartesQL.g:2442:2: rule__Currency__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Currency__Alternatives();
@@ -6486,21 +6644,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilterConjunction"
-    // InternalDescartesQL.g:2400:1: ruleFilterConjunction : ( ( rule__FilterConjunction__Alternatives ) ) ;
+    // InternalDescartesQL.g:2454:1: ruleFilterConjunction : ( ( rule__FilterConjunction__Alternatives ) ) ;
     public final void ruleFilterConjunction() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2404:1: ( ( ( rule__FilterConjunction__Alternatives ) ) )
-            // InternalDescartesQL.g:2405:1: ( ( rule__FilterConjunction__Alternatives ) )
+            // InternalDescartesQL.g:2458:1: ( ( ( rule__FilterConjunction__Alternatives ) ) )
+            // InternalDescartesQL.g:2459:1: ( ( rule__FilterConjunction__Alternatives ) )
             {
-            // InternalDescartesQL.g:2405:1: ( ( rule__FilterConjunction__Alternatives ) )
-            // InternalDescartesQL.g:2406:1: ( rule__FilterConjunction__Alternatives )
+            // InternalDescartesQL.g:2459:1: ( ( rule__FilterConjunction__Alternatives ) )
+            // InternalDescartesQL.g:2460:1: ( rule__FilterConjunction__Alternatives )
             {
              before(grammarAccess.getFilterConjunctionAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2407:1: ( rule__FilterConjunction__Alternatives )
-            // InternalDescartesQL.g:2407:2: rule__FilterConjunction__Alternatives
+            // InternalDescartesQL.g:2461:1: ( rule__FilterConjunction__Alternatives )
+            // InternalDescartesQL.g:2461:2: rule__FilterConjunction__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FilterConjunction__Alternatives();
@@ -6533,21 +6691,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleFilterConditionType"
-    // InternalDescartesQL.g:2419:1: ruleFilterConditionType : ( ( rule__FilterConditionType__Alternatives ) ) ;
+    // InternalDescartesQL.g:2473:1: ruleFilterConditionType : ( ( rule__FilterConditionType__Alternatives ) ) ;
     public final void ruleFilterConditionType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2423:1: ( ( ( rule__FilterConditionType__Alternatives ) ) )
-            // InternalDescartesQL.g:2424:1: ( ( rule__FilterConditionType__Alternatives ) )
+            // InternalDescartesQL.g:2477:1: ( ( ( rule__FilterConditionType__Alternatives ) ) )
+            // InternalDescartesQL.g:2478:1: ( ( rule__FilterConditionType__Alternatives ) )
             {
-            // InternalDescartesQL.g:2424:1: ( ( rule__FilterConditionType__Alternatives ) )
-            // InternalDescartesQL.g:2425:1: ( rule__FilterConditionType__Alternatives )
+            // InternalDescartesQL.g:2478:1: ( ( rule__FilterConditionType__Alternatives ) )
+            // InternalDescartesQL.g:2479:1: ( rule__FilterConditionType__Alternatives )
             {
              before(grammarAccess.getFilterConditionTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2426:1: ( rule__FilterConditionType__Alternatives )
-            // InternalDescartesQL.g:2426:2: rule__FilterConditionType__Alternatives
+            // InternalDescartesQL.g:2480:1: ( rule__FilterConditionType__Alternatives )
+            // InternalDescartesQL.g:2480:2: rule__FilterConditionType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FilterConditionType__Alternatives();
@@ -6580,21 +6738,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleObserveRelativeDirectionType"
-    // InternalDescartesQL.g:2438:1: ruleObserveRelativeDirectionType : ( ( rule__ObserveRelativeDirectionType__Alternatives ) ) ;
+    // InternalDescartesQL.g:2492:1: ruleObserveRelativeDirectionType : ( ( rule__ObserveRelativeDirectionType__Alternatives ) ) ;
     public final void ruleObserveRelativeDirectionType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2442:1: ( ( ( rule__ObserveRelativeDirectionType__Alternatives ) ) )
-            // InternalDescartesQL.g:2443:1: ( ( rule__ObserveRelativeDirectionType__Alternatives ) )
+            // InternalDescartesQL.g:2496:1: ( ( ( rule__ObserveRelativeDirectionType__Alternatives ) ) )
+            // InternalDescartesQL.g:2497:1: ( ( rule__ObserveRelativeDirectionType__Alternatives ) )
             {
-            // InternalDescartesQL.g:2443:1: ( ( rule__ObserveRelativeDirectionType__Alternatives ) )
-            // InternalDescartesQL.g:2444:1: ( rule__ObserveRelativeDirectionType__Alternatives )
+            // InternalDescartesQL.g:2497:1: ( ( rule__ObserveRelativeDirectionType__Alternatives ) )
+            // InternalDescartesQL.g:2498:1: ( rule__ObserveRelativeDirectionType__Alternatives )
             {
              before(grammarAccess.getObserveRelativeDirectionTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2445:1: ( rule__ObserveRelativeDirectionType__Alternatives )
-            // InternalDescartesQL.g:2445:2: rule__ObserveRelativeDirectionType__Alternatives
+            // InternalDescartesQL.g:2499:1: ( rule__ObserveRelativeDirectionType__Alternatives )
+            // InternalDescartesQL.g:2499:2: rule__ObserveRelativeDirectionType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__ObserveRelativeDirectionType__Alternatives();
@@ -6627,21 +6785,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleRelativeTimeSignType"
-    // InternalDescartesQL.g:2457:1: ruleRelativeTimeSignType : ( ( rule__RelativeTimeSignType__Alternatives ) ) ;
+    // InternalDescartesQL.g:2511:1: ruleRelativeTimeSignType : ( ( rule__RelativeTimeSignType__Alternatives ) ) ;
     public final void ruleRelativeTimeSignType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2461:1: ( ( ( rule__RelativeTimeSignType__Alternatives ) ) )
-            // InternalDescartesQL.g:2462:1: ( ( rule__RelativeTimeSignType__Alternatives ) )
+            // InternalDescartesQL.g:2515:1: ( ( ( rule__RelativeTimeSignType__Alternatives ) ) )
+            // InternalDescartesQL.g:2516:1: ( ( rule__RelativeTimeSignType__Alternatives ) )
             {
-            // InternalDescartesQL.g:2462:1: ( ( rule__RelativeTimeSignType__Alternatives ) )
-            // InternalDescartesQL.g:2463:1: ( rule__RelativeTimeSignType__Alternatives )
+            // InternalDescartesQL.g:2516:1: ( ( rule__RelativeTimeSignType__Alternatives ) )
+            // InternalDescartesQL.g:2517:1: ( rule__RelativeTimeSignType__Alternatives )
             {
              before(grammarAccess.getRelativeTimeSignTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2464:1: ( rule__RelativeTimeSignType__Alternatives )
-            // InternalDescartesQL.g:2464:2: rule__RelativeTimeSignType__Alternatives
+            // InternalDescartesQL.g:2518:1: ( rule__RelativeTimeSignType__Alternatives )
+            // InternalDescartesQL.g:2518:2: rule__RelativeTimeSignType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__RelativeTimeSignType__Alternatives();
@@ -6674,21 +6832,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleTimeModifierType"
-    // InternalDescartesQL.g:2476:1: ruleTimeModifierType : ( ( rule__TimeModifierType__Alternatives ) ) ;
+    // InternalDescartesQL.g:2530:1: ruleTimeModifierType : ( ( rule__TimeModifierType__Alternatives ) ) ;
     public final void ruleTimeModifierType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2480:1: ( ( ( rule__TimeModifierType__Alternatives ) ) )
-            // InternalDescartesQL.g:2481:1: ( ( rule__TimeModifierType__Alternatives ) )
+            // InternalDescartesQL.g:2534:1: ( ( ( rule__TimeModifierType__Alternatives ) ) )
+            // InternalDescartesQL.g:2535:1: ( ( rule__TimeModifierType__Alternatives ) )
             {
-            // InternalDescartesQL.g:2481:1: ( ( rule__TimeModifierType__Alternatives ) )
-            // InternalDescartesQL.g:2482:1: ( rule__TimeModifierType__Alternatives )
+            // InternalDescartesQL.g:2535:1: ( ( rule__TimeModifierType__Alternatives ) )
+            // InternalDescartesQL.g:2536:1: ( rule__TimeModifierType__Alternatives )
             {
              before(grammarAccess.getTimeModifierTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2483:1: ( rule__TimeModifierType__Alternatives )
-            // InternalDescartesQL.g:2483:2: rule__TimeModifierType__Alternatives
+            // InternalDescartesQL.g:2537:1: ( rule__TimeModifierType__Alternatives )
+            // InternalDescartesQL.g:2537:2: rule__TimeModifierType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__TimeModifierType__Alternatives();
@@ -6721,21 +6879,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "ruleStatisticalAggregateType"
-    // InternalDescartesQL.g:2495:1: ruleStatisticalAggregateType : ( ( rule__StatisticalAggregateType__Alternatives ) ) ;
+    // InternalDescartesQL.g:2549:1: ruleStatisticalAggregateType : ( ( rule__StatisticalAggregateType__Alternatives ) ) ;
     public final void ruleStatisticalAggregateType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2499:1: ( ( ( rule__StatisticalAggregateType__Alternatives ) ) )
-            // InternalDescartesQL.g:2500:1: ( ( rule__StatisticalAggregateType__Alternatives ) )
+            // InternalDescartesQL.g:2553:1: ( ( ( rule__StatisticalAggregateType__Alternatives ) ) )
+            // InternalDescartesQL.g:2554:1: ( ( rule__StatisticalAggregateType__Alternatives ) )
             {
-            // InternalDescartesQL.g:2500:1: ( ( rule__StatisticalAggregateType__Alternatives ) )
-            // InternalDescartesQL.g:2501:1: ( rule__StatisticalAggregateType__Alternatives )
+            // InternalDescartesQL.g:2554:1: ( ( rule__StatisticalAggregateType__Alternatives ) )
+            // InternalDescartesQL.g:2555:1: ( rule__StatisticalAggregateType__Alternatives )
             {
              before(grammarAccess.getStatisticalAggregateTypeAccess().getAlternatives()); 
-            // InternalDescartesQL.g:2502:1: ( rule__StatisticalAggregateType__Alternatives )
-            // InternalDescartesQL.g:2502:2: rule__StatisticalAggregateType__Alternatives
+            // InternalDescartesQL.g:2556:1: ( rule__StatisticalAggregateType__Alternatives )
+            // InternalDescartesQL.g:2556:2: rule__StatisticalAggregateType__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__StatisticalAggregateType__Alternatives();
@@ -6768,46 +6926,52 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DescartesQL__QueryAlternatives_0_0"
-    // InternalDescartesQL.g:2513:1: rule__DescartesQL__QueryAlternatives_0_0 : ( ( ruleModelStructureQuery ) | ( rulePerformanceMetricsQuery ) | ( rulePerformanceIssueQuery ) | ( ruleConnectorCapabilityQuery ) | ( ruleWhatIfQuery ) | ( ruleGoal ) );
+    // InternalDescartesQL.g:2567:1: rule__DescartesQL__QueryAlternatives_0_0 : ( ( ruleModelStructureQuery ) | ( rulePerformanceMetricsQuery ) | ( rulePerformanceIssueQuery ) | ( ruleConnectorCapabilityQuery ) | ( ruleWhatIfQuery ) | ( ruleGoal ) | ( ruleGenerateSLAConcern ) );
     public final void rule__DescartesQL__QueryAlternatives_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2517:1: ( ( ruleModelStructureQuery ) | ( rulePerformanceMetricsQuery ) | ( rulePerformanceIssueQuery ) | ( ruleConnectorCapabilityQuery ) | ( ruleWhatIfQuery ) | ( ruleGoal ) )
-            int alt1=6;
+            // InternalDescartesQL.g:2571:1: ( ( ruleModelStructureQuery ) | ( rulePerformanceMetricsQuery ) | ( rulePerformanceIssueQuery ) | ( ruleConnectorCapabilityQuery ) | ( ruleWhatIfQuery ) | ( ruleGoal ) | ( ruleGenerateSLAConcern ) )
+            int alt1=7;
             switch ( input.LA(1) ) {
-            case 61:
+            case 65:
                 {
                 alt1=1;
                 }
                 break;
-            case 63:
+            case 67:
                 {
                 alt1=2;
                 }
                 break;
-            case 64:
+            case 68:
                 {
                 alt1=3;
                 }
                 break;
-            case 62:
+            case 66:
                 {
                 alt1=4;
                 }
                 break;
-            case 73:
+            case 77:
                 {
                 alt1=5;
                 }
                 break;
             case 13:
             case 14:
+            case 15:
                 {
                 alt1=6;
                 }
                 break;
+            case 54:
+                {
+                alt1=7;
+                }
+                break;
             default:
                 NoViableAltException nvae =
                     new NoViableAltException("", 1, 0, input);
@@ -6817,10 +6981,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
             switch (alt1) {
                 case 1 :
-                    // InternalDescartesQL.g:2518:1: ( ruleModelStructureQuery )
+                    // InternalDescartesQL.g:2572:1: ( ruleModelStructureQuery )
                     {
-                    // InternalDescartesQL.g:2518:1: ( ruleModelStructureQuery )
-                    // InternalDescartesQL.g:2519:1: ruleModelStructureQuery
+                    // InternalDescartesQL.g:2572:1: ( ruleModelStructureQuery )
+                    // InternalDescartesQL.g:2573:1: ruleModelStructureQuery
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryModelStructureQueryParserRuleCall_0_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -6836,10 +7000,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2524:6: ( rulePerformanceMetricsQuery )
+                    // InternalDescartesQL.g:2578:6: ( rulePerformanceMetricsQuery )
                     {
-                    // InternalDescartesQL.g:2524:6: ( rulePerformanceMetricsQuery )
-                    // InternalDescartesQL.g:2525:1: rulePerformanceMetricsQuery
+                    // InternalDescartesQL.g:2578:6: ( rulePerformanceMetricsQuery )
+                    // InternalDescartesQL.g:2579:1: rulePerformanceMetricsQuery
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryPerformanceMetricsQueryParserRuleCall_0_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -6855,10 +7019,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2530:6: ( rulePerformanceIssueQuery )
+                    // InternalDescartesQL.g:2584:6: ( rulePerformanceIssueQuery )
                     {
-                    // InternalDescartesQL.g:2530:6: ( rulePerformanceIssueQuery )
-                    // InternalDescartesQL.g:2531:1: rulePerformanceIssueQuery
+                    // InternalDescartesQL.g:2584:6: ( rulePerformanceIssueQuery )
+                    // InternalDescartesQL.g:2585:1: rulePerformanceIssueQuery
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryPerformanceIssueQueryParserRuleCall_0_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -6874,10 +7038,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:2536:6: ( ruleConnectorCapabilityQuery )
+                    // InternalDescartesQL.g:2590:6: ( ruleConnectorCapabilityQuery )
                     {
-                    // InternalDescartesQL.g:2536:6: ( ruleConnectorCapabilityQuery )
-                    // InternalDescartesQL.g:2537:1: ruleConnectorCapabilityQuery
+                    // InternalDescartesQL.g:2590:6: ( ruleConnectorCapabilityQuery )
+                    // InternalDescartesQL.g:2591:1: ruleConnectorCapabilityQuery
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryConnectorCapabilityQueryParserRuleCall_0_0_3()); 
                     pushFollow(FOLLOW_2);
@@ -6893,10 +7057,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 5 :
-                    // InternalDescartesQL.g:2542:6: ( ruleWhatIfQuery )
+                    // InternalDescartesQL.g:2596:6: ( ruleWhatIfQuery )
                     {
-                    // InternalDescartesQL.g:2542:6: ( ruleWhatIfQuery )
-                    // InternalDescartesQL.g:2543:1: ruleWhatIfQuery
+                    // InternalDescartesQL.g:2596:6: ( ruleWhatIfQuery )
+                    // InternalDescartesQL.g:2597:1: ruleWhatIfQuery
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryWhatIfQueryParserRuleCall_0_0_4()); 
                     pushFollow(FOLLOW_2);
@@ -6912,10 +7076,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 6 :
-                    // InternalDescartesQL.g:2548:6: ( ruleGoal )
+                    // InternalDescartesQL.g:2602:6: ( ruleGoal )
                     {
-                    // InternalDescartesQL.g:2548:6: ( ruleGoal )
-                    // InternalDescartesQL.g:2549:1: ruleGoal
+                    // InternalDescartesQL.g:2602:6: ( ruleGoal )
+                    // InternalDescartesQL.g:2603:1: ruleGoal
                     {
                      before(grammarAccess.getDescartesQLAccess().getQueryGoalParserRuleCall_0_0_5()); 
                     pushFollow(FOLLOW_2);
@@ -6928,6 +7092,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
 
 
+                    }
+                    break;
+                case 7 :
+                    // InternalDescartesQL.g:2608:6: ( ruleGenerateSLAConcern )
+                    {
+                    // InternalDescartesQL.g:2608:6: ( ruleGenerateSLAConcern )
+                    // InternalDescartesQL.g:2609:1: ruleGenerateSLAConcern
+                    {
+                     before(grammarAccess.getDescartesQLAccess().getQueryGenerateSLAConcernParserRuleCall_0_0_6()); 
+                    pushFollow(FOLLOW_2);
+                    ruleGenerateSLAConcern();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDescartesQLAccess().getQueryGenerateSLAConcernParserRuleCall_0_0_6()); 
+
+                    }
+
+
                     }
                     break;
 
@@ -6948,34 +7131,43 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__QueryTypeAlternatives_0_0"
-    // InternalDescartesQL.g:2559:1: rule__Goal__QueryTypeAlternatives_0_0 : ( ( 'ENSURE' ) | ( 'MONITOR' ) );
+    // InternalDescartesQL.g:2619:1: rule__Goal__QueryTypeAlternatives_0_0 : ( ( 'ENSURE' ) | ( 'MONITOR' ) | ( 'EVALUATE' ) );
     public final void rule__Goal__QueryTypeAlternatives_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2563:1: ( ( 'ENSURE' ) | ( 'MONITOR' ) )
-            int alt2=2;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0==13) ) {
+            // InternalDescartesQL.g:2623:1: ( ( 'ENSURE' ) | ( 'MONITOR' ) | ( 'EVALUATE' ) )
+            int alt2=3;
+            switch ( input.LA(1) ) {
+            case 13:
+                {
                 alt2=1;
-            }
-            else if ( (LA2_0==14) ) {
+                }
+                break;
+            case 14:
+                {
                 alt2=2;
-            }
-            else {
+                }
+                break;
+            case 15:
+                {
+                alt2=3;
+                }
+                break;
+            default:
                 NoViableAltException nvae =
                     new NoViableAltException("", 2, 0, input);
 
                 throw nvae;
             }
+
             switch (alt2) {
                 case 1 :
-                    // InternalDescartesQL.g:2564:1: ( 'ENSURE' )
+                    // InternalDescartesQL.g:2624:1: ( 'ENSURE' )
                     {
-                    // InternalDescartesQL.g:2564:1: ( 'ENSURE' )
-                    // InternalDescartesQL.g:2565:1: 'ENSURE'
+                    // InternalDescartesQL.g:2624:1: ( 'ENSURE' )
+                    // InternalDescartesQL.g:2625:1: 'ENSURE'
                     {
                      before(grammarAccess.getGoalAccess().getQueryTypeENSUREKeyword_0_0_0()); 
                     match(input,13,FOLLOW_2); 
@@ -6987,10 +7179,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2572:6: ( 'MONITOR' )
+                    // InternalDescartesQL.g:2632:6: ( 'MONITOR' )
                     {
-                    // InternalDescartesQL.g:2572:6: ( 'MONITOR' )
-                    // InternalDescartesQL.g:2573:1: 'MONITOR'
+                    // InternalDescartesQL.g:2632:6: ( 'MONITOR' )
+                    // InternalDescartesQL.g:2633:1: 'MONITOR'
                     {
                      before(grammarAccess.getGoalAccess().getQueryTypeMONITORKeyword_0_0_1()); 
                     match(input,14,FOLLOW_2); 
@@ -6999,6 +7191,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
 
 
+                    }
+                    break;
+                case 3 :
+                    // InternalDescartesQL.g:2640:6: ( 'EVALUATE' )
+                    {
+                    // InternalDescartesQL.g:2640:6: ( 'EVALUATE' )
+                    // InternalDescartesQL.g:2641:1: 'EVALUATE'
+                    {
+                     before(grammarAccess.getGoalAccess().getQueryTypeEVALUATEKeyword_0_0_2()); 
+                    match(input,15,FOLLOW_2); 
+                     after(grammarAccess.getGoalAccess().getQueryTypeEVALUATEKeyword_0_0_2()); 
+
+                    }
+
+
                     }
                     break;
 
@@ -7018,44 +7225,135 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "rule__Goal__QueryTypeAlternatives_0_0"
 
 
+    // $ANTLR start "rule__Violation__Alternatives"
+    // InternalDescartesQL.g:2653:1: rule__Violation__Alternatives : ( ( ( rule__Violation__Group_0__0 ) ) | ( ( rule__Violation__Group_1__0 ) ) );
+    public final void rule__Violation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:2657:1: ( ( ( rule__Violation__Group_0__0 ) ) | ( ( rule__Violation__Group_1__0 ) ) )
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==63) ) {
+                alt3=1;
+            }
+            else if ( (LA3_0==55) ) {
+                alt3=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+            switch (alt3) {
+                case 1 :
+                    // InternalDescartesQL.g:2658:1: ( ( rule__Violation__Group_0__0 ) )
+                    {
+                    // InternalDescartesQL.g:2658:1: ( ( rule__Violation__Group_0__0 ) )
+                    // InternalDescartesQL.g:2659:1: ( rule__Violation__Group_0__0 )
+                    {
+                     before(grammarAccess.getViolationAccess().getGroup_0()); 
+                    // InternalDescartesQL.g:2660:1: ( rule__Violation__Group_0__0 )
+                    // InternalDescartesQL.g:2660:2: rule__Violation__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Violation__Group_0__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getViolationAccess().getGroup_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalDescartesQL.g:2664:6: ( ( rule__Violation__Group_1__0 ) )
+                    {
+                    // InternalDescartesQL.g:2664:6: ( ( rule__Violation__Group_1__0 ) )
+                    // InternalDescartesQL.g:2665:1: ( rule__Violation__Group_1__0 )
+                    {
+                     before(grammarAccess.getViolationAccess().getGroup_1()); 
+                    // InternalDescartesQL.g:2666:1: ( rule__Violation__Group_1__0 )
+                    // InternalDescartesQL.g:2666:2: rule__Violation__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Violation__Group_1__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getViolationAccess().getGroup_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Violation__Alternatives"
+
+
     // $ANTLR start "rule__ListQuery__QueryTypeAlternatives_1_0"
-    // InternalDescartesQL.g:2585:1: rule__ListQuery__QueryTypeAlternatives_1_0 : ( ( ruleListEntitiesQuery ) | ( ruleListMetricsQuery ) | ( ruleListDoFQuery ) );
+    // InternalDescartesQL.g:2675:1: rule__ListQuery__QueryTypeAlternatives_1_0 : ( ( ruleListEntitiesQuery ) | ( ruleListMetricsQuery ) | ( ruleListDoFQuery ) );
     public final void rule__ListQuery__QueryTypeAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2589:1: ( ( ruleListEntitiesQuery ) | ( ruleListMetricsQuery ) | ( ruleListDoFQuery ) )
-            int alt3=3;
+            // InternalDescartesQL.g:2679:1: ( ( ruleListEntitiesQuery ) | ( ruleListMetricsQuery ) | ( ruleListDoFQuery ) )
+            int alt4=3;
             switch ( input.LA(1) ) {
-            case 83:
+            case 87:
                 {
-                alt3=1;
+                alt4=1;
                 }
                 break;
-            case 84:
+            case 88:
                 {
-                alt3=2;
+                alt4=2;
                 }
                 break;
-            case 82:
+            case 86:
                 {
-                alt3=3;
+                alt4=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 3, 0, input);
+                    new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt3) {
+            switch (alt4) {
                 case 1 :
-                    // InternalDescartesQL.g:2590:1: ( ruleListEntitiesQuery )
+                    // InternalDescartesQL.g:2680:1: ( ruleListEntitiesQuery )
                     {
-                    // InternalDescartesQL.g:2590:1: ( ruleListEntitiesQuery )
-                    // InternalDescartesQL.g:2591:1: ruleListEntitiesQuery
+                    // InternalDescartesQL.g:2680:1: ( ruleListEntitiesQuery )
+                    // InternalDescartesQL.g:2681:1: ruleListEntitiesQuery
                     {
                      before(grammarAccess.getListQueryAccess().getQueryTypeListEntitiesQueryParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7071,10 +7369,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2596:6: ( ruleListMetricsQuery )
+                    // InternalDescartesQL.g:2686:6: ( ruleListMetricsQuery )
                     {
-                    // InternalDescartesQL.g:2596:6: ( ruleListMetricsQuery )
-                    // InternalDescartesQL.g:2597:1: ruleListMetricsQuery
+                    // InternalDescartesQL.g:2686:6: ( ruleListMetricsQuery )
+                    // InternalDescartesQL.g:2687:1: ruleListMetricsQuery
                     {
                      before(grammarAccess.getListQueryAccess().getQueryTypeListMetricsQueryParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7090,10 +7388,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2602:6: ( ruleListDoFQuery )
+                    // InternalDescartesQL.g:2692:6: ( ruleListDoFQuery )
                     {
-                    // InternalDescartesQL.g:2602:6: ( ruleListDoFQuery )
-                    // InternalDescartesQL.g:2603:1: ruleListDoFQuery
+                    // InternalDescartesQL.g:2692:6: ( ruleListDoFQuery )
+                    // InternalDescartesQL.g:2693:1: ruleListDoFQuery
                     {
                      before(grammarAccess.getListQueryAccess().getQueryTypeListDoFQueryParserRuleCall_1_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -7126,43 +7424,43 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetQuery__QueryTapeAlternatives_1_0"
-    // InternalDescartesQL.g:2613:1: rule__GetQuery__QueryTapeAlternatives_1_0 : ( ( ruleGetExplorationStrategiesQuery ) | ( ruleGetTimeUnitsQuery ) | ( ruleGetConstraintsQuery ) );
+    // InternalDescartesQL.g:2703:1: rule__GetQuery__QueryTapeAlternatives_1_0 : ( ( ruleGetExplorationStrategiesQuery ) | ( ruleGetTimeUnitsQuery ) | ( ruleGetConstraintsQuery ) );
     public final void rule__GetQuery__QueryTapeAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2617:1: ( ( ruleGetExplorationStrategiesQuery ) | ( ruleGetTimeUnitsQuery ) | ( ruleGetConstraintsQuery ) )
-            int alt4=3;
+            // InternalDescartesQL.g:2707:1: ( ( ruleGetExplorationStrategiesQuery ) | ( ruleGetTimeUnitsQuery ) | ( ruleGetConstraintsQuery ) )
+            int alt5=3;
             switch ( input.LA(1) ) {
-            case 80:
+            case 84:
                 {
-                alt4=1;
+                alt5=1;
                 }
                 break;
-            case 81:
+            case 85:
                 {
-                alt4=2;
+                alt5=2;
                 }
                 break;
-            case 79:
+            case 83:
                 {
-                alt4=3;
+                alt5=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 4, 0, input);
+                    new NoViableAltException("", 5, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt4) {
+            switch (alt5) {
                 case 1 :
-                    // InternalDescartesQL.g:2618:1: ( ruleGetExplorationStrategiesQuery )
+                    // InternalDescartesQL.g:2708:1: ( ruleGetExplorationStrategiesQuery )
                     {
-                    // InternalDescartesQL.g:2618:1: ( ruleGetExplorationStrategiesQuery )
-                    // InternalDescartesQL.g:2619:1: ruleGetExplorationStrategiesQuery
+                    // InternalDescartesQL.g:2708:1: ( ruleGetExplorationStrategiesQuery )
+                    // InternalDescartesQL.g:2709:1: ruleGetExplorationStrategiesQuery
                     {
                      before(grammarAccess.getGetQueryAccess().getQueryTapeGetExplorationStrategiesQueryParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7178,10 +7476,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2624:6: ( ruleGetTimeUnitsQuery )
+                    // InternalDescartesQL.g:2714:6: ( ruleGetTimeUnitsQuery )
                     {
-                    // InternalDescartesQL.g:2624:6: ( ruleGetTimeUnitsQuery )
-                    // InternalDescartesQL.g:2625:1: ruleGetTimeUnitsQuery
+                    // InternalDescartesQL.g:2714:6: ( ruleGetTimeUnitsQuery )
+                    // InternalDescartesQL.g:2715:1: ruleGetTimeUnitsQuery
                     {
                      before(grammarAccess.getGetQueryAccess().getQueryTapeGetTimeUnitsQueryParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7197,10 +7495,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2630:6: ( ruleGetConstraintsQuery )
+                    // InternalDescartesQL.g:2720:6: ( ruleGetConstraintsQuery )
                     {
-                    // InternalDescartesQL.g:2630:6: ( ruleGetConstraintsQuery )
-                    // InternalDescartesQL.g:2631:1: ruleGetConstraintsQuery
+                    // InternalDescartesQL.g:2720:6: ( ruleGetConstraintsQuery )
+                    // InternalDescartesQL.g:2721:1: ruleGetConstraintsQuery
                     {
                      before(grammarAccess.getGetQueryAccess().getQueryTapeGetConstraintsQueryParserRuleCall_1_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -7233,34 +7531,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricClauseType__Alternatives"
-    // InternalDescartesQL.g:2641:1: rule__MetricClauseType__Alternatives : ( ( ruleMetricClause ) | ( ruleAggregateMetricClause ) );
+    // InternalDescartesQL.g:2731:1: rule__MetricClauseType__Alternatives : ( ( ruleMetricClause ) | ( ruleAggregateMetricClause ) );
     public final void rule__MetricClauseType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2645:1: ( ( ruleMetricClause ) | ( ruleAggregateMetricClause ) )
-            int alt5=2;
-            int LA5_0 = input.LA(1);
+            // InternalDescartesQL.g:2735:1: ( ( ruleMetricClause ) | ( ruleAggregateMetricClause ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
 
-            if ( (LA5_0==RULE_ID) ) {
-                alt5=1;
+            if ( (LA6_0==RULE_ID) ) {
+                alt6=1;
             }
-            else if ( ((LA5_0>=42 && LA5_0<=51)) ) {
-                alt5=2;
+            else if ( ((LA6_0>=43 && LA6_0<=52)) ) {
+                alt6=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 5, 0, input);
+                    new NoViableAltException("", 6, 0, input);
 
                 throw nvae;
             }
-            switch (alt5) {
+            switch (alt6) {
                 case 1 :
-                    // InternalDescartesQL.g:2646:1: ( ruleMetricClause )
+                    // InternalDescartesQL.g:2736:1: ( ruleMetricClause )
                     {
-                    // InternalDescartesQL.g:2646:1: ( ruleMetricClause )
-                    // InternalDescartesQL.g:2647:1: ruleMetricClause
+                    // InternalDescartesQL.g:2736:1: ( ruleMetricClause )
+                    // InternalDescartesQL.g:2737:1: ruleMetricClause
                     {
                      before(grammarAccess.getMetricClauseTypeAccess().getMetricClauseParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -7276,10 +7574,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2652:6: ( ruleAggregateMetricClause )
+                    // InternalDescartesQL.g:2742:6: ( ruleAggregateMetricClause )
                     {
-                    // InternalDescartesQL.g:2652:6: ( ruleAggregateMetricClause )
-                    // InternalDescartesQL.g:2653:1: ruleAggregateMetricClause
+                    // InternalDescartesQL.g:2742:6: ( ruleAggregateMetricClause )
+                    // InternalDescartesQL.g:2743:1: ruleAggregateMetricClause
                     {
                      before(grammarAccess.getMetricClauseTypeAccess().getAggregateMetricClauseParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -7312,47 +7610,47 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFVariationClause__VariationAlternatives_1_0"
-    // InternalDescartesQL.g:2663:1: rule__DoFVariationClause__VariationAlternatives_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleDoubleValueVariationClause ) );
+    // InternalDescartesQL.g:2753:1: rule__DoFVariationClause__VariationAlternatives_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleDoubleValueVariationClause ) );
     public final void rule__DoFVariationClause__VariationAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2667:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleDoubleValueVariationClause ) )
-            int alt6=3;
-            int LA6_0 = input.LA(1);
+            // InternalDescartesQL.g:2757:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleDoubleValueVariationClause ) )
+            int alt7=3;
+            int LA7_0 = input.LA(1);
 
-            if ( (LA6_0==RULE_INT) ) {
-                int LA6_1 = input.LA(2);
+            if ( (LA7_0==RULE_INT) ) {
+                int LA7_1 = input.LA(2);
 
-                if ( (LA6_1==20||LA6_1==53) ) {
-                    alt6=2;
+                if ( (LA7_1==73) ) {
+                    alt7=1;
                 }
-                else if ( (LA6_1==69) ) {
-                    alt6=1;
+                else if ( (LA7_1==21||LA7_1==57) ) {
+                    alt7=2;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("", 6, 1, input);
+                        new NoViableAltException("", 7, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA6_0==RULE_DOUBLE) ) {
-                alt6=3;
+            else if ( (LA7_0==RULE_DOUBLE) ) {
+                alt7=3;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 6, 0, input);
+                    new NoViableAltException("", 7, 0, input);
 
                 throw nvae;
             }
-            switch (alt6) {
+            switch (alt7) {
                 case 1 :
-                    // InternalDescartesQL.g:2668:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:2758:1: ( ruleIntervalVariationClause )
                     {
-                    // InternalDescartesQL.g:2668:1: ( ruleIntervalVariationClause )
-                    // InternalDescartesQL.g:2669:1: ruleIntervalVariationClause
+                    // InternalDescartesQL.g:2758:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:2759:1: ruleIntervalVariationClause
                     {
                      before(grammarAccess.getDoFVariationClauseAccess().getVariationIntervalVariationClauseParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7368,10 +7666,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2674:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:2764:6: ( ruleValueVariationClause )
                     {
-                    // InternalDescartesQL.g:2674:6: ( ruleValueVariationClause )
-                    // InternalDescartesQL.g:2675:1: ruleValueVariationClause
+                    // InternalDescartesQL.g:2764:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:2765:1: ruleValueVariationClause
                     {
                      before(grammarAccess.getDoFVariationClauseAccess().getVariationValueVariationClauseParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7387,10 +7685,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2680:6: ( ruleDoubleValueVariationClause )
+                    // InternalDescartesQL.g:2770:6: ( ruleDoubleValueVariationClause )
                     {
-                    // InternalDescartesQL.g:2680:6: ( ruleDoubleValueVariationClause )
-                    // InternalDescartesQL.g:2681:1: ruleDoubleValueVariationClause
+                    // InternalDescartesQL.g:2770:6: ( ruleDoubleValueVariationClause )
+                    // InternalDescartesQL.g:2771:1: ruleDoubleValueVariationClause
                     {
                      before(grammarAccess.getDoFVariationClauseAccess().getVariationDoubleValueVariationClauseParserRuleCall_1_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -7423,34 +7721,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFReference__DoFVariationClauseAlternatives_2_0"
-    // InternalDescartesQL.g:2691:1: rule__DoFReference__DoFVariationClauseAlternatives_2_0 : ( ( ruleConfigurationPropertiesClause ) | ( ruleDoFVariationClause ) );
+    // InternalDescartesQL.g:2781:1: rule__DoFReference__DoFVariationClauseAlternatives_2_0 : ( ( ruleConfigurationPropertiesClause ) | ( ruleDoFVariationClause ) );
     public final void rule__DoFReference__DoFVariationClauseAlternatives_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2695:1: ( ( ruleConfigurationPropertiesClause ) | ( ruleDoFVariationClause ) )
-            int alt7=2;
-            int LA7_0 = input.LA(1);
+            // InternalDescartesQL.g:2785:1: ( ( ruleConfigurationPropertiesClause ) | ( ruleDoFVariationClause ) )
+            int alt8=2;
+            int LA8_0 = input.LA(1);
 
-            if ( (LA7_0==87) ) {
-                alt7=1;
+            if ( (LA8_0==91) ) {
+                alt8=1;
             }
-            else if ( (LA7_0==18) ) {
-                alt7=2;
+            else if ( (LA8_0==19) ) {
+                alt8=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 7, 0, input);
+                    new NoViableAltException("", 8, 0, input);
 
                 throw nvae;
             }
-            switch (alt7) {
+            switch (alt8) {
                 case 1 :
-                    // InternalDescartesQL.g:2696:1: ( ruleConfigurationPropertiesClause )
+                    // InternalDescartesQL.g:2786:1: ( ruleConfigurationPropertiesClause )
                     {
-                    // InternalDescartesQL.g:2696:1: ( ruleConfigurationPropertiesClause )
-                    // InternalDescartesQL.g:2697:1: ruleConfigurationPropertiesClause
+                    // InternalDescartesQL.g:2786:1: ( ruleConfigurationPropertiesClause )
+                    // InternalDescartesQL.g:2787:1: ruleConfigurationPropertiesClause
                     {
                      before(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseConfigurationPropertiesClauseParserRuleCall_2_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7466,10 +7764,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2702:6: ( ruleDoFVariationClause )
+                    // InternalDescartesQL.g:2792:6: ( ruleDoFVariationClause )
                     {
-                    // InternalDescartesQL.g:2702:6: ( ruleDoFVariationClause )
-                    // InternalDescartesQL.g:2703:1: ruleDoFVariationClause
+                    // InternalDescartesQL.g:2792:6: ( ruleDoFVariationClause )
+                    // InternalDescartesQL.g:2793:1: ruleDoFVariationClause
                     {
                      before(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseDoFVariationClauseParserRuleCall_2_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7502,34 +7800,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AggregateMetricClause__MetricsAlternatives_2_0"
-    // InternalDescartesQL.g:2713:1: rule__AggregateMetricClause__MetricsAlternatives_2_0 : ( ( ruleMetricStarClause ) | ( ruleMetricClauses ) );
+    // InternalDescartesQL.g:2803:1: rule__AggregateMetricClause__MetricsAlternatives_2_0 : ( ( ruleMetricStarClause ) | ( ruleMetricClauses ) );
     public final void rule__AggregateMetricClause__MetricsAlternatives_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2717:1: ( ( ruleMetricStarClause ) | ( ruleMetricClauses ) )
-            int alt8=2;
-            int LA8_0 = input.LA(1);
+            // InternalDescartesQL.g:2807:1: ( ( ruleMetricStarClause ) | ( ruleMetricClauses ) )
+            int alt9=2;
+            int LA9_0 = input.LA(1);
 
-            if ( (LA8_0==71) ) {
-                alt8=1;
+            if ( (LA9_0==75) ) {
+                alt9=1;
             }
-            else if ( (LA8_0==RULE_ID) ) {
-                alt8=2;
+            else if ( (LA9_0==RULE_ID) ) {
+                alt9=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 8, 0, input);
+                    new NoViableAltException("", 9, 0, input);
 
                 throw nvae;
             }
-            switch (alt8) {
+            switch (alt9) {
                 case 1 :
-                    // InternalDescartesQL.g:2718:1: ( ruleMetricStarClause )
+                    // InternalDescartesQL.g:2808:1: ( ruleMetricStarClause )
                     {
-                    // InternalDescartesQL.g:2718:1: ( ruleMetricStarClause )
-                    // InternalDescartesQL.g:2719:1: ruleMetricStarClause
+                    // InternalDescartesQL.g:2808:1: ( ruleMetricStarClause )
+                    // InternalDescartesQL.g:2809:1: ruleMetricStarClause
                     {
                      before(grammarAccess.getAggregateMetricClauseAccess().getMetricsMetricStarClauseParserRuleCall_2_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7545,10 +7843,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2724:6: ( ruleMetricClauses )
+                    // InternalDescartesQL.g:2814:6: ( ruleMetricClauses )
                     {
-                    // InternalDescartesQL.g:2724:6: ( ruleMetricClauses )
-                    // InternalDescartesQL.g:2725:1: ruleMetricClauses
+                    // InternalDescartesQL.g:2814:6: ( ruleMetricClauses )
+                    // InternalDescartesQL.g:2815:1: ruleMetricClauses
                     {
                      before(grammarAccess.getAggregateMetricClauseAccess().getMetricsMetricClausesParserRuleCall_2_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7581,43 +7879,43 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__NavigationClause__Alternatives"
-    // InternalDescartesQL.g:2735:1: rule__NavigationClause__Alternatives : ( ( ruleParentClause ) | ( ruleChildrenClause ) | ( ruleFindClause ) );
+    // InternalDescartesQL.g:2825:1: rule__NavigationClause__Alternatives : ( ( ruleParentClause ) | ( ruleChildrenClause ) | ( ruleFindClause ) );
     public final void rule__NavigationClause__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2739:1: ( ( ruleParentClause ) | ( ruleChildrenClause ) | ( ruleFindClause ) )
-            int alt9=3;
+            // InternalDescartesQL.g:2829:1: ( ( ruleParentClause ) | ( ruleChildrenClause ) | ( ruleFindClause ) )
+            int alt10=3;
             switch ( input.LA(1) ) {
-            case 91:
+            case 95:
                 {
-                alt9=1;
+                alt10=1;
                 }
                 break;
-            case 90:
+            case 94:
                 {
-                alt9=2;
+                alt10=2;
                 }
                 break;
-            case 92:
+            case 96:
                 {
-                alt9=3;
+                alt10=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 9, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt9) {
+            switch (alt10) {
                 case 1 :
-                    // InternalDescartesQL.g:2740:1: ( ruleParentClause )
+                    // InternalDescartesQL.g:2830:1: ( ruleParentClause )
                     {
-                    // InternalDescartesQL.g:2740:1: ( ruleParentClause )
-                    // InternalDescartesQL.g:2741:1: ruleParentClause
+                    // InternalDescartesQL.g:2830:1: ( ruleParentClause )
+                    // InternalDescartesQL.g:2831:1: ruleParentClause
                     {
                      before(grammarAccess.getNavigationClauseAccess().getParentClauseParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -7633,10 +7931,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2746:6: ( ruleChildrenClause )
+                    // InternalDescartesQL.g:2836:6: ( ruleChildrenClause )
                     {
-                    // InternalDescartesQL.g:2746:6: ( ruleChildrenClause )
-                    // InternalDescartesQL.g:2747:1: ruleChildrenClause
+                    // InternalDescartesQL.g:2836:6: ( ruleChildrenClause )
+                    // InternalDescartesQL.g:2837:1: ruleChildrenClause
                     {
                      before(grammarAccess.getNavigationClauseAccess().getChildrenClauseParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -7652,10 +7950,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2752:6: ( ruleFindClause )
+                    // InternalDescartesQL.g:2842:6: ( ruleFindClause )
                     {
-                    // InternalDescartesQL.g:2752:6: ( ruleFindClause )
-                    // InternalDescartesQL.g:2753:1: ruleFindClause
+                    // InternalDescartesQL.g:2842:6: ( ruleFindClause )
+                    // InternalDescartesQL.g:2843:1: ruleFindClause
                     {
                      before(grammarAccess.getNavigationClauseAccess().getFindClauseParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -7688,49 +7986,49 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObservationClause__Alternatives"
-    // InternalDescartesQL.g:2763:1: rule__ObservationClause__Alternatives : ( ( ruleConnectorTimeUnitClause ) | ( ruleConnectorInstanceReferenceClause ) | ( ruleObserveRelativeClause ) | ( ruleObserveBetweenClause ) );
+    // InternalDescartesQL.g:2853:1: rule__ObservationClause__Alternatives : ( ( ruleConnectorTimeUnitClause ) | ( ruleConnectorInstanceReferenceClause ) | ( ruleObserveRelativeClause ) | ( ruleObserveBetweenClause ) );
     public final void rule__ObservationClause__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2767:1: ( ( ruleConnectorTimeUnitClause ) | ( ruleConnectorInstanceReferenceClause ) | ( ruleObserveRelativeClause ) | ( ruleObserveBetweenClause ) )
-            int alt10=4;
+            // InternalDescartesQL.g:2857:1: ( ( ruleConnectorTimeUnitClause ) | ( ruleConnectorInstanceReferenceClause ) | ( ruleObserveRelativeClause ) | ( ruleObserveBetweenClause ) )
+            int alt11=4;
             switch ( input.LA(1) ) {
             case RULE_INT:
                 {
-                alt10=1;
+                alt11=1;
                 }
                 break;
             case RULE_ID:
                 {
-                alt10=2;
+                alt11=2;
                 }
                 break;
-            case 30:
             case 31:
+            case 32:
                 {
-                alt10=3;
+                alt11=3;
                 }
                 break;
-            case 101:
+            case 105:
                 {
-                alt10=4;
+                alt11=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt10) {
+            switch (alt11) {
                 case 1 :
-                    // InternalDescartesQL.g:2768:1: ( ruleConnectorTimeUnitClause )
+                    // InternalDescartesQL.g:2858:1: ( ruleConnectorTimeUnitClause )
                     {
-                    // InternalDescartesQL.g:2768:1: ( ruleConnectorTimeUnitClause )
-                    // InternalDescartesQL.g:2769:1: ruleConnectorTimeUnitClause
+                    // InternalDescartesQL.g:2858:1: ( ruleConnectorTimeUnitClause )
+                    // InternalDescartesQL.g:2859:1: ruleConnectorTimeUnitClause
                     {
                      before(grammarAccess.getObservationClauseAccess().getConnectorTimeUnitClauseParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -7746,10 +8044,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2774:6: ( ruleConnectorInstanceReferenceClause )
+                    // InternalDescartesQL.g:2864:6: ( ruleConnectorInstanceReferenceClause )
                     {
-                    // InternalDescartesQL.g:2774:6: ( ruleConnectorInstanceReferenceClause )
-                    // InternalDescartesQL.g:2775:1: ruleConnectorInstanceReferenceClause
+                    // InternalDescartesQL.g:2864:6: ( ruleConnectorInstanceReferenceClause )
+                    // InternalDescartesQL.g:2865:1: ruleConnectorInstanceReferenceClause
                     {
                      before(grammarAccess.getObservationClauseAccess().getConnectorInstanceReferenceClauseParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -7765,10 +8063,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2780:6: ( ruleObserveRelativeClause )
+                    // InternalDescartesQL.g:2870:6: ( ruleObserveRelativeClause )
                     {
-                    // InternalDescartesQL.g:2780:6: ( ruleObserveRelativeClause )
-                    // InternalDescartesQL.g:2781:1: ruleObserveRelativeClause
+                    // InternalDescartesQL.g:2870:6: ( ruleObserveRelativeClause )
+                    // InternalDescartesQL.g:2871:1: ruleObserveRelativeClause
                     {
                      before(grammarAccess.getObservationClauseAccess().getObserveRelativeClauseParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -7784,10 +8082,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:2786:6: ( ruleObserveBetweenClause )
+                    // InternalDescartesQL.g:2876:6: ( ruleObserveBetweenClause )
                     {
-                    // InternalDescartesQL.g:2786:6: ( ruleObserveBetweenClause )
-                    // InternalDescartesQL.g:2787:1: ruleObserveBetweenClause
+                    // InternalDescartesQL.g:2876:6: ( ruleObserveBetweenClause )
+                    // InternalDescartesQL.g:2877:1: ruleObserveBetweenClause
                     {
                      before(grammarAccess.getObservationClauseAccess().getObserveBetweenClauseParserRuleCall_3()); 
                     pushFollow(FOLLOW_2);
@@ -7820,34 +8118,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveRelativeClause__TimeTargetAlternatives_1_0"
-    // InternalDescartesQL.g:2797:1: rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeClause ) );
+    // InternalDescartesQL.g:2887:1: rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeClause ) );
     public final void rule__ObserveRelativeClause__TimeTargetAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2801:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeClause ) )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            // InternalDescartesQL.g:2891:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeClause ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
 
-            if ( (LA11_0==RULE_STRING) ) {
-                alt11=1;
+            if ( (LA12_0==RULE_STRING) ) {
+                alt12=1;
             }
-            else if ( (LA11_0==RULE_INT) ) {
-                alt11=2;
+            else if ( (LA12_0==RULE_INT) ) {
+                alt12=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 12, 0, input);
 
                 throw nvae;
             }
-            switch (alt11) {
+            switch (alt12) {
                 case 1 :
-                    // InternalDescartesQL.g:2802:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2892:1: ( ruleAbsoluteTimeClause )
                     {
-                    // InternalDescartesQL.g:2802:1: ( ruleAbsoluteTimeClause )
-                    // InternalDescartesQL.g:2803:1: ruleAbsoluteTimeClause
+                    // InternalDescartesQL.g:2892:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2893:1: ruleAbsoluteTimeClause
                     {
                      before(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAbsoluteTimeClauseParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7863,10 +8161,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2808:6: ( ruleRelativeTimeClause )
+                    // InternalDescartesQL.g:2898:6: ( ruleRelativeTimeClause )
                     {
-                    // InternalDescartesQL.g:2808:6: ( ruleRelativeTimeClause )
-                    // InternalDescartesQL.g:2809:1: ruleRelativeTimeClause
+                    // InternalDescartesQL.g:2898:6: ( ruleRelativeTimeClause )
+                    // InternalDescartesQL.g:2899:1: ruleRelativeTimeClause
                     {
                      before(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetRelativeTimeClauseParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7899,34 +8197,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__StartingTimeAlternatives_1_0"
-    // InternalDescartesQL.g:2819:1: rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) );
+    // InternalDescartesQL.g:2909:1: rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) );
     public final void rule__ObserveBetweenClause__StartingTimeAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2823:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) )
-            int alt12=2;
-            int LA12_0 = input.LA(1);
+            // InternalDescartesQL.g:2913:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
 
-            if ( (LA12_0==RULE_STRING) ) {
-                alt12=1;
+            if ( (LA13_0==RULE_STRING) ) {
+                alt13=1;
             }
-            else if ( ((LA12_0>=32 && LA12_0<=33)) ) {
-                alt12=2;
+            else if ( ((LA13_0>=33 && LA13_0<=34)) ) {
+                alt13=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
-            switch (alt12) {
+            switch (alt13) {
                 case 1 :
-                    // InternalDescartesQL.g:2824:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2914:1: ( ruleAbsoluteTimeClause )
                     {
-                    // InternalDescartesQL.g:2824:1: ( ruleAbsoluteTimeClause )
-                    // InternalDescartesQL.g:2825:1: ruleAbsoluteTimeClause
+                    // InternalDescartesQL.g:2914:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2915:1: ruleAbsoluteTimeClause
                     {
                      before(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAbsoluteTimeClauseParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -7942,10 +8240,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2830:6: ( ruleRelativeTimeWithSignClause )
+                    // InternalDescartesQL.g:2920:6: ( ruleRelativeTimeWithSignClause )
                     {
-                    // InternalDescartesQL.g:2830:6: ( ruleRelativeTimeWithSignClause )
-                    // InternalDescartesQL.g:2831:1: ruleRelativeTimeWithSignClause
+                    // InternalDescartesQL.g:2920:6: ( ruleRelativeTimeWithSignClause )
+                    // InternalDescartesQL.g:2921:1: ruleRelativeTimeWithSignClause
                     {
                      before(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeRelativeTimeWithSignClauseParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -7978,34 +8276,34 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__EndingTimeAlternatives_3_0"
-    // InternalDescartesQL.g:2841:1: rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) );
+    // InternalDescartesQL.g:2931:1: rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 : ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) );
     public final void rule__ObserveBetweenClause__EndingTimeAlternatives_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2845:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // InternalDescartesQL.g:2935:1: ( ( ruleAbsoluteTimeClause ) | ( ruleRelativeTimeWithSignClause ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( (LA13_0==RULE_STRING) ) {
-                alt13=1;
+            if ( (LA14_0==RULE_STRING) ) {
+                alt14=1;
             }
-            else if ( ((LA13_0>=32 && LA13_0<=33)) ) {
-                alt13=2;
+            else if ( ((LA14_0>=33 && LA14_0<=34)) ) {
+                alt14=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt14) {
                 case 1 :
-                    // InternalDescartesQL.g:2846:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2936:1: ( ruleAbsoluteTimeClause )
                     {
-                    // InternalDescartesQL.g:2846:1: ( ruleAbsoluteTimeClause )
-                    // InternalDescartesQL.g:2847:1: ruleAbsoluteTimeClause
+                    // InternalDescartesQL.g:2936:1: ( ruleAbsoluteTimeClause )
+                    // InternalDescartesQL.g:2937:1: ruleAbsoluteTimeClause
                     {
                      before(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAbsoluteTimeClauseParserRuleCall_3_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -8021,10 +8319,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2852:6: ( ruleRelativeTimeWithSignClause )
+                    // InternalDescartesQL.g:2942:6: ( ruleRelativeTimeWithSignClause )
                     {
-                    // InternalDescartesQL.g:2852:6: ( ruleRelativeTimeWithSignClause )
-                    // InternalDescartesQL.g:2853:1: ruleRelativeTimeWithSignClause
+                    // InternalDescartesQL.g:2942:6: ( ruleRelativeTimeWithSignClause )
+                    // InternalDescartesQL.g:2943:1: ruleRelativeTimeWithSignClause
                     {
                      before(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeRelativeTimeWithSignClauseParserRuleCall_3_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -8057,38 +8355,38 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringClause__Alternatives_1"
-    // InternalDescartesQL.g:2865:1: rule__FilteringClause__Alternatives_1 : ( ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) ) | ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) ) );
+    // InternalDescartesQL.g:2955:1: rule__FilteringClause__Alternatives_1 : ( ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) ) | ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) ) );
     public final void rule__FilteringClause__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2869:1: ( ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) ) | ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) ) )
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // InternalDescartesQL.g:2959:1: ( ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) ) | ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) ) )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            if ( ((LA14_0>=RULE_INT && LA14_0<=RULE_DOUBLE)) ) {
-                alt14=1;
+            if ( (LA15_0==RULE_DOUBLE||LA15_0==RULE_INT) ) {
+                alt15=1;
             }
-            else if ( (LA14_0==RULE_STRING) ) {
-                alt14=2;
+            else if ( (LA15_0==RULE_STRING) ) {
+                alt15=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 15, 0, input);
 
                 throw nvae;
             }
-            switch (alt14) {
+            switch (alt15) {
                 case 1 :
-                    // InternalDescartesQL.g:2870:1: ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) )
+                    // InternalDescartesQL.g:2960:1: ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) )
                     {
-                    // InternalDescartesQL.g:2870:1: ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) )
-                    // InternalDescartesQL.g:2871:1: ( rule__FilteringClause__FilteringRuleAssignment_1_0 )
+                    // InternalDescartesQL.g:2960:1: ( ( rule__FilteringClause__FilteringRuleAssignment_1_0 ) )
+                    // InternalDescartesQL.g:2961:1: ( rule__FilteringClause__FilteringRuleAssignment_1_0 )
                     {
                      before(grammarAccess.getFilteringClauseAccess().getFilteringRuleAssignment_1_0()); 
-                    // InternalDescartesQL.g:2872:1: ( rule__FilteringClause__FilteringRuleAssignment_1_0 )
-                    // InternalDescartesQL.g:2872:2: rule__FilteringClause__FilteringRuleAssignment_1_0
+                    // InternalDescartesQL.g:2962:1: ( rule__FilteringClause__FilteringRuleAssignment_1_0 )
+                    // InternalDescartesQL.g:2962:2: rule__FilteringClause__FilteringRuleAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__FilteringClause__FilteringRuleAssignment_1_0();
@@ -8106,14 +8404,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2876:6: ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) )
+                    // InternalDescartesQL.g:2966:6: ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) )
                     {
-                    // InternalDescartesQL.g:2876:6: ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) )
-                    // InternalDescartesQL.g:2877:1: ( rule__FilteringClause__FilteringStrategyAssignment_1_1 )
+                    // InternalDescartesQL.g:2966:6: ( ( rule__FilteringClause__FilteringStrategyAssignment_1_1 ) )
+                    // InternalDescartesQL.g:2967:1: ( rule__FilteringClause__FilteringStrategyAssignment_1_1 )
                     {
                      before(grammarAccess.getFilteringClauseAccess().getFilteringStrategyAssignment_1_1()); 
-                    // InternalDescartesQL.g:2878:1: ( rule__FilteringClause__FilteringStrategyAssignment_1_1 )
-                    // InternalDescartesQL.g:2878:2: rule__FilteringClause__FilteringStrategyAssignment_1_1
+                    // InternalDescartesQL.g:2968:1: ( rule__FilteringClause__FilteringStrategyAssignment_1_1 )
+                    // InternalDescartesQL.g:2968:2: rule__FilteringClause__FilteringStrategyAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__FilteringClause__FilteringStrategyAssignment_1_1();
@@ -8148,58 +8446,58 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0"
-    // InternalDescartesQL.g:2887:1: rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) );
+    // InternalDescartesQL.g:2977:1: rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) );
     public final void rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2891:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) )
-            int alt15=4;
+            // InternalDescartesQL.g:2981:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) )
+            int alt16=4;
             switch ( input.LA(1) ) {
             case RULE_INT:
                 {
-                int LA15_1 = input.LA(2);
+                int LA16_1 = input.LA(2);
 
-                if ( (LA15_1==20||LA15_1==53) ) {
-                    alt15=2;
+                if ( (LA16_1==21||LA16_1==57) ) {
+                    alt16=2;
                 }
-                else if ( (LA15_1==69) ) {
-                    alt15=1;
+                else if ( (LA16_1==73) ) {
+                    alt16=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("", 15, 1, input);
+                        new NoViableAltException("", 16, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 15:
             case 16:
             case 17:
+            case 18:
                 {
-                alt15=3;
+                alt16=3;
                 }
                 break;
             case RULE_ID:
                 {
-                alt15=4;
+                alt16=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
+                    new NoViableAltException("", 16, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt15) {
+            switch (alt16) {
                 case 1 :
-                    // InternalDescartesQL.g:2892:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:2982:1: ( ruleIntervalVariationClause )
                     {
-                    // InternalDescartesQL.g:2892:1: ( ruleIntervalVariationClause )
-                    // InternalDescartesQL.g:2893:1: ruleIntervalVariationClause
+                    // InternalDescartesQL.g:2982:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:2983:1: ruleIntervalVariationClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseIntervalVariationClauseParserRuleCall_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -8215,10 +8513,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2898:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:2988:6: ( ruleValueVariationClause )
                     {
-                    // InternalDescartesQL.g:2898:6: ( ruleValueVariationClause )
-                    // InternalDescartesQL.g:2899:1: ruleValueVariationClause
+                    // InternalDescartesQL.g:2988:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:2989:1: ruleValueVariationClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseValueVariationClauseParserRuleCall_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -8234,10 +8532,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2904:6: ( ruleArithmeticClause )
+                    // InternalDescartesQL.g:2994:6: ( ruleArithmeticClause )
                     {
-                    // InternalDescartesQL.g:2904:6: ( ruleArithmeticClause )
-                    // InternalDescartesQL.g:2905:1: ruleArithmeticClause
+                    // InternalDescartesQL.g:2994:6: ( ruleArithmeticClause )
+                    // InternalDescartesQL.g:2995:1: ruleArithmeticClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseArithmeticClauseParserRuleCall_1_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -8253,10 +8551,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:2910:6: ( ruleVariationInstruction )
+                    // InternalDescartesQL.g:3000:6: ( ruleVariationInstruction )
                     {
-                    // InternalDescartesQL.g:2910:6: ( ruleVariationInstruction )
-                    // InternalDescartesQL.g:2911:1: ruleVariationInstruction
+                    // InternalDescartesQL.g:3000:6: ( ruleVariationInstruction )
+                    // InternalDescartesQL.g:3001:1: ruleVariationInstruction
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseVariationInstructionParserRuleCall_1_0_3()); 
                     pushFollow(FOLLOW_2);
@@ -8289,58 +8587,58 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0"
-    // InternalDescartesQL.g:2921:1: rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) );
+    // InternalDescartesQL.g:3011:1: rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 : ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) );
     public final void rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2925:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) )
-            int alt16=4;
+            // InternalDescartesQL.g:3015:1: ( ( ruleIntervalVariationClause ) | ( ruleValueVariationClause ) | ( ruleArithmeticClause ) | ( ruleVariationInstruction ) )
+            int alt17=4;
             switch ( input.LA(1) ) {
             case RULE_INT:
                 {
-                int LA16_1 = input.LA(2);
+                int LA17_1 = input.LA(2);
 
-                if ( ((LA16_1>=RULE_ID && LA16_1<=RULE_INT)||(LA16_1>=15 && LA16_1<=17)||LA16_1==20||LA16_1==53) ) {
-                    alt16=2;
+                if ( ((LA17_1>=RULE_ID && LA17_1<=RULE_INT)||(LA17_1>=16 && LA17_1<=18)||LA17_1==21||LA17_1==57) ) {
+                    alt17=2;
                 }
-                else if ( (LA16_1==69) ) {
-                    alt16=1;
+                else if ( (LA17_1==73) ) {
+                    alt17=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("", 16, 1, input);
+                        new NoViableAltException("", 17, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 15:
             case 16:
             case 17:
+            case 18:
                 {
-                alt16=3;
+                alt17=3;
                 }
                 break;
             case RULE_ID:
                 {
-                alt16=4;
+                alt17=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt16) {
+            switch (alt17) {
                 case 1 :
-                    // InternalDescartesQL.g:2926:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:3016:1: ( ruleIntervalVariationClause )
                     {
-                    // InternalDescartesQL.g:2926:1: ( ruleIntervalVariationClause )
-                    // InternalDescartesQL.g:2927:1: ruleIntervalVariationClause
+                    // InternalDescartesQL.g:3016:1: ( ruleIntervalVariationClause )
+                    // InternalDescartesQL.g:3017:1: ruleIntervalVariationClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseIntervalVariationClauseParserRuleCall_2_1_0_0()); 
                     pushFollow(FOLLOW_2);
@@ -8356,10 +8654,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2932:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:3022:6: ( ruleValueVariationClause )
                     {
-                    // InternalDescartesQL.g:2932:6: ( ruleValueVariationClause )
-                    // InternalDescartesQL.g:2933:1: ruleValueVariationClause
+                    // InternalDescartesQL.g:3022:6: ( ruleValueVariationClause )
+                    // InternalDescartesQL.g:3023:1: ruleValueVariationClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseValueVariationClauseParserRuleCall_2_1_0_1()); 
                     pushFollow(FOLLOW_2);
@@ -8375,10 +8673,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2938:6: ( ruleArithmeticClause )
+                    // InternalDescartesQL.g:3028:6: ( ruleArithmeticClause )
                     {
-                    // InternalDescartesQL.g:2938:6: ( ruleArithmeticClause )
-                    // InternalDescartesQL.g:2939:1: ruleArithmeticClause
+                    // InternalDescartesQL.g:3028:6: ( ruleArithmeticClause )
+                    // InternalDescartesQL.g:3029:1: ruleArithmeticClause
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseArithmeticClauseParserRuleCall_2_1_0_2()); 
                     pushFollow(FOLLOW_2);
@@ -8394,10 +8692,10 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:2944:6: ( ruleVariationInstruction )
+                    // InternalDescartesQL.g:3034:6: ( ruleVariationInstruction )
                     {
-                    // InternalDescartesQL.g:2944:6: ( ruleVariationInstruction )
-                    // InternalDescartesQL.g:2945:1: ruleVariationInstruction
+                    // InternalDescartesQL.g:3034:6: ( ruleVariationInstruction )
+                    // InternalDescartesQL.g:3035:1: ruleVariationInstruction
                     {
                      before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseVariationInstructionParserRuleCall_2_1_0_3()); 
                     pushFollow(FOLLOW_2);
@@ -8430,46 +8728,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ArithmeticClause__ModeAlternatives_0_0"
-    // InternalDescartesQL.g:2955:1: rule__ArithmeticClause__ModeAlternatives_0_0 : ( ( 'ADD' ) | ( 'SUB' ) | ( 'MULTIPLY' ) );
+    // InternalDescartesQL.g:3045:1: rule__ArithmeticClause__ModeAlternatives_0_0 : ( ( 'ADD' ) | ( 'SUB' ) | ( 'MULTIPLY' ) );
     public final void rule__ArithmeticClause__ModeAlternatives_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2959:1: ( ( 'ADD' ) | ( 'SUB' ) | ( 'MULTIPLY' ) )
-            int alt17=3;
+            // InternalDescartesQL.g:3049:1: ( ( 'ADD' ) | ( 'SUB' ) | ( 'MULTIPLY' ) )
+            int alt18=3;
             switch ( input.LA(1) ) {
-            case 15:
+            case 16:
                 {
-                alt17=1;
+                alt18=1;
                 }
                 break;
-            case 16:
+            case 17:
                 {
-                alt17=2;
+                alt18=2;
                 }
                 break;
-            case 17:
+            case 18:
                 {
-                alt17=3;
+                alt18=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt17) {
+            switch (alt18) {
                 case 1 :
-                    // InternalDescartesQL.g:2960:1: ( 'ADD' )
+                    // InternalDescartesQL.g:3050:1: ( 'ADD' )
                     {
-                    // InternalDescartesQL.g:2960:1: ( 'ADD' )
-                    // InternalDescartesQL.g:2961:1: 'ADD'
+                    // InternalDescartesQL.g:3050:1: ( 'ADD' )
+                    // InternalDescartesQL.g:3051:1: 'ADD'
                     {
                      before(grammarAccess.getArithmeticClauseAccess().getModeADDKeyword_0_0_0()); 
-                    match(input,15,FOLLOW_2); 
+                    match(input,16,FOLLOW_2); 
                      after(grammarAccess.getArithmeticClauseAccess().getModeADDKeyword_0_0_0()); 
 
                     }
@@ -8478,13 +8776,13 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:2968:6: ( 'SUB' )
+                    // InternalDescartesQL.g:3058:6: ( 'SUB' )
                     {
-                    // InternalDescartesQL.g:2968:6: ( 'SUB' )
-                    // InternalDescartesQL.g:2969:1: 'SUB'
+                    // InternalDescartesQL.g:3058:6: ( 'SUB' )
+                    // InternalDescartesQL.g:3059:1: 'SUB'
                     {
                      before(grammarAccess.getArithmeticClauseAccess().getModeSUBKeyword_0_0_1()); 
-                    match(input,16,FOLLOW_2); 
+                    match(input,17,FOLLOW_2); 
                      after(grammarAccess.getArithmeticClauseAccess().getModeSUBKeyword_0_0_1()); 
 
                     }
@@ -8493,13 +8791,13 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:2976:6: ( 'MULTIPLY' )
+                    // InternalDescartesQL.g:3066:6: ( 'MULTIPLY' )
                     {
-                    // InternalDescartesQL.g:2976:6: ( 'MULTIPLY' )
-                    // InternalDescartesQL.g:2977:1: 'MULTIPLY'
+                    // InternalDescartesQL.g:3066:6: ( 'MULTIPLY' )
+                    // InternalDescartesQL.g:3067:1: 'MULTIPLY'
                     {
                      before(grammarAccess.getArithmeticClauseAccess().getModeMULTIPLYKeyword_0_0_2()); 
-                    match(input,17,FOLLOW_2); 
+                    match(input,18,FOLLOW_2); 
                      after(grammarAccess.getArithmeticClauseAccess().getModeMULTIPLYKeyword_0_0_2()); 
 
                     }
@@ -8525,38 +8823,38 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VariableValue__Alternatives"
-    // InternalDescartesQL.g:2989:1: rule__VariableValue__Alternatives : ( ( ( rule__VariableValue__IntValueAssignment_0 ) ) | ( ( rule__VariableValue__DoubleValueAssignment_1 ) ) );
+    // InternalDescartesQL.g:3079:1: rule__VariableValue__Alternatives : ( ( ( rule__VariableValue__IntValueAssignment_0 ) ) | ( ( rule__VariableValue__DoubleValueAssignment_1 ) ) );
     public final void rule__VariableValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:2993:1: ( ( ( rule__VariableValue__IntValueAssignment_0 ) ) | ( ( rule__VariableValue__DoubleValueAssignment_1 ) ) )
-            int alt18=2;
-            int LA18_0 = input.LA(1);
+            // InternalDescartesQL.g:3083:1: ( ( ( rule__VariableValue__IntValueAssignment_0 ) ) | ( ( rule__VariableValue__DoubleValueAssignment_1 ) ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
 
-            if ( (LA18_0==RULE_INT) ) {
-                alt18=1;
+            if ( (LA19_0==RULE_INT) ) {
+                alt19=1;
             }
-            else if ( (LA18_0==RULE_DOUBLE) ) {
-                alt18=2;
+            else if ( (LA19_0==RULE_DOUBLE) ) {
+                alt19=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
-            switch (alt18) {
+            switch (alt19) {
                 case 1 :
-                    // InternalDescartesQL.g:2994:1: ( ( rule__VariableValue__IntValueAssignment_0 ) )
+                    // InternalDescartesQL.g:3084:1: ( ( rule__VariableValue__IntValueAssignment_0 ) )
                     {
-                    // InternalDescartesQL.g:2994:1: ( ( rule__VariableValue__IntValueAssignment_0 ) )
-                    // InternalDescartesQL.g:2995:1: ( rule__VariableValue__IntValueAssignment_0 )
+                    // InternalDescartesQL.g:3084:1: ( ( rule__VariableValue__IntValueAssignment_0 ) )
+                    // InternalDescartesQL.g:3085:1: ( rule__VariableValue__IntValueAssignment_0 )
                     {
                      before(grammarAccess.getVariableValueAccess().getIntValueAssignment_0()); 
-                    // InternalDescartesQL.g:2996:1: ( rule__VariableValue__IntValueAssignment_0 )
-                    // InternalDescartesQL.g:2996:2: rule__VariableValue__IntValueAssignment_0
+                    // InternalDescartesQL.g:3086:1: ( rule__VariableValue__IntValueAssignment_0 )
+                    // InternalDescartesQL.g:3086:2: rule__VariableValue__IntValueAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__VariableValue__IntValueAssignment_0();
@@ -8574,14 +8872,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3000:6: ( ( rule__VariableValue__DoubleValueAssignment_1 ) )
+                    // InternalDescartesQL.g:3090:6: ( ( rule__VariableValue__DoubleValueAssignment_1 ) )
                     {
-                    // InternalDescartesQL.g:3000:6: ( ( rule__VariableValue__DoubleValueAssignment_1 ) )
-                    // InternalDescartesQL.g:3001:1: ( rule__VariableValue__DoubleValueAssignment_1 )
+                    // InternalDescartesQL.g:3090:6: ( ( rule__VariableValue__DoubleValueAssignment_1 ) )
+                    // InternalDescartesQL.g:3091:1: ( rule__VariableValue__DoubleValueAssignment_1 )
                     {
                      before(grammarAccess.getVariableValueAccess().getDoubleValueAssignment_1()); 
-                    // InternalDescartesQL.g:3002:1: ( rule__VariableValue__DoubleValueAssignment_1 )
-                    // InternalDescartesQL.g:3002:2: rule__VariableValue__DoubleValueAssignment_1
+                    // InternalDescartesQL.g:3092:1: ( rule__VariableValue__DoubleValueAssignment_1 )
+                    // InternalDescartesQL.g:3092:2: rule__VariableValue__DoubleValueAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__VariableValue__DoubleValueAssignment_1();
@@ -8616,59 +8914,59 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Comparator__Alternatives"
-    // InternalDescartesQL.g:3011:1: rule__Comparator__Alternatives : ( ( ( '<' ) ) | ( ( '<=' ) ) | ( ( '>' ) ) | ( ( '>=' ) ) | ( ( '==' ) ) );
+    // InternalDescartesQL.g:3101:1: rule__Comparator__Alternatives : ( ( ( '<' ) ) | ( ( '<=' ) ) | ( ( '>' ) ) | ( ( '>=' ) ) | ( ( '==' ) ) );
     public final void rule__Comparator__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3015:1: ( ( ( '<' ) ) | ( ( '<=' ) ) | ( ( '>' ) ) | ( ( '>=' ) ) | ( ( '==' ) ) )
-            int alt19=5;
+            // InternalDescartesQL.g:3105:1: ( ( ( '<' ) ) | ( ( '<=' ) ) | ( ( '>' ) ) | ( ( '>=' ) ) | ( ( '==' ) ) )
+            int alt20=5;
             switch ( input.LA(1) ) {
-            case 18:
-                {
-                alt19=1;
-                }
-                break;
             case 19:
                 {
-                alt19=2;
+                alt20=1;
                 }
                 break;
             case 20:
                 {
-                alt19=3;
+                alt20=2;
                 }
                 break;
             case 21:
                 {
-                alt19=4;
+                alt20=3;
                 }
                 break;
             case 22:
                 {
-                alt19=5;
+                alt20=4;
+                }
+                break;
+            case 23:
+                {
+                alt20=5;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt19) {
+            switch (alt20) {
                 case 1 :
-                    // InternalDescartesQL.g:3016:1: ( ( '<' ) )
+                    // InternalDescartesQL.g:3106:1: ( ( '<' ) )
                     {
-                    // InternalDescartesQL.g:3016:1: ( ( '<' ) )
-                    // InternalDescartesQL.g:3017:1: ( '<' )
+                    // InternalDescartesQL.g:3106:1: ( ( '<' ) )
+                    // InternalDescartesQL.g:3107:1: ( '<' )
                     {
                      before(grammarAccess.getComparatorAccess().getLessEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3018:1: ( '<' )
-                    // InternalDescartesQL.g:3018:3: '<'
+                    // InternalDescartesQL.g:3108:1: ( '<' )
+                    // InternalDescartesQL.g:3108:3: '<'
                     {
-                    match(input,18,FOLLOW_2); 
+                    match(input,19,FOLLOW_2); 
 
                     }
 
@@ -8680,16 +8978,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3023:6: ( ( '<=' ) )
+                    // InternalDescartesQL.g:3113:6: ( ( '<=' ) )
                     {
-                    // InternalDescartesQL.g:3023:6: ( ( '<=' ) )
-                    // InternalDescartesQL.g:3024:1: ( '<=' )
+                    // InternalDescartesQL.g:3113:6: ( ( '<=' ) )
+                    // InternalDescartesQL.g:3114:1: ( '<=' )
                     {
                      before(grammarAccess.getComparatorAccess().getLessEqualEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3025:1: ( '<=' )
-                    // InternalDescartesQL.g:3025:3: '<='
+                    // InternalDescartesQL.g:3115:1: ( '<=' )
+                    // InternalDescartesQL.g:3115:3: '<='
                     {
-                    match(input,19,FOLLOW_2); 
+                    match(input,20,FOLLOW_2); 
 
                     }
 
@@ -8701,16 +8999,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:3030:6: ( ( '>' ) )
+                    // InternalDescartesQL.g:3120:6: ( ( '>' ) )
                     {
-                    // InternalDescartesQL.g:3030:6: ( ( '>' ) )
-                    // InternalDescartesQL.g:3031:1: ( '>' )
+                    // InternalDescartesQL.g:3120:6: ( ( '>' ) )
+                    // InternalDescartesQL.g:3121:1: ( '>' )
                     {
                      before(grammarAccess.getComparatorAccess().getGreaterEnumLiteralDeclaration_2()); 
-                    // InternalDescartesQL.g:3032:1: ( '>' )
-                    // InternalDescartesQL.g:3032:3: '>'
+                    // InternalDescartesQL.g:3122:1: ( '>' )
+                    // InternalDescartesQL.g:3122:3: '>'
                     {
-                    match(input,20,FOLLOW_2); 
+                    match(input,21,FOLLOW_2); 
 
                     }
 
@@ -8722,16 +9020,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:3037:6: ( ( '>=' ) )
+                    // InternalDescartesQL.g:3127:6: ( ( '>=' ) )
                     {
-                    // InternalDescartesQL.g:3037:6: ( ( '>=' ) )
-                    // InternalDescartesQL.g:3038:1: ( '>=' )
+                    // InternalDescartesQL.g:3127:6: ( ( '>=' ) )
+                    // InternalDescartesQL.g:3128:1: ( '>=' )
                     {
                      before(grammarAccess.getComparatorAccess().getGreaterEqualEnumLiteralDeclaration_3()); 
-                    // InternalDescartesQL.g:3039:1: ( '>=' )
-                    // InternalDescartesQL.g:3039:3: '>='
+                    // InternalDescartesQL.g:3129:1: ( '>=' )
+                    // InternalDescartesQL.g:3129:3: '>='
                     {
-                    match(input,21,FOLLOW_2); 
+                    match(input,22,FOLLOW_2); 
 
                     }
 
@@ -8743,16 +9041,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 5 :
-                    // InternalDescartesQL.g:3044:6: ( ( '==' ) )
+                    // InternalDescartesQL.g:3134:6: ( ( '==' ) )
                     {
-                    // InternalDescartesQL.g:3044:6: ( ( '==' ) )
-                    // InternalDescartesQL.g:3045:1: ( '==' )
+                    // InternalDescartesQL.g:3134:6: ( ( '==' ) )
+                    // InternalDescartesQL.g:3135:1: ( '==' )
                     {
                      before(grammarAccess.getComparatorAccess().getEqualEnumLiteralDeclaration_4()); 
-                    // InternalDescartesQL.g:3046:1: ( '==' )
-                    // InternalDescartesQL.g:3046:3: '=='
+                    // InternalDescartesQL.g:3136:1: ( '==' )
+                    // InternalDescartesQL.g:3136:3: '=='
                     {
-                    match(input,22,FOLLOW_2); 
+                    match(input,23,FOLLOW_2); 
 
                     }
 
@@ -8781,40 +9079,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Currency__Alternatives"
-    // InternalDescartesQL.g:3056:1: rule__Currency__Alternatives : ( ( ( 'EUR' ) ) | ( ( 'USD' ) ) );
+    // InternalDescartesQL.g:3146:1: rule__Currency__Alternatives : ( ( ( 'EUR' ) ) | ( ( 'USD' ) ) );
     public final void rule__Currency__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3060:1: ( ( ( 'EUR' ) ) | ( ( 'USD' ) ) )
-            int alt20=2;
-            int LA20_0 = input.LA(1);
+            // InternalDescartesQL.g:3150:1: ( ( ( 'EUR' ) ) | ( ( 'USD' ) ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            if ( (LA20_0==23) ) {
-                alt20=1;
+            if ( (LA21_0==24) ) {
+                alt21=1;
             }
-            else if ( (LA20_0==24) ) {
-                alt20=2;
+            else if ( (LA21_0==25) ) {
+                alt21=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
-            switch (alt20) {
+            switch (alt21) {
                 case 1 :
-                    // InternalDescartesQL.g:3061:1: ( ( 'EUR' ) )
+                    // InternalDescartesQL.g:3151:1: ( ( 'EUR' ) )
                     {
-                    // InternalDescartesQL.g:3061:1: ( ( 'EUR' ) )
-                    // InternalDescartesQL.g:3062:1: ( 'EUR' )
+                    // InternalDescartesQL.g:3151:1: ( ( 'EUR' ) )
+                    // InternalDescartesQL.g:3152:1: ( 'EUR' )
                     {
                      before(grammarAccess.getCurrencyAccess().getEuroEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3063:1: ( 'EUR' )
-                    // InternalDescartesQL.g:3063:3: 'EUR'
+                    // InternalDescartesQL.g:3153:1: ( 'EUR' )
+                    // InternalDescartesQL.g:3153:3: 'EUR'
                     {
-                    match(input,23,FOLLOW_2); 
+                    match(input,24,FOLLOW_2); 
 
                     }
 
@@ -8826,16 +9124,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3068:6: ( ( 'USD' ) )
+                    // InternalDescartesQL.g:3158:6: ( ( 'USD' ) )
                     {
-                    // InternalDescartesQL.g:3068:6: ( ( 'USD' ) )
-                    // InternalDescartesQL.g:3069:1: ( 'USD' )
+                    // InternalDescartesQL.g:3158:6: ( ( 'USD' ) )
+                    // InternalDescartesQL.g:3159:1: ( 'USD' )
                     {
                      before(grammarAccess.getCurrencyAccess().getUsDollarEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3070:1: ( 'USD' )
-                    // InternalDescartesQL.g:3070:3: 'USD'
+                    // InternalDescartesQL.g:3160:1: ( 'USD' )
+                    // InternalDescartesQL.g:3160:3: 'USD'
                     {
-                    match(input,24,FOLLOW_2); 
+                    match(input,25,FOLLOW_2); 
 
                     }
 
@@ -8864,49 +9162,49 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConjunction__Alternatives"
-    // InternalDescartesQL.g:3080:1: rule__FilterConjunction__Alternatives : ( ( ( 'AND' ) ) | ( ( 'XOR' ) ) | ( ( 'OR' ) ) );
+    // InternalDescartesQL.g:3170:1: rule__FilterConjunction__Alternatives : ( ( ( 'AND' ) ) | ( ( 'XOR' ) ) | ( ( 'OR' ) ) );
     public final void rule__FilterConjunction__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3084:1: ( ( ( 'AND' ) ) | ( ( 'XOR' ) ) | ( ( 'OR' ) ) )
-            int alt21=3;
+            // InternalDescartesQL.g:3174:1: ( ( ( 'AND' ) ) | ( ( 'XOR' ) ) | ( ( 'OR' ) ) )
+            int alt22=3;
             switch ( input.LA(1) ) {
-            case 25:
+            case 26:
                 {
-                alt21=1;
+                alt22=1;
                 }
                 break;
-            case 26:
+            case 27:
                 {
-                alt21=2;
+                alt22=2;
                 }
                 break;
-            case 27:
+            case 28:
                 {
-                alt21=3;
+                alt22=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt21) {
+            switch (alt22) {
                 case 1 :
-                    // InternalDescartesQL.g:3085:1: ( ( 'AND' ) )
+                    // InternalDescartesQL.g:3175:1: ( ( 'AND' ) )
                     {
-                    // InternalDescartesQL.g:3085:1: ( ( 'AND' ) )
-                    // InternalDescartesQL.g:3086:1: ( 'AND' )
+                    // InternalDescartesQL.g:3175:1: ( ( 'AND' ) )
+                    // InternalDescartesQL.g:3176:1: ( 'AND' )
                     {
                      before(grammarAccess.getFilterConjunctionAccess().getANDEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3087:1: ( 'AND' )
-                    // InternalDescartesQL.g:3087:3: 'AND'
+                    // InternalDescartesQL.g:3177:1: ( 'AND' )
+                    // InternalDescartesQL.g:3177:3: 'AND'
                     {
-                    match(input,25,FOLLOW_2); 
+                    match(input,26,FOLLOW_2); 
 
                     }
 
@@ -8918,16 +9216,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3092:6: ( ( 'XOR' ) )
+                    // InternalDescartesQL.g:3182:6: ( ( 'XOR' ) )
                     {
-                    // InternalDescartesQL.g:3092:6: ( ( 'XOR' ) )
-                    // InternalDescartesQL.g:3093:1: ( 'XOR' )
+                    // InternalDescartesQL.g:3182:6: ( ( 'XOR' ) )
+                    // InternalDescartesQL.g:3183:1: ( 'XOR' )
                     {
                      before(grammarAccess.getFilterConjunctionAccess().getXOREnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3094:1: ( 'XOR' )
-                    // InternalDescartesQL.g:3094:3: 'XOR'
+                    // InternalDescartesQL.g:3184:1: ( 'XOR' )
+                    // InternalDescartesQL.g:3184:3: 'XOR'
                     {
-                    match(input,26,FOLLOW_2); 
+                    match(input,27,FOLLOW_2); 
 
                     }
 
@@ -8939,16 +9237,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:3099:6: ( ( 'OR' ) )
+                    // InternalDescartesQL.g:3189:6: ( ( 'OR' ) )
                     {
-                    // InternalDescartesQL.g:3099:6: ( ( 'OR' ) )
-                    // InternalDescartesQL.g:3100:1: ( 'OR' )
+                    // InternalDescartesQL.g:3189:6: ( ( 'OR' ) )
+                    // InternalDescartesQL.g:3190:1: ( 'OR' )
                     {
                      before(grammarAccess.getFilterConjunctionAccess().getOREnumLiteralDeclaration_2()); 
-                    // InternalDescartesQL.g:3101:1: ( 'OR' )
-                    // InternalDescartesQL.g:3101:3: 'OR'
+                    // InternalDescartesQL.g:3191:1: ( 'OR' )
+                    // InternalDescartesQL.g:3191:3: 'OR'
                     {
-                    match(input,27,FOLLOW_2); 
+                    match(input,28,FOLLOW_2); 
 
                     }
 
@@ -8977,40 +9275,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConditionType__Alternatives"
-    // InternalDescartesQL.g:3111:1: rule__FilterConditionType__Alternatives : ( ( ( 'INSTANCEOF' ) ) | ( ( 'CLASSREGEX' ) ) );
+    // InternalDescartesQL.g:3201:1: rule__FilterConditionType__Alternatives : ( ( ( 'INSTANCEOF' ) ) | ( ( 'CLASSREGEX' ) ) );
     public final void rule__FilterConditionType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3115:1: ( ( ( 'INSTANCEOF' ) ) | ( ( 'CLASSREGEX' ) ) )
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            // InternalDescartesQL.g:3205:1: ( ( ( 'INSTANCEOF' ) ) | ( ( 'CLASSREGEX' ) ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA22_0==28) ) {
-                alt22=1;
+            if ( (LA23_0==29) ) {
+                alt23=1;
             }
-            else if ( (LA22_0==29) ) {
-                alt22=2;
+            else if ( (LA23_0==30) ) {
+                alt23=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt22) {
+            switch (alt23) {
                 case 1 :
-                    // InternalDescartesQL.g:3116:1: ( ( 'INSTANCEOF' ) )
+                    // InternalDescartesQL.g:3206:1: ( ( 'INSTANCEOF' ) )
                     {
-                    // InternalDescartesQL.g:3116:1: ( ( 'INSTANCEOF' ) )
-                    // InternalDescartesQL.g:3117:1: ( 'INSTANCEOF' )
+                    // InternalDescartesQL.g:3206:1: ( ( 'INSTANCEOF' ) )
+                    // InternalDescartesQL.g:3207:1: ( 'INSTANCEOF' )
                     {
                      before(grammarAccess.getFilterConditionTypeAccess().getINSTANCEOFEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3118:1: ( 'INSTANCEOF' )
-                    // InternalDescartesQL.g:3118:3: 'INSTANCEOF'
+                    // InternalDescartesQL.g:3208:1: ( 'INSTANCEOF' )
+                    // InternalDescartesQL.g:3208:3: 'INSTANCEOF'
                     {
-                    match(input,28,FOLLOW_2); 
+                    match(input,29,FOLLOW_2); 
 
                     }
 
@@ -9022,16 +9320,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3123:6: ( ( 'CLASSREGEX' ) )
+                    // InternalDescartesQL.g:3213:6: ( ( 'CLASSREGEX' ) )
                     {
-                    // InternalDescartesQL.g:3123:6: ( ( 'CLASSREGEX' ) )
-                    // InternalDescartesQL.g:3124:1: ( 'CLASSREGEX' )
+                    // InternalDescartesQL.g:3213:6: ( ( 'CLASSREGEX' ) )
+                    // InternalDescartesQL.g:3214:1: ( 'CLASSREGEX' )
                     {
                      before(grammarAccess.getFilterConditionTypeAccess().getCLASSREGEXEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3125:1: ( 'CLASSREGEX' )
-                    // InternalDescartesQL.g:3125:3: 'CLASSREGEX'
+                    // InternalDescartesQL.g:3215:1: ( 'CLASSREGEX' )
+                    // InternalDescartesQL.g:3215:3: 'CLASSREGEX'
                     {
-                    match(input,29,FOLLOW_2); 
+                    match(input,30,FOLLOW_2); 
 
                     }
 
@@ -9060,40 +9358,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveRelativeDirectionType__Alternatives"
-    // InternalDescartesQL.g:3135:1: rule__ObserveRelativeDirectionType__Alternatives : ( ( ( 'SINCE' ) ) | ( ( 'NEXT' ) ) );
+    // InternalDescartesQL.g:3225:1: rule__ObserveRelativeDirectionType__Alternatives : ( ( ( 'SINCE' ) ) | ( ( 'NEXT' ) ) );
     public final void rule__ObserveRelativeDirectionType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3139:1: ( ( ( 'SINCE' ) ) | ( ( 'NEXT' ) ) )
-            int alt23=2;
-            int LA23_0 = input.LA(1);
+            // InternalDescartesQL.g:3229:1: ( ( ( 'SINCE' ) ) | ( ( 'NEXT' ) ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA23_0==30) ) {
-                alt23=1;
+            if ( (LA24_0==31) ) {
+                alt24=1;
             }
-            else if ( (LA23_0==31) ) {
-                alt23=2;
+            else if ( (LA24_0==32) ) {
+                alt24=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt24) {
                 case 1 :
-                    // InternalDescartesQL.g:3140:1: ( ( 'SINCE' ) )
+                    // InternalDescartesQL.g:3230:1: ( ( 'SINCE' ) )
                     {
-                    // InternalDescartesQL.g:3140:1: ( ( 'SINCE' ) )
-                    // InternalDescartesQL.g:3141:1: ( 'SINCE' )
+                    // InternalDescartesQL.g:3230:1: ( ( 'SINCE' ) )
+                    // InternalDescartesQL.g:3231:1: ( 'SINCE' )
                     {
                      before(grammarAccess.getObserveRelativeDirectionTypeAccess().getSINCEEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3142:1: ( 'SINCE' )
-                    // InternalDescartesQL.g:3142:3: 'SINCE'
+                    // InternalDescartesQL.g:3232:1: ( 'SINCE' )
+                    // InternalDescartesQL.g:3232:3: 'SINCE'
                     {
-                    match(input,30,FOLLOW_2); 
+                    match(input,31,FOLLOW_2); 
 
                     }
 
@@ -9105,16 +9403,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3147:6: ( ( 'NEXT' ) )
+                    // InternalDescartesQL.g:3237:6: ( ( 'NEXT' ) )
                     {
-                    // InternalDescartesQL.g:3147:6: ( ( 'NEXT' ) )
-                    // InternalDescartesQL.g:3148:1: ( 'NEXT' )
+                    // InternalDescartesQL.g:3237:6: ( ( 'NEXT' ) )
+                    // InternalDescartesQL.g:3238:1: ( 'NEXT' )
                     {
                      before(grammarAccess.getObserveRelativeDirectionTypeAccess().getNEXTEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3149:1: ( 'NEXT' )
-                    // InternalDescartesQL.g:3149:3: 'NEXT'
+                    // InternalDescartesQL.g:3239:1: ( 'NEXT' )
+                    // InternalDescartesQL.g:3239:3: 'NEXT'
                     {
-                    match(input,31,FOLLOW_2); 
+                    match(input,32,FOLLOW_2); 
 
                     }
 
@@ -9143,40 +9441,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeSignType__Alternatives"
-    // InternalDescartesQL.g:3159:1: rule__RelativeTimeSignType__Alternatives : ( ( ( '-' ) ) | ( ( '+' ) ) );
+    // InternalDescartesQL.g:3249:1: rule__RelativeTimeSignType__Alternatives : ( ( ( '-' ) ) | ( ( '+' ) ) );
     public final void rule__RelativeTimeSignType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3163:1: ( ( ( '-' ) ) | ( ( '+' ) ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalDescartesQL.g:3253:1: ( ( ( '-' ) ) | ( ( '+' ) ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            if ( (LA24_0==32) ) {
-                alt24=1;
+            if ( (LA25_0==33) ) {
+                alt25=1;
             }
-            else if ( (LA24_0==33) ) {
-                alt24=2;
+            else if ( (LA25_0==34) ) {
+                alt25=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt25) {
                 case 1 :
-                    // InternalDescartesQL.g:3164:1: ( ( '-' ) )
+                    // InternalDescartesQL.g:3254:1: ( ( '-' ) )
                     {
-                    // InternalDescartesQL.g:3164:1: ( ( '-' ) )
-                    // InternalDescartesQL.g:3165:1: ( '-' )
+                    // InternalDescartesQL.g:3254:1: ( ( '-' ) )
+                    // InternalDescartesQL.g:3255:1: ( '-' )
                     {
                      before(grammarAccess.getRelativeTimeSignTypeAccess().getMINUSEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3166:1: ( '-' )
-                    // InternalDescartesQL.g:3166:3: '-'
+                    // InternalDescartesQL.g:3256:1: ( '-' )
+                    // InternalDescartesQL.g:3256:3: '-'
                     {
-                    match(input,32,FOLLOW_2); 
+                    match(input,33,FOLLOW_2); 
 
                     }
 
@@ -9188,16 +9486,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3171:6: ( ( '+' ) )
+                    // InternalDescartesQL.g:3261:6: ( ( '+' ) )
                     {
-                    // InternalDescartesQL.g:3171:6: ( ( '+' ) )
-                    // InternalDescartesQL.g:3172:1: ( '+' )
+                    // InternalDescartesQL.g:3261:6: ( ( '+' ) )
+                    // InternalDescartesQL.g:3262:1: ( '+' )
                     {
                      before(grammarAccess.getRelativeTimeSignTypeAccess().getPLUSEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3173:1: ( '+' )
-                    // InternalDescartesQL.g:3173:3: '+'
+                    // InternalDescartesQL.g:3263:1: ( '+' )
+                    // InternalDescartesQL.g:3263:3: '+'
                     {
-                    match(input,33,FOLLOW_2); 
+                    match(input,34,FOLLOW_2); 
 
                     }
 
@@ -9226,74 +9524,74 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__TimeModifierType__Alternatives"
-    // InternalDescartesQL.g:3183:1: rule__TimeModifierType__Alternatives : ( ( ( 'y' ) ) | ( ( 'm' ) ) | ( ( 'w' ) ) | ( ( 'd' ) ) | ( ( 'h' ) ) | ( ( 'M' ) ) | ( ( 's' ) ) | ( ( 'S' ) ) );
+    // InternalDescartesQL.g:3273:1: rule__TimeModifierType__Alternatives : ( ( ( 'y' ) ) | ( ( 'm' ) ) | ( ( 'w' ) ) | ( ( 'd' ) ) | ( ( 'h' ) ) | ( ( 'M' ) ) | ( ( 's' ) ) | ( ( 'S' ) ) );
     public final void rule__TimeModifierType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3187:1: ( ( ( 'y' ) ) | ( ( 'm' ) ) | ( ( 'w' ) ) | ( ( 'd' ) ) | ( ( 'h' ) ) | ( ( 'M' ) ) | ( ( 's' ) ) | ( ( 'S' ) ) )
-            int alt25=8;
+            // InternalDescartesQL.g:3277:1: ( ( ( 'y' ) ) | ( ( 'm' ) ) | ( ( 'w' ) ) | ( ( 'd' ) ) | ( ( 'h' ) ) | ( ( 'M' ) ) | ( ( 's' ) ) | ( ( 'S' ) ) )
+            int alt26=8;
             switch ( input.LA(1) ) {
-            case 34:
-                {
-                alt25=1;
-                }
-                break;
             case 35:
                 {
-                alt25=2;
+                alt26=1;
                 }
                 break;
             case 36:
                 {
-                alt25=3;
+                alt26=2;
                 }
                 break;
             case 37:
                 {
-                alt25=4;
+                alt26=3;
                 }
                 break;
             case 38:
                 {
-                alt25=5;
+                alt26=4;
                 }
                 break;
             case 39:
                 {
-                alt25=6;
+                alt26=5;
                 }
                 break;
             case 40:
                 {
-                alt25=7;
+                alt26=6;
                 }
                 break;
             case 41:
                 {
-                alt25=8;
+                alt26=7;
+                }
+                break;
+            case 42:
+                {
+                alt26=8;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt25) {
+            switch (alt26) {
                 case 1 :
-                    // InternalDescartesQL.g:3188:1: ( ( 'y' ) )
+                    // InternalDescartesQL.g:3278:1: ( ( 'y' ) )
                     {
-                    // InternalDescartesQL.g:3188:1: ( ( 'y' ) )
-                    // InternalDescartesQL.g:3189:1: ( 'y' )
+                    // InternalDescartesQL.g:3278:1: ( ( 'y' ) )
+                    // InternalDescartesQL.g:3279:1: ( 'y' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getYEAREnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3190:1: ( 'y' )
-                    // InternalDescartesQL.g:3190:3: 'y'
+                    // InternalDescartesQL.g:3280:1: ( 'y' )
+                    // InternalDescartesQL.g:3280:3: 'y'
                     {
-                    match(input,34,FOLLOW_2); 
+                    match(input,35,FOLLOW_2); 
 
                     }
 
@@ -9305,16 +9603,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3195:6: ( ( 'm' ) )
+                    // InternalDescartesQL.g:3285:6: ( ( 'm' ) )
                     {
-                    // InternalDescartesQL.g:3195:6: ( ( 'm' ) )
-                    // InternalDescartesQL.g:3196:1: ( 'm' )
+                    // InternalDescartesQL.g:3285:6: ( ( 'm' ) )
+                    // InternalDescartesQL.g:3286:1: ( 'm' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getMONTHEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3197:1: ( 'm' )
-                    // InternalDescartesQL.g:3197:3: 'm'
+                    // InternalDescartesQL.g:3287:1: ( 'm' )
+                    // InternalDescartesQL.g:3287:3: 'm'
                     {
-                    match(input,35,FOLLOW_2); 
+                    match(input,36,FOLLOW_2); 
 
                     }
 
@@ -9326,16 +9624,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:3202:6: ( ( 'w' ) )
+                    // InternalDescartesQL.g:3292:6: ( ( 'w' ) )
                     {
-                    // InternalDescartesQL.g:3202:6: ( ( 'w' ) )
-                    // InternalDescartesQL.g:3203:1: ( 'w' )
+                    // InternalDescartesQL.g:3292:6: ( ( 'w' ) )
+                    // InternalDescartesQL.g:3293:1: ( 'w' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getWEEKEnumLiteralDeclaration_2()); 
-                    // InternalDescartesQL.g:3204:1: ( 'w' )
-                    // InternalDescartesQL.g:3204:3: 'w'
+                    // InternalDescartesQL.g:3294:1: ( 'w' )
+                    // InternalDescartesQL.g:3294:3: 'w'
                     {
-                    match(input,36,FOLLOW_2); 
+                    match(input,37,FOLLOW_2); 
 
                     }
 
@@ -9347,16 +9645,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:3209:6: ( ( 'd' ) )
+                    // InternalDescartesQL.g:3299:6: ( ( 'd' ) )
                     {
-                    // InternalDescartesQL.g:3209:6: ( ( 'd' ) )
-                    // InternalDescartesQL.g:3210:1: ( 'd' )
+                    // InternalDescartesQL.g:3299:6: ( ( 'd' ) )
+                    // InternalDescartesQL.g:3300:1: ( 'd' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getDAYEnumLiteralDeclaration_3()); 
-                    // InternalDescartesQL.g:3211:1: ( 'd' )
-                    // InternalDescartesQL.g:3211:3: 'd'
+                    // InternalDescartesQL.g:3301:1: ( 'd' )
+                    // InternalDescartesQL.g:3301:3: 'd'
                     {
-                    match(input,37,FOLLOW_2); 
+                    match(input,38,FOLLOW_2); 
 
                     }
 
@@ -9368,16 +9666,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 5 :
-                    // InternalDescartesQL.g:3216:6: ( ( 'h' ) )
+                    // InternalDescartesQL.g:3306:6: ( ( 'h' ) )
                     {
-                    // InternalDescartesQL.g:3216:6: ( ( 'h' ) )
-                    // InternalDescartesQL.g:3217:1: ( 'h' )
+                    // InternalDescartesQL.g:3306:6: ( ( 'h' ) )
+                    // InternalDescartesQL.g:3307:1: ( 'h' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getHOUREnumLiteralDeclaration_4()); 
-                    // InternalDescartesQL.g:3218:1: ( 'h' )
-                    // InternalDescartesQL.g:3218:3: 'h'
+                    // InternalDescartesQL.g:3308:1: ( 'h' )
+                    // InternalDescartesQL.g:3308:3: 'h'
                     {
-                    match(input,38,FOLLOW_2); 
+                    match(input,39,FOLLOW_2); 
 
                     }
 
@@ -9389,16 +9687,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 6 :
-                    // InternalDescartesQL.g:3223:6: ( ( 'M' ) )
+                    // InternalDescartesQL.g:3313:6: ( ( 'M' ) )
                     {
-                    // InternalDescartesQL.g:3223:6: ( ( 'M' ) )
-                    // InternalDescartesQL.g:3224:1: ( 'M' )
+                    // InternalDescartesQL.g:3313:6: ( ( 'M' ) )
+                    // InternalDescartesQL.g:3314:1: ( 'M' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getMINUTEEnumLiteralDeclaration_5()); 
-                    // InternalDescartesQL.g:3225:1: ( 'M' )
-                    // InternalDescartesQL.g:3225:3: 'M'
+                    // InternalDescartesQL.g:3315:1: ( 'M' )
+                    // InternalDescartesQL.g:3315:3: 'M'
                     {
-                    match(input,39,FOLLOW_2); 
+                    match(input,40,FOLLOW_2); 
 
                     }
 
@@ -9410,16 +9708,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 7 :
-                    // InternalDescartesQL.g:3230:6: ( ( 's' ) )
+                    // InternalDescartesQL.g:3320:6: ( ( 's' ) )
                     {
-                    // InternalDescartesQL.g:3230:6: ( ( 's' ) )
-                    // InternalDescartesQL.g:3231:1: ( 's' )
+                    // InternalDescartesQL.g:3320:6: ( ( 's' ) )
+                    // InternalDescartesQL.g:3321:1: ( 's' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getSECONDEnumLiteralDeclaration_6()); 
-                    // InternalDescartesQL.g:3232:1: ( 's' )
-                    // InternalDescartesQL.g:3232:3: 's'
+                    // InternalDescartesQL.g:3322:1: ( 's' )
+                    // InternalDescartesQL.g:3322:3: 's'
                     {
-                    match(input,40,FOLLOW_2); 
+                    match(input,41,FOLLOW_2); 
 
                     }
 
@@ -9431,16 +9729,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 8 :
-                    // InternalDescartesQL.g:3237:6: ( ( 'S' ) )
+                    // InternalDescartesQL.g:3327:6: ( ( 'S' ) )
                     {
-                    // InternalDescartesQL.g:3237:6: ( ( 'S' ) )
-                    // InternalDescartesQL.g:3238:1: ( 'S' )
+                    // InternalDescartesQL.g:3327:6: ( ( 'S' ) )
+                    // InternalDescartesQL.g:3328:1: ( 'S' )
                     {
                      before(grammarAccess.getTimeModifierTypeAccess().getMILLISECONDEnumLiteralDeclaration_7()); 
-                    // InternalDescartesQL.g:3239:1: ( 'S' )
-                    // InternalDescartesQL.g:3239:3: 'S'
+                    // InternalDescartesQL.g:3329:1: ( 'S' )
+                    // InternalDescartesQL.g:3329:3: 'S'
                     {
-                    match(input,41,FOLLOW_2); 
+                    match(input,42,FOLLOW_2); 
 
                     }
 
@@ -9469,84 +9767,84 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__StatisticalAggregateType__Alternatives"
-    // InternalDescartesQL.g:3249:1: rule__StatisticalAggregateType__Alternatives : ( ( ( 'MIN' ) ) | ( ( 'MAX' ) ) | ( ( 'GEOMEAN' ) ) | ( ( 'N' ) ) | ( ( 'SUM' ) ) | ( ( 'SUMOFSQUARES' ) ) | ( ( 'STDDEV' ) ) | ( ( 'VAR' ) ) | ( ( 'PERCENTILE' ) ) | ( ( 'MEAN' ) ) );
+    // InternalDescartesQL.g:3339:1: rule__StatisticalAggregateType__Alternatives : ( ( ( 'MIN' ) ) | ( ( 'MAX' ) ) | ( ( 'GEOMEAN' ) ) | ( ( 'N' ) ) | ( ( 'SUM' ) ) | ( ( 'SUMOFSQUARES' ) ) | ( ( 'STDDEV' ) ) | ( ( 'VAR' ) ) | ( ( 'PERCENTILE' ) ) | ( ( 'MEAN' ) ) );
     public final void rule__StatisticalAggregateType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3253:1: ( ( ( 'MIN' ) ) | ( ( 'MAX' ) ) | ( ( 'GEOMEAN' ) ) | ( ( 'N' ) ) | ( ( 'SUM' ) ) | ( ( 'SUMOFSQUARES' ) ) | ( ( 'STDDEV' ) ) | ( ( 'VAR' ) ) | ( ( 'PERCENTILE' ) ) | ( ( 'MEAN' ) ) )
-            int alt26=10;
+            // InternalDescartesQL.g:3343:1: ( ( ( 'MIN' ) ) | ( ( 'MAX' ) ) | ( ( 'GEOMEAN' ) ) | ( ( 'N' ) ) | ( ( 'SUM' ) ) | ( ( 'SUMOFSQUARES' ) ) | ( ( 'STDDEV' ) ) | ( ( 'VAR' ) ) | ( ( 'PERCENTILE' ) ) | ( ( 'MEAN' ) ) )
+            int alt27=10;
             switch ( input.LA(1) ) {
-            case 42:
-                {
-                alt26=1;
-                }
-                break;
             case 43:
                 {
-                alt26=2;
+                alt27=1;
                 }
                 break;
             case 44:
                 {
-                alt26=3;
+                alt27=2;
                 }
                 break;
             case 45:
                 {
-                alt26=4;
+                alt27=3;
                 }
                 break;
             case 46:
                 {
-                alt26=5;
+                alt27=4;
                 }
                 break;
             case 47:
                 {
-                alt26=6;
+                alt27=5;
                 }
                 break;
             case 48:
                 {
-                alt26=7;
+                alt27=6;
                 }
                 break;
             case 49:
                 {
-                alt26=8;
+                alt27=7;
                 }
                 break;
             case 50:
                 {
-                alt26=9;
+                alt27=8;
                 }
                 break;
             case 51:
                 {
-                alt26=10;
+                alt27=9;
+                }
+                break;
+            case 52:
+                {
+                alt27=10;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt27) {
                 case 1 :
-                    // InternalDescartesQL.g:3254:1: ( ( 'MIN' ) )
+                    // InternalDescartesQL.g:3344:1: ( ( 'MIN' ) )
                     {
-                    // InternalDescartesQL.g:3254:1: ( ( 'MIN' ) )
-                    // InternalDescartesQL.g:3255:1: ( 'MIN' )
+                    // InternalDescartesQL.g:3344:1: ( ( 'MIN' ) )
+                    // InternalDescartesQL.g:3345:1: ( 'MIN' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getMINEnumLiteralDeclaration_0()); 
-                    // InternalDescartesQL.g:3256:1: ( 'MIN' )
-                    // InternalDescartesQL.g:3256:3: 'MIN'
+                    // InternalDescartesQL.g:3346:1: ( 'MIN' )
+                    // InternalDescartesQL.g:3346:3: 'MIN'
                     {
-                    match(input,42,FOLLOW_2); 
+                    match(input,43,FOLLOW_2); 
 
                     }
 
@@ -9558,16 +9856,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 2 :
-                    // InternalDescartesQL.g:3261:6: ( ( 'MAX' ) )
+                    // InternalDescartesQL.g:3351:6: ( ( 'MAX' ) )
                     {
-                    // InternalDescartesQL.g:3261:6: ( ( 'MAX' ) )
-                    // InternalDescartesQL.g:3262:1: ( 'MAX' )
+                    // InternalDescartesQL.g:3351:6: ( ( 'MAX' ) )
+                    // InternalDescartesQL.g:3352:1: ( 'MAX' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getMAXEnumLiteralDeclaration_1()); 
-                    // InternalDescartesQL.g:3263:1: ( 'MAX' )
-                    // InternalDescartesQL.g:3263:3: 'MAX'
+                    // InternalDescartesQL.g:3353:1: ( 'MAX' )
+                    // InternalDescartesQL.g:3353:3: 'MAX'
                     {
-                    match(input,43,FOLLOW_2); 
+                    match(input,44,FOLLOW_2); 
 
                     }
 
@@ -9579,16 +9877,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 3 :
-                    // InternalDescartesQL.g:3268:6: ( ( 'GEOMEAN' ) )
+                    // InternalDescartesQL.g:3358:6: ( ( 'GEOMEAN' ) )
                     {
-                    // InternalDescartesQL.g:3268:6: ( ( 'GEOMEAN' ) )
-                    // InternalDescartesQL.g:3269:1: ( 'GEOMEAN' )
+                    // InternalDescartesQL.g:3358:6: ( ( 'GEOMEAN' ) )
+                    // InternalDescartesQL.g:3359:1: ( 'GEOMEAN' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getGEOMEANEnumLiteralDeclaration_2()); 
-                    // InternalDescartesQL.g:3270:1: ( 'GEOMEAN' )
-                    // InternalDescartesQL.g:3270:3: 'GEOMEAN'
+                    // InternalDescartesQL.g:3360:1: ( 'GEOMEAN' )
+                    // InternalDescartesQL.g:3360:3: 'GEOMEAN'
                     {
-                    match(input,44,FOLLOW_2); 
+                    match(input,45,FOLLOW_2); 
 
                     }
 
@@ -9600,16 +9898,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 4 :
-                    // InternalDescartesQL.g:3275:6: ( ( 'N' ) )
+                    // InternalDescartesQL.g:3365:6: ( ( 'N' ) )
                     {
-                    // InternalDescartesQL.g:3275:6: ( ( 'N' ) )
-                    // InternalDescartesQL.g:3276:1: ( 'N' )
+                    // InternalDescartesQL.g:3365:6: ( ( 'N' ) )
+                    // InternalDescartesQL.g:3366:1: ( 'N' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getNEnumLiteralDeclaration_3()); 
-                    // InternalDescartesQL.g:3277:1: ( 'N' )
-                    // InternalDescartesQL.g:3277:3: 'N'
+                    // InternalDescartesQL.g:3367:1: ( 'N' )
+                    // InternalDescartesQL.g:3367:3: 'N'
                     {
-                    match(input,45,FOLLOW_2); 
+                    match(input,46,FOLLOW_2); 
 
                     }
 
@@ -9621,16 +9919,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 5 :
-                    // InternalDescartesQL.g:3282:6: ( ( 'SUM' ) )
+                    // InternalDescartesQL.g:3372:6: ( ( 'SUM' ) )
                     {
-                    // InternalDescartesQL.g:3282:6: ( ( 'SUM' ) )
-                    // InternalDescartesQL.g:3283:1: ( 'SUM' )
+                    // InternalDescartesQL.g:3372:6: ( ( 'SUM' ) )
+                    // InternalDescartesQL.g:3373:1: ( 'SUM' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getSUMEnumLiteralDeclaration_4()); 
-                    // InternalDescartesQL.g:3284:1: ( 'SUM' )
-                    // InternalDescartesQL.g:3284:3: 'SUM'
+                    // InternalDescartesQL.g:3374:1: ( 'SUM' )
+                    // InternalDescartesQL.g:3374:3: 'SUM'
                     {
-                    match(input,46,FOLLOW_2); 
+                    match(input,47,FOLLOW_2); 
 
                     }
 
@@ -9642,16 +9940,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 6 :
-                    // InternalDescartesQL.g:3289:6: ( ( 'SUMOFSQUARES' ) )
+                    // InternalDescartesQL.g:3379:6: ( ( 'SUMOFSQUARES' ) )
                     {
-                    // InternalDescartesQL.g:3289:6: ( ( 'SUMOFSQUARES' ) )
-                    // InternalDescartesQL.g:3290:1: ( 'SUMOFSQUARES' )
+                    // InternalDescartesQL.g:3379:6: ( ( 'SUMOFSQUARES' ) )
+                    // InternalDescartesQL.g:3380:1: ( 'SUMOFSQUARES' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getSUMOFSQUARESEnumLiteralDeclaration_5()); 
-                    // InternalDescartesQL.g:3291:1: ( 'SUMOFSQUARES' )
-                    // InternalDescartesQL.g:3291:3: 'SUMOFSQUARES'
+                    // InternalDescartesQL.g:3381:1: ( 'SUMOFSQUARES' )
+                    // InternalDescartesQL.g:3381:3: 'SUMOFSQUARES'
                     {
-                    match(input,47,FOLLOW_2); 
+                    match(input,48,FOLLOW_2); 
 
                     }
 
@@ -9663,16 +9961,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 7 :
-                    // InternalDescartesQL.g:3296:6: ( ( 'STDDEV' ) )
+                    // InternalDescartesQL.g:3386:6: ( ( 'STDDEV' ) )
                     {
-                    // InternalDescartesQL.g:3296:6: ( ( 'STDDEV' ) )
-                    // InternalDescartesQL.g:3297:1: ( 'STDDEV' )
+                    // InternalDescartesQL.g:3386:6: ( ( 'STDDEV' ) )
+                    // InternalDescartesQL.g:3387:1: ( 'STDDEV' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getSTDDEVEnumLiteralDeclaration_6()); 
-                    // InternalDescartesQL.g:3298:1: ( 'STDDEV' )
-                    // InternalDescartesQL.g:3298:3: 'STDDEV'
+                    // InternalDescartesQL.g:3388:1: ( 'STDDEV' )
+                    // InternalDescartesQL.g:3388:3: 'STDDEV'
                     {
-                    match(input,48,FOLLOW_2); 
+                    match(input,49,FOLLOW_2); 
 
                     }
 
@@ -9684,16 +9982,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 8 :
-                    // InternalDescartesQL.g:3303:6: ( ( 'VAR' ) )
+                    // InternalDescartesQL.g:3393:6: ( ( 'VAR' ) )
                     {
-                    // InternalDescartesQL.g:3303:6: ( ( 'VAR' ) )
-                    // InternalDescartesQL.g:3304:1: ( 'VAR' )
+                    // InternalDescartesQL.g:3393:6: ( ( 'VAR' ) )
+                    // InternalDescartesQL.g:3394:1: ( 'VAR' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getVAREnumLiteralDeclaration_7()); 
-                    // InternalDescartesQL.g:3305:1: ( 'VAR' )
-                    // InternalDescartesQL.g:3305:3: 'VAR'
+                    // InternalDescartesQL.g:3395:1: ( 'VAR' )
+                    // InternalDescartesQL.g:3395:3: 'VAR'
                     {
-                    match(input,49,FOLLOW_2); 
+                    match(input,50,FOLLOW_2); 
 
                     }
 
@@ -9705,16 +10003,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 9 :
-                    // InternalDescartesQL.g:3310:6: ( ( 'PERCENTILE' ) )
+                    // InternalDescartesQL.g:3400:6: ( ( 'PERCENTILE' ) )
                     {
-                    // InternalDescartesQL.g:3310:6: ( ( 'PERCENTILE' ) )
-                    // InternalDescartesQL.g:3311:1: ( 'PERCENTILE' )
+                    // InternalDescartesQL.g:3400:6: ( ( 'PERCENTILE' ) )
+                    // InternalDescartesQL.g:3401:1: ( 'PERCENTILE' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getPERCENTILEEnumLiteralDeclaration_8()); 
-                    // InternalDescartesQL.g:3312:1: ( 'PERCENTILE' )
-                    // InternalDescartesQL.g:3312:3: 'PERCENTILE'
+                    // InternalDescartesQL.g:3402:1: ( 'PERCENTILE' )
+                    // InternalDescartesQL.g:3402:3: 'PERCENTILE'
                     {
-                    match(input,50,FOLLOW_2); 
+                    match(input,51,FOLLOW_2); 
 
                     }
 
@@ -9726,16 +10024,16 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
                     }
                     break;
                 case 10 :
-                    // InternalDescartesQL.g:3317:6: ( ( 'MEAN' ) )
+                    // InternalDescartesQL.g:3407:6: ( ( 'MEAN' ) )
                     {
-                    // InternalDescartesQL.g:3317:6: ( ( 'MEAN' ) )
-                    // InternalDescartesQL.g:3318:1: ( 'MEAN' )
+                    // InternalDescartesQL.g:3407:6: ( ( 'MEAN' ) )
+                    // InternalDescartesQL.g:3408:1: ( 'MEAN' )
                     {
                      before(grammarAccess.getStatisticalAggregateTypeAccess().getMEANEnumLiteralDeclaration_9()); 
-                    // InternalDescartesQL.g:3319:1: ( 'MEAN' )
-                    // InternalDescartesQL.g:3319:3: 'MEAN'
+                    // InternalDescartesQL.g:3409:1: ( 'MEAN' )
+                    // InternalDescartesQL.g:3409:3: 'MEAN'
                     {
-                    match(input,51,FOLLOW_2); 
+                    match(input,52,FOLLOW_2); 
 
                     }
 
@@ -9764,14 +10062,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DescartesQL__Group__0"
-    // InternalDescartesQL.g:3331:1: rule__DescartesQL__Group__0 : rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1 ;
+    // InternalDescartesQL.g:3421:1: rule__DescartesQL__Group__0 : rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1 ;
     public final void rule__DescartesQL__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3335:1: ( rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1 )
-            // InternalDescartesQL.g:3336:2: rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1
+            // InternalDescartesQL.g:3425:1: ( rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1 )
+            // InternalDescartesQL.g:3426:2: rule__DescartesQL__Group__0__Impl rule__DescartesQL__Group__1
             {
             pushFollow(FOLLOW_3);
             rule__DescartesQL__Group__0__Impl();
@@ -9802,21 +10100,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DescartesQL__Group__0__Impl"
-    // InternalDescartesQL.g:3343:1: rule__DescartesQL__Group__0__Impl : ( ( rule__DescartesQL__QueryAssignment_0 ) ) ;
+    // InternalDescartesQL.g:3433:1: rule__DescartesQL__Group__0__Impl : ( ( rule__DescartesQL__QueryAssignment_0 ) ) ;
     public final void rule__DescartesQL__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3347:1: ( ( ( rule__DescartesQL__QueryAssignment_0 ) ) )
-            // InternalDescartesQL.g:3348:1: ( ( rule__DescartesQL__QueryAssignment_0 ) )
+            // InternalDescartesQL.g:3437:1: ( ( ( rule__DescartesQL__QueryAssignment_0 ) ) )
+            // InternalDescartesQL.g:3438:1: ( ( rule__DescartesQL__QueryAssignment_0 ) )
             {
-            // InternalDescartesQL.g:3348:1: ( ( rule__DescartesQL__QueryAssignment_0 ) )
-            // InternalDescartesQL.g:3349:1: ( rule__DescartesQL__QueryAssignment_0 )
+            // InternalDescartesQL.g:3438:1: ( ( rule__DescartesQL__QueryAssignment_0 ) )
+            // InternalDescartesQL.g:3439:1: ( rule__DescartesQL__QueryAssignment_0 )
             {
              before(grammarAccess.getDescartesQLAccess().getQueryAssignment_0()); 
-            // InternalDescartesQL.g:3350:1: ( rule__DescartesQL__QueryAssignment_0 )
-            // InternalDescartesQL.g:3350:2: rule__DescartesQL__QueryAssignment_0
+            // InternalDescartesQL.g:3440:1: ( rule__DescartesQL__QueryAssignment_0 )
+            // InternalDescartesQL.g:3440:2: rule__DescartesQL__QueryAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__DescartesQL__QueryAssignment_0();
@@ -9849,14 +10147,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DescartesQL__Group__1"
-    // InternalDescartesQL.g:3360:1: rule__DescartesQL__Group__1 : rule__DescartesQL__Group__1__Impl ;
+    // InternalDescartesQL.g:3450:1: rule__DescartesQL__Group__1 : rule__DescartesQL__Group__1__Impl ;
     public final void rule__DescartesQL__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3364:1: ( rule__DescartesQL__Group__1__Impl )
-            // InternalDescartesQL.g:3365:2: rule__DescartesQL__Group__1__Impl
+            // InternalDescartesQL.g:3454:1: ( rule__DescartesQL__Group__1__Impl )
+            // InternalDescartesQL.g:3455:2: rule__DescartesQL__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__DescartesQL__Group__1__Impl();
@@ -9882,20 +10180,20 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DescartesQL__Group__1__Impl"
-    // InternalDescartesQL.g:3371:1: rule__DescartesQL__Group__1__Impl : ( ';' ) ;
+    // InternalDescartesQL.g:3461:1: rule__DescartesQL__Group__1__Impl : ( ';' ) ;
     public final void rule__DescartesQL__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3375:1: ( ( ';' ) )
-            // InternalDescartesQL.g:3376:1: ( ';' )
+            // InternalDescartesQL.g:3465:1: ( ( ';' ) )
+            // InternalDescartesQL.g:3466:1: ( ';' )
             {
-            // InternalDescartesQL.g:3376:1: ( ';' )
-            // InternalDescartesQL.g:3377:1: ';'
+            // InternalDescartesQL.g:3466:1: ( ';' )
+            // InternalDescartesQL.g:3467:1: ';'
             {
              before(grammarAccess.getDescartesQLAccess().getSemicolonKeyword_1()); 
-            match(input,52,FOLLOW_2); 
+            match(input,53,FOLLOW_2); 
              after(grammarAccess.getDescartesQLAccess().getSemicolonKeyword_1()); 
 
             }
@@ -9919,14 +10217,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__0"
-    // InternalDescartesQL.g:3394:1: rule__Goal__Group__0 : rule__Goal__Group__0__Impl rule__Goal__Group__1 ;
+    // InternalDescartesQL.g:3484:1: rule__Goal__Group__0 : rule__Goal__Group__0__Impl rule__Goal__Group__1 ;
     public final void rule__Goal__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3398:1: ( rule__Goal__Group__0__Impl rule__Goal__Group__1 )
-            // InternalDescartesQL.g:3399:2: rule__Goal__Group__0__Impl rule__Goal__Group__1
+            // InternalDescartesQL.g:3488:1: ( rule__Goal__Group__0__Impl rule__Goal__Group__1 )
+            // InternalDescartesQL.g:3489:2: rule__Goal__Group__0__Impl rule__Goal__Group__1
             {
             pushFollow(FOLLOW_4);
             rule__Goal__Group__0__Impl();
@@ -9957,21 +10255,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__0__Impl"
-    // InternalDescartesQL.g:3406:1: rule__Goal__Group__0__Impl : ( ( rule__Goal__QueryTypeAssignment_0 ) ) ;
+    // InternalDescartesQL.g:3496:1: rule__Goal__Group__0__Impl : ( ( rule__Goal__QueryTypeAssignment_0 ) ) ;
     public final void rule__Goal__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3410:1: ( ( ( rule__Goal__QueryTypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:3411:1: ( ( rule__Goal__QueryTypeAssignment_0 ) )
+            // InternalDescartesQL.g:3500:1: ( ( ( rule__Goal__QueryTypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:3501:1: ( ( rule__Goal__QueryTypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:3411:1: ( ( rule__Goal__QueryTypeAssignment_0 ) )
-            // InternalDescartesQL.g:3412:1: ( rule__Goal__QueryTypeAssignment_0 )
+            // InternalDescartesQL.g:3501:1: ( ( rule__Goal__QueryTypeAssignment_0 ) )
+            // InternalDescartesQL.g:3502:1: ( rule__Goal__QueryTypeAssignment_0 )
             {
              before(grammarAccess.getGoalAccess().getQueryTypeAssignment_0()); 
-            // InternalDescartesQL.g:3413:1: ( rule__Goal__QueryTypeAssignment_0 )
-            // InternalDescartesQL.g:3413:2: rule__Goal__QueryTypeAssignment_0
+            // InternalDescartesQL.g:3503:1: ( rule__Goal__QueryTypeAssignment_0 )
+            // InternalDescartesQL.g:3503:2: rule__Goal__QueryTypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__Goal__QueryTypeAssignment_0();
@@ -10004,14 +10302,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__1"
-    // InternalDescartesQL.g:3423:1: rule__Goal__Group__1 : rule__Goal__Group__1__Impl rule__Goal__Group__2 ;
+    // InternalDescartesQL.g:3513:1: rule__Goal__Group__1 : rule__Goal__Group__1__Impl rule__Goal__Group__2 ;
     public final void rule__Goal__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3427:1: ( rule__Goal__Group__1__Impl rule__Goal__Group__2 )
-            // InternalDescartesQL.g:3428:2: rule__Goal__Group__1__Impl rule__Goal__Group__2
+            // InternalDescartesQL.g:3517:1: ( rule__Goal__Group__1__Impl rule__Goal__Group__2 )
+            // InternalDescartesQL.g:3518:2: rule__Goal__Group__1__Impl rule__Goal__Group__2
             {
             pushFollow(FOLLOW_5);
             rule__Goal__Group__1__Impl();
@@ -10042,21 +10340,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__1__Impl"
-    // InternalDescartesQL.g:3435:1: rule__Goal__Group__1__Impl : ( ( rule__Goal__SlaQueryAssignment_1 ) ) ;
+    // InternalDescartesQL.g:3525:1: rule__Goal__Group__1__Impl : ( ( rule__Goal__SlaQueryAssignment_1 ) ) ;
     public final void rule__Goal__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3439:1: ( ( ( rule__Goal__SlaQueryAssignment_1 ) ) )
-            // InternalDescartesQL.g:3440:1: ( ( rule__Goal__SlaQueryAssignment_1 ) )
+            // InternalDescartesQL.g:3529:1: ( ( ( rule__Goal__SlaQueryAssignment_1 ) ) )
+            // InternalDescartesQL.g:3530:1: ( ( rule__Goal__SlaQueryAssignment_1 ) )
             {
-            // InternalDescartesQL.g:3440:1: ( ( rule__Goal__SlaQueryAssignment_1 ) )
-            // InternalDescartesQL.g:3441:1: ( rule__Goal__SlaQueryAssignment_1 )
+            // InternalDescartesQL.g:3530:1: ( ( rule__Goal__SlaQueryAssignment_1 ) )
+            // InternalDescartesQL.g:3531:1: ( rule__Goal__SlaQueryAssignment_1 )
             {
              before(grammarAccess.getGoalAccess().getSlaQueryAssignment_1()); 
-            // InternalDescartesQL.g:3442:1: ( rule__Goal__SlaQueryAssignment_1 )
-            // InternalDescartesQL.g:3442:2: rule__Goal__SlaQueryAssignment_1
+            // InternalDescartesQL.g:3532:1: ( rule__Goal__SlaQueryAssignment_1 )
+            // InternalDescartesQL.g:3532:2: rule__Goal__SlaQueryAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__Goal__SlaQueryAssignment_1();
@@ -10089,14 +10387,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__2"
-    // InternalDescartesQL.g:3452:1: rule__Goal__Group__2 : rule__Goal__Group__2__Impl rule__Goal__Group__3 ;
+    // InternalDescartesQL.g:3542:1: rule__Goal__Group__2 : rule__Goal__Group__2__Impl rule__Goal__Group__3 ;
     public final void rule__Goal__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3456:1: ( rule__Goal__Group__2__Impl rule__Goal__Group__3 )
-            // InternalDescartesQL.g:3457:2: rule__Goal__Group__2__Impl rule__Goal__Group__3
+            // InternalDescartesQL.g:3546:1: ( rule__Goal__Group__2__Impl rule__Goal__Group__3 )
+            // InternalDescartesQL.g:3547:2: rule__Goal__Group__2__Impl rule__Goal__Group__3
             {
             pushFollow(FOLLOW_6);
             rule__Goal__Group__2__Impl();
@@ -10127,21 +10425,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__2__Impl"
-    // InternalDescartesQL.g:3464:1: rule__Goal__Group__2__Impl : ( ( rule__Goal__SloQueryAssignment_2 ) ) ;
+    // InternalDescartesQL.g:3554:1: rule__Goal__Group__2__Impl : ( ( rule__Goal__SloQueryAssignment_2 ) ) ;
     public final void rule__Goal__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3468:1: ( ( ( rule__Goal__SloQueryAssignment_2 ) ) )
-            // InternalDescartesQL.g:3469:1: ( ( rule__Goal__SloQueryAssignment_2 ) )
+            // InternalDescartesQL.g:3558:1: ( ( ( rule__Goal__SloQueryAssignment_2 ) ) )
+            // InternalDescartesQL.g:3559:1: ( ( rule__Goal__SloQueryAssignment_2 ) )
             {
-            // InternalDescartesQL.g:3469:1: ( ( rule__Goal__SloQueryAssignment_2 ) )
-            // InternalDescartesQL.g:3470:1: ( rule__Goal__SloQueryAssignment_2 )
+            // InternalDescartesQL.g:3559:1: ( ( rule__Goal__SloQueryAssignment_2 ) )
+            // InternalDescartesQL.g:3560:1: ( rule__Goal__SloQueryAssignment_2 )
             {
              before(grammarAccess.getGoalAccess().getSloQueryAssignment_2()); 
-            // InternalDescartesQL.g:3471:1: ( rule__Goal__SloQueryAssignment_2 )
-            // InternalDescartesQL.g:3471:2: rule__Goal__SloQueryAssignment_2
+            // InternalDescartesQL.g:3561:1: ( rule__Goal__SloQueryAssignment_2 )
+            // InternalDescartesQL.g:3561:2: rule__Goal__SloQueryAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Goal__SloQueryAssignment_2();
@@ -10174,14 +10472,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__3"
-    // InternalDescartesQL.g:3481:1: rule__Goal__Group__3 : rule__Goal__Group__3__Impl rule__Goal__Group__4 ;
+    // InternalDescartesQL.g:3571:1: rule__Goal__Group__3 : rule__Goal__Group__3__Impl rule__Goal__Group__4 ;
     public final void rule__Goal__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3485:1: ( rule__Goal__Group__3__Impl rule__Goal__Group__4 )
-            // InternalDescartesQL.g:3486:2: rule__Goal__Group__3__Impl rule__Goal__Group__4
+            // InternalDescartesQL.g:3575:1: ( rule__Goal__Group__3__Impl rule__Goal__Group__4 )
+            // InternalDescartesQL.g:3576:2: rule__Goal__Group__3__Impl rule__Goal__Group__4
             {
             pushFollow(FOLLOW_6);
             rule__Goal__Group__3__Impl();
@@ -10212,29 +10510,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__3__Impl"
-    // InternalDescartesQL.g:3493:1: rule__Goal__Group__3__Impl : ( ( rule__Goal__ConstraintClauseAssignment_3 )? ) ;
+    // InternalDescartesQL.g:3583:1: rule__Goal__Group__3__Impl : ( ( rule__Goal__ConstraintClauseAssignment_3 )? ) ;
     public final void rule__Goal__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3497:1: ( ( ( rule__Goal__ConstraintClauseAssignment_3 )? ) )
-            // InternalDescartesQL.g:3498:1: ( ( rule__Goal__ConstraintClauseAssignment_3 )? )
+            // InternalDescartesQL.g:3587:1: ( ( ( rule__Goal__ConstraintClauseAssignment_3 )? ) )
+            // InternalDescartesQL.g:3588:1: ( ( rule__Goal__ConstraintClauseAssignment_3 )? )
             {
-            // InternalDescartesQL.g:3498:1: ( ( rule__Goal__ConstraintClauseAssignment_3 )? )
-            // InternalDescartesQL.g:3499:1: ( rule__Goal__ConstraintClauseAssignment_3 )?
+            // InternalDescartesQL.g:3588:1: ( ( rule__Goal__ConstraintClauseAssignment_3 )? )
+            // InternalDescartesQL.g:3589:1: ( rule__Goal__ConstraintClauseAssignment_3 )?
             {
              before(grammarAccess.getGoalAccess().getConstraintClauseAssignment_3()); 
-            // InternalDescartesQL.g:3500:1: ( rule__Goal__ConstraintClauseAssignment_3 )?
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // InternalDescartesQL.g:3590:1: ( rule__Goal__ConstraintClauseAssignment_3 )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
 
-            if ( (LA27_0==66) ) {
-                alt27=1;
+            if ( (LA28_0==70) ) {
+                alt28=1;
             }
-            switch (alt27) {
+            switch (alt28) {
                 case 1 :
-                    // InternalDescartesQL.g:3500:2: rule__Goal__ConstraintClauseAssignment_3
+                    // InternalDescartesQL.g:3590:2: rule__Goal__ConstraintClauseAssignment_3
                     {
                     pushFollow(FOLLOW_2);
                     rule__Goal__ConstraintClauseAssignment_3();
@@ -10270,14 +10568,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__4"
-    // InternalDescartesQL.g:3510:1: rule__Goal__Group__4 : rule__Goal__Group__4__Impl rule__Goal__Group__5 ;
+    // InternalDescartesQL.g:3600:1: rule__Goal__Group__4 : rule__Goal__Group__4__Impl rule__Goal__Group__5 ;
     public final void rule__Goal__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3514:1: ( rule__Goal__Group__4__Impl rule__Goal__Group__5 )
-            // InternalDescartesQL.g:3515:2: rule__Goal__Group__4__Impl rule__Goal__Group__5
+            // InternalDescartesQL.g:3604:1: ( rule__Goal__Group__4__Impl rule__Goal__Group__5 )
+            // InternalDescartesQL.g:3605:2: rule__Goal__Group__4__Impl rule__Goal__Group__5
             {
             pushFollow(FOLLOW_6);
             rule__Goal__Group__4__Impl();
@@ -10308,29 +10606,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__4__Impl"
-    // InternalDescartesQL.g:3522:1: rule__Goal__Group__4__Impl : ( ( rule__Goal__DofClauseAssignment_4 )? ) ;
+    // InternalDescartesQL.g:3612:1: rule__Goal__Group__4__Impl : ( ( rule__Goal__DofClauseAssignment_4 )? ) ;
     public final void rule__Goal__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3526:1: ( ( ( rule__Goal__DofClauseAssignment_4 )? ) )
-            // InternalDescartesQL.g:3527:1: ( ( rule__Goal__DofClauseAssignment_4 )? )
+            // InternalDescartesQL.g:3616:1: ( ( ( rule__Goal__DofClauseAssignment_4 )? ) )
+            // InternalDescartesQL.g:3617:1: ( ( rule__Goal__DofClauseAssignment_4 )? )
             {
-            // InternalDescartesQL.g:3527:1: ( ( rule__Goal__DofClauseAssignment_4 )? )
-            // InternalDescartesQL.g:3528:1: ( rule__Goal__DofClauseAssignment_4 )?
+            // InternalDescartesQL.g:3617:1: ( ( rule__Goal__DofClauseAssignment_4 )? )
+            // InternalDescartesQL.g:3618:1: ( rule__Goal__DofClauseAssignment_4 )?
             {
              before(grammarAccess.getGoalAccess().getDofClauseAssignment_4()); 
-            // InternalDescartesQL.g:3529:1: ( rule__Goal__DofClauseAssignment_4 )?
-            int alt28=2;
-            int LA28_0 = input.LA(1);
+            // InternalDescartesQL.g:3619:1: ( rule__Goal__DofClauseAssignment_4 )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA28_0==85) ) {
-                alt28=1;
+            if ( (LA29_0==89) ) {
+                alt29=1;
             }
-            switch (alt28) {
+            switch (alt29) {
                 case 1 :
-                    // InternalDescartesQL.g:3529:2: rule__Goal__DofClauseAssignment_4
+                    // InternalDescartesQL.g:3619:2: rule__Goal__DofClauseAssignment_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__Goal__DofClauseAssignment_4();
@@ -10366,14 +10664,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__5"
-    // InternalDescartesQL.g:3539:1: rule__Goal__Group__5 : rule__Goal__Group__5__Impl rule__Goal__Group__6 ;
+    // InternalDescartesQL.g:3629:1: rule__Goal__Group__5 : rule__Goal__Group__5__Impl rule__Goal__Group__6 ;
     public final void rule__Goal__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3543:1: ( rule__Goal__Group__5__Impl rule__Goal__Group__6 )
-            // InternalDescartesQL.g:3544:2: rule__Goal__Group__5__Impl rule__Goal__Group__6
+            // InternalDescartesQL.g:3633:1: ( rule__Goal__Group__5__Impl rule__Goal__Group__6 )
+            // InternalDescartesQL.g:3634:2: rule__Goal__Group__5__Impl rule__Goal__Group__6
             {
             pushFollow(FOLLOW_6);
             rule__Goal__Group__5__Impl();
@@ -10404,29 +10702,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__5__Impl"
-    // InternalDescartesQL.g:3551:1: rule__Goal__Group__5__Impl : ( ( rule__Goal__ForClauseAssignment_5 )? ) ;
+    // InternalDescartesQL.g:3641:1: rule__Goal__Group__5__Impl : ( ( rule__Goal__ForClauseAssignment_5 )? ) ;
     public final void rule__Goal__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3555:1: ( ( ( rule__Goal__ForClauseAssignment_5 )? ) )
-            // InternalDescartesQL.g:3556:1: ( ( rule__Goal__ForClauseAssignment_5 )? )
+            // InternalDescartesQL.g:3645:1: ( ( ( rule__Goal__ForClauseAssignment_5 )? ) )
+            // InternalDescartesQL.g:3646:1: ( ( rule__Goal__ForClauseAssignment_5 )? )
             {
-            // InternalDescartesQL.g:3556:1: ( ( rule__Goal__ForClauseAssignment_5 )? )
-            // InternalDescartesQL.g:3557:1: ( rule__Goal__ForClauseAssignment_5 )?
+            // InternalDescartesQL.g:3646:1: ( ( rule__Goal__ForClauseAssignment_5 )? )
+            // InternalDescartesQL.g:3647:1: ( rule__Goal__ForClauseAssignment_5 )?
             {
              before(grammarAccess.getGoalAccess().getForClauseAssignment_5()); 
-            // InternalDescartesQL.g:3558:1: ( rule__Goal__ForClauseAssignment_5 )?
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // InternalDescartesQL.g:3648:1: ( rule__Goal__ForClauseAssignment_5 )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( (LA29_0==93) ) {
-                alt29=1;
+            if ( (LA30_0==97) ) {
+                alt30=1;
             }
-            switch (alt29) {
+            switch (alt30) {
                 case 1 :
-                    // InternalDescartesQL.g:3558:2: rule__Goal__ForClauseAssignment_5
+                    // InternalDescartesQL.g:3648:2: rule__Goal__ForClauseAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__Goal__ForClauseAssignment_5();
@@ -10462,14 +10760,14 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__6"
-    // InternalDescartesQL.g:3568:1: rule__Goal__Group__6 : rule__Goal__Group__6__Impl ;
+    // InternalDescartesQL.g:3658:1: rule__Goal__Group__6 : rule__Goal__Group__6__Impl ;
     public final void rule__Goal__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3572:1: ( rule__Goal__Group__6__Impl )
-            // InternalDescartesQL.g:3573:2: rule__Goal__Group__6__Impl
+            // InternalDescartesQL.g:3662:1: ( rule__Goal__Group__6__Impl )
+            // InternalDescartesQL.g:3663:2: rule__Goal__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Goal__Group__6__Impl();
@@ -10495,21 +10793,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Goal__Group__6__Impl"
-    // InternalDescartesQL.g:3579:1: rule__Goal__Group__6__Impl : ( ( rule__Goal__UsingClauseAssignment_6 ) ) ;
+    // InternalDescartesQL.g:3669:1: rule__Goal__Group__6__Impl : ( ( rule__Goal__UsingClauseAssignment_6 ) ) ;
     public final void rule__Goal__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3583:1: ( ( ( rule__Goal__UsingClauseAssignment_6 ) ) )
-            // InternalDescartesQL.g:3584:1: ( ( rule__Goal__UsingClauseAssignment_6 ) )
+            // InternalDescartesQL.g:3673:1: ( ( ( rule__Goal__UsingClauseAssignment_6 ) ) )
+            // InternalDescartesQL.g:3674:1: ( ( rule__Goal__UsingClauseAssignment_6 ) )
             {
-            // InternalDescartesQL.g:3584:1: ( ( rule__Goal__UsingClauseAssignment_6 ) )
-            // InternalDescartesQL.g:3585:1: ( rule__Goal__UsingClauseAssignment_6 )
+            // InternalDescartesQL.g:3674:1: ( ( rule__Goal__UsingClauseAssignment_6 ) )
+            // InternalDescartesQL.g:3675:1: ( rule__Goal__UsingClauseAssignment_6 )
             {
              before(grammarAccess.getGoalAccess().getUsingClauseAssignment_6()); 
-            // InternalDescartesQL.g:3586:1: ( rule__Goal__UsingClauseAssignment_6 )
-            // InternalDescartesQL.g:3586:2: rule__Goal__UsingClauseAssignment_6
+            // InternalDescartesQL.g:3676:1: ( rule__Goal__UsingClauseAssignment_6 )
+            // InternalDescartesQL.g:3676:2: rule__Goal__UsingClauseAssignment_6
             {
             pushFollow(FOLLOW_2);
             rule__Goal__UsingClauseAssignment_6();
@@ -10541,23 +10839,23 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "rule__Goal__Group__6__Impl"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__0"
-    // InternalDescartesQL.g:3610:1: rule__SlaQuery__Group__0 : rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1 ;
-    public final void rule__SlaQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__0"
+    // InternalDescartesQL.g:3700:1: rule__GenerateSLAConcern__Group__0 : rule__GenerateSLAConcern__Group__0__Impl rule__GenerateSLAConcern__Group__1 ;
+    public final void rule__GenerateSLAConcern__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3614:1: ( rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1 )
-            // InternalDescartesQL.g:3615:2: rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1
+            // InternalDescartesQL.g:3704:1: ( rule__GenerateSLAConcern__Group__0__Impl rule__GenerateSLAConcern__Group__1 )
+            // InternalDescartesQL.g:3705:2: rule__GenerateSLAConcern__Group__0__Impl rule__GenerateSLAConcern__Group__1
             {
             pushFollow(FOLLOW_7);
-            rule__SlaQuery__Group__0__Impl();
+            rule__GenerateSLAConcern__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SlaQuery__Group__1();
+            rule__GenerateSLAConcern__Group__1();
 
             state._fsp--;
 
@@ -10576,35 +10874,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__0"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__0"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__0__Impl"
-    // InternalDescartesQL.g:3622:1: rule__SlaQuery__Group__0__Impl : ( ( rule__SlaQuery__TypeAssignment_0 ) ) ;
-    public final void rule__SlaQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__0__Impl"
+    // InternalDescartesQL.g:3712:1: rule__GenerateSLAConcern__Group__0__Impl : ( 'GENERATE' ) ;
+    public final void rule__GenerateSLAConcern__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3626:1: ( ( ( rule__SlaQuery__TypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:3627:1: ( ( rule__SlaQuery__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:3716:1: ( ( 'GENERATE' ) )
+            // InternalDescartesQL.g:3717:1: ( 'GENERATE' )
             {
-            // InternalDescartesQL.g:3627:1: ( ( rule__SlaQuery__TypeAssignment_0 ) )
-            // InternalDescartesQL.g:3628:1: ( rule__SlaQuery__TypeAssignment_0 )
+            // InternalDescartesQL.g:3717:1: ( 'GENERATE' )
+            // InternalDescartesQL.g:3718:1: 'GENERATE'
             {
-             before(grammarAccess.getSlaQueryAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:3629:1: ( rule__SlaQuery__TypeAssignment_0 )
-            // InternalDescartesQL.g:3629:2: rule__SlaQuery__TypeAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__SlaQuery__TypeAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSlaQueryAccess().getTypeAssignment_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getGENERATEKeyword_0()); 
+            match(input,54,FOLLOW_2); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getGENERATEKeyword_0()); 
 
             }
 
@@ -10623,26 +10911,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__0__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__0__Impl"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__1"
-    // InternalDescartesQL.g:3639:1: rule__SlaQuery__Group__1 : rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2 ;
-    public final void rule__SlaQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__1"
+    // InternalDescartesQL.g:3731:1: rule__GenerateSLAConcern__Group__1 : rule__GenerateSLAConcern__Group__1__Impl rule__GenerateSLAConcern__Group__2 ;
+    public final void rule__GenerateSLAConcern__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3643:1: ( rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2 )
-            // InternalDescartesQL.g:3644:2: rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2
+            // InternalDescartesQL.g:3735:1: ( rule__GenerateSLAConcern__Group__1__Impl rule__GenerateSLAConcern__Group__2 )
+            // InternalDescartesQL.g:3736:2: rule__GenerateSLAConcern__Group__1__Impl rule__GenerateSLAConcern__Group__2
             {
-            pushFollow(FOLLOW_8);
-            rule__SlaQuery__Group__1__Impl();
+            pushFollow(FOLLOW_7);
+            rule__GenerateSLAConcern__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SlaQuery__Group__2();
+            rule__GenerateSLAConcern__Group__2();
 
             state._fsp--;
 
@@ -10661,35 +10949,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__1"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__1"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__1__Impl"
-    // InternalDescartesQL.g:3651:1: rule__SlaQuery__Group__1__Impl : ( ( rule__SlaQuery__SlasAssignment_1 ) ) ;
-    public final void rule__SlaQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__1__Impl"
+    // InternalDescartesQL.g:3743:1: rule__GenerateSLAConcern__Group__1__Impl : ( ( rule__GenerateSLAConcern__OffsetAssignment_1 )? ) ;
+    public final void rule__GenerateSLAConcern__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3655:1: ( ( ( rule__SlaQuery__SlasAssignment_1 ) ) )
-            // InternalDescartesQL.g:3656:1: ( ( rule__SlaQuery__SlasAssignment_1 ) )
+            // InternalDescartesQL.g:3747:1: ( ( ( rule__GenerateSLAConcern__OffsetAssignment_1 )? ) )
+            // InternalDescartesQL.g:3748:1: ( ( rule__GenerateSLAConcern__OffsetAssignment_1 )? )
             {
-            // InternalDescartesQL.g:3656:1: ( ( rule__SlaQuery__SlasAssignment_1 ) )
-            // InternalDescartesQL.g:3657:1: ( rule__SlaQuery__SlasAssignment_1 )
-            {
-             before(grammarAccess.getSlaQueryAccess().getSlasAssignment_1()); 
-            // InternalDescartesQL.g:3658:1: ( rule__SlaQuery__SlasAssignment_1 )
-            // InternalDescartesQL.g:3658:2: rule__SlaQuery__SlasAssignment_1
+            // InternalDescartesQL.g:3748:1: ( ( rule__GenerateSLAConcern__OffsetAssignment_1 )? )
+            // InternalDescartesQL.g:3749:1: ( rule__GenerateSLAConcern__OffsetAssignment_1 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__SlaQuery__SlasAssignment_1();
+             before(grammarAccess.getGenerateSLAConcernAccess().getOffsetAssignment_1()); 
+            // InternalDescartesQL.g:3750:1: ( rule__GenerateSLAConcern__OffsetAssignment_1 )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( (LA31_0==19) ) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // InternalDescartesQL.g:3750:2: rule__GenerateSLAConcern__OffsetAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__GenerateSLAConcern__OffsetAssignment_1();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getSlaQueryAccess().getSlasAssignment_1()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getOffsetAssignment_1()); 
 
             }
 
@@ -10708,21 +11007,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__1__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__1__Impl"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__2"
-    // InternalDescartesQL.g:3668:1: rule__SlaQuery__Group__2 : rule__SlaQuery__Group__2__Impl ;
-    public final void rule__SlaQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__2"
+    // InternalDescartesQL.g:3760:1: rule__GenerateSLAConcern__Group__2 : rule__GenerateSLAConcern__Group__2__Impl rule__GenerateSLAConcern__Group__3 ;
+    public final void rule__GenerateSLAConcern__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3672:1: ( rule__SlaQuery__Group__2__Impl )
-            // InternalDescartesQL.g:3673:2: rule__SlaQuery__Group__2__Impl
+            // InternalDescartesQL.g:3764:1: ( rule__GenerateSLAConcern__Group__2__Impl rule__GenerateSLAConcern__Group__3 )
+            // InternalDescartesQL.g:3765:2: rule__GenerateSLAConcern__Group__2__Impl rule__GenerateSLAConcern__Group__3
             {
+            pushFollow(FOLLOW_7);
+            rule__GenerateSLAConcern__Group__2__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__SlaQuery__Group__2__Impl();
+            rule__GenerateSLAConcern__Group__3();
 
             state._fsp--;
 
@@ -10741,53 +11045,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__2"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__2"
 
 
-    // $ANTLR start "rule__SlaQuery__Group__2__Impl"
-    // InternalDescartesQL.g:3679:1: rule__SlaQuery__Group__2__Impl : ( ( rule__SlaQuery__Group_2__0 )* ) ;
-    public final void rule__SlaQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__2__Impl"
+    // InternalDescartesQL.g:3772:1: rule__GenerateSLAConcern__Group__2__Impl : ( ( rule__GenerateSLAConcern__Group_2__0 )? ) ;
+    public final void rule__GenerateSLAConcern__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3683:1: ( ( ( rule__SlaQuery__Group_2__0 )* ) )
-            // InternalDescartesQL.g:3684:1: ( ( rule__SlaQuery__Group_2__0 )* )
+            // InternalDescartesQL.g:3776:1: ( ( ( rule__GenerateSLAConcern__Group_2__0 )? ) )
+            // InternalDescartesQL.g:3777:1: ( ( rule__GenerateSLAConcern__Group_2__0 )? )
             {
-            // InternalDescartesQL.g:3684:1: ( ( rule__SlaQuery__Group_2__0 )* )
-            // InternalDescartesQL.g:3685:1: ( rule__SlaQuery__Group_2__0 )*
+            // InternalDescartesQL.g:3777:1: ( ( rule__GenerateSLAConcern__Group_2__0 )? )
+            // InternalDescartesQL.g:3778:1: ( rule__GenerateSLAConcern__Group_2__0 )?
             {
-             before(grammarAccess.getSlaQueryAccess().getGroup_2()); 
-            // InternalDescartesQL.g:3686:1: ( rule__SlaQuery__Group_2__0 )*
-            loop30:
-            do {
-                int alt30=2;
-                int LA30_0 = input.LA(1);
-
-                if ( (LA30_0==53) ) {
-                    alt30=1;
-                }
+             before(grammarAccess.getGenerateSLAConcernAccess().getGroup_2()); 
+            // InternalDescartesQL.g:3779:1: ( rule__GenerateSLAConcern__Group_2__0 )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
+            if ( (LA32_0==55) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalDescartesQL.g:3779:2: rule__GenerateSLAConcern__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__GenerateSLAConcern__Group_2__0();
 
-                switch (alt30) {
-            	case 1 :
-            	    // InternalDescartesQL.g:3686:2: rule__SlaQuery__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__SlaQuery__Group_2__0();
-
-            	    state._fsp--;
+                    state._fsp--;
 
 
-            	    }
-            	    break;
+                    }
+                    break;
 
-            	default :
-            	    break loop30;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getSlaQueryAccess().getGroup_2()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getGroup_2()); 
 
             }
 
@@ -10806,26 +11103,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group__2__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__2__Impl"
 
 
-    // $ANTLR start "rule__SlaQuery__Group_2__0"
-    // InternalDescartesQL.g:3702:1: rule__SlaQuery__Group_2__0 : rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1 ;
-    public final void rule__SlaQuery__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__3"
+    // InternalDescartesQL.g:3789:1: rule__GenerateSLAConcern__Group__3 : rule__GenerateSLAConcern__Group__3__Impl rule__GenerateSLAConcern__Group__4 ;
+    public final void rule__GenerateSLAConcern__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3706:1: ( rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1 )
-            // InternalDescartesQL.g:3707:2: rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1
+            // InternalDescartesQL.g:3793:1: ( rule__GenerateSLAConcern__Group__3__Impl rule__GenerateSLAConcern__Group__4 )
+            // InternalDescartesQL.g:3794:2: rule__GenerateSLAConcern__Group__3__Impl rule__GenerateSLAConcern__Group__4
             {
             pushFollow(FOLLOW_7);
-            rule__SlaQuery__Group_2__0__Impl();
+            rule__GenerateSLAConcern__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SlaQuery__Group_2__1();
+            rule__GenerateSLAConcern__Group__4();
 
             state._fsp--;
 
@@ -10844,25 +11141,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group_2__0"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__3"
 
 
-    // $ANTLR start "rule__SlaQuery__Group_2__0__Impl"
-    // InternalDescartesQL.g:3714:1: rule__SlaQuery__Group_2__0__Impl : ( ',' ) ;
-    public final void rule__SlaQuery__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__3__Impl"
+    // InternalDescartesQL.g:3801:1: rule__GenerateSLAConcern__Group__3__Impl : ( ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )? ) ;
+    public final void rule__GenerateSLAConcern__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3718:1: ( ( ',' ) )
-            // InternalDescartesQL.g:3719:1: ( ',' )
+            // InternalDescartesQL.g:3805:1: ( ( ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )? ) )
+            // InternalDescartesQL.g:3806:1: ( ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )? )
             {
-            // InternalDescartesQL.g:3719:1: ( ',' )
-            // InternalDescartesQL.g:3720:1: ','
+            // InternalDescartesQL.g:3806:1: ( ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )? )
+            // InternalDescartesQL.g:3807:1: ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )?
             {
-             before(grammarAccess.getSlaQueryAccess().getCommaKeyword_2_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getSlaQueryAccess().getCommaKeyword_2_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getConstraintClauseAssignment_3()); 
+            // InternalDescartesQL.g:3808:1: ( rule__GenerateSLAConcern__ConstraintClauseAssignment_3 )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==70) ) {
+                alt33=1;
+            }
+            switch (alt33) {
+                case 1 :
+                    // InternalDescartesQL.g:3808:2: rule__GenerateSLAConcern__ConstraintClauseAssignment_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__GenerateSLAConcern__ConstraintClauseAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenerateSLAConcernAccess().getConstraintClauseAssignment_3()); 
 
             }
 
@@ -10881,21 +11199,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group_2__0__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__3__Impl"
 
 
-    // $ANTLR start "rule__SlaQuery__Group_2__1"
-    // InternalDescartesQL.g:3733:1: rule__SlaQuery__Group_2__1 : rule__SlaQuery__Group_2__1__Impl ;
-    public final void rule__SlaQuery__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__4"
+    // InternalDescartesQL.g:3818:1: rule__GenerateSLAConcern__Group__4 : rule__GenerateSLAConcern__Group__4__Impl rule__GenerateSLAConcern__Group__5 ;
+    public final void rule__GenerateSLAConcern__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3737:1: ( rule__SlaQuery__Group_2__1__Impl )
-            // InternalDescartesQL.g:3738:2: rule__SlaQuery__Group_2__1__Impl
+            // InternalDescartesQL.g:3822:1: ( rule__GenerateSLAConcern__Group__4__Impl rule__GenerateSLAConcern__Group__5 )
+            // InternalDescartesQL.g:3823:2: rule__GenerateSLAConcern__Group__4__Impl rule__GenerateSLAConcern__Group__5
             {
+            pushFollow(FOLLOW_7);
+            rule__GenerateSLAConcern__Group__4__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__SlaQuery__Group_2__1__Impl();
+            rule__GenerateSLAConcern__Group__5();
 
             state._fsp--;
 
@@ -10914,35 +11237,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group_2__1"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__4"
 
 
-    // $ANTLR start "rule__SlaQuery__Group_2__1__Impl"
-    // InternalDescartesQL.g:3744:1: rule__SlaQuery__Group_2__1__Impl : ( ( rule__SlaQuery__SlasAssignment_2_1 ) ) ;
-    public final void rule__SlaQuery__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__4__Impl"
+    // InternalDescartesQL.g:3830:1: rule__GenerateSLAConcern__Group__4__Impl : ( ( rule__GenerateSLAConcern__DofClauseAssignment_4 )? ) ;
+    public final void rule__GenerateSLAConcern__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3748:1: ( ( ( rule__SlaQuery__SlasAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:3749:1: ( ( rule__SlaQuery__SlasAssignment_2_1 ) )
-            {
-            // InternalDescartesQL.g:3749:1: ( ( rule__SlaQuery__SlasAssignment_2_1 ) )
-            // InternalDescartesQL.g:3750:1: ( rule__SlaQuery__SlasAssignment_2_1 )
+            // InternalDescartesQL.g:3834:1: ( ( ( rule__GenerateSLAConcern__DofClauseAssignment_4 )? ) )
+            // InternalDescartesQL.g:3835:1: ( ( rule__GenerateSLAConcern__DofClauseAssignment_4 )? )
             {
-             before(grammarAccess.getSlaQueryAccess().getSlasAssignment_2_1()); 
-            // InternalDescartesQL.g:3751:1: ( rule__SlaQuery__SlasAssignment_2_1 )
-            // InternalDescartesQL.g:3751:2: rule__SlaQuery__SlasAssignment_2_1
+            // InternalDescartesQL.g:3835:1: ( ( rule__GenerateSLAConcern__DofClauseAssignment_4 )? )
+            // InternalDescartesQL.g:3836:1: ( rule__GenerateSLAConcern__DofClauseAssignment_4 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__SlaQuery__SlasAssignment_2_1();
+             before(grammarAccess.getGenerateSLAConcernAccess().getDofClauseAssignment_4()); 
+            // InternalDescartesQL.g:3837:1: ( rule__GenerateSLAConcern__DofClauseAssignment_4 )?
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA34_0==89) ) {
+                alt34=1;
+            }
+            switch (alt34) {
+                case 1 :
+                    // InternalDescartesQL.g:3837:2: rule__GenerateSLAConcern__DofClauseAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__GenerateSLAConcern__DofClauseAssignment_4();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getSlaQueryAccess().getSlasAssignment_2_1()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getDofClauseAssignment_4()); 
 
             }
 
@@ -10961,26 +11295,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SlaQuery__Group_2__1__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__4__Impl"
 
 
-    // $ANTLR start "rule__SloQuery__Group__0"
-    // InternalDescartesQL.g:3765:1: rule__SloQuery__Group__0 : rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1 ;
-    public final void rule__SloQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__5"
+    // InternalDescartesQL.g:3847:1: rule__GenerateSLAConcern__Group__5 : rule__GenerateSLAConcern__Group__5__Impl rule__GenerateSLAConcern__Group__6 ;
+    public final void rule__GenerateSLAConcern__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3769:1: ( rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1 )
-            // InternalDescartesQL.g:3770:2: rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1
+            // InternalDescartesQL.g:3851:1: ( rule__GenerateSLAConcern__Group__5__Impl rule__GenerateSLAConcern__Group__6 )
+            // InternalDescartesQL.g:3852:2: rule__GenerateSLAConcern__Group__5__Impl rule__GenerateSLAConcern__Group__6
             {
             pushFollow(FOLLOW_7);
-            rule__SloQuery__Group__0__Impl();
+            rule__GenerateSLAConcern__Group__5__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SloQuery__Group__1();
+            rule__GenerateSLAConcern__Group__6();
 
             state._fsp--;
 
@@ -10999,35 +11333,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__0"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__5"
 
 
-    // $ANTLR start "rule__SloQuery__Group__0__Impl"
-    // InternalDescartesQL.g:3777:1: rule__SloQuery__Group__0__Impl : ( ( rule__SloQuery__TypeAssignment_0 ) ) ;
-    public final void rule__SloQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__5__Impl"
+    // InternalDescartesQL.g:3859:1: rule__GenerateSLAConcern__Group__5__Impl : ( ( rule__GenerateSLAConcern__ForClauseAssignment_5 )? ) ;
+    public final void rule__GenerateSLAConcern__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3781:1: ( ( ( rule__SloQuery__TypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:3782:1: ( ( rule__SloQuery__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:3863:1: ( ( ( rule__GenerateSLAConcern__ForClauseAssignment_5 )? ) )
+            // InternalDescartesQL.g:3864:1: ( ( rule__GenerateSLAConcern__ForClauseAssignment_5 )? )
             {
-            // InternalDescartesQL.g:3782:1: ( ( rule__SloQuery__TypeAssignment_0 ) )
-            // InternalDescartesQL.g:3783:1: ( rule__SloQuery__TypeAssignment_0 )
-            {
-             before(grammarAccess.getSloQueryAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:3784:1: ( rule__SloQuery__TypeAssignment_0 )
-            // InternalDescartesQL.g:3784:2: rule__SloQuery__TypeAssignment_0
+            // InternalDescartesQL.g:3864:1: ( ( rule__GenerateSLAConcern__ForClauseAssignment_5 )? )
+            // InternalDescartesQL.g:3865:1: ( rule__GenerateSLAConcern__ForClauseAssignment_5 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__SloQuery__TypeAssignment_0();
+             before(grammarAccess.getGenerateSLAConcernAccess().getForClauseAssignment_5()); 
+            // InternalDescartesQL.g:3866:1: ( rule__GenerateSLAConcern__ForClauseAssignment_5 )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==97) ) {
+                alt35=1;
+            }
+            switch (alt35) {
+                case 1 :
+                    // InternalDescartesQL.g:3866:2: rule__GenerateSLAConcern__ForClauseAssignment_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__GenerateSLAConcern__ForClauseAssignment_5();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getSloQueryAccess().getTypeAssignment_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getForClauseAssignment_5()); 
 
             }
 
@@ -11046,26 +11391,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__0__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__5__Impl"
 
 
-    // $ANTLR start "rule__SloQuery__Group__1"
-    // InternalDescartesQL.g:3794:1: rule__SloQuery__Group__1 : rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2 ;
-    public final void rule__SloQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__6"
+    // InternalDescartesQL.g:3876:1: rule__GenerateSLAConcern__Group__6 : rule__GenerateSLAConcern__Group__6__Impl ;
+    public final void rule__GenerateSLAConcern__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3798:1: ( rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2 )
-            // InternalDescartesQL.g:3799:2: rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2
+            // InternalDescartesQL.g:3880:1: ( rule__GenerateSLAConcern__Group__6__Impl )
+            // InternalDescartesQL.g:3881:2: rule__GenerateSLAConcern__Group__6__Impl
             {
-            pushFollow(FOLLOW_8);
-            rule__SloQuery__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__SloQuery__Group__2();
+            rule__GenerateSLAConcern__Group__6__Impl();
 
             state._fsp--;
 
@@ -11084,35 +11424,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__1"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__6"
 
 
-    // $ANTLR start "rule__SloQuery__Group__1__Impl"
-    // InternalDescartesQL.g:3806:1: rule__SloQuery__Group__1__Impl : ( ( rule__SloQuery__SlosAssignment_1 ) ) ;
-    public final void rule__SloQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group__6__Impl"
+    // InternalDescartesQL.g:3887:1: rule__GenerateSLAConcern__Group__6__Impl : ( ( rule__GenerateSLAConcern__UsingClauseAssignment_6 ) ) ;
+    public final void rule__GenerateSLAConcern__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3810:1: ( ( ( rule__SloQuery__SlosAssignment_1 ) ) )
-            // InternalDescartesQL.g:3811:1: ( ( rule__SloQuery__SlosAssignment_1 ) )
+            // InternalDescartesQL.g:3891:1: ( ( ( rule__GenerateSLAConcern__UsingClauseAssignment_6 ) ) )
+            // InternalDescartesQL.g:3892:1: ( ( rule__GenerateSLAConcern__UsingClauseAssignment_6 ) )
             {
-            // InternalDescartesQL.g:3811:1: ( ( rule__SloQuery__SlosAssignment_1 ) )
-            // InternalDescartesQL.g:3812:1: ( rule__SloQuery__SlosAssignment_1 )
+            // InternalDescartesQL.g:3892:1: ( ( rule__GenerateSLAConcern__UsingClauseAssignment_6 ) )
+            // InternalDescartesQL.g:3893:1: ( rule__GenerateSLAConcern__UsingClauseAssignment_6 )
             {
-             before(grammarAccess.getSloQueryAccess().getSlosAssignment_1()); 
-            // InternalDescartesQL.g:3813:1: ( rule__SloQuery__SlosAssignment_1 )
-            // InternalDescartesQL.g:3813:2: rule__SloQuery__SlosAssignment_1
+             before(grammarAccess.getGenerateSLAConcernAccess().getUsingClauseAssignment_6()); 
+            // InternalDescartesQL.g:3894:1: ( rule__GenerateSLAConcern__UsingClauseAssignment_6 )
+            // InternalDescartesQL.g:3894:2: rule__GenerateSLAConcern__UsingClauseAssignment_6
             {
             pushFollow(FOLLOW_2);
-            rule__SloQuery__SlosAssignment_1();
+            rule__GenerateSLAConcern__UsingClauseAssignment_6();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSloQueryAccess().getSlosAssignment_1()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getUsingClauseAssignment_6()); 
 
             }
 
@@ -11131,21 +11471,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__1__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group__6__Impl"
 
 
-    // $ANTLR start "rule__SloQuery__Group__2"
-    // InternalDescartesQL.g:3823:1: rule__SloQuery__Group__2 : rule__SloQuery__Group__2__Impl ;
-    public final void rule__SloQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__0"
+    // InternalDescartesQL.g:3918:1: rule__GenerateSLAConcern__Group_2__0 : rule__GenerateSLAConcern__Group_2__0__Impl rule__GenerateSLAConcern__Group_2__1 ;
+    public final void rule__GenerateSLAConcern__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3827:1: ( rule__SloQuery__Group__2__Impl )
-            // InternalDescartesQL.g:3828:2: rule__SloQuery__Group__2__Impl
+            // InternalDescartesQL.g:3922:1: ( rule__GenerateSLAConcern__Group_2__0__Impl rule__GenerateSLAConcern__Group_2__1 )
+            // InternalDescartesQL.g:3923:2: rule__GenerateSLAConcern__Group_2__0__Impl rule__GenerateSLAConcern__Group_2__1
             {
+            pushFollow(FOLLOW_8);
+            rule__GenerateSLAConcern__Group_2__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__SloQuery__Group__2__Impl();
+            rule__GenerateSLAConcern__Group_2__1();
 
             state._fsp--;
 
@@ -11164,53 +11509,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__2"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__0"
 
 
-    // $ANTLR start "rule__SloQuery__Group__2__Impl"
-    // InternalDescartesQL.g:3834:1: rule__SloQuery__Group__2__Impl : ( ( rule__SloQuery__Group_2__0 )* ) ;
-    public final void rule__SloQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__0__Impl"
+    // InternalDescartesQL.g:3930:1: rule__GenerateSLAConcern__Group_2__0__Impl : ( 'SATISFACTION-LEVEL' ) ;
+    public final void rule__GenerateSLAConcern__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3838:1: ( ( ( rule__SloQuery__Group_2__0 )* ) )
-            // InternalDescartesQL.g:3839:1: ( ( rule__SloQuery__Group_2__0 )* )
+            // InternalDescartesQL.g:3934:1: ( ( 'SATISFACTION-LEVEL' ) )
+            // InternalDescartesQL.g:3935:1: ( 'SATISFACTION-LEVEL' )
             {
-            // InternalDescartesQL.g:3839:1: ( ( rule__SloQuery__Group_2__0 )* )
-            // InternalDescartesQL.g:3840:1: ( rule__SloQuery__Group_2__0 )*
+            // InternalDescartesQL.g:3935:1: ( 'SATISFACTION-LEVEL' )
+            // InternalDescartesQL.g:3936:1: 'SATISFACTION-LEVEL'
             {
-             before(grammarAccess.getSloQueryAccess().getGroup_2()); 
-            // InternalDescartesQL.g:3841:1: ( rule__SloQuery__Group_2__0 )*
-            loop31:
-            do {
-                int alt31=2;
-                int LA31_0 = input.LA(1);
-
-                if ( (LA31_0==53) ) {
-                    alt31=1;
-                }
-
-
-                switch (alt31) {
-            	case 1 :
-            	    // InternalDescartesQL.g:3841:2: rule__SloQuery__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__SloQuery__Group_2__0();
-
-            	    state._fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop31;
-                }
-            } while (true);
-
-             after(grammarAccess.getSloQueryAccess().getGroup_2()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getSATISFACTIONLEVELKeyword_2_0()); 
+            match(input,55,FOLLOW_2); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getSATISFACTIONLEVELKeyword_2_0()); 
 
             }
 
@@ -11229,26 +11546,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group__2__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__SloQuery__Group_2__0"
-    // InternalDescartesQL.g:3857:1: rule__SloQuery__Group_2__0 : rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1 ;
-    public final void rule__SloQuery__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__1"
+    // InternalDescartesQL.g:3949:1: rule__GenerateSLAConcern__Group_2__1 : rule__GenerateSLAConcern__Group_2__1__Impl rule__GenerateSLAConcern__Group_2__2 ;
+    public final void rule__GenerateSLAConcern__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3861:1: ( rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1 )
-            // InternalDescartesQL.g:3862:2: rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1
+            // InternalDescartesQL.g:3953:1: ( rule__GenerateSLAConcern__Group_2__1__Impl rule__GenerateSLAConcern__Group_2__2 )
+            // InternalDescartesQL.g:3954:2: rule__GenerateSLAConcern__Group_2__1__Impl rule__GenerateSLAConcern__Group_2__2
             {
-            pushFollow(FOLLOW_7);
-            rule__SloQuery__Group_2__0__Impl();
+            pushFollow(FOLLOW_9);
+            rule__GenerateSLAConcern__Group_2__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SloQuery__Group_2__1();
+            rule__GenerateSLAConcern__Group_2__2();
 
             state._fsp--;
 
@@ -11267,25 +11584,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group_2__0"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__1"
 
 
-    // $ANTLR start "rule__SloQuery__Group_2__0__Impl"
-    // InternalDescartesQL.g:3869:1: rule__SloQuery__Group_2__0__Impl : ( ',' ) ;
-    public final void rule__SloQuery__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__1__Impl"
+    // InternalDescartesQL.g:3961:1: rule__GenerateSLAConcern__Group_2__1__Impl : ( ( rule__GenerateSLAConcern__PercentageAssignment_2_1 ) ) ;
+    public final void rule__GenerateSLAConcern__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3873:1: ( ( ',' ) )
-            // InternalDescartesQL.g:3874:1: ( ',' )
+            // InternalDescartesQL.g:3965:1: ( ( ( rule__GenerateSLAConcern__PercentageAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:3966:1: ( ( rule__GenerateSLAConcern__PercentageAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:3874:1: ( ',' )
-            // InternalDescartesQL.g:3875:1: ','
+            // InternalDescartesQL.g:3966:1: ( ( rule__GenerateSLAConcern__PercentageAssignment_2_1 ) )
+            // InternalDescartesQL.g:3967:1: ( rule__GenerateSLAConcern__PercentageAssignment_2_1 )
             {
-             before(grammarAccess.getSloQueryAccess().getCommaKeyword_2_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getSloQueryAccess().getCommaKeyword_2_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getPercentageAssignment_2_1()); 
+            // InternalDescartesQL.g:3968:1: ( rule__GenerateSLAConcern__PercentageAssignment_2_1 )
+            // InternalDescartesQL.g:3968:2: rule__GenerateSLAConcern__PercentageAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__GenerateSLAConcern__PercentageAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenerateSLAConcernAccess().getPercentageAssignment_2_1()); 
 
             }
 
@@ -11304,21 +11631,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group_2__0__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__SloQuery__Group_2__1"
-    // InternalDescartesQL.g:3888:1: rule__SloQuery__Group_2__1 : rule__SloQuery__Group_2__1__Impl ;
-    public final void rule__SloQuery__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__2"
+    // InternalDescartesQL.g:3978:1: rule__GenerateSLAConcern__Group_2__2 : rule__GenerateSLAConcern__Group_2__2__Impl ;
+    public final void rule__GenerateSLAConcern__Group_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3892:1: ( rule__SloQuery__Group_2__1__Impl )
-            // InternalDescartesQL.g:3893:2: rule__SloQuery__Group_2__1__Impl
+            // InternalDescartesQL.g:3982:1: ( rule__GenerateSLAConcern__Group_2__2__Impl )
+            // InternalDescartesQL.g:3983:2: rule__GenerateSLAConcern__Group_2__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__SloQuery__Group_2__1__Impl();
+            rule__GenerateSLAConcern__Group_2__2__Impl();
 
             state._fsp--;
 
@@ -11337,35 +11664,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group_2__1"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__2"
 
 
-    // $ANTLR start "rule__SloQuery__Group_2__1__Impl"
-    // InternalDescartesQL.g:3899:1: rule__SloQuery__Group_2__1__Impl : ( ( rule__SloQuery__SlosAssignment_2_1 ) ) ;
-    public final void rule__SloQuery__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__Group_2__2__Impl"
+    // InternalDescartesQL.g:3989:1: rule__GenerateSLAConcern__Group_2__2__Impl : ( 'PERCENT' ) ;
+    public final void rule__GenerateSLAConcern__Group_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3903:1: ( ( ( rule__SloQuery__SlosAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:3904:1: ( ( rule__SloQuery__SlosAssignment_2_1 ) )
+            // InternalDescartesQL.g:3993:1: ( ( 'PERCENT' ) )
+            // InternalDescartesQL.g:3994:1: ( 'PERCENT' )
             {
-            // InternalDescartesQL.g:3904:1: ( ( rule__SloQuery__SlosAssignment_2_1 ) )
-            // InternalDescartesQL.g:3905:1: ( rule__SloQuery__SlosAssignment_2_1 )
+            // InternalDescartesQL.g:3994:1: ( 'PERCENT' )
+            // InternalDescartesQL.g:3995:1: 'PERCENT'
             {
-             before(grammarAccess.getSloQueryAccess().getSlosAssignment_2_1()); 
-            // InternalDescartesQL.g:3906:1: ( rule__SloQuery__SlosAssignment_2_1 )
-            // InternalDescartesQL.g:3906:2: rule__SloQuery__SlosAssignment_2_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__SloQuery__SlosAssignment_2_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSloQueryAccess().getSlosAssignment_2_1()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getPERCENTKeyword_2_2()); 
+            match(input,56,FOLLOW_2); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getPERCENTKeyword_2_2()); 
 
             }
 
@@ -11384,26 +11701,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SloQuery__Group_2__1__Impl"
+    // $ANTLR end "rule__GenerateSLAConcern__Group_2__2__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__0"
-    // InternalDescartesQL.g:3920:1: rule__Sla__Group__0 : rule__Sla__Group__0__Impl rule__Sla__Group__1 ;
-    public final void rule__Sla__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__0"
+    // InternalDescartesQL.g:4014:1: rule__SlaQuery__Group__0 : rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1 ;
+    public final void rule__SlaQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3924:1: ( rule__Sla__Group__0__Impl rule__Sla__Group__1 )
-            // InternalDescartesQL.g:3925:2: rule__Sla__Group__0__Impl rule__Sla__Group__1
+            // InternalDescartesQL.g:4018:1: ( rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1 )
+            // InternalDescartesQL.g:4019:2: rule__SlaQuery__Group__0__Impl rule__SlaQuery__Group__1
             {
             pushFollow(FOLLOW_10);
-            rule__Sla__Group__0__Impl();
+            rule__SlaQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__1();
+            rule__SlaQuery__Group__1();
 
             state._fsp--;
 
@@ -11422,35 +11739,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__0"
+    // $ANTLR end "rule__SlaQuery__Group__0"
 
 
-    // $ANTLR start "rule__Sla__Group__0__Impl"
-    // InternalDescartesQL.g:3932:1: rule__Sla__Group__0__Impl : ( ( rule__Sla__NameAssignment_0 ) ) ;
-    public final void rule__Sla__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__0__Impl"
+    // InternalDescartesQL.g:4026:1: rule__SlaQuery__Group__0__Impl : ( ( rule__SlaQuery__TypeAssignment_0 ) ) ;
+    public final void rule__SlaQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3936:1: ( ( ( rule__Sla__NameAssignment_0 ) ) )
-            // InternalDescartesQL.g:3937:1: ( ( rule__Sla__NameAssignment_0 ) )
+            // InternalDescartesQL.g:4030:1: ( ( ( rule__SlaQuery__TypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:4031:1: ( ( rule__SlaQuery__TypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:3937:1: ( ( rule__Sla__NameAssignment_0 ) )
-            // InternalDescartesQL.g:3938:1: ( rule__Sla__NameAssignment_0 )
+            // InternalDescartesQL.g:4031:1: ( ( rule__SlaQuery__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:4032:1: ( rule__SlaQuery__TypeAssignment_0 )
             {
-             before(grammarAccess.getSlaAccess().getNameAssignment_0()); 
-            // InternalDescartesQL.g:3939:1: ( rule__Sla__NameAssignment_0 )
-            // InternalDescartesQL.g:3939:2: rule__Sla__NameAssignment_0
+             before(grammarAccess.getSlaQueryAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:4033:1: ( rule__SlaQuery__TypeAssignment_0 )
+            // InternalDescartesQL.g:4033:2: rule__SlaQuery__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__Sla__NameAssignment_0();
+            rule__SlaQuery__TypeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSlaAccess().getNameAssignment_0()); 
+             after(grammarAccess.getSlaQueryAccess().getTypeAssignment_0()); 
 
             }
 
@@ -11469,26 +11786,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__0__Impl"
+    // $ANTLR end "rule__SlaQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__1"
-    // InternalDescartesQL.g:3949:1: rule__Sla__Group__1 : rule__Sla__Group__1__Impl rule__Sla__Group__2 ;
-    public final void rule__Sla__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__1"
+    // InternalDescartesQL.g:4043:1: rule__SlaQuery__Group__1 : rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2 ;
+    public final void rule__SlaQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3953:1: ( rule__Sla__Group__1__Impl rule__Sla__Group__2 )
-            // InternalDescartesQL.g:3954:2: rule__Sla__Group__1__Impl rule__Sla__Group__2
+            // InternalDescartesQL.g:4047:1: ( rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2 )
+            // InternalDescartesQL.g:4048:2: rule__SlaQuery__Group__1__Impl rule__SlaQuery__Group__2
             {
             pushFollow(FOLLOW_11);
-            rule__Sla__Group__1__Impl();
+            rule__SlaQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__2();
+            rule__SlaQuery__Group__2();
 
             state._fsp--;
 
@@ -11507,25 +11824,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__1"
+    // $ANTLR end "rule__SlaQuery__Group__1"
 
 
-    // $ANTLR start "rule__Sla__Group__1__Impl"
-    // InternalDescartesQL.g:3961:1: rule__Sla__Group__1__Impl : ( 'CONTAINS' ) ;
-    public final void rule__Sla__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__1__Impl"
+    // InternalDescartesQL.g:4055:1: rule__SlaQuery__Group__1__Impl : ( ( rule__SlaQuery__SlasAssignment_1 ) ) ;
+    public final void rule__SlaQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3965:1: ( ( 'CONTAINS' ) )
-            // InternalDescartesQL.g:3966:1: ( 'CONTAINS' )
+            // InternalDescartesQL.g:4059:1: ( ( ( rule__SlaQuery__SlasAssignment_1 ) ) )
+            // InternalDescartesQL.g:4060:1: ( ( rule__SlaQuery__SlasAssignment_1 ) )
             {
-            // InternalDescartesQL.g:3966:1: ( 'CONTAINS' )
-            // InternalDescartesQL.g:3967:1: 'CONTAINS'
+            // InternalDescartesQL.g:4060:1: ( ( rule__SlaQuery__SlasAssignment_1 ) )
+            // InternalDescartesQL.g:4061:1: ( rule__SlaQuery__SlasAssignment_1 )
             {
-             before(grammarAccess.getSlaAccess().getCONTAINSKeyword_1()); 
-            match(input,54,FOLLOW_2); 
-             after(grammarAccess.getSlaAccess().getCONTAINSKeyword_1()); 
+             before(grammarAccess.getSlaQueryAccess().getSlasAssignment_1()); 
+            // InternalDescartesQL.g:4062:1: ( rule__SlaQuery__SlasAssignment_1 )
+            // InternalDescartesQL.g:4062:2: rule__SlaQuery__SlasAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SlaQuery__SlasAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSlaQueryAccess().getSlasAssignment_1()); 
 
             }
 
@@ -11544,26 +11871,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__1__Impl"
+    // $ANTLR end "rule__SlaQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__2"
-    // InternalDescartesQL.g:3980:1: rule__Sla__Group__2 : rule__Sla__Group__2__Impl rule__Sla__Group__3 ;
-    public final void rule__Sla__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__2"
+    // InternalDescartesQL.g:4072:1: rule__SlaQuery__Group__2 : rule__SlaQuery__Group__2__Impl ;
+    public final void rule__SlaQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3984:1: ( rule__Sla__Group__2__Impl rule__Sla__Group__3 )
-            // InternalDescartesQL.g:3985:2: rule__Sla__Group__2__Impl rule__Sla__Group__3
+            // InternalDescartesQL.g:4076:1: ( rule__SlaQuery__Group__2__Impl )
+            // InternalDescartesQL.g:4077:2: rule__SlaQuery__Group__2__Impl
             {
-            pushFollow(FOLLOW_7);
-            rule__Sla__Group__2__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__3();
+            rule__SlaQuery__Group__2__Impl();
 
             state._fsp--;
 
@@ -11582,25 +11904,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__2"
+    // $ANTLR end "rule__SlaQuery__Group__2"
 
 
-    // $ANTLR start "rule__Sla__Group__2__Impl"
-    // InternalDescartesQL.g:3992:1: rule__Sla__Group__2__Impl : ( '(' ) ;
-    public final void rule__Sla__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group__2__Impl"
+    // InternalDescartesQL.g:4083:1: rule__SlaQuery__Group__2__Impl : ( ( rule__SlaQuery__Group_2__0 )* ) ;
+    public final void rule__SlaQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:3996:1: ( ( '(' ) )
-            // InternalDescartesQL.g:3997:1: ( '(' )
+            // InternalDescartesQL.g:4087:1: ( ( ( rule__SlaQuery__Group_2__0 )* ) )
+            // InternalDescartesQL.g:4088:1: ( ( rule__SlaQuery__Group_2__0 )* )
             {
-            // InternalDescartesQL.g:3997:1: ( '(' )
-            // InternalDescartesQL.g:3998:1: '('
+            // InternalDescartesQL.g:4088:1: ( ( rule__SlaQuery__Group_2__0 )* )
+            // InternalDescartesQL.g:4089:1: ( rule__SlaQuery__Group_2__0 )*
             {
-             before(grammarAccess.getSlaAccess().getLeftParenthesisKeyword_2()); 
-            match(input,55,FOLLOW_2); 
-             after(grammarAccess.getSlaAccess().getLeftParenthesisKeyword_2()); 
+             before(grammarAccess.getSlaQueryAccess().getGroup_2()); 
+            // InternalDescartesQL.g:4090:1: ( rule__SlaQuery__Group_2__0 )*
+            loop36:
+            do {
+                int alt36=2;
+                int LA36_0 = input.LA(1);
+
+                if ( (LA36_0==57) ) {
+                    alt36=1;
+                }
+
+
+                switch (alt36) {
+            	case 1 :
+            	    // InternalDescartesQL.g:4090:2: rule__SlaQuery__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__SlaQuery__Group_2__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop36;
+                }
+            } while (true);
+
+             after(grammarAccess.getSlaQueryAccess().getGroup_2()); 
 
             }
 
@@ -11619,26 +11969,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__2__Impl"
+    // $ANTLR end "rule__SlaQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__3"
-    // InternalDescartesQL.g:4011:1: rule__Sla__Group__3 : rule__Sla__Group__3__Impl rule__Sla__Group__4 ;
-    public final void rule__Sla__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group_2__0"
+    // InternalDescartesQL.g:4106:1: rule__SlaQuery__Group_2__0 : rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1 ;
+    public final void rule__SlaQuery__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4015:1: ( rule__Sla__Group__3__Impl rule__Sla__Group__4 )
-            // InternalDescartesQL.g:4016:2: rule__Sla__Group__3__Impl rule__Sla__Group__4
+            // InternalDescartesQL.g:4110:1: ( rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1 )
+            // InternalDescartesQL.g:4111:2: rule__SlaQuery__Group_2__0__Impl rule__SlaQuery__Group_2__1
             {
-            pushFollow(FOLLOW_12);
-            rule__Sla__Group__3__Impl();
+            pushFollow(FOLLOW_10);
+            rule__SlaQuery__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__4();
+            rule__SlaQuery__Group_2__1();
 
             state._fsp--;
 
@@ -11657,35 +12007,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__3"
+    // $ANTLR end "rule__SlaQuery__Group_2__0"
 
 
-    // $ANTLR start "rule__Sla__Group__3__Impl"
-    // InternalDescartesQL.g:4023:1: rule__Sla__Group__3__Impl : ( ( rule__Sla__WeightedSloAssignment_3 ) ) ;
-    public final void rule__Sla__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group_2__0__Impl"
+    // InternalDescartesQL.g:4118:1: rule__SlaQuery__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__SlaQuery__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4027:1: ( ( ( rule__Sla__WeightedSloAssignment_3 ) ) )
-            // InternalDescartesQL.g:4028:1: ( ( rule__Sla__WeightedSloAssignment_3 ) )
-            {
-            // InternalDescartesQL.g:4028:1: ( ( rule__Sla__WeightedSloAssignment_3 ) )
-            // InternalDescartesQL.g:4029:1: ( rule__Sla__WeightedSloAssignment_3 )
+            // InternalDescartesQL.g:4122:1: ( ( ',' ) )
+            // InternalDescartesQL.g:4123:1: ( ',' )
             {
-             before(grammarAccess.getSlaAccess().getWeightedSloAssignment_3()); 
-            // InternalDescartesQL.g:4030:1: ( rule__Sla__WeightedSloAssignment_3 )
-            // InternalDescartesQL.g:4030:2: rule__Sla__WeightedSloAssignment_3
+            // InternalDescartesQL.g:4123:1: ( ',' )
+            // InternalDescartesQL.g:4124:1: ','
             {
-            pushFollow(FOLLOW_2);
-            rule__Sla__WeightedSloAssignment_3();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSlaAccess().getWeightedSloAssignment_3()); 
+             before(grammarAccess.getSlaQueryAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getSlaQueryAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -11704,26 +12044,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__3__Impl"
+    // $ANTLR end "rule__SlaQuery__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__4"
-    // InternalDescartesQL.g:4040:1: rule__Sla__Group__4 : rule__Sla__Group__4__Impl rule__Sla__Group__5 ;
-    public final void rule__Sla__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group_2__1"
+    // InternalDescartesQL.g:4137:1: rule__SlaQuery__Group_2__1 : rule__SlaQuery__Group_2__1__Impl ;
+    public final void rule__SlaQuery__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4044:1: ( rule__Sla__Group__4__Impl rule__Sla__Group__5 )
-            // InternalDescartesQL.g:4045:2: rule__Sla__Group__4__Impl rule__Sla__Group__5
+            // InternalDescartesQL.g:4141:1: ( rule__SlaQuery__Group_2__1__Impl )
+            // InternalDescartesQL.g:4142:2: rule__SlaQuery__Group_2__1__Impl
             {
-            pushFollow(FOLLOW_12);
-            rule__Sla__Group__4__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__5();
+            rule__SlaQuery__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -11742,53 +12077,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__4"
+    // $ANTLR end "rule__SlaQuery__Group_2__1"
 
 
-    // $ANTLR start "rule__Sla__Group__4__Impl"
-    // InternalDescartesQL.g:4052:1: rule__Sla__Group__4__Impl : ( ( rule__Sla__Group_4__0 )* ) ;
-    public final void rule__Sla__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SlaQuery__Group_2__1__Impl"
+    // InternalDescartesQL.g:4148:1: rule__SlaQuery__Group_2__1__Impl : ( ( rule__SlaQuery__SlasAssignment_2_1 ) ) ;
+    public final void rule__SlaQuery__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4056:1: ( ( ( rule__Sla__Group_4__0 )* ) )
-            // InternalDescartesQL.g:4057:1: ( ( rule__Sla__Group_4__0 )* )
+            // InternalDescartesQL.g:4152:1: ( ( ( rule__SlaQuery__SlasAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:4153:1: ( ( rule__SlaQuery__SlasAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:4057:1: ( ( rule__Sla__Group_4__0 )* )
-            // InternalDescartesQL.g:4058:1: ( rule__Sla__Group_4__0 )*
+            // InternalDescartesQL.g:4153:1: ( ( rule__SlaQuery__SlasAssignment_2_1 ) )
+            // InternalDescartesQL.g:4154:1: ( rule__SlaQuery__SlasAssignment_2_1 )
             {
-             before(grammarAccess.getSlaAccess().getGroup_4()); 
-            // InternalDescartesQL.g:4059:1: ( rule__Sla__Group_4__0 )*
-            loop32:
-            do {
-                int alt32=2;
-                int LA32_0 = input.LA(1);
-
-                if ( (LA32_0==53) ) {
-                    alt32=1;
-                }
-
-
-                switch (alt32) {
-            	case 1 :
-            	    // InternalDescartesQL.g:4059:2: rule__Sla__Group_4__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__Sla__Group_4__0();
-
-            	    state._fsp--;
+             before(grammarAccess.getSlaQueryAccess().getSlasAssignment_2_1()); 
+            // InternalDescartesQL.g:4155:1: ( rule__SlaQuery__SlasAssignment_2_1 )
+            // InternalDescartesQL.g:4155:2: rule__SlaQuery__SlasAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SlaQuery__SlasAssignment_2_1();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop32;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getSlaAccess().getGroup_4()); 
+             after(grammarAccess.getSlaQueryAccess().getSlasAssignment_2_1()); 
 
             }
 
@@ -11807,21 +12124,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__4__Impl"
+    // $ANTLR end "rule__SlaQuery__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group__5"
-    // InternalDescartesQL.g:4069:1: rule__Sla__Group__5 : rule__Sla__Group__5__Impl ;
-    public final void rule__Sla__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__0"
+    // InternalDescartesQL.g:4169:1: rule__SloQuery__Group__0 : rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1 ;
+    public final void rule__SloQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4073:1: ( rule__Sla__Group__5__Impl )
-            // InternalDescartesQL.g:4074:2: rule__Sla__Group__5__Impl
+            // InternalDescartesQL.g:4173:1: ( rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1 )
+            // InternalDescartesQL.g:4174:2: rule__SloQuery__Group__0__Impl rule__SloQuery__Group__1
             {
+            pushFollow(FOLLOW_10);
+            rule__SloQuery__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__Sla__Group__5__Impl();
+            rule__SloQuery__Group__1();
 
             state._fsp--;
 
@@ -11840,25 +12162,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__5"
+    // $ANTLR end "rule__SloQuery__Group__0"
 
 
-    // $ANTLR start "rule__Sla__Group__5__Impl"
-    // InternalDescartesQL.g:4080:1: rule__Sla__Group__5__Impl : ( ')' ) ;
-    public final void rule__Sla__Group__5__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__0__Impl"
+    // InternalDescartesQL.g:4181:1: rule__SloQuery__Group__0__Impl : ( ( rule__SloQuery__TypeAssignment_0 ) ) ;
+    public final void rule__SloQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4084:1: ( ( ')' ) )
-            // InternalDescartesQL.g:4085:1: ( ')' )
+            // InternalDescartesQL.g:4185:1: ( ( ( rule__SloQuery__TypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:4186:1: ( ( rule__SloQuery__TypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4085:1: ( ')' )
-            // InternalDescartesQL.g:4086:1: ')'
+            // InternalDescartesQL.g:4186:1: ( ( rule__SloQuery__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:4187:1: ( rule__SloQuery__TypeAssignment_0 )
             {
-             before(grammarAccess.getSlaAccess().getRightParenthesisKeyword_5()); 
-            match(input,56,FOLLOW_2); 
-             after(grammarAccess.getSlaAccess().getRightParenthesisKeyword_5()); 
+             before(grammarAccess.getSloQueryAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:4188:1: ( rule__SloQuery__TypeAssignment_0 )
+            // InternalDescartesQL.g:4188:2: rule__SloQuery__TypeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__SloQuery__TypeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSloQueryAccess().getTypeAssignment_0()); 
 
             }
 
@@ -11877,26 +12209,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group__5__Impl"
+    // $ANTLR end "rule__SloQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group_4__0"
-    // InternalDescartesQL.g:4111:1: rule__Sla__Group_4__0 : rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1 ;
-    public final void rule__Sla__Group_4__0() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__1"
+    // InternalDescartesQL.g:4198:1: rule__SloQuery__Group__1 : rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2 ;
+    public final void rule__SloQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4115:1: ( rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1 )
-            // InternalDescartesQL.g:4116:2: rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1
+            // InternalDescartesQL.g:4202:1: ( rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2 )
+            // InternalDescartesQL.g:4203:2: rule__SloQuery__Group__1__Impl rule__SloQuery__Group__2
             {
-            pushFollow(FOLLOW_7);
-            rule__Sla__Group_4__0__Impl();
+            pushFollow(FOLLOW_11);
+            rule__SloQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Sla__Group_4__1();
+            rule__SloQuery__Group__2();
 
             state._fsp--;
 
@@ -11915,25 +12247,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group_4__0"
+    // $ANTLR end "rule__SloQuery__Group__1"
 
 
-    // $ANTLR start "rule__Sla__Group_4__0__Impl"
-    // InternalDescartesQL.g:4123:1: rule__Sla__Group_4__0__Impl : ( ',' ) ;
-    public final void rule__Sla__Group_4__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__1__Impl"
+    // InternalDescartesQL.g:4210:1: rule__SloQuery__Group__1__Impl : ( ( rule__SloQuery__SlosAssignment_1 ) ) ;
+    public final void rule__SloQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4127:1: ( ( ',' ) )
-            // InternalDescartesQL.g:4128:1: ( ',' )
+            // InternalDescartesQL.g:4214:1: ( ( ( rule__SloQuery__SlosAssignment_1 ) ) )
+            // InternalDescartesQL.g:4215:1: ( ( rule__SloQuery__SlosAssignment_1 ) )
             {
-            // InternalDescartesQL.g:4128:1: ( ',' )
-            // InternalDescartesQL.g:4129:1: ','
+            // InternalDescartesQL.g:4215:1: ( ( rule__SloQuery__SlosAssignment_1 ) )
+            // InternalDescartesQL.g:4216:1: ( rule__SloQuery__SlosAssignment_1 )
             {
-             before(grammarAccess.getSlaAccess().getCommaKeyword_4_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getSlaAccess().getCommaKeyword_4_0()); 
+             before(grammarAccess.getSloQueryAccess().getSlosAssignment_1()); 
+            // InternalDescartesQL.g:4217:1: ( rule__SloQuery__SlosAssignment_1 )
+            // InternalDescartesQL.g:4217:2: rule__SloQuery__SlosAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SloQuery__SlosAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSloQueryAccess().getSlosAssignment_1()); 
 
             }
 
@@ -11952,21 +12294,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group_4__0__Impl"
+    // $ANTLR end "rule__SloQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__Sla__Group_4__1"
-    // InternalDescartesQL.g:4142:1: rule__Sla__Group_4__1 : rule__Sla__Group_4__1__Impl ;
-    public final void rule__Sla__Group_4__1() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__2"
+    // InternalDescartesQL.g:4227:1: rule__SloQuery__Group__2 : rule__SloQuery__Group__2__Impl ;
+    public final void rule__SloQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4146:1: ( rule__Sla__Group_4__1__Impl )
-            // InternalDescartesQL.g:4147:2: rule__Sla__Group_4__1__Impl
+            // InternalDescartesQL.g:4231:1: ( rule__SloQuery__Group__2__Impl )
+            // InternalDescartesQL.g:4232:2: rule__SloQuery__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__Sla__Group_4__1__Impl();
+            rule__SloQuery__Group__2__Impl();
 
             state._fsp--;
 
@@ -11985,35 +12327,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group_4__1"
+    // $ANTLR end "rule__SloQuery__Group__2"
 
 
-    // $ANTLR start "rule__Sla__Group_4__1__Impl"
-    // InternalDescartesQL.g:4153:1: rule__Sla__Group_4__1__Impl : ( ( rule__Sla__WeightedSloAssignment_4_1 ) ) ;
-    public final void rule__Sla__Group_4__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group__2__Impl"
+    // InternalDescartesQL.g:4238:1: rule__SloQuery__Group__2__Impl : ( ( rule__SloQuery__Group_2__0 )* ) ;
+    public final void rule__SloQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4157:1: ( ( ( rule__Sla__WeightedSloAssignment_4_1 ) ) )
-            // InternalDescartesQL.g:4158:1: ( ( rule__Sla__WeightedSloAssignment_4_1 ) )
+            // InternalDescartesQL.g:4242:1: ( ( ( rule__SloQuery__Group_2__0 )* ) )
+            // InternalDescartesQL.g:4243:1: ( ( rule__SloQuery__Group_2__0 )* )
             {
-            // InternalDescartesQL.g:4158:1: ( ( rule__Sla__WeightedSloAssignment_4_1 ) )
-            // InternalDescartesQL.g:4159:1: ( rule__Sla__WeightedSloAssignment_4_1 )
-            {
-             before(grammarAccess.getSlaAccess().getWeightedSloAssignment_4_1()); 
-            // InternalDescartesQL.g:4160:1: ( rule__Sla__WeightedSloAssignment_4_1 )
-            // InternalDescartesQL.g:4160:2: rule__Sla__WeightedSloAssignment_4_1
+            // InternalDescartesQL.g:4243:1: ( ( rule__SloQuery__Group_2__0 )* )
+            // InternalDescartesQL.g:4244:1: ( rule__SloQuery__Group_2__0 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__Sla__WeightedSloAssignment_4_1();
+             before(grammarAccess.getSloQueryAccess().getGroup_2()); 
+            // InternalDescartesQL.g:4245:1: ( rule__SloQuery__Group_2__0 )*
+            loop37:
+            do {
+                int alt37=2;
+                int LA37_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA37_0==57) ) {
+                    alt37=1;
+                }
 
 
-            }
+                switch (alt37) {
+            	case 1 :
+            	    // InternalDescartesQL.g:4245:2: rule__SloQuery__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__SloQuery__Group_2__0();
 
-             after(grammarAccess.getSlaAccess().getWeightedSloAssignment_4_1()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop37;
+                }
+            } while (true);
+
+             after(grammarAccess.getSloQueryAccess().getGroup_2()); 
 
             }
 
@@ -12032,26 +12392,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Sla__Group_4__1__Impl"
+    // $ANTLR end "rule__SloQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__0"
-    // InternalDescartesQL.g:4174:1: rule__Slo__Group__0 : rule__Slo__Group__0__Impl rule__Slo__Group__1 ;
-    public final void rule__Slo__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group_2__0"
+    // InternalDescartesQL.g:4261:1: rule__SloQuery__Group_2__0 : rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1 ;
+    public final void rule__SloQuery__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4178:1: ( rule__Slo__Group__0__Impl rule__Slo__Group__1 )
-            // InternalDescartesQL.g:4179:2: rule__Slo__Group__0__Impl rule__Slo__Group__1
+            // InternalDescartesQL.g:4265:1: ( rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1 )
+            // InternalDescartesQL.g:4266:2: rule__SloQuery__Group_2__0__Impl rule__SloQuery__Group_2__1
             {
-            pushFollow(FOLLOW_13);
-            rule__Slo__Group__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__SloQuery__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__1();
+            rule__SloQuery__Group_2__1();
 
             state._fsp--;
 
@@ -12070,35 +12430,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__0"
+    // $ANTLR end "rule__SloQuery__Group_2__0"
 
 
-    // $ANTLR start "rule__Slo__Group__0__Impl"
-    // InternalDescartesQL.g:4186:1: rule__Slo__Group__0__Impl : ( ( rule__Slo__NameAssignment_0 ) ) ;
-    public final void rule__Slo__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group_2__0__Impl"
+    // InternalDescartesQL.g:4273:1: rule__SloQuery__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__SloQuery__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4190:1: ( ( ( rule__Slo__NameAssignment_0 ) ) )
-            // InternalDescartesQL.g:4191:1: ( ( rule__Slo__NameAssignment_0 ) )
+            // InternalDescartesQL.g:4277:1: ( ( ',' ) )
+            // InternalDescartesQL.g:4278:1: ( ',' )
             {
-            // InternalDescartesQL.g:4191:1: ( ( rule__Slo__NameAssignment_0 ) )
-            // InternalDescartesQL.g:4192:1: ( rule__Slo__NameAssignment_0 )
+            // InternalDescartesQL.g:4278:1: ( ',' )
+            // InternalDescartesQL.g:4279:1: ','
             {
-             before(grammarAccess.getSloAccess().getNameAssignment_0()); 
-            // InternalDescartesQL.g:4193:1: ( rule__Slo__NameAssignment_0 )
-            // InternalDescartesQL.g:4193:2: rule__Slo__NameAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__Slo__NameAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSloAccess().getNameAssignment_0()); 
+             before(grammarAccess.getSloQueryAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getSloQueryAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -12117,26 +12467,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__0__Impl"
+    // $ANTLR end "rule__SloQuery__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__1"
-    // InternalDescartesQL.g:4203:1: rule__Slo__Group__1 : rule__Slo__Group__1__Impl rule__Slo__Group__2 ;
-    public final void rule__Slo__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group_2__1"
+    // InternalDescartesQL.g:4292:1: rule__SloQuery__Group_2__1 : rule__SloQuery__Group_2__1__Impl ;
+    public final void rule__SloQuery__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4207:1: ( rule__Slo__Group__1__Impl rule__Slo__Group__2 )
-            // InternalDescartesQL.g:4208:2: rule__Slo__Group__1__Impl rule__Slo__Group__2
+            // InternalDescartesQL.g:4296:1: ( rule__SloQuery__Group_2__1__Impl )
+            // InternalDescartesQL.g:4297:2: rule__SloQuery__Group_2__1__Impl
             {
-            pushFollow(FOLLOW_14);
-            rule__Slo__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__2();
+            rule__SloQuery__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -12155,25 +12500,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__1"
+    // $ANTLR end "rule__SloQuery__Group_2__1"
 
 
-    // $ANTLR start "rule__Slo__Group__1__Impl"
-    // InternalDescartesQL.g:4215:1: rule__Slo__Group__1__Impl : ( ':' ) ;
-    public final void rule__Slo__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SloQuery__Group_2__1__Impl"
+    // InternalDescartesQL.g:4303:1: rule__SloQuery__Group_2__1__Impl : ( ( rule__SloQuery__SlosAssignment_2_1 ) ) ;
+    public final void rule__SloQuery__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4219:1: ( ( ':' ) )
-            // InternalDescartesQL.g:4220:1: ( ':' )
+            // InternalDescartesQL.g:4307:1: ( ( ( rule__SloQuery__SlosAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:4308:1: ( ( rule__SloQuery__SlosAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:4220:1: ( ':' )
-            // InternalDescartesQL.g:4221:1: ':'
+            // InternalDescartesQL.g:4308:1: ( ( rule__SloQuery__SlosAssignment_2_1 ) )
+            // InternalDescartesQL.g:4309:1: ( rule__SloQuery__SlosAssignment_2_1 )
             {
-             before(grammarAccess.getSloAccess().getColonKeyword_1()); 
-            match(input,57,FOLLOW_2); 
-             after(grammarAccess.getSloAccess().getColonKeyword_1()); 
+             before(grammarAccess.getSloQueryAccess().getSlosAssignment_2_1()); 
+            // InternalDescartesQL.g:4310:1: ( rule__SloQuery__SlosAssignment_2_1 )
+            // InternalDescartesQL.g:4310:2: rule__SloQuery__SlosAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SloQuery__SlosAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSloQueryAccess().getSlosAssignment_2_1()); 
 
             }
 
@@ -12192,26 +12547,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__1__Impl"
+    // $ANTLR end "rule__SloQuery__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__2"
-    // InternalDescartesQL.g:4234:1: rule__Slo__Group__2 : rule__Slo__Group__2__Impl rule__Slo__Group__3 ;
-    public final void rule__Slo__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__0"
+    // InternalDescartesQL.g:4324:1: rule__Sla__Group__0 : rule__Sla__Group__0__Impl rule__Sla__Group__1 ;
+    public final void rule__Sla__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4238:1: ( rule__Slo__Group__2__Impl rule__Slo__Group__3 )
-            // InternalDescartesQL.g:4239:2: rule__Slo__Group__2__Impl rule__Slo__Group__3
+            // InternalDescartesQL.g:4328:1: ( rule__Sla__Group__0__Impl rule__Sla__Group__1 )
+            // InternalDescartesQL.g:4329:2: rule__Sla__Group__0__Impl rule__Sla__Group__1
             {
-            pushFollow(FOLLOW_15);
-            rule__Slo__Group__2__Impl();
+            pushFollow(FOLLOW_13);
+            rule__Sla__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__3();
+            rule__Sla__Group__1();
 
             state._fsp--;
 
@@ -12230,35 +12585,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__2"
+    // $ANTLR end "rule__Sla__Group__0"
 
 
-    // $ANTLR start "rule__Slo__Group__2__Impl"
-    // InternalDescartesQL.g:4246:1: rule__Slo__Group__2__Impl : ( ( rule__Slo__MetricClauseTypeAssignment_2 ) ) ;
-    public final void rule__Slo__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__0__Impl"
+    // InternalDescartesQL.g:4336:1: rule__Sla__Group__0__Impl : ( ( rule__Sla__NameAssignment_0 ) ) ;
+    public final void rule__Sla__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4250:1: ( ( ( rule__Slo__MetricClauseTypeAssignment_2 ) ) )
-            // InternalDescartesQL.g:4251:1: ( ( rule__Slo__MetricClauseTypeAssignment_2 ) )
+            // InternalDescartesQL.g:4340:1: ( ( ( rule__Sla__NameAssignment_0 ) ) )
+            // InternalDescartesQL.g:4341:1: ( ( rule__Sla__NameAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4251:1: ( ( rule__Slo__MetricClauseTypeAssignment_2 ) )
-            // InternalDescartesQL.g:4252:1: ( rule__Slo__MetricClauseTypeAssignment_2 )
+            // InternalDescartesQL.g:4341:1: ( ( rule__Sla__NameAssignment_0 ) )
+            // InternalDescartesQL.g:4342:1: ( rule__Sla__NameAssignment_0 )
             {
-             before(grammarAccess.getSloAccess().getMetricClauseTypeAssignment_2()); 
-            // InternalDescartesQL.g:4253:1: ( rule__Slo__MetricClauseTypeAssignment_2 )
-            // InternalDescartesQL.g:4253:2: rule__Slo__MetricClauseTypeAssignment_2
+             before(grammarAccess.getSlaAccess().getNameAssignment_0()); 
+            // InternalDescartesQL.g:4343:1: ( rule__Sla__NameAssignment_0 )
+            // InternalDescartesQL.g:4343:2: rule__Sla__NameAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__Slo__MetricClauseTypeAssignment_2();
+            rule__Sla__NameAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSloAccess().getMetricClauseTypeAssignment_2()); 
+             after(grammarAccess.getSlaAccess().getNameAssignment_0()); 
 
             }
 
@@ -12277,26 +12632,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__2__Impl"
+    // $ANTLR end "rule__Sla__Group__0__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__3"
-    // InternalDescartesQL.g:4263:1: rule__Slo__Group__3 : rule__Slo__Group__3__Impl rule__Slo__Group__4 ;
-    public final void rule__Slo__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__1"
+    // InternalDescartesQL.g:4353:1: rule__Sla__Group__1 : rule__Sla__Group__1__Impl rule__Sla__Group__2 ;
+    public final void rule__Sla__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4267:1: ( rule__Slo__Group__3__Impl rule__Slo__Group__4 )
-            // InternalDescartesQL.g:4268:2: rule__Slo__Group__3__Impl rule__Slo__Group__4
+            // InternalDescartesQL.g:4357:1: ( rule__Sla__Group__1__Impl rule__Sla__Group__2 )
+            // InternalDescartesQL.g:4358:2: rule__Sla__Group__1__Impl rule__Sla__Group__2
             {
-            pushFollow(FOLLOW_16);
-            rule__Slo__Group__3__Impl();
+            pushFollow(FOLLOW_14);
+            rule__Sla__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__4();
+            rule__Sla__Group__2();
 
             state._fsp--;
 
@@ -12315,35 +12670,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__3"
+    // $ANTLR end "rule__Sla__Group__1"
 
 
-    // $ANTLR start "rule__Slo__Group__3__Impl"
-    // InternalDescartesQL.g:4275:1: rule__Slo__Group__3__Impl : ( ( rule__Slo__ComparatorAssignment_3 ) ) ;
-    public final void rule__Slo__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__1__Impl"
+    // InternalDescartesQL.g:4365:1: rule__Sla__Group__1__Impl : ( 'CONTAINS' ) ;
+    public final void rule__Sla__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4279:1: ( ( ( rule__Slo__ComparatorAssignment_3 ) ) )
-            // InternalDescartesQL.g:4280:1: ( ( rule__Slo__ComparatorAssignment_3 ) )
-            {
-            // InternalDescartesQL.g:4280:1: ( ( rule__Slo__ComparatorAssignment_3 ) )
-            // InternalDescartesQL.g:4281:1: ( rule__Slo__ComparatorAssignment_3 )
+            // InternalDescartesQL.g:4369:1: ( ( 'CONTAINS' ) )
+            // InternalDescartesQL.g:4370:1: ( 'CONTAINS' )
             {
-             before(grammarAccess.getSloAccess().getComparatorAssignment_3()); 
-            // InternalDescartesQL.g:4282:1: ( rule__Slo__ComparatorAssignment_3 )
-            // InternalDescartesQL.g:4282:2: rule__Slo__ComparatorAssignment_3
+            // InternalDescartesQL.g:4370:1: ( 'CONTAINS' )
+            // InternalDescartesQL.g:4371:1: 'CONTAINS'
             {
-            pushFollow(FOLLOW_2);
-            rule__Slo__ComparatorAssignment_3();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSloAccess().getComparatorAssignment_3()); 
+             before(grammarAccess.getSlaAccess().getCONTAINSKeyword_1()); 
+            match(input,58,FOLLOW_2); 
+             after(grammarAccess.getSlaAccess().getCONTAINSKeyword_1()); 
 
             }
 
@@ -12362,26 +12707,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__3__Impl"
+    // $ANTLR end "rule__Sla__Group__1__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__4"
-    // InternalDescartesQL.g:4292:1: rule__Slo__Group__4 : rule__Slo__Group__4__Impl rule__Slo__Group__5 ;
-    public final void rule__Slo__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__2"
+    // InternalDescartesQL.g:4384:1: rule__Sla__Group__2 : rule__Sla__Group__2__Impl rule__Sla__Group__3 ;
+    public final void rule__Sla__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4296:1: ( rule__Slo__Group__4__Impl rule__Slo__Group__5 )
-            // InternalDescartesQL.g:4297:2: rule__Slo__Group__4__Impl rule__Slo__Group__5
+            // InternalDescartesQL.g:4388:1: ( rule__Sla__Group__2__Impl rule__Sla__Group__3 )
+            // InternalDescartesQL.g:4389:2: rule__Sla__Group__2__Impl rule__Sla__Group__3
             {
-            pushFollow(FOLLOW_17);
-            rule__Slo__Group__4__Impl();
+            pushFollow(FOLLOW_10);
+            rule__Sla__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__5();
+            rule__Sla__Group__3();
 
             state._fsp--;
 
@@ -12400,35 +12745,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__4"
+    // $ANTLR end "rule__Sla__Group__2"
 
 
-    // $ANTLR start "rule__Slo__Group__4__Impl"
-    // InternalDescartesQL.g:4304:1: rule__Slo__Group__4__Impl : ( ( rule__Slo__ValueAssignment_4 ) ) ;
-    public final void rule__Slo__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__2__Impl"
+    // InternalDescartesQL.g:4396:1: rule__Sla__Group__2__Impl : ( '(' ) ;
+    public final void rule__Sla__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4308:1: ( ( ( rule__Slo__ValueAssignment_4 ) ) )
-            // InternalDescartesQL.g:4309:1: ( ( rule__Slo__ValueAssignment_4 ) )
-            {
-            // InternalDescartesQL.g:4309:1: ( ( rule__Slo__ValueAssignment_4 ) )
-            // InternalDescartesQL.g:4310:1: ( rule__Slo__ValueAssignment_4 )
+            // InternalDescartesQL.g:4400:1: ( ( '(' ) )
+            // InternalDescartesQL.g:4401:1: ( '(' )
             {
-             before(grammarAccess.getSloAccess().getValueAssignment_4()); 
-            // InternalDescartesQL.g:4311:1: ( rule__Slo__ValueAssignment_4 )
-            // InternalDescartesQL.g:4311:2: rule__Slo__ValueAssignment_4
+            // InternalDescartesQL.g:4401:1: ( '(' )
+            // InternalDescartesQL.g:4402:1: '('
             {
-            pushFollow(FOLLOW_2);
-            rule__Slo__ValueAssignment_4();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSloAccess().getValueAssignment_4()); 
+             before(grammarAccess.getSlaAccess().getLeftParenthesisKeyword_2()); 
+            match(input,59,FOLLOW_2); 
+             after(grammarAccess.getSlaAccess().getLeftParenthesisKeyword_2()); 
 
             }
 
@@ -12447,26 +12782,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__4__Impl"
+    // $ANTLR end "rule__Sla__Group__2__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__5"
-    // InternalDescartesQL.g:4321:1: rule__Slo__Group__5 : rule__Slo__Group__5__Impl rule__Slo__Group__6 ;
-    public final void rule__Slo__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__3"
+    // InternalDescartesQL.g:4415:1: rule__Sla__Group__3 : rule__Sla__Group__3__Impl rule__Sla__Group__4 ;
+    public final void rule__Sla__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4325:1: ( rule__Slo__Group__5__Impl rule__Slo__Group__6 )
-            // InternalDescartesQL.g:4326:2: rule__Slo__Group__5__Impl rule__Slo__Group__6
+            // InternalDescartesQL.g:4419:1: ( rule__Sla__Group__3__Impl rule__Sla__Group__4 )
+            // InternalDescartesQL.g:4420:2: rule__Sla__Group__3__Impl rule__Sla__Group__4
             {
-            pushFollow(FOLLOW_17);
-            rule__Slo__Group__5__Impl();
+            pushFollow(FOLLOW_15);
+            rule__Sla__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__6();
+            rule__Sla__Group__4();
 
             state._fsp--;
 
@@ -12485,46 +12820,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__5"
-
+    // $ANTLR end "rule__Sla__Group__3"
 
-    // $ANTLR start "rule__Slo__Group__5__Impl"
-    // InternalDescartesQL.g:4333:1: rule__Slo__Group__5__Impl : ( ( rule__Slo__FuzAssignment_5 )? ) ;
-    public final void rule__Slo__Group__5__Impl() throws RecognitionException {
+
+    // $ANTLR start "rule__Sla__Group__3__Impl"
+    // InternalDescartesQL.g:4427:1: rule__Sla__Group__3__Impl : ( ( rule__Sla__WeightedSloAssignment_3 ) ) ;
+    public final void rule__Sla__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4337:1: ( ( ( rule__Slo__FuzAssignment_5 )? ) )
-            // InternalDescartesQL.g:4338:1: ( ( rule__Slo__FuzAssignment_5 )? )
+            // InternalDescartesQL.g:4431:1: ( ( ( rule__Sla__WeightedSloAssignment_3 ) ) )
+            // InternalDescartesQL.g:4432:1: ( ( rule__Sla__WeightedSloAssignment_3 ) )
             {
-            // InternalDescartesQL.g:4338:1: ( ( rule__Slo__FuzAssignment_5 )? )
-            // InternalDescartesQL.g:4339:1: ( rule__Slo__FuzAssignment_5 )?
+            // InternalDescartesQL.g:4432:1: ( ( rule__Sla__WeightedSloAssignment_3 ) )
+            // InternalDescartesQL.g:4433:1: ( rule__Sla__WeightedSloAssignment_3 )
             {
-             before(grammarAccess.getSloAccess().getFuzAssignment_5()); 
-            // InternalDescartesQL.g:4340:1: ( rule__Slo__FuzAssignment_5 )?
-            int alt33=2;
-            int LA33_0 = input.LA(1);
-
-            if ( (LA33_0==77) ) {
-                alt33=1;
-            }
-            switch (alt33) {
-                case 1 :
-                    // InternalDescartesQL.g:4340:2: rule__Slo__FuzAssignment_5
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__Slo__FuzAssignment_5();
-
-                    state._fsp--;
+             before(grammarAccess.getSlaAccess().getWeightedSloAssignment_3()); 
+            // InternalDescartesQL.g:4434:1: ( rule__Sla__WeightedSloAssignment_3 )
+            // InternalDescartesQL.g:4434:2: rule__Sla__WeightedSloAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__Sla__WeightedSloAssignment_3();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getSloAccess().getFuzAssignment_5()); 
+             after(grammarAccess.getSlaAccess().getWeightedSloAssignment_3()); 
 
             }
 
@@ -12543,21 +12867,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__5__Impl"
+    // $ANTLR end "rule__Sla__Group__3__Impl"
 
 
-    // $ANTLR start "rule__Slo__Group__6"
-    // InternalDescartesQL.g:4350:1: rule__Slo__Group__6 : rule__Slo__Group__6__Impl ;
-    public final void rule__Slo__Group__6() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__4"
+    // InternalDescartesQL.g:4444:1: rule__Sla__Group__4 : rule__Sla__Group__4__Impl rule__Sla__Group__5 ;
+    public final void rule__Sla__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4354:1: ( rule__Slo__Group__6__Impl )
-            // InternalDescartesQL.g:4355:2: rule__Slo__Group__6__Impl
+            // InternalDescartesQL.g:4448:1: ( rule__Sla__Group__4__Impl rule__Sla__Group__5 )
+            // InternalDescartesQL.g:4449:2: rule__Sla__Group__4__Impl rule__Sla__Group__5
             {
+            pushFollow(FOLLOW_15);
+            rule__Sla__Group__4__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__Slo__Group__6__Impl();
+            rule__Sla__Group__5();
 
             state._fsp--;
 
@@ -12576,46 +12905,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__6"
+    // $ANTLR end "rule__Sla__Group__4"
 
 
-    // $ANTLR start "rule__Slo__Group__6__Impl"
-    // InternalDescartesQL.g:4361:1: rule__Slo__Group__6__Impl : ( ( rule__Slo__PenAssignment_6 )? ) ;
-    public final void rule__Slo__Group__6__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__4__Impl"
+    // InternalDescartesQL.g:4456:1: rule__Sla__Group__4__Impl : ( ( rule__Sla__Group_4__0 )* ) ;
+    public final void rule__Sla__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4365:1: ( ( ( rule__Slo__PenAssignment_6 )? ) )
-            // InternalDescartesQL.g:4366:1: ( ( rule__Slo__PenAssignment_6 )? )
+            // InternalDescartesQL.g:4460:1: ( ( ( rule__Sla__Group_4__0 )* ) )
+            // InternalDescartesQL.g:4461:1: ( ( rule__Sla__Group_4__0 )* )
             {
-            // InternalDescartesQL.g:4366:1: ( ( rule__Slo__PenAssignment_6 )? )
-            // InternalDescartesQL.g:4367:1: ( rule__Slo__PenAssignment_6 )?
+            // InternalDescartesQL.g:4461:1: ( ( rule__Sla__Group_4__0 )* )
+            // InternalDescartesQL.g:4462:1: ( rule__Sla__Group_4__0 )*
             {
-             before(grammarAccess.getSloAccess().getPenAssignment_6()); 
-            // InternalDescartesQL.g:4368:1: ( rule__Slo__PenAssignment_6 )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+             before(grammarAccess.getSlaAccess().getGroup_4()); 
+            // InternalDescartesQL.g:4463:1: ( rule__Sla__Group_4__0 )*
+            loop38:
+            do {
+                int alt38=2;
+                int LA38_0 = input.LA(1);
 
-            if ( (LA34_0==78) ) {
-                alt34=1;
-            }
-            switch (alt34) {
-                case 1 :
-                    // InternalDescartesQL.g:4368:2: rule__Slo__PenAssignment_6
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__Slo__PenAssignment_6();
+                if ( (LA38_0==57) ) {
+                    alt38=1;
+                }
 
-                    state._fsp--;
 
+                switch (alt38) {
+            	case 1 :
+            	    // InternalDescartesQL.g:4463:2: rule__Sla__Group_4__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__Sla__Group_4__0();
 
-                    }
-                    break;
+            	    state._fsp--;
 
-            }
 
-             after(grammarAccess.getSloAccess().getPenAssignment_6()); 
+            	    }
+            	    break;
+
+            	default :
+            	    break loop38;
+                }
+            } while (true);
+
+             after(grammarAccess.getSlaAccess().getGroup_4()); 
 
             }
 
@@ -12634,26 +12970,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Slo__Group__6__Impl"
+    // $ANTLR end "rule__Sla__Group__4__Impl"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group__0"
-    // InternalDescartesQL.g:4392:1: rule__WeightedSlo__Group__0 : rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1 ;
-    public final void rule__WeightedSlo__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__5"
+    // InternalDescartesQL.g:4473:1: rule__Sla__Group__5 : rule__Sla__Group__5__Impl ;
+    public final void rule__Sla__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4396:1: ( rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1 )
-            // InternalDescartesQL.g:4397:2: rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1
+            // InternalDescartesQL.g:4477:1: ( rule__Sla__Group__5__Impl )
+            // InternalDescartesQL.g:4478:2: rule__Sla__Group__5__Impl
             {
-            pushFollow(FOLLOW_18);
-            rule__WeightedSlo__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__WeightedSlo__Group__1();
+            rule__Sla__Group__5__Impl();
 
             state._fsp--;
 
@@ -12672,35 +13003,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group__0"
+    // $ANTLR end "rule__Sla__Group__5"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group__0__Impl"
-    // InternalDescartesQL.g:4404:1: rule__WeightedSlo__Group__0__Impl : ( ( rule__WeightedSlo__SloAssignment_0 ) ) ;
-    public final void rule__WeightedSlo__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group__5__Impl"
+    // InternalDescartesQL.g:4484:1: rule__Sla__Group__5__Impl : ( ')' ) ;
+    public final void rule__Sla__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4408:1: ( ( ( rule__WeightedSlo__SloAssignment_0 ) ) )
-            // InternalDescartesQL.g:4409:1: ( ( rule__WeightedSlo__SloAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:4409:1: ( ( rule__WeightedSlo__SloAssignment_0 ) )
-            // InternalDescartesQL.g:4410:1: ( rule__WeightedSlo__SloAssignment_0 )
+            // InternalDescartesQL.g:4488:1: ( ( ')' ) )
+            // InternalDescartesQL.g:4489:1: ( ')' )
             {
-             before(grammarAccess.getWeightedSloAccess().getSloAssignment_0()); 
-            // InternalDescartesQL.g:4411:1: ( rule__WeightedSlo__SloAssignment_0 )
-            // InternalDescartesQL.g:4411:2: rule__WeightedSlo__SloAssignment_0
+            // InternalDescartesQL.g:4489:1: ( ')' )
+            // InternalDescartesQL.g:4490:1: ')'
             {
-            pushFollow(FOLLOW_2);
-            rule__WeightedSlo__SloAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWeightedSloAccess().getSloAssignment_0()); 
+             before(grammarAccess.getSlaAccess().getRightParenthesisKeyword_5()); 
+            match(input,60,FOLLOW_2); 
+             after(grammarAccess.getSlaAccess().getRightParenthesisKeyword_5()); 
 
             }
 
@@ -12719,21 +13040,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group__0__Impl"
+    // $ANTLR end "rule__Sla__Group__5__Impl"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group__1"
-    // InternalDescartesQL.g:4421:1: rule__WeightedSlo__Group__1 : rule__WeightedSlo__Group__1__Impl ;
-    public final void rule__WeightedSlo__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group_4__0"
+    // InternalDescartesQL.g:4515:1: rule__Sla__Group_4__0 : rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1 ;
+    public final void rule__Sla__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4425:1: ( rule__WeightedSlo__Group__1__Impl )
-            // InternalDescartesQL.g:4426:2: rule__WeightedSlo__Group__1__Impl
+            // InternalDescartesQL.g:4519:1: ( rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1 )
+            // InternalDescartesQL.g:4520:2: rule__Sla__Group_4__0__Impl rule__Sla__Group_4__1
             {
+            pushFollow(FOLLOW_10);
+            rule__Sla__Group_4__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__WeightedSlo__Group__1__Impl();
+            rule__Sla__Group_4__1();
 
             state._fsp--;
 
@@ -12752,46 +13078,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group__1"
+    // $ANTLR end "rule__Sla__Group_4__0"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group__1__Impl"
-    // InternalDescartesQL.g:4432:1: rule__WeightedSlo__Group__1__Impl : ( ( rule__WeightedSlo__Group_1__0 )? ) ;
-    public final void rule__WeightedSlo__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group_4__0__Impl"
+    // InternalDescartesQL.g:4527:1: rule__Sla__Group_4__0__Impl : ( ',' ) ;
+    public final void rule__Sla__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4436:1: ( ( ( rule__WeightedSlo__Group_1__0 )? ) )
-            // InternalDescartesQL.g:4437:1: ( ( rule__WeightedSlo__Group_1__0 )? )
+            // InternalDescartesQL.g:4531:1: ( ( ',' ) )
+            // InternalDescartesQL.g:4532:1: ( ',' )
             {
-            // InternalDescartesQL.g:4437:1: ( ( rule__WeightedSlo__Group_1__0 )? )
-            // InternalDescartesQL.g:4438:1: ( rule__WeightedSlo__Group_1__0 )?
+            // InternalDescartesQL.g:4532:1: ( ',' )
+            // InternalDescartesQL.g:4533:1: ','
             {
-             before(grammarAccess.getWeightedSloAccess().getGroup_1()); 
-            // InternalDescartesQL.g:4439:1: ( rule__WeightedSlo__Group_1__0 )?
-            int alt35=2;
-            int LA35_0 = input.LA(1);
-
-            if ( (LA35_0==58) ) {
-                alt35=1;
-            }
-            switch (alt35) {
-                case 1 :
-                    // InternalDescartesQL.g:4439:2: rule__WeightedSlo__Group_1__0
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__WeightedSlo__Group_1__0();
-
-                    state._fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-             after(grammarAccess.getWeightedSloAccess().getGroup_1()); 
+             before(grammarAccess.getSlaAccess().getCommaKeyword_4_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getSlaAccess().getCommaKeyword_4_0()); 
 
             }
 
@@ -12810,26 +13115,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group__1__Impl"
+    // $ANTLR end "rule__Sla__Group_4__0__Impl"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group_1__0"
-    // InternalDescartesQL.g:4453:1: rule__WeightedSlo__Group_1__0 : rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1 ;
-    public final void rule__WeightedSlo__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group_4__1"
+    // InternalDescartesQL.g:4546:1: rule__Sla__Group_4__1 : rule__Sla__Group_4__1__Impl ;
+    public final void rule__Sla__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4457:1: ( rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1 )
-            // InternalDescartesQL.g:4458:2: rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1
+            // InternalDescartesQL.g:4550:1: ( rule__Sla__Group_4__1__Impl )
+            // InternalDescartesQL.g:4551:2: rule__Sla__Group_4__1__Impl
             {
-            pushFollow(FOLLOW_19);
-            rule__WeightedSlo__Group_1__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__WeightedSlo__Group_1__1();
+            rule__Sla__Group_4__1__Impl();
 
             state._fsp--;
 
@@ -12848,25 +13148,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group_1__0"
+    // $ANTLR end "rule__Sla__Group_4__1"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group_1__0__Impl"
-    // InternalDescartesQL.g:4465:1: rule__WeightedSlo__Group_1__0__Impl : ( '*' ) ;
-    public final void rule__WeightedSlo__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Sla__Group_4__1__Impl"
+    // InternalDescartesQL.g:4557:1: rule__Sla__Group_4__1__Impl : ( ( rule__Sla__WeightedSloAssignment_4_1 ) ) ;
+    public final void rule__Sla__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4469:1: ( ( '*' ) )
-            // InternalDescartesQL.g:4470:1: ( '*' )
+            // InternalDescartesQL.g:4561:1: ( ( ( rule__Sla__WeightedSloAssignment_4_1 ) ) )
+            // InternalDescartesQL.g:4562:1: ( ( rule__Sla__WeightedSloAssignment_4_1 ) )
             {
-            // InternalDescartesQL.g:4470:1: ( '*' )
-            // InternalDescartesQL.g:4471:1: '*'
+            // InternalDescartesQL.g:4562:1: ( ( rule__Sla__WeightedSloAssignment_4_1 ) )
+            // InternalDescartesQL.g:4563:1: ( rule__Sla__WeightedSloAssignment_4_1 )
             {
-             before(grammarAccess.getWeightedSloAccess().getAsteriskKeyword_1_0()); 
-            match(input,58,FOLLOW_2); 
-             after(grammarAccess.getWeightedSloAccess().getAsteriskKeyword_1_0()); 
+             before(grammarAccess.getSlaAccess().getWeightedSloAssignment_4_1()); 
+            // InternalDescartesQL.g:4564:1: ( rule__Sla__WeightedSloAssignment_4_1 )
+            // InternalDescartesQL.g:4564:2: rule__Sla__WeightedSloAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Sla__WeightedSloAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSlaAccess().getWeightedSloAssignment_4_1()); 
 
             }
 
@@ -12885,21 +13195,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group_1__0__Impl"
+    // $ANTLR end "rule__Sla__Group_4__1__Impl"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group_1__1"
-    // InternalDescartesQL.g:4484:1: rule__WeightedSlo__Group_1__1 : rule__WeightedSlo__Group_1__1__Impl ;
-    public final void rule__WeightedSlo__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__0"
+    // InternalDescartesQL.g:4578:1: rule__Slo__Group__0 : rule__Slo__Group__0__Impl rule__Slo__Group__1 ;
+    public final void rule__Slo__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4488:1: ( rule__WeightedSlo__Group_1__1__Impl )
-            // InternalDescartesQL.g:4489:2: rule__WeightedSlo__Group_1__1__Impl
+            // InternalDescartesQL.g:4582:1: ( rule__Slo__Group__0__Impl rule__Slo__Group__1 )
+            // InternalDescartesQL.g:4583:2: rule__Slo__Group__0__Impl rule__Slo__Group__1
             {
+            pushFollow(FOLLOW_16);
+            rule__Slo__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__WeightedSlo__Group_1__1__Impl();
+            rule__Slo__Group__1();
 
             state._fsp--;
 
@@ -12918,35 +13233,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group_1__1"
+    // $ANTLR end "rule__Slo__Group__0"
 
 
-    // $ANTLR start "rule__WeightedSlo__Group_1__1__Impl"
-    // InternalDescartesQL.g:4495:1: rule__WeightedSlo__Group_1__1__Impl : ( ( rule__WeightedSlo__WeightAssignment_1_1 ) ) ;
-    public final void rule__WeightedSlo__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__0__Impl"
+    // InternalDescartesQL.g:4590:1: rule__Slo__Group__0__Impl : ( ( rule__Slo__NameAssignment_0 ) ) ;
+    public final void rule__Slo__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4499:1: ( ( ( rule__WeightedSlo__WeightAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:4500:1: ( ( rule__WeightedSlo__WeightAssignment_1_1 ) )
+            // InternalDescartesQL.g:4594:1: ( ( ( rule__Slo__NameAssignment_0 ) ) )
+            // InternalDescartesQL.g:4595:1: ( ( rule__Slo__NameAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4500:1: ( ( rule__WeightedSlo__WeightAssignment_1_1 ) )
-            // InternalDescartesQL.g:4501:1: ( rule__WeightedSlo__WeightAssignment_1_1 )
+            // InternalDescartesQL.g:4595:1: ( ( rule__Slo__NameAssignment_0 ) )
+            // InternalDescartesQL.g:4596:1: ( rule__Slo__NameAssignment_0 )
             {
-             before(grammarAccess.getWeightedSloAccess().getWeightAssignment_1_1()); 
-            // InternalDescartesQL.g:4502:1: ( rule__WeightedSlo__WeightAssignment_1_1 )
-            // InternalDescartesQL.g:4502:2: rule__WeightedSlo__WeightAssignment_1_1
+             before(grammarAccess.getSloAccess().getNameAssignment_0()); 
+            // InternalDescartesQL.g:4597:1: ( rule__Slo__NameAssignment_0 )
+            // InternalDescartesQL.g:4597:2: rule__Slo__NameAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__WeightedSlo__WeightAssignment_1_1();
+            rule__Slo__NameAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWeightedSloAccess().getWeightAssignment_1_1()); 
+             after(grammarAccess.getSloAccess().getNameAssignment_0()); 
 
             }
 
@@ -12965,26 +13280,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WeightedSlo__Group_1__1__Impl"
+    // $ANTLR end "rule__Slo__Group__0__Impl"
 
 
-    // $ANTLR start "rule__Fuzziness__Group__0"
-    // InternalDescartesQL.g:4516:1: rule__Fuzziness__Group__0 : rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1 ;
-    public final void rule__Fuzziness__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__1"
+    // InternalDescartesQL.g:4607:1: rule__Slo__Group__1 : rule__Slo__Group__1__Impl rule__Slo__Group__2 ;
+    public final void rule__Slo__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4520:1: ( rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1 )
-            // InternalDescartesQL.g:4521:2: rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1
+            // InternalDescartesQL.g:4611:1: ( rule__Slo__Group__1__Impl rule__Slo__Group__2 )
+            // InternalDescartesQL.g:4612:2: rule__Slo__Group__1__Impl rule__Slo__Group__2
             {
-            pushFollow(FOLLOW_16);
-            rule__Fuzziness__Group__0__Impl();
+            pushFollow(FOLLOW_17);
+            rule__Slo__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Fuzziness__Group__1();
+            rule__Slo__Group__2();
 
             state._fsp--;
 
@@ -13003,35 +13318,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Fuzziness__Group__0"
+    // $ANTLR end "rule__Slo__Group__1"
 
 
-    // $ANTLR start "rule__Fuzziness__Group__0__Impl"
-    // InternalDescartesQL.g:4528:1: rule__Fuzziness__Group__0__Impl : ( ( rule__Fuzziness__TypeAssignment_0 ) ) ;
-    public final void rule__Fuzziness__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__1__Impl"
+    // InternalDescartesQL.g:4619:1: rule__Slo__Group__1__Impl : ( ':' ) ;
+    public final void rule__Slo__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4532:1: ( ( ( rule__Fuzziness__TypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:4533:1: ( ( rule__Fuzziness__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:4623:1: ( ( ':' ) )
+            // InternalDescartesQL.g:4624:1: ( ':' )
             {
-            // InternalDescartesQL.g:4533:1: ( ( rule__Fuzziness__TypeAssignment_0 ) )
-            // InternalDescartesQL.g:4534:1: ( rule__Fuzziness__TypeAssignment_0 )
-            {
-             before(grammarAccess.getFuzzinessAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:4535:1: ( rule__Fuzziness__TypeAssignment_0 )
-            // InternalDescartesQL.g:4535:2: rule__Fuzziness__TypeAssignment_0
+            // InternalDescartesQL.g:4624:1: ( ':' )
+            // InternalDescartesQL.g:4625:1: ':'
             {
-            pushFollow(FOLLOW_2);
-            rule__Fuzziness__TypeAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getFuzzinessAccess().getTypeAssignment_0()); 
+             before(grammarAccess.getSloAccess().getColonKeyword_1()); 
+            match(input,61,FOLLOW_2); 
+             after(grammarAccess.getSloAccess().getColonKeyword_1()); 
 
             }
 
@@ -13050,21 +13355,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Fuzziness__Group__0__Impl"
+    // $ANTLR end "rule__Slo__Group__1__Impl"
 
 
-    // $ANTLR start "rule__Fuzziness__Group__1"
-    // InternalDescartesQL.g:4545:1: rule__Fuzziness__Group__1 : rule__Fuzziness__Group__1__Impl ;
-    public final void rule__Fuzziness__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__2"
+    // InternalDescartesQL.g:4638:1: rule__Slo__Group__2 : rule__Slo__Group__2__Impl rule__Slo__Group__3 ;
+    public final void rule__Slo__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4549:1: ( rule__Fuzziness__Group__1__Impl )
-            // InternalDescartesQL.g:4550:2: rule__Fuzziness__Group__1__Impl
+            // InternalDescartesQL.g:4642:1: ( rule__Slo__Group__2__Impl rule__Slo__Group__3 )
+            // InternalDescartesQL.g:4643:2: rule__Slo__Group__2__Impl rule__Slo__Group__3
             {
+            pushFollow(FOLLOW_18);
+            rule__Slo__Group__2__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__Fuzziness__Group__1__Impl();
+            rule__Slo__Group__3();
 
             state._fsp--;
 
@@ -13083,35 +13393,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Fuzziness__Group__1"
+    // $ANTLR end "rule__Slo__Group__2"
 
 
-    // $ANTLR start "rule__Fuzziness__Group__1__Impl"
-    // InternalDescartesQL.g:4556:1: rule__Fuzziness__Group__1__Impl : ( ( rule__Fuzziness__DeviationAssignment_1 ) ) ;
-    public final void rule__Fuzziness__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__2__Impl"
+    // InternalDescartesQL.g:4650:1: rule__Slo__Group__2__Impl : ( ( rule__Slo__MetricClauseTypeAssignment_2 ) ) ;
+    public final void rule__Slo__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4560:1: ( ( ( rule__Fuzziness__DeviationAssignment_1 ) ) )
-            // InternalDescartesQL.g:4561:1: ( ( rule__Fuzziness__DeviationAssignment_1 ) )
+            // InternalDescartesQL.g:4654:1: ( ( ( rule__Slo__MetricClauseTypeAssignment_2 ) ) )
+            // InternalDescartesQL.g:4655:1: ( ( rule__Slo__MetricClauseTypeAssignment_2 ) )
             {
-            // InternalDescartesQL.g:4561:1: ( ( rule__Fuzziness__DeviationAssignment_1 ) )
-            // InternalDescartesQL.g:4562:1: ( rule__Fuzziness__DeviationAssignment_1 )
+            // InternalDescartesQL.g:4655:1: ( ( rule__Slo__MetricClauseTypeAssignment_2 ) )
+            // InternalDescartesQL.g:4656:1: ( rule__Slo__MetricClauseTypeAssignment_2 )
             {
-             before(grammarAccess.getFuzzinessAccess().getDeviationAssignment_1()); 
-            // InternalDescartesQL.g:4563:1: ( rule__Fuzziness__DeviationAssignment_1 )
-            // InternalDescartesQL.g:4563:2: rule__Fuzziness__DeviationAssignment_1
+             before(grammarAccess.getSloAccess().getMetricClauseTypeAssignment_2()); 
+            // InternalDescartesQL.g:4657:1: ( rule__Slo__MetricClauseTypeAssignment_2 )
+            // InternalDescartesQL.g:4657:2: rule__Slo__MetricClauseTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__Fuzziness__DeviationAssignment_1();
+            rule__Slo__MetricClauseTypeAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFuzzinessAccess().getDeviationAssignment_1()); 
+             after(grammarAccess.getSloAccess().getMetricClauseTypeAssignment_2()); 
 
             }
 
@@ -13130,26 +13440,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Fuzziness__Group__1__Impl"
+    // $ANTLR end "rule__Slo__Group__2__Impl"
 
 
-    // $ANTLR start "rule__Penalty__Group__0"
-    // InternalDescartesQL.g:4577:1: rule__Penalty__Group__0 : rule__Penalty__Group__0__Impl rule__Penalty__Group__1 ;
-    public final void rule__Penalty__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__3"
+    // InternalDescartesQL.g:4667:1: rule__Slo__Group__3 : rule__Slo__Group__3__Impl rule__Slo__Group__4 ;
+    public final void rule__Slo__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4581:1: ( rule__Penalty__Group__0__Impl rule__Penalty__Group__1 )
-            // InternalDescartesQL.g:4582:2: rule__Penalty__Group__0__Impl rule__Penalty__Group__1
+            // InternalDescartesQL.g:4671:1: ( rule__Slo__Group__3__Impl rule__Slo__Group__4 )
+            // InternalDescartesQL.g:4672:2: rule__Slo__Group__3__Impl rule__Slo__Group__4
             {
-            pushFollow(FOLLOW_20);
-            rule__Penalty__Group__0__Impl();
+            pushFollow(FOLLOW_19);
+            rule__Slo__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Penalty__Group__1();
+            rule__Slo__Group__4();
 
             state._fsp--;
 
@@ -13168,35 +13478,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__0"
+    // $ANTLR end "rule__Slo__Group__3"
 
 
-    // $ANTLR start "rule__Penalty__Group__0__Impl"
-    // InternalDescartesQL.g:4589:1: rule__Penalty__Group__0__Impl : ( ( rule__Penalty__TypeAssignment_0 ) ) ;
-    public final void rule__Penalty__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__3__Impl"
+    // InternalDescartesQL.g:4679:1: rule__Slo__Group__3__Impl : ( ( rule__Slo__ComparatorAssignment_3 ) ) ;
+    public final void rule__Slo__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4593:1: ( ( ( rule__Penalty__TypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:4594:1: ( ( rule__Penalty__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:4683:1: ( ( ( rule__Slo__ComparatorAssignment_3 ) ) )
+            // InternalDescartesQL.g:4684:1: ( ( rule__Slo__ComparatorAssignment_3 ) )
             {
-            // InternalDescartesQL.g:4594:1: ( ( rule__Penalty__TypeAssignment_0 ) )
-            // InternalDescartesQL.g:4595:1: ( rule__Penalty__TypeAssignment_0 )
+            // InternalDescartesQL.g:4684:1: ( ( rule__Slo__ComparatorAssignment_3 ) )
+            // InternalDescartesQL.g:4685:1: ( rule__Slo__ComparatorAssignment_3 )
             {
-             before(grammarAccess.getPenaltyAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:4596:1: ( rule__Penalty__TypeAssignment_0 )
-            // InternalDescartesQL.g:4596:2: rule__Penalty__TypeAssignment_0
+             before(grammarAccess.getSloAccess().getComparatorAssignment_3()); 
+            // InternalDescartesQL.g:4686:1: ( rule__Slo__ComparatorAssignment_3 )
+            // InternalDescartesQL.g:4686:2: rule__Slo__ComparatorAssignment_3
             {
             pushFollow(FOLLOW_2);
-            rule__Penalty__TypeAssignment_0();
+            rule__Slo__ComparatorAssignment_3();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getPenaltyAccess().getTypeAssignment_0()); 
+             after(grammarAccess.getSloAccess().getComparatorAssignment_3()); 
 
             }
 
@@ -13215,26 +13525,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__0__Impl"
+    // $ANTLR end "rule__Slo__Group__3__Impl"
 
 
-    // $ANTLR start "rule__Penalty__Group__1"
-    // InternalDescartesQL.g:4606:1: rule__Penalty__Group__1 : rule__Penalty__Group__1__Impl rule__Penalty__Group__2 ;
-    public final void rule__Penalty__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__4"
+    // InternalDescartesQL.g:4696:1: rule__Slo__Group__4 : rule__Slo__Group__4__Impl rule__Slo__Group__5 ;
+    public final void rule__Slo__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4610:1: ( rule__Penalty__Group__1__Impl rule__Penalty__Group__2 )
-            // InternalDescartesQL.g:4611:2: rule__Penalty__Group__1__Impl rule__Penalty__Group__2
+            // InternalDescartesQL.g:4700:1: ( rule__Slo__Group__4__Impl rule__Slo__Group__5 )
+            // InternalDescartesQL.g:4701:2: rule__Slo__Group__4__Impl rule__Slo__Group__5
             {
-            pushFollow(FOLLOW_21);
-            rule__Penalty__Group__1__Impl();
+            pushFollow(FOLLOW_20);
+            rule__Slo__Group__4__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Penalty__Group__2();
+            rule__Slo__Group__5();
 
             state._fsp--;
 
@@ -13253,35 +13563,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__1"
+    // $ANTLR end "rule__Slo__Group__4"
 
 
-    // $ANTLR start "rule__Penalty__Group__1__Impl"
-    // InternalDescartesQL.g:4618:1: rule__Penalty__Group__1__Impl : ( ( rule__Penalty__ValueAssignment_1 ) ) ;
-    public final void rule__Penalty__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__4__Impl"
+    // InternalDescartesQL.g:4708:1: rule__Slo__Group__4__Impl : ( ( rule__Slo__ValueAssignment_4 ) ) ;
+    public final void rule__Slo__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4622:1: ( ( ( rule__Penalty__ValueAssignment_1 ) ) )
-            // InternalDescartesQL.g:4623:1: ( ( rule__Penalty__ValueAssignment_1 ) )
+            // InternalDescartesQL.g:4712:1: ( ( ( rule__Slo__ValueAssignment_4 ) ) )
+            // InternalDescartesQL.g:4713:1: ( ( rule__Slo__ValueAssignment_4 ) )
             {
-            // InternalDescartesQL.g:4623:1: ( ( rule__Penalty__ValueAssignment_1 ) )
-            // InternalDescartesQL.g:4624:1: ( rule__Penalty__ValueAssignment_1 )
+            // InternalDescartesQL.g:4713:1: ( ( rule__Slo__ValueAssignment_4 ) )
+            // InternalDescartesQL.g:4714:1: ( rule__Slo__ValueAssignment_4 )
             {
-             before(grammarAccess.getPenaltyAccess().getValueAssignment_1()); 
-            // InternalDescartesQL.g:4625:1: ( rule__Penalty__ValueAssignment_1 )
-            // InternalDescartesQL.g:4625:2: rule__Penalty__ValueAssignment_1
+             before(grammarAccess.getSloAccess().getValueAssignment_4()); 
+            // InternalDescartesQL.g:4715:1: ( rule__Slo__ValueAssignment_4 )
+            // InternalDescartesQL.g:4715:2: rule__Slo__ValueAssignment_4
             {
             pushFollow(FOLLOW_2);
-            rule__Penalty__ValueAssignment_1();
+            rule__Slo__ValueAssignment_4();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getPenaltyAccess().getValueAssignment_1()); 
+             after(grammarAccess.getSloAccess().getValueAssignment_4()); 
 
             }
 
@@ -13300,26 +13610,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__1__Impl"
+    // $ANTLR end "rule__Slo__Group__4__Impl"
 
 
-    // $ANTLR start "rule__Penalty__Group__2"
-    // InternalDescartesQL.g:4635:1: rule__Penalty__Group__2 : rule__Penalty__Group__2__Impl rule__Penalty__Group__3 ;
-    public final void rule__Penalty__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__5"
+    // InternalDescartesQL.g:4725:1: rule__Slo__Group__5 : rule__Slo__Group__5__Impl rule__Slo__Group__6 ;
+    public final void rule__Slo__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4639:1: ( rule__Penalty__Group__2__Impl rule__Penalty__Group__3 )
-            // InternalDescartesQL.g:4640:2: rule__Penalty__Group__2__Impl rule__Penalty__Group__3
+            // InternalDescartesQL.g:4729:1: ( rule__Slo__Group__5__Impl rule__Slo__Group__6 )
+            // InternalDescartesQL.g:4730:2: rule__Slo__Group__5__Impl rule__Slo__Group__6
             {
-            pushFollow(FOLLOW_22);
-            rule__Penalty__Group__2__Impl();
+            pushFollow(FOLLOW_20);
+            rule__Slo__Group__5__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Penalty__Group__3();
+            rule__Slo__Group__6();
 
             state._fsp--;
 
@@ -13338,35 +13648,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__2"
+    // $ANTLR end "rule__Slo__Group__5"
 
 
-    // $ANTLR start "rule__Penalty__Group__2__Impl"
-    // InternalDescartesQL.g:4647:1: rule__Penalty__Group__2__Impl : ( ( rule__Penalty__CurrencyAssignment_2 ) ) ;
-    public final void rule__Penalty__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__5__Impl"
+    // InternalDescartesQL.g:4737:1: rule__Slo__Group__5__Impl : ( ( rule__Slo__FuzAssignment_5 )? ) ;
+    public final void rule__Slo__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4651:1: ( ( ( rule__Penalty__CurrencyAssignment_2 ) ) )
-            // InternalDescartesQL.g:4652:1: ( ( rule__Penalty__CurrencyAssignment_2 ) )
+            // InternalDescartesQL.g:4741:1: ( ( ( rule__Slo__FuzAssignment_5 )? ) )
+            // InternalDescartesQL.g:4742:1: ( ( rule__Slo__FuzAssignment_5 )? )
             {
-            // InternalDescartesQL.g:4652:1: ( ( rule__Penalty__CurrencyAssignment_2 ) )
-            // InternalDescartesQL.g:4653:1: ( rule__Penalty__CurrencyAssignment_2 )
-            {
-             before(grammarAccess.getPenaltyAccess().getCurrencyAssignment_2()); 
-            // InternalDescartesQL.g:4654:1: ( rule__Penalty__CurrencyAssignment_2 )
-            // InternalDescartesQL.g:4654:2: rule__Penalty__CurrencyAssignment_2
+            // InternalDescartesQL.g:4742:1: ( ( rule__Slo__FuzAssignment_5 )? )
+            // InternalDescartesQL.g:4743:1: ( rule__Slo__FuzAssignment_5 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__Penalty__CurrencyAssignment_2();
+             before(grammarAccess.getSloAccess().getFuzAssignment_5()); 
+            // InternalDescartesQL.g:4744:1: ( rule__Slo__FuzAssignment_5 )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA39_0==81) ) {
+                alt39=1;
+            }
+            switch (alt39) {
+                case 1 :
+                    // InternalDescartesQL.g:4744:2: rule__Slo__FuzAssignment_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Slo__FuzAssignment_5();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getPenaltyAccess().getCurrencyAssignment_2()); 
+             after(grammarAccess.getSloAccess().getFuzAssignment_5()); 
 
             }
 
@@ -13385,21 +13706,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__2__Impl"
+    // $ANTLR end "rule__Slo__Group__5__Impl"
 
 
-    // $ANTLR start "rule__Penalty__Group__3"
-    // InternalDescartesQL.g:4664:1: rule__Penalty__Group__3 : rule__Penalty__Group__3__Impl ;
-    public final void rule__Penalty__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__6"
+    // InternalDescartesQL.g:4754:1: rule__Slo__Group__6 : rule__Slo__Group__6__Impl rule__Slo__Group__7 ;
+    public final void rule__Slo__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4668:1: ( rule__Penalty__Group__3__Impl )
-            // InternalDescartesQL.g:4669:2: rule__Penalty__Group__3__Impl
+            // InternalDescartesQL.g:4758:1: ( rule__Slo__Group__6__Impl rule__Slo__Group__7 )
+            // InternalDescartesQL.g:4759:2: rule__Slo__Group__6__Impl rule__Slo__Group__7
             {
+            pushFollow(FOLLOW_20);
+            rule__Slo__Group__6__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__Penalty__Group__3__Impl();
+            rule__Slo__Group__7();
 
             state._fsp--;
 
@@ -13418,36 +13744,36 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__3"
+    // $ANTLR end "rule__Slo__Group__6"
 
 
-    // $ANTLR start "rule__Penalty__Group__3__Impl"
-    // InternalDescartesQL.g:4675:1: rule__Penalty__Group__3__Impl : ( ( rule__Penalty__ViolationAssignment_3 )? ) ;
-    public final void rule__Penalty__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__6__Impl"
+    // InternalDescartesQL.g:4766:1: rule__Slo__Group__6__Impl : ( ( rule__Slo__PenAssignment_6 )? ) ;
+    public final void rule__Slo__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4679:1: ( ( ( rule__Penalty__ViolationAssignment_3 )? ) )
-            // InternalDescartesQL.g:4680:1: ( ( rule__Penalty__ViolationAssignment_3 )? )
+            // InternalDescartesQL.g:4770:1: ( ( ( rule__Slo__PenAssignment_6 )? ) )
+            // InternalDescartesQL.g:4771:1: ( ( rule__Slo__PenAssignment_6 )? )
             {
-            // InternalDescartesQL.g:4680:1: ( ( rule__Penalty__ViolationAssignment_3 )? )
-            // InternalDescartesQL.g:4681:1: ( rule__Penalty__ViolationAssignment_3 )?
+            // InternalDescartesQL.g:4771:1: ( ( rule__Slo__PenAssignment_6 )? )
+            // InternalDescartesQL.g:4772:1: ( rule__Slo__PenAssignment_6 )?
             {
-             before(grammarAccess.getPenaltyAccess().getViolationAssignment_3()); 
-            // InternalDescartesQL.g:4682:1: ( rule__Penalty__ViolationAssignment_3 )?
-            int alt36=2;
-            int LA36_0 = input.LA(1);
+             before(grammarAccess.getSloAccess().getPenAssignment_6()); 
+            // InternalDescartesQL.g:4773:1: ( rule__Slo__PenAssignment_6 )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA36_0==59) ) {
-                alt36=1;
+            if ( (LA40_0==82) ) {
+                alt40=1;
             }
-            switch (alt36) {
+            switch (alt40) {
                 case 1 :
-                    // InternalDescartesQL.g:4682:2: rule__Penalty__ViolationAssignment_3
+                    // InternalDescartesQL.g:4773:2: rule__Slo__PenAssignment_6
                     {
                     pushFollow(FOLLOW_2);
-                    rule__Penalty__ViolationAssignment_3();
+                    rule__Slo__PenAssignment_6();
 
                     state._fsp--;
 
@@ -13457,7 +13783,7 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
             }
 
-             after(grammarAccess.getPenaltyAccess().getViolationAssignment_3()); 
+             after(grammarAccess.getSloAccess().getPenAssignment_6()); 
 
             }
 
@@ -13476,26 +13802,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__Group__3__Impl"
+    // $ANTLR end "rule__Slo__Group__6__Impl"
 
 
-    // $ANTLR start "rule__Violation__Group__0"
-    // InternalDescartesQL.g:4700:1: rule__Violation__Group__0 : rule__Violation__Group__0__Impl rule__Violation__Group__1 ;
-    public final void rule__Violation__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__7"
+    // InternalDescartesQL.g:4783:1: rule__Slo__Group__7 : rule__Slo__Group__7__Impl ;
+    public final void rule__Slo__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4704:1: ( rule__Violation__Group__0__Impl rule__Violation__Group__1 )
-            // InternalDescartesQL.g:4705:2: rule__Violation__Group__0__Impl rule__Violation__Group__1
+            // InternalDescartesQL.g:4787:1: ( rule__Slo__Group__7__Impl )
+            // InternalDescartesQL.g:4788:2: rule__Slo__Group__7__Impl
             {
-            pushFollow(FOLLOW_19);
-            rule__Violation__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__Violation__Group__1();
+            rule__Slo__Group__7__Impl();
 
             state._fsp--;
 
@@ -13514,25 +13835,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__0"
+    // $ANTLR end "rule__Slo__Group__7"
 
 
-    // $ANTLR start "rule__Violation__Group__0__Impl"
-    // InternalDescartesQL.g:4712:1: rule__Violation__Group__0__Impl : ( 'PER' ) ;
-    public final void rule__Violation__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Slo__Group__7__Impl"
+    // InternalDescartesQL.g:4794:1: rule__Slo__Group__7__Impl : ( ( rule__Slo__ViolationAssignment_7 )? ) ;
+    public final void rule__Slo__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4716:1: ( ( 'PER' ) )
-            // InternalDescartesQL.g:4717:1: ( 'PER' )
+            // InternalDescartesQL.g:4798:1: ( ( ( rule__Slo__ViolationAssignment_7 )? ) )
+            // InternalDescartesQL.g:4799:1: ( ( rule__Slo__ViolationAssignment_7 )? )
             {
-            // InternalDescartesQL.g:4717:1: ( 'PER' )
-            // InternalDescartesQL.g:4718:1: 'PER'
+            // InternalDescartesQL.g:4799:1: ( ( rule__Slo__ViolationAssignment_7 )? )
+            // InternalDescartesQL.g:4800:1: ( rule__Slo__ViolationAssignment_7 )?
             {
-             before(grammarAccess.getViolationAccess().getPERKeyword_0()); 
-            match(input,59,FOLLOW_2); 
-             after(grammarAccess.getViolationAccess().getPERKeyword_0()); 
+             before(grammarAccess.getSloAccess().getViolationAssignment_7()); 
+            // InternalDescartesQL.g:4801:1: ( rule__Slo__ViolationAssignment_7 )?
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==55||LA41_0==63) ) {
+                alt41=1;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalDescartesQL.g:4801:2: rule__Slo__ViolationAssignment_7
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Slo__ViolationAssignment_7();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getSloAccess().getViolationAssignment_7()); 
 
             }
 
@@ -13551,26 +13893,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__0__Impl"
+    // $ANTLR end "rule__Slo__Group__7__Impl"
 
 
-    // $ANTLR start "rule__Violation__Group__1"
-    // InternalDescartesQL.g:4731:1: rule__Violation__Group__1 : rule__Violation__Group__1__Impl rule__Violation__Group__2 ;
-    public final void rule__Violation__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group__0"
+    // InternalDescartesQL.g:4827:1: rule__WeightedSlo__Group__0 : rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1 ;
+    public final void rule__WeightedSlo__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4735:1: ( rule__Violation__Group__1__Impl rule__Violation__Group__2 )
-            // InternalDescartesQL.g:4736:2: rule__Violation__Group__1__Impl rule__Violation__Group__2
+            // InternalDescartesQL.g:4831:1: ( rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1 )
+            // InternalDescartesQL.g:4832:2: rule__WeightedSlo__Group__0__Impl rule__WeightedSlo__Group__1
             {
-            pushFollow(FOLLOW_23);
-            rule__Violation__Group__1__Impl();
+            pushFollow(FOLLOW_21);
+            rule__WeightedSlo__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__Violation__Group__2();
+            rule__WeightedSlo__Group__1();
 
             state._fsp--;
 
@@ -13589,35 +13931,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__1"
+    // $ANTLR end "rule__WeightedSlo__Group__0"
 
 
-    // $ANTLR start "rule__Violation__Group__1__Impl"
-    // InternalDescartesQL.g:4743:1: rule__Violation__Group__1__Impl : ( ( rule__Violation__AmountAssignment_1 ) ) ;
-    public final void rule__Violation__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group__0__Impl"
+    // InternalDescartesQL.g:4839:1: rule__WeightedSlo__Group__0__Impl : ( ( rule__WeightedSlo__SloAssignment_0 ) ) ;
+    public final void rule__WeightedSlo__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4747:1: ( ( ( rule__Violation__AmountAssignment_1 ) ) )
-            // InternalDescartesQL.g:4748:1: ( ( rule__Violation__AmountAssignment_1 ) )
+            // InternalDescartesQL.g:4843:1: ( ( ( rule__WeightedSlo__SloAssignment_0 ) ) )
+            // InternalDescartesQL.g:4844:1: ( ( rule__WeightedSlo__SloAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4748:1: ( ( rule__Violation__AmountAssignment_1 ) )
-            // InternalDescartesQL.g:4749:1: ( rule__Violation__AmountAssignment_1 )
+            // InternalDescartesQL.g:4844:1: ( ( rule__WeightedSlo__SloAssignment_0 ) )
+            // InternalDescartesQL.g:4845:1: ( rule__WeightedSlo__SloAssignment_0 )
             {
-             before(grammarAccess.getViolationAccess().getAmountAssignment_1()); 
-            // InternalDescartesQL.g:4750:1: ( rule__Violation__AmountAssignment_1 )
-            // InternalDescartesQL.g:4750:2: rule__Violation__AmountAssignment_1
+             before(grammarAccess.getWeightedSloAccess().getSloAssignment_0()); 
+            // InternalDescartesQL.g:4846:1: ( rule__WeightedSlo__SloAssignment_0 )
+            // InternalDescartesQL.g:4846:2: rule__WeightedSlo__SloAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__Violation__AmountAssignment_1();
+            rule__WeightedSlo__SloAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getViolationAccess().getAmountAssignment_1()); 
+             after(grammarAccess.getWeightedSloAccess().getSloAssignment_0()); 
 
             }
 
@@ -13636,21 +13978,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__1__Impl"
+    // $ANTLR end "rule__WeightedSlo__Group__0__Impl"
 
 
-    // $ANTLR start "rule__Violation__Group__2"
-    // InternalDescartesQL.g:4760:1: rule__Violation__Group__2 : rule__Violation__Group__2__Impl ;
-    public final void rule__Violation__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group__1"
+    // InternalDescartesQL.g:4856:1: rule__WeightedSlo__Group__1 : rule__WeightedSlo__Group__1__Impl ;
+    public final void rule__WeightedSlo__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4764:1: ( rule__Violation__Group__2__Impl )
-            // InternalDescartesQL.g:4765:2: rule__Violation__Group__2__Impl
+            // InternalDescartesQL.g:4860:1: ( rule__WeightedSlo__Group__1__Impl )
+            // InternalDescartesQL.g:4861:2: rule__WeightedSlo__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__Violation__Group__2__Impl();
+            rule__WeightedSlo__Group__1__Impl();
 
             state._fsp--;
 
@@ -13669,25 +14011,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__2"
+    // $ANTLR end "rule__WeightedSlo__Group__1"
 
 
-    // $ANTLR start "rule__Violation__Group__2__Impl"
-    // InternalDescartesQL.g:4771:1: rule__Violation__Group__2__Impl : ( 'VIOLATIONS' ) ;
-    public final void rule__Violation__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group__1__Impl"
+    // InternalDescartesQL.g:4867:1: rule__WeightedSlo__Group__1__Impl : ( ( rule__WeightedSlo__Group_1__0 )? ) ;
+    public final void rule__WeightedSlo__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4775:1: ( ( 'VIOLATIONS' ) )
-            // InternalDescartesQL.g:4776:1: ( 'VIOLATIONS' )
+            // InternalDescartesQL.g:4871:1: ( ( ( rule__WeightedSlo__Group_1__0 )? ) )
+            // InternalDescartesQL.g:4872:1: ( ( rule__WeightedSlo__Group_1__0 )? )
             {
-            // InternalDescartesQL.g:4776:1: ( 'VIOLATIONS' )
-            // InternalDescartesQL.g:4777:1: 'VIOLATIONS'
+            // InternalDescartesQL.g:4872:1: ( ( rule__WeightedSlo__Group_1__0 )? )
+            // InternalDescartesQL.g:4873:1: ( rule__WeightedSlo__Group_1__0 )?
             {
-             before(grammarAccess.getViolationAccess().getVIOLATIONSKeyword_2()); 
-            match(input,60,FOLLOW_2); 
-             after(grammarAccess.getViolationAccess().getVIOLATIONSKeyword_2()); 
+             before(grammarAccess.getWeightedSloAccess().getGroup_1()); 
+            // InternalDescartesQL.g:4874:1: ( rule__WeightedSlo__Group_1__0 )?
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==62) ) {
+                alt42=1;
+            }
+            switch (alt42) {
+                case 1 :
+                    // InternalDescartesQL.g:4874:2: rule__WeightedSlo__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__WeightedSlo__Group_1__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getWeightedSloAccess().getGroup_1()); 
 
             }
 
@@ -13706,26 +14069,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__Group__2__Impl"
+    // $ANTLR end "rule__WeightedSlo__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ListQuery__Group__0"
-    // InternalDescartesQL.g:4796:1: rule__ListQuery__Group__0 : rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1 ;
-    public final void rule__ListQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group_1__0"
+    // InternalDescartesQL.g:4888:1: rule__WeightedSlo__Group_1__0 : rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1 ;
+    public final void rule__WeightedSlo__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4800:1: ( rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1 )
-            // InternalDescartesQL.g:4801:2: rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1
+            // InternalDescartesQL.g:4892:1: ( rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1 )
+            // InternalDescartesQL.g:4893:2: rule__WeightedSlo__Group_1__0__Impl rule__WeightedSlo__Group_1__1
             {
-            pushFollow(FOLLOW_24);
-            rule__ListQuery__Group__0__Impl();
+            pushFollow(FOLLOW_22);
+            rule__WeightedSlo__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ListQuery__Group__1();
+            rule__WeightedSlo__Group_1__1();
 
             state._fsp--;
 
@@ -13744,25 +14107,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__0"
+    // $ANTLR end "rule__WeightedSlo__Group_1__0"
 
 
-    // $ANTLR start "rule__ListQuery__Group__0__Impl"
-    // InternalDescartesQL.g:4808:1: rule__ListQuery__Group__0__Impl : ( 'LIST' ) ;
-    public final void rule__ListQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group_1__0__Impl"
+    // InternalDescartesQL.g:4900:1: rule__WeightedSlo__Group_1__0__Impl : ( '*' ) ;
+    public final void rule__WeightedSlo__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4812:1: ( ( 'LIST' ) )
-            // InternalDescartesQL.g:4813:1: ( 'LIST' )
+            // InternalDescartesQL.g:4904:1: ( ( '*' ) )
+            // InternalDescartesQL.g:4905:1: ( '*' )
             {
-            // InternalDescartesQL.g:4813:1: ( 'LIST' )
-            // InternalDescartesQL.g:4814:1: 'LIST'
+            // InternalDescartesQL.g:4905:1: ( '*' )
+            // InternalDescartesQL.g:4906:1: '*'
             {
-             before(grammarAccess.getListQueryAccess().getLISTKeyword_0()); 
-            match(input,61,FOLLOW_2); 
-             after(grammarAccess.getListQueryAccess().getLISTKeyword_0()); 
+             before(grammarAccess.getWeightedSloAccess().getAsteriskKeyword_1_0()); 
+            match(input,62,FOLLOW_2); 
+             after(grammarAccess.getWeightedSloAccess().getAsteriskKeyword_1_0()); 
 
             }
 
@@ -13781,26 +14144,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__0__Impl"
+    // $ANTLR end "rule__WeightedSlo__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__ListQuery__Group__1"
-    // InternalDescartesQL.g:4827:1: rule__ListQuery__Group__1 : rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2 ;
-    public final void rule__ListQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group_1__1"
+    // InternalDescartesQL.g:4919:1: rule__WeightedSlo__Group_1__1 : rule__WeightedSlo__Group_1__1__Impl ;
+    public final void rule__WeightedSlo__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4831:1: ( rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2 )
-            // InternalDescartesQL.g:4832:2: rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2
+            // InternalDescartesQL.g:4923:1: ( rule__WeightedSlo__Group_1__1__Impl )
+            // InternalDescartesQL.g:4924:2: rule__WeightedSlo__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_25);
-            rule__ListQuery__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ListQuery__Group__2();
+            rule__WeightedSlo__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -13819,35 +14177,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__1"
+    // $ANTLR end "rule__WeightedSlo__Group_1__1"
 
 
-    // $ANTLR start "rule__ListQuery__Group__1__Impl"
-    // InternalDescartesQL.g:4839:1: rule__ListQuery__Group__1__Impl : ( ( rule__ListQuery__QueryTypeAssignment_1 ) ) ;
-    public final void rule__ListQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeightedSlo__Group_1__1__Impl"
+    // InternalDescartesQL.g:4930:1: rule__WeightedSlo__Group_1__1__Impl : ( ( rule__WeightedSlo__WeightAssignment_1_1 ) ) ;
+    public final void rule__WeightedSlo__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4843:1: ( ( ( rule__ListQuery__QueryTypeAssignment_1 ) ) )
-            // InternalDescartesQL.g:4844:1: ( ( rule__ListQuery__QueryTypeAssignment_1 ) )
+            // InternalDescartesQL.g:4934:1: ( ( ( rule__WeightedSlo__WeightAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:4935:1: ( ( rule__WeightedSlo__WeightAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:4844:1: ( ( rule__ListQuery__QueryTypeAssignment_1 ) )
-            // InternalDescartesQL.g:4845:1: ( rule__ListQuery__QueryTypeAssignment_1 )
+            // InternalDescartesQL.g:4935:1: ( ( rule__WeightedSlo__WeightAssignment_1_1 ) )
+            // InternalDescartesQL.g:4936:1: ( rule__WeightedSlo__WeightAssignment_1_1 )
             {
-             before(grammarAccess.getListQueryAccess().getQueryTypeAssignment_1()); 
-            // InternalDescartesQL.g:4846:1: ( rule__ListQuery__QueryTypeAssignment_1 )
-            // InternalDescartesQL.g:4846:2: rule__ListQuery__QueryTypeAssignment_1
+             before(grammarAccess.getWeightedSloAccess().getWeightAssignment_1_1()); 
+            // InternalDescartesQL.g:4937:1: ( rule__WeightedSlo__WeightAssignment_1_1 )
+            // InternalDescartesQL.g:4937:2: rule__WeightedSlo__WeightAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__ListQuery__QueryTypeAssignment_1();
+            rule__WeightedSlo__WeightAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getListQueryAccess().getQueryTypeAssignment_1()); 
+             after(grammarAccess.getWeightedSloAccess().getWeightAssignment_1_1()); 
 
             }
 
@@ -13866,26 +14224,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__1__Impl"
+    // $ANTLR end "rule__WeightedSlo__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__ListQuery__Group__2"
-    // InternalDescartesQL.g:4856:1: rule__ListQuery__Group__2 : rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3 ;
-    public final void rule__ListQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__Fuzziness__Group__0"
+    // InternalDescartesQL.g:4951:1: rule__Fuzziness__Group__0 : rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1 ;
+    public final void rule__Fuzziness__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4860:1: ( rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3 )
-            // InternalDescartesQL.g:4861:2: rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3
+            // InternalDescartesQL.g:4955:1: ( rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1 )
+            // InternalDescartesQL.g:4956:2: rule__Fuzziness__Group__0__Impl rule__Fuzziness__Group__1
             {
-            pushFollow(FOLLOW_25);
-            rule__ListQuery__Group__2__Impl();
+            pushFollow(FOLLOW_19);
+            rule__Fuzziness__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ListQuery__Group__3();
+            rule__Fuzziness__Group__1();
 
             state._fsp--;
 
@@ -13904,48 +14262,37 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__2"
+    // $ANTLR end "rule__Fuzziness__Group__0"
 
 
-    // $ANTLR start "rule__ListQuery__Group__2__Impl"
-    // InternalDescartesQL.g:4868:1: rule__ListQuery__Group__2__Impl : ( ( rule__ListQuery__FilterClauseAssignment_2 )? ) ;
-    public final void rule__ListQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Fuzziness__Group__0__Impl"
+    // InternalDescartesQL.g:4963:1: rule__Fuzziness__Group__0__Impl : ( ( rule__Fuzziness__TypeAssignment_0 ) ) ;
+    public final void rule__Fuzziness__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4872:1: ( ( ( rule__ListQuery__FilterClauseAssignment_2 )? ) )
-            // InternalDescartesQL.g:4873:1: ( ( rule__ListQuery__FilterClauseAssignment_2 )? )
+            // InternalDescartesQL.g:4967:1: ( ( ( rule__Fuzziness__TypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:4968:1: ( ( rule__Fuzziness__TypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4873:1: ( ( rule__ListQuery__FilterClauseAssignment_2 )? )
-            // InternalDescartesQL.g:4874:1: ( rule__ListQuery__FilterClauseAssignment_2 )?
+            // InternalDescartesQL.g:4968:1: ( ( rule__Fuzziness__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:4969:1: ( rule__Fuzziness__TypeAssignment_0 )
             {
-             before(grammarAccess.getListQueryAccess().getFilterClauseAssignment_2()); 
-            // InternalDescartesQL.g:4875:1: ( rule__ListQuery__FilterClauseAssignment_2 )?
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+             before(grammarAccess.getFuzzinessAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:4970:1: ( rule__Fuzziness__TypeAssignment_0 )
+            // InternalDescartesQL.g:4970:2: rule__Fuzziness__TypeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Fuzziness__TypeAssignment_0();
+
+            state._fsp--;
+
 
-            if ( (LA37_0==97) ) {
-                alt37=1;
             }
-            switch (alt37) {
-                case 1 :
-                    // InternalDescartesQL.g:4875:2: rule__ListQuery__FilterClauseAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__ListQuery__FilterClauseAssignment_2();
 
-                    state._fsp--;
+             after(grammarAccess.getFuzzinessAccess().getTypeAssignment_0()); 
 
-
-                    }
-                    break;
-
-            }
-
-             after(grammarAccess.getListQueryAccess().getFilterClauseAssignment_2()); 
-
-            }
+            }
 
 
             }
@@ -13962,21 +14309,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__2__Impl"
+    // $ANTLR end "rule__Fuzziness__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ListQuery__Group__3"
-    // InternalDescartesQL.g:4885:1: rule__ListQuery__Group__3 : rule__ListQuery__Group__3__Impl ;
-    public final void rule__ListQuery__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__Fuzziness__Group__1"
+    // InternalDescartesQL.g:4980:1: rule__Fuzziness__Group__1 : rule__Fuzziness__Group__1__Impl ;
+    public final void rule__Fuzziness__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4889:1: ( rule__ListQuery__Group__3__Impl )
-            // InternalDescartesQL.g:4890:2: rule__ListQuery__Group__3__Impl
+            // InternalDescartesQL.g:4984:1: ( rule__Fuzziness__Group__1__Impl )
+            // InternalDescartesQL.g:4985:2: rule__Fuzziness__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ListQuery__Group__3__Impl();
+            rule__Fuzziness__Group__1__Impl();
 
             state._fsp--;
 
@@ -13995,35 +14342,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__3"
+    // $ANTLR end "rule__Fuzziness__Group__1"
 
 
-    // $ANTLR start "rule__ListQuery__Group__3__Impl"
-    // InternalDescartesQL.g:4896:1: rule__ListQuery__Group__3__Impl : ( ( rule__ListQuery__UsingClauseAssignment_3 ) ) ;
-    public final void rule__ListQuery__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Fuzziness__Group__1__Impl"
+    // InternalDescartesQL.g:4991:1: rule__Fuzziness__Group__1__Impl : ( ( rule__Fuzziness__DeviationAssignment_1 ) ) ;
+    public final void rule__Fuzziness__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4900:1: ( ( ( rule__ListQuery__UsingClauseAssignment_3 ) ) )
-            // InternalDescartesQL.g:4901:1: ( ( rule__ListQuery__UsingClauseAssignment_3 ) )
+            // InternalDescartesQL.g:4995:1: ( ( ( rule__Fuzziness__DeviationAssignment_1 ) ) )
+            // InternalDescartesQL.g:4996:1: ( ( rule__Fuzziness__DeviationAssignment_1 ) )
             {
-            // InternalDescartesQL.g:4901:1: ( ( rule__ListQuery__UsingClauseAssignment_3 ) )
-            // InternalDescartesQL.g:4902:1: ( rule__ListQuery__UsingClauseAssignment_3 )
+            // InternalDescartesQL.g:4996:1: ( ( rule__Fuzziness__DeviationAssignment_1 ) )
+            // InternalDescartesQL.g:4997:1: ( rule__Fuzziness__DeviationAssignment_1 )
             {
-             before(grammarAccess.getListQueryAccess().getUsingClauseAssignment_3()); 
-            // InternalDescartesQL.g:4903:1: ( rule__ListQuery__UsingClauseAssignment_3 )
-            // InternalDescartesQL.g:4903:2: rule__ListQuery__UsingClauseAssignment_3
+             before(grammarAccess.getFuzzinessAccess().getDeviationAssignment_1()); 
+            // InternalDescartesQL.g:4998:1: ( rule__Fuzziness__DeviationAssignment_1 )
+            // InternalDescartesQL.g:4998:2: rule__Fuzziness__DeviationAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__ListQuery__UsingClauseAssignment_3();
+            rule__Fuzziness__DeviationAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getListQueryAccess().getUsingClauseAssignment_3()); 
+             after(grammarAccess.getFuzzinessAccess().getDeviationAssignment_1()); 
 
             }
 
@@ -14042,26 +14389,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListQuery__Group__3__Impl"
+    // $ANTLR end "rule__Fuzziness__Group__1__Impl"
 
 
-    // $ANTLR start "rule__GetQuery__Group__0"
-    // InternalDescartesQL.g:4921:1: rule__GetQuery__Group__0 : rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1 ;
-    public final void rule__GetQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__0"
+    // InternalDescartesQL.g:5012:1: rule__Penalty__Group__0 : rule__Penalty__Group__0__Impl rule__Penalty__Group__1 ;
+    public final void rule__Penalty__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4925:1: ( rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1 )
-            // InternalDescartesQL.g:4926:2: rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1
+            // InternalDescartesQL.g:5016:1: ( rule__Penalty__Group__0__Impl rule__Penalty__Group__1 )
+            // InternalDescartesQL.g:5017:2: rule__Penalty__Group__0__Impl rule__Penalty__Group__1
             {
-            pushFollow(FOLLOW_26);
-            rule__GetQuery__Group__0__Impl();
+            pushFollow(FOLLOW_8);
+            rule__Penalty__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__GetQuery__Group__1();
+            rule__Penalty__Group__1();
 
             state._fsp--;
 
@@ -14080,25 +14427,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__0"
+    // $ANTLR end "rule__Penalty__Group__0"
 
 
-    // $ANTLR start "rule__GetQuery__Group__0__Impl"
-    // InternalDescartesQL.g:4933:1: rule__GetQuery__Group__0__Impl : ( 'GET' ) ;
-    public final void rule__GetQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__0__Impl"
+    // InternalDescartesQL.g:5024:1: rule__Penalty__Group__0__Impl : ( ( rule__Penalty__TypeAssignment_0 ) ) ;
+    public final void rule__Penalty__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4937:1: ( ( 'GET' ) )
-            // InternalDescartesQL.g:4938:1: ( 'GET' )
+            // InternalDescartesQL.g:5028:1: ( ( ( rule__Penalty__TypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:5029:1: ( ( rule__Penalty__TypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:4938:1: ( 'GET' )
-            // InternalDescartesQL.g:4939:1: 'GET'
+            // InternalDescartesQL.g:5029:1: ( ( rule__Penalty__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:5030:1: ( rule__Penalty__TypeAssignment_0 )
             {
-             before(grammarAccess.getGetQueryAccess().getGETKeyword_0()); 
-            match(input,62,FOLLOW_2); 
-             after(grammarAccess.getGetQueryAccess().getGETKeyword_0()); 
+             before(grammarAccess.getPenaltyAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:5031:1: ( rule__Penalty__TypeAssignment_0 )
+            // InternalDescartesQL.g:5031:2: rule__Penalty__TypeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Penalty__TypeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPenaltyAccess().getTypeAssignment_0()); 
 
             }
 
@@ -14117,26 +14474,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__0__Impl"
+    // $ANTLR end "rule__Penalty__Group__0__Impl"
 
 
-    // $ANTLR start "rule__GetQuery__Group__1"
-    // InternalDescartesQL.g:4952:1: rule__GetQuery__Group__1 : rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2 ;
-    public final void rule__GetQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__1"
+    // InternalDescartesQL.g:5041:1: rule__Penalty__Group__1 : rule__Penalty__Group__1__Impl rule__Penalty__Group__2 ;
+    public final void rule__Penalty__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4956:1: ( rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2 )
-            // InternalDescartesQL.g:4957:2: rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2
+            // InternalDescartesQL.g:5045:1: ( rule__Penalty__Group__1__Impl rule__Penalty__Group__2 )
+            // InternalDescartesQL.g:5046:2: rule__Penalty__Group__1__Impl rule__Penalty__Group__2
             {
-            pushFollow(FOLLOW_6);
-            rule__GetQuery__Group__1__Impl();
+            pushFollow(FOLLOW_23);
+            rule__Penalty__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__GetQuery__Group__2();
+            rule__Penalty__Group__2();
 
             state._fsp--;
 
@@ -14155,35 +14512,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__1"
+    // $ANTLR end "rule__Penalty__Group__1"
 
 
-    // $ANTLR start "rule__GetQuery__Group__1__Impl"
-    // InternalDescartesQL.g:4964:1: rule__GetQuery__Group__1__Impl : ( ( rule__GetQuery__QueryTapeAssignment_1 ) ) ;
-    public final void rule__GetQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__1__Impl"
+    // InternalDescartesQL.g:5053:1: rule__Penalty__Group__1__Impl : ( ( rule__Penalty__ValueAssignment_1 ) ) ;
+    public final void rule__Penalty__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4968:1: ( ( ( rule__GetQuery__QueryTapeAssignment_1 ) ) )
-            // InternalDescartesQL.g:4969:1: ( ( rule__GetQuery__QueryTapeAssignment_1 ) )
+            // InternalDescartesQL.g:5057:1: ( ( ( rule__Penalty__ValueAssignment_1 ) ) )
+            // InternalDescartesQL.g:5058:1: ( ( rule__Penalty__ValueAssignment_1 ) )
             {
-            // InternalDescartesQL.g:4969:1: ( ( rule__GetQuery__QueryTapeAssignment_1 ) )
-            // InternalDescartesQL.g:4970:1: ( rule__GetQuery__QueryTapeAssignment_1 )
+            // InternalDescartesQL.g:5058:1: ( ( rule__Penalty__ValueAssignment_1 ) )
+            // InternalDescartesQL.g:5059:1: ( rule__Penalty__ValueAssignment_1 )
             {
-             before(grammarAccess.getGetQueryAccess().getQueryTapeAssignment_1()); 
-            // InternalDescartesQL.g:4971:1: ( rule__GetQuery__QueryTapeAssignment_1 )
-            // InternalDescartesQL.g:4971:2: rule__GetQuery__QueryTapeAssignment_1
+             before(grammarAccess.getPenaltyAccess().getValueAssignment_1()); 
+            // InternalDescartesQL.g:5060:1: ( rule__Penalty__ValueAssignment_1 )
+            // InternalDescartesQL.g:5060:2: rule__Penalty__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__GetQuery__QueryTapeAssignment_1();
+            rule__Penalty__ValueAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getGetQueryAccess().getQueryTapeAssignment_1()); 
+             after(grammarAccess.getPenaltyAccess().getValueAssignment_1()); 
 
             }
 
@@ -14202,21 +14559,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__1__Impl"
+    // $ANTLR end "rule__Penalty__Group__1__Impl"
 
 
-    // $ANTLR start "rule__GetQuery__Group__2"
-    // InternalDescartesQL.g:4981:1: rule__GetQuery__Group__2 : rule__GetQuery__Group__2__Impl ;
-    public final void rule__GetQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__2"
+    // InternalDescartesQL.g:5070:1: rule__Penalty__Group__2 : rule__Penalty__Group__2__Impl ;
+    public final void rule__Penalty__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4985:1: ( rule__GetQuery__Group__2__Impl )
-            // InternalDescartesQL.g:4986:2: rule__GetQuery__Group__2__Impl
+            // InternalDescartesQL.g:5074:1: ( rule__Penalty__Group__2__Impl )
+            // InternalDescartesQL.g:5075:2: rule__Penalty__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__GetQuery__Group__2__Impl();
+            rule__Penalty__Group__2__Impl();
 
             state._fsp--;
 
@@ -14235,35 +14592,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__2"
+    // $ANTLR end "rule__Penalty__Group__2"
 
 
-    // $ANTLR start "rule__GetQuery__Group__2__Impl"
-    // InternalDescartesQL.g:4992:1: rule__GetQuery__Group__2__Impl : ( ( rule__GetQuery__UsingClauseAssignment_2 ) ) ;
-    public final void rule__GetQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Penalty__Group__2__Impl"
+    // InternalDescartesQL.g:5081:1: rule__Penalty__Group__2__Impl : ( ( rule__Penalty__CurrencyAssignment_2 )? ) ;
+    public final void rule__Penalty__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:4996:1: ( ( ( rule__GetQuery__UsingClauseAssignment_2 ) ) )
-            // InternalDescartesQL.g:4997:1: ( ( rule__GetQuery__UsingClauseAssignment_2 ) )
-            {
-            // InternalDescartesQL.g:4997:1: ( ( rule__GetQuery__UsingClauseAssignment_2 ) )
-            // InternalDescartesQL.g:4998:1: ( rule__GetQuery__UsingClauseAssignment_2 )
+            // InternalDescartesQL.g:5085:1: ( ( ( rule__Penalty__CurrencyAssignment_2 )? ) )
+            // InternalDescartesQL.g:5086:1: ( ( rule__Penalty__CurrencyAssignment_2 )? )
             {
-             before(grammarAccess.getGetQueryAccess().getUsingClauseAssignment_2()); 
-            // InternalDescartesQL.g:4999:1: ( rule__GetQuery__UsingClauseAssignment_2 )
-            // InternalDescartesQL.g:4999:2: rule__GetQuery__UsingClauseAssignment_2
+            // InternalDescartesQL.g:5086:1: ( ( rule__Penalty__CurrencyAssignment_2 )? )
+            // InternalDescartesQL.g:5087:1: ( rule__Penalty__CurrencyAssignment_2 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__GetQuery__UsingClauseAssignment_2();
+             before(grammarAccess.getPenaltyAccess().getCurrencyAssignment_2()); 
+            // InternalDescartesQL.g:5088:1: ( rule__Penalty__CurrencyAssignment_2 )?
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( ((LA43_0>=24 && LA43_0<=25)) ) {
+                alt43=1;
+            }
+            switch (alt43) {
+                case 1 :
+                    // InternalDescartesQL.g:5088:2: rule__Penalty__CurrencyAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Penalty__CurrencyAssignment_2();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getGetQueryAccess().getUsingClauseAssignment_2()); 
+             after(grammarAccess.getPenaltyAccess().getCurrencyAssignment_2()); 
 
             }
 
@@ -14282,26 +14650,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__GetQuery__Group__2__Impl"
+    // $ANTLR end "rule__Penalty__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ListDoFQuery__Group__0"
-    // InternalDescartesQL.g:5015:1: rule__ListDoFQuery__Group__0 : rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1 ;
-    public final void rule__ListDoFQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__0"
+    // InternalDescartesQL.g:5104:1: rule__Violation__Group_0__0 : rule__Violation__Group_0__0__Impl rule__Violation__Group_0__1 ;
+    public final void rule__Violation__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5019:1: ( rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1 )
-            // InternalDescartesQL.g:5020:2: rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1
+            // InternalDescartesQL.g:5108:1: ( rule__Violation__Group_0__0__Impl rule__Violation__Group_0__1 )
+            // InternalDescartesQL.g:5109:2: rule__Violation__Group_0__0__Impl rule__Violation__Group_0__1
             {
-            pushFollow(FOLLOW_27);
-            rule__ListDoFQuery__Group__0__Impl();
+            pushFollow(FOLLOW_22);
+            rule__Violation__Group_0__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ListDoFQuery__Group__1();
+            rule__Violation__Group_0__1();
 
             state._fsp--;
 
@@ -14320,35 +14688,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListDoFQuery__Group__0"
+    // $ANTLR end "rule__Violation__Group_0__0"
 
 
-    // $ANTLR start "rule__ListDoFQuery__Group__0__Impl"
-    // InternalDescartesQL.g:5027:1: rule__ListDoFQuery__Group__0__Impl : ( ( rule__ListDoFQuery__ModeAssignment_0 ) ) ;
-    public final void rule__ListDoFQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__0__Impl"
+    // InternalDescartesQL.g:5116:1: rule__Violation__Group_0__0__Impl : ( 'PER' ) ;
+    public final void rule__Violation__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5031:1: ( ( ( rule__ListDoFQuery__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:5032:1: ( ( rule__ListDoFQuery__ModeAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:5032:1: ( ( rule__ListDoFQuery__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:5033:1: ( rule__ListDoFQuery__ModeAssignment_0 )
+            // InternalDescartesQL.g:5120:1: ( ( 'PER' ) )
+            // InternalDescartesQL.g:5121:1: ( 'PER' )
             {
-             before(grammarAccess.getListDoFQueryAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:5034:1: ( rule__ListDoFQuery__ModeAssignment_0 )
-            // InternalDescartesQL.g:5034:2: rule__ListDoFQuery__ModeAssignment_0
+            // InternalDescartesQL.g:5121:1: ( 'PER' )
+            // InternalDescartesQL.g:5122:1: 'PER'
             {
-            pushFollow(FOLLOW_2);
-            rule__ListDoFQuery__ModeAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getListDoFQueryAccess().getModeAssignment_0()); 
+             before(grammarAccess.getViolationAccess().getPERKeyword_0_0()); 
+            match(input,63,FOLLOW_2); 
+             after(grammarAccess.getViolationAccess().getPERKeyword_0_0()); 
 
             }
 
@@ -14367,21 +14725,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListDoFQuery__Group__0__Impl"
+    // $ANTLR end "rule__Violation__Group_0__0__Impl"
 
 
-    // $ANTLR start "rule__ListDoFQuery__Group__1"
-    // InternalDescartesQL.g:5044:1: rule__ListDoFQuery__Group__1 : rule__ListDoFQuery__Group__1__Impl ;
-    public final void rule__ListDoFQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__1"
+    // InternalDescartesQL.g:5135:1: rule__Violation__Group_0__1 : rule__Violation__Group_0__1__Impl rule__Violation__Group_0__2 ;
+    public final void rule__Violation__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5048:1: ( rule__ListDoFQuery__Group__1__Impl )
-            // InternalDescartesQL.g:5049:2: rule__ListDoFQuery__Group__1__Impl
+            // InternalDescartesQL.g:5139:1: ( rule__Violation__Group_0__1__Impl rule__Violation__Group_0__2 )
+            // InternalDescartesQL.g:5140:2: rule__Violation__Group_0__1__Impl rule__Violation__Group_0__2
             {
+            pushFollow(FOLLOW_24);
+            rule__Violation__Group_0__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ListDoFQuery__Group__1__Impl();
+            rule__Violation__Group_0__2();
 
             state._fsp--;
 
@@ -14400,46 +14763,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListDoFQuery__Group__1"
+    // $ANTLR end "rule__Violation__Group_0__1"
 
 
-    // $ANTLR start "rule__ListDoFQuery__Group__1__Impl"
-    // InternalDescartesQL.g:5055:1: rule__ListDoFQuery__Group__1__Impl : ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? ) ;
-    public final void rule__ListDoFQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__1__Impl"
+    // InternalDescartesQL.g:5147:1: rule__Violation__Group_0__1__Impl : ( ( rule__Violation__AmountAssignment_0_1 ) ) ;
+    public final void rule__Violation__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5059:1: ( ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? ) )
-            // InternalDescartesQL.g:5060:1: ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? )
+            // InternalDescartesQL.g:5151:1: ( ( ( rule__Violation__AmountAssignment_0_1 ) ) )
+            // InternalDescartesQL.g:5152:1: ( ( rule__Violation__AmountAssignment_0_1 ) )
             {
-            // InternalDescartesQL.g:5060:1: ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? )
-            // InternalDescartesQL.g:5061:1: ( rule__ListDoFQuery__WithClauseAssignment_1 )?
+            // InternalDescartesQL.g:5152:1: ( ( rule__Violation__AmountAssignment_0_1 ) )
+            // InternalDescartesQL.g:5153:1: ( rule__Violation__AmountAssignment_0_1 )
             {
-             before(grammarAccess.getListDoFQueryAccess().getWithClauseAssignment_1()); 
-            // InternalDescartesQL.g:5062:1: ( rule__ListDoFQuery__WithClauseAssignment_1 )?
-            int alt38=2;
-            int LA38_0 = input.LA(1);
-
-            if ( (LA38_0==96) ) {
-                alt38=1;
-            }
-            switch (alt38) {
-                case 1 :
-                    // InternalDescartesQL.g:5062:2: rule__ListDoFQuery__WithClauseAssignment_1
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__ListDoFQuery__WithClauseAssignment_1();
-
-                    state._fsp--;
+             before(grammarAccess.getViolationAccess().getAmountAssignment_0_1()); 
+            // InternalDescartesQL.g:5154:1: ( rule__Violation__AmountAssignment_0_1 )
+            // InternalDescartesQL.g:5154:2: rule__Violation__AmountAssignment_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Violation__AmountAssignment_0_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getListDoFQueryAccess().getWithClauseAssignment_1()); 
+             after(grammarAccess.getViolationAccess().getAmountAssignment_0_1()); 
 
             }
 
@@ -14458,26 +14810,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListDoFQuery__Group__1__Impl"
+    // $ANTLR end "rule__Violation__Group_0__1__Impl"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__0"
-    // InternalDescartesQL.g:5076:1: rule__ListMetricsQuery__Group__0 : rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1 ;
-    public final void rule__ListMetricsQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__2"
+    // InternalDescartesQL.g:5164:1: rule__Violation__Group_0__2 : rule__Violation__Group_0__2__Impl ;
+    public final void rule__Violation__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5080:1: ( rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1 )
-            // InternalDescartesQL.g:5081:2: rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1
+            // InternalDescartesQL.g:5168:1: ( rule__Violation__Group_0__2__Impl )
+            // InternalDescartesQL.g:5169:2: rule__Violation__Group_0__2__Impl
             {
-            pushFollow(FOLLOW_11);
-            rule__ListMetricsQuery__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__Group__1();
+            rule__Violation__Group_0__2__Impl();
 
             state._fsp--;
 
@@ -14496,35 +14843,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__0"
+    // $ANTLR end "rule__Violation__Group_0__2"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__0__Impl"
-    // InternalDescartesQL.g:5088:1: rule__ListMetricsQuery__Group__0__Impl : ( ( rule__ListMetricsQuery__ModeAssignment_0 ) ) ;
-    public final void rule__ListMetricsQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_0__2__Impl"
+    // InternalDescartesQL.g:5175:1: rule__Violation__Group_0__2__Impl : ( 'VIOLATIONS' ) ;
+    public final void rule__Violation__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5092:1: ( ( ( rule__ListMetricsQuery__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:5093:1: ( ( rule__ListMetricsQuery__ModeAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:5093:1: ( ( rule__ListMetricsQuery__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:5094:1: ( rule__ListMetricsQuery__ModeAssignment_0 )
+            // InternalDescartesQL.g:5179:1: ( ( 'VIOLATIONS' ) )
+            // InternalDescartesQL.g:5180:1: ( 'VIOLATIONS' )
             {
-             before(grammarAccess.getListMetricsQueryAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:5095:1: ( rule__ListMetricsQuery__ModeAssignment_0 )
-            // InternalDescartesQL.g:5095:2: rule__ListMetricsQuery__ModeAssignment_0
+            // InternalDescartesQL.g:5180:1: ( 'VIOLATIONS' )
+            // InternalDescartesQL.g:5181:1: 'VIOLATIONS'
             {
-            pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__ModeAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getListMetricsQueryAccess().getModeAssignment_0()); 
+             before(grammarAccess.getViolationAccess().getVIOLATIONSKeyword_0_2()); 
+            match(input,64,FOLLOW_2); 
+             after(grammarAccess.getViolationAccess().getVIOLATIONSKeyword_0_2()); 
 
             }
 
@@ -14543,26 +14880,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__0__Impl"
+    // $ANTLR end "rule__Violation__Group_0__2__Impl"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__1"
-    // InternalDescartesQL.g:5105:1: rule__ListMetricsQuery__Group__1 : rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2 ;
-    public final void rule__ListMetricsQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__0"
+    // InternalDescartesQL.g:5200:1: rule__Violation__Group_1__0 : rule__Violation__Group_1__0__Impl rule__Violation__Group_1__1 ;
+    public final void rule__Violation__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5109:1: ( rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2 )
-            // InternalDescartesQL.g:5110:2: rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2
+            // InternalDescartesQL.g:5204:1: ( rule__Violation__Group_1__0__Impl rule__Violation__Group_1__1 )
+            // InternalDescartesQL.g:5205:2: rule__Violation__Group_1__0__Impl rule__Violation__Group_1__1
             {
-            pushFollow(FOLLOW_28);
-            rule__ListMetricsQuery__Group__1__Impl();
+            pushFollow(FOLLOW_8);
+            rule__Violation__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__Group__2();
+            rule__Violation__Group_1__1();
 
             state._fsp--;
 
@@ -14581,25 +14918,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__1"
+    // $ANTLR end "rule__Violation__Group_1__0"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__1__Impl"
-    // InternalDescartesQL.g:5117:1: rule__ListMetricsQuery__Group__1__Impl : ( '(' ) ;
-    public final void rule__ListMetricsQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__0__Impl"
+    // InternalDescartesQL.g:5212:1: rule__Violation__Group_1__0__Impl : ( 'SATISFACTION-LEVEL' ) ;
+    public final void rule__Violation__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5121:1: ( ( '(' ) )
-            // InternalDescartesQL.g:5122:1: ( '(' )
+            // InternalDescartesQL.g:5216:1: ( ( 'SATISFACTION-LEVEL' ) )
+            // InternalDescartesQL.g:5217:1: ( 'SATISFACTION-LEVEL' )
             {
-            // InternalDescartesQL.g:5122:1: ( '(' )
-            // InternalDescartesQL.g:5123:1: '('
+            // InternalDescartesQL.g:5217:1: ( 'SATISFACTION-LEVEL' )
+            // InternalDescartesQL.g:5218:1: 'SATISFACTION-LEVEL'
             {
-             before(grammarAccess.getListMetricsQueryAccess().getLeftParenthesisKeyword_1()); 
+             before(grammarAccess.getViolationAccess().getSATISFACTIONLEVELKeyword_1_0()); 
             match(input,55,FOLLOW_2); 
-             after(grammarAccess.getListMetricsQueryAccess().getLeftParenthesisKeyword_1()); 
+             after(grammarAccess.getViolationAccess().getSATISFACTIONLEVELKeyword_1_0()); 
 
             }
 
@@ -14618,26 +14955,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__1__Impl"
+    // $ANTLR end "rule__Violation__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__2"
-    // InternalDescartesQL.g:5136:1: rule__ListMetricsQuery__Group__2 : rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3 ;
-    public final void rule__ListMetricsQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__1"
+    // InternalDescartesQL.g:5231:1: rule__Violation__Group_1__1 : rule__Violation__Group_1__1__Impl rule__Violation__Group_1__2 ;
+    public final void rule__Violation__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5140:1: ( rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3 )
-            // InternalDescartesQL.g:5141:2: rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3
+            // InternalDescartesQL.g:5235:1: ( rule__Violation__Group_1__1__Impl rule__Violation__Group_1__2 )
+            // InternalDescartesQL.g:5236:2: rule__Violation__Group_1__1__Impl rule__Violation__Group_1__2
             {
-            pushFollow(FOLLOW_29);
-            rule__ListMetricsQuery__Group__2__Impl();
+            pushFollow(FOLLOW_9);
+            rule__Violation__Group_1__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__Group__3();
+            rule__Violation__Group_1__2();
 
             state._fsp--;
 
@@ -14656,35 +14993,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__2"
+    // $ANTLR end "rule__Violation__Group_1__1"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__2__Impl"
-    // InternalDescartesQL.g:5148:1: rule__ListMetricsQuery__Group__2__Impl : ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) ) ;
-    public final void rule__ListMetricsQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__1__Impl"
+    // InternalDescartesQL.g:5243:1: rule__Violation__Group_1__1__Impl : ( ( rule__Violation__PercentageAssignment_1_1 ) ) ;
+    public final void rule__Violation__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5152:1: ( ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) ) )
-            // InternalDescartesQL.g:5153:1: ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) )
+            // InternalDescartesQL.g:5247:1: ( ( ( rule__Violation__PercentageAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:5248:1: ( ( rule__Violation__PercentageAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:5153:1: ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) )
-            // InternalDescartesQL.g:5154:1: ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 )
+            // InternalDescartesQL.g:5248:1: ( ( rule__Violation__PercentageAssignment_1_1 ) )
+            // InternalDescartesQL.g:5249:1: ( rule__Violation__PercentageAssignment_1_1 )
             {
-             before(grammarAccess.getListMetricsQueryAccess().getEntityReferenceClauseAssignment_2()); 
-            // InternalDescartesQL.g:5155:1: ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 )
-            // InternalDescartesQL.g:5155:2: rule__ListMetricsQuery__EntityReferenceClauseAssignment_2
+             before(grammarAccess.getViolationAccess().getPercentageAssignment_1_1()); 
+            // InternalDescartesQL.g:5250:1: ( rule__Violation__PercentageAssignment_1_1 )
+            // InternalDescartesQL.g:5250:2: rule__Violation__PercentageAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__EntityReferenceClauseAssignment_2();
+            rule__Violation__PercentageAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getListMetricsQueryAccess().getEntityReferenceClauseAssignment_2()); 
+             after(grammarAccess.getViolationAccess().getPercentageAssignment_1_1()); 
 
             }
 
@@ -14703,21 +15040,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__2__Impl"
+    // $ANTLR end "rule__Violation__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__3"
-    // InternalDescartesQL.g:5165:1: rule__ListMetricsQuery__Group__3 : rule__ListMetricsQuery__Group__3__Impl ;
-    public final void rule__ListMetricsQuery__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__2"
+    // InternalDescartesQL.g:5260:1: rule__Violation__Group_1__2 : rule__Violation__Group_1__2__Impl ;
+    public final void rule__Violation__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5169:1: ( rule__ListMetricsQuery__Group__3__Impl )
-            // InternalDescartesQL.g:5170:2: rule__ListMetricsQuery__Group__3__Impl
+            // InternalDescartesQL.g:5264:1: ( rule__Violation__Group_1__2__Impl )
+            // InternalDescartesQL.g:5265:2: rule__Violation__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ListMetricsQuery__Group__3__Impl();
+            rule__Violation__Group_1__2__Impl();
 
             state._fsp--;
 
@@ -14736,25 +15073,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__3"
+    // $ANTLR end "rule__Violation__Group_1__2"
 
 
-    // $ANTLR start "rule__ListMetricsQuery__Group__3__Impl"
-    // InternalDescartesQL.g:5176:1: rule__ListMetricsQuery__Group__3__Impl : ( ')' ) ;
-    public final void rule__ListMetricsQuery__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Violation__Group_1__2__Impl"
+    // InternalDescartesQL.g:5271:1: rule__Violation__Group_1__2__Impl : ( 'PERCENT' ) ;
+    public final void rule__Violation__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5180:1: ( ( ')' ) )
-            // InternalDescartesQL.g:5181:1: ( ')' )
+            // InternalDescartesQL.g:5275:1: ( ( 'PERCENT' ) )
+            // InternalDescartesQL.g:5276:1: ( 'PERCENT' )
             {
-            // InternalDescartesQL.g:5181:1: ( ')' )
-            // InternalDescartesQL.g:5182:1: ')'
+            // InternalDescartesQL.g:5276:1: ( 'PERCENT' )
+            // InternalDescartesQL.g:5277:1: 'PERCENT'
             {
-             before(grammarAccess.getListMetricsQueryAccess().getRightParenthesisKeyword_3()); 
+             before(grammarAccess.getViolationAccess().getPERCENTKeyword_1_2()); 
             match(input,56,FOLLOW_2); 
-             after(grammarAccess.getListMetricsQueryAccess().getRightParenthesisKeyword_3()); 
+             after(grammarAccess.getViolationAccess().getPERCENTKeyword_1_2()); 
 
             }
 
@@ -14773,26 +15110,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ListMetricsQuery__Group__3__Impl"
+    // $ANTLR end "rule__Violation__Group_1__2__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__0"
-    // InternalDescartesQL.g:5203:1: rule__SelectQuery__Group__0 : rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1 ;
-    public final void rule__SelectQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__0"
+    // InternalDescartesQL.g:5296:1: rule__ListQuery__Group__0 : rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1 ;
+    public final void rule__ListQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5207:1: ( rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1 )
-            // InternalDescartesQL.g:5208:2: rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1
+            // InternalDescartesQL.g:5300:1: ( rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1 )
+            // InternalDescartesQL.g:5301:2: rule__ListQuery__Group__0__Impl rule__ListQuery__Group__1
             {
-            pushFollow(FOLLOW_14);
-            rule__SelectQuery__Group__0__Impl();
+            pushFollow(FOLLOW_25);
+            rule__ListQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__1();
+            rule__ListQuery__Group__1();
 
             state._fsp--;
 
@@ -14811,25 +15148,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__0"
+    // $ANTLR end "rule__ListQuery__Group__0"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__0__Impl"
-    // InternalDescartesQL.g:5215:1: rule__SelectQuery__Group__0__Impl : ( 'SELECT' ) ;
-    public final void rule__SelectQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__0__Impl"
+    // InternalDescartesQL.g:5308:1: rule__ListQuery__Group__0__Impl : ( 'LIST' ) ;
+    public final void rule__ListQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5219:1: ( ( 'SELECT' ) )
-            // InternalDescartesQL.g:5220:1: ( 'SELECT' )
+            // InternalDescartesQL.g:5312:1: ( ( 'LIST' ) )
+            // InternalDescartesQL.g:5313:1: ( 'LIST' )
             {
-            // InternalDescartesQL.g:5220:1: ( 'SELECT' )
-            // InternalDescartesQL.g:5221:1: 'SELECT'
+            // InternalDescartesQL.g:5313:1: ( 'LIST' )
+            // InternalDescartesQL.g:5314:1: 'LIST'
             {
-             before(grammarAccess.getSelectQueryAccess().getSELECTKeyword_0()); 
-            match(input,63,FOLLOW_2); 
-             after(grammarAccess.getSelectQueryAccess().getSELECTKeyword_0()); 
+             before(grammarAccess.getListQueryAccess().getLISTKeyword_0()); 
+            match(input,65,FOLLOW_2); 
+             after(grammarAccess.getListQueryAccess().getLISTKeyword_0()); 
 
             }
 
@@ -14848,26 +15185,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__0__Impl"
+    // $ANTLR end "rule__ListQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__1"
-    // InternalDescartesQL.g:5234:1: rule__SelectQuery__Group__1 : rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2 ;
-    public final void rule__SelectQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__1"
+    // InternalDescartesQL.g:5327:1: rule__ListQuery__Group__1 : rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2 ;
+    public final void rule__ListQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5238:1: ( rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2 )
-            // InternalDescartesQL.g:5239:2: rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2
+            // InternalDescartesQL.g:5331:1: ( rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2 )
+            // InternalDescartesQL.g:5332:2: rule__ListQuery__Group__1__Impl rule__ListQuery__Group__2
             {
-            pushFollow(FOLLOW_30);
-            rule__SelectQuery__Group__1__Impl();
+            pushFollow(FOLLOW_26);
+            rule__ListQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__2();
+            rule__ListQuery__Group__2();
 
             state._fsp--;
 
@@ -14886,35 +15223,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__1"
+    // $ANTLR end "rule__ListQuery__Group__1"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__1__Impl"
-    // InternalDescartesQL.g:5246:1: rule__SelectQuery__Group__1__Impl : ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) ) ;
-    public final void rule__SelectQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__1__Impl"
+    // InternalDescartesQL.g:5339:1: rule__ListQuery__Group__1__Impl : ( ( rule__ListQuery__QueryTypeAssignment_1 ) ) ;
+    public final void rule__ListQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5250:1: ( ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) ) )
-            // InternalDescartesQL.g:5251:1: ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) )
+            // InternalDescartesQL.g:5343:1: ( ( ( rule__ListQuery__QueryTypeAssignment_1 ) ) )
+            // InternalDescartesQL.g:5344:1: ( ( rule__ListQuery__QueryTypeAssignment_1 ) )
             {
-            // InternalDescartesQL.g:5251:1: ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) )
-            // InternalDescartesQL.g:5252:1: ( rule__SelectQuery__MetricReferenceClausesAssignment_1 )
+            // InternalDescartesQL.g:5344:1: ( ( rule__ListQuery__QueryTypeAssignment_1 ) )
+            // InternalDescartesQL.g:5345:1: ( rule__ListQuery__QueryTypeAssignment_1 )
             {
-             before(grammarAccess.getSelectQueryAccess().getMetricReferenceClausesAssignment_1()); 
-            // InternalDescartesQL.g:5253:1: ( rule__SelectQuery__MetricReferenceClausesAssignment_1 )
-            // InternalDescartesQL.g:5253:2: rule__SelectQuery__MetricReferenceClausesAssignment_1
+             before(grammarAccess.getListQueryAccess().getQueryTypeAssignment_1()); 
+            // InternalDescartesQL.g:5346:1: ( rule__ListQuery__QueryTypeAssignment_1 )
+            // InternalDescartesQL.g:5346:2: rule__ListQuery__QueryTypeAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__MetricReferenceClausesAssignment_1();
+            rule__ListQuery__QueryTypeAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSelectQueryAccess().getMetricReferenceClausesAssignment_1()); 
+             after(grammarAccess.getListQueryAccess().getQueryTypeAssignment_1()); 
 
             }
 
@@ -14933,26 +15270,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__1__Impl"
+    // $ANTLR end "rule__ListQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__2"
-    // InternalDescartesQL.g:5263:1: rule__SelectQuery__Group__2 : rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3 ;
-    public final void rule__SelectQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__2"
+    // InternalDescartesQL.g:5356:1: rule__ListQuery__Group__2 : rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3 ;
+    public final void rule__ListQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5267:1: ( rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3 )
-            // InternalDescartesQL.g:5268:2: rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3
+            // InternalDescartesQL.g:5360:1: ( rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3 )
+            // InternalDescartesQL.g:5361:2: rule__ListQuery__Group__2__Impl rule__ListQuery__Group__3
             {
-            pushFollow(FOLLOW_30);
-            rule__SelectQuery__Group__2__Impl();
+            pushFollow(FOLLOW_26);
+            rule__ListQuery__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__3();
+            rule__ListQuery__Group__3();
 
             state._fsp--;
 
@@ -14971,36 +15308,36 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__2"
+    // $ANTLR end "rule__ListQuery__Group__2"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__2__Impl"
-    // InternalDescartesQL.g:5275:1: rule__SelectQuery__Group__2__Impl : ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? ) ;
-    public final void rule__SelectQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__2__Impl"
+    // InternalDescartesQL.g:5368:1: rule__ListQuery__Group__2__Impl : ( ( rule__ListQuery__FilterClauseAssignment_2 )? ) ;
+    public final void rule__ListQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5279:1: ( ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? ) )
-            // InternalDescartesQL.g:5280:1: ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? )
+            // InternalDescartesQL.g:5372:1: ( ( ( rule__ListQuery__FilterClauseAssignment_2 )? ) )
+            // InternalDescartesQL.g:5373:1: ( ( rule__ListQuery__FilterClauseAssignment_2 )? )
             {
-            // InternalDescartesQL.g:5280:1: ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? )
-            // InternalDescartesQL.g:5281:1: ( rule__SelectQuery__ConstraintClauseAssignment_2 )?
+            // InternalDescartesQL.g:5373:1: ( ( rule__ListQuery__FilterClauseAssignment_2 )? )
+            // InternalDescartesQL.g:5374:1: ( rule__ListQuery__FilterClauseAssignment_2 )?
             {
-             before(grammarAccess.getSelectQueryAccess().getConstraintClauseAssignment_2()); 
-            // InternalDescartesQL.g:5282:1: ( rule__SelectQuery__ConstraintClauseAssignment_2 )?
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+             before(grammarAccess.getListQueryAccess().getFilterClauseAssignment_2()); 
+            // InternalDescartesQL.g:5375:1: ( rule__ListQuery__FilterClauseAssignment_2 )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
 
-            if ( (LA39_0==66) ) {
-                alt39=1;
+            if ( (LA44_0==101) ) {
+                alt44=1;
             }
-            switch (alt39) {
+            switch (alt44) {
                 case 1 :
-                    // InternalDescartesQL.g:5282:2: rule__SelectQuery__ConstraintClauseAssignment_2
+                    // InternalDescartesQL.g:5375:2: rule__ListQuery__FilterClauseAssignment_2
                     {
                     pushFollow(FOLLOW_2);
-                    rule__SelectQuery__ConstraintClauseAssignment_2();
+                    rule__ListQuery__FilterClauseAssignment_2();
 
                     state._fsp--;
 
@@ -15010,7 +15347,7 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
             }
 
-             after(grammarAccess.getSelectQueryAccess().getConstraintClauseAssignment_2()); 
+             after(grammarAccess.getListQueryAccess().getFilterClauseAssignment_2()); 
 
             }
 
@@ -15029,26 +15366,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__2__Impl"
+    // $ANTLR end "rule__ListQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__3"
-    // InternalDescartesQL.g:5292:1: rule__SelectQuery__Group__3 : rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4 ;
-    public final void rule__SelectQuery__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__3"
+    // InternalDescartesQL.g:5385:1: rule__ListQuery__Group__3 : rule__ListQuery__Group__3__Impl ;
+    public final void rule__ListQuery__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5296:1: ( rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4 )
-            // InternalDescartesQL.g:5297:2: rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4
+            // InternalDescartesQL.g:5389:1: ( rule__ListQuery__Group__3__Impl )
+            // InternalDescartesQL.g:5390:2: rule__ListQuery__Group__3__Impl
             {
-            pushFollow(FOLLOW_30);
-            rule__SelectQuery__Group__3__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__4();
+            rule__ListQuery__Group__3__Impl();
 
             state._fsp--;
 
@@ -15067,46 +15399,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__3"
+    // $ANTLR end "rule__ListQuery__Group__3"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__3__Impl"
-    // InternalDescartesQL.g:5304:1: rule__SelectQuery__Group__3__Impl : ( ( rule__SelectQuery__DofClauseAssignment_3 )? ) ;
-    public final void rule__SelectQuery__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListQuery__Group__3__Impl"
+    // InternalDescartesQL.g:5396:1: rule__ListQuery__Group__3__Impl : ( ( rule__ListQuery__UsingClauseAssignment_3 ) ) ;
+    public final void rule__ListQuery__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5308:1: ( ( ( rule__SelectQuery__DofClauseAssignment_3 )? ) )
-            // InternalDescartesQL.g:5309:1: ( ( rule__SelectQuery__DofClauseAssignment_3 )? )
+            // InternalDescartesQL.g:5400:1: ( ( ( rule__ListQuery__UsingClauseAssignment_3 ) ) )
+            // InternalDescartesQL.g:5401:1: ( ( rule__ListQuery__UsingClauseAssignment_3 ) )
             {
-            // InternalDescartesQL.g:5309:1: ( ( rule__SelectQuery__DofClauseAssignment_3 )? )
-            // InternalDescartesQL.g:5310:1: ( rule__SelectQuery__DofClauseAssignment_3 )?
+            // InternalDescartesQL.g:5401:1: ( ( rule__ListQuery__UsingClauseAssignment_3 ) )
+            // InternalDescartesQL.g:5402:1: ( rule__ListQuery__UsingClauseAssignment_3 )
             {
-             before(grammarAccess.getSelectQueryAccess().getDofClauseAssignment_3()); 
-            // InternalDescartesQL.g:5311:1: ( rule__SelectQuery__DofClauseAssignment_3 )?
-            int alt40=2;
-            int LA40_0 = input.LA(1);
-
-            if ( (LA40_0==85) ) {
-                alt40=1;
-            }
-            switch (alt40) {
-                case 1 :
-                    // InternalDescartesQL.g:5311:2: rule__SelectQuery__DofClauseAssignment_3
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__SelectQuery__DofClauseAssignment_3();
-
-                    state._fsp--;
+             before(grammarAccess.getListQueryAccess().getUsingClauseAssignment_3()); 
+            // InternalDescartesQL.g:5403:1: ( rule__ListQuery__UsingClauseAssignment_3 )
+            // InternalDescartesQL.g:5403:2: rule__ListQuery__UsingClauseAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ListQuery__UsingClauseAssignment_3();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getSelectQueryAccess().getDofClauseAssignment_3()); 
+             after(grammarAccess.getListQueryAccess().getUsingClauseAssignment_3()); 
 
             }
 
@@ -15125,26 +15446,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__3__Impl"
+    // $ANTLR end "rule__ListQuery__Group__3__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__4"
-    // InternalDescartesQL.g:5321:1: rule__SelectQuery__Group__4 : rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5 ;
-    public final void rule__SelectQuery__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__0"
+    // InternalDescartesQL.g:5421:1: rule__GetQuery__Group__0 : rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1 ;
+    public final void rule__GetQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5325:1: ( rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5 )
-            // InternalDescartesQL.g:5326:2: rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5
+            // InternalDescartesQL.g:5425:1: ( rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1 )
+            // InternalDescartesQL.g:5426:2: rule__GetQuery__Group__0__Impl rule__GetQuery__Group__1
             {
-            pushFollow(FOLLOW_6);
-            rule__SelectQuery__Group__4__Impl();
+            pushFollow(FOLLOW_27);
+            rule__GetQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__5();
+            rule__GetQuery__Group__1();
 
             state._fsp--;
 
@@ -15163,35 +15484,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__4"
+    // $ANTLR end "rule__GetQuery__Group__0"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__4__Impl"
-    // InternalDescartesQL.g:5333:1: rule__SelectQuery__Group__4__Impl : ( ( rule__SelectQuery__ForClauseAssignment_4 ) ) ;
-    public final void rule__SelectQuery__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__0__Impl"
+    // InternalDescartesQL.g:5433:1: rule__GetQuery__Group__0__Impl : ( 'GET' ) ;
+    public final void rule__GetQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5337:1: ( ( ( rule__SelectQuery__ForClauseAssignment_4 ) ) )
-            // InternalDescartesQL.g:5338:1: ( ( rule__SelectQuery__ForClauseAssignment_4 ) )
+            // InternalDescartesQL.g:5437:1: ( ( 'GET' ) )
+            // InternalDescartesQL.g:5438:1: ( 'GET' )
             {
-            // InternalDescartesQL.g:5338:1: ( ( rule__SelectQuery__ForClauseAssignment_4 ) )
-            // InternalDescartesQL.g:5339:1: ( rule__SelectQuery__ForClauseAssignment_4 )
+            // InternalDescartesQL.g:5438:1: ( 'GET' )
+            // InternalDescartesQL.g:5439:1: 'GET'
             {
-             before(grammarAccess.getSelectQueryAccess().getForClauseAssignment_4()); 
-            // InternalDescartesQL.g:5340:1: ( rule__SelectQuery__ForClauseAssignment_4 )
-            // InternalDescartesQL.g:5340:2: rule__SelectQuery__ForClauseAssignment_4
-            {
-            pushFollow(FOLLOW_2);
-            rule__SelectQuery__ForClauseAssignment_4();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getSelectQueryAccess().getForClauseAssignment_4()); 
+             before(grammarAccess.getGetQueryAccess().getGETKeyword_0()); 
+            match(input,66,FOLLOW_2); 
+             after(grammarAccess.getGetQueryAccess().getGETKeyword_0()); 
 
             }
 
@@ -15210,26 +15521,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__4__Impl"
+    // $ANTLR end "rule__GetQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__5"
-    // InternalDescartesQL.g:5350:1: rule__SelectQuery__Group__5 : rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6 ;
-    public final void rule__SelectQuery__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__1"
+    // InternalDescartesQL.g:5452:1: rule__GetQuery__Group__1 : rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2 ;
+    public final void rule__GetQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5354:1: ( rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6 )
-            // InternalDescartesQL.g:5355:2: rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6
+            // InternalDescartesQL.g:5456:1: ( rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2 )
+            // InternalDescartesQL.g:5457:2: rule__GetQuery__Group__1__Impl rule__GetQuery__Group__2
             {
-            pushFollow(FOLLOW_31);
-            rule__SelectQuery__Group__5__Impl();
+            pushFollow(FOLLOW_6);
+            rule__GetQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__6();
+            rule__GetQuery__Group__2();
 
             state._fsp--;
 
@@ -15248,35 +15559,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__5"
+    // $ANTLR end "rule__GetQuery__Group__1"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__5__Impl"
-    // InternalDescartesQL.g:5362:1: rule__SelectQuery__Group__5__Impl : ( ( rule__SelectQuery__UsingClauseAssignment_5 ) ) ;
-    public final void rule__SelectQuery__Group__5__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__1__Impl"
+    // InternalDescartesQL.g:5464:1: rule__GetQuery__Group__1__Impl : ( ( rule__GetQuery__QueryTapeAssignment_1 ) ) ;
+    public final void rule__GetQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5366:1: ( ( ( rule__SelectQuery__UsingClauseAssignment_5 ) ) )
-            // InternalDescartesQL.g:5367:1: ( ( rule__SelectQuery__UsingClauseAssignment_5 ) )
+            // InternalDescartesQL.g:5468:1: ( ( ( rule__GetQuery__QueryTapeAssignment_1 ) ) )
+            // InternalDescartesQL.g:5469:1: ( ( rule__GetQuery__QueryTapeAssignment_1 ) )
             {
-            // InternalDescartesQL.g:5367:1: ( ( rule__SelectQuery__UsingClauseAssignment_5 ) )
-            // InternalDescartesQL.g:5368:1: ( rule__SelectQuery__UsingClauseAssignment_5 )
+            // InternalDescartesQL.g:5469:1: ( ( rule__GetQuery__QueryTapeAssignment_1 ) )
+            // InternalDescartesQL.g:5470:1: ( rule__GetQuery__QueryTapeAssignment_1 )
             {
-             before(grammarAccess.getSelectQueryAccess().getUsingClauseAssignment_5()); 
-            // InternalDescartesQL.g:5369:1: ( rule__SelectQuery__UsingClauseAssignment_5 )
-            // InternalDescartesQL.g:5369:2: rule__SelectQuery__UsingClauseAssignment_5
+             before(grammarAccess.getGetQueryAccess().getQueryTapeAssignment_1()); 
+            // InternalDescartesQL.g:5471:1: ( rule__GetQuery__QueryTapeAssignment_1 )
+            // InternalDescartesQL.g:5471:2: rule__GetQuery__QueryTapeAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__UsingClauseAssignment_5();
+            rule__GetQuery__QueryTapeAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSelectQueryAccess().getUsingClauseAssignment_5()); 
+             after(grammarAccess.getGetQueryAccess().getQueryTapeAssignment_1()); 
 
             }
 
@@ -15295,21 +15606,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__5__Impl"
+    // $ANTLR end "rule__GetQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__6"
-    // InternalDescartesQL.g:5379:1: rule__SelectQuery__Group__6 : rule__SelectQuery__Group__6__Impl ;
-    public final void rule__SelectQuery__Group__6() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__2"
+    // InternalDescartesQL.g:5481:1: rule__GetQuery__Group__2 : rule__GetQuery__Group__2__Impl ;
+    public final void rule__GetQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5383:1: ( rule__SelectQuery__Group__6__Impl )
-            // InternalDescartesQL.g:5384:2: rule__SelectQuery__Group__6__Impl
+            // InternalDescartesQL.g:5485:1: ( rule__GetQuery__Group__2__Impl )
+            // InternalDescartesQL.g:5486:2: rule__GetQuery__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__SelectQuery__Group__6__Impl();
+            rule__GetQuery__Group__2__Impl();
 
             state._fsp--;
 
@@ -15328,46 +15639,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__6"
+    // $ANTLR end "rule__GetQuery__Group__2"
 
 
-    // $ANTLR start "rule__SelectQuery__Group__6__Impl"
-    // InternalDescartesQL.g:5390:1: rule__SelectQuery__Group__6__Impl : ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? ) ;
-    public final void rule__SelectQuery__Group__6__Impl() throws RecognitionException {
+    // $ANTLR start "rule__GetQuery__Group__2__Impl"
+    // InternalDescartesQL.g:5492:1: rule__GetQuery__Group__2__Impl : ( ( rule__GetQuery__UsingClauseAssignment_2 ) ) ;
+    public final void rule__GetQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5394:1: ( ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? ) )
-            // InternalDescartesQL.g:5395:1: ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? )
+            // InternalDescartesQL.g:5496:1: ( ( ( rule__GetQuery__UsingClauseAssignment_2 ) ) )
+            // InternalDescartesQL.g:5497:1: ( ( rule__GetQuery__UsingClauseAssignment_2 ) )
             {
-            // InternalDescartesQL.g:5395:1: ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? )
-            // InternalDescartesQL.g:5396:1: ( rule__SelectQuery__ObserveClauseAssignment_6 )?
+            // InternalDescartesQL.g:5497:1: ( ( rule__GetQuery__UsingClauseAssignment_2 ) )
+            // InternalDescartesQL.g:5498:1: ( rule__GetQuery__UsingClauseAssignment_2 )
             {
-             before(grammarAccess.getSelectQueryAccess().getObserveClauseAssignment_6()); 
-            // InternalDescartesQL.g:5397:1: ( rule__SelectQuery__ObserveClauseAssignment_6 )?
-            int alt41=2;
-            int LA41_0 = input.LA(1);
-
-            if ( (LA41_0==99) ) {
-                alt41=1;
-            }
-            switch (alt41) {
-                case 1 :
-                    // InternalDescartesQL.g:5397:2: rule__SelectQuery__ObserveClauseAssignment_6
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__SelectQuery__ObserveClauseAssignment_6();
-
-                    state._fsp--;
+             before(grammarAccess.getGetQueryAccess().getUsingClauseAssignment_2()); 
+            // InternalDescartesQL.g:5499:1: ( rule__GetQuery__UsingClauseAssignment_2 )
+            // InternalDescartesQL.g:5499:2: rule__GetQuery__UsingClauseAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__GetQuery__UsingClauseAssignment_2();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getSelectQueryAccess().getObserveClauseAssignment_6()); 
+             after(grammarAccess.getGetQueryAccess().getUsingClauseAssignment_2()); 
 
             }
 
@@ -15386,26 +15686,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SelectQuery__Group__6__Impl"
+    // $ANTLR end "rule__GetQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group__0"
-    // InternalDescartesQL.g:5421:1: rule__MetricReferenceClauses__Group__0 : rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1 ;
-    public final void rule__MetricReferenceClauses__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ListDoFQuery__Group__0"
+    // InternalDescartesQL.g:5515:1: rule__ListDoFQuery__Group__0 : rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1 ;
+    public final void rule__ListDoFQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5425:1: ( rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1 )
-            // InternalDescartesQL.g:5426:2: rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1
+            // InternalDescartesQL.g:5519:1: ( rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1 )
+            // InternalDescartesQL.g:5520:2: rule__ListDoFQuery__Group__0__Impl rule__ListDoFQuery__Group__1
             {
-            pushFollow(FOLLOW_8);
-            rule__MetricReferenceClauses__Group__0__Impl();
+            pushFollow(FOLLOW_28);
+            rule__ListDoFQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__Group__1();
+            rule__ListDoFQuery__Group__1();
 
             state._fsp--;
 
@@ -15424,35 +15724,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group__0"
+    // $ANTLR end "rule__ListDoFQuery__Group__0"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group__0__Impl"
-    // InternalDescartesQL.g:5433:1: rule__MetricReferenceClauses__Group__0__Impl : ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) ) ;
-    public final void rule__MetricReferenceClauses__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListDoFQuery__Group__0__Impl"
+    // InternalDescartesQL.g:5527:1: rule__ListDoFQuery__Group__0__Impl : ( ( rule__ListDoFQuery__ModeAssignment_0 ) ) ;
+    public final void rule__ListDoFQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5437:1: ( ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) ) )
-            // InternalDescartesQL.g:5438:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) )
+            // InternalDescartesQL.g:5531:1: ( ( ( rule__ListDoFQuery__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:5532:1: ( ( rule__ListDoFQuery__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:5438:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) )
-            // InternalDescartesQL.g:5439:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 )
+            // InternalDescartesQL.g:5532:1: ( ( rule__ListDoFQuery__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:5533:1: ( rule__ListDoFQuery__ModeAssignment_0 )
             {
-             before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_0()); 
-            // InternalDescartesQL.g:5440:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 )
-            // InternalDescartesQL.g:5440:2: rule__MetricReferenceClauses__MetricClauseTypesAssignment_0
+             before(grammarAccess.getListDoFQueryAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:5534:1: ( rule__ListDoFQuery__ModeAssignment_0 )
+            // InternalDescartesQL.g:5534:2: rule__ListDoFQuery__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__MetricClauseTypesAssignment_0();
+            rule__ListDoFQuery__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_0()); 
+             after(grammarAccess.getListDoFQueryAccess().getModeAssignment_0()); 
 
             }
 
@@ -15471,21 +15771,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group__0__Impl"
+    // $ANTLR end "rule__ListDoFQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group__1"
-    // InternalDescartesQL.g:5450:1: rule__MetricReferenceClauses__Group__1 : rule__MetricReferenceClauses__Group__1__Impl ;
-    public final void rule__MetricReferenceClauses__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ListDoFQuery__Group__1"
+    // InternalDescartesQL.g:5544:1: rule__ListDoFQuery__Group__1 : rule__ListDoFQuery__Group__1__Impl ;
+    public final void rule__ListDoFQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5454:1: ( rule__MetricReferenceClauses__Group__1__Impl )
-            // InternalDescartesQL.g:5455:2: rule__MetricReferenceClauses__Group__1__Impl
+            // InternalDescartesQL.g:5548:1: ( rule__ListDoFQuery__Group__1__Impl )
+            // InternalDescartesQL.g:5549:2: rule__ListDoFQuery__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__Group__1__Impl();
+            rule__ListDoFQuery__Group__1__Impl();
 
             state._fsp--;
 
@@ -15504,53 +15804,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group__1"
+    // $ANTLR end "rule__ListDoFQuery__Group__1"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group__1__Impl"
-    // InternalDescartesQL.g:5461:1: rule__MetricReferenceClauses__Group__1__Impl : ( ( rule__MetricReferenceClauses__Group_1__0 )* ) ;
-    public final void rule__MetricReferenceClauses__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListDoFQuery__Group__1__Impl"
+    // InternalDescartesQL.g:5555:1: rule__ListDoFQuery__Group__1__Impl : ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? ) ;
+    public final void rule__ListDoFQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5465:1: ( ( ( rule__MetricReferenceClauses__Group_1__0 )* ) )
-            // InternalDescartesQL.g:5466:1: ( ( rule__MetricReferenceClauses__Group_1__0 )* )
+            // InternalDescartesQL.g:5559:1: ( ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? ) )
+            // InternalDescartesQL.g:5560:1: ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? )
             {
-            // InternalDescartesQL.g:5466:1: ( ( rule__MetricReferenceClauses__Group_1__0 )* )
-            // InternalDescartesQL.g:5467:1: ( rule__MetricReferenceClauses__Group_1__0 )*
+            // InternalDescartesQL.g:5560:1: ( ( rule__ListDoFQuery__WithClauseAssignment_1 )? )
+            // InternalDescartesQL.g:5561:1: ( rule__ListDoFQuery__WithClauseAssignment_1 )?
             {
-             before(grammarAccess.getMetricReferenceClausesAccess().getGroup_1()); 
-            // InternalDescartesQL.g:5468:1: ( rule__MetricReferenceClauses__Group_1__0 )*
-            loop42:
-            do {
-                int alt42=2;
-                int LA42_0 = input.LA(1);
-
-                if ( (LA42_0==53) ) {
-                    alt42=1;
-                }
-
+             before(grammarAccess.getListDoFQueryAccess().getWithClauseAssignment_1()); 
+            // InternalDescartesQL.g:5562:1: ( rule__ListDoFQuery__WithClauseAssignment_1 )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-                switch (alt42) {
-            	case 1 :
-            	    // InternalDescartesQL.g:5468:2: rule__MetricReferenceClauses__Group_1__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__MetricReferenceClauses__Group_1__0();
+            if ( (LA45_0==100) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalDescartesQL.g:5562:2: rule__ListDoFQuery__WithClauseAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ListDoFQuery__WithClauseAssignment_1();
 
-            	    state._fsp--;
+                    state._fsp--;
 
 
-            	    }
-            	    break;
+                    }
+                    break;
 
-            	default :
-            	    break loop42;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getMetricReferenceClausesAccess().getGroup_1()); 
+             after(grammarAccess.getListDoFQueryAccess().getWithClauseAssignment_1()); 
 
             }
 
@@ -15569,26 +15862,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group__1__Impl"
+    // $ANTLR end "rule__ListDoFQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group_1__0"
-    // InternalDescartesQL.g:5482:1: rule__MetricReferenceClauses__Group_1__0 : rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1 ;
-    public final void rule__MetricReferenceClauses__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__0"
+    // InternalDescartesQL.g:5576:1: rule__ListMetricsQuery__Group__0 : rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1 ;
+    public final void rule__ListMetricsQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5486:1: ( rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1 )
-            // InternalDescartesQL.g:5487:2: rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1
+            // InternalDescartesQL.g:5580:1: ( rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1 )
+            // InternalDescartesQL.g:5581:2: rule__ListMetricsQuery__Group__0__Impl rule__ListMetricsQuery__Group__1
             {
             pushFollow(FOLLOW_14);
-            rule__MetricReferenceClauses__Group_1__0__Impl();
+            rule__ListMetricsQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__Group_1__1();
+            rule__ListMetricsQuery__Group__1();
 
             state._fsp--;
 
@@ -15607,25 +15900,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group_1__0"
+    // $ANTLR end "rule__ListMetricsQuery__Group__0"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group_1__0__Impl"
-    // InternalDescartesQL.g:5494:1: rule__MetricReferenceClauses__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__MetricReferenceClauses__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__0__Impl"
+    // InternalDescartesQL.g:5588:1: rule__ListMetricsQuery__Group__0__Impl : ( ( rule__ListMetricsQuery__ModeAssignment_0 ) ) ;
+    public final void rule__ListMetricsQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5498:1: ( ( ',' ) )
-            // InternalDescartesQL.g:5499:1: ( ',' )
+            // InternalDescartesQL.g:5592:1: ( ( ( rule__ListMetricsQuery__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:5593:1: ( ( rule__ListMetricsQuery__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:5499:1: ( ',' )
-            // InternalDescartesQL.g:5500:1: ','
+            // InternalDescartesQL.g:5593:1: ( ( rule__ListMetricsQuery__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:5594:1: ( rule__ListMetricsQuery__ModeAssignment_0 )
             {
-             before(grammarAccess.getMetricReferenceClausesAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getMetricReferenceClausesAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getListMetricsQueryAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:5595:1: ( rule__ListMetricsQuery__ModeAssignment_0 )
+            // InternalDescartesQL.g:5595:2: rule__ListMetricsQuery__ModeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ListMetricsQuery__ModeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getListMetricsQueryAccess().getModeAssignment_0()); 
 
             }
 
@@ -15644,21 +15947,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group_1__0__Impl"
+    // $ANTLR end "rule__ListMetricsQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group_1__1"
-    // InternalDescartesQL.g:5513:1: rule__MetricReferenceClauses__Group_1__1 : rule__MetricReferenceClauses__Group_1__1__Impl ;
-    public final void rule__MetricReferenceClauses__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__1"
+    // InternalDescartesQL.g:5605:1: rule__ListMetricsQuery__Group__1 : rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2 ;
+    public final void rule__ListMetricsQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5517:1: ( rule__MetricReferenceClauses__Group_1__1__Impl )
-            // InternalDescartesQL.g:5518:2: rule__MetricReferenceClauses__Group_1__1__Impl
+            // InternalDescartesQL.g:5609:1: ( rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2 )
+            // InternalDescartesQL.g:5610:2: rule__ListMetricsQuery__Group__1__Impl rule__ListMetricsQuery__Group__2
             {
+            pushFollow(FOLLOW_29);
+            rule__ListMetricsQuery__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__Group_1__1__Impl();
+            rule__ListMetricsQuery__Group__2();
 
             state._fsp--;
 
@@ -15677,35 +15985,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group_1__1"
+    // $ANTLR end "rule__ListMetricsQuery__Group__1"
 
 
-    // $ANTLR start "rule__MetricReferenceClauses__Group_1__1__Impl"
-    // InternalDescartesQL.g:5524:1: rule__MetricReferenceClauses__Group_1__1__Impl : ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) ) ;
-    public final void rule__MetricReferenceClauses__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__1__Impl"
+    // InternalDescartesQL.g:5617:1: rule__ListMetricsQuery__Group__1__Impl : ( '(' ) ;
+    public final void rule__ListMetricsQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5528:1: ( ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:5529:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) )
-            {
-            // InternalDescartesQL.g:5529:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) )
-            // InternalDescartesQL.g:5530:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 )
+            // InternalDescartesQL.g:5621:1: ( ( '(' ) )
+            // InternalDescartesQL.g:5622:1: ( '(' )
             {
-             before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_1_1()); 
-            // InternalDescartesQL.g:5531:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 )
-            // InternalDescartesQL.g:5531:2: rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1
+            // InternalDescartesQL.g:5622:1: ( '(' )
+            // InternalDescartesQL.g:5623:1: '('
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_1_1()); 
+             before(grammarAccess.getListMetricsQueryAccess().getLeftParenthesisKeyword_1()); 
+            match(input,59,FOLLOW_2); 
+             after(grammarAccess.getListMetricsQueryAccess().getLeftParenthesisKeyword_1()); 
 
             }
 
@@ -15724,26 +16022,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReferenceClauses__Group_1__1__Impl"
+    // $ANTLR end "rule__ListMetricsQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DetectQuery__Group__0"
-    // InternalDescartesQL.g:5545:1: rule__DetectQuery__Group__0 : rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1 ;
-    public final void rule__DetectQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__2"
+    // InternalDescartesQL.g:5636:1: rule__ListMetricsQuery__Group__2 : rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3 ;
+    public final void rule__ListMetricsQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5549:1: ( rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1 )
-            // InternalDescartesQL.g:5550:2: rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1
+            // InternalDescartesQL.g:5640:1: ( rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3 )
+            // InternalDescartesQL.g:5641:2: rule__ListMetricsQuery__Group__2__Impl rule__ListMetricsQuery__Group__3
             {
-            pushFollow(FOLLOW_32);
-            rule__DetectQuery__Group__0__Impl();
+            pushFollow(FOLLOW_30);
+            rule__ListMetricsQuery__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DetectQuery__Group__1();
+            rule__ListMetricsQuery__Group__3();
 
             state._fsp--;
 
@@ -15762,25 +16060,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectQuery__Group__0"
+    // $ANTLR end "rule__ListMetricsQuery__Group__2"
 
 
-    // $ANTLR start "rule__DetectQuery__Group__0__Impl"
-    // InternalDescartesQL.g:5557:1: rule__DetectQuery__Group__0__Impl : ( 'DETECT' ) ;
-    public final void rule__DetectQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__2__Impl"
+    // InternalDescartesQL.g:5648:1: rule__ListMetricsQuery__Group__2__Impl : ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) ) ;
+    public final void rule__ListMetricsQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5561:1: ( ( 'DETECT' ) )
-            // InternalDescartesQL.g:5562:1: ( 'DETECT' )
+            // InternalDescartesQL.g:5652:1: ( ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) ) )
+            // InternalDescartesQL.g:5653:1: ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) )
             {
-            // InternalDescartesQL.g:5562:1: ( 'DETECT' )
-            // InternalDescartesQL.g:5563:1: 'DETECT'
+            // InternalDescartesQL.g:5653:1: ( ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 ) )
+            // InternalDescartesQL.g:5654:1: ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 )
             {
-             before(grammarAccess.getDetectQueryAccess().getDETECTKeyword_0()); 
-            match(input,64,FOLLOW_2); 
-             after(grammarAccess.getDetectQueryAccess().getDETECTKeyword_0()); 
+             before(grammarAccess.getListMetricsQueryAccess().getEntityReferenceClauseAssignment_2()); 
+            // InternalDescartesQL.g:5655:1: ( rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 )
+            // InternalDescartesQL.g:5655:2: rule__ListMetricsQuery__EntityReferenceClauseAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ListMetricsQuery__EntityReferenceClauseAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getListMetricsQueryAccess().getEntityReferenceClauseAssignment_2()); 
 
             }
 
@@ -15799,21 +16107,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectQuery__Group__0__Impl"
+    // $ANTLR end "rule__ListMetricsQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__DetectQuery__Group__1"
-    // InternalDescartesQL.g:5576:1: rule__DetectQuery__Group__1 : rule__DetectQuery__Group__1__Impl ;
-    public final void rule__DetectQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__3"
+    // InternalDescartesQL.g:5665:1: rule__ListMetricsQuery__Group__3 : rule__ListMetricsQuery__Group__3__Impl ;
+    public final void rule__ListMetricsQuery__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5580:1: ( rule__DetectQuery__Group__1__Impl )
-            // InternalDescartesQL.g:5581:2: rule__DetectQuery__Group__1__Impl
+            // InternalDescartesQL.g:5669:1: ( rule__ListMetricsQuery__Group__3__Impl )
+            // InternalDescartesQL.g:5670:2: rule__ListMetricsQuery__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__DetectQuery__Group__1__Impl();
+            rule__ListMetricsQuery__Group__3__Impl();
 
             state._fsp--;
 
@@ -15832,35 +16140,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectQuery__Group__1"
+    // $ANTLR end "rule__ListMetricsQuery__Group__3"
 
 
-    // $ANTLR start "rule__DetectQuery__Group__1__Impl"
-    // InternalDescartesQL.g:5587:1: rule__DetectQuery__Group__1__Impl : ( ( rule__DetectQuery__QueryTypeAssignment_1 ) ) ;
-    public final void rule__DetectQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ListMetricsQuery__Group__3__Impl"
+    // InternalDescartesQL.g:5676:1: rule__ListMetricsQuery__Group__3__Impl : ( ')' ) ;
+    public final void rule__ListMetricsQuery__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5591:1: ( ( ( rule__DetectQuery__QueryTypeAssignment_1 ) ) )
-            // InternalDescartesQL.g:5592:1: ( ( rule__DetectQuery__QueryTypeAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:5592:1: ( ( rule__DetectQuery__QueryTypeAssignment_1 ) )
-            // InternalDescartesQL.g:5593:1: ( rule__DetectQuery__QueryTypeAssignment_1 )
+            // InternalDescartesQL.g:5680:1: ( ( ')' ) )
+            // InternalDescartesQL.g:5681:1: ( ')' )
             {
-             before(grammarAccess.getDetectQueryAccess().getQueryTypeAssignment_1()); 
-            // InternalDescartesQL.g:5594:1: ( rule__DetectQuery__QueryTypeAssignment_1 )
-            // InternalDescartesQL.g:5594:2: rule__DetectQuery__QueryTypeAssignment_1
+            // InternalDescartesQL.g:5681:1: ( ')' )
+            // InternalDescartesQL.g:5682:1: ')'
             {
-            pushFollow(FOLLOW_2);
-            rule__DetectQuery__QueryTypeAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getDetectQueryAccess().getQueryTypeAssignment_1()); 
+             before(grammarAccess.getListMetricsQueryAccess().getRightParenthesisKeyword_3()); 
+            match(input,60,FOLLOW_2); 
+             after(grammarAccess.getListMetricsQueryAccess().getRightParenthesisKeyword_3()); 
 
             }
 
@@ -15879,26 +16177,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectQuery__Group__1__Impl"
+    // $ANTLR end "rule__ListMetricsQuery__Group__3__Impl"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__0"
-    // InternalDescartesQL.g:5608:1: rule__DetectBottlenecksQuery__Group__0 : rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1 ;
-    public final void rule__DetectBottlenecksQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__0"
+    // InternalDescartesQL.g:5703:1: rule__SelectQuery__Group__0 : rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1 ;
+    public final void rule__SelectQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5612:1: ( rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1 )
-            // InternalDescartesQL.g:5613:2: rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1
+            // InternalDescartesQL.g:5707:1: ( rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1 )
+            // InternalDescartesQL.g:5708:2: rule__SelectQuery__Group__0__Impl rule__SelectQuery__Group__1
             {
-            pushFollow(FOLLOW_33);
-            rule__DetectBottlenecksQuery__Group__0__Impl();
+            pushFollow(FOLLOW_17);
+            rule__SelectQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DetectBottlenecksQuery__Group__1();
+            rule__SelectQuery__Group__1();
 
             state._fsp--;
 
@@ -15917,25 +16215,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__0"
+    // $ANTLR end "rule__SelectQuery__Group__0"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__0__Impl"
-    // InternalDescartesQL.g:5620:1: rule__DetectBottlenecksQuery__Group__0__Impl : ( 'BOTTLENECKS' ) ;
-    public final void rule__DetectBottlenecksQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__0__Impl"
+    // InternalDescartesQL.g:5715:1: rule__SelectQuery__Group__0__Impl : ( 'SELECT' ) ;
+    public final void rule__SelectQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5624:1: ( ( 'BOTTLENECKS' ) )
-            // InternalDescartesQL.g:5625:1: ( 'BOTTLENECKS' )
+            // InternalDescartesQL.g:5719:1: ( ( 'SELECT' ) )
+            // InternalDescartesQL.g:5720:1: ( 'SELECT' )
             {
-            // InternalDescartesQL.g:5625:1: ( 'BOTTLENECKS' )
-            // InternalDescartesQL.g:5626:1: 'BOTTLENECKS'
+            // InternalDescartesQL.g:5720:1: ( 'SELECT' )
+            // InternalDescartesQL.g:5721:1: 'SELECT'
             {
-             before(grammarAccess.getDetectBottlenecksQueryAccess().getBOTTLENECKSKeyword_0()); 
-            match(input,65,FOLLOW_2); 
-             after(grammarAccess.getDetectBottlenecksQueryAccess().getBOTTLENECKSKeyword_0()); 
+             before(grammarAccess.getSelectQueryAccess().getSELECTKeyword_0()); 
+            match(input,67,FOLLOW_2); 
+             after(grammarAccess.getSelectQueryAccess().getSELECTKeyword_0()); 
 
             }
 
@@ -15954,26 +16252,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__0__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__1"
-    // InternalDescartesQL.g:5639:1: rule__DetectBottlenecksQuery__Group__1 : rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2 ;
-    public final void rule__DetectBottlenecksQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__1"
+    // InternalDescartesQL.g:5734:1: rule__SelectQuery__Group__1 : rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2 ;
+    public final void rule__SelectQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5643:1: ( rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2 )
-            // InternalDescartesQL.g:5644:2: rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2
+            // InternalDescartesQL.g:5738:1: ( rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2 )
+            // InternalDescartesQL.g:5739:2: rule__SelectQuery__Group__1__Impl rule__SelectQuery__Group__2
             {
-            pushFollow(FOLLOW_6);
-            rule__DetectBottlenecksQuery__Group__1__Impl();
+            pushFollow(FOLLOW_31);
+            rule__SelectQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DetectBottlenecksQuery__Group__2();
+            rule__SelectQuery__Group__2();
 
             state._fsp--;
 
@@ -15992,35 +16290,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__1"
+    // $ANTLR end "rule__SelectQuery__Group__1"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__1__Impl"
-    // InternalDescartesQL.g:5651:1: rule__DetectBottlenecksQuery__Group__1__Impl : ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) ) ;
-    public final void rule__DetectBottlenecksQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__1__Impl"
+    // InternalDescartesQL.g:5746:1: rule__SelectQuery__Group__1__Impl : ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) ) ;
+    public final void rule__SelectQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5655:1: ( ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) ) )
-            // InternalDescartesQL.g:5656:1: ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) )
+            // InternalDescartesQL.g:5750:1: ( ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) ) )
+            // InternalDescartesQL.g:5751:1: ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) )
             {
-            // InternalDescartesQL.g:5656:1: ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) )
-            // InternalDescartesQL.g:5657:1: ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 )
+            // InternalDescartesQL.g:5751:1: ( ( rule__SelectQuery__MetricReferenceClausesAssignment_1 ) )
+            // InternalDescartesQL.g:5752:1: ( rule__SelectQuery__MetricReferenceClausesAssignment_1 )
             {
-             before(grammarAccess.getDetectBottlenecksQueryAccess().getDofClauseAssignment_1()); 
-            // InternalDescartesQL.g:5658:1: ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 )
-            // InternalDescartesQL.g:5658:2: rule__DetectBottlenecksQuery__DofClauseAssignment_1
+             before(grammarAccess.getSelectQueryAccess().getMetricReferenceClausesAssignment_1()); 
+            // InternalDescartesQL.g:5753:1: ( rule__SelectQuery__MetricReferenceClausesAssignment_1 )
+            // InternalDescartesQL.g:5753:2: rule__SelectQuery__MetricReferenceClausesAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__DetectBottlenecksQuery__DofClauseAssignment_1();
+            rule__SelectQuery__MetricReferenceClausesAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDetectBottlenecksQueryAccess().getDofClauseAssignment_1()); 
+             after(grammarAccess.getSelectQueryAccess().getMetricReferenceClausesAssignment_1()); 
 
             }
 
@@ -16039,21 +16337,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__1__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__2"
-    // InternalDescartesQL.g:5668:1: rule__DetectBottlenecksQuery__Group__2 : rule__DetectBottlenecksQuery__Group__2__Impl ;
-    public final void rule__DetectBottlenecksQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__2"
+    // InternalDescartesQL.g:5763:1: rule__SelectQuery__Group__2 : rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3 ;
+    public final void rule__SelectQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5672:1: ( rule__DetectBottlenecksQuery__Group__2__Impl )
-            // InternalDescartesQL.g:5673:2: rule__DetectBottlenecksQuery__Group__2__Impl
+            // InternalDescartesQL.g:5767:1: ( rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3 )
+            // InternalDescartesQL.g:5768:2: rule__SelectQuery__Group__2__Impl rule__SelectQuery__Group__3
             {
+            pushFollow(FOLLOW_31);
+            rule__SelectQuery__Group__2__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__DetectBottlenecksQuery__Group__2__Impl();
+            rule__SelectQuery__Group__3();
 
             state._fsp--;
 
@@ -16072,35 +16375,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__2"
+    // $ANTLR end "rule__SelectQuery__Group__2"
 
 
-    // $ANTLR start "rule__DetectBottlenecksQuery__Group__2__Impl"
-    // InternalDescartesQL.g:5679:1: rule__DetectBottlenecksQuery__Group__2__Impl : ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) ) ;
-    public final void rule__DetectBottlenecksQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__2__Impl"
+    // InternalDescartesQL.g:5775:1: rule__SelectQuery__Group__2__Impl : ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? ) ;
+    public final void rule__SelectQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5683:1: ( ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) ) )
-            // InternalDescartesQL.g:5684:1: ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) )
+            // InternalDescartesQL.g:5779:1: ( ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? ) )
+            // InternalDescartesQL.g:5780:1: ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? )
             {
-            // InternalDescartesQL.g:5684:1: ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) )
-            // InternalDescartesQL.g:5685:1: ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 )
+            // InternalDescartesQL.g:5780:1: ( ( rule__SelectQuery__ConstraintClauseAssignment_2 )? )
+            // InternalDescartesQL.g:5781:1: ( rule__SelectQuery__ConstraintClauseAssignment_2 )?
             {
-             before(grammarAccess.getDetectBottlenecksQueryAccess().getUsingClauseAssignment_2()); 
-            // InternalDescartesQL.g:5686:1: ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 )
-            // InternalDescartesQL.g:5686:2: rule__DetectBottlenecksQuery__UsingClauseAssignment_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__DetectBottlenecksQuery__UsingClauseAssignment_2();
+             before(grammarAccess.getSelectQueryAccess().getConstraintClauseAssignment_2()); 
+            // InternalDescartesQL.g:5782:1: ( rule__SelectQuery__ConstraintClauseAssignment_2 )?
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==70) ) {
+                alt46=1;
+            }
+            switch (alt46) {
+                case 1 :
+                    // InternalDescartesQL.g:5782:2: rule__SelectQuery__ConstraintClauseAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SelectQuery__ConstraintClauseAssignment_2();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getDetectBottlenecksQueryAccess().getUsingClauseAssignment_2()); 
+             after(grammarAccess.getSelectQueryAccess().getConstraintClauseAssignment_2()); 
 
             }
 
@@ -16119,26 +16433,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DetectBottlenecksQuery__Group__2__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ConstraintClause__Group__0"
-    // InternalDescartesQL.g:5702:1: rule__ConstraintClause__Group__0 : rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1 ;
-    public final void rule__ConstraintClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__3"
+    // InternalDescartesQL.g:5792:1: rule__SelectQuery__Group__3 : rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4 ;
+    public final void rule__SelectQuery__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5706:1: ( rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1 )
-            // InternalDescartesQL.g:5707:2: rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1
+            // InternalDescartesQL.g:5796:1: ( rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4 )
+            // InternalDescartesQL.g:5797:2: rule__SelectQuery__Group__3__Impl rule__SelectQuery__Group__4
             {
-            pushFollow(FOLLOW_34);
-            rule__ConstraintClause__Group__0__Impl();
+            pushFollow(FOLLOW_31);
+            rule__SelectQuery__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConstraintClause__Group__1();
+            rule__SelectQuery__Group__4();
 
             state._fsp--;
 
@@ -16157,25 +16471,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConstraintClause__Group__0"
+    // $ANTLR end "rule__SelectQuery__Group__3"
 
 
-    // $ANTLR start "rule__ConstraintClause__Group__0__Impl"
-    // InternalDescartesQL.g:5714:1: rule__ConstraintClause__Group__0__Impl : ( 'CONSTRAINED AS' ) ;
-    public final void rule__ConstraintClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__3__Impl"
+    // InternalDescartesQL.g:5804:1: rule__SelectQuery__Group__3__Impl : ( ( rule__SelectQuery__DofClauseAssignment_3 )? ) ;
+    public final void rule__SelectQuery__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5718:1: ( ( 'CONSTRAINED AS' ) )
-            // InternalDescartesQL.g:5719:1: ( 'CONSTRAINED AS' )
+            // InternalDescartesQL.g:5808:1: ( ( ( rule__SelectQuery__DofClauseAssignment_3 )? ) )
+            // InternalDescartesQL.g:5809:1: ( ( rule__SelectQuery__DofClauseAssignment_3 )? )
             {
-            // InternalDescartesQL.g:5719:1: ( 'CONSTRAINED AS' )
-            // InternalDescartesQL.g:5720:1: 'CONSTRAINED AS'
+            // InternalDescartesQL.g:5809:1: ( ( rule__SelectQuery__DofClauseAssignment_3 )? )
+            // InternalDescartesQL.g:5810:1: ( rule__SelectQuery__DofClauseAssignment_3 )?
             {
-             before(grammarAccess.getConstraintClauseAccess().getCONSTRAINEDASKeyword_0()); 
-            match(input,66,FOLLOW_2); 
-             after(grammarAccess.getConstraintClauseAccess().getCONSTRAINEDASKeyword_0()); 
+             before(grammarAccess.getSelectQueryAccess().getDofClauseAssignment_3()); 
+            // InternalDescartesQL.g:5811:1: ( rule__SelectQuery__DofClauseAssignment_3 )?
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==89) ) {
+                alt47=1;
+            }
+            switch (alt47) {
+                case 1 :
+                    // InternalDescartesQL.g:5811:2: rule__SelectQuery__DofClauseAssignment_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SelectQuery__DofClauseAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getSelectQueryAccess().getDofClauseAssignment_3()); 
 
             }
 
@@ -16194,21 +16529,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConstraintClause__Group__0__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__3__Impl"
 
 
-    // $ANTLR start "rule__ConstraintClause__Group__1"
-    // InternalDescartesQL.g:5733:1: rule__ConstraintClause__Group__1 : rule__ConstraintClause__Group__1__Impl ;
-    public final void rule__ConstraintClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__4"
+    // InternalDescartesQL.g:5821:1: rule__SelectQuery__Group__4 : rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5 ;
+    public final void rule__SelectQuery__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5737:1: ( rule__ConstraintClause__Group__1__Impl )
-            // InternalDescartesQL.g:5738:2: rule__ConstraintClause__Group__1__Impl
+            // InternalDescartesQL.g:5825:1: ( rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5 )
+            // InternalDescartesQL.g:5826:2: rule__SelectQuery__Group__4__Impl rule__SelectQuery__Group__5
             {
-            pushFollow(FOLLOW_2);
-            rule__ConstraintClause__Group__1__Impl();
+            pushFollow(FOLLOW_6);
+            rule__SelectQuery__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__SelectQuery__Group__5();
 
             state._fsp--;
 
@@ -16227,35 +16567,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConstraintClause__Group__1"
+    // $ANTLR end "rule__SelectQuery__Group__4"
 
 
-    // $ANTLR start "rule__ConstraintClause__Group__1__Impl"
-    // InternalDescartesQL.g:5744:1: rule__ConstraintClause__Group__1__Impl : ( ( rule__ConstraintClause__TypeAssignment_1 ) ) ;
-    public final void rule__ConstraintClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__4__Impl"
+    // InternalDescartesQL.g:5833:1: rule__SelectQuery__Group__4__Impl : ( ( rule__SelectQuery__ForClauseAssignment_4 ) ) ;
+    public final void rule__SelectQuery__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5748:1: ( ( ( rule__ConstraintClause__TypeAssignment_1 ) ) )
-            // InternalDescartesQL.g:5749:1: ( ( rule__ConstraintClause__TypeAssignment_1 ) )
+            // InternalDescartesQL.g:5837:1: ( ( ( rule__SelectQuery__ForClauseAssignment_4 ) ) )
+            // InternalDescartesQL.g:5838:1: ( ( rule__SelectQuery__ForClauseAssignment_4 ) )
             {
-            // InternalDescartesQL.g:5749:1: ( ( rule__ConstraintClause__TypeAssignment_1 ) )
-            // InternalDescartesQL.g:5750:1: ( rule__ConstraintClause__TypeAssignment_1 )
+            // InternalDescartesQL.g:5838:1: ( ( rule__SelectQuery__ForClauseAssignment_4 ) )
+            // InternalDescartesQL.g:5839:1: ( rule__SelectQuery__ForClauseAssignment_4 )
             {
-             before(grammarAccess.getConstraintClauseAccess().getTypeAssignment_1()); 
-            // InternalDescartesQL.g:5751:1: ( rule__ConstraintClause__TypeAssignment_1 )
-            // InternalDescartesQL.g:5751:2: rule__ConstraintClause__TypeAssignment_1
+             before(grammarAccess.getSelectQueryAccess().getForClauseAssignment_4()); 
+            // InternalDescartesQL.g:5840:1: ( rule__SelectQuery__ForClauseAssignment_4 )
+            // InternalDescartesQL.g:5840:2: rule__SelectQuery__ForClauseAssignment_4
             {
             pushFollow(FOLLOW_2);
-            rule__ConstraintClause__TypeAssignment_1();
+            rule__SelectQuery__ForClauseAssignment_4();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConstraintClauseAccess().getTypeAssignment_1()); 
+             after(grammarAccess.getSelectQueryAccess().getForClauseAssignment_4()); 
 
             }
 
@@ -16274,26 +16614,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConstraintClause__Group__1__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__4__Impl"
 
 
-    // $ANTLR start "rule__DoFClause__Group__0"
-    // InternalDescartesQL.g:5765:1: rule__DoFClause__Group__0 : rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1 ;
-    public final void rule__DoFClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__5"
+    // InternalDescartesQL.g:5850:1: rule__SelectQuery__Group__5 : rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6 ;
+    public final void rule__SelectQuery__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5769:1: ( rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1 )
-            // InternalDescartesQL.g:5770:2: rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1
+            // InternalDescartesQL.g:5854:1: ( rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6 )
+            // InternalDescartesQL.g:5855:2: rule__SelectQuery__Group__5__Impl rule__SelectQuery__Group__6
             {
-            pushFollow(FOLLOW_35);
-            rule__DoFClause__Group__0__Impl();
+            pushFollow(FOLLOW_32);
+            rule__SelectQuery__Group__5__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoFClause__Group__1();
+            rule__SelectQuery__Group__6();
 
             state._fsp--;
 
@@ -16312,35 +16652,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__0"
+    // $ANTLR end "rule__SelectQuery__Group__5"
 
 
-    // $ANTLR start "rule__DoFClause__Group__0__Impl"
-    // InternalDescartesQL.g:5777:1: rule__DoFClause__Group__0__Impl : ( ( rule__DoFClause__ModeAssignment_0 ) ) ;
-    public final void rule__DoFClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__5__Impl"
+    // InternalDescartesQL.g:5862:1: rule__SelectQuery__Group__5__Impl : ( ( rule__SelectQuery__UsingClauseAssignment_5 ) ) ;
+    public final void rule__SelectQuery__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5781:1: ( ( ( rule__DoFClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:5782:1: ( ( rule__DoFClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:5866:1: ( ( ( rule__SelectQuery__UsingClauseAssignment_5 ) ) )
+            // InternalDescartesQL.g:5867:1: ( ( rule__SelectQuery__UsingClauseAssignment_5 ) )
             {
-            // InternalDescartesQL.g:5782:1: ( ( rule__DoFClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:5783:1: ( rule__DoFClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:5867:1: ( ( rule__SelectQuery__UsingClauseAssignment_5 ) )
+            // InternalDescartesQL.g:5868:1: ( rule__SelectQuery__UsingClauseAssignment_5 )
             {
-             before(grammarAccess.getDoFClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:5784:1: ( rule__DoFClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:5784:2: rule__DoFClause__ModeAssignment_0
+             before(grammarAccess.getSelectQueryAccess().getUsingClauseAssignment_5()); 
+            // InternalDescartesQL.g:5869:1: ( rule__SelectQuery__UsingClauseAssignment_5 )
+            // InternalDescartesQL.g:5869:2: rule__SelectQuery__UsingClauseAssignment_5
             {
             pushFollow(FOLLOW_2);
-            rule__DoFClause__ModeAssignment_0();
+            rule__SelectQuery__UsingClauseAssignment_5();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDoFClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getSelectQueryAccess().getUsingClauseAssignment_5()); 
 
             }
 
@@ -16359,26 +16699,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__0__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__5__Impl"
 
 
-    // $ANTLR start "rule__DoFClause__Group__1"
-    // InternalDescartesQL.g:5794:1: rule__DoFClause__Group__1 : rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2 ;
-    public final void rule__DoFClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__6"
+    // InternalDescartesQL.g:5879:1: rule__SelectQuery__Group__6 : rule__SelectQuery__Group__6__Impl ;
+    public final void rule__SelectQuery__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5798:1: ( rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2 )
-            // InternalDescartesQL.g:5799:2: rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2
+            // InternalDescartesQL.g:5883:1: ( rule__SelectQuery__Group__6__Impl )
+            // InternalDescartesQL.g:5884:2: rule__SelectQuery__Group__6__Impl
             {
-            pushFollow(FOLLOW_35);
-            rule__DoFClause__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__DoFClause__Group__2();
+            rule__SelectQuery__Group__6__Impl();
 
             state._fsp--;
 
@@ -16397,36 +16732,36 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__1"
+    // $ANTLR end "rule__SelectQuery__Group__6"
 
 
-    // $ANTLR start "rule__DoFClause__Group__1__Impl"
-    // InternalDescartesQL.g:5806:1: rule__DoFClause__Group__1__Impl : ( ( rule__DoFClause__VaryingClauseAssignment_1 )? ) ;
-    public final void rule__DoFClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SelectQuery__Group__6__Impl"
+    // InternalDescartesQL.g:5890:1: rule__SelectQuery__Group__6__Impl : ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? ) ;
+    public final void rule__SelectQuery__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5810:1: ( ( ( rule__DoFClause__VaryingClauseAssignment_1 )? ) )
-            // InternalDescartesQL.g:5811:1: ( ( rule__DoFClause__VaryingClauseAssignment_1 )? )
+            // InternalDescartesQL.g:5894:1: ( ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? ) )
+            // InternalDescartesQL.g:5895:1: ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? )
             {
-            // InternalDescartesQL.g:5811:1: ( ( rule__DoFClause__VaryingClauseAssignment_1 )? )
-            // InternalDescartesQL.g:5812:1: ( rule__DoFClause__VaryingClauseAssignment_1 )?
+            // InternalDescartesQL.g:5895:1: ( ( rule__SelectQuery__ObserveClauseAssignment_6 )? )
+            // InternalDescartesQL.g:5896:1: ( rule__SelectQuery__ObserveClauseAssignment_6 )?
             {
-             before(grammarAccess.getDoFClauseAccess().getVaryingClauseAssignment_1()); 
-            // InternalDescartesQL.g:5813:1: ( rule__DoFClause__VaryingClauseAssignment_1 )?
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+             before(grammarAccess.getSelectQueryAccess().getObserveClauseAssignment_6()); 
+            // InternalDescartesQL.g:5897:1: ( rule__SelectQuery__ObserveClauseAssignment_6 )?
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA43_0==89) ) {
-                alt43=1;
+            if ( (LA48_0==103) ) {
+                alt48=1;
             }
-            switch (alt43) {
+            switch (alt48) {
                 case 1 :
-                    // InternalDescartesQL.g:5813:2: rule__DoFClause__VaryingClauseAssignment_1
+                    // InternalDescartesQL.g:5897:2: rule__SelectQuery__ObserveClauseAssignment_6
                     {
                     pushFollow(FOLLOW_2);
-                    rule__DoFClause__VaryingClauseAssignment_1();
+                    rule__SelectQuery__ObserveClauseAssignment_6();
 
                     state._fsp--;
 
@@ -16436,7 +16771,7 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
             }
 
-             after(grammarAccess.getDoFClauseAccess().getVaryingClauseAssignment_1()); 
+             after(grammarAccess.getSelectQueryAccess().getObserveClauseAssignment_6()); 
 
             }
 
@@ -16455,26 +16790,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__1__Impl"
+    // $ANTLR end "rule__SelectQuery__Group__6__Impl"
 
 
-    // $ANTLR start "rule__DoFClause__Group__2"
-    // InternalDescartesQL.g:5823:1: rule__DoFClause__Group__2 : rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3 ;
-    public final void rule__DoFClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group__0"
+    // InternalDescartesQL.g:5921:1: rule__MetricReferenceClauses__Group__0 : rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1 ;
+    public final void rule__MetricReferenceClauses__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5827:1: ( rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3 )
-            // InternalDescartesQL.g:5828:2: rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3
+            // InternalDescartesQL.g:5925:1: ( rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1 )
+            // InternalDescartesQL.g:5926:2: rule__MetricReferenceClauses__Group__0__Impl rule__MetricReferenceClauses__Group__1
             {
-            pushFollow(FOLLOW_35);
-            rule__DoFClause__Group__2__Impl();
+            pushFollow(FOLLOW_11);
+            rule__MetricReferenceClauses__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoFClause__Group__3();
+            rule__MetricReferenceClauses__Group__1();
 
             state._fsp--;
 
@@ -16493,46 +16828,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__2"
+    // $ANTLR end "rule__MetricReferenceClauses__Group__0"
 
 
-    // $ANTLR start "rule__DoFClause__Group__2__Impl"
-    // InternalDescartesQL.g:5835:1: rule__DoFClause__Group__2__Impl : ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? ) ;
-    public final void rule__DoFClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group__0__Impl"
+    // InternalDescartesQL.g:5933:1: rule__MetricReferenceClauses__Group__0__Impl : ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) ) ;
+    public final void rule__MetricReferenceClauses__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5839:1: ( ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? ) )
-            // InternalDescartesQL.g:5840:1: ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? )
+            // InternalDescartesQL.g:5937:1: ( ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) ) )
+            // InternalDescartesQL.g:5938:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) )
             {
-            // InternalDescartesQL.g:5840:1: ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? )
-            // InternalDescartesQL.g:5841:1: ( rule__DoFClause__ExplorationStrategyAssignment_2 )?
+            // InternalDescartesQL.g:5938:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 ) )
+            // InternalDescartesQL.g:5939:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 )
             {
-             before(grammarAccess.getDoFClauseAccess().getExplorationStrategyAssignment_2()); 
-            // InternalDescartesQL.g:5842:1: ( rule__DoFClause__ExplorationStrategyAssignment_2 )?
-            int alt44=2;
-            int LA44_0 = input.LA(1);
-
-            if ( (LA44_0==86) ) {
-                alt44=1;
-            }
-            switch (alt44) {
-                case 1 :
-                    // InternalDescartesQL.g:5842:2: rule__DoFClause__ExplorationStrategyAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__DoFClause__ExplorationStrategyAssignment_2();
-
-                    state._fsp--;
+             before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_0()); 
+            // InternalDescartesQL.g:5940:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 )
+            // InternalDescartesQL.g:5940:2: rule__MetricReferenceClauses__MetricClauseTypesAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__MetricReferenceClauses__MetricClauseTypesAssignment_0();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getDoFClauseAccess().getExplorationStrategyAssignment_2()); 
+             after(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_0()); 
 
             }
 
@@ -16551,26 +16875,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__2__Impl"
+    // $ANTLR end "rule__MetricReferenceClauses__Group__0__Impl"
 
 
-    // $ANTLR start "rule__DoFClause__Group__3"
-    // InternalDescartesQL.g:5852:1: rule__DoFClause__Group__3 : rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4 ;
-    public final void rule__DoFClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group__1"
+    // InternalDescartesQL.g:5950:1: rule__MetricReferenceClauses__Group__1 : rule__MetricReferenceClauses__Group__1__Impl ;
+    public final void rule__MetricReferenceClauses__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5856:1: ( rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4 )
-            // InternalDescartesQL.g:5857:2: rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4
+            // InternalDescartesQL.g:5954:1: ( rule__MetricReferenceClauses__Group__1__Impl )
+            // InternalDescartesQL.g:5955:2: rule__MetricReferenceClauses__Group__1__Impl
             {
-            pushFollow(FOLLOW_35);
-            rule__DoFClause__Group__3__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__DoFClause__Group__4();
+            rule__MetricReferenceClauses__Group__1__Impl();
 
             state._fsp--;
 
@@ -16589,46 +16908,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__3"
+    // $ANTLR end "rule__MetricReferenceClauses__Group__1"
 
 
-    // $ANTLR start "rule__DoFClause__Group__3__Impl"
-    // InternalDescartesQL.g:5864:1: rule__DoFClause__Group__3__Impl : ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? ) ;
-    public final void rule__DoFClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group__1__Impl"
+    // InternalDescartesQL.g:5961:1: rule__MetricReferenceClauses__Group__1__Impl : ( ( rule__MetricReferenceClauses__Group_1__0 )* ) ;
+    public final void rule__MetricReferenceClauses__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5868:1: ( ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? ) )
-            // InternalDescartesQL.g:5869:1: ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? )
+            // InternalDescartesQL.g:5965:1: ( ( ( rule__MetricReferenceClauses__Group_1__0 )* ) )
+            // InternalDescartesQL.g:5966:1: ( ( rule__MetricReferenceClauses__Group_1__0 )* )
             {
-            // InternalDescartesQL.g:5869:1: ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? )
-            // InternalDescartesQL.g:5870:1: ( rule__DoFClause__ConstraintClauseAssignment_3 )?
+            // InternalDescartesQL.g:5966:1: ( ( rule__MetricReferenceClauses__Group_1__0 )* )
+            // InternalDescartesQL.g:5967:1: ( rule__MetricReferenceClauses__Group_1__0 )*
             {
-             before(grammarAccess.getDoFClauseAccess().getConstraintClauseAssignment_3()); 
-            // InternalDescartesQL.g:5871:1: ( rule__DoFClause__ConstraintClauseAssignment_3 )?
-            int alt45=2;
-            int LA45_0 = input.LA(1);
+             before(grammarAccess.getMetricReferenceClausesAccess().getGroup_1()); 
+            // InternalDescartesQL.g:5968:1: ( rule__MetricReferenceClauses__Group_1__0 )*
+            loop49:
+            do {
+                int alt49=2;
+                int LA49_0 = input.LA(1);
 
-            if ( (LA45_0==66) ) {
-                alt45=1;
-            }
-            switch (alt45) {
-                case 1 :
-                    // InternalDescartesQL.g:5871:2: rule__DoFClause__ConstraintClauseAssignment_3
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__DoFClause__ConstraintClauseAssignment_3();
+                if ( (LA49_0==57) ) {
+                    alt49=1;
+                }
 
-                    state._fsp--;
 
+                switch (alt49) {
+            	case 1 :
+            	    // InternalDescartesQL.g:5968:2: rule__MetricReferenceClauses__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__MetricReferenceClauses__Group_1__0();
 
-                    }
-                    break;
+            	    state._fsp--;
 
-            }
 
-             after(grammarAccess.getDoFClauseAccess().getConstraintClauseAssignment_3()); 
+            	    }
+            	    break;
+
+            	default :
+            	    break loop49;
+                }
+            } while (true);
+
+             after(grammarAccess.getMetricReferenceClausesAccess().getGroup_1()); 
 
             }
 
@@ -16647,21 +16973,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__3__Impl"
+    // $ANTLR end "rule__MetricReferenceClauses__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DoFClause__Group__4"
-    // InternalDescartesQL.g:5881:1: rule__DoFClause__Group__4 : rule__DoFClause__Group__4__Impl ;
-    public final void rule__DoFClause__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group_1__0"
+    // InternalDescartesQL.g:5982:1: rule__MetricReferenceClauses__Group_1__0 : rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1 ;
+    public final void rule__MetricReferenceClauses__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5885:1: ( rule__DoFClause__Group__4__Impl )
-            // InternalDescartesQL.g:5886:2: rule__DoFClause__Group__4__Impl
+            // InternalDescartesQL.g:5986:1: ( rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1 )
+            // InternalDescartesQL.g:5987:2: rule__MetricReferenceClauses__Group_1__0__Impl rule__MetricReferenceClauses__Group_1__1
             {
+            pushFollow(FOLLOW_17);
+            rule__MetricReferenceClauses__Group_1__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__DoFClause__Group__4__Impl();
+            rule__MetricReferenceClauses__Group_1__1();
 
             state._fsp--;
 
@@ -16680,46 +17011,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__4"
+    // $ANTLR end "rule__MetricReferenceClauses__Group_1__0"
 
 
-    // $ANTLR start "rule__DoFClause__Group__4__Impl"
-    // InternalDescartesQL.g:5892:1: rule__DoFClause__Group__4__Impl : ( ( rule__DoFClause__WithClauseAssignment_4 )? ) ;
-    public final void rule__DoFClause__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group_1__0__Impl"
+    // InternalDescartesQL.g:5994:1: rule__MetricReferenceClauses__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__MetricReferenceClauses__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5896:1: ( ( ( rule__DoFClause__WithClauseAssignment_4 )? ) )
-            // InternalDescartesQL.g:5897:1: ( ( rule__DoFClause__WithClauseAssignment_4 )? )
+            // InternalDescartesQL.g:5998:1: ( ( ',' ) )
+            // InternalDescartesQL.g:5999:1: ( ',' )
             {
-            // InternalDescartesQL.g:5897:1: ( ( rule__DoFClause__WithClauseAssignment_4 )? )
-            // InternalDescartesQL.g:5898:1: ( rule__DoFClause__WithClauseAssignment_4 )?
+            // InternalDescartesQL.g:5999:1: ( ',' )
+            // InternalDescartesQL.g:6000:1: ','
             {
-             before(grammarAccess.getDoFClauseAccess().getWithClauseAssignment_4()); 
-            // InternalDescartesQL.g:5899:1: ( rule__DoFClause__WithClauseAssignment_4 )?
-            int alt46=2;
-            int LA46_0 = input.LA(1);
-
-            if ( (LA46_0==96) ) {
-                alt46=1;
-            }
-            switch (alt46) {
-                case 1 :
-                    // InternalDescartesQL.g:5899:2: rule__DoFClause__WithClauseAssignment_4
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__DoFClause__WithClauseAssignment_4();
-
-                    state._fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-             after(grammarAccess.getDoFClauseAccess().getWithClauseAssignment_4()); 
+             before(grammarAccess.getMetricReferenceClausesAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getMetricReferenceClausesAccess().getCommaKeyword_1_0()); 
 
             }
 
@@ -16738,26 +17048,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFClause__Group__4__Impl"
+    // $ANTLR end "rule__MetricReferenceClauses__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__0"
-    // InternalDescartesQL.g:5919:1: rule__ExplorationStrategyClause__Group__0 : rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1 ;
-    public final void rule__ExplorationStrategyClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group_1__1"
+    // InternalDescartesQL.g:6013:1: rule__MetricReferenceClauses__Group_1__1 : rule__MetricReferenceClauses__Group_1__1__Impl ;
+    public final void rule__MetricReferenceClauses__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5923:1: ( rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1 )
-            // InternalDescartesQL.g:5924:2: rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1
+            // InternalDescartesQL.g:6017:1: ( rule__MetricReferenceClauses__Group_1__1__Impl )
+            // InternalDescartesQL.g:6018:2: rule__MetricReferenceClauses__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_34);
-            rule__ExplorationStrategyClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ExplorationStrategyClause__Group__1();
+            rule__MetricReferenceClauses__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -16776,35 +17081,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__0"
+    // $ANTLR end "rule__MetricReferenceClauses__Group_1__1"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__0__Impl"
-    // InternalDescartesQL.g:5931:1: rule__ExplorationStrategyClause__Group__0__Impl : ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) ) ;
-    public final void rule__ExplorationStrategyClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReferenceClauses__Group_1__1__Impl"
+    // InternalDescartesQL.g:6024:1: rule__MetricReferenceClauses__Group_1__1__Impl : ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) ) ;
+    public final void rule__MetricReferenceClauses__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5935:1: ( ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:5936:1: ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:6028:1: ( ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:6029:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:5936:1: ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:5937:1: ( rule__ExplorationStrategyClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:6029:1: ( ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 ) )
+            // InternalDescartesQL.g:6030:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 )
             {
-             before(grammarAccess.getExplorationStrategyClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:5938:1: ( rule__ExplorationStrategyClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:5938:2: rule__ExplorationStrategyClause__ModeAssignment_0
+             before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_1_1()); 
+            // InternalDescartesQL.g:6031:1: ( rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 )
+            // InternalDescartesQL.g:6031:2: rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__ExplorationStrategyClause__ModeAssignment_0();
+            rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getExplorationStrategyClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesAssignment_1_1()); 
 
             }
 
@@ -16823,26 +17128,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__0__Impl"
+    // $ANTLR end "rule__MetricReferenceClauses__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__1"
-    // InternalDescartesQL.g:5948:1: rule__ExplorationStrategyClause__Group__1 : rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2 ;
-    public final void rule__ExplorationStrategyClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__DetectQuery__Group__0"
+    // InternalDescartesQL.g:6045:1: rule__DetectQuery__Group__0 : rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1 ;
+    public final void rule__DetectQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5952:1: ( rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2 )
-            // InternalDescartesQL.g:5953:2: rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2
+            // InternalDescartesQL.g:6049:1: ( rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1 )
+            // InternalDescartesQL.g:6050:2: rule__DetectQuery__Group__0__Impl rule__DetectQuery__Group__1
             {
-            pushFollow(FOLLOW_36);
-            rule__ExplorationStrategyClause__Group__1__Impl();
+            pushFollow(FOLLOW_33);
+            rule__DetectQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ExplorationStrategyClause__Group__2();
+            rule__DetectQuery__Group__1();
 
             state._fsp--;
 
@@ -16861,35 +17166,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__1"
+    // $ANTLR end "rule__DetectQuery__Group__0"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__1__Impl"
-    // InternalDescartesQL.g:5960:1: rule__ExplorationStrategyClause__Group__1__Impl : ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) ) ;
-    public final void rule__ExplorationStrategyClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DetectQuery__Group__0__Impl"
+    // InternalDescartesQL.g:6057:1: rule__DetectQuery__Group__0__Impl : ( 'DETECT' ) ;
+    public final void rule__DetectQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5964:1: ( ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) ) )
-            // InternalDescartesQL.g:5965:1: ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:5965:1: ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) )
-            // InternalDescartesQL.g:5966:1: ( rule__ExplorationStrategyClause__NameAssignment_1 )
+            // InternalDescartesQL.g:6061:1: ( ( 'DETECT' ) )
+            // InternalDescartesQL.g:6062:1: ( 'DETECT' )
             {
-             before(grammarAccess.getExplorationStrategyClauseAccess().getNameAssignment_1()); 
-            // InternalDescartesQL.g:5967:1: ( rule__ExplorationStrategyClause__NameAssignment_1 )
-            // InternalDescartesQL.g:5967:2: rule__ExplorationStrategyClause__NameAssignment_1
+            // InternalDescartesQL.g:6062:1: ( 'DETECT' )
+            // InternalDescartesQL.g:6063:1: 'DETECT'
             {
-            pushFollow(FOLLOW_2);
-            rule__ExplorationStrategyClause__NameAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getExplorationStrategyClauseAccess().getNameAssignment_1()); 
+             before(grammarAccess.getDetectQueryAccess().getDETECTKeyword_0()); 
+            match(input,68,FOLLOW_2); 
+             after(grammarAccess.getDetectQueryAccess().getDETECTKeyword_0()); 
 
             }
 
@@ -16908,21 +17203,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__1__Impl"
+    // $ANTLR end "rule__DetectQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__2"
-    // InternalDescartesQL.g:5977:1: rule__ExplorationStrategyClause__Group__2 : rule__ExplorationStrategyClause__Group__2__Impl ;
-    public final void rule__ExplorationStrategyClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DetectQuery__Group__1"
+    // InternalDescartesQL.g:6076:1: rule__DetectQuery__Group__1 : rule__DetectQuery__Group__1__Impl ;
+    public final void rule__DetectQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5981:1: ( rule__ExplorationStrategyClause__Group__2__Impl )
-            // InternalDescartesQL.g:5982:2: rule__ExplorationStrategyClause__Group__2__Impl
+            // InternalDescartesQL.g:6080:1: ( rule__DetectQuery__Group__1__Impl )
+            // InternalDescartesQL.g:6081:2: rule__DetectQuery__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ExplorationStrategyClause__Group__2__Impl();
+            rule__DetectQuery__Group__1__Impl();
 
             state._fsp--;
 
@@ -16941,46 +17236,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__2"
+    // $ANTLR end "rule__DetectQuery__Group__1"
 
 
-    // $ANTLR start "rule__ExplorationStrategyClause__Group__2__Impl"
-    // InternalDescartesQL.g:5988:1: rule__ExplorationStrategyClause__Group__2__Impl : ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? ) ;
-    public final void rule__ExplorationStrategyClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DetectQuery__Group__1__Impl"
+    // InternalDescartesQL.g:6087:1: rule__DetectQuery__Group__1__Impl : ( ( rule__DetectQuery__QueryTypeAssignment_1 ) ) ;
+    public final void rule__DetectQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:5992:1: ( ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? ) )
-            // InternalDescartesQL.g:5993:1: ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? )
+            // InternalDescartesQL.g:6091:1: ( ( ( rule__DetectQuery__QueryTypeAssignment_1 ) ) )
+            // InternalDescartesQL.g:6092:1: ( ( rule__DetectQuery__QueryTypeAssignment_1 ) )
             {
-            // InternalDescartesQL.g:5993:1: ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? )
-            // InternalDescartesQL.g:5994:1: ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )?
+            // InternalDescartesQL.g:6092:1: ( ( rule__DetectQuery__QueryTypeAssignment_1 ) )
+            // InternalDescartesQL.g:6093:1: ( rule__DetectQuery__QueryTypeAssignment_1 )
             {
-             before(grammarAccess.getExplorationStrategyClauseAccess().getParameterClauseAssignment_2()); 
-            // InternalDescartesQL.g:5995:1: ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )?
-            int alt47=2;
-            int LA47_0 = input.LA(1);
-
-            if ( (LA47_0==87) ) {
-                alt47=1;
-            }
-            switch (alt47) {
-                case 1 :
-                    // InternalDescartesQL.g:5995:2: rule__ExplorationStrategyClause__ParameterClauseAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__ExplorationStrategyClause__ParameterClauseAssignment_2();
-
-                    state._fsp--;
+             before(grammarAccess.getDetectQueryAccess().getQueryTypeAssignment_1()); 
+            // InternalDescartesQL.g:6094:1: ( rule__DetectQuery__QueryTypeAssignment_1 )
+            // InternalDescartesQL.g:6094:2: rule__DetectQuery__QueryTypeAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__DetectQuery__QueryTypeAssignment_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getExplorationStrategyClauseAccess().getParameterClauseAssignment_2()); 
+             after(grammarAccess.getDetectQueryAccess().getQueryTypeAssignment_1()); 
 
             }
 
@@ -16999,26 +17283,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ExplorationStrategyClause__Group__2__Impl"
+    // $ANTLR end "rule__DetectQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__0"
-    // InternalDescartesQL.g:6011:1: rule__ConfigurationPropertiesClause__Group__0 : rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1 ;
-    public final void rule__ConfigurationPropertiesClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__0"
+    // InternalDescartesQL.g:6108:1: rule__DetectBottlenecksQuery__Group__0 : rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1 ;
+    public final void rule__DetectBottlenecksQuery__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6015:1: ( rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1 )
-            // InternalDescartesQL.g:6016:2: rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1
+            // InternalDescartesQL.g:6112:1: ( rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1 )
+            // InternalDescartesQL.g:6113:2: rule__DetectBottlenecksQuery__Group__0__Impl rule__DetectBottlenecksQuery__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__ConfigurationPropertiesClause__Group__0__Impl();
+            pushFollow(FOLLOW_34);
+            rule__DetectBottlenecksQuery__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group__1();
+            rule__DetectBottlenecksQuery__Group__1();
 
             state._fsp--;
 
@@ -17037,35 +17321,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__0"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__0"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__0__Impl"
-    // InternalDescartesQL.g:6023:1: rule__ConfigurationPropertiesClause__Group__0__Impl : ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) ) ;
-    public final void rule__ConfigurationPropertiesClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__0__Impl"
+    // InternalDescartesQL.g:6120:1: rule__DetectBottlenecksQuery__Group__0__Impl : ( 'BOTTLENECKS' ) ;
+    public final void rule__DetectBottlenecksQuery__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6027:1: ( ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) ) )
-            // InternalDescartesQL.g:6028:1: ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) )
-            {
-            // InternalDescartesQL.g:6028:1: ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) )
-            // InternalDescartesQL.g:6029:1: ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:6124:1: ( ( 'BOTTLENECKS' ) )
+            // InternalDescartesQL.g:6125:1: ( 'BOTTLENECKS' )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1Assignment_0()); 
-            // InternalDescartesQL.g:6030:1: ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 )
-            // InternalDescartesQL.g:6030:2: rule__ConfigurationPropertiesClause__Mode1Assignment_0
+            // InternalDescartesQL.g:6125:1: ( 'BOTTLENECKS' )
+            // InternalDescartesQL.g:6126:1: 'BOTTLENECKS'
             {
-            pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Mode1Assignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1Assignment_0()); 
+             before(grammarAccess.getDetectBottlenecksQueryAccess().getBOTTLENECKSKeyword_0()); 
+            match(input,69,FOLLOW_2); 
+             after(grammarAccess.getDetectBottlenecksQueryAccess().getBOTTLENECKSKeyword_0()); 
 
             }
 
@@ -17084,26 +17358,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__0__Impl"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__1"
-    // InternalDescartesQL.g:6040:1: rule__ConfigurationPropertiesClause__Group__1 : rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2 ;
-    public final void rule__ConfigurationPropertiesClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__1"
+    // InternalDescartesQL.g:6139:1: rule__DetectBottlenecksQuery__Group__1 : rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2 ;
+    public final void rule__DetectBottlenecksQuery__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6044:1: ( rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2 )
-            // InternalDescartesQL.g:6045:2: rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2
+            // InternalDescartesQL.g:6143:1: ( rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2 )
+            // InternalDescartesQL.g:6144:2: rule__DetectBottlenecksQuery__Group__1__Impl rule__DetectBottlenecksQuery__Group__2
             {
-            pushFollow(FOLLOW_37);
-            rule__ConfigurationPropertiesClause__Group__1__Impl();
+            pushFollow(FOLLOW_6);
+            rule__DetectBottlenecksQuery__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group__2();
+            rule__DetectBottlenecksQuery__Group__2();
 
             state._fsp--;
 
@@ -17122,35 +17396,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__1"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__1"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__1__Impl"
-    // InternalDescartesQL.g:6052:1: rule__ConfigurationPropertiesClause__Group__1__Impl : ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) ) ;
-    public final void rule__ConfigurationPropertiesClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__1__Impl"
+    // InternalDescartesQL.g:6151:1: rule__DetectBottlenecksQuery__Group__1__Impl : ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) ) ;
+    public final void rule__DetectBottlenecksQuery__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6056:1: ( ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) ) )
-            // InternalDescartesQL.g:6057:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) )
+            // InternalDescartesQL.g:6155:1: ( ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:6156:1: ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:6057:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) )
-            // InternalDescartesQL.g:6058:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 )
+            // InternalDescartesQL.g:6156:1: ( ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 ) )
+            // InternalDescartesQL.g:6157:1: ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_1()); 
-            // InternalDescartesQL.g:6059:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 )
-            // InternalDescartesQL.g:6059:2: rule__ConfigurationPropertiesClause__PropertiesAssignment_1
+             before(grammarAccess.getDetectBottlenecksQueryAccess().getDofClauseAssignment_1()); 
+            // InternalDescartesQL.g:6158:1: ( rule__DetectBottlenecksQuery__DofClauseAssignment_1 )
+            // InternalDescartesQL.g:6158:2: rule__DetectBottlenecksQuery__DofClauseAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__PropertiesAssignment_1();
+            rule__DetectBottlenecksQuery__DofClauseAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_1()); 
+             after(grammarAccess.getDetectBottlenecksQueryAccess().getDofClauseAssignment_1()); 
 
             }
 
@@ -17169,26 +17443,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__1__Impl"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__2"
-    // InternalDescartesQL.g:6069:1: rule__ConfigurationPropertiesClause__Group__2 : rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3 ;
-    public final void rule__ConfigurationPropertiesClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__2"
+    // InternalDescartesQL.g:6168:1: rule__DetectBottlenecksQuery__Group__2 : rule__DetectBottlenecksQuery__Group__2__Impl ;
+    public final void rule__DetectBottlenecksQuery__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6073:1: ( rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3 )
-            // InternalDescartesQL.g:6074:2: rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3
+            // InternalDescartesQL.g:6172:1: ( rule__DetectBottlenecksQuery__Group__2__Impl )
+            // InternalDescartesQL.g:6173:2: rule__DetectBottlenecksQuery__Group__2__Impl
             {
-            pushFollow(FOLLOW_37);
-            rule__ConfigurationPropertiesClause__Group__2__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group__3();
+            rule__DetectBottlenecksQuery__Group__2__Impl();
 
             state._fsp--;
 
@@ -17207,53 +17476,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__2"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__2"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__2__Impl"
-    // InternalDescartesQL.g:6081:1: rule__ConfigurationPropertiesClause__Group__2__Impl : ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* ) ;
-    public final void rule__ConfigurationPropertiesClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DetectBottlenecksQuery__Group__2__Impl"
+    // InternalDescartesQL.g:6179:1: rule__DetectBottlenecksQuery__Group__2__Impl : ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) ) ;
+    public final void rule__DetectBottlenecksQuery__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6085:1: ( ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* ) )
-            // InternalDescartesQL.g:6086:1: ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* )
+            // InternalDescartesQL.g:6183:1: ( ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) ) )
+            // InternalDescartesQL.g:6184:1: ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) )
             {
-            // InternalDescartesQL.g:6086:1: ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* )
-            // InternalDescartesQL.g:6087:1: ( rule__ConfigurationPropertiesClause__Group_2__0 )*
+            // InternalDescartesQL.g:6184:1: ( ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 ) )
+            // InternalDescartesQL.g:6185:1: ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getGroup_2()); 
-            // InternalDescartesQL.g:6088:1: ( rule__ConfigurationPropertiesClause__Group_2__0 )*
-            loop48:
-            do {
-                int alt48=2;
-                int LA48_0 = input.LA(1);
-
-                if ( (LA48_0==53) ) {
-                    alt48=1;
-                }
-
-
-                switch (alt48) {
-            	case 1 :
-            	    // InternalDescartesQL.g:6088:2: rule__ConfigurationPropertiesClause__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__ConfigurationPropertiesClause__Group_2__0();
-
-            	    state._fsp--;
+             before(grammarAccess.getDetectBottlenecksQueryAccess().getUsingClauseAssignment_2()); 
+            // InternalDescartesQL.g:6186:1: ( rule__DetectBottlenecksQuery__UsingClauseAssignment_2 )
+            // InternalDescartesQL.g:6186:2: rule__DetectBottlenecksQuery__UsingClauseAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__DetectBottlenecksQuery__UsingClauseAssignment_2();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop48;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getGroup_2()); 
+             after(grammarAccess.getDetectBottlenecksQueryAccess().getUsingClauseAssignment_2()); 
 
             }
 
@@ -17272,21 +17523,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__2__Impl"
+    // $ANTLR end "rule__DetectBottlenecksQuery__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__3"
-    // InternalDescartesQL.g:6098:1: rule__ConfigurationPropertiesClause__Group__3 : rule__ConfigurationPropertiesClause__Group__3__Impl ;
-    public final void rule__ConfigurationPropertiesClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__ConstraintClause__Group__0"
+    // InternalDescartesQL.g:6202:1: rule__ConstraintClause__Group__0 : rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1 ;
+    public final void rule__ConstraintClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6102:1: ( rule__ConfigurationPropertiesClause__Group__3__Impl )
-            // InternalDescartesQL.g:6103:2: rule__ConfigurationPropertiesClause__Group__3__Impl
+            // InternalDescartesQL.g:6206:1: ( rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1 )
+            // InternalDescartesQL.g:6207:2: rule__ConstraintClause__Group__0__Impl rule__ConstraintClause__Group__1
             {
+            pushFollow(FOLLOW_35);
+            rule__ConstraintClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group__3__Impl();
+            rule__ConstraintClause__Group__1();
 
             state._fsp--;
 
@@ -17305,35 +17561,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__3"
+    // $ANTLR end "rule__ConstraintClause__Group__0"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__3__Impl"
-    // InternalDescartesQL.g:6109:1: rule__ConfigurationPropertiesClause__Group__3__Impl : ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) ) ;
-    public final void rule__ConfigurationPropertiesClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConstraintClause__Group__0__Impl"
+    // InternalDescartesQL.g:6214:1: rule__ConstraintClause__Group__0__Impl : ( 'CONSTRAINED AS' ) ;
+    public final void rule__ConstraintClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6113:1: ( ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) ) )
-            // InternalDescartesQL.g:6114:1: ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) )
-            {
-            // InternalDescartesQL.g:6114:1: ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) )
-            // InternalDescartesQL.g:6115:1: ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 )
+            // InternalDescartesQL.g:6218:1: ( ( 'CONSTRAINED AS' ) )
+            // InternalDescartesQL.g:6219:1: ( 'CONSTRAINED AS' )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2Assignment_3()); 
-            // InternalDescartesQL.g:6116:1: ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 )
-            // InternalDescartesQL.g:6116:2: rule__ConfigurationPropertiesClause__Mode2Assignment_3
+            // InternalDescartesQL.g:6219:1: ( 'CONSTRAINED AS' )
+            // InternalDescartesQL.g:6220:1: 'CONSTRAINED AS'
             {
-            pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Mode2Assignment_3();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2Assignment_3()); 
+             before(grammarAccess.getConstraintClauseAccess().getCONSTRAINEDASKeyword_0()); 
+            match(input,70,FOLLOW_2); 
+             after(grammarAccess.getConstraintClauseAccess().getCONSTRAINEDASKeyword_0()); 
 
             }
 
@@ -17352,26 +17598,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__3__Impl"
+    // $ANTLR end "rule__ConstraintClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__0"
-    // InternalDescartesQL.g:6134:1: rule__ConfigurationPropertiesClause__Group_2__0 : rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1 ;
-    public final void rule__ConfigurationPropertiesClause__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__ConstraintClause__Group__1"
+    // InternalDescartesQL.g:6233:1: rule__ConstraintClause__Group__1 : rule__ConstraintClause__Group__1__Impl ;
+    public final void rule__ConstraintClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6138:1: ( rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1 )
-            // InternalDescartesQL.g:6139:2: rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1
+            // InternalDescartesQL.g:6237:1: ( rule__ConstraintClause__Group__1__Impl )
+            // InternalDescartesQL.g:6238:2: rule__ConstraintClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_7);
-            rule__ConfigurationPropertiesClause__Group_2__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group_2__1();
+            rule__ConstraintClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -17390,25 +17631,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__0"
+    // $ANTLR end "rule__ConstraintClause__Group__1"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__0__Impl"
-    // InternalDescartesQL.g:6146:1: rule__ConfigurationPropertiesClause__Group_2__0__Impl : ( ',' ) ;
-    public final void rule__ConfigurationPropertiesClause__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConstraintClause__Group__1__Impl"
+    // InternalDescartesQL.g:6244:1: rule__ConstraintClause__Group__1__Impl : ( ( rule__ConstraintClause__TypeAssignment_1 ) ) ;
+    public final void rule__ConstraintClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6150:1: ( ( ',' ) )
-            // InternalDescartesQL.g:6151:1: ( ',' )
+            // InternalDescartesQL.g:6248:1: ( ( ( rule__ConstraintClause__TypeAssignment_1 ) ) )
+            // InternalDescartesQL.g:6249:1: ( ( rule__ConstraintClause__TypeAssignment_1 ) )
             {
-            // InternalDescartesQL.g:6151:1: ( ',' )
-            // InternalDescartesQL.g:6152:1: ','
+            // InternalDescartesQL.g:6249:1: ( ( rule__ConstraintClause__TypeAssignment_1 ) )
+            // InternalDescartesQL.g:6250:1: ( rule__ConstraintClause__TypeAssignment_1 )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getCommaKeyword_2_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getCommaKeyword_2_0()); 
+             before(grammarAccess.getConstraintClauseAccess().getTypeAssignment_1()); 
+            // InternalDescartesQL.g:6251:1: ( rule__ConstraintClause__TypeAssignment_1 )
+            // InternalDescartesQL.g:6251:2: rule__ConstraintClause__TypeAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ConstraintClause__TypeAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstraintClauseAccess().getTypeAssignment_1()); 
 
             }
 
@@ -17427,21 +17678,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__0__Impl"
+    // $ANTLR end "rule__ConstraintClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__1"
-    // InternalDescartesQL.g:6165:1: rule__ConfigurationPropertiesClause__Group_2__1 : rule__ConfigurationPropertiesClause__Group_2__1__Impl ;
-    public final void rule__ConfigurationPropertiesClause__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__0"
+    // InternalDescartesQL.g:6265:1: rule__DoFClause__Group__0 : rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1 ;
+    public final void rule__DoFClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6169:1: ( rule__ConfigurationPropertiesClause__Group_2__1__Impl )
-            // InternalDescartesQL.g:6170:2: rule__ConfigurationPropertiesClause__Group_2__1__Impl
+            // InternalDescartesQL.g:6269:1: ( rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1 )
+            // InternalDescartesQL.g:6270:2: rule__DoFClause__Group__0__Impl rule__DoFClause__Group__1
             {
+            pushFollow(FOLLOW_36);
+            rule__DoFClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__Group_2__1__Impl();
+            rule__DoFClause__Group__1();
 
             state._fsp--;
 
@@ -17460,35 +17716,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__1"
+    // $ANTLR end "rule__DoFClause__Group__0"
 
 
-    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__1__Impl"
-    // InternalDescartesQL.g:6176:1: rule__ConfigurationPropertiesClause__Group_2__1__Impl : ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) ) ;
-    public final void rule__ConfigurationPropertiesClause__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__0__Impl"
+    // InternalDescartesQL.g:6277:1: rule__DoFClause__Group__0__Impl : ( ( rule__DoFClause__ModeAssignment_0 ) ) ;
+    public final void rule__DoFClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6180:1: ( ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:6181:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) )
+            // InternalDescartesQL.g:6281:1: ( ( ( rule__DoFClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:6282:1: ( ( rule__DoFClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:6181:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) )
-            // InternalDescartesQL.g:6182:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 )
+            // InternalDescartesQL.g:6282:1: ( ( rule__DoFClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:6283:1: ( rule__DoFClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_2_1()); 
-            // InternalDescartesQL.g:6183:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 )
-            // InternalDescartesQL.g:6183:2: rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1
+             before(grammarAccess.getDoFClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:6284:1: ( rule__DoFClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:6284:2: rule__DoFClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1();
+            rule__DoFClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_2_1()); 
+             after(grammarAccess.getDoFClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -17507,26 +17763,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__1__Impl"
+    // $ANTLR end "rule__DoFClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__0"
-    // InternalDescartesQL.g:6197:1: rule__ConfigurationPropertyClause__Group__0 : rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1 ;
-    public final void rule__ConfigurationPropertyClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__1"
+    // InternalDescartesQL.g:6294:1: rule__DoFClause__Group__1 : rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2 ;
+    public final void rule__DoFClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6201:1: ( rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1 )
-            // InternalDescartesQL.g:6202:2: rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1
+            // InternalDescartesQL.g:6298:1: ( rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2 )
+            // InternalDescartesQL.g:6299:2: rule__DoFClause__Group__1__Impl rule__DoFClause__Group__2
             {
-            pushFollow(FOLLOW_38);
-            rule__ConfigurationPropertyClause__Group__0__Impl();
+            pushFollow(FOLLOW_36);
+            rule__DoFClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group__1();
+            rule__DoFClause__Group__2();
 
             state._fsp--;
 
@@ -17545,35 +17801,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__0"
+    // $ANTLR end "rule__DoFClause__Group__1"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__0__Impl"
-    // InternalDescartesQL.g:6209:1: rule__ConfigurationPropertyClause__Group__0__Impl : ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) ) ;
-    public final void rule__ConfigurationPropertyClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__1__Impl"
+    // InternalDescartesQL.g:6306:1: rule__DoFClause__Group__1__Impl : ( ( rule__DoFClause__VaryingClauseAssignment_1 )? ) ;
+    public final void rule__DoFClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6213:1: ( ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) ) )
-            // InternalDescartesQL.g:6214:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) )
+            // InternalDescartesQL.g:6310:1: ( ( ( rule__DoFClause__VaryingClauseAssignment_1 )? ) )
+            // InternalDescartesQL.g:6311:1: ( ( rule__DoFClause__VaryingClauseAssignment_1 )? )
             {
-            // InternalDescartesQL.g:6214:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) )
-            // InternalDescartesQL.g:6215:1: ( rule__ConfigurationPropertyClause__KeyAssignment_0 )
+            // InternalDescartesQL.g:6311:1: ( ( rule__DoFClause__VaryingClauseAssignment_1 )? )
+            // InternalDescartesQL.g:6312:1: ( rule__DoFClause__VaryingClauseAssignment_1 )?
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_0()); 
-            // InternalDescartesQL.g:6216:1: ( rule__ConfigurationPropertyClause__KeyAssignment_0 )
-            // InternalDescartesQL.g:6216:2: rule__ConfigurationPropertyClause__KeyAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__KeyAssignment_0();
+             before(grammarAccess.getDoFClauseAccess().getVaryingClauseAssignment_1()); 
+            // InternalDescartesQL.g:6313:1: ( rule__DoFClause__VaryingClauseAssignment_1 )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA50_0==93) ) {
+                alt50=1;
+            }
+            switch (alt50) {
+                case 1 :
+                    // InternalDescartesQL.g:6313:2: rule__DoFClause__VaryingClauseAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFClause__VaryingClauseAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_0()); 
+             after(grammarAccess.getDoFClauseAccess().getVaryingClauseAssignment_1()); 
 
             }
 
@@ -17592,26 +17859,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__0__Impl"
+    // $ANTLR end "rule__DoFClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__1"
-    // InternalDescartesQL.g:6226:1: rule__ConfigurationPropertyClause__Group__1 : rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2 ;
-    public final void rule__ConfigurationPropertyClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__2"
+    // InternalDescartesQL.g:6323:1: rule__DoFClause__Group__2 : rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3 ;
+    public final void rule__DoFClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6230:1: ( rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2 )
-            // InternalDescartesQL.g:6231:2: rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2
+            // InternalDescartesQL.g:6327:1: ( rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3 )
+            // InternalDescartesQL.g:6328:2: rule__DoFClause__Group__2__Impl rule__DoFClause__Group__3
             {
-            pushFollow(FOLLOW_38);
-            rule__ConfigurationPropertyClause__Group__1__Impl();
+            pushFollow(FOLLOW_36);
+            rule__DoFClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group__2();
+            rule__DoFClause__Group__3();
 
             state._fsp--;
 
@@ -17630,53 +17897,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__1"
+    // $ANTLR end "rule__DoFClause__Group__2"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__1__Impl"
-    // InternalDescartesQL.g:6238:1: rule__ConfigurationPropertyClause__Group__1__Impl : ( ( rule__ConfigurationPropertyClause__Group_1__0 )* ) ;
-    public final void rule__ConfigurationPropertyClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__2__Impl"
+    // InternalDescartesQL.g:6335:1: rule__DoFClause__Group__2__Impl : ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? ) ;
+    public final void rule__DoFClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6242:1: ( ( ( rule__ConfigurationPropertyClause__Group_1__0 )* ) )
-            // InternalDescartesQL.g:6243:1: ( ( rule__ConfigurationPropertyClause__Group_1__0 )* )
+            // InternalDescartesQL.g:6339:1: ( ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? ) )
+            // InternalDescartesQL.g:6340:1: ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? )
             {
-            // InternalDescartesQL.g:6243:1: ( ( rule__ConfigurationPropertyClause__Group_1__0 )* )
-            // InternalDescartesQL.g:6244:1: ( rule__ConfigurationPropertyClause__Group_1__0 )*
+            // InternalDescartesQL.g:6340:1: ( ( rule__DoFClause__ExplorationStrategyAssignment_2 )? )
+            // InternalDescartesQL.g:6341:1: ( rule__DoFClause__ExplorationStrategyAssignment_2 )?
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getGroup_1()); 
-            // InternalDescartesQL.g:6245:1: ( rule__ConfigurationPropertyClause__Group_1__0 )*
-            loop49:
-            do {
-                int alt49=2;
-                int LA49_0 = input.LA(1);
-
-                if ( (LA49_0==68) ) {
-                    alt49=1;
-                }
-
+             before(grammarAccess.getDoFClauseAccess().getExplorationStrategyAssignment_2()); 
+            // InternalDescartesQL.g:6342:1: ( rule__DoFClause__ExplorationStrategyAssignment_2 )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-                switch (alt49) {
-            	case 1 :
-            	    // InternalDescartesQL.g:6245:2: rule__ConfigurationPropertyClause__Group_1__0
-            	    {
-            	    pushFollow(FOLLOW_39);
-            	    rule__ConfigurationPropertyClause__Group_1__0();
+            if ( (LA51_0==90) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // InternalDescartesQL.g:6342:2: rule__DoFClause__ExplorationStrategyAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFClause__ExplorationStrategyAssignment_2();
 
-            	    state._fsp--;
+                    state._fsp--;
 
 
-            	    }
-            	    break;
+                    }
+                    break;
 
-            	default :
-            	    break loop49;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getGroup_1()); 
+             after(grammarAccess.getDoFClauseAccess().getExplorationStrategyAssignment_2()); 
 
             }
 
@@ -17695,26 +17955,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__1__Impl"
+    // $ANTLR end "rule__DoFClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__2"
-    // InternalDescartesQL.g:6255:1: rule__ConfigurationPropertyClause__Group__2 : rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3 ;
-    public final void rule__ConfigurationPropertyClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__3"
+    // InternalDescartesQL.g:6352:1: rule__DoFClause__Group__3 : rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4 ;
+    public final void rule__DoFClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6259:1: ( rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3 )
-            // InternalDescartesQL.g:6260:2: rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3
+            // InternalDescartesQL.g:6356:1: ( rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4 )
+            // InternalDescartesQL.g:6357:2: rule__DoFClause__Group__3__Impl rule__DoFClause__Group__4
             {
-            pushFollow(FOLLOW_34);
-            rule__ConfigurationPropertyClause__Group__2__Impl();
+            pushFollow(FOLLOW_36);
+            rule__DoFClause__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group__3();
+            rule__DoFClause__Group__4();
 
             state._fsp--;
 
@@ -17733,25 +17993,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__2"
+    // $ANTLR end "rule__DoFClause__Group__3"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__2__Impl"
-    // InternalDescartesQL.g:6267:1: rule__ConfigurationPropertyClause__Group__2__Impl : ( '=' ) ;
-    public final void rule__ConfigurationPropertyClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__3__Impl"
+    // InternalDescartesQL.g:6364:1: rule__DoFClause__Group__3__Impl : ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? ) ;
+    public final void rule__DoFClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6271:1: ( ( '=' ) )
-            // InternalDescartesQL.g:6272:1: ( '=' )
+            // InternalDescartesQL.g:6368:1: ( ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? ) )
+            // InternalDescartesQL.g:6369:1: ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? )
             {
-            // InternalDescartesQL.g:6272:1: ( '=' )
-            // InternalDescartesQL.g:6273:1: '='
+            // InternalDescartesQL.g:6369:1: ( ( rule__DoFClause__ConstraintClauseAssignment_3 )? )
+            // InternalDescartesQL.g:6370:1: ( rule__DoFClause__ConstraintClauseAssignment_3 )?
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getEqualsSignKeyword_2()); 
-            match(input,67,FOLLOW_2); 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getEqualsSignKeyword_2()); 
+             before(grammarAccess.getDoFClauseAccess().getConstraintClauseAssignment_3()); 
+            // InternalDescartesQL.g:6371:1: ( rule__DoFClause__ConstraintClauseAssignment_3 )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==70) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // InternalDescartesQL.g:6371:2: rule__DoFClause__ConstraintClauseAssignment_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFClause__ConstraintClauseAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDoFClauseAccess().getConstraintClauseAssignment_3()); 
 
             }
 
@@ -17770,21 +18051,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__2__Impl"
+    // $ANTLR end "rule__DoFClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__3"
-    // InternalDescartesQL.g:6286:1: rule__ConfigurationPropertyClause__Group__3 : rule__ConfigurationPropertyClause__Group__3__Impl ;
-    public final void rule__ConfigurationPropertyClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__4"
+    // InternalDescartesQL.g:6381:1: rule__DoFClause__Group__4 : rule__DoFClause__Group__4__Impl ;
+    public final void rule__DoFClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6290:1: ( rule__ConfigurationPropertyClause__Group__3__Impl )
-            // InternalDescartesQL.g:6291:2: rule__ConfigurationPropertyClause__Group__3__Impl
+            // InternalDescartesQL.g:6385:1: ( rule__DoFClause__Group__4__Impl )
+            // InternalDescartesQL.g:6386:2: rule__DoFClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group__3__Impl();
+            rule__DoFClause__Group__4__Impl();
 
             state._fsp--;
 
@@ -17803,35 +18084,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__3"
+    // $ANTLR end "rule__DoFClause__Group__4"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group__3__Impl"
-    // InternalDescartesQL.g:6297:1: rule__ConfigurationPropertyClause__Group__3__Impl : ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) ) ;
-    public final void rule__ConfigurationPropertyClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFClause__Group__4__Impl"
+    // InternalDescartesQL.g:6392:1: rule__DoFClause__Group__4__Impl : ( ( rule__DoFClause__WithClauseAssignment_4 )? ) ;
+    public final void rule__DoFClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6301:1: ( ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) ) )
-            // InternalDescartesQL.g:6302:1: ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) )
-            {
-            // InternalDescartesQL.g:6302:1: ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) )
-            // InternalDescartesQL.g:6303:1: ( rule__ConfigurationPropertyClause__ValueAssignment_3 )
+            // InternalDescartesQL.g:6396:1: ( ( ( rule__DoFClause__WithClauseAssignment_4 )? ) )
+            // InternalDescartesQL.g:6397:1: ( ( rule__DoFClause__WithClauseAssignment_4 )? )
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getValueAssignment_3()); 
-            // InternalDescartesQL.g:6304:1: ( rule__ConfigurationPropertyClause__ValueAssignment_3 )
-            // InternalDescartesQL.g:6304:2: rule__ConfigurationPropertyClause__ValueAssignment_3
+            // InternalDescartesQL.g:6397:1: ( ( rule__DoFClause__WithClauseAssignment_4 )? )
+            // InternalDescartesQL.g:6398:1: ( rule__DoFClause__WithClauseAssignment_4 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__ValueAssignment_3();
+             before(grammarAccess.getDoFClauseAccess().getWithClauseAssignment_4()); 
+            // InternalDescartesQL.g:6399:1: ( rule__DoFClause__WithClauseAssignment_4 )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA53_0==100) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // InternalDescartesQL.g:6399:2: rule__DoFClause__WithClauseAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFClause__WithClauseAssignment_4();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getValueAssignment_3()); 
+             after(grammarAccess.getDoFClauseAccess().getWithClauseAssignment_4()); 
 
             }
 
@@ -17850,26 +18142,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group__3__Impl"
+    // $ANTLR end "rule__DoFClause__Group__4__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__0"
-    // InternalDescartesQL.g:6322:1: rule__ConfigurationPropertyClause__Group_1__0 : rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1 ;
-    public final void rule__ConfigurationPropertyClause__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__0"
+    // InternalDescartesQL.g:6419:1: rule__ExplorationStrategyClause__Group__0 : rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1 ;
+    public final void rule__ExplorationStrategyClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6326:1: ( rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1 )
-            // InternalDescartesQL.g:6327:2: rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1
+            // InternalDescartesQL.g:6423:1: ( rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1 )
+            // InternalDescartesQL.g:6424:2: rule__ExplorationStrategyClause__Group__0__Impl rule__ExplorationStrategyClause__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__ConfigurationPropertyClause__Group_1__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__ExplorationStrategyClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group_1__1();
+            rule__ExplorationStrategyClause__Group__1();
 
             state._fsp--;
 
@@ -17888,25 +18180,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__0"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__0"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__0__Impl"
-    // InternalDescartesQL.g:6334:1: rule__ConfigurationPropertyClause__Group_1__0__Impl : ( '.' ) ;
-    public final void rule__ConfigurationPropertyClause__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__0__Impl"
+    // InternalDescartesQL.g:6431:1: rule__ExplorationStrategyClause__Group__0__Impl : ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) ) ;
+    public final void rule__ExplorationStrategyClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6338:1: ( ( '.' ) )
-            // InternalDescartesQL.g:6339:1: ( '.' )
+            // InternalDescartesQL.g:6435:1: ( ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:6436:1: ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:6339:1: ( '.' )
-            // InternalDescartesQL.g:6340:1: '.'
+            // InternalDescartesQL.g:6436:1: ( ( rule__ExplorationStrategyClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:6437:1: ( rule__ExplorationStrategyClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getFullStopKeyword_1_0()); 
-            match(input,68,FOLLOW_2); 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getFullStopKeyword_1_0()); 
+             before(grammarAccess.getExplorationStrategyClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:6438:1: ( rule__ExplorationStrategyClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:6438:2: rule__ExplorationStrategyClause__ModeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ExplorationStrategyClause__ModeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExplorationStrategyClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -17925,21 +18227,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__0__Impl"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__1"
-    // InternalDescartesQL.g:6353:1: rule__ConfigurationPropertyClause__Group_1__1 : rule__ConfigurationPropertyClause__Group_1__1__Impl ;
-    public final void rule__ConfigurationPropertyClause__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__1"
+    // InternalDescartesQL.g:6448:1: rule__ExplorationStrategyClause__Group__1 : rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2 ;
+    public final void rule__ExplorationStrategyClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6357:1: ( rule__ConfigurationPropertyClause__Group_1__1__Impl )
-            // InternalDescartesQL.g:6358:2: rule__ConfigurationPropertyClause__Group_1__1__Impl
+            // InternalDescartesQL.g:6452:1: ( rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2 )
+            // InternalDescartesQL.g:6453:2: rule__ExplorationStrategyClause__Group__1__Impl rule__ExplorationStrategyClause__Group__2
             {
+            pushFollow(FOLLOW_37);
+            rule__ExplorationStrategyClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__Group_1__1__Impl();
+            rule__ExplorationStrategyClause__Group__2();
 
             state._fsp--;
 
@@ -17958,35 +18265,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__1"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__1"
 
 
-    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__1__Impl"
-    // InternalDescartesQL.g:6364:1: rule__ConfigurationPropertyClause__Group_1__1__Impl : ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) ) ;
-    public final void rule__ConfigurationPropertyClause__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__1__Impl"
+    // InternalDescartesQL.g:6460:1: rule__ExplorationStrategyClause__Group__1__Impl : ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) ) ;
+    public final void rule__ExplorationStrategyClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6368:1: ( ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:6369:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) )
+            // InternalDescartesQL.g:6464:1: ( ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) ) )
+            // InternalDescartesQL.g:6465:1: ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) )
             {
-            // InternalDescartesQL.g:6369:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) )
-            // InternalDescartesQL.g:6370:1: ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 )
+            // InternalDescartesQL.g:6465:1: ( ( rule__ExplorationStrategyClause__NameAssignment_1 ) )
+            // InternalDescartesQL.g:6466:1: ( rule__ExplorationStrategyClause__NameAssignment_1 )
             {
-             before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_1_1()); 
-            // InternalDescartesQL.g:6371:1: ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 )
-            // InternalDescartesQL.g:6371:2: rule__ConfigurationPropertyClause__KeyAssignment_1_1
+             before(grammarAccess.getExplorationStrategyClauseAccess().getNameAssignment_1()); 
+            // InternalDescartesQL.g:6467:1: ( rule__ExplorationStrategyClause__NameAssignment_1 )
+            // InternalDescartesQL.g:6467:2: rule__ExplorationStrategyClause__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__ConfigurationPropertyClause__KeyAssignment_1_1();
+            rule__ExplorationStrategyClause__NameAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_1_1()); 
+             after(grammarAccess.getExplorationStrategyClauseAccess().getNameAssignment_1()); 
 
             }
 
@@ -18005,26 +18312,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__1__Impl"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__0"
-    // InternalDescartesQL.g:6385:1: rule__DoFVariationClause__Group__0 : rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1 ;
-    public final void rule__DoFVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__2"
+    // InternalDescartesQL.g:6477:1: rule__ExplorationStrategyClause__Group__2 : rule__ExplorationStrategyClause__Group__2__Impl ;
+    public final void rule__ExplorationStrategyClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6389:1: ( rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1 )
-            // InternalDescartesQL.g:6390:2: rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1
+            // InternalDescartesQL.g:6481:1: ( rule__ExplorationStrategyClause__Group__2__Impl )
+            // InternalDescartesQL.g:6482:2: rule__ExplorationStrategyClause__Group__2__Impl
             {
-            pushFollow(FOLLOW_16);
-            rule__DoFVariationClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__Group__1();
+            rule__ExplorationStrategyClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -18043,35 +18345,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__0"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__2"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:6397:1: rule__DoFVariationClause__Group__0__Impl : ( ( rule__DoFVariationClause__Mode1Assignment_0 ) ) ;
-    public final void rule__DoFVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ExplorationStrategyClause__Group__2__Impl"
+    // InternalDescartesQL.g:6488:1: rule__ExplorationStrategyClause__Group__2__Impl : ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? ) ;
+    public final void rule__ExplorationStrategyClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6401:1: ( ( ( rule__DoFVariationClause__Mode1Assignment_0 ) ) )
-            // InternalDescartesQL.g:6402:1: ( ( rule__DoFVariationClause__Mode1Assignment_0 ) )
-            {
-            // InternalDescartesQL.g:6402:1: ( ( rule__DoFVariationClause__Mode1Assignment_0 ) )
-            // InternalDescartesQL.g:6403:1: ( rule__DoFVariationClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:6492:1: ( ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? ) )
+            // InternalDescartesQL.g:6493:1: ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? )
             {
-             before(grammarAccess.getDoFVariationClauseAccess().getMode1Assignment_0()); 
-            // InternalDescartesQL.g:6404:1: ( rule__DoFVariationClause__Mode1Assignment_0 )
-            // InternalDescartesQL.g:6404:2: rule__DoFVariationClause__Mode1Assignment_0
+            // InternalDescartesQL.g:6493:1: ( ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )? )
+            // InternalDescartesQL.g:6494:1: ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__Mode1Assignment_0();
+             before(grammarAccess.getExplorationStrategyClauseAccess().getParameterClauseAssignment_2()); 
+            // InternalDescartesQL.g:6495:1: ( rule__ExplorationStrategyClause__ParameterClauseAssignment_2 )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA54_0==91) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // InternalDescartesQL.g:6495:2: rule__ExplorationStrategyClause__ParameterClauseAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ExplorationStrategyClause__ParameterClauseAssignment_2();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getDoFVariationClauseAccess().getMode1Assignment_0()); 
+             after(grammarAccess.getExplorationStrategyClauseAccess().getParameterClauseAssignment_2()); 
 
             }
 
@@ -18090,26 +18403,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__ExplorationStrategyClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__1"
-    // InternalDescartesQL.g:6414:1: rule__DoFVariationClause__Group__1 : rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2 ;
-    public final void rule__DoFVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__0"
+    // InternalDescartesQL.g:6511:1: rule__ConfigurationPropertiesClause__Group__0 : rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1 ;
+    public final void rule__ConfigurationPropertiesClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6418:1: ( rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2 )
-            // InternalDescartesQL.g:6419:2: rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2
+            // InternalDescartesQL.g:6515:1: ( rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1 )
+            // InternalDescartesQL.g:6516:2: rule__ConfigurationPropertiesClause__Group__0__Impl rule__ConfigurationPropertiesClause__Group__1
             {
-            pushFollow(FOLLOW_40);
-            rule__DoFVariationClause__Group__1__Impl();
+            pushFollow(FOLLOW_10);
+            rule__ConfigurationPropertiesClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__Group__2();
+            rule__ConfigurationPropertiesClause__Group__1();
 
             state._fsp--;
 
@@ -18128,35 +18441,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__1"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__0"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:6426:1: rule__DoFVariationClause__Group__1__Impl : ( ( rule__DoFVariationClause__VariationAssignment_1 ) ) ;
-    public final void rule__DoFVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__0__Impl"
+    // InternalDescartesQL.g:6523:1: rule__ConfigurationPropertiesClause__Group__0__Impl : ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) ) ;
+    public final void rule__ConfigurationPropertiesClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6430:1: ( ( ( rule__DoFVariationClause__VariationAssignment_1 ) ) )
-            // InternalDescartesQL.g:6431:1: ( ( rule__DoFVariationClause__VariationAssignment_1 ) )
+            // InternalDescartesQL.g:6527:1: ( ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) ) )
+            // InternalDescartesQL.g:6528:1: ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) )
             {
-            // InternalDescartesQL.g:6431:1: ( ( rule__DoFVariationClause__VariationAssignment_1 ) )
-            // InternalDescartesQL.g:6432:1: ( rule__DoFVariationClause__VariationAssignment_1 )
+            // InternalDescartesQL.g:6528:1: ( ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 ) )
+            // InternalDescartesQL.g:6529:1: ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 )
             {
-             before(grammarAccess.getDoFVariationClauseAccess().getVariationAssignment_1()); 
-            // InternalDescartesQL.g:6433:1: ( rule__DoFVariationClause__VariationAssignment_1 )
-            // InternalDescartesQL.g:6433:2: rule__DoFVariationClause__VariationAssignment_1
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1Assignment_0()); 
+            // InternalDescartesQL.g:6530:1: ( rule__ConfigurationPropertiesClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:6530:2: rule__ConfigurationPropertiesClause__Mode1Assignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__VariationAssignment_1();
+            rule__ConfigurationPropertiesClause__Mode1Assignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDoFVariationClauseAccess().getVariationAssignment_1()); 
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1Assignment_0()); 
 
             }
 
@@ -18175,21 +18488,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__2"
-    // InternalDescartesQL.g:6443:1: rule__DoFVariationClause__Group__2 : rule__DoFVariationClause__Group__2__Impl ;
-    public final void rule__DoFVariationClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__1"
+    // InternalDescartesQL.g:6540:1: rule__ConfigurationPropertiesClause__Group__1 : rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2 ;
+    public final void rule__ConfigurationPropertiesClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6447:1: ( rule__DoFVariationClause__Group__2__Impl )
-            // InternalDescartesQL.g:6448:2: rule__DoFVariationClause__Group__2__Impl
+            // InternalDescartesQL.g:6544:1: ( rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2 )
+            // InternalDescartesQL.g:6545:2: rule__ConfigurationPropertiesClause__Group__1__Impl rule__ConfigurationPropertiesClause__Group__2
             {
+            pushFollow(FOLLOW_38);
+            rule__ConfigurationPropertiesClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__Group__2__Impl();
+            rule__ConfigurationPropertiesClause__Group__2();
 
             state._fsp--;
 
@@ -18208,35 +18526,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__2"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__1"
 
 
-    // $ANTLR start "rule__DoFVariationClause__Group__2__Impl"
-    // InternalDescartesQL.g:6454:1: rule__DoFVariationClause__Group__2__Impl : ( ( rule__DoFVariationClause__Mode2Assignment_2 ) ) ;
-    public final void rule__DoFVariationClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__1__Impl"
+    // InternalDescartesQL.g:6552:1: rule__ConfigurationPropertiesClause__Group__1__Impl : ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) ) ;
+    public final void rule__ConfigurationPropertiesClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6458:1: ( ( ( rule__DoFVariationClause__Mode2Assignment_2 ) ) )
-            // InternalDescartesQL.g:6459:1: ( ( rule__DoFVariationClause__Mode2Assignment_2 ) )
+            // InternalDescartesQL.g:6556:1: ( ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) ) )
+            // InternalDescartesQL.g:6557:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) )
             {
-            // InternalDescartesQL.g:6459:1: ( ( rule__DoFVariationClause__Mode2Assignment_2 ) )
-            // InternalDescartesQL.g:6460:1: ( rule__DoFVariationClause__Mode2Assignment_2 )
+            // InternalDescartesQL.g:6557:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 ) )
+            // InternalDescartesQL.g:6558:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 )
             {
-             before(grammarAccess.getDoFVariationClauseAccess().getMode2Assignment_2()); 
-            // InternalDescartesQL.g:6461:1: ( rule__DoFVariationClause__Mode2Assignment_2 )
-            // InternalDescartesQL.g:6461:2: rule__DoFVariationClause__Mode2Assignment_2
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_1()); 
+            // InternalDescartesQL.g:6559:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_1 )
+            // InternalDescartesQL.g:6559:2: rule__ConfigurationPropertiesClause__PropertiesAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__DoFVariationClause__Mode2Assignment_2();
+            rule__ConfigurationPropertiesClause__PropertiesAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDoFVariationClauseAccess().getMode2Assignment_2()); 
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_1()); 
 
             }
 
@@ -18255,26 +18573,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFVariationClause__Group__2__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group__0"
-    // InternalDescartesQL.g:6477:1: rule__ValueVariationClause__Group__0 : rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1 ;
-    public final void rule__ValueVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__2"
+    // InternalDescartesQL.g:6569:1: rule__ConfigurationPropertiesClause__Group__2 : rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3 ;
+    public final void rule__ConfigurationPropertiesClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6481:1: ( rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1 )
-            // InternalDescartesQL.g:6482:2: rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1
+            // InternalDescartesQL.g:6573:1: ( rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3 )
+            // InternalDescartesQL.g:6574:2: rule__ConfigurationPropertiesClause__Group__2__Impl rule__ConfigurationPropertiesClause__Group__3
             {
-            pushFollow(FOLLOW_8);
-            rule__ValueVariationClause__Group__0__Impl();
+            pushFollow(FOLLOW_38);
+            rule__ConfigurationPropertiesClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__Group__1();
+            rule__ConfigurationPropertiesClause__Group__3();
 
             state._fsp--;
 
@@ -18293,35 +18611,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group__0"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__2"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:6489:1: rule__ValueVariationClause__Group__0__Impl : ( ( rule__ValueVariationClause__ValueAssignment_0 ) ) ;
-    public final void rule__ValueVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__2__Impl"
+    // InternalDescartesQL.g:6581:1: rule__ConfigurationPropertiesClause__Group__2__Impl : ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* ) ;
+    public final void rule__ConfigurationPropertiesClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6493:1: ( ( ( rule__ValueVariationClause__ValueAssignment_0 ) ) )
-            // InternalDescartesQL.g:6494:1: ( ( rule__ValueVariationClause__ValueAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:6494:1: ( ( rule__ValueVariationClause__ValueAssignment_0 ) )
-            // InternalDescartesQL.g:6495:1: ( rule__ValueVariationClause__ValueAssignment_0 )
+            // InternalDescartesQL.g:6585:1: ( ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* ) )
+            // InternalDescartesQL.g:6586:1: ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* )
             {
-             before(grammarAccess.getValueVariationClauseAccess().getValueAssignment_0()); 
-            // InternalDescartesQL.g:6496:1: ( rule__ValueVariationClause__ValueAssignment_0 )
-            // InternalDescartesQL.g:6496:2: rule__ValueVariationClause__ValueAssignment_0
+            // InternalDescartesQL.g:6586:1: ( ( rule__ConfigurationPropertiesClause__Group_2__0 )* )
+            // InternalDescartesQL.g:6587:1: ( rule__ConfigurationPropertiesClause__Group_2__0 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__ValueAssignment_0();
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getGroup_2()); 
+            // InternalDescartesQL.g:6588:1: ( rule__ConfigurationPropertiesClause__Group_2__0 )*
+            loop55:
+            do {
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA55_0==57) ) {
+                    alt55=1;
+                }
 
 
-            }
+                switch (alt55) {
+            	case 1 :
+            	    // InternalDescartesQL.g:6588:2: rule__ConfigurationPropertiesClause__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__ConfigurationPropertiesClause__Group_2__0();
+
+            	    state._fsp--;
 
-             after(grammarAccess.getValueVariationClauseAccess().getValueAssignment_0()); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop55;
+                }
+            } while (true);
+
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getGroup_2()); 
 
             }
 
@@ -18340,21 +18676,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group__1"
-    // InternalDescartesQL.g:6506:1: rule__ValueVariationClause__Group__1 : rule__ValueVariationClause__Group__1__Impl ;
-    public final void rule__ValueVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__3"
+    // InternalDescartesQL.g:6598:1: rule__ConfigurationPropertiesClause__Group__3 : rule__ConfigurationPropertiesClause__Group__3__Impl ;
+    public final void rule__ConfigurationPropertiesClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6510:1: ( rule__ValueVariationClause__Group__1__Impl )
-            // InternalDescartesQL.g:6511:2: rule__ValueVariationClause__Group__1__Impl
+            // InternalDescartesQL.g:6602:1: ( rule__ConfigurationPropertiesClause__Group__3__Impl )
+            // InternalDescartesQL.g:6603:2: rule__ConfigurationPropertiesClause__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__Group__1__Impl();
+            rule__ConfigurationPropertiesClause__Group__3__Impl();
 
             state._fsp--;
 
@@ -18373,59 +18709,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group__1"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__3"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:6517:1: rule__ValueVariationClause__Group__1__Impl : ( ( rule__ValueVariationClause__Group_1__0 )* ) ;
-    public final void rule__ValueVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group__3__Impl"
+    // InternalDescartesQL.g:6609:1: rule__ConfigurationPropertiesClause__Group__3__Impl : ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) ) ;
+    public final void rule__ConfigurationPropertiesClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6521:1: ( ( ( rule__ValueVariationClause__Group_1__0 )* ) )
-            // InternalDescartesQL.g:6522:1: ( ( rule__ValueVariationClause__Group_1__0 )* )
+            // InternalDescartesQL.g:6613:1: ( ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) ) )
+            // InternalDescartesQL.g:6614:1: ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) )
             {
-            // InternalDescartesQL.g:6522:1: ( ( rule__ValueVariationClause__Group_1__0 )* )
-            // InternalDescartesQL.g:6523:1: ( rule__ValueVariationClause__Group_1__0 )*
+            // InternalDescartesQL.g:6614:1: ( ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 ) )
+            // InternalDescartesQL.g:6615:1: ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 )
             {
-             before(grammarAccess.getValueVariationClauseAccess().getGroup_1()); 
-            // InternalDescartesQL.g:6524:1: ( rule__ValueVariationClause__Group_1__0 )*
-            loop50:
-            do {
-                int alt50=2;
-                int LA50_0 = input.LA(1);
-
-                if ( (LA50_0==53) ) {
-                    int LA50_2 = input.LA(2);
-
-                    if ( (LA50_2==RULE_INT) ) {
-                        alt50=1;
-                    }
-
-
-                }
-
-
-                switch (alt50) {
-            	case 1 :
-            	    // InternalDescartesQL.g:6524:2: rule__ValueVariationClause__Group_1__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__ValueVariationClause__Group_1__0();
-
-            	    state._fsp--;
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2Assignment_3()); 
+            // InternalDescartesQL.g:6616:1: ( rule__ConfigurationPropertiesClause__Mode2Assignment_3 )
+            // InternalDescartesQL.g:6616:2: rule__ConfigurationPropertiesClause__Mode2Assignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ConfigurationPropertiesClause__Mode2Assignment_3();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop50;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getValueVariationClauseAccess().getGroup_1()); 
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2Assignment_3()); 
 
             }
 
@@ -18444,26 +18756,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group_1__0"
-    // InternalDescartesQL.g:6538:1: rule__ValueVariationClause__Group_1__0 : rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1 ;
-    public final void rule__ValueVariationClause__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__0"
+    // InternalDescartesQL.g:6634:1: rule__ConfigurationPropertiesClause__Group_2__0 : rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1 ;
+    public final void rule__ConfigurationPropertiesClause__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6542:1: ( rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1 )
-            // InternalDescartesQL.g:6543:2: rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1
+            // InternalDescartesQL.g:6638:1: ( rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1 )
+            // InternalDescartesQL.g:6639:2: rule__ConfigurationPropertiesClause__Group_2__0__Impl rule__ConfigurationPropertiesClause__Group_2__1
             {
-            pushFollow(FOLLOW_19);
-            rule__ValueVariationClause__Group_1__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__ConfigurationPropertiesClause__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__Group_1__1();
+            rule__ConfigurationPropertiesClause__Group_2__1();
 
             state._fsp--;
 
@@ -18482,25 +18794,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group_1__0"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__0"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group_1__0__Impl"
-    // InternalDescartesQL.g:6550:1: rule__ValueVariationClause__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__ValueVariationClause__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__0__Impl"
+    // InternalDescartesQL.g:6646:1: rule__ConfigurationPropertiesClause__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__ConfigurationPropertiesClause__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6554:1: ( ( ',' ) )
-            // InternalDescartesQL.g:6555:1: ( ',' )
+            // InternalDescartesQL.g:6650:1: ( ( ',' ) )
+            // InternalDescartesQL.g:6651:1: ( ',' )
             {
-            // InternalDescartesQL.g:6555:1: ( ',' )
-            // InternalDescartesQL.g:6556:1: ','
+            // InternalDescartesQL.g:6651:1: ( ',' )
+            // InternalDescartesQL.g:6652:1: ','
             {
-             before(grammarAccess.getValueVariationClauseAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getValueVariationClauseAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -18519,21 +18831,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group_1__0__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group_1__1"
-    // InternalDescartesQL.g:6569:1: rule__ValueVariationClause__Group_1__1 : rule__ValueVariationClause__Group_1__1__Impl ;
-    public final void rule__ValueVariationClause__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__1"
+    // InternalDescartesQL.g:6665:1: rule__ConfigurationPropertiesClause__Group_2__1 : rule__ConfigurationPropertiesClause__Group_2__1__Impl ;
+    public final void rule__ConfigurationPropertiesClause__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6573:1: ( rule__ValueVariationClause__Group_1__1__Impl )
-            // InternalDescartesQL.g:6574:2: rule__ValueVariationClause__Group_1__1__Impl
+            // InternalDescartesQL.g:6669:1: ( rule__ConfigurationPropertiesClause__Group_2__1__Impl )
+            // InternalDescartesQL.g:6670:2: rule__ConfigurationPropertiesClause__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__Group_1__1__Impl();
+            rule__ConfigurationPropertiesClause__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -18552,35 +18864,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group_1__1"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__1"
 
 
-    // $ANTLR start "rule__ValueVariationClause__Group_1__1__Impl"
-    // InternalDescartesQL.g:6580:1: rule__ValueVariationClause__Group_1__1__Impl : ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) ) ;
-    public final void rule__ValueVariationClause__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertiesClause__Group_2__1__Impl"
+    // InternalDescartesQL.g:6676:1: rule__ConfigurationPropertiesClause__Group_2__1__Impl : ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) ) ;
+    public final void rule__ConfigurationPropertiesClause__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6584:1: ( ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:6585:1: ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) )
+            // InternalDescartesQL.g:6680:1: ( ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:6681:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:6585:1: ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) )
-            // InternalDescartesQL.g:6586:1: ( rule__ValueVariationClause__ValueAssignment_1_1 )
+            // InternalDescartesQL.g:6681:1: ( ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 ) )
+            // InternalDescartesQL.g:6682:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 )
             {
-             before(grammarAccess.getValueVariationClauseAccess().getValueAssignment_1_1()); 
-            // InternalDescartesQL.g:6587:1: ( rule__ValueVariationClause__ValueAssignment_1_1 )
-            // InternalDescartesQL.g:6587:2: rule__ValueVariationClause__ValueAssignment_1_1
+             before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_2_1()); 
+            // InternalDescartesQL.g:6683:1: ( rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 )
+            // InternalDescartesQL.g:6683:2: rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1
             {
             pushFollow(FOLLOW_2);
-            rule__ValueVariationClause__ValueAssignment_1_1();
+            rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getValueVariationClauseAccess().getValueAssignment_1_1()); 
+             after(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesAssignment_2_1()); 
 
             }
 
@@ -18599,26 +18911,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ValueVariationClause__Group_1__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertiesClause__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group__0"
-    // InternalDescartesQL.g:6601:1: rule__DoubleValueVariationClause__Group__0 : rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1 ;
-    public final void rule__DoubleValueVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__0"
+    // InternalDescartesQL.g:6697:1: rule__ConfigurationPropertyClause__Group__0 : rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1 ;
+    public final void rule__ConfigurationPropertyClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6605:1: ( rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1 )
-            // InternalDescartesQL.g:6606:2: rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1
+            // InternalDescartesQL.g:6701:1: ( rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1 )
+            // InternalDescartesQL.g:6702:2: rule__ConfigurationPropertyClause__Group__0__Impl rule__ConfigurationPropertyClause__Group__1
             {
-            pushFollow(FOLLOW_8);
-            rule__DoubleValueVariationClause__Group__0__Impl();
+            pushFollow(FOLLOW_39);
+            rule__ConfigurationPropertyClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__Group__1();
+            rule__ConfigurationPropertyClause__Group__1();
 
             state._fsp--;
 
@@ -18637,35 +18949,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group__0"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__0"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:6613:1: rule__DoubleValueVariationClause__Group__0__Impl : ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) ) ;
-    public final void rule__DoubleValueVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__0__Impl"
+    // InternalDescartesQL.g:6709:1: rule__ConfigurationPropertyClause__Group__0__Impl : ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) ) ;
+    public final void rule__ConfigurationPropertyClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6617:1: ( ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) ) )
-            // InternalDescartesQL.g:6618:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) )
+            // InternalDescartesQL.g:6713:1: ( ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) ) )
+            // InternalDescartesQL.g:6714:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) )
             {
-            // InternalDescartesQL.g:6618:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) )
-            // InternalDescartesQL.g:6619:1: ( rule__DoubleValueVariationClause__ValueAssignment_0 )
+            // InternalDescartesQL.g:6714:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_0 ) )
+            // InternalDescartesQL.g:6715:1: ( rule__ConfigurationPropertyClause__KeyAssignment_0 )
             {
-             before(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_0()); 
-            // InternalDescartesQL.g:6620:1: ( rule__DoubleValueVariationClause__ValueAssignment_0 )
-            // InternalDescartesQL.g:6620:2: rule__DoubleValueVariationClause__ValueAssignment_0
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_0()); 
+            // InternalDescartesQL.g:6716:1: ( rule__ConfigurationPropertyClause__KeyAssignment_0 )
+            // InternalDescartesQL.g:6716:2: rule__ConfigurationPropertyClause__KeyAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__ValueAssignment_0();
+            rule__ConfigurationPropertyClause__KeyAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_0()); 
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_0()); 
 
             }
 
@@ -18684,21 +18996,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group__1"
-    // InternalDescartesQL.g:6630:1: rule__DoubleValueVariationClause__Group__1 : rule__DoubleValueVariationClause__Group__1__Impl ;
-    public final void rule__DoubleValueVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__1"
+    // InternalDescartesQL.g:6726:1: rule__ConfigurationPropertyClause__Group__1 : rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2 ;
+    public final void rule__ConfigurationPropertyClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6634:1: ( rule__DoubleValueVariationClause__Group__1__Impl )
-            // InternalDescartesQL.g:6635:2: rule__DoubleValueVariationClause__Group__1__Impl
+            // InternalDescartesQL.g:6730:1: ( rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2 )
+            // InternalDescartesQL.g:6731:2: rule__ConfigurationPropertyClause__Group__1__Impl rule__ConfigurationPropertyClause__Group__2
             {
+            pushFollow(FOLLOW_39);
+            rule__ConfigurationPropertyClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__Group__1__Impl();
+            rule__ConfigurationPropertyClause__Group__2();
 
             state._fsp--;
 
@@ -18717,40 +19034,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group__1"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__1"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:6641:1: rule__DoubleValueVariationClause__Group__1__Impl : ( ( rule__DoubleValueVariationClause__Group_1__0 )* ) ;
-    public final void rule__DoubleValueVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__1__Impl"
+    // InternalDescartesQL.g:6738:1: rule__ConfigurationPropertyClause__Group__1__Impl : ( ( rule__ConfigurationPropertyClause__Group_1__0 )* ) ;
+    public final void rule__ConfigurationPropertyClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6645:1: ( ( ( rule__DoubleValueVariationClause__Group_1__0 )* ) )
-            // InternalDescartesQL.g:6646:1: ( ( rule__DoubleValueVariationClause__Group_1__0 )* )
+            // InternalDescartesQL.g:6742:1: ( ( ( rule__ConfigurationPropertyClause__Group_1__0 )* ) )
+            // InternalDescartesQL.g:6743:1: ( ( rule__ConfigurationPropertyClause__Group_1__0 )* )
             {
-            // InternalDescartesQL.g:6646:1: ( ( rule__DoubleValueVariationClause__Group_1__0 )* )
-            // InternalDescartesQL.g:6647:1: ( rule__DoubleValueVariationClause__Group_1__0 )*
+            // InternalDescartesQL.g:6743:1: ( ( rule__ConfigurationPropertyClause__Group_1__0 )* )
+            // InternalDescartesQL.g:6744:1: ( rule__ConfigurationPropertyClause__Group_1__0 )*
             {
-             before(grammarAccess.getDoubleValueVariationClauseAccess().getGroup_1()); 
-            // InternalDescartesQL.g:6648:1: ( rule__DoubleValueVariationClause__Group_1__0 )*
-            loop51:
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getGroup_1()); 
+            // InternalDescartesQL.g:6745:1: ( rule__ConfigurationPropertyClause__Group_1__0 )*
+            loop56:
             do {
-                int alt51=2;
-                int LA51_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA51_0==53) ) {
-                    alt51=1;
+                if ( (LA56_0==72) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt51) {
+                switch (alt56) {
             	case 1 :
-            	    // InternalDescartesQL.g:6648:2: rule__DoubleValueVariationClause__Group_1__0
+            	    // InternalDescartesQL.g:6745:2: rule__ConfigurationPropertyClause__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__DoubleValueVariationClause__Group_1__0();
+            	    pushFollow(FOLLOW_40);
+            	    rule__ConfigurationPropertyClause__Group_1__0();
 
             	    state._fsp--;
 
@@ -18759,11 +19076,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
             	    break;
 
             	default :
-            	    break loop51;
+            	    break loop56;
                 }
             } while (true);
 
-             after(grammarAccess.getDoubleValueVariationClauseAccess().getGroup_1()); 
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getGroup_1()); 
 
             }
 
@@ -18782,26 +19099,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__0"
-    // InternalDescartesQL.g:6662:1: rule__DoubleValueVariationClause__Group_1__0 : rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1 ;
-    public final void rule__DoubleValueVariationClause__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__2"
+    // InternalDescartesQL.g:6755:1: rule__ConfigurationPropertyClause__Group__2 : rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3 ;
+    public final void rule__ConfigurationPropertyClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6666:1: ( rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1 )
-            // InternalDescartesQL.g:6667:2: rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1
+            // InternalDescartesQL.g:6759:1: ( rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3 )
+            // InternalDescartesQL.g:6760:2: rule__ConfigurationPropertyClause__Group__2__Impl rule__ConfigurationPropertyClause__Group__3
             {
-            pushFollow(FOLLOW_20);
-            rule__DoubleValueVariationClause__Group_1__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__ConfigurationPropertyClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__Group_1__1();
+            rule__ConfigurationPropertyClause__Group__3();
 
             state._fsp--;
 
@@ -18820,25 +19137,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__0"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__2"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__0__Impl"
-    // InternalDescartesQL.g:6674:1: rule__DoubleValueVariationClause__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__DoubleValueVariationClause__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__2__Impl"
+    // InternalDescartesQL.g:6767:1: rule__ConfigurationPropertyClause__Group__2__Impl : ( '=' ) ;
+    public final void rule__ConfigurationPropertyClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6678:1: ( ( ',' ) )
-            // InternalDescartesQL.g:6679:1: ( ',' )
+            // InternalDescartesQL.g:6771:1: ( ( '=' ) )
+            // InternalDescartesQL.g:6772:1: ( '=' )
             {
-            // InternalDescartesQL.g:6679:1: ( ',' )
-            // InternalDescartesQL.g:6680:1: ','
+            // InternalDescartesQL.g:6772:1: ( '=' )
+            // InternalDescartesQL.g:6773:1: '='
             {
-             before(grammarAccess.getDoubleValueVariationClauseAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getDoubleValueVariationClauseAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getEqualsSignKeyword_2()); 
+            match(input,71,FOLLOW_2); 
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getEqualsSignKeyword_2()); 
 
             }
 
@@ -18857,21 +19174,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__0__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__1"
-    // InternalDescartesQL.g:6693:1: rule__DoubleValueVariationClause__Group_1__1 : rule__DoubleValueVariationClause__Group_1__1__Impl ;
-    public final void rule__DoubleValueVariationClause__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__3"
+    // InternalDescartesQL.g:6786:1: rule__ConfigurationPropertyClause__Group__3 : rule__ConfigurationPropertyClause__Group__3__Impl ;
+    public final void rule__ConfigurationPropertyClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6697:1: ( rule__DoubleValueVariationClause__Group_1__1__Impl )
-            // InternalDescartesQL.g:6698:2: rule__DoubleValueVariationClause__Group_1__1__Impl
+            // InternalDescartesQL.g:6790:1: ( rule__ConfigurationPropertyClause__Group__3__Impl )
+            // InternalDescartesQL.g:6791:2: rule__ConfigurationPropertyClause__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__Group_1__1__Impl();
+            rule__ConfigurationPropertyClause__Group__3__Impl();
 
             state._fsp--;
 
@@ -18890,35 +19207,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__1"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__3"
 
 
-    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__1__Impl"
-    // InternalDescartesQL.g:6704:1: rule__DoubleValueVariationClause__Group_1__1__Impl : ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) ) ;
-    public final void rule__DoubleValueVariationClause__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group__3__Impl"
+    // InternalDescartesQL.g:6797:1: rule__ConfigurationPropertyClause__Group__3__Impl : ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) ) ;
+    public final void rule__ConfigurationPropertyClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6708:1: ( ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:6709:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) )
+            // InternalDescartesQL.g:6801:1: ( ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) ) )
+            // InternalDescartesQL.g:6802:1: ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) )
             {
-            // InternalDescartesQL.g:6709:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) )
-            // InternalDescartesQL.g:6710:1: ( rule__DoubleValueVariationClause__ValueAssignment_1_1 )
+            // InternalDescartesQL.g:6802:1: ( ( rule__ConfigurationPropertyClause__ValueAssignment_3 ) )
+            // InternalDescartesQL.g:6803:1: ( rule__ConfigurationPropertyClause__ValueAssignment_3 )
             {
-             before(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_1_1()); 
-            // InternalDescartesQL.g:6711:1: ( rule__DoubleValueVariationClause__ValueAssignment_1_1 )
-            // InternalDescartesQL.g:6711:2: rule__DoubleValueVariationClause__ValueAssignment_1_1
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getValueAssignment_3()); 
+            // InternalDescartesQL.g:6804:1: ( rule__ConfigurationPropertyClause__ValueAssignment_3 )
+            // InternalDescartesQL.g:6804:2: rule__ConfigurationPropertyClause__ValueAssignment_3
             {
             pushFollow(FOLLOW_2);
-            rule__DoubleValueVariationClause__ValueAssignment_1_1();
+            rule__ConfigurationPropertyClause__ValueAssignment_3();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_1_1()); 
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getValueAssignment_3()); 
 
             }
 
@@ -18937,26 +19254,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__0"
-    // InternalDescartesQL.g:6725:1: rule__IntervalVariationClause__Group__0 : rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1 ;
-    public final void rule__IntervalVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__0"
+    // InternalDescartesQL.g:6822:1: rule__ConfigurationPropertyClause__Group_1__0 : rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1 ;
+    public final void rule__ConfigurationPropertyClause__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6729:1: ( rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1 )
-            // InternalDescartesQL.g:6730:2: rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1
+            // InternalDescartesQL.g:6826:1: ( rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1 )
+            // InternalDescartesQL.g:6827:2: rule__ConfigurationPropertyClause__Group_1__0__Impl rule__ConfigurationPropertyClause__Group_1__1
             {
-            pushFollow(FOLLOW_41);
-            rule__IntervalVariationClause__Group__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__ConfigurationPropertyClause__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__Group__1();
+            rule__ConfigurationPropertyClause__Group_1__1();
 
             state._fsp--;
 
@@ -18975,35 +19292,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__0"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__0"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:6737:1: rule__IntervalVariationClause__Group__0__Impl : ( ( rule__IntervalVariationClause__StartAssignment_0 ) ) ;
-    public final void rule__IntervalVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__0__Impl"
+    // InternalDescartesQL.g:6834:1: rule__ConfigurationPropertyClause__Group_1__0__Impl : ( '.' ) ;
+    public final void rule__ConfigurationPropertyClause__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6741:1: ( ( ( rule__IntervalVariationClause__StartAssignment_0 ) ) )
-            // InternalDescartesQL.g:6742:1: ( ( rule__IntervalVariationClause__StartAssignment_0 ) )
+            // InternalDescartesQL.g:6838:1: ( ( '.' ) )
+            // InternalDescartesQL.g:6839:1: ( '.' )
             {
-            // InternalDescartesQL.g:6742:1: ( ( rule__IntervalVariationClause__StartAssignment_0 ) )
-            // InternalDescartesQL.g:6743:1: ( rule__IntervalVariationClause__StartAssignment_0 )
-            {
-             before(grammarAccess.getIntervalVariationClauseAccess().getStartAssignment_0()); 
-            // InternalDescartesQL.g:6744:1: ( rule__IntervalVariationClause__StartAssignment_0 )
-            // InternalDescartesQL.g:6744:2: rule__IntervalVariationClause__StartAssignment_0
+            // InternalDescartesQL.g:6839:1: ( '.' )
+            // InternalDescartesQL.g:6840:1: '.'
             {
-            pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__StartAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getIntervalVariationClauseAccess().getStartAssignment_0()); 
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getFullStopKeyword_1_0()); 
+            match(input,72,FOLLOW_2); 
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getFullStopKeyword_1_0()); 
 
             }
 
@@ -19022,26 +19329,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__1"
-    // InternalDescartesQL.g:6754:1: rule__IntervalVariationClause__Group__1 : rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2 ;
-    public final void rule__IntervalVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__1"
+    // InternalDescartesQL.g:6853:1: rule__ConfigurationPropertyClause__Group_1__1 : rule__ConfigurationPropertyClause__Group_1__1__Impl ;
+    public final void rule__ConfigurationPropertyClause__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6758:1: ( rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2 )
-            // InternalDescartesQL.g:6759:2: rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2
+            // InternalDescartesQL.g:6857:1: ( rule__ConfigurationPropertyClause__Group_1__1__Impl )
+            // InternalDescartesQL.g:6858:2: rule__ConfigurationPropertyClause__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_19);
-            rule__IntervalVariationClause__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__Group__2();
+            rule__ConfigurationPropertyClause__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -19060,25 +19362,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__1"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__1"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:6766:1: rule__IntervalVariationClause__Group__1__Impl : ( '..' ) ;
-    public final void rule__IntervalVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConfigurationPropertyClause__Group_1__1__Impl"
+    // InternalDescartesQL.g:6864:1: rule__ConfigurationPropertyClause__Group_1__1__Impl : ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) ) ;
+    public final void rule__ConfigurationPropertyClause__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6770:1: ( ( '..' ) )
-            // InternalDescartesQL.g:6771:1: ( '..' )
+            // InternalDescartesQL.g:6868:1: ( ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:6869:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:6771:1: ( '..' )
-            // InternalDescartesQL.g:6772:1: '..'
+            // InternalDescartesQL.g:6869:1: ( ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 ) )
+            // InternalDescartesQL.g:6870:1: ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 )
             {
-             before(grammarAccess.getIntervalVariationClauseAccess().getFullStopFullStopKeyword_1()); 
-            match(input,69,FOLLOW_2); 
-             after(grammarAccess.getIntervalVariationClauseAccess().getFullStopFullStopKeyword_1()); 
+             before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_1_1()); 
+            // InternalDescartesQL.g:6871:1: ( rule__ConfigurationPropertyClause__KeyAssignment_1_1 )
+            // InternalDescartesQL.g:6871:2: rule__ConfigurationPropertyClause__KeyAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ConfigurationPropertyClause__KeyAssignment_1_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConfigurationPropertyClauseAccess().getKeyAssignment_1_1()); 
 
             }
 
@@ -19097,26 +19409,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__ConfigurationPropertyClause__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__2"
-    // InternalDescartesQL.g:6785:1: rule__IntervalVariationClause__Group__2 : rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3 ;
-    public final void rule__IntervalVariationClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__0"
+    // InternalDescartesQL.g:6885:1: rule__DoFVariationClause__Group__0 : rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1 ;
+    public final void rule__DoFVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6789:1: ( rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3 )
-            // InternalDescartesQL.g:6790:2: rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3
+            // InternalDescartesQL.g:6889:1: ( rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1 )
+            // InternalDescartesQL.g:6890:2: rule__DoFVariationClause__Group__0__Impl rule__DoFVariationClause__Group__1
             {
-            pushFollow(FOLLOW_42);
-            rule__IntervalVariationClause__Group__2__Impl();
+            pushFollow(FOLLOW_19);
+            rule__DoFVariationClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__Group__3();
+            rule__DoFVariationClause__Group__1();
 
             state._fsp--;
 
@@ -19135,35 +19447,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__2"
+    // $ANTLR end "rule__DoFVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__2__Impl"
-    // InternalDescartesQL.g:6797:1: rule__IntervalVariationClause__Group__2__Impl : ( ( rule__IntervalVariationClause__EndAssignment_2 ) ) ;
-    public final void rule__IntervalVariationClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:6897:1: rule__DoFVariationClause__Group__0__Impl : ( ( rule__DoFVariationClause__Mode1Assignment_0 ) ) ;
+    public final void rule__DoFVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6801:1: ( ( ( rule__IntervalVariationClause__EndAssignment_2 ) ) )
-            // InternalDescartesQL.g:6802:1: ( ( rule__IntervalVariationClause__EndAssignment_2 ) )
+            // InternalDescartesQL.g:6901:1: ( ( ( rule__DoFVariationClause__Mode1Assignment_0 ) ) )
+            // InternalDescartesQL.g:6902:1: ( ( rule__DoFVariationClause__Mode1Assignment_0 ) )
             {
-            // InternalDescartesQL.g:6802:1: ( ( rule__IntervalVariationClause__EndAssignment_2 ) )
-            // InternalDescartesQL.g:6803:1: ( rule__IntervalVariationClause__EndAssignment_2 )
+            // InternalDescartesQL.g:6902:1: ( ( rule__DoFVariationClause__Mode1Assignment_0 ) )
+            // InternalDescartesQL.g:6903:1: ( rule__DoFVariationClause__Mode1Assignment_0 )
             {
-             before(grammarAccess.getIntervalVariationClauseAccess().getEndAssignment_2()); 
-            // InternalDescartesQL.g:6804:1: ( rule__IntervalVariationClause__EndAssignment_2 )
-            // InternalDescartesQL.g:6804:2: rule__IntervalVariationClause__EndAssignment_2
+             before(grammarAccess.getDoFVariationClauseAccess().getMode1Assignment_0()); 
+            // InternalDescartesQL.g:6904:1: ( rule__DoFVariationClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:6904:2: rule__DoFVariationClause__Mode1Assignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__EndAssignment_2();
+            rule__DoFVariationClause__Mode1Assignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getIntervalVariationClauseAccess().getEndAssignment_2()); 
+             after(grammarAccess.getDoFVariationClauseAccess().getMode1Assignment_0()); 
 
             }
 
@@ -19182,26 +19494,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__2__Impl"
+    // $ANTLR end "rule__DoFVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__3"
-    // InternalDescartesQL.g:6814:1: rule__IntervalVariationClause__Group__3 : rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4 ;
-    public final void rule__IntervalVariationClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__1"
+    // InternalDescartesQL.g:6914:1: rule__DoFVariationClause__Group__1 : rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2 ;
+    public final void rule__DoFVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6818:1: ( rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4 )
-            // InternalDescartesQL.g:6819:2: rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4
+            // InternalDescartesQL.g:6918:1: ( rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2 )
+            // InternalDescartesQL.g:6919:2: rule__DoFVariationClause__Group__1__Impl rule__DoFVariationClause__Group__2
             {
-            pushFollow(FOLLOW_19);
-            rule__IntervalVariationClause__Group__3__Impl();
+            pushFollow(FOLLOW_41);
+            rule__DoFVariationClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__Group__4();
+            rule__DoFVariationClause__Group__2();
 
             state._fsp--;
 
@@ -19220,25 +19532,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__3"
+    // $ANTLR end "rule__DoFVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__3__Impl"
-    // InternalDescartesQL.g:6826:1: rule__IntervalVariationClause__Group__3__Impl : ( 'BY' ) ;
-    public final void rule__IntervalVariationClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:6926:1: rule__DoFVariationClause__Group__1__Impl : ( ( rule__DoFVariationClause__VariationAssignment_1 ) ) ;
+    public final void rule__DoFVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6830:1: ( ( 'BY' ) )
-            // InternalDescartesQL.g:6831:1: ( 'BY' )
+            // InternalDescartesQL.g:6930:1: ( ( ( rule__DoFVariationClause__VariationAssignment_1 ) ) )
+            // InternalDescartesQL.g:6931:1: ( ( rule__DoFVariationClause__VariationAssignment_1 ) )
             {
-            // InternalDescartesQL.g:6831:1: ( 'BY' )
-            // InternalDescartesQL.g:6832:1: 'BY'
+            // InternalDescartesQL.g:6931:1: ( ( rule__DoFVariationClause__VariationAssignment_1 ) )
+            // InternalDescartesQL.g:6932:1: ( rule__DoFVariationClause__VariationAssignment_1 )
             {
-             before(grammarAccess.getIntervalVariationClauseAccess().getBYKeyword_3()); 
-            match(input,70,FOLLOW_2); 
-             after(grammarAccess.getIntervalVariationClauseAccess().getBYKeyword_3()); 
+             before(grammarAccess.getDoFVariationClauseAccess().getVariationAssignment_1()); 
+            // InternalDescartesQL.g:6933:1: ( rule__DoFVariationClause__VariationAssignment_1 )
+            // InternalDescartesQL.g:6933:2: rule__DoFVariationClause__VariationAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__DoFVariationClause__VariationAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDoFVariationClauseAccess().getVariationAssignment_1()); 
 
             }
 
@@ -19257,21 +19579,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__3__Impl"
+    // $ANTLR end "rule__DoFVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__4"
-    // InternalDescartesQL.g:6845:1: rule__IntervalVariationClause__Group__4 : rule__IntervalVariationClause__Group__4__Impl ;
-    public final void rule__IntervalVariationClause__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__2"
+    // InternalDescartesQL.g:6943:1: rule__DoFVariationClause__Group__2 : rule__DoFVariationClause__Group__2__Impl ;
+    public final void rule__DoFVariationClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6849:1: ( rule__IntervalVariationClause__Group__4__Impl )
-            // InternalDescartesQL.g:6850:2: rule__IntervalVariationClause__Group__4__Impl
+            // InternalDescartesQL.g:6947:1: ( rule__DoFVariationClause__Group__2__Impl )
+            // InternalDescartesQL.g:6948:2: rule__DoFVariationClause__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__Group__4__Impl();
+            rule__DoFVariationClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -19290,35 +19612,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__4"
+    // $ANTLR end "rule__DoFVariationClause__Group__2"
 
 
-    // $ANTLR start "rule__IntervalVariationClause__Group__4__Impl"
-    // InternalDescartesQL.g:6856:1: rule__IntervalVariationClause__Group__4__Impl : ( ( rule__IntervalVariationClause__StepAssignment_4 ) ) ;
-    public final void rule__IntervalVariationClause__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFVariationClause__Group__2__Impl"
+    // InternalDescartesQL.g:6954:1: rule__DoFVariationClause__Group__2__Impl : ( ( rule__DoFVariationClause__Mode2Assignment_2 ) ) ;
+    public final void rule__DoFVariationClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6860:1: ( ( ( rule__IntervalVariationClause__StepAssignment_4 ) ) )
-            // InternalDescartesQL.g:6861:1: ( ( rule__IntervalVariationClause__StepAssignment_4 ) )
+            // InternalDescartesQL.g:6958:1: ( ( ( rule__DoFVariationClause__Mode2Assignment_2 ) ) )
+            // InternalDescartesQL.g:6959:1: ( ( rule__DoFVariationClause__Mode2Assignment_2 ) )
             {
-            // InternalDescartesQL.g:6861:1: ( ( rule__IntervalVariationClause__StepAssignment_4 ) )
-            // InternalDescartesQL.g:6862:1: ( rule__IntervalVariationClause__StepAssignment_4 )
+            // InternalDescartesQL.g:6959:1: ( ( rule__DoFVariationClause__Mode2Assignment_2 ) )
+            // InternalDescartesQL.g:6960:1: ( rule__DoFVariationClause__Mode2Assignment_2 )
             {
-             before(grammarAccess.getIntervalVariationClauseAccess().getStepAssignment_4()); 
-            // InternalDescartesQL.g:6863:1: ( rule__IntervalVariationClause__StepAssignment_4 )
-            // InternalDescartesQL.g:6863:2: rule__IntervalVariationClause__StepAssignment_4
+             before(grammarAccess.getDoFVariationClauseAccess().getMode2Assignment_2()); 
+            // InternalDescartesQL.g:6961:1: ( rule__DoFVariationClause__Mode2Assignment_2 )
+            // InternalDescartesQL.g:6961:2: rule__DoFVariationClause__Mode2Assignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__IntervalVariationClause__StepAssignment_4();
+            rule__DoFVariationClause__Mode2Assignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getIntervalVariationClauseAccess().getStepAssignment_4()); 
+             after(grammarAccess.getDoFVariationClauseAccess().getMode2Assignment_2()); 
 
             }
 
@@ -19337,26 +19659,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__IntervalVariationClause__Group__4__Impl"
+    // $ANTLR end "rule__DoFVariationClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__0"
-    // InternalDescartesQL.g:6883:1: rule__VaryingClause__Group__0 : rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1 ;
-    public final void rule__VaryingClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group__0"
+    // InternalDescartesQL.g:6977:1: rule__ValueVariationClause__Group__0 : rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1 ;
+    public final void rule__ValueVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6887:1: ( rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1 )
-            // InternalDescartesQL.g:6888:2: rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1
+            // InternalDescartesQL.g:6981:1: ( rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1 )
+            // InternalDescartesQL.g:6982:2: rule__ValueVariationClause__Group__0__Impl rule__ValueVariationClause__Group__1
             {
-            pushFollow(FOLLOW_34);
-            rule__VaryingClause__Group__0__Impl();
+            pushFollow(FOLLOW_11);
+            rule__ValueVariationClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__Group__1();
+            rule__ValueVariationClause__Group__1();
 
             state._fsp--;
 
@@ -19375,35 +19697,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__0"
+    // $ANTLR end "rule__ValueVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__0__Impl"
-    // InternalDescartesQL.g:6895:1: rule__VaryingClause__Group__0__Impl : ( ( rule__VaryingClause__ModeAssignment_0 ) ) ;
-    public final void rule__VaryingClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:6989:1: rule__ValueVariationClause__Group__0__Impl : ( ( rule__ValueVariationClause__ValueAssignment_0 ) ) ;
+    public final void rule__ValueVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6899:1: ( ( ( rule__VaryingClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:6900:1: ( ( rule__VaryingClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:6993:1: ( ( ( rule__ValueVariationClause__ValueAssignment_0 ) ) )
+            // InternalDescartesQL.g:6994:1: ( ( rule__ValueVariationClause__ValueAssignment_0 ) )
             {
-            // InternalDescartesQL.g:6900:1: ( ( rule__VaryingClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:6901:1: ( rule__VaryingClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:6994:1: ( ( rule__ValueVariationClause__ValueAssignment_0 ) )
+            // InternalDescartesQL.g:6995:1: ( rule__ValueVariationClause__ValueAssignment_0 )
             {
-             before(grammarAccess.getVaryingClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:6902:1: ( rule__VaryingClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:6902:2: rule__VaryingClause__ModeAssignment_0
+             before(grammarAccess.getValueVariationClauseAccess().getValueAssignment_0()); 
+            // InternalDescartesQL.g:6996:1: ( rule__ValueVariationClause__ValueAssignment_0 )
+            // InternalDescartesQL.g:6996:2: rule__ValueVariationClause__ValueAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__ModeAssignment_0();
+            rule__ValueVariationClause__ValueAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getVaryingClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getValueVariationClauseAccess().getValueAssignment_0()); 
 
             }
 
@@ -19422,26 +19744,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__0__Impl"
+    // $ANTLR end "rule__ValueVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__1"
-    // InternalDescartesQL.g:6912:1: rule__VaryingClause__Group__1 : rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2 ;
-    public final void rule__VaryingClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group__1"
+    // InternalDescartesQL.g:7006:1: rule__ValueVariationClause__Group__1 : rule__ValueVariationClause__Group__1__Impl ;
+    public final void rule__ValueVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6916:1: ( rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2 )
-            // InternalDescartesQL.g:6917:2: rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2
+            // InternalDescartesQL.g:7010:1: ( rule__ValueVariationClause__Group__1__Impl )
+            // InternalDescartesQL.g:7011:2: rule__ValueVariationClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_8);
-            rule__VaryingClause__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__Group__2();
+            rule__ValueVariationClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -19460,35 +19777,59 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__1"
+    // $ANTLR end "rule__ValueVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__1__Impl"
-    // InternalDescartesQL.g:6924:1: rule__VaryingClause__Group__1__Impl : ( ( rule__VaryingClause__DofReferencesAssignment_1 ) ) ;
-    public final void rule__VaryingClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:7017:1: rule__ValueVariationClause__Group__1__Impl : ( ( rule__ValueVariationClause__Group_1__0 )* ) ;
+    public final void rule__ValueVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6928:1: ( ( ( rule__VaryingClause__DofReferencesAssignment_1 ) ) )
-            // InternalDescartesQL.g:6929:1: ( ( rule__VaryingClause__DofReferencesAssignment_1 ) )
+            // InternalDescartesQL.g:7021:1: ( ( ( rule__ValueVariationClause__Group_1__0 )* ) )
+            // InternalDescartesQL.g:7022:1: ( ( rule__ValueVariationClause__Group_1__0 )* )
             {
-            // InternalDescartesQL.g:6929:1: ( ( rule__VaryingClause__DofReferencesAssignment_1 ) )
-            // InternalDescartesQL.g:6930:1: ( rule__VaryingClause__DofReferencesAssignment_1 )
+            // InternalDescartesQL.g:7022:1: ( ( rule__ValueVariationClause__Group_1__0 )* )
+            // InternalDescartesQL.g:7023:1: ( rule__ValueVariationClause__Group_1__0 )*
             {
-             before(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_1()); 
-            // InternalDescartesQL.g:6931:1: ( rule__VaryingClause__DofReferencesAssignment_1 )
-            // InternalDescartesQL.g:6931:2: rule__VaryingClause__DofReferencesAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__VaryingClause__DofReferencesAssignment_1();
+             before(grammarAccess.getValueVariationClauseAccess().getGroup_1()); 
+            // InternalDescartesQL.g:7024:1: ( rule__ValueVariationClause__Group_1__0 )*
+            loop57:
+            do {
+                int alt57=2;
+                int LA57_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA57_0==57) ) {
+                    int LA57_2 = input.LA(2);
+
+                    if ( (LA57_2==RULE_INT) ) {
+                        alt57=1;
+                    }
 
 
-            }
+                }
 
-             after(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_1()); 
+
+                switch (alt57) {
+            	case 1 :
+            	    // InternalDescartesQL.g:7024:2: rule__ValueVariationClause__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__ValueVariationClause__Group_1__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop57;
+                }
+            } while (true);
+
+             after(grammarAccess.getValueVariationClauseAccess().getGroup_1()); 
 
             }
 
@@ -19507,21 +19848,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__1__Impl"
+    // $ANTLR end "rule__ValueVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__2"
-    // InternalDescartesQL.g:6941:1: rule__VaryingClause__Group__2 : rule__VaryingClause__Group__2__Impl ;
-    public final void rule__VaryingClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group_1__0"
+    // InternalDescartesQL.g:7038:1: rule__ValueVariationClause__Group_1__0 : rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1 ;
+    public final void rule__ValueVariationClause__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6945:1: ( rule__VaryingClause__Group__2__Impl )
-            // InternalDescartesQL.g:6946:2: rule__VaryingClause__Group__2__Impl
+            // InternalDescartesQL.g:7042:1: ( rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1 )
+            // InternalDescartesQL.g:7043:2: rule__ValueVariationClause__Group_1__0__Impl rule__ValueVariationClause__Group_1__1
             {
+            pushFollow(FOLLOW_22);
+            rule__ValueVariationClause__Group_1__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__Group__2__Impl();
+            rule__ValueVariationClause__Group_1__1();
 
             state._fsp--;
 
@@ -19540,53 +19886,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__2"
+    // $ANTLR end "rule__ValueVariationClause__Group_1__0"
 
 
-    // $ANTLR start "rule__VaryingClause__Group__2__Impl"
-    // InternalDescartesQL.g:6952:1: rule__VaryingClause__Group__2__Impl : ( ( rule__VaryingClause__Group_2__0 )* ) ;
-    public final void rule__VaryingClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group_1__0__Impl"
+    // InternalDescartesQL.g:7050:1: rule__ValueVariationClause__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__ValueVariationClause__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6956:1: ( ( ( rule__VaryingClause__Group_2__0 )* ) )
-            // InternalDescartesQL.g:6957:1: ( ( rule__VaryingClause__Group_2__0 )* )
+            // InternalDescartesQL.g:7054:1: ( ( ',' ) )
+            // InternalDescartesQL.g:7055:1: ( ',' )
             {
-            // InternalDescartesQL.g:6957:1: ( ( rule__VaryingClause__Group_2__0 )* )
-            // InternalDescartesQL.g:6958:1: ( rule__VaryingClause__Group_2__0 )*
+            // InternalDescartesQL.g:7055:1: ( ',' )
+            // InternalDescartesQL.g:7056:1: ','
             {
-             before(grammarAccess.getVaryingClauseAccess().getGroup_2()); 
-            // InternalDescartesQL.g:6959:1: ( rule__VaryingClause__Group_2__0 )*
-            loop52:
-            do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
-
-                if ( (LA52_0==53) ) {
-                    alt52=1;
-                }
-
-
-                switch (alt52) {
-            	case 1 :
-            	    // InternalDescartesQL.g:6959:2: rule__VaryingClause__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__VaryingClause__Group_2__0();
-
-            	    state._fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop52;
-                }
-            } while (true);
-
-             after(grammarAccess.getVaryingClauseAccess().getGroup_2()); 
+             before(grammarAccess.getValueVariationClauseAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getValueVariationClauseAccess().getCommaKeyword_1_0()); 
 
             }
 
@@ -19605,26 +19923,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group__2__Impl"
+    // $ANTLR end "rule__ValueVariationClause__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__VaryingClause__Group_2__0"
-    // InternalDescartesQL.g:6975:1: rule__VaryingClause__Group_2__0 : rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1 ;
-    public final void rule__VaryingClause__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group_1__1"
+    // InternalDescartesQL.g:7069:1: rule__ValueVariationClause__Group_1__1 : rule__ValueVariationClause__Group_1__1__Impl ;
+    public final void rule__ValueVariationClause__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6979:1: ( rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1 )
-            // InternalDescartesQL.g:6980:2: rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1
+            // InternalDescartesQL.g:7073:1: ( rule__ValueVariationClause__Group_1__1__Impl )
+            // InternalDescartesQL.g:7074:2: rule__ValueVariationClause__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_34);
-            rule__VaryingClause__Group_2__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__Group_2__1();
+            rule__ValueVariationClause__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -19643,25 +19956,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group_2__0"
+    // $ANTLR end "rule__ValueVariationClause__Group_1__1"
 
 
-    // $ANTLR start "rule__VaryingClause__Group_2__0__Impl"
-    // InternalDescartesQL.g:6987:1: rule__VaryingClause__Group_2__0__Impl : ( ',' ) ;
-    public final void rule__VaryingClause__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ValueVariationClause__Group_1__1__Impl"
+    // InternalDescartesQL.g:7080:1: rule__ValueVariationClause__Group_1__1__Impl : ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) ) ;
+    public final void rule__ValueVariationClause__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:6991:1: ( ( ',' ) )
-            // InternalDescartesQL.g:6992:1: ( ',' )
+            // InternalDescartesQL.g:7084:1: ( ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:7085:1: ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:6992:1: ( ',' )
-            // InternalDescartesQL.g:6993:1: ','
+            // InternalDescartesQL.g:7085:1: ( ( rule__ValueVariationClause__ValueAssignment_1_1 ) )
+            // InternalDescartesQL.g:7086:1: ( rule__ValueVariationClause__ValueAssignment_1_1 )
             {
-             before(grammarAccess.getVaryingClauseAccess().getCommaKeyword_2_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getVaryingClauseAccess().getCommaKeyword_2_0()); 
+             before(grammarAccess.getValueVariationClauseAccess().getValueAssignment_1_1()); 
+            // InternalDescartesQL.g:7087:1: ( rule__ValueVariationClause__ValueAssignment_1_1 )
+            // InternalDescartesQL.g:7087:2: rule__ValueVariationClause__ValueAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ValueVariationClause__ValueAssignment_1_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getValueVariationClauseAccess().getValueAssignment_1_1()); 
 
             }
 
@@ -19680,21 +20003,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group_2__0__Impl"
+    // $ANTLR end "rule__ValueVariationClause__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__VaryingClause__Group_2__1"
-    // InternalDescartesQL.g:7006:1: rule__VaryingClause__Group_2__1 : rule__VaryingClause__Group_2__1__Impl ;
-    public final void rule__VaryingClause__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group__0"
+    // InternalDescartesQL.g:7101:1: rule__DoubleValueVariationClause__Group__0 : rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1 ;
+    public final void rule__DoubleValueVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7010:1: ( rule__VaryingClause__Group_2__1__Impl )
-            // InternalDescartesQL.g:7011:2: rule__VaryingClause__Group_2__1__Impl
+            // InternalDescartesQL.g:7105:1: ( rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1 )
+            // InternalDescartesQL.g:7106:2: rule__DoubleValueVariationClause__Group__0__Impl rule__DoubleValueVariationClause__Group__1
             {
+            pushFollow(FOLLOW_11);
+            rule__DoubleValueVariationClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__Group_2__1__Impl();
+            rule__DoubleValueVariationClause__Group__1();
 
             state._fsp--;
 
@@ -19713,35 +20041,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group_2__1"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__VaryingClause__Group_2__1__Impl"
-    // InternalDescartesQL.g:7017:1: rule__VaryingClause__Group_2__1__Impl : ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) ) ;
-    public final void rule__VaryingClause__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:7113:1: rule__DoubleValueVariationClause__Group__0__Impl : ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) ) ;
+    public final void rule__DoubleValueVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7021:1: ( ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:7022:1: ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) )
+            // InternalDescartesQL.g:7117:1: ( ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) ) )
+            // InternalDescartesQL.g:7118:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7022:1: ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) )
-            // InternalDescartesQL.g:7023:1: ( rule__VaryingClause__DofReferencesAssignment_2_1 )
+            // InternalDescartesQL.g:7118:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_0 ) )
+            // InternalDescartesQL.g:7119:1: ( rule__DoubleValueVariationClause__ValueAssignment_0 )
             {
-             before(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_2_1()); 
-            // InternalDescartesQL.g:7024:1: ( rule__VaryingClause__DofReferencesAssignment_2_1 )
-            // InternalDescartesQL.g:7024:2: rule__VaryingClause__DofReferencesAssignment_2_1
+             before(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_0()); 
+            // InternalDescartesQL.g:7120:1: ( rule__DoubleValueVariationClause__ValueAssignment_0 )
+            // InternalDescartesQL.g:7120:2: rule__DoubleValueVariationClause__ValueAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__VaryingClause__DofReferencesAssignment_2_1();
+            rule__DoubleValueVariationClause__ValueAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_2_1()); 
+             after(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_0()); 
 
             }
 
@@ -19760,26 +20088,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VaryingClause__Group_2__1__Impl"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__DoFReference__Group__0"
-    // InternalDescartesQL.g:7038:1: rule__DoFReference__Group__0 : rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1 ;
-    public final void rule__DoFReference__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group__1"
+    // InternalDescartesQL.g:7130:1: rule__DoubleValueVariationClause__Group__1 : rule__DoubleValueVariationClause__Group__1__Impl ;
+    public final void rule__DoubleValueVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7042:1: ( rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1 )
-            // InternalDescartesQL.g:7043:2: rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1
+            // InternalDescartesQL.g:7134:1: ( rule__DoubleValueVariationClause__Group__1__Impl )
+            // InternalDescartesQL.g:7135:2: rule__DoubleValueVariationClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_43);
-            rule__DoFReference__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__DoFReference__Group__1();
+            rule__DoubleValueVariationClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -19798,35 +20121,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__0"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__DoFReference__Group__0__Impl"
-    // InternalDescartesQL.g:7050:1: rule__DoFReference__Group__0__Impl : ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) ) ;
-    public final void rule__DoFReference__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:7141:1: rule__DoubleValueVariationClause__Group__1__Impl : ( ( rule__DoubleValueVariationClause__Group_1__0 )* ) ;
+    public final void rule__DoubleValueVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7054:1: ( ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) ) )
-            // InternalDescartesQL.g:7055:1: ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) )
+            // InternalDescartesQL.g:7145:1: ( ( ( rule__DoubleValueVariationClause__Group_1__0 )* ) )
+            // InternalDescartesQL.g:7146:1: ( ( rule__DoubleValueVariationClause__Group_1__0 )* )
             {
-            // InternalDescartesQL.g:7055:1: ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) )
-            // InternalDescartesQL.g:7056:1: ( rule__DoFReference__DoFIdentifierAssignment_0 )
+            // InternalDescartesQL.g:7146:1: ( ( rule__DoubleValueVariationClause__Group_1__0 )* )
+            // InternalDescartesQL.g:7147:1: ( rule__DoubleValueVariationClause__Group_1__0 )*
             {
-             before(grammarAccess.getDoFReferenceAccess().getDoFIdentifierAssignment_0()); 
-            // InternalDescartesQL.g:7057:1: ( rule__DoFReference__DoFIdentifierAssignment_0 )
-            // InternalDescartesQL.g:7057:2: rule__DoFReference__DoFIdentifierAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoFReference__DoFIdentifierAssignment_0();
+             before(grammarAccess.getDoubleValueVariationClauseAccess().getGroup_1()); 
+            // InternalDescartesQL.g:7148:1: ( rule__DoubleValueVariationClause__Group_1__0 )*
+            loop58:
+            do {
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA58_0==57) ) {
+                    alt58=1;
+                }
 
 
-            }
+                switch (alt58) {
+            	case 1 :
+            	    // InternalDescartesQL.g:7148:2: rule__DoubleValueVariationClause__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__DoubleValueVariationClause__Group_1__0();
 
-             after(grammarAccess.getDoFReferenceAccess().getDoFIdentifierAssignment_0()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop58;
+                }
+            } while (true);
+
+             after(grammarAccess.getDoubleValueVariationClauseAccess().getGroup_1()); 
 
             }
 
@@ -19845,26 +20186,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__0__Impl"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__DoFReference__Group__1"
-    // InternalDescartesQL.g:7067:1: rule__DoFReference__Group__1 : rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2 ;
-    public final void rule__DoFReference__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__0"
+    // InternalDescartesQL.g:7162:1: rule__DoubleValueVariationClause__Group_1__0 : rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1 ;
+    public final void rule__DoubleValueVariationClause__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7071:1: ( rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2 )
-            // InternalDescartesQL.g:7072:2: rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2
+            // InternalDescartesQL.g:7166:1: ( rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1 )
+            // InternalDescartesQL.g:7167:2: rule__DoubleValueVariationClause__Group_1__0__Impl rule__DoubleValueVariationClause__Group_1__1
             {
-            pushFollow(FOLLOW_43);
-            rule__DoFReference__Group__1__Impl();
+            pushFollow(FOLLOW_8);
+            rule__DoubleValueVariationClause__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__DoFReference__Group__2();
+            rule__DoubleValueVariationClause__Group_1__1();
 
             state._fsp--;
 
@@ -19883,46 +20224,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__1"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__0"
 
 
-    // $ANTLR start "rule__DoFReference__Group__1__Impl"
-    // InternalDescartesQL.g:7079:1: rule__DoFReference__Group__1__Impl : ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? ) ;
-    public final void rule__DoFReference__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__0__Impl"
+    // InternalDescartesQL.g:7174:1: rule__DoubleValueVariationClause__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__DoubleValueVariationClause__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7083:1: ( ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? ) )
-            // InternalDescartesQL.g:7084:1: ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? )
+            // InternalDescartesQL.g:7178:1: ( ( ',' ) )
+            // InternalDescartesQL.g:7179:1: ( ',' )
             {
-            // InternalDescartesQL.g:7084:1: ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? )
-            // InternalDescartesQL.g:7085:1: ( rule__DoFReference__DoFAliasClauseAssignment_1 )?
+            // InternalDescartesQL.g:7179:1: ( ',' )
+            // InternalDescartesQL.g:7180:1: ','
             {
-             before(grammarAccess.getDoFReferenceAccess().getDoFAliasClauseAssignment_1()); 
-            // InternalDescartesQL.g:7086:1: ( rule__DoFReference__DoFAliasClauseAssignment_1 )?
-            int alt53=2;
-            int LA53_0 = input.LA(1);
-
-            if ( (LA53_0==94) ) {
-                alt53=1;
-            }
-            switch (alt53) {
-                case 1 :
-                    // InternalDescartesQL.g:7086:2: rule__DoFReference__DoFAliasClauseAssignment_1
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__DoFReference__DoFAliasClauseAssignment_1();
-
-                    state._fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-             after(grammarAccess.getDoFReferenceAccess().getDoFAliasClauseAssignment_1()); 
+             before(grammarAccess.getDoubleValueVariationClauseAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getDoubleValueVariationClauseAccess().getCommaKeyword_1_0()); 
 
             }
 
@@ -19941,21 +20261,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__1__Impl"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__DoFReference__Group__2"
-    // InternalDescartesQL.g:7096:1: rule__DoFReference__Group__2 : rule__DoFReference__Group__2__Impl ;
-    public final void rule__DoFReference__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__1"
+    // InternalDescartesQL.g:7193:1: rule__DoubleValueVariationClause__Group_1__1 : rule__DoubleValueVariationClause__Group_1__1__Impl ;
+    public final void rule__DoubleValueVariationClause__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7100:1: ( rule__DoFReference__Group__2__Impl )
-            // InternalDescartesQL.g:7101:2: rule__DoFReference__Group__2__Impl
+            // InternalDescartesQL.g:7197:1: ( rule__DoubleValueVariationClause__Group_1__1__Impl )
+            // InternalDescartesQL.g:7198:2: rule__DoubleValueVariationClause__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__DoFReference__Group__2__Impl();
+            rule__DoubleValueVariationClause__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -19974,46 +20294,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__2"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__1"
 
 
-    // $ANTLR start "rule__DoFReference__Group__2__Impl"
-    // InternalDescartesQL.g:7107:1: rule__DoFReference__Group__2__Impl : ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? ) ;
-    public final void rule__DoFReference__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoubleValueVariationClause__Group_1__1__Impl"
+    // InternalDescartesQL.g:7204:1: rule__DoubleValueVariationClause__Group_1__1__Impl : ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) ) ;
+    public final void rule__DoubleValueVariationClause__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7111:1: ( ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? ) )
-            // InternalDescartesQL.g:7112:1: ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? )
+            // InternalDescartesQL.g:7208:1: ( ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:7209:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:7112:1: ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? )
-            // InternalDescartesQL.g:7113:1: ( rule__DoFReference__DoFVariationClauseAssignment_2 )?
+            // InternalDescartesQL.g:7209:1: ( ( rule__DoubleValueVariationClause__ValueAssignment_1_1 ) )
+            // InternalDescartesQL.g:7210:1: ( rule__DoubleValueVariationClause__ValueAssignment_1_1 )
             {
-             before(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseAssignment_2()); 
-            // InternalDescartesQL.g:7114:1: ( rule__DoFReference__DoFVariationClauseAssignment_2 )?
-            int alt54=2;
-            int LA54_0 = input.LA(1);
-
-            if ( (LA54_0==18||LA54_0==87) ) {
-                alt54=1;
-            }
-            switch (alt54) {
-                case 1 :
-                    // InternalDescartesQL.g:7114:2: rule__DoFReference__DoFVariationClauseAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__DoFReference__DoFVariationClauseAssignment_2();
-
-                    state._fsp--;
+             before(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_1_1()); 
+            // InternalDescartesQL.g:7211:1: ( rule__DoubleValueVariationClause__ValueAssignment_1_1 )
+            // InternalDescartesQL.g:7211:2: rule__DoubleValueVariationClause__ValueAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__DoubleValueVariationClause__ValueAssignment_1_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseAssignment_2()); 
+             after(grammarAccess.getDoubleValueVariationClauseAccess().getValueAssignment_1_1()); 
 
             }
 
@@ -20032,26 +20341,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DoFReference__Group__2__Impl"
+    // $ANTLR end "rule__DoubleValueVariationClause__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__0"
-    // InternalDescartesQL.g:7130:1: rule__AggregateMetricClause__Group__0 : rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1 ;
-    public final void rule__AggregateMetricClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__0"
+    // InternalDescartesQL.g:7225:1: rule__IntervalVariationClause__Group__0 : rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1 ;
+    public final void rule__IntervalVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7134:1: ( rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1 )
-            // InternalDescartesQL.g:7135:2: rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1
+            // InternalDescartesQL.g:7229:1: ( rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1 )
+            // InternalDescartesQL.g:7230:2: rule__IntervalVariationClause__Group__0__Impl rule__IntervalVariationClause__Group__1
             {
-            pushFollow(FOLLOW_11);
-            rule__AggregateMetricClause__Group__0__Impl();
+            pushFollow(FOLLOW_42);
+            rule__IntervalVariationClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__Group__1();
+            rule__IntervalVariationClause__Group__1();
 
             state._fsp--;
 
@@ -20070,35 +20379,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__0"
+    // $ANTLR end "rule__IntervalVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__0__Impl"
-    // InternalDescartesQL.g:7142:1: rule__AggregateMetricClause__Group__0__Impl : ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) ) ;
-    public final void rule__AggregateMetricClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:7237:1: rule__IntervalVariationClause__Group__0__Impl : ( ( rule__IntervalVariationClause__StartAssignment_0 ) ) ;
+    public final void rule__IntervalVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7146:1: ( ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) ) )
-            // InternalDescartesQL.g:7147:1: ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) )
+            // InternalDescartesQL.g:7241:1: ( ( ( rule__IntervalVariationClause__StartAssignment_0 ) ) )
+            // InternalDescartesQL.g:7242:1: ( ( rule__IntervalVariationClause__StartAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7147:1: ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) )
-            // InternalDescartesQL.g:7148:1: ( rule__AggregateMetricClause__FunctionAssignment_0 )
+            // InternalDescartesQL.g:7242:1: ( ( rule__IntervalVariationClause__StartAssignment_0 ) )
+            // InternalDescartesQL.g:7243:1: ( rule__IntervalVariationClause__StartAssignment_0 )
             {
-             before(grammarAccess.getAggregateMetricClauseAccess().getFunctionAssignment_0()); 
-            // InternalDescartesQL.g:7149:1: ( rule__AggregateMetricClause__FunctionAssignment_0 )
-            // InternalDescartesQL.g:7149:2: rule__AggregateMetricClause__FunctionAssignment_0
+             before(grammarAccess.getIntervalVariationClauseAccess().getStartAssignment_0()); 
+            // InternalDescartesQL.g:7244:1: ( rule__IntervalVariationClause__StartAssignment_0 )
+            // InternalDescartesQL.g:7244:2: rule__IntervalVariationClause__StartAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__FunctionAssignment_0();
+            rule__IntervalVariationClause__StartAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getAggregateMetricClauseAccess().getFunctionAssignment_0()); 
+             after(grammarAccess.getIntervalVariationClauseAccess().getStartAssignment_0()); 
 
             }
 
@@ -20117,26 +20426,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__0__Impl"
+    // $ANTLR end "rule__IntervalVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__1"
-    // InternalDescartesQL.g:7159:1: rule__AggregateMetricClause__Group__1 : rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2 ;
-    public final void rule__AggregateMetricClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__1"
+    // InternalDescartesQL.g:7254:1: rule__IntervalVariationClause__Group__1 : rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2 ;
+    public final void rule__IntervalVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7163:1: ( rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2 )
-            // InternalDescartesQL.g:7164:2: rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2
+            // InternalDescartesQL.g:7258:1: ( rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2 )
+            // InternalDescartesQL.g:7259:2: rule__IntervalVariationClause__Group__1__Impl rule__IntervalVariationClause__Group__2
             {
-            pushFollow(FOLLOW_44);
-            rule__AggregateMetricClause__Group__1__Impl();
+            pushFollow(FOLLOW_22);
+            rule__IntervalVariationClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__Group__2();
+            rule__IntervalVariationClause__Group__2();
 
             state._fsp--;
 
@@ -20155,25 +20464,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__1"
+    // $ANTLR end "rule__IntervalVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__1__Impl"
-    // InternalDescartesQL.g:7171:1: rule__AggregateMetricClause__Group__1__Impl : ( '(' ) ;
-    public final void rule__AggregateMetricClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:7266:1: rule__IntervalVariationClause__Group__1__Impl : ( '..' ) ;
+    public final void rule__IntervalVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7175:1: ( ( '(' ) )
-            // InternalDescartesQL.g:7176:1: ( '(' )
+            // InternalDescartesQL.g:7270:1: ( ( '..' ) )
+            // InternalDescartesQL.g:7271:1: ( '..' )
             {
-            // InternalDescartesQL.g:7176:1: ( '(' )
-            // InternalDescartesQL.g:7177:1: '('
+            // InternalDescartesQL.g:7271:1: ( '..' )
+            // InternalDescartesQL.g:7272:1: '..'
             {
-             before(grammarAccess.getAggregateMetricClauseAccess().getLeftParenthesisKeyword_1()); 
-            match(input,55,FOLLOW_2); 
-             after(grammarAccess.getAggregateMetricClauseAccess().getLeftParenthesisKeyword_1()); 
+             before(grammarAccess.getIntervalVariationClauseAccess().getFullStopFullStopKeyword_1()); 
+            match(input,73,FOLLOW_2); 
+             after(grammarAccess.getIntervalVariationClauseAccess().getFullStopFullStopKeyword_1()); 
 
             }
 
@@ -20192,26 +20501,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__1__Impl"
+    // $ANTLR end "rule__IntervalVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__2"
-    // InternalDescartesQL.g:7190:1: rule__AggregateMetricClause__Group__2 : rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3 ;
-    public final void rule__AggregateMetricClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__2"
+    // InternalDescartesQL.g:7285:1: rule__IntervalVariationClause__Group__2 : rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3 ;
+    public final void rule__IntervalVariationClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7194:1: ( rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3 )
-            // InternalDescartesQL.g:7195:2: rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3
+            // InternalDescartesQL.g:7289:1: ( rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3 )
+            // InternalDescartesQL.g:7290:2: rule__IntervalVariationClause__Group__2__Impl rule__IntervalVariationClause__Group__3
             {
-            pushFollow(FOLLOW_29);
-            rule__AggregateMetricClause__Group__2__Impl();
+            pushFollow(FOLLOW_43);
+            rule__IntervalVariationClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__Group__3();
+            rule__IntervalVariationClause__Group__3();
 
             state._fsp--;
 
@@ -20230,35 +20539,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__2"
+    // $ANTLR end "rule__IntervalVariationClause__Group__2"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__2__Impl"
-    // InternalDescartesQL.g:7202:1: rule__AggregateMetricClause__Group__2__Impl : ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) ) ;
-    public final void rule__AggregateMetricClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__2__Impl"
+    // InternalDescartesQL.g:7297:1: rule__IntervalVariationClause__Group__2__Impl : ( ( rule__IntervalVariationClause__EndAssignment_2 ) ) ;
+    public final void rule__IntervalVariationClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7206:1: ( ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) ) )
-            // InternalDescartesQL.g:7207:1: ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) )
+            // InternalDescartesQL.g:7301:1: ( ( ( rule__IntervalVariationClause__EndAssignment_2 ) ) )
+            // InternalDescartesQL.g:7302:1: ( ( rule__IntervalVariationClause__EndAssignment_2 ) )
             {
-            // InternalDescartesQL.g:7207:1: ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) )
-            // InternalDescartesQL.g:7208:1: ( rule__AggregateMetricClause__MetricsAssignment_2 )
+            // InternalDescartesQL.g:7302:1: ( ( rule__IntervalVariationClause__EndAssignment_2 ) )
+            // InternalDescartesQL.g:7303:1: ( rule__IntervalVariationClause__EndAssignment_2 )
             {
-             before(grammarAccess.getAggregateMetricClauseAccess().getMetricsAssignment_2()); 
-            // InternalDescartesQL.g:7209:1: ( rule__AggregateMetricClause__MetricsAssignment_2 )
-            // InternalDescartesQL.g:7209:2: rule__AggregateMetricClause__MetricsAssignment_2
+             before(grammarAccess.getIntervalVariationClauseAccess().getEndAssignment_2()); 
+            // InternalDescartesQL.g:7304:1: ( rule__IntervalVariationClause__EndAssignment_2 )
+            // InternalDescartesQL.g:7304:2: rule__IntervalVariationClause__EndAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__MetricsAssignment_2();
+            rule__IntervalVariationClause__EndAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getAggregateMetricClauseAccess().getMetricsAssignment_2()); 
+             after(grammarAccess.getIntervalVariationClauseAccess().getEndAssignment_2()); 
 
             }
 
@@ -20277,26 +20586,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__2__Impl"
+    // $ANTLR end "rule__IntervalVariationClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__3"
-    // InternalDescartesQL.g:7219:1: rule__AggregateMetricClause__Group__3 : rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4 ;
-    public final void rule__AggregateMetricClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__3"
+    // InternalDescartesQL.g:7314:1: rule__IntervalVariationClause__Group__3 : rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4 ;
+    public final void rule__IntervalVariationClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7223:1: ( rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4 )
-            // InternalDescartesQL.g:7224:2: rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4
+            // InternalDescartesQL.g:7318:1: ( rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4 )
+            // InternalDescartesQL.g:7319:2: rule__IntervalVariationClause__Group__3__Impl rule__IntervalVariationClause__Group__4
             {
-            pushFollow(FOLLOW_36);
-            rule__AggregateMetricClause__Group__3__Impl();
+            pushFollow(FOLLOW_22);
+            rule__IntervalVariationClause__Group__3__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__Group__4();
+            rule__IntervalVariationClause__Group__4();
 
             state._fsp--;
 
@@ -20315,25 +20624,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__3"
+    // $ANTLR end "rule__IntervalVariationClause__Group__3"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__3__Impl"
-    // InternalDescartesQL.g:7231:1: rule__AggregateMetricClause__Group__3__Impl : ( ')' ) ;
-    public final void rule__AggregateMetricClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__3__Impl"
+    // InternalDescartesQL.g:7326:1: rule__IntervalVariationClause__Group__3__Impl : ( 'BY' ) ;
+    public final void rule__IntervalVariationClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7235:1: ( ( ')' ) )
-            // InternalDescartesQL.g:7236:1: ( ')' )
+            // InternalDescartesQL.g:7330:1: ( ( 'BY' ) )
+            // InternalDescartesQL.g:7331:1: ( 'BY' )
             {
-            // InternalDescartesQL.g:7236:1: ( ')' )
-            // InternalDescartesQL.g:7237:1: ')'
+            // InternalDescartesQL.g:7331:1: ( 'BY' )
+            // InternalDescartesQL.g:7332:1: 'BY'
             {
-             before(grammarAccess.getAggregateMetricClauseAccess().getRightParenthesisKeyword_3()); 
-            match(input,56,FOLLOW_2); 
-             after(grammarAccess.getAggregateMetricClauseAccess().getRightParenthesisKeyword_3()); 
+             before(grammarAccess.getIntervalVariationClauseAccess().getBYKeyword_3()); 
+            match(input,74,FOLLOW_2); 
+             after(grammarAccess.getIntervalVariationClauseAccess().getBYKeyword_3()); 
 
             }
 
@@ -20352,21 +20661,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__3__Impl"
+    // $ANTLR end "rule__IntervalVariationClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__4"
-    // InternalDescartesQL.g:7250:1: rule__AggregateMetricClause__Group__4 : rule__AggregateMetricClause__Group__4__Impl ;
-    public final void rule__AggregateMetricClause__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__4"
+    // InternalDescartesQL.g:7345:1: rule__IntervalVariationClause__Group__4 : rule__IntervalVariationClause__Group__4__Impl ;
+    public final void rule__IntervalVariationClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7254:1: ( rule__AggregateMetricClause__Group__4__Impl )
-            // InternalDescartesQL.g:7255:2: rule__AggregateMetricClause__Group__4__Impl
+            // InternalDescartesQL.g:7349:1: ( rule__IntervalVariationClause__Group__4__Impl )
+            // InternalDescartesQL.g:7350:2: rule__IntervalVariationClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__AggregateMetricClause__Group__4__Impl();
+            rule__IntervalVariationClause__Group__4__Impl();
 
             state._fsp--;
 
@@ -20385,46 +20694,120 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__4"
+    // $ANTLR end "rule__IntervalVariationClause__Group__4"
 
 
-    // $ANTLR start "rule__AggregateMetricClause__Group__4__Impl"
-    // InternalDescartesQL.g:7261:1: rule__AggregateMetricClause__Group__4__Impl : ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? ) ;
-    public final void rule__AggregateMetricClause__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__IntervalVariationClause__Group__4__Impl"
+    // InternalDescartesQL.g:7356:1: rule__IntervalVariationClause__Group__4__Impl : ( ( rule__IntervalVariationClause__StepAssignment_4 ) ) ;
+    public final void rule__IntervalVariationClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7265:1: ( ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? ) )
-            // InternalDescartesQL.g:7266:1: ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? )
+            // InternalDescartesQL.g:7360:1: ( ( ( rule__IntervalVariationClause__StepAssignment_4 ) ) )
+            // InternalDescartesQL.g:7361:1: ( ( rule__IntervalVariationClause__StepAssignment_4 ) )
             {
-            // InternalDescartesQL.g:7266:1: ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? )
-            // InternalDescartesQL.g:7267:1: ( rule__AggregateMetricClause__PropertiesAssignment_4 )?
+            // InternalDescartesQL.g:7361:1: ( ( rule__IntervalVariationClause__StepAssignment_4 ) )
+            // InternalDescartesQL.g:7362:1: ( rule__IntervalVariationClause__StepAssignment_4 )
             {
-             before(grammarAccess.getAggregateMetricClauseAccess().getPropertiesAssignment_4()); 
-            // InternalDescartesQL.g:7268:1: ( rule__AggregateMetricClause__PropertiesAssignment_4 )?
-            int alt55=2;
-            int LA55_0 = input.LA(1);
+             before(grammarAccess.getIntervalVariationClauseAccess().getStepAssignment_4()); 
+            // InternalDescartesQL.g:7363:1: ( rule__IntervalVariationClause__StepAssignment_4 )
+            // InternalDescartesQL.g:7363:2: rule__IntervalVariationClause__StepAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__IntervalVariationClause__StepAssignment_4();
+
+            state._fsp--;
+
 
-            if ( (LA55_0==87) ) {
-                alt55=1;
             }
-            switch (alt55) {
-                case 1 :
-                    // InternalDescartesQL.g:7268:2: rule__AggregateMetricClause__PropertiesAssignment_4
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__AggregateMetricClause__PropertiesAssignment_4();
 
-                    state._fsp--;
+             after(grammarAccess.getIntervalVariationClauseAccess().getStepAssignment_4()); 
 
+            }
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getAggregateMetricClauseAccess().getPropertiesAssignment_4()); 
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntervalVariationClause__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VaryingClause__Group__0"
+    // InternalDescartesQL.g:7383:1: rule__VaryingClause__Group__0 : rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1 ;
+    public final void rule__VaryingClause__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:7387:1: ( rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1 )
+            // InternalDescartesQL.g:7388:2: rule__VaryingClause__Group__0__Impl rule__VaryingClause__Group__1
+            {
+            pushFollow(FOLLOW_35);
+            rule__VaryingClause__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__VaryingClause__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VaryingClause__Group__0"
+
+
+    // $ANTLR start "rule__VaryingClause__Group__0__Impl"
+    // InternalDescartesQL.g:7395:1: rule__VaryingClause__Group__0__Impl : ( ( rule__VaryingClause__ModeAssignment_0 ) ) ;
+    public final void rule__VaryingClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:7399:1: ( ( ( rule__VaryingClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:7400:1: ( ( rule__VaryingClause__ModeAssignment_0 ) )
+            {
+            // InternalDescartesQL.g:7400:1: ( ( rule__VaryingClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:7401:1: ( rule__VaryingClause__ModeAssignment_0 )
+            {
+             before(grammarAccess.getVaryingClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:7402:1: ( rule__VaryingClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:7402:2: rule__VaryingClause__ModeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__VaryingClause__ModeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVaryingClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -20443,26 +20826,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AggregateMetricClause__Group__4__Impl"
+    // $ANTLR end "rule__VaryingClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__MetricClauses__Group__0"
-    // InternalDescartesQL.g:7288:1: rule__MetricClauses__Group__0 : rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1 ;
-    public final void rule__MetricClauses__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group__1"
+    // InternalDescartesQL.g:7412:1: rule__VaryingClause__Group__1 : rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2 ;
+    public final void rule__VaryingClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7292:1: ( rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1 )
-            // InternalDescartesQL.g:7293:2: rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1
+            // InternalDescartesQL.g:7416:1: ( rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2 )
+            // InternalDescartesQL.g:7417:2: rule__VaryingClause__Group__1__Impl rule__VaryingClause__Group__2
             {
-            pushFollow(FOLLOW_8);
-            rule__MetricClauses__Group__0__Impl();
+            pushFollow(FOLLOW_11);
+            rule__VaryingClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__Group__1();
+            rule__VaryingClause__Group__2();
 
             state._fsp--;
 
@@ -20481,35 +20864,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group__0"
+    // $ANTLR end "rule__VaryingClause__Group__1"
 
 
-    // $ANTLR start "rule__MetricClauses__Group__0__Impl"
-    // InternalDescartesQL.g:7300:1: rule__MetricClauses__Group__0__Impl : ( ( rule__MetricClauses__MetricsAssignment_0 ) ) ;
-    public final void rule__MetricClauses__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group__1__Impl"
+    // InternalDescartesQL.g:7424:1: rule__VaryingClause__Group__1__Impl : ( ( rule__VaryingClause__DofReferencesAssignment_1 ) ) ;
+    public final void rule__VaryingClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7304:1: ( ( ( rule__MetricClauses__MetricsAssignment_0 ) ) )
-            // InternalDescartesQL.g:7305:1: ( ( rule__MetricClauses__MetricsAssignment_0 ) )
+            // InternalDescartesQL.g:7428:1: ( ( ( rule__VaryingClause__DofReferencesAssignment_1 ) ) )
+            // InternalDescartesQL.g:7429:1: ( ( rule__VaryingClause__DofReferencesAssignment_1 ) )
             {
-            // InternalDescartesQL.g:7305:1: ( ( rule__MetricClauses__MetricsAssignment_0 ) )
-            // InternalDescartesQL.g:7306:1: ( rule__MetricClauses__MetricsAssignment_0 )
+            // InternalDescartesQL.g:7429:1: ( ( rule__VaryingClause__DofReferencesAssignment_1 ) )
+            // InternalDescartesQL.g:7430:1: ( rule__VaryingClause__DofReferencesAssignment_1 )
             {
-             before(grammarAccess.getMetricClausesAccess().getMetricsAssignment_0()); 
-            // InternalDescartesQL.g:7307:1: ( rule__MetricClauses__MetricsAssignment_0 )
-            // InternalDescartesQL.g:7307:2: rule__MetricClauses__MetricsAssignment_0
+             before(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_1()); 
+            // InternalDescartesQL.g:7431:1: ( rule__VaryingClause__DofReferencesAssignment_1 )
+            // InternalDescartesQL.g:7431:2: rule__VaryingClause__DofReferencesAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__MetricsAssignment_0();
+            rule__VaryingClause__DofReferencesAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getMetricClausesAccess().getMetricsAssignment_0()); 
+             after(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_1()); 
 
             }
 
@@ -20528,21 +20911,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group__0__Impl"
+    // $ANTLR end "rule__VaryingClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__MetricClauses__Group__1"
-    // InternalDescartesQL.g:7317:1: rule__MetricClauses__Group__1 : rule__MetricClauses__Group__1__Impl ;
-    public final void rule__MetricClauses__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group__2"
+    // InternalDescartesQL.g:7441:1: rule__VaryingClause__Group__2 : rule__VaryingClause__Group__2__Impl ;
+    public final void rule__VaryingClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7321:1: ( rule__MetricClauses__Group__1__Impl )
-            // InternalDescartesQL.g:7322:2: rule__MetricClauses__Group__1__Impl
+            // InternalDescartesQL.g:7445:1: ( rule__VaryingClause__Group__2__Impl )
+            // InternalDescartesQL.g:7446:2: rule__VaryingClause__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__Group__1__Impl();
+            rule__VaryingClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -20561,40 +20944,40 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group__1"
+    // $ANTLR end "rule__VaryingClause__Group__2"
 
 
-    // $ANTLR start "rule__MetricClauses__Group__1__Impl"
-    // InternalDescartesQL.g:7328:1: rule__MetricClauses__Group__1__Impl : ( ( rule__MetricClauses__Group_1__0 )* ) ;
-    public final void rule__MetricClauses__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group__2__Impl"
+    // InternalDescartesQL.g:7452:1: rule__VaryingClause__Group__2__Impl : ( ( rule__VaryingClause__Group_2__0 )* ) ;
+    public final void rule__VaryingClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7332:1: ( ( ( rule__MetricClauses__Group_1__0 )* ) )
-            // InternalDescartesQL.g:7333:1: ( ( rule__MetricClauses__Group_1__0 )* )
+            // InternalDescartesQL.g:7456:1: ( ( ( rule__VaryingClause__Group_2__0 )* ) )
+            // InternalDescartesQL.g:7457:1: ( ( rule__VaryingClause__Group_2__0 )* )
             {
-            // InternalDescartesQL.g:7333:1: ( ( rule__MetricClauses__Group_1__0 )* )
-            // InternalDescartesQL.g:7334:1: ( rule__MetricClauses__Group_1__0 )*
+            // InternalDescartesQL.g:7457:1: ( ( rule__VaryingClause__Group_2__0 )* )
+            // InternalDescartesQL.g:7458:1: ( rule__VaryingClause__Group_2__0 )*
             {
-             before(grammarAccess.getMetricClausesAccess().getGroup_1()); 
-            // InternalDescartesQL.g:7335:1: ( rule__MetricClauses__Group_1__0 )*
-            loop56:
+             before(grammarAccess.getVaryingClauseAccess().getGroup_2()); 
+            // InternalDescartesQL.g:7459:1: ( rule__VaryingClause__Group_2__0 )*
+            loop59:
             do {
-                int alt56=2;
-                int LA56_0 = input.LA(1);
+                int alt59=2;
+                int LA59_0 = input.LA(1);
 
-                if ( (LA56_0==53) ) {
-                    alt56=1;
+                if ( (LA59_0==57) ) {
+                    alt59=1;
                 }
 
 
-                switch (alt56) {
+                switch (alt59) {
             	case 1 :
-            	    // InternalDescartesQL.g:7335:2: rule__MetricClauses__Group_1__0
+            	    // InternalDescartesQL.g:7459:2: rule__VaryingClause__Group_2__0
             	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__MetricClauses__Group_1__0();
+            	    pushFollow(FOLLOW_12);
+            	    rule__VaryingClause__Group_2__0();
 
             	    state._fsp--;
 
@@ -20603,11 +20986,11 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
             	    break;
 
             	default :
-            	    break loop56;
+            	    break loop59;
                 }
             } while (true);
 
-             after(grammarAccess.getMetricClausesAccess().getGroup_1()); 
+             after(grammarAccess.getVaryingClauseAccess().getGroup_2()); 
 
             }
 
@@ -20626,26 +21009,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group__1__Impl"
+    // $ANTLR end "rule__VaryingClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__MetricClauses__Group_1__0"
-    // InternalDescartesQL.g:7349:1: rule__MetricClauses__Group_1__0 : rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1 ;
-    public final void rule__MetricClauses__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group_2__0"
+    // InternalDescartesQL.g:7475:1: rule__VaryingClause__Group_2__0 : rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1 ;
+    public final void rule__VaryingClause__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7353:1: ( rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1 )
-            // InternalDescartesQL.g:7354:2: rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1
+            // InternalDescartesQL.g:7479:1: ( rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1 )
+            // InternalDescartesQL.g:7480:2: rule__VaryingClause__Group_2__0__Impl rule__VaryingClause__Group_2__1
             {
-            pushFollow(FOLLOW_7);
-            rule__MetricClauses__Group_1__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__VaryingClause__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__Group_1__1();
+            rule__VaryingClause__Group_2__1();
 
             state._fsp--;
 
@@ -20664,25 +21047,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group_1__0"
+    // $ANTLR end "rule__VaryingClause__Group_2__0"
 
 
-    // $ANTLR start "rule__MetricClauses__Group_1__0__Impl"
-    // InternalDescartesQL.g:7361:1: rule__MetricClauses__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__MetricClauses__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group_2__0__Impl"
+    // InternalDescartesQL.g:7487:1: rule__VaryingClause__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__VaryingClause__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7365:1: ( ( ',' ) )
-            // InternalDescartesQL.g:7366:1: ( ',' )
+            // InternalDescartesQL.g:7491:1: ( ( ',' ) )
+            // InternalDescartesQL.g:7492:1: ( ',' )
             {
-            // InternalDescartesQL.g:7366:1: ( ',' )
-            // InternalDescartesQL.g:7367:1: ','
+            // InternalDescartesQL.g:7492:1: ( ',' )
+            // InternalDescartesQL.g:7493:1: ','
             {
-             before(grammarAccess.getMetricClausesAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getMetricClausesAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getVaryingClauseAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getVaryingClauseAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -20701,21 +21084,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group_1__0__Impl"
+    // $ANTLR end "rule__VaryingClause__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__MetricClauses__Group_1__1"
-    // InternalDescartesQL.g:7380:1: rule__MetricClauses__Group_1__1 : rule__MetricClauses__Group_1__1__Impl ;
-    public final void rule__MetricClauses__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group_2__1"
+    // InternalDescartesQL.g:7506:1: rule__VaryingClause__Group_2__1 : rule__VaryingClause__Group_2__1__Impl ;
+    public final void rule__VaryingClause__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7384:1: ( rule__MetricClauses__Group_1__1__Impl )
-            // InternalDescartesQL.g:7385:2: rule__MetricClauses__Group_1__1__Impl
+            // InternalDescartesQL.g:7510:1: ( rule__VaryingClause__Group_2__1__Impl )
+            // InternalDescartesQL.g:7511:2: rule__VaryingClause__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__Group_1__1__Impl();
+            rule__VaryingClause__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -20734,35 +21117,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group_1__1"
+    // $ANTLR end "rule__VaryingClause__Group_2__1"
 
 
-    // $ANTLR start "rule__MetricClauses__Group_1__1__Impl"
-    // InternalDescartesQL.g:7391:1: rule__MetricClauses__Group_1__1__Impl : ( ( rule__MetricClauses__MetricsAssignment_1_1 ) ) ;
-    public final void rule__MetricClauses__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VaryingClause__Group_2__1__Impl"
+    // InternalDescartesQL.g:7517:1: rule__VaryingClause__Group_2__1__Impl : ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) ) ;
+    public final void rule__VaryingClause__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7395:1: ( ( ( rule__MetricClauses__MetricsAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:7396:1: ( ( rule__MetricClauses__MetricsAssignment_1_1 ) )
+            // InternalDescartesQL.g:7521:1: ( ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:7522:1: ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:7396:1: ( ( rule__MetricClauses__MetricsAssignment_1_1 ) )
-            // InternalDescartesQL.g:7397:1: ( rule__MetricClauses__MetricsAssignment_1_1 )
+            // InternalDescartesQL.g:7522:1: ( ( rule__VaryingClause__DofReferencesAssignment_2_1 ) )
+            // InternalDescartesQL.g:7523:1: ( rule__VaryingClause__DofReferencesAssignment_2_1 )
             {
-             before(grammarAccess.getMetricClausesAccess().getMetricsAssignment_1_1()); 
-            // InternalDescartesQL.g:7398:1: ( rule__MetricClauses__MetricsAssignment_1_1 )
-            // InternalDescartesQL.g:7398:2: rule__MetricClauses__MetricsAssignment_1_1
+             before(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_2_1()); 
+            // InternalDescartesQL.g:7524:1: ( rule__VaryingClause__DofReferencesAssignment_2_1 )
+            // InternalDescartesQL.g:7524:2: rule__VaryingClause__DofReferencesAssignment_2_1
             {
             pushFollow(FOLLOW_2);
-            rule__MetricClauses__MetricsAssignment_1_1();
+            rule__VaryingClause__DofReferencesAssignment_2_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getMetricClausesAccess().getMetricsAssignment_1_1()); 
+             after(grammarAccess.getVaryingClauseAccess().getDofReferencesAssignment_2_1()); 
 
             }
 
@@ -20781,26 +21164,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricClauses__Group_1__1__Impl"
+    // $ANTLR end "rule__VaryingClause__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__MetricStarClause__Group__0"
-    // InternalDescartesQL.g:7412:1: rule__MetricStarClause__Group__0 : rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1 ;
-    public final void rule__MetricStarClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__DoFReference__Group__0"
+    // InternalDescartesQL.g:7538:1: rule__DoFReference__Group__0 : rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1 ;
+    public final void rule__DoFReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7416:1: ( rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1 )
-            // InternalDescartesQL.g:7417:2: rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1
+            // InternalDescartesQL.g:7542:1: ( rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1 )
+            // InternalDescartesQL.g:7543:2: rule__DoFReference__Group__0__Impl rule__DoFReference__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__MetricStarClause__Group__0__Impl();
+            pushFollow(FOLLOW_44);
+            rule__DoFReference__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricStarClause__Group__1();
+            rule__DoFReference__Group__1();
 
             state._fsp--;
 
@@ -20819,25 +21202,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricStarClause__Group__0"
+    // $ANTLR end "rule__DoFReference__Group__0"
 
 
-    // $ANTLR start "rule__MetricStarClause__Group__0__Impl"
-    // InternalDescartesQL.g:7424:1: rule__MetricStarClause__Group__0__Impl : ( '*.' ) ;
-    public final void rule__MetricStarClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFReference__Group__0__Impl"
+    // InternalDescartesQL.g:7550:1: rule__DoFReference__Group__0__Impl : ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) ) ;
+    public final void rule__DoFReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7428:1: ( ( '*.' ) )
-            // InternalDescartesQL.g:7429:1: ( '*.' )
+            // InternalDescartesQL.g:7554:1: ( ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) ) )
+            // InternalDescartesQL.g:7555:1: ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7429:1: ( '*.' )
-            // InternalDescartesQL.g:7430:1: '*.'
+            // InternalDescartesQL.g:7555:1: ( ( rule__DoFReference__DoFIdentifierAssignment_0 ) )
+            // InternalDescartesQL.g:7556:1: ( rule__DoFReference__DoFIdentifierAssignment_0 )
             {
-             before(grammarAccess.getMetricStarClauseAccess().getAsteriskFullStopKeyword_0()); 
-            match(input,71,FOLLOW_2); 
-             after(grammarAccess.getMetricStarClauseAccess().getAsteriskFullStopKeyword_0()); 
+             before(grammarAccess.getDoFReferenceAccess().getDoFIdentifierAssignment_0()); 
+            // InternalDescartesQL.g:7557:1: ( rule__DoFReference__DoFIdentifierAssignment_0 )
+            // InternalDescartesQL.g:7557:2: rule__DoFReference__DoFIdentifierAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__DoFReference__DoFIdentifierAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDoFReferenceAccess().getDoFIdentifierAssignment_0()); 
 
             }
 
@@ -20856,21 +21249,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricStarClause__Group__0__Impl"
-
+    // $ANTLR end "rule__DoFReference__Group__0__Impl"
 
-    // $ANTLR start "rule__MetricStarClause__Group__1"
-    // InternalDescartesQL.g:7443:1: rule__MetricStarClause__Group__1 : rule__MetricStarClause__Group__1__Impl ;
-    public final void rule__MetricStarClause__Group__1() throws RecognitionException {
+
+    // $ANTLR start "rule__DoFReference__Group__1"
+    // InternalDescartesQL.g:7567:1: rule__DoFReference__Group__1 : rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2 ;
+    public final void rule__DoFReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7447:1: ( rule__MetricStarClause__Group__1__Impl )
-            // InternalDescartesQL.g:7448:2: rule__MetricStarClause__Group__1__Impl
+            // InternalDescartesQL.g:7571:1: ( rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2 )
+            // InternalDescartesQL.g:7572:2: rule__DoFReference__Group__1__Impl rule__DoFReference__Group__2
             {
+            pushFollow(FOLLOW_44);
+            rule__DoFReference__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__MetricStarClause__Group__1__Impl();
+            rule__DoFReference__Group__2();
 
             state._fsp--;
 
@@ -20889,35 +21287,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricStarClause__Group__1"
+    // $ANTLR end "rule__DoFReference__Group__1"
 
 
-    // $ANTLR start "rule__MetricStarClause__Group__1__Impl"
-    // InternalDescartesQL.g:7454:1: rule__MetricStarClause__Group__1__Impl : ( ( rule__MetricStarClause__MetricNameAssignment_1 ) ) ;
-    public final void rule__MetricStarClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFReference__Group__1__Impl"
+    // InternalDescartesQL.g:7579:1: rule__DoFReference__Group__1__Impl : ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? ) ;
+    public final void rule__DoFReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7458:1: ( ( ( rule__MetricStarClause__MetricNameAssignment_1 ) ) )
-            // InternalDescartesQL.g:7459:1: ( ( rule__MetricStarClause__MetricNameAssignment_1 ) )
+            // InternalDescartesQL.g:7583:1: ( ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? ) )
+            // InternalDescartesQL.g:7584:1: ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? )
             {
-            // InternalDescartesQL.g:7459:1: ( ( rule__MetricStarClause__MetricNameAssignment_1 ) )
-            // InternalDescartesQL.g:7460:1: ( rule__MetricStarClause__MetricNameAssignment_1 )
+            // InternalDescartesQL.g:7584:1: ( ( rule__DoFReference__DoFAliasClauseAssignment_1 )? )
+            // InternalDescartesQL.g:7585:1: ( rule__DoFReference__DoFAliasClauseAssignment_1 )?
             {
-             before(grammarAccess.getMetricStarClauseAccess().getMetricNameAssignment_1()); 
-            // InternalDescartesQL.g:7461:1: ( rule__MetricStarClause__MetricNameAssignment_1 )
-            // InternalDescartesQL.g:7461:2: rule__MetricStarClause__MetricNameAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__MetricStarClause__MetricNameAssignment_1();
+             before(grammarAccess.getDoFReferenceAccess().getDoFAliasClauseAssignment_1()); 
+            // InternalDescartesQL.g:7586:1: ( rule__DoFReference__DoFAliasClauseAssignment_1 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==98) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalDescartesQL.g:7586:2: rule__DoFReference__DoFAliasClauseAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFReference__DoFAliasClauseAssignment_1();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getMetricStarClauseAccess().getMetricNameAssignment_1()); 
+             after(grammarAccess.getDoFReferenceAccess().getDoFAliasClauseAssignment_1()); 
 
             }
 
@@ -20936,26 +21345,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricStarClause__Group__1__Impl"
+    // $ANTLR end "rule__DoFReference__Group__1__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group__0"
-    // InternalDescartesQL.g:7475:1: rule__MetricReference__Group__0 : rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1 ;
-    public final void rule__MetricReference__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__DoFReference__Group__2"
+    // InternalDescartesQL.g:7596:1: rule__DoFReference__Group__2 : rule__DoFReference__Group__2__Impl ;
+    public final void rule__DoFReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7479:1: ( rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1 )
-            // InternalDescartesQL.g:7480:2: rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1
+            // InternalDescartesQL.g:7600:1: ( rule__DoFReference__Group__2__Impl )
+            // InternalDescartesQL.g:7601:2: rule__DoFReference__Group__2__Impl
             {
-            pushFollow(FOLLOW_45);
-            rule__MetricReference__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group__1();
+            rule__DoFReference__Group__2__Impl();
 
             state._fsp--;
 
@@ -20974,35 +21378,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__0"
+    // $ANTLR end "rule__DoFReference__Group__2"
 
 
-    // $ANTLR start "rule__MetricReference__Group__0__Impl"
-    // InternalDescartesQL.g:7487:1: rule__MetricReference__Group__0__Impl : ( ( rule__MetricReference__EntityReferenceAssignment_0 ) ) ;
-    public final void rule__MetricReference__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DoFReference__Group__2__Impl"
+    // InternalDescartesQL.g:7607:1: rule__DoFReference__Group__2__Impl : ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? ) ;
+    public final void rule__DoFReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7491:1: ( ( ( rule__MetricReference__EntityReferenceAssignment_0 ) ) )
-            // InternalDescartesQL.g:7492:1: ( ( rule__MetricReference__EntityReferenceAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:7492:1: ( ( rule__MetricReference__EntityReferenceAssignment_0 ) )
-            // InternalDescartesQL.g:7493:1: ( rule__MetricReference__EntityReferenceAssignment_0 )
+            // InternalDescartesQL.g:7611:1: ( ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? ) )
+            // InternalDescartesQL.g:7612:1: ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? )
             {
-             before(grammarAccess.getMetricReferenceAccess().getEntityReferenceAssignment_0()); 
-            // InternalDescartesQL.g:7494:1: ( rule__MetricReference__EntityReferenceAssignment_0 )
-            // InternalDescartesQL.g:7494:2: rule__MetricReference__EntityReferenceAssignment_0
+            // InternalDescartesQL.g:7612:1: ( ( rule__DoFReference__DoFVariationClauseAssignment_2 )? )
+            // InternalDescartesQL.g:7613:1: ( rule__DoFReference__DoFVariationClauseAssignment_2 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__EntityReferenceAssignment_0();
+             before(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseAssignment_2()); 
+            // InternalDescartesQL.g:7614:1: ( rule__DoFReference__DoFVariationClauseAssignment_2 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA61_0==19||LA61_0==91) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // InternalDescartesQL.g:7614:2: rule__DoFReference__DoFVariationClauseAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoFReference__DoFVariationClauseAssignment_2();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getMetricReferenceAccess().getEntityReferenceAssignment_0()); 
+             after(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseAssignment_2()); 
 
             }
 
@@ -21021,26 +21436,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__0__Impl"
+    // $ANTLR end "rule__DoFReference__Group__2__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group__1"
-    // InternalDescartesQL.g:7504:1: rule__MetricReference__Group__1 : rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2 ;
-    public final void rule__MetricReference__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__0"
+    // InternalDescartesQL.g:7630:1: rule__AggregateMetricClause__Group__0 : rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1 ;
+    public final void rule__AggregateMetricClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7508:1: ( rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2 )
-            // InternalDescartesQL.g:7509:2: rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2
+            // InternalDescartesQL.g:7634:1: ( rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1 )
+            // InternalDescartesQL.g:7635:2: rule__AggregateMetricClause__Group__0__Impl rule__AggregateMetricClause__Group__1
             {
-            pushFollow(FOLLOW_45);
-            rule__MetricReference__Group__1__Impl();
+            pushFollow(FOLLOW_14);
+            rule__AggregateMetricClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group__2();
+            rule__AggregateMetricClause__Group__1();
 
             state._fsp--;
 
@@ -21059,50 +21474,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__1"
+    // $ANTLR end "rule__AggregateMetricClause__Group__0"
 
 
-    // $ANTLR start "rule__MetricReference__Group__1__Impl"
-    // InternalDescartesQL.g:7516:1: rule__MetricReference__Group__1__Impl : ( ( rule__MetricReference__Group_1__0 )? ) ;
-    public final void rule__MetricReference__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__0__Impl"
+    // InternalDescartesQL.g:7642:1: rule__AggregateMetricClause__Group__0__Impl : ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) ) ;
+    public final void rule__AggregateMetricClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7520:1: ( ( ( rule__MetricReference__Group_1__0 )? ) )
-            // InternalDescartesQL.g:7521:1: ( ( rule__MetricReference__Group_1__0 )? )
+            // InternalDescartesQL.g:7646:1: ( ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) ) )
+            // InternalDescartesQL.g:7647:1: ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7521:1: ( ( rule__MetricReference__Group_1__0 )? )
-            // InternalDescartesQL.g:7522:1: ( rule__MetricReference__Group_1__0 )?
+            // InternalDescartesQL.g:7647:1: ( ( rule__AggregateMetricClause__FunctionAssignment_0 ) )
+            // InternalDescartesQL.g:7648:1: ( rule__AggregateMetricClause__FunctionAssignment_0 )
             {
-             before(grammarAccess.getMetricReferenceAccess().getGroup_1()); 
-            // InternalDescartesQL.g:7523:1: ( rule__MetricReference__Group_1__0 )?
-            int alt57=2;
-            int LA57_0 = input.LA(1);
-
-            if ( (LA57_0==68) ) {
-                int LA57_1 = input.LA(2);
-
-                if ( ((LA57_1>=90 && LA57_1<=92)) ) {
-                    alt57=1;
-                }
-            }
-            switch (alt57) {
-                case 1 :
-                    // InternalDescartesQL.g:7523:2: rule__MetricReference__Group_1__0
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__MetricReference__Group_1__0();
-
-                    state._fsp--;
+             before(grammarAccess.getAggregateMetricClauseAccess().getFunctionAssignment_0()); 
+            // InternalDescartesQL.g:7649:1: ( rule__AggregateMetricClause__FunctionAssignment_0 )
+            // InternalDescartesQL.g:7649:2: rule__AggregateMetricClause__FunctionAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__AggregateMetricClause__FunctionAssignment_0();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getMetricReferenceAccess().getGroup_1()); 
+             after(grammarAccess.getAggregateMetricClauseAccess().getFunctionAssignment_0()); 
 
             }
 
@@ -21121,26 +21521,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__1__Impl"
+    // $ANTLR end "rule__AggregateMetricClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group__2"
-    // InternalDescartesQL.g:7533:1: rule__MetricReference__Group__2 : rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3 ;
-    public final void rule__MetricReference__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__1"
+    // InternalDescartesQL.g:7659:1: rule__AggregateMetricClause__Group__1 : rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2 ;
+    public final void rule__AggregateMetricClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7537:1: ( rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3 )
-            // InternalDescartesQL.g:7538:2: rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3
+            // InternalDescartesQL.g:7663:1: ( rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2 )
+            // InternalDescartesQL.g:7664:2: rule__AggregateMetricClause__Group__1__Impl rule__AggregateMetricClause__Group__2
             {
-            pushFollow(FOLLOW_7);
-            rule__MetricReference__Group__2__Impl();
+            pushFollow(FOLLOW_45);
+            rule__AggregateMetricClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group__3();
+            rule__AggregateMetricClause__Group__2();
 
             state._fsp--;
 
@@ -21159,35 +21559,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__2"
+    // $ANTLR end "rule__AggregateMetricClause__Group__1"
 
 
-    // $ANTLR start "rule__MetricReference__Group__2__Impl"
-    // InternalDescartesQL.g:7545:1: rule__MetricReference__Group__2__Impl : ( ( rule__MetricReference__SeparatorAssignment_2 ) ) ;
-    public final void rule__MetricReference__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__1__Impl"
+    // InternalDescartesQL.g:7671:1: rule__AggregateMetricClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__AggregateMetricClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7549:1: ( ( ( rule__MetricReference__SeparatorAssignment_2 ) ) )
-            // InternalDescartesQL.g:7550:1: ( ( rule__MetricReference__SeparatorAssignment_2 ) )
-            {
-            // InternalDescartesQL.g:7550:1: ( ( rule__MetricReference__SeparatorAssignment_2 ) )
-            // InternalDescartesQL.g:7551:1: ( rule__MetricReference__SeparatorAssignment_2 )
+            // InternalDescartesQL.g:7675:1: ( ( '(' ) )
+            // InternalDescartesQL.g:7676:1: ( '(' )
             {
-             before(grammarAccess.getMetricReferenceAccess().getSeparatorAssignment_2()); 
-            // InternalDescartesQL.g:7552:1: ( rule__MetricReference__SeparatorAssignment_2 )
-            // InternalDescartesQL.g:7552:2: rule__MetricReference__SeparatorAssignment_2
+            // InternalDescartesQL.g:7676:1: ( '(' )
+            // InternalDescartesQL.g:7677:1: '('
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__SeparatorAssignment_2();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getMetricReferenceAccess().getSeparatorAssignment_2()); 
+             before(grammarAccess.getAggregateMetricClauseAccess().getLeftParenthesisKeyword_1()); 
+            match(input,59,FOLLOW_2); 
+             after(grammarAccess.getAggregateMetricClauseAccess().getLeftParenthesisKeyword_1()); 
 
             }
 
@@ -21206,26 +21596,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__2__Impl"
+    // $ANTLR end "rule__AggregateMetricClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group__3"
-    // InternalDescartesQL.g:7562:1: rule__MetricReference__Group__3 : rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4 ;
-    public final void rule__MetricReference__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__2"
+    // InternalDescartesQL.g:7690:1: rule__AggregateMetricClause__Group__2 : rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3 ;
+    public final void rule__AggregateMetricClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7566:1: ( rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4 )
-            // InternalDescartesQL.g:7567:2: rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4
+            // InternalDescartesQL.g:7694:1: ( rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3 )
+            // InternalDescartesQL.g:7695:2: rule__AggregateMetricClause__Group__2__Impl rule__AggregateMetricClause__Group__3
             {
-            pushFollow(FOLLOW_45);
-            rule__MetricReference__Group__3__Impl();
+            pushFollow(FOLLOW_30);
+            rule__AggregateMetricClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group__4();
+            rule__AggregateMetricClause__Group__3();
 
             state._fsp--;
 
@@ -21244,35 +21634,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__3"
+    // $ANTLR end "rule__AggregateMetricClause__Group__2"
 
 
-    // $ANTLR start "rule__MetricReference__Group__3__Impl"
-    // InternalDescartesQL.g:7574:1: rule__MetricReference__Group__3__Impl : ( ( rule__MetricReference__MetricReferenceAssignment_3 ) ) ;
-    public final void rule__MetricReference__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__2__Impl"
+    // InternalDescartesQL.g:7702:1: rule__AggregateMetricClause__Group__2__Impl : ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) ) ;
+    public final void rule__AggregateMetricClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7578:1: ( ( ( rule__MetricReference__MetricReferenceAssignment_3 ) ) )
-            // InternalDescartesQL.g:7579:1: ( ( rule__MetricReference__MetricReferenceAssignment_3 ) )
+            // InternalDescartesQL.g:7706:1: ( ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) ) )
+            // InternalDescartesQL.g:7707:1: ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) )
             {
-            // InternalDescartesQL.g:7579:1: ( ( rule__MetricReference__MetricReferenceAssignment_3 ) )
-            // InternalDescartesQL.g:7580:1: ( rule__MetricReference__MetricReferenceAssignment_3 )
+            // InternalDescartesQL.g:7707:1: ( ( rule__AggregateMetricClause__MetricsAssignment_2 ) )
+            // InternalDescartesQL.g:7708:1: ( rule__AggregateMetricClause__MetricsAssignment_2 )
             {
-             before(grammarAccess.getMetricReferenceAccess().getMetricReferenceAssignment_3()); 
-            // InternalDescartesQL.g:7581:1: ( rule__MetricReference__MetricReferenceAssignment_3 )
-            // InternalDescartesQL.g:7581:2: rule__MetricReference__MetricReferenceAssignment_3
+             before(grammarAccess.getAggregateMetricClauseAccess().getMetricsAssignment_2()); 
+            // InternalDescartesQL.g:7709:1: ( rule__AggregateMetricClause__MetricsAssignment_2 )
+            // InternalDescartesQL.g:7709:2: rule__AggregateMetricClause__MetricsAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__MetricReference__MetricReferenceAssignment_3();
+            rule__AggregateMetricClause__MetricsAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getMetricReferenceAccess().getMetricReferenceAssignment_3()); 
+             after(grammarAccess.getAggregateMetricClauseAccess().getMetricsAssignment_2()); 
 
             }
 
@@ -21291,21 +21681,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__3__Impl"
+    // $ANTLR end "rule__AggregateMetricClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group__4"
-    // InternalDescartesQL.g:7591:1: rule__MetricReference__Group__4 : rule__MetricReference__Group__4__Impl ;
-    public final void rule__MetricReference__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__3"
+    // InternalDescartesQL.g:7719:1: rule__AggregateMetricClause__Group__3 : rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4 ;
+    public final void rule__AggregateMetricClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7595:1: ( rule__MetricReference__Group__4__Impl )
-            // InternalDescartesQL.g:7596:2: rule__MetricReference__Group__4__Impl
+            // InternalDescartesQL.g:7723:1: ( rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4 )
+            // InternalDescartesQL.g:7724:2: rule__AggregateMetricClause__Group__3__Impl rule__AggregateMetricClause__Group__4
             {
+            pushFollow(FOLLOW_37);
+            rule__AggregateMetricClause__Group__3__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group__4__Impl();
+            rule__AggregateMetricClause__Group__4();
 
             state._fsp--;
 
@@ -21324,46 +21719,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__4"
+    // $ANTLR end "rule__AggregateMetricClause__Group__3"
 
 
-    // $ANTLR start "rule__MetricReference__Group__4__Impl"
-    // InternalDescartesQL.g:7602:1: rule__MetricReference__Group__4__Impl : ( ( rule__MetricReference__Group_4__0 )? ) ;
-    public final void rule__MetricReference__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__3__Impl"
+    // InternalDescartesQL.g:7731:1: rule__AggregateMetricClause__Group__3__Impl : ( ')' ) ;
+    public final void rule__AggregateMetricClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7606:1: ( ( ( rule__MetricReference__Group_4__0 )? ) )
-            // InternalDescartesQL.g:7607:1: ( ( rule__MetricReference__Group_4__0 )? )
+            // InternalDescartesQL.g:7735:1: ( ( ')' ) )
+            // InternalDescartesQL.g:7736:1: ( ')' )
             {
-            // InternalDescartesQL.g:7607:1: ( ( rule__MetricReference__Group_4__0 )? )
-            // InternalDescartesQL.g:7608:1: ( rule__MetricReference__Group_4__0 )?
+            // InternalDescartesQL.g:7736:1: ( ')' )
+            // InternalDescartesQL.g:7737:1: ')'
             {
-             before(grammarAccess.getMetricReferenceAccess().getGroup_4()); 
-            // InternalDescartesQL.g:7609:1: ( rule__MetricReference__Group_4__0 )?
-            int alt58=2;
-            int LA58_0 = input.LA(1);
-
-            if ( (LA58_0==68) ) {
-                alt58=1;
-            }
-            switch (alt58) {
-                case 1 :
-                    // InternalDescartesQL.g:7609:2: rule__MetricReference__Group_4__0
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__MetricReference__Group_4__0();
-
-                    state._fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-             after(grammarAccess.getMetricReferenceAccess().getGroup_4()); 
+             before(grammarAccess.getAggregateMetricClauseAccess().getRightParenthesisKeyword_3()); 
+            match(input,60,FOLLOW_2); 
+             after(grammarAccess.getAggregateMetricClauseAccess().getRightParenthesisKeyword_3()); 
 
             }
 
@@ -21382,26 +21756,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group__4__Impl"
+    // $ANTLR end "rule__AggregateMetricClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group_1__0"
-    // InternalDescartesQL.g:7629:1: rule__MetricReference__Group_1__0 : rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1 ;
-    public final void rule__MetricReference__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__4"
+    // InternalDescartesQL.g:7750:1: rule__AggregateMetricClause__Group__4 : rule__AggregateMetricClause__Group__4__Impl ;
+    public final void rule__AggregateMetricClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7633:1: ( rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1 )
-            // InternalDescartesQL.g:7634:2: rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1
+            // InternalDescartesQL.g:7754:1: ( rule__AggregateMetricClause__Group__4__Impl )
+            // InternalDescartesQL.g:7755:2: rule__AggregateMetricClause__Group__4__Impl
             {
-            pushFollow(FOLLOW_46);
-            rule__MetricReference__Group_1__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group_1__1();
+            rule__AggregateMetricClause__Group__4__Impl();
 
             state._fsp--;
 
@@ -21420,35 +21789,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_1__0"
+    // $ANTLR end "rule__AggregateMetricClause__Group__4"
 
 
-    // $ANTLR start "rule__MetricReference__Group_1__0__Impl"
-    // InternalDescartesQL.g:7641:1: rule__MetricReference__Group_1__0__Impl : ( ( rule__MetricReference__SeperatornAssignment_1_0 ) ) ;
-    public final void rule__MetricReference__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AggregateMetricClause__Group__4__Impl"
+    // InternalDescartesQL.g:7761:1: rule__AggregateMetricClause__Group__4__Impl : ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? ) ;
+    public final void rule__AggregateMetricClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7645:1: ( ( ( rule__MetricReference__SeperatornAssignment_1_0 ) ) )
-            // InternalDescartesQL.g:7646:1: ( ( rule__MetricReference__SeperatornAssignment_1_0 ) )
-            {
-            // InternalDescartesQL.g:7646:1: ( ( rule__MetricReference__SeperatornAssignment_1_0 ) )
-            // InternalDescartesQL.g:7647:1: ( rule__MetricReference__SeperatornAssignment_1_0 )
+            // InternalDescartesQL.g:7765:1: ( ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? ) )
+            // InternalDescartesQL.g:7766:1: ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? )
             {
-             before(grammarAccess.getMetricReferenceAccess().getSeperatornAssignment_1_0()); 
-            // InternalDescartesQL.g:7648:1: ( rule__MetricReference__SeperatornAssignment_1_0 )
-            // InternalDescartesQL.g:7648:2: rule__MetricReference__SeperatornAssignment_1_0
+            // InternalDescartesQL.g:7766:1: ( ( rule__AggregateMetricClause__PropertiesAssignment_4 )? )
+            // InternalDescartesQL.g:7767:1: ( rule__AggregateMetricClause__PropertiesAssignment_4 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__SeperatornAssignment_1_0();
+             before(grammarAccess.getAggregateMetricClauseAccess().getPropertiesAssignment_4()); 
+            // InternalDescartesQL.g:7768:1: ( rule__AggregateMetricClause__PropertiesAssignment_4 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA62_0==91) ) {
+                alt62=1;
+            }
+            switch (alt62) {
+                case 1 :
+                    // InternalDescartesQL.g:7768:2: rule__AggregateMetricClause__PropertiesAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__AggregateMetricClause__PropertiesAssignment_4();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
-             after(grammarAccess.getMetricReferenceAccess().getSeperatornAssignment_1_0()); 
+             after(grammarAccess.getAggregateMetricClauseAccess().getPropertiesAssignment_4()); 
 
             }
 
@@ -21467,21 +21847,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_1__0__Impl"
+    // $ANTLR end "rule__AggregateMetricClause__Group__4__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group_1__1"
-    // InternalDescartesQL.g:7658:1: rule__MetricReference__Group_1__1 : rule__MetricReference__Group_1__1__Impl ;
-    public final void rule__MetricReference__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group__0"
+    // InternalDescartesQL.g:7788:1: rule__MetricClauses__Group__0 : rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1 ;
+    public final void rule__MetricClauses__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7662:1: ( rule__MetricReference__Group_1__1__Impl )
-            // InternalDescartesQL.g:7663:2: rule__MetricReference__Group_1__1__Impl
+            // InternalDescartesQL.g:7792:1: ( rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1 )
+            // InternalDescartesQL.g:7793:2: rule__MetricClauses__Group__0__Impl rule__MetricClauses__Group__1
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__Group_1__1__Impl();
+            pushFollow(FOLLOW_11);
+            rule__MetricClauses__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__MetricClauses__Group__1();
 
             state._fsp--;
 
@@ -21500,35 +21885,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_1__1"
+    // $ANTLR end "rule__MetricClauses__Group__0"
 
 
-    // $ANTLR start "rule__MetricReference__Group_1__1__Impl"
-    // InternalDescartesQL.g:7669:1: rule__MetricReference__Group_1__1__Impl : ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) ) ;
-    public final void rule__MetricReference__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group__0__Impl"
+    // InternalDescartesQL.g:7800:1: rule__MetricClauses__Group__0__Impl : ( ( rule__MetricClauses__MetricsAssignment_0 ) ) ;
+    public final void rule__MetricClauses__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7673:1: ( ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:7674:1: ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) )
+            // InternalDescartesQL.g:7804:1: ( ( ( rule__MetricClauses__MetricsAssignment_0 ) ) )
+            // InternalDescartesQL.g:7805:1: ( ( rule__MetricClauses__MetricsAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7674:1: ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) )
-            // InternalDescartesQL.g:7675:1: ( rule__MetricReference__NavigationClauseAssignment_1_1 )
+            // InternalDescartesQL.g:7805:1: ( ( rule__MetricClauses__MetricsAssignment_0 ) )
+            // InternalDescartesQL.g:7806:1: ( rule__MetricClauses__MetricsAssignment_0 )
             {
-             before(grammarAccess.getMetricReferenceAccess().getNavigationClauseAssignment_1_1()); 
-            // InternalDescartesQL.g:7676:1: ( rule__MetricReference__NavigationClauseAssignment_1_1 )
-            // InternalDescartesQL.g:7676:2: rule__MetricReference__NavigationClauseAssignment_1_1
+             before(grammarAccess.getMetricClausesAccess().getMetricsAssignment_0()); 
+            // InternalDescartesQL.g:7807:1: ( rule__MetricClauses__MetricsAssignment_0 )
+            // InternalDescartesQL.g:7807:2: rule__MetricClauses__MetricsAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__MetricReference__NavigationClauseAssignment_1_1();
+            rule__MetricClauses__MetricsAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getMetricReferenceAccess().getNavigationClauseAssignment_1_1()); 
+             after(grammarAccess.getMetricClausesAccess().getMetricsAssignment_0()); 
 
             }
 
@@ -21547,26 +21932,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_1__1__Impl"
+    // $ANTLR end "rule__MetricClauses__Group__0__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group_4__0"
-    // InternalDescartesQL.g:7690:1: rule__MetricReference__Group_4__0 : rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1 ;
-    public final void rule__MetricReference__Group_4__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group__1"
+    // InternalDescartesQL.g:7817:1: rule__MetricClauses__Group__1 : rule__MetricClauses__Group__1__Impl ;
+    public final void rule__MetricClauses__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7694:1: ( rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1 )
-            // InternalDescartesQL.g:7695:2: rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1
+            // InternalDescartesQL.g:7821:1: ( rule__MetricClauses__Group__1__Impl )
+            // InternalDescartesQL.g:7822:2: rule__MetricClauses__Group__1__Impl
             {
-            pushFollow(FOLLOW_7);
-            rule__MetricReference__Group_4__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group_4__1();
+            rule__MetricClauses__Group__1__Impl();
 
             state._fsp--;
 
@@ -21585,35 +21965,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_4__0"
+    // $ANTLR end "rule__MetricClauses__Group__1"
 
 
-    // $ANTLR start "rule__MetricReference__Group_4__0__Impl"
-    // InternalDescartesQL.g:7702:1: rule__MetricReference__Group_4__0__Impl : ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) ) ;
-    public final void rule__MetricReference__Group_4__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group__1__Impl"
+    // InternalDescartesQL.g:7828:1: rule__MetricClauses__Group__1__Impl : ( ( rule__MetricClauses__Group_1__0 )* ) ;
+    public final void rule__MetricClauses__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7706:1: ( ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) ) )
-            // InternalDescartesQL.g:7707:1: ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) )
-            {
-            // InternalDescartesQL.g:7707:1: ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) )
-            // InternalDescartesQL.g:7708:1: ( rule__MetricReference__SeparatorvAssignment_4_0 )
+            // InternalDescartesQL.g:7832:1: ( ( ( rule__MetricClauses__Group_1__0 )* ) )
+            // InternalDescartesQL.g:7833:1: ( ( rule__MetricClauses__Group_1__0 )* )
             {
-             before(grammarAccess.getMetricReferenceAccess().getSeparatorvAssignment_4_0()); 
-            // InternalDescartesQL.g:7709:1: ( rule__MetricReference__SeparatorvAssignment_4_0 )
-            // InternalDescartesQL.g:7709:2: rule__MetricReference__SeparatorvAssignment_4_0
+            // InternalDescartesQL.g:7833:1: ( ( rule__MetricClauses__Group_1__0 )* )
+            // InternalDescartesQL.g:7834:1: ( rule__MetricClauses__Group_1__0 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__SeparatorvAssignment_4_0();
+             before(grammarAccess.getMetricClausesAccess().getGroup_1()); 
+            // InternalDescartesQL.g:7835:1: ( rule__MetricClauses__Group_1__0 )*
+            loop63:
+            do {
+                int alt63=2;
+                int LA63_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA63_0==57) ) {
+                    alt63=1;
+                }
 
 
-            }
+                switch (alt63) {
+            	case 1 :
+            	    // InternalDescartesQL.g:7835:2: rule__MetricClauses__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__MetricClauses__Group_1__0();
 
-             after(grammarAccess.getMetricReferenceAccess().getSeparatorvAssignment_4_0()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop63;
+                }
+            } while (true);
+
+             after(grammarAccess.getMetricClausesAccess().getGroup_1()); 
 
             }
 
@@ -21632,21 +22030,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_4__0__Impl"
+    // $ANTLR end "rule__MetricClauses__Group__1__Impl"
 
 
-    // $ANTLR start "rule__MetricReference__Group_4__1"
-    // InternalDescartesQL.g:7719:1: rule__MetricReference__Group_4__1 : rule__MetricReference__Group_4__1__Impl ;
-    public final void rule__MetricReference__Group_4__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group_1__0"
+    // InternalDescartesQL.g:7849:1: rule__MetricClauses__Group_1__0 : rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1 ;
+    public final void rule__MetricClauses__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7723:1: ( rule__MetricReference__Group_4__1__Impl )
-            // InternalDescartesQL.g:7724:2: rule__MetricReference__Group_4__1__Impl
+            // InternalDescartesQL.g:7853:1: ( rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1 )
+            // InternalDescartesQL.g:7854:2: rule__MetricClauses__Group_1__0__Impl rule__MetricClauses__Group_1__1
             {
+            pushFollow(FOLLOW_10);
+            rule__MetricClauses__Group_1__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__MetricReference__Group_4__1__Impl();
+            rule__MetricClauses__Group_1__1();
 
             state._fsp--;
 
@@ -21665,35 +22068,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_4__1"
+    // $ANTLR end "rule__MetricClauses__Group_1__0"
 
 
-    // $ANTLR start "rule__MetricReference__Group_4__1__Impl"
-    // InternalDescartesQL.g:7730:1: rule__MetricReference__Group_4__1__Impl : ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) ) ;
-    public final void rule__MetricReference__Group_4__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group_1__0__Impl"
+    // InternalDescartesQL.g:7861:1: rule__MetricClauses__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__MetricClauses__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7734:1: ( ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) ) )
-            // InternalDescartesQL.g:7735:1: ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) )
+            // InternalDescartesQL.g:7865:1: ( ( ',' ) )
+            // InternalDescartesQL.g:7866:1: ( ',' )
             {
-            // InternalDescartesQL.g:7735:1: ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) )
-            // InternalDescartesQL.g:7736:1: ( rule__MetricReference__StatTypeReferenceAssignment_4_1 )
-            {
-             before(grammarAccess.getMetricReferenceAccess().getStatTypeReferenceAssignment_4_1()); 
-            // InternalDescartesQL.g:7737:1: ( rule__MetricReference__StatTypeReferenceAssignment_4_1 )
-            // InternalDescartesQL.g:7737:2: rule__MetricReference__StatTypeReferenceAssignment_4_1
+            // InternalDescartesQL.g:7866:1: ( ',' )
+            // InternalDescartesQL.g:7867:1: ','
             {
-            pushFollow(FOLLOW_2);
-            rule__MetricReference__StatTypeReferenceAssignment_4_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getMetricReferenceAccess().getStatTypeReferenceAssignment_4_1()); 
+             before(grammarAccess.getMetricClausesAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getMetricClausesAccess().getCommaKeyword_1_0()); 
 
             }
 
@@ -21712,26 +22105,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__MetricReference__Group_4__1__Impl"
+    // $ANTLR end "rule__MetricClauses__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__FindClause__Group__0"
-    // InternalDescartesQL.g:7751:1: rule__FindClause__Group__0 : rule__FindClause__Group__0__Impl rule__FindClause__Group__1 ;
-    public final void rule__FindClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group_1__1"
+    // InternalDescartesQL.g:7880:1: rule__MetricClauses__Group_1__1 : rule__MetricClauses__Group_1__1__Impl ;
+    public final void rule__MetricClauses__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7755:1: ( rule__FindClause__Group__0__Impl rule__FindClause__Group__1 )
-            // InternalDescartesQL.g:7756:2: rule__FindClause__Group__0__Impl rule__FindClause__Group__1
+            // InternalDescartesQL.g:7884:1: ( rule__MetricClauses__Group_1__1__Impl )
+            // InternalDescartesQL.g:7885:2: rule__MetricClauses__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_34);
-            rule__FindClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__FindClause__Group__1();
+            rule__MetricClauses__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -21750,35 +22138,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__0"
+    // $ANTLR end "rule__MetricClauses__Group_1__1"
 
 
-    // $ANTLR start "rule__FindClause__Group__0__Impl"
-    // InternalDescartesQL.g:7763:1: rule__FindClause__Group__0__Impl : ( ( rule__FindClause__StartAssignment_0 ) ) ;
-    public final void rule__FindClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricClauses__Group_1__1__Impl"
+    // InternalDescartesQL.g:7891:1: rule__MetricClauses__Group_1__1__Impl : ( ( rule__MetricClauses__MetricsAssignment_1_1 ) ) ;
+    public final void rule__MetricClauses__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7767:1: ( ( ( rule__FindClause__StartAssignment_0 ) ) )
-            // InternalDescartesQL.g:7768:1: ( ( rule__FindClause__StartAssignment_0 ) )
+            // InternalDescartesQL.g:7895:1: ( ( ( rule__MetricClauses__MetricsAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:7896:1: ( ( rule__MetricClauses__MetricsAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:7768:1: ( ( rule__FindClause__StartAssignment_0 ) )
-            // InternalDescartesQL.g:7769:1: ( rule__FindClause__StartAssignment_0 )
+            // InternalDescartesQL.g:7896:1: ( ( rule__MetricClauses__MetricsAssignment_1_1 ) )
+            // InternalDescartesQL.g:7897:1: ( rule__MetricClauses__MetricsAssignment_1_1 )
             {
-             before(grammarAccess.getFindClauseAccess().getStartAssignment_0()); 
-            // InternalDescartesQL.g:7770:1: ( rule__FindClause__StartAssignment_0 )
-            // InternalDescartesQL.g:7770:2: rule__FindClause__StartAssignment_0
+             before(grammarAccess.getMetricClausesAccess().getMetricsAssignment_1_1()); 
+            // InternalDescartesQL.g:7898:1: ( rule__MetricClauses__MetricsAssignment_1_1 )
+            // InternalDescartesQL.g:7898:2: rule__MetricClauses__MetricsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__FindClause__StartAssignment_0();
+            rule__MetricClauses__MetricsAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFindClauseAccess().getStartAssignment_0()); 
+             after(grammarAccess.getMetricClausesAccess().getMetricsAssignment_1_1()); 
 
             }
 
@@ -21797,26 +22185,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__0__Impl"
+    // $ANTLR end "rule__MetricClauses__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__FindClause__Group__1"
-    // InternalDescartesQL.g:7780:1: rule__FindClause__Group__1 : rule__FindClause__Group__1__Impl rule__FindClause__Group__2 ;
-    public final void rule__FindClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricStarClause__Group__0"
+    // InternalDescartesQL.g:7912:1: rule__MetricStarClause__Group__0 : rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1 ;
+    public final void rule__MetricStarClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7784:1: ( rule__FindClause__Group__1__Impl rule__FindClause__Group__2 )
-            // InternalDescartesQL.g:7785:2: rule__FindClause__Group__1__Impl rule__FindClause__Group__2
+            // InternalDescartesQL.g:7916:1: ( rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1 )
+            // InternalDescartesQL.g:7917:2: rule__MetricStarClause__Group__0__Impl rule__MetricStarClause__Group__1
             {
-            pushFollow(FOLLOW_29);
-            rule__FindClause__Group__1__Impl();
+            pushFollow(FOLLOW_10);
+            rule__MetricStarClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FindClause__Group__2();
+            rule__MetricStarClause__Group__1();
 
             state._fsp--;
 
@@ -21835,35 +22223,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__1"
+    // $ANTLR end "rule__MetricStarClause__Group__0"
 
 
-    // $ANTLR start "rule__FindClause__Group__1__Impl"
-    // InternalDescartesQL.g:7792:1: rule__FindClause__Group__1__Impl : ( ( rule__FindClause__ChildNameAssignment_1 ) ) ;
-    public final void rule__FindClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricStarClause__Group__0__Impl"
+    // InternalDescartesQL.g:7924:1: rule__MetricStarClause__Group__0__Impl : ( '*.' ) ;
+    public final void rule__MetricStarClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7796:1: ( ( ( rule__FindClause__ChildNameAssignment_1 ) ) )
-            // InternalDescartesQL.g:7797:1: ( ( rule__FindClause__ChildNameAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:7797:1: ( ( rule__FindClause__ChildNameAssignment_1 ) )
-            // InternalDescartesQL.g:7798:1: ( rule__FindClause__ChildNameAssignment_1 )
+            // InternalDescartesQL.g:7928:1: ( ( '*.' ) )
+            // InternalDescartesQL.g:7929:1: ( '*.' )
             {
-             before(grammarAccess.getFindClauseAccess().getChildNameAssignment_1()); 
-            // InternalDescartesQL.g:7799:1: ( rule__FindClause__ChildNameAssignment_1 )
-            // InternalDescartesQL.g:7799:2: rule__FindClause__ChildNameAssignment_1
+            // InternalDescartesQL.g:7929:1: ( '*.' )
+            // InternalDescartesQL.g:7930:1: '*.'
             {
-            pushFollow(FOLLOW_2);
-            rule__FindClause__ChildNameAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getFindClauseAccess().getChildNameAssignment_1()); 
+             before(grammarAccess.getMetricStarClauseAccess().getAsteriskFullStopKeyword_0()); 
+            match(input,75,FOLLOW_2); 
+             after(grammarAccess.getMetricStarClauseAccess().getAsteriskFullStopKeyword_0()); 
 
             }
 
@@ -21882,21 +22260,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__1__Impl"
+    // $ANTLR end "rule__MetricStarClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FindClause__Group__2"
-    // InternalDescartesQL.g:7809:1: rule__FindClause__Group__2 : rule__FindClause__Group__2__Impl ;
-    public final void rule__FindClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__MetricStarClause__Group__1"
+    // InternalDescartesQL.g:7943:1: rule__MetricStarClause__Group__1 : rule__MetricStarClause__Group__1__Impl ;
+    public final void rule__MetricStarClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7813:1: ( rule__FindClause__Group__2__Impl )
-            // InternalDescartesQL.g:7814:2: rule__FindClause__Group__2__Impl
+            // InternalDescartesQL.g:7947:1: ( rule__MetricStarClause__Group__1__Impl )
+            // InternalDescartesQL.g:7948:2: rule__MetricStarClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__FindClause__Group__2__Impl();
+            rule__MetricStarClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -21915,35 +22293,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__2"
+    // $ANTLR end "rule__MetricStarClause__Group__1"
 
 
-    // $ANTLR start "rule__FindClause__Group__2__Impl"
-    // InternalDescartesQL.g:7820:1: rule__FindClause__Group__2__Impl : ( ( rule__FindClause__EndAssignment_2 ) ) ;
-    public final void rule__FindClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricStarClause__Group__1__Impl"
+    // InternalDescartesQL.g:7954:1: rule__MetricStarClause__Group__1__Impl : ( ( rule__MetricStarClause__MetricNameAssignment_1 ) ) ;
+    public final void rule__MetricStarClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7824:1: ( ( ( rule__FindClause__EndAssignment_2 ) ) )
-            // InternalDescartesQL.g:7825:1: ( ( rule__FindClause__EndAssignment_2 ) )
+            // InternalDescartesQL.g:7958:1: ( ( ( rule__MetricStarClause__MetricNameAssignment_1 ) ) )
+            // InternalDescartesQL.g:7959:1: ( ( rule__MetricStarClause__MetricNameAssignment_1 ) )
             {
-            // InternalDescartesQL.g:7825:1: ( ( rule__FindClause__EndAssignment_2 ) )
-            // InternalDescartesQL.g:7826:1: ( rule__FindClause__EndAssignment_2 )
+            // InternalDescartesQL.g:7959:1: ( ( rule__MetricStarClause__MetricNameAssignment_1 ) )
+            // InternalDescartesQL.g:7960:1: ( rule__MetricStarClause__MetricNameAssignment_1 )
             {
-             before(grammarAccess.getFindClauseAccess().getEndAssignment_2()); 
-            // InternalDescartesQL.g:7827:1: ( rule__FindClause__EndAssignment_2 )
-            // InternalDescartesQL.g:7827:2: rule__FindClause__EndAssignment_2
+             before(grammarAccess.getMetricStarClauseAccess().getMetricNameAssignment_1()); 
+            // InternalDescartesQL.g:7961:1: ( rule__MetricStarClause__MetricNameAssignment_1 )
+            // InternalDescartesQL.g:7961:2: rule__MetricStarClause__MetricNameAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__FindClause__EndAssignment_2();
+            rule__MetricStarClause__MetricNameAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFindClauseAccess().getEndAssignment_2()); 
+             after(grammarAccess.getMetricStarClauseAccess().getMetricNameAssignment_1()); 
 
             }
 
@@ -21962,26 +22340,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FindClause__Group__2__Impl"
+    // $ANTLR end "rule__MetricStarClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ForClause__Group__0"
-    // InternalDescartesQL.g:7843:1: rule__ForClause__Group__0 : rule__ForClause__Group__0__Impl rule__ForClause__Group__1 ;
-    public final void rule__ForClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__0"
+    // InternalDescartesQL.g:7975:1: rule__MetricReference__Group__0 : rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1 ;
+    public final void rule__MetricReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7847:1: ( rule__ForClause__Group__0__Impl rule__ForClause__Group__1 )
-            // InternalDescartesQL.g:7848:2: rule__ForClause__Group__0__Impl rule__ForClause__Group__1
+            // InternalDescartesQL.g:7979:1: ( rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1 )
+            // InternalDescartesQL.g:7980:2: rule__MetricReference__Group__0__Impl rule__MetricReference__Group__1
             {
-            pushFollow(FOLLOW_28);
-            rule__ForClause__Group__0__Impl();
+            pushFollow(FOLLOW_46);
+            rule__MetricReference__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ForClause__Group__1();
+            rule__MetricReference__Group__1();
 
             state._fsp--;
 
@@ -22000,35 +22378,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ForClause__Group__0"
+    // $ANTLR end "rule__MetricReference__Group__0"
 
 
-    // $ANTLR start "rule__ForClause__Group__0__Impl"
-    // InternalDescartesQL.g:7855:1: rule__ForClause__Group__0__Impl : ( ( rule__ForClause__ModeAssignment_0 ) ) ;
-    public final void rule__ForClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__0__Impl"
+    // InternalDescartesQL.g:7987:1: rule__MetricReference__Group__0__Impl : ( ( rule__MetricReference__EntityReferenceAssignment_0 ) ) ;
+    public final void rule__MetricReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7859:1: ( ( ( rule__ForClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:7860:1: ( ( rule__ForClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:7991:1: ( ( ( rule__MetricReference__EntityReferenceAssignment_0 ) ) )
+            // InternalDescartesQL.g:7992:1: ( ( rule__MetricReference__EntityReferenceAssignment_0 ) )
             {
-            // InternalDescartesQL.g:7860:1: ( ( rule__ForClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:7861:1: ( rule__ForClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:7992:1: ( ( rule__MetricReference__EntityReferenceAssignment_0 ) )
+            // InternalDescartesQL.g:7993:1: ( rule__MetricReference__EntityReferenceAssignment_0 )
             {
-             before(grammarAccess.getForClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:7862:1: ( rule__ForClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:7862:2: rule__ForClause__ModeAssignment_0
+             before(grammarAccess.getMetricReferenceAccess().getEntityReferenceAssignment_0()); 
+            // InternalDescartesQL.g:7994:1: ( rule__MetricReference__EntityReferenceAssignment_0 )
+            // InternalDescartesQL.g:7994:2: rule__MetricReference__EntityReferenceAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ForClause__ModeAssignment_0();
+            rule__MetricReference__EntityReferenceAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getForClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getMetricReferenceAccess().getEntityReferenceAssignment_0()); 
 
             }
 
@@ -22047,21 +22425,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ForClause__Group__0__Impl"
+    // $ANTLR end "rule__MetricReference__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ForClause__Group__1"
-    // InternalDescartesQL.g:7872:1: rule__ForClause__Group__1 : rule__ForClause__Group__1__Impl ;
-    public final void rule__ForClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__1"
+    // InternalDescartesQL.g:8004:1: rule__MetricReference__Group__1 : rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2 ;
+    public final void rule__MetricReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7876:1: ( rule__ForClause__Group__1__Impl )
-            // InternalDescartesQL.g:7877:2: rule__ForClause__Group__1__Impl
+            // InternalDescartesQL.g:8008:1: ( rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2 )
+            // InternalDescartesQL.g:8009:2: rule__MetricReference__Group__1__Impl rule__MetricReference__Group__2
             {
+            pushFollow(FOLLOW_46);
+            rule__MetricReference__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ForClause__Group__1__Impl();
+            rule__MetricReference__Group__2();
 
             state._fsp--;
 
@@ -22080,35 +22463,50 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ForClause__Group__1"
+    // $ANTLR end "rule__MetricReference__Group__1"
 
 
-    // $ANTLR start "rule__ForClause__Group__1__Impl"
-    // InternalDescartesQL.g:7883:1: rule__ForClause__Group__1__Impl : ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) ) ;
-    public final void rule__ForClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__1__Impl"
+    // InternalDescartesQL.g:8016:1: rule__MetricReference__Group__1__Impl : ( ( rule__MetricReference__Group_1__0 )? ) ;
+    public final void rule__MetricReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7887:1: ( ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) ) )
-            // InternalDescartesQL.g:7888:1: ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) )
+            // InternalDescartesQL.g:8020:1: ( ( ( rule__MetricReference__Group_1__0 )? ) )
+            // InternalDescartesQL.g:8021:1: ( ( rule__MetricReference__Group_1__0 )? )
             {
-            // InternalDescartesQL.g:7888:1: ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) )
-            // InternalDescartesQL.g:7889:1: ( rule__ForClause__EntityReferenceClauseAssignment_1 )
+            // InternalDescartesQL.g:8021:1: ( ( rule__MetricReference__Group_1__0 )? )
+            // InternalDescartesQL.g:8022:1: ( rule__MetricReference__Group_1__0 )?
             {
-             before(grammarAccess.getForClauseAccess().getEntityReferenceClauseAssignment_1()); 
-            // InternalDescartesQL.g:7890:1: ( rule__ForClause__EntityReferenceClauseAssignment_1 )
-            // InternalDescartesQL.g:7890:2: rule__ForClause__EntityReferenceClauseAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__ForClause__EntityReferenceClauseAssignment_1();
+             before(grammarAccess.getMetricReferenceAccess().getGroup_1()); 
+            // InternalDescartesQL.g:8023:1: ( rule__MetricReference__Group_1__0 )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA64_0==72) ) {
+                int LA64_1 = input.LA(2);
+
+                if ( ((LA64_1>=94 && LA64_1<=96)) ) {
+                    alt64=1;
+                }
+            }
+            switch (alt64) {
+                case 1 :
+                    // InternalDescartesQL.g:8023:2: rule__MetricReference__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__MetricReference__Group_1__0();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
-             after(grammarAccess.getForClauseAccess().getEntityReferenceClauseAssignment_1()); 
+             after(grammarAccess.getMetricReferenceAccess().getGroup_1()); 
 
             }
 
@@ -22127,26 +22525,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ForClause__Group__1__Impl"
+    // $ANTLR end "rule__MetricReference__Group__1__Impl"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group__0"
-    // InternalDescartesQL.g:7904:1: rule__EntityReferenceClause__Group__0 : rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1 ;
-    public final void rule__EntityReferenceClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__2"
+    // InternalDescartesQL.g:8033:1: rule__MetricReference__Group__2 : rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3 ;
+    public final void rule__MetricReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7908:1: ( rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1 )
-            // InternalDescartesQL.g:7909:2: rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1
+            // InternalDescartesQL.g:8037:1: ( rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3 )
+            // InternalDescartesQL.g:8038:2: rule__MetricReference__Group__2__Impl rule__MetricReference__Group__3
             {
-            pushFollow(FOLLOW_8);
-            rule__EntityReferenceClause__Group__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__MetricReference__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__Group__1();
+            rule__MetricReference__Group__3();
 
             state._fsp--;
 
@@ -22165,35 +22563,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group__0"
+    // $ANTLR end "rule__MetricReference__Group__2"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group__0__Impl"
-    // InternalDescartesQL.g:7916:1: rule__EntityReferenceClause__Group__0__Impl : ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) ) ;
-    public final void rule__EntityReferenceClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__2__Impl"
+    // InternalDescartesQL.g:8045:1: rule__MetricReference__Group__2__Impl : ( ( rule__MetricReference__SeparatorAssignment_2 ) ) ;
+    public final void rule__MetricReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7920:1: ( ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) ) )
-            // InternalDescartesQL.g:7921:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) )
+            // InternalDescartesQL.g:8049:1: ( ( ( rule__MetricReference__SeparatorAssignment_2 ) ) )
+            // InternalDescartesQL.g:8050:1: ( ( rule__MetricReference__SeparatorAssignment_2 ) )
             {
-            // InternalDescartesQL.g:7921:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) )
-            // InternalDescartesQL.g:7922:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_0 )
+            // InternalDescartesQL.g:8050:1: ( ( rule__MetricReference__SeparatorAssignment_2 ) )
+            // InternalDescartesQL.g:8051:1: ( rule__MetricReference__SeparatorAssignment_2 )
             {
-             before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_0()); 
-            // InternalDescartesQL.g:7923:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_0 )
-            // InternalDescartesQL.g:7923:2: rule__EntityReferenceClause__EntityReferencesAssignment_0
+             before(grammarAccess.getMetricReferenceAccess().getSeparatorAssignment_2()); 
+            // InternalDescartesQL.g:8052:1: ( rule__MetricReference__SeparatorAssignment_2 )
+            // InternalDescartesQL.g:8052:2: rule__MetricReference__SeparatorAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__EntityReferencesAssignment_0();
+            rule__MetricReference__SeparatorAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_0()); 
+             after(grammarAccess.getMetricReferenceAccess().getSeparatorAssignment_2()); 
 
             }
 
@@ -22212,21 +22610,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group__0__Impl"
+    // $ANTLR end "rule__MetricReference__Group__2__Impl"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group__1"
-    // InternalDescartesQL.g:7933:1: rule__EntityReferenceClause__Group__1 : rule__EntityReferenceClause__Group__1__Impl ;
-    public final void rule__EntityReferenceClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__3"
+    // InternalDescartesQL.g:8062:1: rule__MetricReference__Group__3 : rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4 ;
+    public final void rule__MetricReference__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7937:1: ( rule__EntityReferenceClause__Group__1__Impl )
-            // InternalDescartesQL.g:7938:2: rule__EntityReferenceClause__Group__1__Impl
+            // InternalDescartesQL.g:8066:1: ( rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4 )
+            // InternalDescartesQL.g:8067:2: rule__MetricReference__Group__3__Impl rule__MetricReference__Group__4
             {
+            pushFollow(FOLLOW_46);
+            rule__MetricReference__Group__3__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__Group__1__Impl();
+            rule__MetricReference__Group__4();
 
             state._fsp--;
 
@@ -22245,53 +22648,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group__1"
+    // $ANTLR end "rule__MetricReference__Group__3"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group__1__Impl"
-    // InternalDescartesQL.g:7944:1: rule__EntityReferenceClause__Group__1__Impl : ( ( rule__EntityReferenceClause__Group_1__0 )* ) ;
-    public final void rule__EntityReferenceClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__3__Impl"
+    // InternalDescartesQL.g:8074:1: rule__MetricReference__Group__3__Impl : ( ( rule__MetricReference__MetricReferenceAssignment_3 ) ) ;
+    public final void rule__MetricReference__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7948:1: ( ( ( rule__EntityReferenceClause__Group_1__0 )* ) )
-            // InternalDescartesQL.g:7949:1: ( ( rule__EntityReferenceClause__Group_1__0 )* )
+            // InternalDescartesQL.g:8078:1: ( ( ( rule__MetricReference__MetricReferenceAssignment_3 ) ) )
+            // InternalDescartesQL.g:8079:1: ( ( rule__MetricReference__MetricReferenceAssignment_3 ) )
             {
-            // InternalDescartesQL.g:7949:1: ( ( rule__EntityReferenceClause__Group_1__0 )* )
-            // InternalDescartesQL.g:7950:1: ( rule__EntityReferenceClause__Group_1__0 )*
+            // InternalDescartesQL.g:8079:1: ( ( rule__MetricReference__MetricReferenceAssignment_3 ) )
+            // InternalDescartesQL.g:8080:1: ( rule__MetricReference__MetricReferenceAssignment_3 )
             {
-             before(grammarAccess.getEntityReferenceClauseAccess().getGroup_1()); 
-            // InternalDescartesQL.g:7951:1: ( rule__EntityReferenceClause__Group_1__0 )*
-            loop59:
-            do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
-
-                if ( (LA59_0==53) ) {
-                    alt59=1;
-                }
-
-
-                switch (alt59) {
-            	case 1 :
-            	    // InternalDescartesQL.g:7951:2: rule__EntityReferenceClause__Group_1__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__EntityReferenceClause__Group_1__0();
-
-            	    state._fsp--;
+             before(grammarAccess.getMetricReferenceAccess().getMetricReferenceAssignment_3()); 
+            // InternalDescartesQL.g:8081:1: ( rule__MetricReference__MetricReferenceAssignment_3 )
+            // InternalDescartesQL.g:8081:2: rule__MetricReference__MetricReferenceAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__MetricReference__MetricReferenceAssignment_3();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop59;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getEntityReferenceClauseAccess().getGroup_1()); 
+             after(grammarAccess.getMetricReferenceAccess().getMetricReferenceAssignment_3()); 
 
             }
 
@@ -22310,26 +22695,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group__1__Impl"
+    // $ANTLR end "rule__MetricReference__Group__3__Impl"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group_1__0"
-    // InternalDescartesQL.g:7965:1: rule__EntityReferenceClause__Group_1__0 : rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1 ;
-    public final void rule__EntityReferenceClause__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__4"
+    // InternalDescartesQL.g:8091:1: rule__MetricReference__Group__4 : rule__MetricReference__Group__4__Impl ;
+    public final void rule__MetricReference__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7969:1: ( rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1 )
-            // InternalDescartesQL.g:7970:2: rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1
+            // InternalDescartesQL.g:8095:1: ( rule__MetricReference__Group__4__Impl )
+            // InternalDescartesQL.g:8096:2: rule__MetricReference__Group__4__Impl
             {
-            pushFollow(FOLLOW_28);
-            rule__EntityReferenceClause__Group_1__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__Group_1__1();
+            rule__MetricReference__Group__4__Impl();
 
             state._fsp--;
 
@@ -22348,25 +22728,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group_1__0"
+    // $ANTLR end "rule__MetricReference__Group__4"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group_1__0__Impl"
-    // InternalDescartesQL.g:7977:1: rule__EntityReferenceClause__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__EntityReferenceClause__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group__4__Impl"
+    // InternalDescartesQL.g:8102:1: rule__MetricReference__Group__4__Impl : ( ( rule__MetricReference__Group_4__0 )? ) ;
+    public final void rule__MetricReference__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:7981:1: ( ( ',' ) )
-            // InternalDescartesQL.g:7982:1: ( ',' )
+            // InternalDescartesQL.g:8106:1: ( ( ( rule__MetricReference__Group_4__0 )? ) )
+            // InternalDescartesQL.g:8107:1: ( ( rule__MetricReference__Group_4__0 )? )
             {
-            // InternalDescartesQL.g:7982:1: ( ',' )
-            // InternalDescartesQL.g:7983:1: ','
+            // InternalDescartesQL.g:8107:1: ( ( rule__MetricReference__Group_4__0 )? )
+            // InternalDescartesQL.g:8108:1: ( rule__MetricReference__Group_4__0 )?
             {
-             before(grammarAccess.getEntityReferenceClauseAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getEntityReferenceClauseAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getMetricReferenceAccess().getGroup_4()); 
+            // InternalDescartesQL.g:8109:1: ( rule__MetricReference__Group_4__0 )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==72) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // InternalDescartesQL.g:8109:2: rule__MetricReference__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__MetricReference__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getMetricReferenceAccess().getGroup_4()); 
 
             }
 
@@ -22385,21 +22786,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group_1__0__Impl"
+    // $ANTLR end "rule__MetricReference__Group__4__Impl"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group_1__1"
-    // InternalDescartesQL.g:7996:1: rule__EntityReferenceClause__Group_1__1 : rule__EntityReferenceClause__Group_1__1__Impl ;
-    public final void rule__EntityReferenceClause__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_1__0"
+    // InternalDescartesQL.g:8129:1: rule__MetricReference__Group_1__0 : rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1 ;
+    public final void rule__MetricReference__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8000:1: ( rule__EntityReferenceClause__Group_1__1__Impl )
-            // InternalDescartesQL.g:8001:2: rule__EntityReferenceClause__Group_1__1__Impl
+            // InternalDescartesQL.g:8133:1: ( rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1 )
+            // InternalDescartesQL.g:8134:2: rule__MetricReference__Group_1__0__Impl rule__MetricReference__Group_1__1
             {
+            pushFollow(FOLLOW_47);
+            rule__MetricReference__Group_1__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__Group_1__1__Impl();
+            rule__MetricReference__Group_1__1();
 
             state._fsp--;
 
@@ -22418,35 +22824,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group_1__1"
+    // $ANTLR end "rule__MetricReference__Group_1__0"
 
 
-    // $ANTLR start "rule__EntityReferenceClause__Group_1__1__Impl"
-    // InternalDescartesQL.g:8007:1: rule__EntityReferenceClause__Group_1__1__Impl : ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) ) ;
-    public final void rule__EntityReferenceClause__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_1__0__Impl"
+    // InternalDescartesQL.g:8141:1: rule__MetricReference__Group_1__0__Impl : ( ( rule__MetricReference__SeperatornAssignment_1_0 ) ) ;
+    public final void rule__MetricReference__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8011:1: ( ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:8012:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) )
+            // InternalDescartesQL.g:8145:1: ( ( ( rule__MetricReference__SeperatornAssignment_1_0 ) ) )
+            // InternalDescartesQL.g:8146:1: ( ( rule__MetricReference__SeperatornAssignment_1_0 ) )
             {
-            // InternalDescartesQL.g:8012:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) )
-            // InternalDescartesQL.g:8013:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 )
+            // InternalDescartesQL.g:8146:1: ( ( rule__MetricReference__SeperatornAssignment_1_0 ) )
+            // InternalDescartesQL.g:8147:1: ( rule__MetricReference__SeperatornAssignment_1_0 )
             {
-             before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_1_1()); 
-            // InternalDescartesQL.g:8014:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 )
-            // InternalDescartesQL.g:8014:2: rule__EntityReferenceClause__EntityReferencesAssignment_1_1
+             before(grammarAccess.getMetricReferenceAccess().getSeperatornAssignment_1_0()); 
+            // InternalDescartesQL.g:8148:1: ( rule__MetricReference__SeperatornAssignment_1_0 )
+            // InternalDescartesQL.g:8148:2: rule__MetricReference__SeperatornAssignment_1_0
             {
             pushFollow(FOLLOW_2);
-            rule__EntityReferenceClause__EntityReferencesAssignment_1_1();
+            rule__MetricReference__SeperatornAssignment_1_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_1_1()); 
+             after(grammarAccess.getMetricReferenceAccess().getSeperatornAssignment_1_0()); 
 
             }
 
@@ -22465,26 +22871,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReferenceClause__Group_1__1__Impl"
+    // $ANTLR end "rule__MetricReference__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__EntityReference__Group__0"
-    // InternalDescartesQL.g:8028:1: rule__EntityReference__Group__0 : rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1 ;
-    public final void rule__EntityReference__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_1__1"
+    // InternalDescartesQL.g:8158:1: rule__MetricReference__Group_1__1 : rule__MetricReference__Group_1__1__Impl ;
+    public final void rule__MetricReference__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8032:1: ( rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1 )
-            // InternalDescartesQL.g:8033:2: rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1
+            // InternalDescartesQL.g:8162:1: ( rule__MetricReference__Group_1__1__Impl )
+            // InternalDescartesQL.g:8163:2: rule__MetricReference__Group_1__1__Impl
             {
-            pushFollow(FOLLOW_28);
-            rule__EntityReference__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__EntityReference__Group__1();
+            rule__MetricReference__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -22503,46 +22904,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__0"
+    // $ANTLR end "rule__MetricReference__Group_1__1"
 
 
-    // $ANTLR start "rule__EntityReference__Group__0__Impl"
-    // InternalDescartesQL.g:8040:1: rule__EntityReference__Group__0__Impl : ( ( rule__EntityReference__TypeAssignment_0 )? ) ;
-    public final void rule__EntityReference__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_1__1__Impl"
+    // InternalDescartesQL.g:8169:1: rule__MetricReference__Group_1__1__Impl : ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) ) ;
+    public final void rule__MetricReference__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8044:1: ( ( ( rule__EntityReference__TypeAssignment_0 )? ) )
-            // InternalDescartesQL.g:8045:1: ( ( rule__EntityReference__TypeAssignment_0 )? )
+            // InternalDescartesQL.g:8173:1: ( ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:8174:1: ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:8045:1: ( ( rule__EntityReference__TypeAssignment_0 )? )
-            // InternalDescartesQL.g:8046:1: ( rule__EntityReference__TypeAssignment_0 )?
+            // InternalDescartesQL.g:8174:1: ( ( rule__MetricReference__NavigationClauseAssignment_1_1 ) )
+            // InternalDescartesQL.g:8175:1: ( rule__MetricReference__NavigationClauseAssignment_1_1 )
             {
-             before(grammarAccess.getEntityReferenceAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:8047:1: ( rule__EntityReference__TypeAssignment_0 )?
-            int alt60=2;
-            int LA60_0 = input.LA(1);
-
-            if ( (LA60_0==RULE_ID) ) {
-                alt60=1;
-            }
-            switch (alt60) {
-                case 1 :
-                    // InternalDescartesQL.g:8047:2: rule__EntityReference__TypeAssignment_0
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__EntityReference__TypeAssignment_0();
-
-                    state._fsp--;
+             before(grammarAccess.getMetricReferenceAccess().getNavigationClauseAssignment_1_1()); 
+            // InternalDescartesQL.g:8176:1: ( rule__MetricReference__NavigationClauseAssignment_1_1 )
+            // InternalDescartesQL.g:8176:2: rule__MetricReference__NavigationClauseAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__MetricReference__NavigationClauseAssignment_1_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getEntityReferenceAccess().getTypeAssignment_0()); 
+             after(grammarAccess.getMetricReferenceAccess().getNavigationClauseAssignment_1_1()); 
 
             }
 
@@ -22561,26 +22951,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__0__Impl"
+    // $ANTLR end "rule__MetricReference__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__EntityReference__Group__1"
-    // InternalDescartesQL.g:8057:1: rule__EntityReference__Group__1 : rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2 ;
-    public final void rule__EntityReference__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_4__0"
+    // InternalDescartesQL.g:8190:1: rule__MetricReference__Group_4__0 : rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1 ;
+    public final void rule__MetricReference__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8061:1: ( rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2 )
-            // InternalDescartesQL.g:8062:2: rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2
+            // InternalDescartesQL.g:8194:1: ( rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1 )
+            // InternalDescartesQL.g:8195:2: rule__MetricReference__Group_4__0__Impl rule__MetricReference__Group_4__1
             {
-            pushFollow(FOLLOW_47);
-            rule__EntityReference__Group__1__Impl();
+            pushFollow(FOLLOW_10);
+            rule__MetricReference__Group_4__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__EntityReference__Group__2();
+            rule__MetricReference__Group_4__1();
 
             state._fsp--;
 
@@ -22599,35 +22989,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__1"
+    // $ANTLR end "rule__MetricReference__Group_4__0"
 
 
-    // $ANTLR start "rule__EntityReference__Group__1__Impl"
-    // InternalDescartesQL.g:8069:1: rule__EntityReference__Group__1__Impl : ( ( rule__EntityReference__IdentifierAssignment_1 ) ) ;
-    public final void rule__EntityReference__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_4__0__Impl"
+    // InternalDescartesQL.g:8202:1: rule__MetricReference__Group_4__0__Impl : ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) ) ;
+    public final void rule__MetricReference__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8073:1: ( ( ( rule__EntityReference__IdentifierAssignment_1 ) ) )
-            // InternalDescartesQL.g:8074:1: ( ( rule__EntityReference__IdentifierAssignment_1 ) )
+            // InternalDescartesQL.g:8206:1: ( ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) ) )
+            // InternalDescartesQL.g:8207:1: ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) )
             {
-            // InternalDescartesQL.g:8074:1: ( ( rule__EntityReference__IdentifierAssignment_1 ) )
-            // InternalDescartesQL.g:8075:1: ( rule__EntityReference__IdentifierAssignment_1 )
+            // InternalDescartesQL.g:8207:1: ( ( rule__MetricReference__SeparatorvAssignment_4_0 ) )
+            // InternalDescartesQL.g:8208:1: ( rule__MetricReference__SeparatorvAssignment_4_0 )
             {
-             before(grammarAccess.getEntityReferenceAccess().getIdentifierAssignment_1()); 
-            // InternalDescartesQL.g:8076:1: ( rule__EntityReference__IdentifierAssignment_1 )
-            // InternalDescartesQL.g:8076:2: rule__EntityReference__IdentifierAssignment_1
+             before(grammarAccess.getMetricReferenceAccess().getSeparatorvAssignment_4_0()); 
+            // InternalDescartesQL.g:8209:1: ( rule__MetricReference__SeparatorvAssignment_4_0 )
+            // InternalDescartesQL.g:8209:2: rule__MetricReference__SeparatorvAssignment_4_0
             {
             pushFollow(FOLLOW_2);
-            rule__EntityReference__IdentifierAssignment_1();
+            rule__MetricReference__SeparatorvAssignment_4_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getEntityReferenceAccess().getIdentifierAssignment_1()); 
+             after(grammarAccess.getMetricReferenceAccess().getSeparatorvAssignment_4_0()); 
 
             }
 
@@ -22646,21 +23036,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__1__Impl"
+    // $ANTLR end "rule__MetricReference__Group_4__0__Impl"
 
 
-    // $ANTLR start "rule__EntityReference__Group__2"
-    // InternalDescartesQL.g:8086:1: rule__EntityReference__Group__2 : rule__EntityReference__Group__2__Impl ;
-    public final void rule__EntityReference__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_4__1"
+    // InternalDescartesQL.g:8219:1: rule__MetricReference__Group_4__1 : rule__MetricReference__Group_4__1__Impl ;
+    public final void rule__MetricReference__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8090:1: ( rule__EntityReference__Group__2__Impl )
-            // InternalDescartesQL.g:8091:2: rule__EntityReference__Group__2__Impl
+            // InternalDescartesQL.g:8223:1: ( rule__MetricReference__Group_4__1__Impl )
+            // InternalDescartesQL.g:8224:2: rule__MetricReference__Group_4__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityReference__Group__2__Impl();
+            rule__MetricReference__Group_4__1__Impl();
 
             state._fsp--;
 
@@ -22679,46 +23069,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__2"
+    // $ANTLR end "rule__MetricReference__Group_4__1"
 
 
-    // $ANTLR start "rule__EntityReference__Group__2__Impl"
-    // InternalDescartesQL.g:8097:1: rule__EntityReference__Group__2__Impl : ( ( rule__EntityReference__AliasAssignment_2 )? ) ;
-    public final void rule__EntityReference__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MetricReference__Group_4__1__Impl"
+    // InternalDescartesQL.g:8230:1: rule__MetricReference__Group_4__1__Impl : ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) ) ;
+    public final void rule__MetricReference__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8101:1: ( ( ( rule__EntityReference__AliasAssignment_2 )? ) )
-            // InternalDescartesQL.g:8102:1: ( ( rule__EntityReference__AliasAssignment_2 )? )
+            // InternalDescartesQL.g:8234:1: ( ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) ) )
+            // InternalDescartesQL.g:8235:1: ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) )
             {
-            // InternalDescartesQL.g:8102:1: ( ( rule__EntityReference__AliasAssignment_2 )? )
-            // InternalDescartesQL.g:8103:1: ( rule__EntityReference__AliasAssignment_2 )?
+            // InternalDescartesQL.g:8235:1: ( ( rule__MetricReference__StatTypeReferenceAssignment_4_1 ) )
+            // InternalDescartesQL.g:8236:1: ( rule__MetricReference__StatTypeReferenceAssignment_4_1 )
             {
-             before(grammarAccess.getEntityReferenceAccess().getAliasAssignment_2()); 
-            // InternalDescartesQL.g:8104:1: ( rule__EntityReference__AliasAssignment_2 )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
-
-            if ( (LA61_0==94) ) {
-                alt61=1;
-            }
-            switch (alt61) {
-                case 1 :
-                    // InternalDescartesQL.g:8104:2: rule__EntityReference__AliasAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__EntityReference__AliasAssignment_2();
-
-                    state._fsp--;
+             before(grammarAccess.getMetricReferenceAccess().getStatTypeReferenceAssignment_4_1()); 
+            // InternalDescartesQL.g:8237:1: ( rule__MetricReference__StatTypeReferenceAssignment_4_1 )
+            // InternalDescartesQL.g:8237:2: rule__MetricReference__StatTypeReferenceAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__MetricReference__StatTypeReferenceAssignment_4_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getEntityReferenceAccess().getAliasAssignment_2()); 
+             after(grammarAccess.getMetricReferenceAccess().getStatTypeReferenceAssignment_4_1()); 
 
             }
 
@@ -22737,26 +23116,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__EntityReference__Group__2__Impl"
+    // $ANTLR end "rule__MetricReference__Group_4__1__Impl"
 
 
-    // $ANTLR start "rule__AliasClause__Group__0"
-    // InternalDescartesQL.g:8120:1: rule__AliasClause__Group__0 : rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1 ;
-    public final void rule__AliasClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__0"
+    // InternalDescartesQL.g:8251:1: rule__FindClause__Group__0 : rule__FindClause__Group__0__Impl rule__FindClause__Group__1 ;
+    public final void rule__FindClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8124:1: ( rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1 )
-            // InternalDescartesQL.g:8125:2: rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1
+            // InternalDescartesQL.g:8255:1: ( rule__FindClause__Group__0__Impl rule__FindClause__Group__1 )
+            // InternalDescartesQL.g:8256:2: rule__FindClause__Group__0__Impl rule__FindClause__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__AliasClause__Group__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__FindClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__AliasClause__Group__1();
+            rule__FindClause__Group__1();
 
             state._fsp--;
 
@@ -22775,35 +23154,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AliasClause__Group__0"
+    // $ANTLR end "rule__FindClause__Group__0"
 
 
-    // $ANTLR start "rule__AliasClause__Group__0__Impl"
-    // InternalDescartesQL.g:8132:1: rule__AliasClause__Group__0__Impl : ( ( rule__AliasClause__ModeAssignment_0 ) ) ;
-    public final void rule__AliasClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__0__Impl"
+    // InternalDescartesQL.g:8263:1: rule__FindClause__Group__0__Impl : ( ( rule__FindClause__StartAssignment_0 ) ) ;
+    public final void rule__FindClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8136:1: ( ( ( rule__AliasClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8137:1: ( ( rule__AliasClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8267:1: ( ( ( rule__FindClause__StartAssignment_0 ) ) )
+            // InternalDescartesQL.g:8268:1: ( ( rule__FindClause__StartAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8137:1: ( ( rule__AliasClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8138:1: ( rule__AliasClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8268:1: ( ( rule__FindClause__StartAssignment_0 ) )
+            // InternalDescartesQL.g:8269:1: ( rule__FindClause__StartAssignment_0 )
             {
-             before(grammarAccess.getAliasClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8139:1: ( rule__AliasClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8139:2: rule__AliasClause__ModeAssignment_0
+             before(grammarAccess.getFindClauseAccess().getStartAssignment_0()); 
+            // InternalDescartesQL.g:8270:1: ( rule__FindClause__StartAssignment_0 )
+            // InternalDescartesQL.g:8270:2: rule__FindClause__StartAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__AliasClause__ModeAssignment_0();
+            rule__FindClause__StartAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getAliasClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getFindClauseAccess().getStartAssignment_0()); 
 
             }
 
@@ -22822,21 +23201,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AliasClause__Group__0__Impl"
+    // $ANTLR end "rule__FindClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__AliasClause__Group__1"
-    // InternalDescartesQL.g:8149:1: rule__AliasClause__Group__1 : rule__AliasClause__Group__1__Impl ;
-    public final void rule__AliasClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__1"
+    // InternalDescartesQL.g:8280:1: rule__FindClause__Group__1 : rule__FindClause__Group__1__Impl rule__FindClause__Group__2 ;
+    public final void rule__FindClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8153:1: ( rule__AliasClause__Group__1__Impl )
-            // InternalDescartesQL.g:8154:2: rule__AliasClause__Group__1__Impl
+            // InternalDescartesQL.g:8284:1: ( rule__FindClause__Group__1__Impl rule__FindClause__Group__2 )
+            // InternalDescartesQL.g:8285:2: rule__FindClause__Group__1__Impl rule__FindClause__Group__2
             {
+            pushFollow(FOLLOW_30);
+            rule__FindClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__AliasClause__Group__1__Impl();
+            rule__FindClause__Group__2();
 
             state._fsp--;
 
@@ -22855,35 +23239,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AliasClause__Group__1"
+    // $ANTLR end "rule__FindClause__Group__1"
 
 
-    // $ANTLR start "rule__AliasClause__Group__1__Impl"
-    // InternalDescartesQL.g:8160:1: rule__AliasClause__Group__1__Impl : ( ( rule__AliasClause__AliasAssignment_1 ) ) ;
-    public final void rule__AliasClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__1__Impl"
+    // InternalDescartesQL.g:8292:1: rule__FindClause__Group__1__Impl : ( ( rule__FindClause__ChildNameAssignment_1 ) ) ;
+    public final void rule__FindClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8164:1: ( ( ( rule__AliasClause__AliasAssignment_1 ) ) )
-            // InternalDescartesQL.g:8165:1: ( ( rule__AliasClause__AliasAssignment_1 ) )
+            // InternalDescartesQL.g:8296:1: ( ( ( rule__FindClause__ChildNameAssignment_1 ) ) )
+            // InternalDescartesQL.g:8297:1: ( ( rule__FindClause__ChildNameAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8165:1: ( ( rule__AliasClause__AliasAssignment_1 ) )
-            // InternalDescartesQL.g:8166:1: ( rule__AliasClause__AliasAssignment_1 )
+            // InternalDescartesQL.g:8297:1: ( ( rule__FindClause__ChildNameAssignment_1 ) )
+            // InternalDescartesQL.g:8298:1: ( rule__FindClause__ChildNameAssignment_1 )
             {
-             before(grammarAccess.getAliasClauseAccess().getAliasAssignment_1()); 
-            // InternalDescartesQL.g:8167:1: ( rule__AliasClause__AliasAssignment_1 )
-            // InternalDescartesQL.g:8167:2: rule__AliasClause__AliasAssignment_1
+             before(grammarAccess.getFindClauseAccess().getChildNameAssignment_1()); 
+            // InternalDescartesQL.g:8299:1: ( rule__FindClause__ChildNameAssignment_1 )
+            // InternalDescartesQL.g:8299:2: rule__FindClause__ChildNameAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__AliasClause__AliasAssignment_1();
+            rule__FindClause__ChildNameAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getAliasClauseAccess().getAliasAssignment_1()); 
+             after(grammarAccess.getFindClauseAccess().getChildNameAssignment_1()); 
 
             }
 
@@ -22902,26 +23286,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__AliasClause__Group__1__Impl"
+    // $ANTLR end "rule__FindClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__UsingClause__Group__0"
-    // InternalDescartesQL.g:8181:1: rule__UsingClause__Group__0 : rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1 ;
-    public final void rule__UsingClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__2"
+    // InternalDescartesQL.g:8309:1: rule__FindClause__Group__2 : rule__FindClause__Group__2__Impl ;
+    public final void rule__FindClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8185:1: ( rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1 )
-            // InternalDescartesQL.g:8186:2: rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1
+            // InternalDescartesQL.g:8313:1: ( rule__FindClause__Group__2__Impl )
+            // InternalDescartesQL.g:8314:2: rule__FindClause__Group__2__Impl
             {
-            pushFollow(FOLLOW_7);
-            rule__UsingClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__UsingClause__Group__1();
+            rule__FindClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -22940,35 +23319,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__UsingClause__Group__0"
+    // $ANTLR end "rule__FindClause__Group__2"
 
 
-    // $ANTLR start "rule__UsingClause__Group__0__Impl"
-    // InternalDescartesQL.g:8193:1: rule__UsingClause__Group__0__Impl : ( ( rule__UsingClause__ModeAssignment_0 ) ) ;
-    public final void rule__UsingClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FindClause__Group__2__Impl"
+    // InternalDescartesQL.g:8320:1: rule__FindClause__Group__2__Impl : ( ( rule__FindClause__EndAssignment_2 ) ) ;
+    public final void rule__FindClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8197:1: ( ( ( rule__UsingClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8198:1: ( ( rule__UsingClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8324:1: ( ( ( rule__FindClause__EndAssignment_2 ) ) )
+            // InternalDescartesQL.g:8325:1: ( ( rule__FindClause__EndAssignment_2 ) )
             {
-            // InternalDescartesQL.g:8198:1: ( ( rule__UsingClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8199:1: ( rule__UsingClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8325:1: ( ( rule__FindClause__EndAssignment_2 ) )
+            // InternalDescartesQL.g:8326:1: ( rule__FindClause__EndAssignment_2 )
             {
-             before(grammarAccess.getUsingClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8200:1: ( rule__UsingClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8200:2: rule__UsingClause__ModeAssignment_0
+             before(grammarAccess.getFindClauseAccess().getEndAssignment_2()); 
+            // InternalDescartesQL.g:8327:1: ( rule__FindClause__EndAssignment_2 )
+            // InternalDescartesQL.g:8327:2: rule__FindClause__EndAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__UsingClause__ModeAssignment_0();
+            rule__FindClause__EndAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getUsingClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getFindClauseAccess().getEndAssignment_2()); 
 
             }
 
@@ -22987,21 +23366,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__UsingClause__Group__0__Impl"
+    // $ANTLR end "rule__FindClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__UsingClause__Group__1"
-    // InternalDescartesQL.g:8210:1: rule__UsingClause__Group__1 : rule__UsingClause__Group__1__Impl ;
-    public final void rule__UsingClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ForClause__Group__0"
+    // InternalDescartesQL.g:8343:1: rule__ForClause__Group__0 : rule__ForClause__Group__0__Impl rule__ForClause__Group__1 ;
+    public final void rule__ForClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8214:1: ( rule__UsingClause__Group__1__Impl )
-            // InternalDescartesQL.g:8215:2: rule__UsingClause__Group__1__Impl
+            // InternalDescartesQL.g:8347:1: ( rule__ForClause__Group__0__Impl rule__ForClause__Group__1 )
+            // InternalDescartesQL.g:8348:2: rule__ForClause__Group__0__Impl rule__ForClause__Group__1
             {
+            pushFollow(FOLLOW_29);
+            rule__ForClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__UsingClause__Group__1__Impl();
+            rule__ForClause__Group__1();
 
             state._fsp--;
 
@@ -23020,35 +23404,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__UsingClause__Group__1"
+    // $ANTLR end "rule__ForClause__Group__0"
 
 
-    // $ANTLR start "rule__UsingClause__Group__1__Impl"
-    // InternalDescartesQL.g:8221:1: rule__UsingClause__Group__1__Impl : ( ( rule__UsingClause__ModelReferenceAssignment_1 ) ) ;
-    public final void rule__UsingClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ForClause__Group__0__Impl"
+    // InternalDescartesQL.g:8355:1: rule__ForClause__Group__0__Impl : ( ( rule__ForClause__ModeAssignment_0 ) ) ;
+    public final void rule__ForClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8225:1: ( ( ( rule__UsingClause__ModelReferenceAssignment_1 ) ) )
-            // InternalDescartesQL.g:8226:1: ( ( rule__UsingClause__ModelReferenceAssignment_1 ) )
+            // InternalDescartesQL.g:8359:1: ( ( ( rule__ForClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:8360:1: ( ( rule__ForClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8226:1: ( ( rule__UsingClause__ModelReferenceAssignment_1 ) )
-            // InternalDescartesQL.g:8227:1: ( rule__UsingClause__ModelReferenceAssignment_1 )
+            // InternalDescartesQL.g:8360:1: ( ( rule__ForClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8361:1: ( rule__ForClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getUsingClauseAccess().getModelReferenceAssignment_1()); 
-            // InternalDescartesQL.g:8228:1: ( rule__UsingClause__ModelReferenceAssignment_1 )
-            // InternalDescartesQL.g:8228:2: rule__UsingClause__ModelReferenceAssignment_1
+             before(grammarAccess.getForClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:8362:1: ( rule__ForClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8362:2: rule__ForClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__UsingClause__ModelReferenceAssignment_1();
+            rule__ForClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getUsingClauseAccess().getModelReferenceAssignment_1()); 
+             after(grammarAccess.getForClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -23067,26 +23451,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__UsingClause__Group__1__Impl"
+    // $ANTLR end "rule__ForClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WithClause__Group__0"
-    // InternalDescartesQL.g:8242:1: rule__WithClause__Group__0 : rule__WithClause__Group__0__Impl rule__WithClause__Group__1 ;
-    public final void rule__WithClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ForClause__Group__1"
+    // InternalDescartesQL.g:8372:1: rule__ForClause__Group__1 : rule__ForClause__Group__1__Impl ;
+    public final void rule__ForClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8246:1: ( rule__WithClause__Group__0__Impl rule__WithClause__Group__1 )
-            // InternalDescartesQL.g:8247:2: rule__WithClause__Group__0__Impl rule__WithClause__Group__1
+            // InternalDescartesQL.g:8376:1: ( rule__ForClause__Group__1__Impl )
+            // InternalDescartesQL.g:8377:2: rule__ForClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_7);
-            rule__WithClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__WithClause__Group__1();
+            rule__ForClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -23105,35 +23484,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WithClause__Group__0"
+    // $ANTLR end "rule__ForClause__Group__1"
 
 
-    // $ANTLR start "rule__WithClause__Group__0__Impl"
-    // InternalDescartesQL.g:8254:1: rule__WithClause__Group__0__Impl : ( ( rule__WithClause__ModeAssignment_0 ) ) ;
-    public final void rule__WithClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ForClause__Group__1__Impl"
+    // InternalDescartesQL.g:8383:1: rule__ForClause__Group__1__Impl : ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) ) ;
+    public final void rule__ForClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8258:1: ( ( ( rule__WithClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8259:1: ( ( rule__WithClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8387:1: ( ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:8388:1: ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8259:1: ( ( rule__WithClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8260:1: ( rule__WithClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8388:1: ( ( rule__ForClause__EntityReferenceClauseAssignment_1 ) )
+            // InternalDescartesQL.g:8389:1: ( rule__ForClause__EntityReferenceClauseAssignment_1 )
             {
-             before(grammarAccess.getWithClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8261:1: ( rule__WithClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8261:2: rule__WithClause__ModeAssignment_0
+             before(grammarAccess.getForClauseAccess().getEntityReferenceClauseAssignment_1()); 
+            // InternalDescartesQL.g:8390:1: ( rule__ForClause__EntityReferenceClauseAssignment_1 )
+            // InternalDescartesQL.g:8390:2: rule__ForClause__EntityReferenceClauseAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__WithClause__ModeAssignment_0();
+            rule__ForClause__EntityReferenceClauseAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWithClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getForClauseAccess().getEntityReferenceClauseAssignment_1()); 
 
             }
 
@@ -23152,21 +23531,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WithClause__Group__0__Impl"
+    // $ANTLR end "rule__ForClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WithClause__Group__1"
-    // InternalDescartesQL.g:8271:1: rule__WithClause__Group__1 : rule__WithClause__Group__1__Impl ;
-    public final void rule__WithClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group__0"
+    // InternalDescartesQL.g:8404:1: rule__EntityReferenceClause__Group__0 : rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1 ;
+    public final void rule__EntityReferenceClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8275:1: ( rule__WithClause__Group__1__Impl )
-            // InternalDescartesQL.g:8276:2: rule__WithClause__Group__1__Impl
+            // InternalDescartesQL.g:8408:1: ( rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1 )
+            // InternalDescartesQL.g:8409:2: rule__EntityReferenceClause__Group__0__Impl rule__EntityReferenceClause__Group__1
             {
+            pushFollow(FOLLOW_11);
+            rule__EntityReferenceClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__WithClause__Group__1__Impl();
+            rule__EntityReferenceClause__Group__1();
 
             state._fsp--;
 
@@ -23185,35 +23569,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WithClause__Group__1"
+    // $ANTLR end "rule__EntityReferenceClause__Group__0"
 
 
-    // $ANTLR start "rule__WithClause__Group__1__Impl"
-    // InternalDescartesQL.g:8282:1: rule__WithClause__Group__1__Impl : ( ( rule__WithClause__ModelReferenceAssignment_1 ) ) ;
-    public final void rule__WithClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group__0__Impl"
+    // InternalDescartesQL.g:8416:1: rule__EntityReferenceClause__Group__0__Impl : ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) ) ;
+    public final void rule__EntityReferenceClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8286:1: ( ( ( rule__WithClause__ModelReferenceAssignment_1 ) ) )
-            // InternalDescartesQL.g:8287:1: ( ( rule__WithClause__ModelReferenceAssignment_1 ) )
+            // InternalDescartesQL.g:8420:1: ( ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) ) )
+            // InternalDescartesQL.g:8421:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8287:1: ( ( rule__WithClause__ModelReferenceAssignment_1 ) )
-            // InternalDescartesQL.g:8288:1: ( rule__WithClause__ModelReferenceAssignment_1 )
+            // InternalDescartesQL.g:8421:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_0 ) )
+            // InternalDescartesQL.g:8422:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_0 )
             {
-             before(grammarAccess.getWithClauseAccess().getModelReferenceAssignment_1()); 
-            // InternalDescartesQL.g:8289:1: ( rule__WithClause__ModelReferenceAssignment_1 )
-            // InternalDescartesQL.g:8289:2: rule__WithClause__ModelReferenceAssignment_1
+             before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_0()); 
+            // InternalDescartesQL.g:8423:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_0 )
+            // InternalDescartesQL.g:8423:2: rule__EntityReferenceClause__EntityReferencesAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__WithClause__ModelReferenceAssignment_1();
+            rule__EntityReferenceClause__EntityReferencesAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWithClauseAccess().getModelReferenceAssignment_1()); 
+             after(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_0()); 
 
             }
 
@@ -23232,26 +23616,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WithClause__Group__1__Impl"
+    // $ANTLR end "rule__EntityReferenceClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__0"
-    // InternalDescartesQL.g:8303:1: rule__ModelReferenceClause__Group__0 : rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1 ;
-    public final void rule__ModelReferenceClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group__1"
+    // InternalDescartesQL.g:8433:1: rule__EntityReferenceClause__Group__1 : rule__EntityReferenceClause__Group__1__Impl ;
+    public final void rule__EntityReferenceClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8307:1: ( rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1 )
-            // InternalDescartesQL.g:8308:2: rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1
+            // InternalDescartesQL.g:8437:1: ( rule__EntityReferenceClause__Group__1__Impl )
+            // InternalDescartesQL.g:8438:2: rule__EntityReferenceClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_48);
-            rule__ModelReferenceClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ModelReferenceClause__Group__1();
+            rule__EntityReferenceClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -23270,35 +23649,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__0"
+    // $ANTLR end "rule__EntityReferenceClause__Group__1"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__0__Impl"
-    // InternalDescartesQL.g:8315:1: rule__ModelReferenceClause__Group__0__Impl : ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) ) ;
-    public final void rule__ModelReferenceClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group__1__Impl"
+    // InternalDescartesQL.g:8444:1: rule__EntityReferenceClause__Group__1__Impl : ( ( rule__EntityReferenceClause__Group_1__0 )* ) ;
+    public final void rule__EntityReferenceClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8319:1: ( ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) ) )
-            // InternalDescartesQL.g:8320:1: ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:8320:1: ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) )
-            // InternalDescartesQL.g:8321:1: ( rule__ModelReferenceClause__FamilyAssignment_0 )
+            // InternalDescartesQL.g:8448:1: ( ( ( rule__EntityReferenceClause__Group_1__0 )* ) )
+            // InternalDescartesQL.g:8449:1: ( ( rule__EntityReferenceClause__Group_1__0 )* )
             {
-             before(grammarAccess.getModelReferenceClauseAccess().getFamilyAssignment_0()); 
-            // InternalDescartesQL.g:8322:1: ( rule__ModelReferenceClause__FamilyAssignment_0 )
-            // InternalDescartesQL.g:8322:2: rule__ModelReferenceClause__FamilyAssignment_0
+            // InternalDescartesQL.g:8449:1: ( ( rule__EntityReferenceClause__Group_1__0 )* )
+            // InternalDescartesQL.g:8450:1: ( rule__EntityReferenceClause__Group_1__0 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__ModelReferenceClause__FamilyAssignment_0();
+             before(grammarAccess.getEntityReferenceClauseAccess().getGroup_1()); 
+            // InternalDescartesQL.g:8451:1: ( rule__EntityReferenceClause__Group_1__0 )*
+            loop66:
+            do {
+                int alt66=2;
+                int LA66_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA66_0==57) ) {
+                    alt66=1;
+                }
 
 
-            }
+                switch (alt66) {
+            	case 1 :
+            	    // InternalDescartesQL.g:8451:2: rule__EntityReferenceClause__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__EntityReferenceClause__Group_1__0();
 
-             after(grammarAccess.getModelReferenceClauseAccess().getFamilyAssignment_0()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop66;
+                }
+            } while (true);
+
+             after(grammarAccess.getEntityReferenceClauseAccess().getGroup_1()); 
 
             }
 
@@ -23317,26 +23714,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__0__Impl"
+    // $ANTLR end "rule__EntityReferenceClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__1"
-    // InternalDescartesQL.g:8332:1: rule__ModelReferenceClause__Group__1 : rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2 ;
-    public final void rule__ModelReferenceClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group_1__0"
+    // InternalDescartesQL.g:8465:1: rule__EntityReferenceClause__Group_1__0 : rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1 ;
+    public final void rule__EntityReferenceClause__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8336:1: ( rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2 )
-            // InternalDescartesQL.g:8337:2: rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2
+            // InternalDescartesQL.g:8469:1: ( rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1 )
+            // InternalDescartesQL.g:8470:2: rule__EntityReferenceClause__Group_1__0__Impl rule__EntityReferenceClause__Group_1__1
             {
-            pushFollow(FOLLOW_34);
-            rule__ModelReferenceClause__Group__1__Impl();
+            pushFollow(FOLLOW_29);
+            rule__EntityReferenceClause__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ModelReferenceClause__Group__2();
+            rule__EntityReferenceClause__Group_1__1();
 
             state._fsp--;
 
@@ -23355,25 +23752,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__1"
+    // $ANTLR end "rule__EntityReferenceClause__Group_1__0"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__1__Impl"
-    // InternalDescartesQL.g:8344:1: rule__ModelReferenceClause__Group__1__Impl : ( '@' ) ;
-    public final void rule__ModelReferenceClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group_1__0__Impl"
+    // InternalDescartesQL.g:8477:1: rule__EntityReferenceClause__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__EntityReferenceClause__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8348:1: ( ( '@' ) )
-            // InternalDescartesQL.g:8349:1: ( '@' )
+            // InternalDescartesQL.g:8481:1: ( ( ',' ) )
+            // InternalDescartesQL.g:8482:1: ( ',' )
             {
-            // InternalDescartesQL.g:8349:1: ( '@' )
-            // InternalDescartesQL.g:8350:1: '@'
+            // InternalDescartesQL.g:8482:1: ( ',' )
+            // InternalDescartesQL.g:8483:1: ','
             {
-             before(grammarAccess.getModelReferenceClauseAccess().getCommercialAtKeyword_1()); 
-            match(input,72,FOLLOW_2); 
-             after(grammarAccess.getModelReferenceClauseAccess().getCommercialAtKeyword_1()); 
+             before(grammarAccess.getEntityReferenceClauseAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getEntityReferenceClauseAccess().getCommaKeyword_1_0()); 
 
             }
 
@@ -23392,21 +23789,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__1__Impl"
+    // $ANTLR end "rule__EntityReferenceClause__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__2"
-    // InternalDescartesQL.g:8363:1: rule__ModelReferenceClause__Group__2 : rule__ModelReferenceClause__Group__2__Impl ;
-    public final void rule__ModelReferenceClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group_1__1"
+    // InternalDescartesQL.g:8496:1: rule__EntityReferenceClause__Group_1__1 : rule__EntityReferenceClause__Group_1__1__Impl ;
+    public final void rule__EntityReferenceClause__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8367:1: ( rule__ModelReferenceClause__Group__2__Impl )
-            // InternalDescartesQL.g:8368:2: rule__ModelReferenceClause__Group__2__Impl
+            // InternalDescartesQL.g:8500:1: ( rule__EntityReferenceClause__Group_1__1__Impl )
+            // InternalDescartesQL.g:8501:2: rule__EntityReferenceClause__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ModelReferenceClause__Group__2__Impl();
+            rule__EntityReferenceClause__Group_1__1__Impl();
 
             state._fsp--;
 
@@ -23425,35 +23822,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__2"
+    // $ANTLR end "rule__EntityReferenceClause__Group_1__1"
 
 
-    // $ANTLR start "rule__ModelReferenceClause__Group__2__Impl"
-    // InternalDescartesQL.g:8374:1: rule__ModelReferenceClause__Group__2__Impl : ( ( rule__ModelReferenceClause__ModelAssignment_2 ) ) ;
-    public final void rule__ModelReferenceClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReferenceClause__Group_1__1__Impl"
+    // InternalDescartesQL.g:8507:1: rule__EntityReferenceClause__Group_1__1__Impl : ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) ) ;
+    public final void rule__EntityReferenceClause__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8378:1: ( ( ( rule__ModelReferenceClause__ModelAssignment_2 ) ) )
-            // InternalDescartesQL.g:8379:1: ( ( rule__ModelReferenceClause__ModelAssignment_2 ) )
+            // InternalDescartesQL.g:8511:1: ( ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:8512:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:8379:1: ( ( rule__ModelReferenceClause__ModelAssignment_2 ) )
-            // InternalDescartesQL.g:8380:1: ( rule__ModelReferenceClause__ModelAssignment_2 )
+            // InternalDescartesQL.g:8512:1: ( ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 ) )
+            // InternalDescartesQL.g:8513:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 )
             {
-             before(grammarAccess.getModelReferenceClauseAccess().getModelAssignment_2()); 
-            // InternalDescartesQL.g:8381:1: ( rule__ModelReferenceClause__ModelAssignment_2 )
-            // InternalDescartesQL.g:8381:2: rule__ModelReferenceClause__ModelAssignment_2
+             before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_1_1()); 
+            // InternalDescartesQL.g:8514:1: ( rule__EntityReferenceClause__EntityReferencesAssignment_1_1 )
+            // InternalDescartesQL.g:8514:2: rule__EntityReferenceClause__EntityReferencesAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__ModelReferenceClause__ModelAssignment_2();
+            rule__EntityReferenceClause__EntityReferencesAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getModelReferenceClauseAccess().getModelAssignment_2()); 
+             after(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesAssignment_1_1()); 
 
             }
 
@@ -23472,26 +23869,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ModelReferenceClause__Group__2__Impl"
+    // $ANTLR end "rule__EntityReferenceClause__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__FilterClause__Group__0"
-    // InternalDescartesQL.g:8397:1: rule__FilterClause__Group__0 : rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1 ;
-    public final void rule__FilterClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__EntityReference__Group__0"
+    // InternalDescartesQL.g:8528:1: rule__EntityReference__Group__0 : rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1 ;
+    public final void rule__EntityReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8401:1: ( rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1 )
-            // InternalDescartesQL.g:8402:2: rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1
+            // InternalDescartesQL.g:8532:1: ( rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1 )
+            // InternalDescartesQL.g:8533:2: rule__EntityReference__Group__0__Impl rule__EntityReference__Group__1
             {
-            pushFollow(FOLLOW_49);
-            rule__FilterClause__Group__0__Impl();
+            pushFollow(FOLLOW_29);
+            rule__EntityReference__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterClause__Group__1();
+            rule__EntityReference__Group__1();
 
             state._fsp--;
 
@@ -23510,35 +23907,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__0"
+    // $ANTLR end "rule__EntityReference__Group__0"
 
 
-    // $ANTLR start "rule__FilterClause__Group__0__Impl"
-    // InternalDescartesQL.g:8409:1: rule__FilterClause__Group__0__Impl : ( ( rule__FilterClause__ModeAssignment_0 ) ) ;
-    public final void rule__FilterClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReference__Group__0__Impl"
+    // InternalDescartesQL.g:8540:1: rule__EntityReference__Group__0__Impl : ( ( rule__EntityReference__TypeAssignment_0 )? ) ;
+    public final void rule__EntityReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8413:1: ( ( ( rule__FilterClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8414:1: ( ( rule__FilterClause__ModeAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:8414:1: ( ( rule__FilterClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8415:1: ( rule__FilterClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8544:1: ( ( ( rule__EntityReference__TypeAssignment_0 )? ) )
+            // InternalDescartesQL.g:8545:1: ( ( rule__EntityReference__TypeAssignment_0 )? )
             {
-             before(grammarAccess.getFilterClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8416:1: ( rule__FilterClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8416:2: rule__FilterClause__ModeAssignment_0
+            // InternalDescartesQL.g:8545:1: ( ( rule__EntityReference__TypeAssignment_0 )? )
+            // InternalDescartesQL.g:8546:1: ( rule__EntityReference__TypeAssignment_0 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__FilterClause__ModeAssignment_0();
+             before(grammarAccess.getEntityReferenceAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:8547:1: ( rule__EntityReference__TypeAssignment_0 )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA67_0==RULE_ID) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalDescartesQL.g:8547:2: rule__EntityReference__TypeAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityReference__TypeAssignment_0();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getFilterClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getEntityReferenceAccess().getTypeAssignment_0()); 
 
             }
 
@@ -23557,26 +23965,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__0__Impl"
+    // $ANTLR end "rule__EntityReference__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilterClause__Group__1"
-    // InternalDescartesQL.g:8426:1: rule__FilterClause__Group__1 : rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2 ;
-    public final void rule__FilterClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityReference__Group__1"
+    // InternalDescartesQL.g:8557:1: rule__EntityReference__Group__1 : rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2 ;
+    public final void rule__EntityReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8430:1: ( rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2 )
-            // InternalDescartesQL.g:8431:2: rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2
+            // InternalDescartesQL.g:8561:1: ( rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2 )
+            // InternalDescartesQL.g:8562:2: rule__EntityReference__Group__1__Impl rule__EntityReference__Group__2
             {
-            pushFollow(FOLLOW_50);
-            rule__FilterClause__Group__1__Impl();
+            pushFollow(FOLLOW_48);
+            rule__EntityReference__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterClause__Group__2();
+            rule__EntityReference__Group__2();
 
             state._fsp--;
 
@@ -23595,35 +24003,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__1"
-
+    // $ANTLR end "rule__EntityReference__Group__1"
 
-    // $ANTLR start "rule__FilterClause__Group__1__Impl"
-    // InternalDescartesQL.g:8438:1: rule__FilterClause__Group__1__Impl : ( ( rule__FilterClause__FilterConditionsAssignment_1 ) ) ;
-    public final void rule__FilterClause__Group__1__Impl() throws RecognitionException {
+
+    // $ANTLR start "rule__EntityReference__Group__1__Impl"
+    // InternalDescartesQL.g:8569:1: rule__EntityReference__Group__1__Impl : ( ( rule__EntityReference__IdentifierAssignment_1 ) ) ;
+    public final void rule__EntityReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8442:1: ( ( ( rule__FilterClause__FilterConditionsAssignment_1 ) ) )
-            // InternalDescartesQL.g:8443:1: ( ( rule__FilterClause__FilterConditionsAssignment_1 ) )
+            // InternalDescartesQL.g:8573:1: ( ( ( rule__EntityReference__IdentifierAssignment_1 ) ) )
+            // InternalDescartesQL.g:8574:1: ( ( rule__EntityReference__IdentifierAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8443:1: ( ( rule__FilterClause__FilterConditionsAssignment_1 ) )
-            // InternalDescartesQL.g:8444:1: ( rule__FilterClause__FilterConditionsAssignment_1 )
+            // InternalDescartesQL.g:8574:1: ( ( rule__EntityReference__IdentifierAssignment_1 ) )
+            // InternalDescartesQL.g:8575:1: ( rule__EntityReference__IdentifierAssignment_1 )
             {
-             before(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_1()); 
-            // InternalDescartesQL.g:8445:1: ( rule__FilterClause__FilterConditionsAssignment_1 )
-            // InternalDescartesQL.g:8445:2: rule__FilterClause__FilterConditionsAssignment_1
+             before(grammarAccess.getEntityReferenceAccess().getIdentifierAssignment_1()); 
+            // InternalDescartesQL.g:8576:1: ( rule__EntityReference__IdentifierAssignment_1 )
+            // InternalDescartesQL.g:8576:2: rule__EntityReference__IdentifierAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__FilterClause__FilterConditionsAssignment_1();
+            rule__EntityReference__IdentifierAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_1()); 
+             after(grammarAccess.getEntityReferenceAccess().getIdentifierAssignment_1()); 
 
             }
 
@@ -23642,21 +24050,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__1__Impl"
+    // $ANTLR end "rule__EntityReference__Group__1__Impl"
 
 
-    // $ANTLR start "rule__FilterClause__Group__2"
-    // InternalDescartesQL.g:8455:1: rule__FilterClause__Group__2 : rule__FilterClause__Group__2__Impl ;
-    public final void rule__FilterClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__EntityReference__Group__2"
+    // InternalDescartesQL.g:8586:1: rule__EntityReference__Group__2 : rule__EntityReference__Group__2__Impl ;
+    public final void rule__EntityReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8459:1: ( rule__FilterClause__Group__2__Impl )
-            // InternalDescartesQL.g:8460:2: rule__FilterClause__Group__2__Impl
+            // InternalDescartesQL.g:8590:1: ( rule__EntityReference__Group__2__Impl )
+            // InternalDescartesQL.g:8591:2: rule__EntityReference__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__FilterClause__Group__2__Impl();
+            rule__EntityReference__Group__2__Impl();
 
             state._fsp--;
 
@@ -23675,53 +24083,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__2"
+    // $ANTLR end "rule__EntityReference__Group__2"
 
 
-    // $ANTLR start "rule__FilterClause__Group__2__Impl"
-    // InternalDescartesQL.g:8466:1: rule__FilterClause__Group__2__Impl : ( ( rule__FilterClause__Group_2__0 )* ) ;
-    public final void rule__FilterClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityReference__Group__2__Impl"
+    // InternalDescartesQL.g:8597:1: rule__EntityReference__Group__2__Impl : ( ( rule__EntityReference__AliasAssignment_2 )? ) ;
+    public final void rule__EntityReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8470:1: ( ( ( rule__FilterClause__Group_2__0 )* ) )
-            // InternalDescartesQL.g:8471:1: ( ( rule__FilterClause__Group_2__0 )* )
+            // InternalDescartesQL.g:8601:1: ( ( ( rule__EntityReference__AliasAssignment_2 )? ) )
+            // InternalDescartesQL.g:8602:1: ( ( rule__EntityReference__AliasAssignment_2 )? )
             {
-            // InternalDescartesQL.g:8471:1: ( ( rule__FilterClause__Group_2__0 )* )
-            // InternalDescartesQL.g:8472:1: ( rule__FilterClause__Group_2__0 )*
+            // InternalDescartesQL.g:8602:1: ( ( rule__EntityReference__AliasAssignment_2 )? )
+            // InternalDescartesQL.g:8603:1: ( rule__EntityReference__AliasAssignment_2 )?
             {
-             before(grammarAccess.getFilterClauseAccess().getGroup_2()); 
-            // InternalDescartesQL.g:8473:1: ( rule__FilterClause__Group_2__0 )*
-            loop62:
-            do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
-
-                if ( ((LA62_0>=25 && LA62_0<=27)) ) {
-                    alt62=1;
-                }
-
+             before(grammarAccess.getEntityReferenceAccess().getAliasAssignment_2()); 
+            // InternalDescartesQL.g:8604:1: ( rule__EntityReference__AliasAssignment_2 )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-                switch (alt62) {
-            	case 1 :
-            	    // InternalDescartesQL.g:8473:2: rule__FilterClause__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_51);
-            	    rule__FilterClause__Group_2__0();
+            if ( (LA68_0==98) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // InternalDescartesQL.g:8604:2: rule__EntityReference__AliasAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityReference__AliasAssignment_2();
 
-            	    state._fsp--;
+                    state._fsp--;
 
 
-            	    }
-            	    break;
+                    }
+                    break;
 
-            	default :
-            	    break loop62;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getFilterClauseAccess().getGroup_2()); 
+             after(grammarAccess.getEntityReferenceAccess().getAliasAssignment_2()); 
 
             }
 
@@ -23740,26 +24141,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group__2__Impl"
+    // $ANTLR end "rule__EntityReference__Group__2__Impl"
 
 
-    // $ANTLR start "rule__FilterClause__Group_2__0"
-    // InternalDescartesQL.g:8489:1: rule__FilterClause__Group_2__0 : rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1 ;
-    public final void rule__FilterClause__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__AliasClause__Group__0"
+    // InternalDescartesQL.g:8620:1: rule__AliasClause__Group__0 : rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1 ;
+    public final void rule__AliasClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8493:1: ( rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1 )
-            // InternalDescartesQL.g:8494:2: rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1
+            // InternalDescartesQL.g:8624:1: ( rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1 )
+            // InternalDescartesQL.g:8625:2: rule__AliasClause__Group__0__Impl rule__AliasClause__Group__1
             {
-            pushFollow(FOLLOW_49);
-            rule__FilterClause__Group_2__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__AliasClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterClause__Group_2__1();
+            rule__AliasClause__Group__1();
 
             state._fsp--;
 
@@ -23778,35 +24179,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group_2__0"
+    // $ANTLR end "rule__AliasClause__Group__0"
 
 
-    // $ANTLR start "rule__FilterClause__Group_2__0__Impl"
-    // InternalDescartesQL.g:8501:1: rule__FilterClause__Group_2__0__Impl : ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) ) ;
-    public final void rule__FilterClause__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AliasClause__Group__0__Impl"
+    // InternalDescartesQL.g:8632:1: rule__AliasClause__Group__0__Impl : ( ( rule__AliasClause__ModeAssignment_0 ) ) ;
+    public final void rule__AliasClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8505:1: ( ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) ) )
-            // InternalDescartesQL.g:8506:1: ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) )
+            // InternalDescartesQL.g:8636:1: ( ( ( rule__AliasClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:8637:1: ( ( rule__AliasClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8506:1: ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) )
-            // InternalDescartesQL.g:8507:1: ( rule__FilterClause__FilterConjunctionsAssignment_2_0 )
+            // InternalDescartesQL.g:8637:1: ( ( rule__AliasClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8638:1: ( rule__AliasClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getFilterClauseAccess().getFilterConjunctionsAssignment_2_0()); 
-            // InternalDescartesQL.g:8508:1: ( rule__FilterClause__FilterConjunctionsAssignment_2_0 )
-            // InternalDescartesQL.g:8508:2: rule__FilterClause__FilterConjunctionsAssignment_2_0
+             before(grammarAccess.getAliasClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:8639:1: ( rule__AliasClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8639:2: rule__AliasClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__FilterClause__FilterConjunctionsAssignment_2_0();
+            rule__AliasClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterClauseAccess().getFilterConjunctionsAssignment_2_0()); 
+             after(grammarAccess.getAliasClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -23825,21 +24226,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group_2__0__Impl"
+    // $ANTLR end "rule__AliasClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilterClause__Group_2__1"
-    // InternalDescartesQL.g:8518:1: rule__FilterClause__Group_2__1 : rule__FilterClause__Group_2__1__Impl ;
-    public final void rule__FilterClause__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__AliasClause__Group__1"
+    // InternalDescartesQL.g:8649:1: rule__AliasClause__Group__1 : rule__AliasClause__Group__1__Impl ;
+    public final void rule__AliasClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8522:1: ( rule__FilterClause__Group_2__1__Impl )
-            // InternalDescartesQL.g:8523:2: rule__FilterClause__Group_2__1__Impl
+            // InternalDescartesQL.g:8653:1: ( rule__AliasClause__Group__1__Impl )
+            // InternalDescartesQL.g:8654:2: rule__AliasClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__FilterClause__Group_2__1__Impl();
+            rule__AliasClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -23858,35 +24259,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group_2__1"
+    // $ANTLR end "rule__AliasClause__Group__1"
 
 
-    // $ANTLR start "rule__FilterClause__Group_2__1__Impl"
-    // InternalDescartesQL.g:8529:1: rule__FilterClause__Group_2__1__Impl : ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) ) ;
-    public final void rule__FilterClause__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__AliasClause__Group__1__Impl"
+    // InternalDescartesQL.g:8660:1: rule__AliasClause__Group__1__Impl : ( ( rule__AliasClause__AliasAssignment_1 ) ) ;
+    public final void rule__AliasClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8533:1: ( ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:8534:1: ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) )
+            // InternalDescartesQL.g:8664:1: ( ( ( rule__AliasClause__AliasAssignment_1 ) ) )
+            // InternalDescartesQL.g:8665:1: ( ( rule__AliasClause__AliasAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8534:1: ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) )
-            // InternalDescartesQL.g:8535:1: ( rule__FilterClause__FilterConditionsAssignment_2_1 )
+            // InternalDescartesQL.g:8665:1: ( ( rule__AliasClause__AliasAssignment_1 ) )
+            // InternalDescartesQL.g:8666:1: ( rule__AliasClause__AliasAssignment_1 )
             {
-             before(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_2_1()); 
-            // InternalDescartesQL.g:8536:1: ( rule__FilterClause__FilterConditionsAssignment_2_1 )
-            // InternalDescartesQL.g:8536:2: rule__FilterClause__FilterConditionsAssignment_2_1
+             before(grammarAccess.getAliasClauseAccess().getAliasAssignment_1()); 
+            // InternalDescartesQL.g:8667:1: ( rule__AliasClause__AliasAssignment_1 )
+            // InternalDescartesQL.g:8667:2: rule__AliasClause__AliasAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__FilterClause__FilterConditionsAssignment_2_1();
+            rule__AliasClause__AliasAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_2_1()); 
+             after(grammarAccess.getAliasClauseAccess().getAliasAssignment_1()); 
 
             }
 
@@ -23905,26 +24306,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterClause__Group_2__1__Impl"
+    // $ANTLR end "rule__AliasClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__0"
-    // InternalDescartesQL.g:8550:1: rule__FilterConditionClause__Group__0 : rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1 ;
-    public final void rule__FilterConditionClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__UsingClause__Group__0"
+    // InternalDescartesQL.g:8681:1: rule__UsingClause__Group__0 : rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1 ;
+    public final void rule__UsingClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8554:1: ( rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1 )
-            // InternalDescartesQL.g:8555:2: rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1
+            // InternalDescartesQL.g:8685:1: ( rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1 )
+            // InternalDescartesQL.g:8686:2: rule__UsingClause__Group__0__Impl rule__UsingClause__Group__1
             {
-            pushFollow(FOLLOW_11);
-            rule__FilterConditionClause__Group__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__UsingClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__1();
+            rule__UsingClause__Group__1();
 
             state._fsp--;
 
@@ -23943,35 +24344,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__0"
+    // $ANTLR end "rule__UsingClause__Group__0"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__0__Impl"
-    // InternalDescartesQL.g:8562:1: rule__FilterConditionClause__Group__0__Impl : ( ( rule__FilterConditionClause__ModeAssignment_0 ) ) ;
-    public final void rule__FilterConditionClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__UsingClause__Group__0__Impl"
+    // InternalDescartesQL.g:8693:1: rule__UsingClause__Group__0__Impl : ( ( rule__UsingClause__ModeAssignment_0 ) ) ;
+    public final void rule__UsingClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8566:1: ( ( ( rule__FilterConditionClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8567:1: ( ( rule__FilterConditionClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8697:1: ( ( ( rule__UsingClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:8698:1: ( ( rule__UsingClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8567:1: ( ( rule__FilterConditionClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8568:1: ( rule__FilterConditionClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8698:1: ( ( rule__UsingClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8699:1: ( rule__UsingClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8569:1: ( rule__FilterConditionClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8569:2: rule__FilterConditionClause__ModeAssignment_0
+             before(grammarAccess.getUsingClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:8700:1: ( rule__UsingClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8700:2: rule__UsingClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__ModeAssignment_0();
+            rule__UsingClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterConditionClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getUsingClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -23990,26 +24391,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__0__Impl"
+    // $ANTLR end "rule__UsingClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__1"
-    // InternalDescartesQL.g:8579:1: rule__FilterConditionClause__Group__1 : rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2 ;
-    public final void rule__FilterConditionClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__UsingClause__Group__1"
+    // InternalDescartesQL.g:8710:1: rule__UsingClause__Group__1 : rule__UsingClause__Group__1__Impl ;
+    public final void rule__UsingClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8583:1: ( rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2 )
-            // InternalDescartesQL.g:8584:2: rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2
+            // InternalDescartesQL.g:8714:1: ( rule__UsingClause__Group__1__Impl )
+            // InternalDescartesQL.g:8715:2: rule__UsingClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_52);
-            rule__FilterConditionClause__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__2();
+            rule__UsingClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -24028,25 +24424,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__1"
+    // $ANTLR end "rule__UsingClause__Group__1"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__1__Impl"
-    // InternalDescartesQL.g:8591:1: rule__FilterConditionClause__Group__1__Impl : ( '(' ) ;
-    public final void rule__FilterConditionClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__UsingClause__Group__1__Impl"
+    // InternalDescartesQL.g:8721:1: rule__UsingClause__Group__1__Impl : ( ( rule__UsingClause__ModelReferenceAssignment_1 ) ) ;
+    public final void rule__UsingClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8595:1: ( ( '(' ) )
-            // InternalDescartesQL.g:8596:1: ( '(' )
+            // InternalDescartesQL.g:8725:1: ( ( ( rule__UsingClause__ModelReferenceAssignment_1 ) ) )
+            // InternalDescartesQL.g:8726:1: ( ( rule__UsingClause__ModelReferenceAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8596:1: ( '(' )
-            // InternalDescartesQL.g:8597:1: '('
+            // InternalDescartesQL.g:8726:1: ( ( rule__UsingClause__ModelReferenceAssignment_1 ) )
+            // InternalDescartesQL.g:8727:1: ( rule__UsingClause__ModelReferenceAssignment_1 )
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getLeftParenthesisKeyword_1()); 
-            match(input,55,FOLLOW_2); 
-             after(grammarAccess.getFilterConditionClauseAccess().getLeftParenthesisKeyword_1()); 
+             before(grammarAccess.getUsingClauseAccess().getModelReferenceAssignment_1()); 
+            // InternalDescartesQL.g:8728:1: ( rule__UsingClause__ModelReferenceAssignment_1 )
+            // InternalDescartesQL.g:8728:2: rule__UsingClause__ModelReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__UsingClause__ModelReferenceAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getUsingClauseAccess().getModelReferenceAssignment_1()); 
 
             }
 
@@ -24065,26 +24471,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__1__Impl"
+    // $ANTLR end "rule__UsingClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__2"
-    // InternalDescartesQL.g:8610:1: rule__FilterConditionClause__Group__2 : rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3 ;
-    public final void rule__FilterConditionClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__WithClause__Group__0"
+    // InternalDescartesQL.g:8742:1: rule__WithClause__Group__0 : rule__WithClause__Group__0__Impl rule__WithClause__Group__1 ;
+    public final void rule__WithClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8614:1: ( rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3 )
-            // InternalDescartesQL.g:8615:2: rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3
+            // InternalDescartesQL.g:8746:1: ( rule__WithClause__Group__0__Impl rule__WithClause__Group__1 )
+            // InternalDescartesQL.g:8747:2: rule__WithClause__Group__0__Impl rule__WithClause__Group__1
             {
-            pushFollow(FOLLOW_8);
-            rule__FilterConditionClause__Group__2__Impl();
+            pushFollow(FOLLOW_10);
+            rule__WithClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__3();
+            rule__WithClause__Group__1();
 
             state._fsp--;
 
@@ -24103,35 +24509,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__2"
+    // $ANTLR end "rule__WithClause__Group__0"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__2__Impl"
-    // InternalDescartesQL.g:8622:1: rule__FilterConditionClause__Group__2__Impl : ( ( rule__FilterConditionClause__ConditionAssignment_2 ) ) ;
-    public final void rule__FilterConditionClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WithClause__Group__0__Impl"
+    // InternalDescartesQL.g:8754:1: rule__WithClause__Group__0__Impl : ( ( rule__WithClause__ModeAssignment_0 ) ) ;
+    public final void rule__WithClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8626:1: ( ( ( rule__FilterConditionClause__ConditionAssignment_2 ) ) )
-            // InternalDescartesQL.g:8627:1: ( ( rule__FilterConditionClause__ConditionAssignment_2 ) )
+            // InternalDescartesQL.g:8758:1: ( ( ( rule__WithClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:8759:1: ( ( rule__WithClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8627:1: ( ( rule__FilterConditionClause__ConditionAssignment_2 ) )
-            // InternalDescartesQL.g:8628:1: ( rule__FilterConditionClause__ConditionAssignment_2 )
+            // InternalDescartesQL.g:8759:1: ( ( rule__WithClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8760:1: ( rule__WithClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getConditionAssignment_2()); 
-            // InternalDescartesQL.g:8629:1: ( rule__FilterConditionClause__ConditionAssignment_2 )
-            // InternalDescartesQL.g:8629:2: rule__FilterConditionClause__ConditionAssignment_2
+             before(grammarAccess.getWithClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:8761:1: ( rule__WithClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8761:2: rule__WithClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__ConditionAssignment_2();
+            rule__WithClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterConditionClauseAccess().getConditionAssignment_2()); 
+             after(grammarAccess.getWithClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -24150,26 +24556,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__2__Impl"
+    // $ANTLR end "rule__WithClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__3"
-    // InternalDescartesQL.g:8639:1: rule__FilterConditionClause__Group__3 : rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4 ;
-    public final void rule__FilterConditionClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__WithClause__Group__1"
+    // InternalDescartesQL.g:8771:1: rule__WithClause__Group__1 : rule__WithClause__Group__1__Impl ;
+    public final void rule__WithClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8643:1: ( rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4 )
-            // InternalDescartesQL.g:8644:2: rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4
+            // InternalDescartesQL.g:8775:1: ( rule__WithClause__Group__1__Impl )
+            // InternalDescartesQL.g:8776:2: rule__WithClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_34);
-            rule__FilterConditionClause__Group__3__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__4();
+            rule__WithClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -24188,25 +24589,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__3"
+    // $ANTLR end "rule__WithClause__Group__1"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__3__Impl"
-    // InternalDescartesQL.g:8651:1: rule__FilterConditionClause__Group__3__Impl : ( ',' ) ;
-    public final void rule__FilterConditionClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WithClause__Group__1__Impl"
+    // InternalDescartesQL.g:8782:1: rule__WithClause__Group__1__Impl : ( ( rule__WithClause__ModelReferenceAssignment_1 ) ) ;
+    public final void rule__WithClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8655:1: ( ( ',' ) )
-            // InternalDescartesQL.g:8656:1: ( ',' )
+            // InternalDescartesQL.g:8786:1: ( ( ( rule__WithClause__ModelReferenceAssignment_1 ) ) )
+            // InternalDescartesQL.g:8787:1: ( ( rule__WithClause__ModelReferenceAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8656:1: ( ',' )
-            // InternalDescartesQL.g:8657:1: ','
+            // InternalDescartesQL.g:8787:1: ( ( rule__WithClause__ModelReferenceAssignment_1 ) )
+            // InternalDescartesQL.g:8788:1: ( rule__WithClause__ModelReferenceAssignment_1 )
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getCommaKeyword_3()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getFilterConditionClauseAccess().getCommaKeyword_3()); 
+             before(grammarAccess.getWithClauseAccess().getModelReferenceAssignment_1()); 
+            // InternalDescartesQL.g:8789:1: ( rule__WithClause__ModelReferenceAssignment_1 )
+            // InternalDescartesQL.g:8789:2: rule__WithClause__ModelReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__WithClause__ModelReferenceAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWithClauseAccess().getModelReferenceAssignment_1()); 
 
             }
 
@@ -24225,26 +24636,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__3__Impl"
+    // $ANTLR end "rule__WithClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__4"
-    // InternalDescartesQL.g:8670:1: rule__FilterConditionClause__Group__4 : rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5 ;
-    public final void rule__FilterConditionClause__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__0"
+    // InternalDescartesQL.g:8803:1: rule__ModelReferenceClause__Group__0 : rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1 ;
+    public final void rule__ModelReferenceClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8674:1: ( rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5 )
-            // InternalDescartesQL.g:8675:2: rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5
+            // InternalDescartesQL.g:8807:1: ( rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1 )
+            // InternalDescartesQL.g:8808:2: rule__ModelReferenceClause__Group__0__Impl rule__ModelReferenceClause__Group__1
             {
-            pushFollow(FOLLOW_29);
-            rule__FilterConditionClause__Group__4__Impl();
+            pushFollow(FOLLOW_49);
+            rule__ModelReferenceClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__5();
+            rule__ModelReferenceClause__Group__1();
 
             state._fsp--;
 
@@ -24263,35 +24674,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__4"
+    // $ANTLR end "rule__ModelReferenceClause__Group__0"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__4__Impl"
-    // InternalDescartesQL.g:8682:1: rule__FilterConditionClause__Group__4__Impl : ( ( rule__FilterConditionClause__ValueAssignment_4 ) ) ;
-    public final void rule__FilterConditionClause__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__0__Impl"
+    // InternalDescartesQL.g:8815:1: rule__ModelReferenceClause__Group__0__Impl : ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) ) ;
+    public final void rule__ModelReferenceClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8686:1: ( ( ( rule__FilterConditionClause__ValueAssignment_4 ) ) )
-            // InternalDescartesQL.g:8687:1: ( ( rule__FilterConditionClause__ValueAssignment_4 ) )
+            // InternalDescartesQL.g:8819:1: ( ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) ) )
+            // InternalDescartesQL.g:8820:1: ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8687:1: ( ( rule__FilterConditionClause__ValueAssignment_4 ) )
-            // InternalDescartesQL.g:8688:1: ( rule__FilterConditionClause__ValueAssignment_4 )
+            // InternalDescartesQL.g:8820:1: ( ( rule__ModelReferenceClause__FamilyAssignment_0 ) )
+            // InternalDescartesQL.g:8821:1: ( rule__ModelReferenceClause__FamilyAssignment_0 )
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getValueAssignment_4()); 
-            // InternalDescartesQL.g:8689:1: ( rule__FilterConditionClause__ValueAssignment_4 )
-            // InternalDescartesQL.g:8689:2: rule__FilterConditionClause__ValueAssignment_4
+             before(grammarAccess.getModelReferenceClauseAccess().getFamilyAssignment_0()); 
+            // InternalDescartesQL.g:8822:1: ( rule__ModelReferenceClause__FamilyAssignment_0 )
+            // InternalDescartesQL.g:8822:2: rule__ModelReferenceClause__FamilyAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__ValueAssignment_4();
+            rule__ModelReferenceClause__FamilyAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilterConditionClauseAccess().getValueAssignment_4()); 
+             after(grammarAccess.getModelReferenceClauseAccess().getFamilyAssignment_0()); 
 
             }
 
@@ -24310,21 +24721,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__4__Impl"
+    // $ANTLR end "rule__ModelReferenceClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__5"
-    // InternalDescartesQL.g:8699:1: rule__FilterConditionClause__Group__5 : rule__FilterConditionClause__Group__5__Impl ;
-    public final void rule__FilterConditionClause__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__1"
+    // InternalDescartesQL.g:8832:1: rule__ModelReferenceClause__Group__1 : rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2 ;
+    public final void rule__ModelReferenceClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8703:1: ( rule__FilterConditionClause__Group__5__Impl )
-            // InternalDescartesQL.g:8704:2: rule__FilterConditionClause__Group__5__Impl
+            // InternalDescartesQL.g:8836:1: ( rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2 )
+            // InternalDescartesQL.g:8837:2: rule__ModelReferenceClause__Group__1__Impl rule__ModelReferenceClause__Group__2
             {
+            pushFollow(FOLLOW_35);
+            rule__ModelReferenceClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__FilterConditionClause__Group__5__Impl();
+            rule__ModelReferenceClause__Group__2();
 
             state._fsp--;
 
@@ -24343,25 +24759,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__5"
+    // $ANTLR end "rule__ModelReferenceClause__Group__1"
 
 
-    // $ANTLR start "rule__FilterConditionClause__Group__5__Impl"
-    // InternalDescartesQL.g:8710:1: rule__FilterConditionClause__Group__5__Impl : ( ')' ) ;
-    public final void rule__FilterConditionClause__Group__5__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__1__Impl"
+    // InternalDescartesQL.g:8844:1: rule__ModelReferenceClause__Group__1__Impl : ( '@' ) ;
+    public final void rule__ModelReferenceClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8714:1: ( ( ')' ) )
-            // InternalDescartesQL.g:8715:1: ( ')' )
+            // InternalDescartesQL.g:8848:1: ( ( '@' ) )
+            // InternalDescartesQL.g:8849:1: ( '@' )
             {
-            // InternalDescartesQL.g:8715:1: ( ')' )
-            // InternalDescartesQL.g:8716:1: ')'
+            // InternalDescartesQL.g:8849:1: ( '@' )
+            // InternalDescartesQL.g:8850:1: '@'
             {
-             before(grammarAccess.getFilterConditionClauseAccess().getRightParenthesisKeyword_5()); 
-            match(input,56,FOLLOW_2); 
-             after(grammarAccess.getFilterConditionClauseAccess().getRightParenthesisKeyword_5()); 
+             before(grammarAccess.getModelReferenceClauseAccess().getCommercialAtKeyword_1()); 
+            match(input,76,FOLLOW_2); 
+             after(grammarAccess.getModelReferenceClauseAccess().getCommercialAtKeyword_1()); 
 
             }
 
@@ -24380,26 +24796,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilterConditionClause__Group__5__Impl"
+    // $ANTLR end "rule__ModelReferenceClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__0"
-    // InternalDescartesQL.g:8741:1: rule__ObserveClause__Group__0 : rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1 ;
-    public final void rule__ObserveClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__2"
+    // InternalDescartesQL.g:8863:1: rule__ModelReferenceClause__Group__2 : rule__ModelReferenceClause__Group__2__Impl ;
+    public final void rule__ModelReferenceClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8745:1: ( rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1 )
-            // InternalDescartesQL.g:8746:2: rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1
+            // InternalDescartesQL.g:8867:1: ( rule__ModelReferenceClause__Group__2__Impl )
+            // InternalDescartesQL.g:8868:2: rule__ModelReferenceClause__Group__2__Impl
             {
-            pushFollow(FOLLOW_53);
-            rule__ObserveClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ObserveClause__Group__1();
+            rule__ModelReferenceClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -24418,35 +24829,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__0"
+    // $ANTLR end "rule__ModelReferenceClause__Group__2"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__0__Impl"
-    // InternalDescartesQL.g:8753:1: rule__ObserveClause__Group__0__Impl : ( ( rule__ObserveClause__ModeAssignment_0 ) ) ;
-    public final void rule__ObserveClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ModelReferenceClause__Group__2__Impl"
+    // InternalDescartesQL.g:8874:1: rule__ModelReferenceClause__Group__2__Impl : ( ( rule__ModelReferenceClause__ModelAssignment_2 ) ) ;
+    public final void rule__ModelReferenceClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8757:1: ( ( ( rule__ObserveClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8758:1: ( ( rule__ObserveClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8878:1: ( ( ( rule__ModelReferenceClause__ModelAssignment_2 ) ) )
+            // InternalDescartesQL.g:8879:1: ( ( rule__ModelReferenceClause__ModelAssignment_2 ) )
             {
-            // InternalDescartesQL.g:8758:1: ( ( rule__ObserveClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8759:1: ( rule__ObserveClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8879:1: ( ( rule__ModelReferenceClause__ModelAssignment_2 ) )
+            // InternalDescartesQL.g:8880:1: ( rule__ModelReferenceClause__ModelAssignment_2 )
             {
-             before(grammarAccess.getObserveClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8760:1: ( rule__ObserveClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8760:2: rule__ObserveClause__ModeAssignment_0
+             before(grammarAccess.getModelReferenceClauseAccess().getModelAssignment_2()); 
+            // InternalDescartesQL.g:8881:1: ( rule__ModelReferenceClause__ModelAssignment_2 )
+            // InternalDescartesQL.g:8881:2: rule__ModelReferenceClause__ModelAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveClause__ModeAssignment_0();
+            rule__ModelReferenceClause__ModelAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getModelReferenceClauseAccess().getModelAssignment_2()); 
 
             }
 
@@ -24465,26 +24876,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__0__Impl"
+    // $ANTLR end "rule__ModelReferenceClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__1"
-    // InternalDescartesQL.g:8770:1: rule__ObserveClause__Group__1 : rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2 ;
-    public final void rule__ObserveClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__0"
+    // InternalDescartesQL.g:8897:1: rule__FilterClause__Group__0 : rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1 ;
+    public final void rule__FilterClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8774:1: ( rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2 )
-            // InternalDescartesQL.g:8775:2: rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2
+            // InternalDescartesQL.g:8901:1: ( rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1 )
+            // InternalDescartesQL.g:8902:2: rule__FilterClause__Group__0__Impl rule__FilterClause__Group__1
             {
-            pushFollow(FOLLOW_54);
-            rule__ObserveClause__Group__1__Impl();
+            pushFollow(FOLLOW_50);
+            rule__FilterClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ObserveClause__Group__2();
+            rule__FilterClause__Group__1();
 
             state._fsp--;
 
@@ -24503,35 +24914,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__1"
+    // $ANTLR end "rule__FilterClause__Group__0"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__1__Impl"
-    // InternalDescartesQL.g:8782:1: rule__ObserveClause__Group__1__Impl : ( ( rule__ObserveClause__ObservationAssignment_1 ) ) ;
-    public final void rule__ObserveClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__0__Impl"
+    // InternalDescartesQL.g:8909:1: rule__FilterClause__Group__0__Impl : ( ( rule__FilterClause__ModeAssignment_0 ) ) ;
+    public final void rule__FilterClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8786:1: ( ( ( rule__ObserveClause__ObservationAssignment_1 ) ) )
-            // InternalDescartesQL.g:8787:1: ( ( rule__ObserveClause__ObservationAssignment_1 ) )
+            // InternalDescartesQL.g:8913:1: ( ( ( rule__FilterClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:8914:1: ( ( rule__FilterClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8787:1: ( ( rule__ObserveClause__ObservationAssignment_1 ) )
-            // InternalDescartesQL.g:8788:1: ( rule__ObserveClause__ObservationAssignment_1 )
+            // InternalDescartesQL.g:8914:1: ( ( rule__FilterClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:8915:1: ( rule__FilterClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getObserveClauseAccess().getObservationAssignment_1()); 
-            // InternalDescartesQL.g:8789:1: ( rule__ObserveClause__ObservationAssignment_1 )
-            // InternalDescartesQL.g:8789:2: rule__ObserveClause__ObservationAssignment_1
+             before(grammarAccess.getFilterClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:8916:1: ( rule__FilterClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8916:2: rule__FilterClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveClause__ObservationAssignment_1();
+            rule__FilterClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveClauseAccess().getObservationAssignment_1()); 
+             after(grammarAccess.getFilterClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -24550,21 +24961,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__1__Impl"
+    // $ANTLR end "rule__FilterClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__2"
-    // InternalDescartesQL.g:8799:1: rule__ObserveClause__Group__2 : rule__ObserveClause__Group__2__Impl ;
-    public final void rule__ObserveClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__1"
+    // InternalDescartesQL.g:8926:1: rule__FilterClause__Group__1 : rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2 ;
+    public final void rule__FilterClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8803:1: ( rule__ObserveClause__Group__2__Impl )
-            // InternalDescartesQL.g:8804:2: rule__ObserveClause__Group__2__Impl
+            // InternalDescartesQL.g:8930:1: ( rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2 )
+            // InternalDescartesQL.g:8931:2: rule__FilterClause__Group__1__Impl rule__FilterClause__Group__2
             {
+            pushFollow(FOLLOW_51);
+            rule__FilterClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ObserveClause__Group__2__Impl();
+            rule__FilterClause__Group__2();
 
             state._fsp--;
 
@@ -24583,46 +24999,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__2"
+    // $ANTLR end "rule__FilterClause__Group__1"
 
 
-    // $ANTLR start "rule__ObserveClause__Group__2__Impl"
-    // InternalDescartesQL.g:8810:1: rule__ObserveClause__Group__2__Impl : ( ( rule__ObserveClause__SampleClauseAssignment_2 )? ) ;
-    public final void rule__ObserveClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__1__Impl"
+    // InternalDescartesQL.g:8938:1: rule__FilterClause__Group__1__Impl : ( ( rule__FilterClause__FilterConditionsAssignment_1 ) ) ;
+    public final void rule__FilterClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8814:1: ( ( ( rule__ObserveClause__SampleClauseAssignment_2 )? ) )
-            // InternalDescartesQL.g:8815:1: ( ( rule__ObserveClause__SampleClauseAssignment_2 )? )
+            // InternalDescartesQL.g:8942:1: ( ( ( rule__FilterClause__FilterConditionsAssignment_1 ) ) )
+            // InternalDescartesQL.g:8943:1: ( ( rule__FilterClause__FilterConditionsAssignment_1 ) )
             {
-            // InternalDescartesQL.g:8815:1: ( ( rule__ObserveClause__SampleClauseAssignment_2 )? )
-            // InternalDescartesQL.g:8816:1: ( rule__ObserveClause__SampleClauseAssignment_2 )?
+            // InternalDescartesQL.g:8943:1: ( ( rule__FilterClause__FilterConditionsAssignment_1 ) )
+            // InternalDescartesQL.g:8944:1: ( rule__FilterClause__FilterConditionsAssignment_1 )
             {
-             before(grammarAccess.getObserveClauseAccess().getSampleClauseAssignment_2()); 
-            // InternalDescartesQL.g:8817:1: ( rule__ObserveClause__SampleClauseAssignment_2 )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
-
-            if ( (LA63_0==100) ) {
-                alt63=1;
-            }
-            switch (alt63) {
-                case 1 :
-                    // InternalDescartesQL.g:8817:2: rule__ObserveClause__SampleClauseAssignment_2
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__ObserveClause__SampleClauseAssignment_2();
-
-                    state._fsp--;
+             before(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_1()); 
+            // InternalDescartesQL.g:8945:1: ( rule__FilterClause__FilterConditionsAssignment_1 )
+            // InternalDescartesQL.g:8945:2: rule__FilterClause__FilterConditionsAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilterClause__FilterConditionsAssignment_1();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getObserveClauseAccess().getSampleClauseAssignment_2()); 
+             after(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_1()); 
 
             }
 
@@ -24641,26 +25046,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveClause__Group__2__Impl"
+    // $ANTLR end "rule__FilterClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__SampleClause__Group__0"
-    // InternalDescartesQL.g:8833:1: rule__SampleClause__Group__0 : rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1 ;
-    public final void rule__SampleClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__2"
+    // InternalDescartesQL.g:8955:1: rule__FilterClause__Group__2 : rule__FilterClause__Group__2__Impl ;
+    public final void rule__FilterClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8837:1: ( rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1 )
-            // InternalDescartesQL.g:8838:2: rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1
+            // InternalDescartesQL.g:8959:1: ( rule__FilterClause__Group__2__Impl )
+            // InternalDescartesQL.g:8960:2: rule__FilterClause__Group__2__Impl
             {
-            pushFollow(FOLLOW_19);
-            rule__SampleClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__SampleClause__Group__1();
+            rule__FilterClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -24679,35 +25079,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__0"
+    // $ANTLR end "rule__FilterClause__Group__2"
 
 
-    // $ANTLR start "rule__SampleClause__Group__0__Impl"
-    // InternalDescartesQL.g:8845:1: rule__SampleClause__Group__0__Impl : ( ( rule__SampleClause__ModeAssignment_0 ) ) ;
-    public final void rule__SampleClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group__2__Impl"
+    // InternalDescartesQL.g:8966:1: rule__FilterClause__Group__2__Impl : ( ( rule__FilterClause__Group_2__0 )* ) ;
+    public final void rule__FilterClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8849:1: ( ( ( rule__SampleClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:8850:1: ( ( rule__SampleClause__ModeAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:8850:1: ( ( rule__SampleClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:8851:1: ( rule__SampleClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:8970:1: ( ( ( rule__FilterClause__Group_2__0 )* ) )
+            // InternalDescartesQL.g:8971:1: ( ( rule__FilterClause__Group_2__0 )* )
             {
-             before(grammarAccess.getSampleClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:8852:1: ( rule__SampleClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:8852:2: rule__SampleClause__ModeAssignment_0
+            // InternalDescartesQL.g:8971:1: ( ( rule__FilterClause__Group_2__0 )* )
+            // InternalDescartesQL.g:8972:1: ( rule__FilterClause__Group_2__0 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__SampleClause__ModeAssignment_0();
+             before(grammarAccess.getFilterClauseAccess().getGroup_2()); 
+            // InternalDescartesQL.g:8973:1: ( rule__FilterClause__Group_2__0 )*
+            loop69:
+            do {
+                int alt69=2;
+                int LA69_0 = input.LA(1);
 
-            state._fsp--;
+                if ( ((LA69_0>=26 && LA69_0<=28)) ) {
+                    alt69=1;
+                }
 
 
-            }
+                switch (alt69) {
+            	case 1 :
+            	    // InternalDescartesQL.g:8973:2: rule__FilterClause__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__FilterClause__Group_2__0();
 
-             after(grammarAccess.getSampleClauseAccess().getModeAssignment_0()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop69;
+                }
+            } while (true);
+
+             after(grammarAccess.getFilterClauseAccess().getGroup_2()); 
 
             }
 
@@ -24726,26 +25144,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__0__Impl"
+    // $ANTLR end "rule__FilterClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__SampleClause__Group__1"
-    // InternalDescartesQL.g:8862:1: rule__SampleClause__Group__1 : rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2 ;
-    public final void rule__SampleClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group_2__0"
+    // InternalDescartesQL.g:8989:1: rule__FilterClause__Group_2__0 : rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1 ;
+    public final void rule__FilterClause__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8866:1: ( rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2 )
-            // InternalDescartesQL.g:8867:2: rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2
+            // InternalDescartesQL.g:8993:1: ( rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1 )
+            // InternalDescartesQL.g:8994:2: rule__FilterClause__Group_2__0__Impl rule__FilterClause__Group_2__1
             {
-            pushFollow(FOLLOW_19);
-            rule__SampleClause__Group__1__Impl();
+            pushFollow(FOLLOW_50);
+            rule__FilterClause__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__SampleClause__Group__2();
+            rule__FilterClause__Group_2__1();
 
             state._fsp--;
 
@@ -24764,35 +25182,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__1"
+    // $ANTLR end "rule__FilterClause__Group_2__0"
 
 
-    // $ANTLR start "rule__SampleClause__Group__1__Impl"
-    // InternalDescartesQL.g:8874:1: rule__SampleClause__Group__1__Impl : ( ( rule__SampleClause__DurationClauseAssignment_1 ) ) ;
-    public final void rule__SampleClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group_2__0__Impl"
+    // InternalDescartesQL.g:9001:1: rule__FilterClause__Group_2__0__Impl : ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) ) ;
+    public final void rule__FilterClause__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8878:1: ( ( ( rule__SampleClause__DurationClauseAssignment_1 ) ) )
-            // InternalDescartesQL.g:8879:1: ( ( rule__SampleClause__DurationClauseAssignment_1 ) )
+            // InternalDescartesQL.g:9005:1: ( ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) ) )
+            // InternalDescartesQL.g:9006:1: ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) )
             {
-            // InternalDescartesQL.g:8879:1: ( ( rule__SampleClause__DurationClauseAssignment_1 ) )
-            // InternalDescartesQL.g:8880:1: ( rule__SampleClause__DurationClauseAssignment_1 )
+            // InternalDescartesQL.g:9006:1: ( ( rule__FilterClause__FilterConjunctionsAssignment_2_0 ) )
+            // InternalDescartesQL.g:9007:1: ( rule__FilterClause__FilterConjunctionsAssignment_2_0 )
             {
-             before(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_1()); 
-            // InternalDescartesQL.g:8881:1: ( rule__SampleClause__DurationClauseAssignment_1 )
-            // InternalDescartesQL.g:8881:2: rule__SampleClause__DurationClauseAssignment_1
+             before(grammarAccess.getFilterClauseAccess().getFilterConjunctionsAssignment_2_0()); 
+            // InternalDescartesQL.g:9008:1: ( rule__FilterClause__FilterConjunctionsAssignment_2_0 )
+            // InternalDescartesQL.g:9008:2: rule__FilterClause__FilterConjunctionsAssignment_2_0
             {
             pushFollow(FOLLOW_2);
-            rule__SampleClause__DurationClauseAssignment_1();
+            rule__FilterClause__FilterConjunctionsAssignment_2_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_1()); 
+             after(grammarAccess.getFilterClauseAccess().getFilterConjunctionsAssignment_2_0()); 
 
             }
 
@@ -24811,21 +25229,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__1__Impl"
+    // $ANTLR end "rule__FilterClause__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__SampleClause__Group__2"
-    // InternalDescartesQL.g:8891:1: rule__SampleClause__Group__2 : rule__SampleClause__Group__2__Impl ;
-    public final void rule__SampleClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group_2__1"
+    // InternalDescartesQL.g:9018:1: rule__FilterClause__Group_2__1 : rule__FilterClause__Group_2__1__Impl ;
+    public final void rule__FilterClause__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8895:1: ( rule__SampleClause__Group__2__Impl )
-            // InternalDescartesQL.g:8896:2: rule__SampleClause__Group__2__Impl
+            // InternalDescartesQL.g:9022:1: ( rule__FilterClause__Group_2__1__Impl )
+            // InternalDescartesQL.g:9023:2: rule__FilterClause__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__SampleClause__Group__2__Impl();
+            rule__FilterClause__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -24844,53 +25262,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__2"
+    // $ANTLR end "rule__FilterClause__Group_2__1"
 
 
-    // $ANTLR start "rule__SampleClause__Group__2__Impl"
-    // InternalDescartesQL.g:8902:1: rule__SampleClause__Group__2__Impl : ( ( rule__SampleClause__DurationClauseAssignment_2 )* ) ;
-    public final void rule__SampleClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterClause__Group_2__1__Impl"
+    // InternalDescartesQL.g:9029:1: rule__FilterClause__Group_2__1__Impl : ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) ) ;
+    public final void rule__FilterClause__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8906:1: ( ( ( rule__SampleClause__DurationClauseAssignment_2 )* ) )
-            // InternalDescartesQL.g:8907:1: ( ( rule__SampleClause__DurationClauseAssignment_2 )* )
+            // InternalDescartesQL.g:9033:1: ( ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:9034:1: ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:8907:1: ( ( rule__SampleClause__DurationClauseAssignment_2 )* )
-            // InternalDescartesQL.g:8908:1: ( rule__SampleClause__DurationClauseAssignment_2 )*
+            // InternalDescartesQL.g:9034:1: ( ( rule__FilterClause__FilterConditionsAssignment_2_1 ) )
+            // InternalDescartesQL.g:9035:1: ( rule__FilterClause__FilterConditionsAssignment_2_1 )
             {
-             before(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_2()); 
-            // InternalDescartesQL.g:8909:1: ( rule__SampleClause__DurationClauseAssignment_2 )*
-            loop64:
-            do {
-                int alt64=2;
-                int LA64_0 = input.LA(1);
-
-                if ( (LA64_0==RULE_INT) ) {
-                    alt64=1;
-                }
-
-
-                switch (alt64) {
-            	case 1 :
-            	    // InternalDescartesQL.g:8909:2: rule__SampleClause__DurationClauseAssignment_2
-            	    {
-            	    pushFollow(FOLLOW_55);
-            	    rule__SampleClause__DurationClauseAssignment_2();
-
-            	    state._fsp--;
+             before(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_2_1()); 
+            // InternalDescartesQL.g:9036:1: ( rule__FilterClause__FilterConditionsAssignment_2_1 )
+            // InternalDescartesQL.g:9036:2: rule__FilterClause__FilterConditionsAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilterClause__FilterConditionsAssignment_2_1();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop64;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_2()); 
+             after(grammarAccess.getFilterClauseAccess().getFilterConditionsAssignment_2_1()); 
 
             }
 
@@ -24909,26 +25309,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__SampleClause__Group__2__Impl"
+    // $ANTLR end "rule__FilterClause__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__0"
-    // InternalDescartesQL.g:8925:1: rule__ConnectorTimeUnitClause__Group__0 : rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1 ;
-    public final void rule__ConnectorTimeUnitClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__0"
+    // InternalDescartesQL.g:9050:1: rule__FilterConditionClause__Group__0 : rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1 ;
+    public final void rule__FilterConditionClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8929:1: ( rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1 )
-            // InternalDescartesQL.g:8930:2: rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1
+            // InternalDescartesQL.g:9054:1: ( rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1 )
+            // InternalDescartesQL.g:9055:2: rule__FilterConditionClause__Group__0__Impl rule__FilterConditionClause__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__ConnectorTimeUnitClause__Group__0__Impl();
+            pushFollow(FOLLOW_14);
+            rule__FilterConditionClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConnectorTimeUnitClause__Group__1();
+            rule__FilterConditionClause__Group__1();
 
             state._fsp--;
 
@@ -24947,35 +25347,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__0"
+    // $ANTLR end "rule__FilterConditionClause__Group__0"
 
 
-    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__0__Impl"
-    // InternalDescartesQL.g:8937:1: rule__ConnectorTimeUnitClause__Group__0__Impl : ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) ) ;
-    public final void rule__ConnectorTimeUnitClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__0__Impl"
+    // InternalDescartesQL.g:9062:1: rule__FilterConditionClause__Group__0__Impl : ( ( rule__FilterConditionClause__ModeAssignment_0 ) ) ;
+    public final void rule__FilterConditionClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8941:1: ( ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) ) )
-            // InternalDescartesQL.g:8942:1: ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) )
+            // InternalDescartesQL.g:9066:1: ( ( ( rule__FilterConditionClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:9067:1: ( ( rule__FilterConditionClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:8942:1: ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) )
-            // InternalDescartesQL.g:8943:1: ( rule__ConnectorTimeUnitClause__CountAssignment_0 )
+            // InternalDescartesQL.g:9067:1: ( ( rule__FilterConditionClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:9068:1: ( rule__FilterConditionClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getConnectorTimeUnitClauseAccess().getCountAssignment_0()); 
-            // InternalDescartesQL.g:8944:1: ( rule__ConnectorTimeUnitClause__CountAssignment_0 )
-            // InternalDescartesQL.g:8944:2: rule__ConnectorTimeUnitClause__CountAssignment_0
+             before(grammarAccess.getFilterConditionClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:9069:1: ( rule__FilterConditionClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:9069:2: rule__FilterConditionClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ConnectorTimeUnitClause__CountAssignment_0();
+            rule__FilterConditionClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConnectorTimeUnitClauseAccess().getCountAssignment_0()); 
+             after(grammarAccess.getFilterConditionClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -24994,21 +25394,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__0__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__1"
-    // InternalDescartesQL.g:8954:1: rule__ConnectorTimeUnitClause__Group__1 : rule__ConnectorTimeUnitClause__Group__1__Impl ;
-    public final void rule__ConnectorTimeUnitClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__1"
+    // InternalDescartesQL.g:9079:1: rule__FilterConditionClause__Group__1 : rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2 ;
+    public final void rule__FilterConditionClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8958:1: ( rule__ConnectorTimeUnitClause__Group__1__Impl )
-            // InternalDescartesQL.g:8959:2: rule__ConnectorTimeUnitClause__Group__1__Impl
+            // InternalDescartesQL.g:9083:1: ( rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2 )
+            // InternalDescartesQL.g:9084:2: rule__FilterConditionClause__Group__1__Impl rule__FilterConditionClause__Group__2
             {
+            pushFollow(FOLLOW_53);
+            rule__FilterConditionClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ConnectorTimeUnitClause__Group__1__Impl();
+            rule__FilterConditionClause__Group__2();
 
             state._fsp--;
 
@@ -25027,35 +25432,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__1"
+    // $ANTLR end "rule__FilterConditionClause__Group__1"
 
 
-    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__1__Impl"
-    // InternalDescartesQL.g:8965:1: rule__ConnectorTimeUnitClause__Group__1__Impl : ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) ) ;
-    public final void rule__ConnectorTimeUnitClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__1__Impl"
+    // InternalDescartesQL.g:9091:1: rule__FilterConditionClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__FilterConditionClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8969:1: ( ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) ) )
-            // InternalDescartesQL.g:8970:1: ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:8970:1: ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) )
-            // InternalDescartesQL.g:8971:1: ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 )
+            // InternalDescartesQL.g:9095:1: ( ( '(' ) )
+            // InternalDescartesQL.g:9096:1: ( '(' )
             {
-             before(grammarAccess.getConnectorTimeUnitClauseAccess().getTimeIndicatorAssignment_1()); 
-            // InternalDescartesQL.g:8972:1: ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 )
-            // InternalDescartesQL.g:8972:2: rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1
+            // InternalDescartesQL.g:9096:1: ( '(' )
+            // InternalDescartesQL.g:9097:1: '('
             {
-            pushFollow(FOLLOW_2);
-            rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getConnectorTimeUnitClauseAccess().getTimeIndicatorAssignment_1()); 
+             before(grammarAccess.getFilterConditionClauseAccess().getLeftParenthesisKeyword_1()); 
+            match(input,59,FOLLOW_2); 
+             after(grammarAccess.getFilterConditionClauseAccess().getLeftParenthesisKeyword_1()); 
 
             }
 
@@ -25074,26 +25469,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__1__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__0"
-    // InternalDescartesQL.g:8986:1: rule__ConnectorInstanceReferenceClause__Group__0 : rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1 ;
-    public final void rule__ConnectorInstanceReferenceClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__2"
+    // InternalDescartesQL.g:9110:1: rule__FilterConditionClause__Group__2 : rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3 ;
+    public final void rule__FilterConditionClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:8990:1: ( rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1 )
-            // InternalDescartesQL.g:8991:2: rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1
+            // InternalDescartesQL.g:9114:1: ( rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3 )
+            // InternalDescartesQL.g:9115:2: rule__FilterConditionClause__Group__2__Impl rule__FilterConditionClause__Group__3
             {
-            pushFollow(FOLLOW_34);
-            rule__ConnectorInstanceReferenceClause__Group__0__Impl();
+            pushFollow(FOLLOW_11);
+            rule__FilterConditionClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ConnectorInstanceReferenceClause__Group__1();
+            rule__FilterConditionClause__Group__3();
 
             state._fsp--;
 
@@ -25112,35 +25507,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__0"
+    // $ANTLR end "rule__FilterConditionClause__Group__2"
 
 
-    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__0__Impl"
-    // InternalDescartesQL.g:8998:1: rule__ConnectorInstanceReferenceClause__Group__0__Impl : ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) ) ;
-    public final void rule__ConnectorInstanceReferenceClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__2__Impl"
+    // InternalDescartesQL.g:9122:1: rule__FilterConditionClause__Group__2__Impl : ( ( rule__FilterConditionClause__ConditionAssignment_2 ) ) ;
+    public final void rule__FilterConditionClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9002:1: ( ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) ) )
-            // InternalDescartesQL.g:9003:1: ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:9126:1: ( ( ( rule__FilterConditionClause__ConditionAssignment_2 ) ) )
+            // InternalDescartesQL.g:9127:1: ( ( rule__FilterConditionClause__ConditionAssignment_2 ) )
             {
-            // InternalDescartesQL.g:9003:1: ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) )
-            // InternalDescartesQL.g:9004:1: ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 )
+            // InternalDescartesQL.g:9127:1: ( ( rule__FilterConditionClause__ConditionAssignment_2 ) )
+            // InternalDescartesQL.g:9128:1: ( rule__FilterConditionClause__ConditionAssignment_2 )
             {
-             before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getTypeAssignment_0()); 
-            // InternalDescartesQL.g:9005:1: ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 )
-            // InternalDescartesQL.g:9005:2: rule__ConnectorInstanceReferenceClause__TypeAssignment_0
+             before(grammarAccess.getFilterConditionClauseAccess().getConditionAssignment_2()); 
+            // InternalDescartesQL.g:9129:1: ( rule__FilterConditionClause__ConditionAssignment_2 )
+            // InternalDescartesQL.g:9129:2: rule__FilterConditionClause__ConditionAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__ConnectorInstanceReferenceClause__TypeAssignment_0();
+            rule__FilterConditionClause__ConditionAssignment_2();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getConnectorInstanceReferenceClauseAccess().getTypeAssignment_0()); 
+             after(grammarAccess.getFilterConditionClauseAccess().getConditionAssignment_2()); 
 
             }
 
@@ -25159,21 +25554,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__0__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__1"
-    // InternalDescartesQL.g:9015:1: rule__ConnectorInstanceReferenceClause__Group__1 : rule__ConnectorInstanceReferenceClause__Group__1__Impl ;
-    public final void rule__ConnectorInstanceReferenceClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__3"
+    // InternalDescartesQL.g:9139:1: rule__FilterConditionClause__Group__3 : rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4 ;
+    public final void rule__FilterConditionClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9019:1: ( rule__ConnectorInstanceReferenceClause__Group__1__Impl )
-            // InternalDescartesQL.g:9020:2: rule__ConnectorInstanceReferenceClause__Group__1__Impl
+            // InternalDescartesQL.g:9143:1: ( rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4 )
+            // InternalDescartesQL.g:9144:2: rule__FilterConditionClause__Group__3__Impl rule__FilterConditionClause__Group__4
             {
+            pushFollow(FOLLOW_35);
+            rule__FilterConditionClause__Group__3__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ConnectorInstanceReferenceClause__Group__1__Impl();
+            rule__FilterConditionClause__Group__4();
 
             state._fsp--;
 
@@ -25192,35 +25592,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__1"
+    // $ANTLR end "rule__FilterConditionClause__Group__3"
 
 
-    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__1__Impl"
-    // InternalDescartesQL.g:9026:1: rule__ConnectorInstanceReferenceClause__Group__1__Impl : ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) ) ;
-    public final void rule__ConnectorInstanceReferenceClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__3__Impl"
+    // InternalDescartesQL.g:9151:1: rule__FilterConditionClause__Group__3__Impl : ( ',' ) ;
+    public final void rule__FilterConditionClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9030:1: ( ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) ) )
-            // InternalDescartesQL.g:9031:1: ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) )
+            // InternalDescartesQL.g:9155:1: ( ( ',' ) )
+            // InternalDescartesQL.g:9156:1: ( ',' )
             {
-            // InternalDescartesQL.g:9031:1: ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) )
-            // InternalDescartesQL.g:9032:1: ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 )
+            // InternalDescartesQL.g:9156:1: ( ',' )
+            // InternalDescartesQL.g:9157:1: ','
             {
-             before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getIdentifierAssignment_1()); 
-            // InternalDescartesQL.g:9033:1: ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 )
-            // InternalDescartesQL.g:9033:2: rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getConnectorInstanceReferenceClauseAccess().getIdentifierAssignment_1()); 
+             before(grammarAccess.getFilterConditionClauseAccess().getCommaKeyword_3()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getFilterConditionClauseAccess().getCommaKeyword_3()); 
 
             }
 
@@ -25239,26 +25629,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__1__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__ObserveRelativeClause__Group__0"
-    // InternalDescartesQL.g:9047:1: rule__ObserveRelativeClause__Group__0 : rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1 ;
-    public final void rule__ObserveRelativeClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__4"
+    // InternalDescartesQL.g:9170:1: rule__FilterConditionClause__Group__4 : rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5 ;
+    public final void rule__FilterConditionClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9051:1: ( rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1 )
-            // InternalDescartesQL.g:9052:2: rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1
+            // InternalDescartesQL.g:9174:1: ( rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5 )
+            // InternalDescartesQL.g:9175:2: rule__FilterConditionClause__Group__4__Impl rule__FilterConditionClause__Group__5
             {
-            pushFollow(FOLLOW_56);
-            rule__ObserveRelativeClause__Group__0__Impl();
+            pushFollow(FOLLOW_30);
+            rule__FilterConditionClause__Group__4__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ObserveRelativeClause__Group__1();
+            rule__FilterConditionClause__Group__5();
 
             state._fsp--;
 
@@ -25277,35 +25667,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveRelativeClause__Group__0"
+    // $ANTLR end "rule__FilterConditionClause__Group__4"
 
 
-    // $ANTLR start "rule__ObserveRelativeClause__Group__0__Impl"
-    // InternalDescartesQL.g:9059:1: rule__ObserveRelativeClause__Group__0__Impl : ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) ) ;
-    public final void rule__ObserveRelativeClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__4__Impl"
+    // InternalDescartesQL.g:9182:1: rule__FilterConditionClause__Group__4__Impl : ( ( rule__FilterConditionClause__ValueAssignment_4 ) ) ;
+    public final void rule__FilterConditionClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9063:1: ( ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) ) )
-            // InternalDescartesQL.g:9064:1: ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) )
+            // InternalDescartesQL.g:9186:1: ( ( ( rule__FilterConditionClause__ValueAssignment_4 ) ) )
+            // InternalDescartesQL.g:9187:1: ( ( rule__FilterConditionClause__ValueAssignment_4 ) )
             {
-            // InternalDescartesQL.g:9064:1: ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) )
-            // InternalDescartesQL.g:9065:1: ( rule__ObserveRelativeClause__DirectionAssignment_0 )
+            // InternalDescartesQL.g:9187:1: ( ( rule__FilterConditionClause__ValueAssignment_4 ) )
+            // InternalDescartesQL.g:9188:1: ( rule__FilterConditionClause__ValueAssignment_4 )
             {
-             before(grammarAccess.getObserveRelativeClauseAccess().getDirectionAssignment_0()); 
-            // InternalDescartesQL.g:9066:1: ( rule__ObserveRelativeClause__DirectionAssignment_0 )
-            // InternalDescartesQL.g:9066:2: rule__ObserveRelativeClause__DirectionAssignment_0
+             before(grammarAccess.getFilterConditionClauseAccess().getValueAssignment_4()); 
+            // InternalDescartesQL.g:9189:1: ( rule__FilterConditionClause__ValueAssignment_4 )
+            // InternalDescartesQL.g:9189:2: rule__FilterConditionClause__ValueAssignment_4
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveRelativeClause__DirectionAssignment_0();
+            rule__FilterConditionClause__ValueAssignment_4();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveRelativeClauseAccess().getDirectionAssignment_0()); 
+             after(grammarAccess.getFilterConditionClauseAccess().getValueAssignment_4()); 
 
             }
 
@@ -25324,21 +25714,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveRelativeClause__Group__0__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__4__Impl"
 
 
-    // $ANTLR start "rule__ObserveRelativeClause__Group__1"
-    // InternalDescartesQL.g:9076:1: rule__ObserveRelativeClause__Group__1 : rule__ObserveRelativeClause__Group__1__Impl ;
-    public final void rule__ObserveRelativeClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__5"
+    // InternalDescartesQL.g:9199:1: rule__FilterConditionClause__Group__5 : rule__FilterConditionClause__Group__5__Impl ;
+    public final void rule__FilterConditionClause__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9080:1: ( rule__ObserveRelativeClause__Group__1__Impl )
-            // InternalDescartesQL.g:9081:2: rule__ObserveRelativeClause__Group__1__Impl
+            // InternalDescartesQL.g:9203:1: ( rule__FilterConditionClause__Group__5__Impl )
+            // InternalDescartesQL.g:9204:2: rule__FilterConditionClause__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveRelativeClause__Group__1__Impl();
+            rule__FilterConditionClause__Group__5__Impl();
 
             state._fsp--;
 
@@ -25357,35 +25747,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveRelativeClause__Group__1"
+    // $ANTLR end "rule__FilterConditionClause__Group__5"
 
 
-    // $ANTLR start "rule__ObserveRelativeClause__Group__1__Impl"
-    // InternalDescartesQL.g:9087:1: rule__ObserveRelativeClause__Group__1__Impl : ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) ) ;
-    public final void rule__ObserveRelativeClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__FilterConditionClause__Group__5__Impl"
+    // InternalDescartesQL.g:9210:1: rule__FilterConditionClause__Group__5__Impl : ( ')' ) ;
+    public final void rule__FilterConditionClause__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9091:1: ( ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) ) )
-            // InternalDescartesQL.g:9092:1: ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:9092:1: ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) )
-            // InternalDescartesQL.g:9093:1: ( rule__ObserveRelativeClause__TimeTargetAssignment_1 )
+            // InternalDescartesQL.g:9214:1: ( ( ')' ) )
+            // InternalDescartesQL.g:9215:1: ( ')' )
             {
-             before(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAssignment_1()); 
-            // InternalDescartesQL.g:9094:1: ( rule__ObserveRelativeClause__TimeTargetAssignment_1 )
-            // InternalDescartesQL.g:9094:2: rule__ObserveRelativeClause__TimeTargetAssignment_1
+            // InternalDescartesQL.g:9215:1: ( ')' )
+            // InternalDescartesQL.g:9216:1: ')'
             {
-            pushFollow(FOLLOW_2);
-            rule__ObserveRelativeClause__TimeTargetAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAssignment_1()); 
+             before(grammarAccess.getFilterConditionClauseAccess().getRightParenthesisKeyword_5()); 
+            match(input,60,FOLLOW_2); 
+             after(grammarAccess.getFilterConditionClauseAccess().getRightParenthesisKeyword_5()); 
 
             }
 
@@ -25404,26 +25784,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveRelativeClause__Group__1__Impl"
+    // $ANTLR end "rule__FilterConditionClause__Group__5__Impl"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__0"
-    // InternalDescartesQL.g:9108:1: rule__ObserveBetweenClause__Group__0 : rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1 ;
-    public final void rule__ObserveBetweenClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__0"
+    // InternalDescartesQL.g:9241:1: rule__ObserveClause__Group__0 : rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1 ;
+    public final void rule__ObserveClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9112:1: ( rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1 )
-            // InternalDescartesQL.g:9113:2: rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1
+            // InternalDescartesQL.g:9245:1: ( rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1 )
+            // InternalDescartesQL.g:9246:2: rule__ObserveClause__Group__0__Impl rule__ObserveClause__Group__1
             {
-            pushFollow(FOLLOW_57);
-            rule__ObserveBetweenClause__Group__0__Impl();
+            pushFollow(FOLLOW_54);
+            rule__ObserveClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Group__1();
+            rule__ObserveClause__Group__1();
 
             state._fsp--;
 
@@ -25442,35 +25822,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__0"
+    // $ANTLR end "rule__ObserveClause__Group__0"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__0__Impl"
-    // InternalDescartesQL.g:9120:1: rule__ObserveBetweenClause__Group__0__Impl : ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) ) ;
-    public final void rule__ObserveBetweenClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__0__Impl"
+    // InternalDescartesQL.g:9253:1: rule__ObserveClause__Group__0__Impl : ( ( rule__ObserveClause__ModeAssignment_0 ) ) ;
+    public final void rule__ObserveClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9124:1: ( ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) ) )
-            // InternalDescartesQL.g:9125:1: ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) )
+            // InternalDescartesQL.g:9257:1: ( ( ( rule__ObserveClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:9258:1: ( ( rule__ObserveClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9125:1: ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) )
-            // InternalDescartesQL.g:9126:1: ( rule__ObserveBetweenClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:9258:1: ( ( rule__ObserveClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:9259:1: ( rule__ObserveClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getObserveBetweenClauseAccess().getMode1Assignment_0()); 
-            // InternalDescartesQL.g:9127:1: ( rule__ObserveBetweenClause__Mode1Assignment_0 )
-            // InternalDescartesQL.g:9127:2: rule__ObserveBetweenClause__Mode1Assignment_0
+             before(grammarAccess.getObserveClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:9260:1: ( rule__ObserveClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:9260:2: rule__ObserveClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Mode1Assignment_0();
+            rule__ObserveClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveBetweenClauseAccess().getMode1Assignment_0()); 
+             after(grammarAccess.getObserveClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -25489,26 +25869,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__0__Impl"
+    // $ANTLR end "rule__ObserveClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__1"
-    // InternalDescartesQL.g:9137:1: rule__ObserveBetweenClause__Group__1 : rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2 ;
-    public final void rule__ObserveBetweenClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__1"
+    // InternalDescartesQL.g:9270:1: rule__ObserveClause__Group__1 : rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2 ;
+    public final void rule__ObserveClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9141:1: ( rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2 )
-            // InternalDescartesQL.g:9142:2: rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2
+            // InternalDescartesQL.g:9274:1: ( rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2 )
+            // InternalDescartesQL.g:9275:2: rule__ObserveClause__Group__1__Impl rule__ObserveClause__Group__2
             {
-            pushFollow(FOLLOW_58);
-            rule__ObserveBetweenClause__Group__1__Impl();
+            pushFollow(FOLLOW_55);
+            rule__ObserveClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Group__2();
+            rule__ObserveClause__Group__2();
 
             state._fsp--;
 
@@ -25527,35 +25907,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__1"
+    // $ANTLR end "rule__ObserveClause__Group__1"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__1__Impl"
-    // InternalDescartesQL.g:9149:1: rule__ObserveBetweenClause__Group__1__Impl : ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) ) ;
-    public final void rule__ObserveBetweenClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__1__Impl"
+    // InternalDescartesQL.g:9282:1: rule__ObserveClause__Group__1__Impl : ( ( rule__ObserveClause__ObservationAssignment_1 ) ) ;
+    public final void rule__ObserveClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9153:1: ( ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) ) )
-            // InternalDescartesQL.g:9154:1: ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) )
+            // InternalDescartesQL.g:9286:1: ( ( ( rule__ObserveClause__ObservationAssignment_1 ) ) )
+            // InternalDescartesQL.g:9287:1: ( ( rule__ObserveClause__ObservationAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9154:1: ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) )
-            // InternalDescartesQL.g:9155:1: ( rule__ObserveBetweenClause__StartingTimeAssignment_1 )
+            // InternalDescartesQL.g:9287:1: ( ( rule__ObserveClause__ObservationAssignment_1 ) )
+            // InternalDescartesQL.g:9288:1: ( rule__ObserveClause__ObservationAssignment_1 )
             {
-             before(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAssignment_1()); 
-            // InternalDescartesQL.g:9156:1: ( rule__ObserveBetweenClause__StartingTimeAssignment_1 )
-            // InternalDescartesQL.g:9156:2: rule__ObserveBetweenClause__StartingTimeAssignment_1
+             before(grammarAccess.getObserveClauseAccess().getObservationAssignment_1()); 
+            // InternalDescartesQL.g:9289:1: ( rule__ObserveClause__ObservationAssignment_1 )
+            // InternalDescartesQL.g:9289:2: rule__ObserveClause__ObservationAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__StartingTimeAssignment_1();
+            rule__ObserveClause__ObservationAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAssignment_1()); 
+             after(grammarAccess.getObserveClauseAccess().getObservationAssignment_1()); 
 
             }
 
@@ -25574,26 +25954,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__1__Impl"
+    // $ANTLR end "rule__ObserveClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__2"
-    // InternalDescartesQL.g:9166:1: rule__ObserveBetweenClause__Group__2 : rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3 ;
-    public final void rule__ObserveBetweenClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__2"
+    // InternalDescartesQL.g:9299:1: rule__ObserveClause__Group__2 : rule__ObserveClause__Group__2__Impl ;
+    public final void rule__ObserveClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9170:1: ( rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3 )
-            // InternalDescartesQL.g:9171:2: rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3
+            // InternalDescartesQL.g:9303:1: ( rule__ObserveClause__Group__2__Impl )
+            // InternalDescartesQL.g:9304:2: rule__ObserveClause__Group__2__Impl
             {
-            pushFollow(FOLLOW_57);
-            rule__ObserveBetweenClause__Group__2__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Group__3();
+            rule__ObserveClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -25612,35 +25987,46 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__2"
+    // $ANTLR end "rule__ObserveClause__Group__2"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__2__Impl"
-    // InternalDescartesQL.g:9178:1: rule__ObserveBetweenClause__Group__2__Impl : ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) ) ;
-    public final void rule__ObserveBetweenClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveClause__Group__2__Impl"
+    // InternalDescartesQL.g:9310:1: rule__ObserveClause__Group__2__Impl : ( ( rule__ObserveClause__SampleClauseAssignment_2 )? ) ;
+    public final void rule__ObserveClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9182:1: ( ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) ) )
-            // InternalDescartesQL.g:9183:1: ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) )
-            {
-            // InternalDescartesQL.g:9183:1: ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) )
-            // InternalDescartesQL.g:9184:1: ( rule__ObserveBetweenClause__Mode2Assignment_2 )
+            // InternalDescartesQL.g:9314:1: ( ( ( rule__ObserveClause__SampleClauseAssignment_2 )? ) )
+            // InternalDescartesQL.g:9315:1: ( ( rule__ObserveClause__SampleClauseAssignment_2 )? )
             {
-             before(grammarAccess.getObserveBetweenClauseAccess().getMode2Assignment_2()); 
-            // InternalDescartesQL.g:9185:1: ( rule__ObserveBetweenClause__Mode2Assignment_2 )
-            // InternalDescartesQL.g:9185:2: rule__ObserveBetweenClause__Mode2Assignment_2
+            // InternalDescartesQL.g:9315:1: ( ( rule__ObserveClause__SampleClauseAssignment_2 )? )
+            // InternalDescartesQL.g:9316:1: ( rule__ObserveClause__SampleClauseAssignment_2 )?
             {
-            pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Mode2Assignment_2();
+             before(grammarAccess.getObserveClauseAccess().getSampleClauseAssignment_2()); 
+            // InternalDescartesQL.g:9317:1: ( rule__ObserveClause__SampleClauseAssignment_2 )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
 
-            state._fsp--;
+            if ( (LA70_0==104) ) {
+                alt70=1;
+            }
+            switch (alt70) {
+                case 1 :
+                    // InternalDescartesQL.g:9317:2: rule__ObserveClause__SampleClauseAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ObserveClause__SampleClauseAssignment_2();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
-             after(grammarAccess.getObserveBetweenClauseAccess().getMode2Assignment_2()); 
+             after(grammarAccess.getObserveClauseAccess().getSampleClauseAssignment_2()); 
 
             }
 
@@ -25659,21 +26045,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__2__Impl"
+    // $ANTLR end "rule__ObserveClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__3"
-    // InternalDescartesQL.g:9195:1: rule__ObserveBetweenClause__Group__3 : rule__ObserveBetweenClause__Group__3__Impl ;
-    public final void rule__ObserveBetweenClause__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__0"
+    // InternalDescartesQL.g:9333:1: rule__SampleClause__Group__0 : rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1 ;
+    public final void rule__SampleClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9199:1: ( rule__ObserveBetweenClause__Group__3__Impl )
-            // InternalDescartesQL.g:9200:2: rule__ObserveBetweenClause__Group__3__Impl
+            // InternalDescartesQL.g:9337:1: ( rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1 )
+            // InternalDescartesQL.g:9338:2: rule__SampleClause__Group__0__Impl rule__SampleClause__Group__1
             {
+            pushFollow(FOLLOW_22);
+            rule__SampleClause__Group__0__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__Group__3__Impl();
+            rule__SampleClause__Group__1();
 
             state._fsp--;
 
@@ -25692,35 +26083,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__3"
+    // $ANTLR end "rule__SampleClause__Group__0"
 
 
-    // $ANTLR start "rule__ObserveBetweenClause__Group__3__Impl"
-    // InternalDescartesQL.g:9206:1: rule__ObserveBetweenClause__Group__3__Impl : ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) ) ;
-    public final void rule__ObserveBetweenClause__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__0__Impl"
+    // InternalDescartesQL.g:9345:1: rule__SampleClause__Group__0__Impl : ( ( rule__SampleClause__ModeAssignment_0 ) ) ;
+    public final void rule__SampleClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9210:1: ( ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) ) )
-            // InternalDescartesQL.g:9211:1: ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) )
+            // InternalDescartesQL.g:9349:1: ( ( ( rule__SampleClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:9350:1: ( ( rule__SampleClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9211:1: ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) )
-            // InternalDescartesQL.g:9212:1: ( rule__ObserveBetweenClause__EndingTimeAssignment_3 )
+            // InternalDescartesQL.g:9350:1: ( ( rule__SampleClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:9351:1: ( rule__SampleClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAssignment_3()); 
-            // InternalDescartesQL.g:9213:1: ( rule__ObserveBetweenClause__EndingTimeAssignment_3 )
-            // InternalDescartesQL.g:9213:2: rule__ObserveBetweenClause__EndingTimeAssignment_3
+             before(grammarAccess.getSampleClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:9352:1: ( rule__SampleClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:9352:2: rule__SampleClause__ModeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__ObserveBetweenClause__EndingTimeAssignment_3();
+            rule__SampleClause__ModeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAssignment_3()); 
+             after(grammarAccess.getSampleClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -25739,26 +26130,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ObserveBetweenClause__Group__3__Impl"
+    // $ANTLR end "rule__SampleClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__0"
-    // InternalDescartesQL.g:9231:1: rule__RelativeTimeWithSignClause__Group__0 : rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1 ;
-    public final void rule__RelativeTimeWithSignClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__1"
+    // InternalDescartesQL.g:9362:1: rule__SampleClause__Group__1 : rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2 ;
+    public final void rule__SampleClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9235:1: ( rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1 )
-            // InternalDescartesQL.g:9236:2: rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1
+            // InternalDescartesQL.g:9366:1: ( rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2 )
+            // InternalDescartesQL.g:9367:2: rule__SampleClause__Group__1__Impl rule__SampleClause__Group__2
             {
-            pushFollow(FOLLOW_56);
-            rule__RelativeTimeWithSignClause__Group__0__Impl();
+            pushFollow(FOLLOW_22);
+            rule__SampleClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeWithSignClause__Group__1();
+            rule__SampleClause__Group__2();
 
             state._fsp--;
 
@@ -25777,35 +26168,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__0"
+    // $ANTLR end "rule__SampleClause__Group__1"
 
 
-    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__0__Impl"
-    // InternalDescartesQL.g:9243:1: rule__RelativeTimeWithSignClause__Group__0__Impl : ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) ) ;
-    public final void rule__RelativeTimeWithSignClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__1__Impl"
+    // InternalDescartesQL.g:9374:1: rule__SampleClause__Group__1__Impl : ( ( rule__SampleClause__DurationClauseAssignment_1 ) ) ;
+    public final void rule__SampleClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9247:1: ( ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) ) )
-            // InternalDescartesQL.g:9248:1: ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) )
+            // InternalDescartesQL.g:9378:1: ( ( ( rule__SampleClause__DurationClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:9379:1: ( ( rule__SampleClause__DurationClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9248:1: ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) )
-            // InternalDescartesQL.g:9249:1: ( rule__RelativeTimeWithSignClause__SignAssignment_0 )
+            // InternalDescartesQL.g:9379:1: ( ( rule__SampleClause__DurationClauseAssignment_1 ) )
+            // InternalDescartesQL.g:9380:1: ( rule__SampleClause__DurationClauseAssignment_1 )
             {
-             before(grammarAccess.getRelativeTimeWithSignClauseAccess().getSignAssignment_0()); 
-            // InternalDescartesQL.g:9250:1: ( rule__RelativeTimeWithSignClause__SignAssignment_0 )
-            // InternalDescartesQL.g:9250:2: rule__RelativeTimeWithSignClause__SignAssignment_0
+             before(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_1()); 
+            // InternalDescartesQL.g:9381:1: ( rule__SampleClause__DurationClauseAssignment_1 )
+            // InternalDescartesQL.g:9381:2: rule__SampleClause__DurationClauseAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeWithSignClause__SignAssignment_0();
+            rule__SampleClause__DurationClauseAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getRelativeTimeWithSignClauseAccess().getSignAssignment_0()); 
+             after(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_1()); 
 
             }
 
@@ -25824,21 +26215,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__0__Impl"
+    // $ANTLR end "rule__SampleClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__1"
-    // InternalDescartesQL.g:9260:1: rule__RelativeTimeWithSignClause__Group__1 : rule__RelativeTimeWithSignClause__Group__1__Impl ;
-    public final void rule__RelativeTimeWithSignClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__2"
+    // InternalDescartesQL.g:9391:1: rule__SampleClause__Group__2 : rule__SampleClause__Group__2__Impl ;
+    public final void rule__SampleClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9264:1: ( rule__RelativeTimeWithSignClause__Group__1__Impl )
-            // InternalDescartesQL.g:9265:2: rule__RelativeTimeWithSignClause__Group__1__Impl
+            // InternalDescartesQL.g:9395:1: ( rule__SampleClause__Group__2__Impl )
+            // InternalDescartesQL.g:9396:2: rule__SampleClause__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeWithSignClause__Group__1__Impl();
+            rule__SampleClause__Group__2__Impl();
 
             state._fsp--;
 
@@ -25857,35 +26248,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__1"
+    // $ANTLR end "rule__SampleClause__Group__2"
 
 
-    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__1__Impl"
-    // InternalDescartesQL.g:9271:1: rule__RelativeTimeWithSignClause__Group__1__Impl : ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) ) ;
-    public final void rule__RelativeTimeWithSignClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__SampleClause__Group__2__Impl"
+    // InternalDescartesQL.g:9402:1: rule__SampleClause__Group__2__Impl : ( ( rule__SampleClause__DurationClauseAssignment_2 )* ) ;
+    public final void rule__SampleClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9275:1: ( ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) ) )
-            // InternalDescartesQL.g:9276:1: ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:9276:1: ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) )
-            // InternalDescartesQL.g:9277:1: ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 )
+            // InternalDescartesQL.g:9406:1: ( ( ( rule__SampleClause__DurationClauseAssignment_2 )* ) )
+            // InternalDescartesQL.g:9407:1: ( ( rule__SampleClause__DurationClauseAssignment_2 )* )
             {
-             before(grammarAccess.getRelativeTimeWithSignClauseAccess().getTimeClauseAssignment_1()); 
-            // InternalDescartesQL.g:9278:1: ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 )
-            // InternalDescartesQL.g:9278:2: rule__RelativeTimeWithSignClause__TimeClauseAssignment_1
+            // InternalDescartesQL.g:9407:1: ( ( rule__SampleClause__DurationClauseAssignment_2 )* )
+            // InternalDescartesQL.g:9408:1: ( rule__SampleClause__DurationClauseAssignment_2 )*
             {
-            pushFollow(FOLLOW_2);
-            rule__RelativeTimeWithSignClause__TimeClauseAssignment_1();
+             before(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_2()); 
+            // InternalDescartesQL.g:9409:1: ( rule__SampleClause__DurationClauseAssignment_2 )*
+            loop71:
+            do {
+                int alt71=2;
+                int LA71_0 = input.LA(1);
 
-            state._fsp--;
+                if ( (LA71_0==RULE_INT) ) {
+                    alt71=1;
+                }
 
 
-            }
+                switch (alt71) {
+            	case 1 :
+            	    // InternalDescartesQL.g:9409:2: rule__SampleClause__DurationClauseAssignment_2
+            	    {
+            	    pushFollow(FOLLOW_56);
+            	    rule__SampleClause__DurationClauseAssignment_2();
 
-             after(grammarAccess.getRelativeTimeWithSignClauseAccess().getTimeClauseAssignment_1()); 
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop71;
+                }
+            } while (true);
+
+             after(grammarAccess.getSampleClauseAccess().getDurationClauseAssignment_2()); 
 
             }
 
@@ -25904,26 +26313,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__1__Impl"
+    // $ANTLR end "rule__SampleClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeClause__Group__0"
-    // InternalDescartesQL.g:9292:1: rule__RelativeTimeClause__Group__0 : rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1 ;
-    public final void rule__RelativeTimeClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__0"
+    // InternalDescartesQL.g:9425:1: rule__ConnectorTimeUnitClause__Group__0 : rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1 ;
+    public final void rule__ConnectorTimeUnitClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9296:1: ( rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1 )
-            // InternalDescartesQL.g:9297:2: rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1
+            // InternalDescartesQL.g:9429:1: ( rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1 )
+            // InternalDescartesQL.g:9430:2: rule__ConnectorTimeUnitClause__Group__0__Impl rule__ConnectorTimeUnitClause__Group__1
             {
-            pushFollow(FOLLOW_19);
-            rule__RelativeTimeClause__Group__0__Impl();
+            pushFollow(FOLLOW_10);
+            rule__ConnectorTimeUnitClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeClause__Group__1();
+            rule__ConnectorTimeUnitClause__Group__1();
 
             state._fsp--;
 
@@ -25942,35 +26351,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeClause__Group__0"
+    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__0"
 
 
-    // $ANTLR start "rule__RelativeTimeClause__Group__0__Impl"
-    // InternalDescartesQL.g:9304:1: rule__RelativeTimeClause__Group__0__Impl : ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) ) ;
-    public final void rule__RelativeTimeClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__0__Impl"
+    // InternalDescartesQL.g:9437:1: rule__ConnectorTimeUnitClause__Group__0__Impl : ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) ) ;
+    public final void rule__ConnectorTimeUnitClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9308:1: ( ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) ) )
-            // InternalDescartesQL.g:9309:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) )
+            // InternalDescartesQL.g:9441:1: ( ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) ) )
+            // InternalDescartesQL.g:9442:1: ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9309:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) )
-            // InternalDescartesQL.g:9310:1: ( rule__RelativeTimeClause__DurationClauseAssignment_0 )
+            // InternalDescartesQL.g:9442:1: ( ( rule__ConnectorTimeUnitClause__CountAssignment_0 ) )
+            // InternalDescartesQL.g:9443:1: ( rule__ConnectorTimeUnitClause__CountAssignment_0 )
             {
-             before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_0()); 
-            // InternalDescartesQL.g:9311:1: ( rule__RelativeTimeClause__DurationClauseAssignment_0 )
-            // InternalDescartesQL.g:9311:2: rule__RelativeTimeClause__DurationClauseAssignment_0
+             before(grammarAccess.getConnectorTimeUnitClauseAccess().getCountAssignment_0()); 
+            // InternalDescartesQL.g:9444:1: ( rule__ConnectorTimeUnitClause__CountAssignment_0 )
+            // InternalDescartesQL.g:9444:2: rule__ConnectorTimeUnitClause__CountAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeClause__DurationClauseAssignment_0();
+            rule__ConnectorTimeUnitClause__CountAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_0()); 
+             after(grammarAccess.getConnectorTimeUnitClauseAccess().getCountAssignment_0()); 
 
             }
 
@@ -25989,21 +26398,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeClause__Group__0__Impl"
+    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeClause__Group__1"
-    // InternalDescartesQL.g:9321:1: rule__RelativeTimeClause__Group__1 : rule__RelativeTimeClause__Group__1__Impl ;
-    public final void rule__RelativeTimeClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__1"
+    // InternalDescartesQL.g:9454:1: rule__ConnectorTimeUnitClause__Group__1 : rule__ConnectorTimeUnitClause__Group__1__Impl ;
+    public final void rule__ConnectorTimeUnitClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9325:1: ( rule__RelativeTimeClause__Group__1__Impl )
-            // InternalDescartesQL.g:9326:2: rule__RelativeTimeClause__Group__1__Impl
+            // InternalDescartesQL.g:9458:1: ( rule__ConnectorTimeUnitClause__Group__1__Impl )
+            // InternalDescartesQL.g:9459:2: rule__ConnectorTimeUnitClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeClause__Group__1__Impl();
+            rule__ConnectorTimeUnitClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -26022,53 +26431,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeClause__Group__1"
+    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__1"
 
 
-    // $ANTLR start "rule__RelativeTimeClause__Group__1__Impl"
-    // InternalDescartesQL.g:9332:1: rule__RelativeTimeClause__Group__1__Impl : ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* ) ;
-    public final void rule__RelativeTimeClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorTimeUnitClause__Group__1__Impl"
+    // InternalDescartesQL.g:9465:1: rule__ConnectorTimeUnitClause__Group__1__Impl : ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) ) ;
+    public final void rule__ConnectorTimeUnitClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9336:1: ( ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* ) )
-            // InternalDescartesQL.g:9337:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* )
+            // InternalDescartesQL.g:9469:1: ( ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) ) )
+            // InternalDescartesQL.g:9470:1: ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9337:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* )
-            // InternalDescartesQL.g:9338:1: ( rule__RelativeTimeClause__DurationClauseAssignment_1 )*
+            // InternalDescartesQL.g:9470:1: ( ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 ) )
+            // InternalDescartesQL.g:9471:1: ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 )
             {
-             before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_1()); 
-            // InternalDescartesQL.g:9339:1: ( rule__RelativeTimeClause__DurationClauseAssignment_1 )*
-            loop65:
-            do {
-                int alt65=2;
-                int LA65_0 = input.LA(1);
-
-                if ( (LA65_0==RULE_INT) ) {
-                    alt65=1;
-                }
-
-
-                switch (alt65) {
-            	case 1 :
-            	    // InternalDescartesQL.g:9339:2: rule__RelativeTimeClause__DurationClauseAssignment_1
-            	    {
-            	    pushFollow(FOLLOW_55);
-            	    rule__RelativeTimeClause__DurationClauseAssignment_1();
-
-            	    state._fsp--;
+             before(grammarAccess.getConnectorTimeUnitClauseAccess().getTimeIndicatorAssignment_1()); 
+            // InternalDescartesQL.g:9472:1: ( rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 )
+            // InternalDescartesQL.g:9472:2: rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop65;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_1()); 
+             after(grammarAccess.getConnectorTimeUnitClauseAccess().getTimeIndicatorAssignment_1()); 
 
             }
 
@@ -26087,26 +26478,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeClause__Group__1__Impl"
+    // $ANTLR end "rule__ConnectorTimeUnitClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeDurationClause__Group__0"
-    // InternalDescartesQL.g:9353:1: rule__RelativeTimeDurationClause__Group__0 : rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1 ;
-    public final void rule__RelativeTimeDurationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__0"
+    // InternalDescartesQL.g:9486:1: rule__ConnectorInstanceReferenceClause__Group__0 : rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1 ;
+    public final void rule__ConnectorInstanceReferenceClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9357:1: ( rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1 )
-            // InternalDescartesQL.g:9358:2: rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1
+            // InternalDescartesQL.g:9490:1: ( rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1 )
+            // InternalDescartesQL.g:9491:2: rule__ConnectorInstanceReferenceClause__Group__0__Impl rule__ConnectorInstanceReferenceClause__Group__1
             {
-            pushFollow(FOLLOW_59);
-            rule__RelativeTimeDurationClause__Group__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__ConnectorInstanceReferenceClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeDurationClause__Group__1();
+            rule__ConnectorInstanceReferenceClause__Group__1();
 
             state._fsp--;
 
@@ -26125,35 +26516,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeDurationClause__Group__0"
+    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__0"
 
 
-    // $ANTLR start "rule__RelativeTimeDurationClause__Group__0__Impl"
-    // InternalDescartesQL.g:9365:1: rule__RelativeTimeDurationClause__Group__0__Impl : ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) ) ;
-    public final void rule__RelativeTimeDurationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__0__Impl"
+    // InternalDescartesQL.g:9498:1: rule__ConnectorInstanceReferenceClause__Group__0__Impl : ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) ) ;
+    public final void rule__ConnectorInstanceReferenceClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9369:1: ( ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) ) )
-            // InternalDescartesQL.g:9370:1: ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) )
+            // InternalDescartesQL.g:9502:1: ( ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) ) )
+            // InternalDescartesQL.g:9503:1: ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9370:1: ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) )
-            // InternalDescartesQL.g:9371:1: ( rule__RelativeTimeDurationClause__DurationAssignment_0 )
+            // InternalDescartesQL.g:9503:1: ( ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 ) )
+            // InternalDescartesQL.g:9504:1: ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 )
             {
-             before(grammarAccess.getRelativeTimeDurationClauseAccess().getDurationAssignment_0()); 
-            // InternalDescartesQL.g:9372:1: ( rule__RelativeTimeDurationClause__DurationAssignment_0 )
-            // InternalDescartesQL.g:9372:2: rule__RelativeTimeDurationClause__DurationAssignment_0
+             before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getTypeAssignment_0()); 
+            // InternalDescartesQL.g:9505:1: ( rule__ConnectorInstanceReferenceClause__TypeAssignment_0 )
+            // InternalDescartesQL.g:9505:2: rule__ConnectorInstanceReferenceClause__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeDurationClause__DurationAssignment_0();
+            rule__ConnectorInstanceReferenceClause__TypeAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getRelativeTimeDurationClauseAccess().getDurationAssignment_0()); 
+             after(grammarAccess.getConnectorInstanceReferenceClauseAccess().getTypeAssignment_0()); 
 
             }
 
@@ -26172,21 +26563,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeDurationClause__Group__0__Impl"
+    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__RelativeTimeDurationClause__Group__1"
-    // InternalDescartesQL.g:9382:1: rule__RelativeTimeDurationClause__Group__1 : rule__RelativeTimeDurationClause__Group__1__Impl ;
-    public final void rule__RelativeTimeDurationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__1"
+    // InternalDescartesQL.g:9515:1: rule__ConnectorInstanceReferenceClause__Group__1 : rule__ConnectorInstanceReferenceClause__Group__1__Impl ;
+    public final void rule__ConnectorInstanceReferenceClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9386:1: ( rule__RelativeTimeDurationClause__Group__1__Impl )
-            // InternalDescartesQL.g:9387:2: rule__RelativeTimeDurationClause__Group__1__Impl
+            // InternalDescartesQL.g:9519:1: ( rule__ConnectorInstanceReferenceClause__Group__1__Impl )
+            // InternalDescartesQL.g:9520:2: rule__ConnectorInstanceReferenceClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeDurationClause__Group__1__Impl();
+            rule__ConnectorInstanceReferenceClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -26205,35 +26596,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeDurationClause__Group__1"
+    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__1"
 
 
-    // $ANTLR start "rule__RelativeTimeDurationClause__Group__1__Impl"
-    // InternalDescartesQL.g:9393:1: rule__RelativeTimeDurationClause__Group__1__Impl : ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) ) ;
-    public final void rule__RelativeTimeDurationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ConnectorInstanceReferenceClause__Group__1__Impl"
+    // InternalDescartesQL.g:9526:1: rule__ConnectorInstanceReferenceClause__Group__1__Impl : ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) ) ;
+    public final void rule__ConnectorInstanceReferenceClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9397:1: ( ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) ) )
-            // InternalDescartesQL.g:9398:1: ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) )
+            // InternalDescartesQL.g:9530:1: ( ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) ) )
+            // InternalDescartesQL.g:9531:1: ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9398:1: ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) )
-            // InternalDescartesQL.g:9399:1: ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 )
+            // InternalDescartesQL.g:9531:1: ( ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 ) )
+            // InternalDescartesQL.g:9532:1: ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 )
             {
-             before(grammarAccess.getRelativeTimeDurationClauseAccess().getTimeModifierAssignment_1()); 
-            // InternalDescartesQL.g:9400:1: ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 )
-            // InternalDescartesQL.g:9400:2: rule__RelativeTimeDurationClause__TimeModifierAssignment_1
+             before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getIdentifierAssignment_1()); 
+            // InternalDescartesQL.g:9533:1: ( rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 )
+            // InternalDescartesQL.g:9533:2: rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__RelativeTimeDurationClause__TimeModifierAssignment_1();
+            rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getRelativeTimeDurationClauseAccess().getTimeModifierAssignment_1()); 
+             after(grammarAccess.getConnectorInstanceReferenceClauseAccess().getIdentifierAssignment_1()); 
 
             }
 
@@ -26252,26 +26643,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__RelativeTimeDurationClause__Group__1__Impl"
+    // $ANTLR end "rule__ConnectorInstanceReferenceClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__0"
-    // InternalDescartesQL.g:9414:1: rule__WhatIfQuery__Group__0 : rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1 ;
-    public final void rule__WhatIfQuery__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__ObserveRelativeClause__Group__0"
+    // InternalDescartesQL.g:9547:1: rule__ObserveRelativeClause__Group__0 : rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1 ;
+    public final void rule__ObserveRelativeClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9418:1: ( rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1 )
-            // InternalDescartesQL.g:9419:2: rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1
+            // InternalDescartesQL.g:9551:1: ( rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1 )
+            // InternalDescartesQL.g:9552:2: rule__ObserveRelativeClause__Group__0__Impl rule__ObserveRelativeClause__Group__1
             {
-            pushFollow(FOLLOW_34);
-            rule__WhatIfQuery__Group__0__Impl();
+            pushFollow(FOLLOW_57);
+            rule__ObserveRelativeClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__1();
+            rule__ObserveRelativeClause__Group__1();
 
             state._fsp--;
 
@@ -26290,25 +26681,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__0"
+    // $ANTLR end "rule__ObserveRelativeClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__0__Impl"
-    // InternalDescartesQL.g:9426:1: rule__WhatIfQuery__Group__0__Impl : ( 'WHAT IF' ) ;
-    public final void rule__WhatIfQuery__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveRelativeClause__Group__0__Impl"
+    // InternalDescartesQL.g:9559:1: rule__ObserveRelativeClause__Group__0__Impl : ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) ) ;
+    public final void rule__ObserveRelativeClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9430:1: ( ( 'WHAT IF' ) )
-            // InternalDescartesQL.g:9431:1: ( 'WHAT IF' )
+            // InternalDescartesQL.g:9563:1: ( ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) ) )
+            // InternalDescartesQL.g:9564:1: ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9431:1: ( 'WHAT IF' )
-            // InternalDescartesQL.g:9432:1: 'WHAT IF'
+            // InternalDescartesQL.g:9564:1: ( ( rule__ObserveRelativeClause__DirectionAssignment_0 ) )
+            // InternalDescartesQL.g:9565:1: ( rule__ObserveRelativeClause__DirectionAssignment_0 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getWHATIFKeyword_0()); 
-            match(input,73,FOLLOW_2); 
-             after(grammarAccess.getWhatIfQueryAccess().getWHATIFKeyword_0()); 
+             before(grammarAccess.getObserveRelativeClauseAccess().getDirectionAssignment_0()); 
+            // InternalDescartesQL.g:9566:1: ( rule__ObserveRelativeClause__DirectionAssignment_0 )
+            // InternalDescartesQL.g:9566:2: rule__ObserveRelativeClause__DirectionAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ObserveRelativeClause__DirectionAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getObserveRelativeClauseAccess().getDirectionAssignment_0()); 
 
             }
 
@@ -26327,26 +26728,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__0__Impl"
+    // $ANTLR end "rule__ObserveRelativeClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__1"
-    // InternalDescartesQL.g:9445:1: rule__WhatIfQuery__Group__1 : rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2 ;
-    public final void rule__WhatIfQuery__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__ObserveRelativeClause__Group__1"
+    // InternalDescartesQL.g:9576:1: rule__ObserveRelativeClause__Group__1 : rule__ObserveRelativeClause__Group__1__Impl ;
+    public final void rule__ObserveRelativeClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9449:1: ( rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2 )
-            // InternalDescartesQL.g:9450:2: rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2
+            // InternalDescartesQL.g:9580:1: ( rule__ObserveRelativeClause__Group__1__Impl )
+            // InternalDescartesQL.g:9581:2: rule__ObserveRelativeClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_60);
-            rule__WhatIfQuery__Group__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__2();
+            rule__ObserveRelativeClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -26365,35 +26761,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__1"
+    // $ANTLR end "rule__ObserveRelativeClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__1__Impl"
-    // InternalDescartesQL.g:9457:1: rule__WhatIfQuery__Group__1__Impl : ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) ) ;
-    public final void rule__WhatIfQuery__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveRelativeClause__Group__1__Impl"
+    // InternalDescartesQL.g:9587:1: rule__ObserveRelativeClause__Group__1__Impl : ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) ) ;
+    public final void rule__ObserveRelativeClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9461:1: ( ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) ) )
-            // InternalDescartesQL.g:9462:1: ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) )
+            // InternalDescartesQL.g:9591:1: ( ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) ) )
+            // InternalDescartesQL.g:9592:1: ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9462:1: ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) )
-            // InternalDescartesQL.g:9463:1: ( rule__WhatIfQuery__WhatIfVariationAssignment_1 )
+            // InternalDescartesQL.g:9592:1: ( ( rule__ObserveRelativeClause__TimeTargetAssignment_1 ) )
+            // InternalDescartesQL.g:9593:1: ( rule__ObserveRelativeClause__TimeTargetAssignment_1 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getWhatIfVariationAssignment_1()); 
-            // InternalDescartesQL.g:9464:1: ( rule__WhatIfQuery__WhatIfVariationAssignment_1 )
-            // InternalDescartesQL.g:9464:2: rule__WhatIfQuery__WhatIfVariationAssignment_1
+             before(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAssignment_1()); 
+            // InternalDescartesQL.g:9594:1: ( rule__ObserveRelativeClause__TimeTargetAssignment_1 )
+            // InternalDescartesQL.g:9594:2: rule__ObserveRelativeClause__TimeTargetAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__WhatIfVariationAssignment_1();
+            rule__ObserveRelativeClause__TimeTargetAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getWhatIfVariationAssignment_1()); 
+             after(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAssignment_1()); 
 
             }
 
@@ -26412,26 +26808,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__1__Impl"
+    // $ANTLR end "rule__ObserveRelativeClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__2"
-    // InternalDescartesQL.g:9474:1: rule__WhatIfQuery__Group__2 : rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3 ;
-    public final void rule__WhatIfQuery__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__0"
+    // InternalDescartesQL.g:9608:1: rule__ObserveBetweenClause__Group__0 : rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1 ;
+    public final void rule__ObserveBetweenClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9478:1: ( rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3 )
-            // InternalDescartesQL.g:9479:2: rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3
+            // InternalDescartesQL.g:9612:1: ( rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1 )
+            // InternalDescartesQL.g:9613:2: rule__ObserveBetweenClause__Group__0__Impl rule__ObserveBetweenClause__Group__1
             {
-            pushFollow(FOLLOW_60);
-            rule__WhatIfQuery__Group__2__Impl();
+            pushFollow(FOLLOW_58);
+            rule__ObserveBetweenClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__3();
+            rule__ObserveBetweenClause__Group__1();
 
             state._fsp--;
 
@@ -26450,46 +26846,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__2"
+    // $ANTLR end "rule__ObserveBetweenClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__2__Impl"
-    // InternalDescartesQL.g:9486:1: rule__WhatIfQuery__Group__2__Impl : ( ( rule__WhatIfQuery__Group_2__0 )? ) ;
-    public final void rule__WhatIfQuery__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__0__Impl"
+    // InternalDescartesQL.g:9620:1: rule__ObserveBetweenClause__Group__0__Impl : ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) ) ;
+    public final void rule__ObserveBetweenClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9490:1: ( ( ( rule__WhatIfQuery__Group_2__0 )? ) )
-            // InternalDescartesQL.g:9491:1: ( ( rule__WhatIfQuery__Group_2__0 )? )
+            // InternalDescartesQL.g:9624:1: ( ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) ) )
+            // InternalDescartesQL.g:9625:1: ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) )
             {
-            // InternalDescartesQL.g:9491:1: ( ( rule__WhatIfQuery__Group_2__0 )? )
-            // InternalDescartesQL.g:9492:1: ( rule__WhatIfQuery__Group_2__0 )?
+            // InternalDescartesQL.g:9625:1: ( ( rule__ObserveBetweenClause__Mode1Assignment_0 ) )
+            // InternalDescartesQL.g:9626:1: ( rule__ObserveBetweenClause__Mode1Assignment_0 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getGroup_2()); 
-            // InternalDescartesQL.g:9493:1: ( rule__WhatIfQuery__Group_2__0 )?
-            int alt66=2;
-            int LA66_0 = input.LA(1);
-
-            if ( (LA66_0==63) ) {
-                alt66=1;
-            }
-            switch (alt66) {
-                case 1 :
-                    // InternalDescartesQL.g:9493:2: rule__WhatIfQuery__Group_2__0
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__WhatIfQuery__Group_2__0();
-
-                    state._fsp--;
+             before(grammarAccess.getObserveBetweenClauseAccess().getMode1Assignment_0()); 
+            // InternalDescartesQL.g:9627:1: ( rule__ObserveBetweenClause__Mode1Assignment_0 )
+            // InternalDescartesQL.g:9627:2: rule__ObserveBetweenClause__Mode1Assignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ObserveBetweenClause__Mode1Assignment_0();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getGroup_2()); 
+             after(grammarAccess.getObserveBetweenClauseAccess().getMode1Assignment_0()); 
 
             }
 
@@ -26508,26 +26893,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__2__Impl"
+    // $ANTLR end "rule__ObserveBetweenClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__3"
-    // InternalDescartesQL.g:9503:1: rule__WhatIfQuery__Group__3 : rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4 ;
-    public final void rule__WhatIfQuery__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__1"
+    // InternalDescartesQL.g:9637:1: rule__ObserveBetweenClause__Group__1 : rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2 ;
+    public final void rule__ObserveBetweenClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9507:1: ( rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4 )
-            // InternalDescartesQL.g:9508:2: rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4
+            // InternalDescartesQL.g:9641:1: ( rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2 )
+            // InternalDescartesQL.g:9642:2: rule__ObserveBetweenClause__Group__1__Impl rule__ObserveBetweenClause__Group__2
             {
-            pushFollow(FOLLOW_60);
-            rule__WhatIfQuery__Group__3__Impl();
+            pushFollow(FOLLOW_59);
+            rule__ObserveBetweenClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__4();
+            rule__ObserveBetweenClause__Group__2();
 
             state._fsp--;
 
@@ -26546,49 +26931,76 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__3"
+    // $ANTLR end "rule__ObserveBetweenClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__3__Impl"
-    // InternalDescartesQL.g:9515:1: rule__WhatIfQuery__Group__3__Impl : ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? ) ;
-    public final void rule__WhatIfQuery__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__1__Impl"
+    // InternalDescartesQL.g:9649:1: rule__ObserveBetweenClause__Group__1__Impl : ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) ) ;
+    public final void rule__ObserveBetweenClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9519:1: ( ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? ) )
-            // InternalDescartesQL.g:9520:1: ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? )
+            // InternalDescartesQL.g:9653:1: ( ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) ) )
+            // InternalDescartesQL.g:9654:1: ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9520:1: ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? )
-            // InternalDescartesQL.g:9521:1: ( rule__WhatIfQuery__FilteringClauseAssignment_3 )?
+            // InternalDescartesQL.g:9654:1: ( ( rule__ObserveBetweenClause__StartingTimeAssignment_1 ) )
+            // InternalDescartesQL.g:9655:1: ( rule__ObserveBetweenClause__StartingTimeAssignment_1 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getFilteringClauseAssignment_3()); 
-            // InternalDescartesQL.g:9522:1: ( rule__WhatIfQuery__FilteringClauseAssignment_3 )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
-
-            if ( (LA67_0==74) ) {
-                alt67=1;
-            }
-            switch (alt67) {
-                case 1 :
-                    // InternalDescartesQL.g:9522:2: rule__WhatIfQuery__FilteringClauseAssignment_3
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__WhatIfQuery__FilteringClauseAssignment_3();
+             before(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAssignment_1()); 
+            // InternalDescartesQL.g:9656:1: ( rule__ObserveBetweenClause__StartingTimeAssignment_1 )
+            // InternalDescartesQL.g:9656:2: rule__ObserveBetweenClause__StartingTimeAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ObserveBetweenClause__StartingTimeAssignment_1();
 
-                    state._fsp--;
+            state._fsp--;
 
 
-                    }
-                    break;
+            }
+
+             after(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAssignment_1()); 
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getFilteringClauseAssignment_3()); 
 
             }
 
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ObserveBetweenClause__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ObserveBetweenClause__Group__2"
+    // InternalDescartesQL.g:9666:1: rule__ObserveBetweenClause__Group__2 : rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3 ;
+    public final void rule__ObserveBetweenClause__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9670:1: ( rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3 )
+            // InternalDescartesQL.g:9671:2: rule__ObserveBetweenClause__Group__2__Impl rule__ObserveBetweenClause__Group__3
+            {
+            pushFollow(FOLLOW_58);
+            rule__ObserveBetweenClause__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__ObserveBetweenClause__Group__3();
+
+            state._fsp--;
+
 
             }
 
@@ -26604,26 +27016,68 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__3__Impl"
+    // $ANTLR end "rule__ObserveBetweenClause__Group__2"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__4"
-    // InternalDescartesQL.g:9532:1: rule__WhatIfQuery__Group__4 : rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5 ;
-    public final void rule__WhatIfQuery__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__2__Impl"
+    // InternalDescartesQL.g:9678:1: rule__ObserveBetweenClause__Group__2__Impl : ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) ) ;
+    public final void rule__ObserveBetweenClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9536:1: ( rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5 )
-            // InternalDescartesQL.g:9537:2: rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5
+            // InternalDescartesQL.g:9682:1: ( ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) ) )
+            // InternalDescartesQL.g:9683:1: ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) )
             {
-            pushFollow(FOLLOW_60);
-            rule__WhatIfQuery__Group__4__Impl();
+            // InternalDescartesQL.g:9683:1: ( ( rule__ObserveBetweenClause__Mode2Assignment_2 ) )
+            // InternalDescartesQL.g:9684:1: ( rule__ObserveBetweenClause__Mode2Assignment_2 )
+            {
+             before(grammarAccess.getObserveBetweenClauseAccess().getMode2Assignment_2()); 
+            // InternalDescartesQL.g:9685:1: ( rule__ObserveBetweenClause__Mode2Assignment_2 )
+            // InternalDescartesQL.g:9685:2: rule__ObserveBetweenClause__Mode2Assignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ObserveBetweenClause__Mode2Assignment_2();
 
             state._fsp--;
 
+
+            }
+
+             after(grammarAccess.getObserveBetweenClauseAccess().getMode2Assignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ObserveBetweenClause__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ObserveBetweenClause__Group__3"
+    // InternalDescartesQL.g:9695:1: rule__ObserveBetweenClause__Group__3 : rule__ObserveBetweenClause__Group__3__Impl ;
+    public final void rule__ObserveBetweenClause__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9699:1: ( rule__ObserveBetweenClause__Group__3__Impl )
+            // InternalDescartesQL.g:9700:2: rule__ObserveBetweenClause__Group__3__Impl
+            {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__5();
+            rule__ObserveBetweenClause__Group__3__Impl();
 
             state._fsp--;
 
@@ -26642,46 +27096,120 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__4"
+    // $ANTLR end "rule__ObserveBetweenClause__Group__3"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__4__Impl"
-    // InternalDescartesQL.g:9544:1: rule__WhatIfQuery__Group__4__Impl : ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? ) ;
-    public final void rule__WhatIfQuery__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ObserveBetweenClause__Group__3__Impl"
+    // InternalDescartesQL.g:9706:1: rule__ObserveBetweenClause__Group__3__Impl : ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) ) ;
+    public final void rule__ObserveBetweenClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9548:1: ( ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? ) )
-            // InternalDescartesQL.g:9549:1: ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? )
+            // InternalDescartesQL.g:9710:1: ( ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) ) )
+            // InternalDescartesQL.g:9711:1: ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) )
             {
-            // InternalDescartesQL.g:9549:1: ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? )
-            // InternalDescartesQL.g:9550:1: ( rule__WhatIfQuery__DeltaClauseAssignment_4 )?
+            // InternalDescartesQL.g:9711:1: ( ( rule__ObserveBetweenClause__EndingTimeAssignment_3 ) )
+            // InternalDescartesQL.g:9712:1: ( rule__ObserveBetweenClause__EndingTimeAssignment_3 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getDeltaClauseAssignment_4()); 
-            // InternalDescartesQL.g:9551:1: ( rule__WhatIfQuery__DeltaClauseAssignment_4 )?
-            int alt68=2;
-            int LA68_0 = input.LA(1);
+             before(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAssignment_3()); 
+            // InternalDescartesQL.g:9713:1: ( rule__ObserveBetweenClause__EndingTimeAssignment_3 )
+            // InternalDescartesQL.g:9713:2: rule__ObserveBetweenClause__EndingTimeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ObserveBetweenClause__EndingTimeAssignment_3();
+
+            state._fsp--;
+
 
-            if ( (LA68_0==12) ) {
-                alt68=1;
             }
-            switch (alt68) {
-                case 1 :
-                    // InternalDescartesQL.g:9551:2: rule__WhatIfQuery__DeltaClauseAssignment_4
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__WhatIfQuery__DeltaClauseAssignment_4();
 
-                    state._fsp--;
+             after(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAssignment_3()); 
 
+            }
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getDeltaClauseAssignment_4()); 
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ObserveBetweenClause__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__0"
+    // InternalDescartesQL.g:9731:1: rule__RelativeTimeWithSignClause__Group__0 : rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1 ;
+    public final void rule__RelativeTimeWithSignClause__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9735:1: ( rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1 )
+            // InternalDescartesQL.g:9736:2: rule__RelativeTimeWithSignClause__Group__0__Impl rule__RelativeTimeWithSignClause__Group__1
+            {
+            pushFollow(FOLLOW_57);
+            rule__RelativeTimeWithSignClause__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeWithSignClause__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__0"
+
+
+    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__0__Impl"
+    // InternalDescartesQL.g:9743:1: rule__RelativeTimeWithSignClause__Group__0__Impl : ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) ) ;
+    public final void rule__RelativeTimeWithSignClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9747:1: ( ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) ) )
+            // InternalDescartesQL.g:9748:1: ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) )
+            {
+            // InternalDescartesQL.g:9748:1: ( ( rule__RelativeTimeWithSignClause__SignAssignment_0 ) )
+            // InternalDescartesQL.g:9749:1: ( rule__RelativeTimeWithSignClause__SignAssignment_0 )
+            {
+             before(grammarAccess.getRelativeTimeWithSignClauseAccess().getSignAssignment_0()); 
+            // InternalDescartesQL.g:9750:1: ( rule__RelativeTimeWithSignClause__SignAssignment_0 )
+            // InternalDescartesQL.g:9750:2: rule__RelativeTimeWithSignClause__SignAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeWithSignClause__SignAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRelativeTimeWithSignClauseAccess().getSignAssignment_0()); 
 
             }
 
@@ -26700,21 +27228,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__4__Impl"
+    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__5"
-    // InternalDescartesQL.g:9561:1: rule__WhatIfQuery__Group__5 : rule__WhatIfQuery__Group__5__Impl ;
-    public final void rule__WhatIfQuery__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__1"
+    // InternalDescartesQL.g:9760:1: rule__RelativeTimeWithSignClause__Group__1 : rule__RelativeTimeWithSignClause__Group__1__Impl ;
+    public final void rule__RelativeTimeWithSignClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9565:1: ( rule__WhatIfQuery__Group__5__Impl )
-            // InternalDescartesQL.g:9566:2: rule__WhatIfQuery__Group__5__Impl
+            // InternalDescartesQL.g:9764:1: ( rule__RelativeTimeWithSignClause__Group__1__Impl )
+            // InternalDescartesQL.g:9765:2: rule__RelativeTimeWithSignClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group__5__Impl();
+            rule__RelativeTimeWithSignClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -26733,35 +27261,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__5"
+    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group__5__Impl"
-    // InternalDescartesQL.g:9572:1: rule__WhatIfQuery__Group__5__Impl : ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) ) ;
-    public final void rule__WhatIfQuery__Group__5__Impl() throws RecognitionException {
+    // $ANTLR start "rule__RelativeTimeWithSignClause__Group__1__Impl"
+    // InternalDescartesQL.g:9771:1: rule__RelativeTimeWithSignClause__Group__1__Impl : ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) ) ;
+    public final void rule__RelativeTimeWithSignClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9576:1: ( ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) ) )
-            // InternalDescartesQL.g:9577:1: ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) )
+            // InternalDescartesQL.g:9775:1: ( ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:9776:1: ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9577:1: ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) )
-            // InternalDescartesQL.g:9578:1: ( rule__WhatIfQuery__UsingClauseAssignment_5 )
+            // InternalDescartesQL.g:9776:1: ( ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 ) )
+            // InternalDescartesQL.g:9777:1: ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getUsingClauseAssignment_5()); 
-            // InternalDescartesQL.g:9579:1: ( rule__WhatIfQuery__UsingClauseAssignment_5 )
-            // InternalDescartesQL.g:9579:2: rule__WhatIfQuery__UsingClauseAssignment_5
+             before(grammarAccess.getRelativeTimeWithSignClauseAccess().getTimeClauseAssignment_1()); 
+            // InternalDescartesQL.g:9778:1: ( rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 )
+            // InternalDescartesQL.g:9778:2: rule__RelativeTimeWithSignClause__TimeClauseAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__UsingClauseAssignment_5();
+            rule__RelativeTimeWithSignClause__TimeClauseAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getUsingClauseAssignment_5()); 
+             after(grammarAccess.getRelativeTimeWithSignClauseAccess().getTimeClauseAssignment_1()); 
 
             }
 
@@ -26780,26 +27308,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group__5__Impl"
+    // $ANTLR end "rule__RelativeTimeWithSignClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__0"
-    // InternalDescartesQL.g:9601:1: rule__WhatIfQuery__Group_2__0 : rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1 ;
-    public final void rule__WhatIfQuery__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__RelativeTimeClause__Group__0"
+    // InternalDescartesQL.g:9792:1: rule__RelativeTimeClause__Group__0 : rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1 ;
+    public final void rule__RelativeTimeClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9605:1: ( rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1 )
-            // InternalDescartesQL.g:9606:2: rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1
+            // InternalDescartesQL.g:9796:1: ( rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1 )
+            // InternalDescartesQL.g:9797:2: rule__RelativeTimeClause__Group__0__Impl rule__RelativeTimeClause__Group__1
             {
-            pushFollow(FOLLOW_14);
-            rule__WhatIfQuery__Group_2__0__Impl();
+            pushFollow(FOLLOW_22);
+            rule__RelativeTimeClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group_2__1();
+            rule__RelativeTimeClause__Group__1();
 
             state._fsp--;
 
@@ -26818,25 +27346,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__0"
+    // $ANTLR end "rule__RelativeTimeClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__0__Impl"
-    // InternalDescartesQL.g:9613:1: rule__WhatIfQuery__Group_2__0__Impl : ( 'SELECT' ) ;
-    public final void rule__WhatIfQuery__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__RelativeTimeClause__Group__0__Impl"
+    // InternalDescartesQL.g:9804:1: rule__RelativeTimeClause__Group__0__Impl : ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) ) ;
+    public final void rule__RelativeTimeClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9617:1: ( ( 'SELECT' ) )
-            // InternalDescartesQL.g:9618:1: ( 'SELECT' )
+            // InternalDescartesQL.g:9808:1: ( ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) ) )
+            // InternalDescartesQL.g:9809:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9618:1: ( 'SELECT' )
-            // InternalDescartesQL.g:9619:1: 'SELECT'
+            // InternalDescartesQL.g:9809:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_0 ) )
+            // InternalDescartesQL.g:9810:1: ( rule__RelativeTimeClause__DurationClauseAssignment_0 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getSELECTKeyword_2_0()); 
-            match(input,63,FOLLOW_2); 
-             after(grammarAccess.getWhatIfQueryAccess().getSELECTKeyword_2_0()); 
+             before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_0()); 
+            // InternalDescartesQL.g:9811:1: ( rule__RelativeTimeClause__DurationClauseAssignment_0 )
+            // InternalDescartesQL.g:9811:2: rule__RelativeTimeClause__DurationClauseAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeClause__DurationClauseAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_0()); 
 
             }
 
@@ -26855,26 +27393,1726 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__0__Impl"
+    // $ANTLR end "rule__RelativeTimeClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__1"
-    // InternalDescartesQL.g:9632:1: rule__WhatIfQuery__Group_2__1 : rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2 ;
-    public final void rule__WhatIfQuery__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__RelativeTimeClause__Group__1"
+    // InternalDescartesQL.g:9821:1: rule__RelativeTimeClause__Group__1 : rule__RelativeTimeClause__Group__1__Impl ;
+    public final void rule__RelativeTimeClause__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9825:1: ( rule__RelativeTimeClause__Group__1__Impl )
+            // InternalDescartesQL.g:9826:2: rule__RelativeTimeClause__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeClause__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeClause__Group__1"
+
+
+    // $ANTLR start "rule__RelativeTimeClause__Group__1__Impl"
+    // InternalDescartesQL.g:9832:1: rule__RelativeTimeClause__Group__1__Impl : ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* ) ;
+    public final void rule__RelativeTimeClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9836:1: ( ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* ) )
+            // InternalDescartesQL.g:9837:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* )
+            {
+            // InternalDescartesQL.g:9837:1: ( ( rule__RelativeTimeClause__DurationClauseAssignment_1 )* )
+            // InternalDescartesQL.g:9838:1: ( rule__RelativeTimeClause__DurationClauseAssignment_1 )*
+            {
+             before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_1()); 
+            // InternalDescartesQL.g:9839:1: ( rule__RelativeTimeClause__DurationClauseAssignment_1 )*
+            loop72:
+            do {
+                int alt72=2;
+                int LA72_0 = input.LA(1);
+
+                if ( (LA72_0==RULE_INT) ) {
+                    alt72=1;
+                }
+
+
+                switch (alt72) {
+            	case 1 :
+            	    // InternalDescartesQL.g:9839:2: rule__RelativeTimeClause__DurationClauseAssignment_1
+            	    {
+            	    pushFollow(FOLLOW_56);
+            	    rule__RelativeTimeClause__DurationClauseAssignment_1();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop72;
+                }
+            } while (true);
+
+             after(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeClause__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RelativeTimeDurationClause__Group__0"
+    // InternalDescartesQL.g:9853:1: rule__RelativeTimeDurationClause__Group__0 : rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1 ;
+    public final void rule__RelativeTimeDurationClause__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9857:1: ( rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1 )
+            // InternalDescartesQL.g:9858:2: rule__RelativeTimeDurationClause__Group__0__Impl rule__RelativeTimeDurationClause__Group__1
+            {
+            pushFollow(FOLLOW_60);
+            rule__RelativeTimeDurationClause__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeDurationClause__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeDurationClause__Group__0"
+
+
+    // $ANTLR start "rule__RelativeTimeDurationClause__Group__0__Impl"
+    // InternalDescartesQL.g:9865:1: rule__RelativeTimeDurationClause__Group__0__Impl : ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) ) ;
+    public final void rule__RelativeTimeDurationClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9869:1: ( ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) ) )
+            // InternalDescartesQL.g:9870:1: ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) )
+            {
+            // InternalDescartesQL.g:9870:1: ( ( rule__RelativeTimeDurationClause__DurationAssignment_0 ) )
+            // InternalDescartesQL.g:9871:1: ( rule__RelativeTimeDurationClause__DurationAssignment_0 )
+            {
+             before(grammarAccess.getRelativeTimeDurationClauseAccess().getDurationAssignment_0()); 
+            // InternalDescartesQL.g:9872:1: ( rule__RelativeTimeDurationClause__DurationAssignment_0 )
+            // InternalDescartesQL.g:9872:2: rule__RelativeTimeDurationClause__DurationAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeDurationClause__DurationAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRelativeTimeDurationClauseAccess().getDurationAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeDurationClause__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RelativeTimeDurationClause__Group__1"
+    // InternalDescartesQL.g:9882:1: rule__RelativeTimeDurationClause__Group__1 : rule__RelativeTimeDurationClause__Group__1__Impl ;
+    public final void rule__RelativeTimeDurationClause__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9886:1: ( rule__RelativeTimeDurationClause__Group__1__Impl )
+            // InternalDescartesQL.g:9887:2: rule__RelativeTimeDurationClause__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeDurationClause__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeDurationClause__Group__1"
+
+
+    // $ANTLR start "rule__RelativeTimeDurationClause__Group__1__Impl"
+    // InternalDescartesQL.g:9893:1: rule__RelativeTimeDurationClause__Group__1__Impl : ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) ) ;
+    public final void rule__RelativeTimeDurationClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9897:1: ( ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) ) )
+            // InternalDescartesQL.g:9898:1: ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) )
+            {
+            // InternalDescartesQL.g:9898:1: ( ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 ) )
+            // InternalDescartesQL.g:9899:1: ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 )
+            {
+             before(grammarAccess.getRelativeTimeDurationClauseAccess().getTimeModifierAssignment_1()); 
+            // InternalDescartesQL.g:9900:1: ( rule__RelativeTimeDurationClause__TimeModifierAssignment_1 )
+            // InternalDescartesQL.g:9900:2: rule__RelativeTimeDurationClause__TimeModifierAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__RelativeTimeDurationClause__TimeModifierAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRelativeTimeDurationClauseAccess().getTimeModifierAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RelativeTimeDurationClause__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__0"
+    // InternalDescartesQL.g:9914:1: rule__WhatIfQuery__Group__0 : rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1 ;
+    public final void rule__WhatIfQuery__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9918:1: ( rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1 )
+            // InternalDescartesQL.g:9919:2: rule__WhatIfQuery__Group__0__Impl rule__WhatIfQuery__Group__1
+            {
+            pushFollow(FOLLOW_35);
+            rule__WhatIfQuery__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__0"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__0__Impl"
+    // InternalDescartesQL.g:9926:1: rule__WhatIfQuery__Group__0__Impl : ( 'WHAT IF' ) ;
+    public final void rule__WhatIfQuery__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9930:1: ( ( 'WHAT IF' ) )
+            // InternalDescartesQL.g:9931:1: ( 'WHAT IF' )
+            {
+            // InternalDescartesQL.g:9931:1: ( 'WHAT IF' )
+            // InternalDescartesQL.g:9932:1: 'WHAT IF'
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getWHATIFKeyword_0()); 
+            match(input,77,FOLLOW_2); 
+             after(grammarAccess.getWhatIfQueryAccess().getWHATIFKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__0__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__1"
+    // InternalDescartesQL.g:9945:1: rule__WhatIfQuery__Group__1 : rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2 ;
+    public final void rule__WhatIfQuery__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9949:1: ( rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2 )
+            // InternalDescartesQL.g:9950:2: rule__WhatIfQuery__Group__1__Impl rule__WhatIfQuery__Group__2
+            {
+            pushFollow(FOLLOW_61);
+            rule__WhatIfQuery__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__1"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__1__Impl"
+    // InternalDescartesQL.g:9957:1: rule__WhatIfQuery__Group__1__Impl : ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) ) ;
+    public final void rule__WhatIfQuery__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9961:1: ( ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) ) )
+            // InternalDescartesQL.g:9962:1: ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) )
+            {
+            // InternalDescartesQL.g:9962:1: ( ( rule__WhatIfQuery__WhatIfVariationAssignment_1 ) )
+            // InternalDescartesQL.g:9963:1: ( rule__WhatIfQuery__WhatIfVariationAssignment_1 )
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getWhatIfVariationAssignment_1()); 
+            // InternalDescartesQL.g:9964:1: ( rule__WhatIfQuery__WhatIfVariationAssignment_1 )
+            // InternalDescartesQL.g:9964:2: rule__WhatIfQuery__WhatIfVariationAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__WhatIfVariationAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getWhatIfVariationAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__2"
+    // InternalDescartesQL.g:9974:1: rule__WhatIfQuery__Group__2 : rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3 ;
+    public final void rule__WhatIfQuery__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9978:1: ( rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3 )
+            // InternalDescartesQL.g:9979:2: rule__WhatIfQuery__Group__2__Impl rule__WhatIfQuery__Group__3
+            {
+            pushFollow(FOLLOW_61);
+            rule__WhatIfQuery__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__2"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__2__Impl"
+    // InternalDescartesQL.g:9986:1: rule__WhatIfQuery__Group__2__Impl : ( ( rule__WhatIfQuery__Group_2__0 )? ) ;
+    public final void rule__WhatIfQuery__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:9990:1: ( ( ( rule__WhatIfQuery__Group_2__0 )? ) )
+            // InternalDescartesQL.g:9991:1: ( ( rule__WhatIfQuery__Group_2__0 )? )
+            {
+            // InternalDescartesQL.g:9991:1: ( ( rule__WhatIfQuery__Group_2__0 )? )
+            // InternalDescartesQL.g:9992:1: ( rule__WhatIfQuery__Group_2__0 )?
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getGroup_2()); 
+            // InternalDescartesQL.g:9993:1: ( rule__WhatIfQuery__Group_2__0 )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==67) ) {
+                alt73=1;
+            }
+            switch (alt73) {
+                case 1 :
+                    // InternalDescartesQL.g:9993:2: rule__WhatIfQuery__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__WhatIfQuery__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__2__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__3"
+    // InternalDescartesQL.g:10003:1: rule__WhatIfQuery__Group__3 : rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4 ;
+    public final void rule__WhatIfQuery__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10007:1: ( rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4 )
+            // InternalDescartesQL.g:10008:2: rule__WhatIfQuery__Group__3__Impl rule__WhatIfQuery__Group__4
+            {
+            pushFollow(FOLLOW_61);
+            rule__WhatIfQuery__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__3"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__3__Impl"
+    // InternalDescartesQL.g:10015:1: rule__WhatIfQuery__Group__3__Impl : ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? ) ;
+    public final void rule__WhatIfQuery__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10019:1: ( ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? ) )
+            // InternalDescartesQL.g:10020:1: ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? )
+            {
+            // InternalDescartesQL.g:10020:1: ( ( rule__WhatIfQuery__FilteringClauseAssignment_3 )? )
+            // InternalDescartesQL.g:10021:1: ( rule__WhatIfQuery__FilteringClauseAssignment_3 )?
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getFilteringClauseAssignment_3()); 
+            // InternalDescartesQL.g:10022:1: ( rule__WhatIfQuery__FilteringClauseAssignment_3 )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( (LA74_0==78) ) {
+                alt74=1;
+            }
+            switch (alt74) {
+                case 1 :
+                    // InternalDescartesQL.g:10022:2: rule__WhatIfQuery__FilteringClauseAssignment_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__WhatIfQuery__FilteringClauseAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getFilteringClauseAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__4"
+    // InternalDescartesQL.g:10032:1: rule__WhatIfQuery__Group__4 : rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5 ;
+    public final void rule__WhatIfQuery__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10036:1: ( rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5 )
+            // InternalDescartesQL.g:10037:2: rule__WhatIfQuery__Group__4__Impl rule__WhatIfQuery__Group__5
+            {
+            pushFollow(FOLLOW_61);
+            rule__WhatIfQuery__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__4"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__4__Impl"
+    // InternalDescartesQL.g:10044:1: rule__WhatIfQuery__Group__4__Impl : ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? ) ;
+    public final void rule__WhatIfQuery__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10048:1: ( ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? ) )
+            // InternalDescartesQL.g:10049:1: ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? )
+            {
+            // InternalDescartesQL.g:10049:1: ( ( rule__WhatIfQuery__DeltaClauseAssignment_4 )? )
+            // InternalDescartesQL.g:10050:1: ( rule__WhatIfQuery__DeltaClauseAssignment_4 )?
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getDeltaClauseAssignment_4()); 
+            // InternalDescartesQL.g:10051:1: ( rule__WhatIfQuery__DeltaClauseAssignment_4 )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==12) ) {
+                alt75=1;
+            }
+            switch (alt75) {
+                case 1 :
+                    // InternalDescartesQL.g:10051:2: rule__WhatIfQuery__DeltaClauseAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__WhatIfQuery__DeltaClauseAssignment_4();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getDeltaClauseAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__4__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__5"
+    // InternalDescartesQL.g:10061:1: rule__WhatIfQuery__Group__5 : rule__WhatIfQuery__Group__5__Impl ;
+    public final void rule__WhatIfQuery__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10065:1: ( rule__WhatIfQuery__Group__5__Impl )
+            // InternalDescartesQL.g:10066:2: rule__WhatIfQuery__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__5"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group__5__Impl"
+    // InternalDescartesQL.g:10072:1: rule__WhatIfQuery__Group__5__Impl : ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) ) ;
+    public final void rule__WhatIfQuery__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10076:1: ( ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) ) )
+            // InternalDescartesQL.g:10077:1: ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) )
+            {
+            // InternalDescartesQL.g:10077:1: ( ( rule__WhatIfQuery__UsingClauseAssignment_5 ) )
+            // InternalDescartesQL.g:10078:1: ( rule__WhatIfQuery__UsingClauseAssignment_5 )
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getUsingClauseAssignment_5()); 
+            // InternalDescartesQL.g:10079:1: ( rule__WhatIfQuery__UsingClauseAssignment_5 )
+            // InternalDescartesQL.g:10079:2: rule__WhatIfQuery__UsingClauseAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__UsingClauseAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getUsingClauseAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group__5__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__0"
+    // InternalDescartesQL.g:10101:1: rule__WhatIfQuery__Group_2__0 : rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1 ;
+    public final void rule__WhatIfQuery__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10105:1: ( rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1 )
+            // InternalDescartesQL.g:10106:2: rule__WhatIfQuery__Group_2__0__Impl rule__WhatIfQuery__Group_2__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__WhatIfQuery__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__0"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__0__Impl"
+    // InternalDescartesQL.g:10113:1: rule__WhatIfQuery__Group_2__0__Impl : ( 'SELECT' ) ;
+    public final void rule__WhatIfQuery__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10117:1: ( ( 'SELECT' ) )
+            // InternalDescartesQL.g:10118:1: ( 'SELECT' )
+            {
+            // InternalDescartesQL.g:10118:1: ( 'SELECT' )
+            // InternalDescartesQL.g:10119:1: 'SELECT'
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getSELECTKeyword_2_0()); 
+            match(input,67,FOLLOW_2); 
+             after(grammarAccess.getWhatIfQueryAccess().getSELECTKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__1"
+    // InternalDescartesQL.g:10132:1: rule__WhatIfQuery__Group_2__1 : rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2 ;
+    public final void rule__WhatIfQuery__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10136:1: ( rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2 )
+            // InternalDescartesQL.g:10137:2: rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2
+            {
+            pushFollow(FOLLOW_62);
+            rule__WhatIfQuery__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__1"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__1__Impl"
+    // InternalDescartesQL.g:10144:1: rule__WhatIfQuery__Group_2__1__Impl : ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) ) ;
+    public final void rule__WhatIfQuery__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10148:1: ( ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:10149:1: ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) )
+            {
+            // InternalDescartesQL.g:10149:1: ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) )
+            // InternalDescartesQL.g:10150:1: ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 )
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getMetricReferenceClausesAssignment_2_1()); 
+            // InternalDescartesQL.g:10151:1: ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 )
+            // InternalDescartesQL.g:10151:2: rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getMetricReferenceClausesAssignment_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__2"
+    // InternalDescartesQL.g:10161:1: rule__WhatIfQuery__Group_2__2 : rule__WhatIfQuery__Group_2__2__Impl ;
+    public final void rule__WhatIfQuery__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10165:1: ( rule__WhatIfQuery__Group_2__2__Impl )
+            // InternalDescartesQL.g:10166:2: rule__WhatIfQuery__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__Group_2__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__2"
+
+
+    // $ANTLR start "rule__WhatIfQuery__Group_2__2__Impl"
+    // InternalDescartesQL.g:10172:1: rule__WhatIfQuery__Group_2__2__Impl : ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) ) ;
+    public final void rule__WhatIfQuery__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10176:1: ( ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) ) )
+            // InternalDescartesQL.g:10177:1: ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) )
+            {
+            // InternalDescartesQL.g:10177:1: ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) )
+            // InternalDescartesQL.g:10178:1: ( rule__WhatIfQuery__ForClauseAssignment_2_2 )
+            {
+             before(grammarAccess.getWhatIfQueryAccess().getForClauseAssignment_2_2()); 
+            // InternalDescartesQL.g:10179:1: ( rule__WhatIfQuery__ForClauseAssignment_2_2 )
+            // InternalDescartesQL.g:10179:2: rule__WhatIfQuery__ForClauseAssignment_2_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfQuery__ForClauseAssignment_2_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfQueryAccess().getForClauseAssignment_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfQuery__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group__0"
+    // InternalDescartesQL.g:10195:1: rule__WhatIfVariation__Group__0 : rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1 ;
+    public final void rule__WhatIfVariation__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10199:1: ( rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1 )
+            // InternalDescartesQL.g:10200:2: rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1
+            {
+            pushFollow(FOLLOW_11);
+            rule__WhatIfVariation__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group__0"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group__0__Impl"
+    // InternalDescartesQL.g:10207:1: rule__WhatIfVariation__Group__0__Impl : ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) ) ;
+    public final void rule__WhatIfVariation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10211:1: ( ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) ) )
+            // InternalDescartesQL.g:10212:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) )
+            {
+            // InternalDescartesQL.g:10212:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) )
+            // InternalDescartesQL.g:10213:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 )
+            {
+             before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_0()); 
+            // InternalDescartesQL.g:10214:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 )
+            // InternalDescartesQL.g:10214:2: rule__WhatIfVariation__WhatIfVariationClauseAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__WhatIfVariationClauseAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group__0__Impl"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group__1"
+    // InternalDescartesQL.g:10224:1: rule__WhatIfVariation__Group__1 : rule__WhatIfVariation__Group__1__Impl ;
+    public final void rule__WhatIfVariation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10228:1: ( rule__WhatIfVariation__Group__1__Impl )
+            // InternalDescartesQL.g:10229:2: rule__WhatIfVariation__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group__1"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group__1__Impl"
+    // InternalDescartesQL.g:10235:1: rule__WhatIfVariation__Group__1__Impl : ( ( rule__WhatIfVariation__Group_1__0 )* ) ;
+    public final void rule__WhatIfVariation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10239:1: ( ( ( rule__WhatIfVariation__Group_1__0 )* ) )
+            // InternalDescartesQL.g:10240:1: ( ( rule__WhatIfVariation__Group_1__0 )* )
+            {
+            // InternalDescartesQL.g:10240:1: ( ( rule__WhatIfVariation__Group_1__0 )* )
+            // InternalDescartesQL.g:10241:1: ( rule__WhatIfVariation__Group_1__0 )*
+            {
+             before(grammarAccess.getWhatIfVariationAccess().getGroup_1()); 
+            // InternalDescartesQL.g:10242:1: ( rule__WhatIfVariation__Group_1__0 )*
+            loop76:
+            do {
+                int alt76=2;
+                int LA76_0 = input.LA(1);
+
+                if ( (LA76_0==57) ) {
+                    alt76=1;
+                }
+
+
+                switch (alt76) {
+            	case 1 :
+            	    // InternalDescartesQL.g:10242:2: rule__WhatIfVariation__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__WhatIfVariation__Group_1__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop76;
+                }
+            } while (true);
+
+             after(grammarAccess.getWhatIfVariationAccess().getGroup_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group_1__0"
+    // InternalDescartesQL.g:10256:1: rule__WhatIfVariation__Group_1__0 : rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1 ;
+    public final void rule__WhatIfVariation__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10260:1: ( rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1 )
+            // InternalDescartesQL.g:10261:2: rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1
+            {
+            pushFollow(FOLLOW_35);
+            rule__WhatIfVariation__Group_1__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__Group_1__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group_1__0"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group_1__0__Impl"
+    // InternalDescartesQL.g:10268:1: rule__WhatIfVariation__Group_1__0__Impl : ( ',' ) ;
+    public final void rule__WhatIfVariation__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10272:1: ( ( ',' ) )
+            // InternalDescartesQL.g:10273:1: ( ',' )
+            {
+            // InternalDescartesQL.g:10273:1: ( ',' )
+            // InternalDescartesQL.g:10274:1: ','
+            {
+             before(grammarAccess.getWhatIfVariationAccess().getCommaKeyword_1_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getWhatIfVariationAccess().getCommaKeyword_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group_1__1"
+    // InternalDescartesQL.g:10287:1: rule__WhatIfVariation__Group_1__1 : rule__WhatIfVariation__Group_1__1__Impl ;
+    public final void rule__WhatIfVariation__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10291:1: ( rule__WhatIfVariation__Group_1__1__Impl )
+            // InternalDescartesQL.g:10292:2: rule__WhatIfVariation__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__Group_1__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group_1__1"
+
+
+    // $ANTLR start "rule__WhatIfVariation__Group_1__1__Impl"
+    // InternalDescartesQL.g:10298:1: rule__WhatIfVariation__Group_1__1__Impl : ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) ) ;
+    public final void rule__WhatIfVariation__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10302:1: ( ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:10303:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) )
+            {
+            // InternalDescartesQL.g:10303:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) )
+            // InternalDescartesQL.g:10304:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 )
+            {
+             before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_1_1()); 
+            // InternalDescartesQL.g:10305:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 )
+            // InternalDescartesQL.g:10305:2: rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_1_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WhatIfVariation__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__FilteringClause__Group__0"
+    // InternalDescartesQL.g:10319:1: rule__FilteringClause__Group__0 : rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1 ;
+    public final void rule__FilteringClause__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10323:1: ( rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1 )
+            // InternalDescartesQL.g:10324:2: rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1
+            {
+            pushFollow(FOLLOW_63);
+            rule__FilteringClause__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__FilteringClause__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringClause__Group__0"
+
+
+    // $ANTLR start "rule__FilteringClause__Group__0__Impl"
+    // InternalDescartesQL.g:10331:1: rule__FilteringClause__Group__0__Impl : ( 'FILTERING' ) ;
+    public final void rule__FilteringClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10335:1: ( ( 'FILTERING' ) )
+            // InternalDescartesQL.g:10336:1: ( 'FILTERING' )
+            {
+            // InternalDescartesQL.g:10336:1: ( 'FILTERING' )
+            // InternalDescartesQL.g:10337:1: 'FILTERING'
+            {
+             before(grammarAccess.getFilteringClauseAccess().getFILTERINGKeyword_0()); 
+            match(input,78,FOLLOW_2); 
+             after(grammarAccess.getFilteringClauseAccess().getFILTERINGKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringClause__Group__0__Impl"
+
+
+    // $ANTLR start "rule__FilteringClause__Group__1"
+    // InternalDescartesQL.g:10350:1: rule__FilteringClause__Group__1 : rule__FilteringClause__Group__1__Impl ;
+    public final void rule__FilteringClause__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10354:1: ( rule__FilteringClause__Group__1__Impl )
+            // InternalDescartesQL.g:10355:2: rule__FilteringClause__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilteringClause__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringClause__Group__1"
+
+
+    // $ANTLR start "rule__FilteringClause__Group__1__Impl"
+    // InternalDescartesQL.g:10361:1: rule__FilteringClause__Group__1__Impl : ( ( rule__FilteringClause__Alternatives_1 ) ) ;
+    public final void rule__FilteringClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10365:1: ( ( ( rule__FilteringClause__Alternatives_1 ) ) )
+            // InternalDescartesQL.g:10366:1: ( ( rule__FilteringClause__Alternatives_1 ) )
+            {
+            // InternalDescartesQL.g:10366:1: ( ( rule__FilteringClause__Alternatives_1 ) )
+            // InternalDescartesQL.g:10367:1: ( rule__FilteringClause__Alternatives_1 )
+            {
+             before(grammarAccess.getFilteringClauseAccess().getAlternatives_1()); 
+            // InternalDescartesQL.g:10368:1: ( rule__FilteringClause__Alternatives_1 )
+            // InternalDescartesQL.g:10368:2: rule__FilteringClause__Alternatives_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilteringClause__Alternatives_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFilteringClauseAccess().getAlternatives_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringClause__Group__1__Impl"
+
+
+    // $ANTLR start "rule__FilteringRule__Group__0"
+    // InternalDescartesQL.g:10382:1: rule__FilteringRule__Group__0 : rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1 ;
+    public final void rule__FilteringRule__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10386:1: ( rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1 )
+            // InternalDescartesQL.g:10387:2: rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__FilteringRule__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_2);
+            rule__FilteringRule__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringRule__Group__0"
+
+
+    // $ANTLR start "rule__FilteringRule__Group__0__Impl"
+    // InternalDescartesQL.g:10394:1: rule__FilteringRule__Group__0__Impl : ( ( rule__FilteringRule__FilteringValueAssignment_0 ) ) ;
+    public final void rule__FilteringRule__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10398:1: ( ( ( rule__FilteringRule__FilteringValueAssignment_0 ) ) )
+            // InternalDescartesQL.g:10399:1: ( ( rule__FilteringRule__FilteringValueAssignment_0 ) )
+            {
+            // InternalDescartesQL.g:10399:1: ( ( rule__FilteringRule__FilteringValueAssignment_0 ) )
+            // InternalDescartesQL.g:10400:1: ( rule__FilteringRule__FilteringValueAssignment_0 )
+            {
+             before(grammarAccess.getFilteringRuleAccess().getFilteringValueAssignment_0()); 
+            // InternalDescartesQL.g:10401:1: ( rule__FilteringRule__FilteringValueAssignment_0 )
+            // InternalDescartesQL.g:10401:2: rule__FilteringRule__FilteringValueAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilteringRule__FilteringValueAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFilteringRuleAccess().getFilteringValueAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringRule__Group__0__Impl"
+
+
+    // $ANTLR start "rule__FilteringRule__Group__1"
+    // InternalDescartesQL.g:10411:1: rule__FilteringRule__Group__1 : rule__FilteringRule__Group__1__Impl ;
+    public final void rule__FilteringRule__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10415:1: ( rule__FilteringRule__Group__1__Impl )
+            // InternalDescartesQL.g:10416:2: rule__FilteringRule__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__FilteringRule__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringRule__Group__1"
+
+
+    // $ANTLR start "rule__FilteringRule__Group__1__Impl"
+    // InternalDescartesQL.g:10422:1: rule__FilteringRule__Group__1__Impl : ( ( rule__FilteringRule__ModifierAssignment_1 )? ) ;
+    public final void rule__FilteringRule__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:10426:1: ( ( ( rule__FilteringRule__ModifierAssignment_1 )? ) )
+            // InternalDescartesQL.g:10427:1: ( ( rule__FilteringRule__ModifierAssignment_1 )? )
+            {
+            // InternalDescartesQL.g:10427:1: ( ( rule__FilteringRule__ModifierAssignment_1 )? )
+            // InternalDescartesQL.g:10428:1: ( rule__FilteringRule__ModifierAssignment_1 )?
+            {
+             before(grammarAccess.getFilteringRuleAccess().getModifierAssignment_1()); 
+            // InternalDescartesQL.g:10429:1: ( rule__FilteringRule__ModifierAssignment_1 )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
+
+            if ( (LA77_0==106) ) {
+                alt77=1;
+            }
+            switch (alt77) {
+                case 1 :
+                    // InternalDescartesQL.g:10429:2: rule__FilteringRule__ModifierAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__FilteringRule__ModifierAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getFilteringRuleAccess().getModifierAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FilteringRule__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WhatIfVariationClause__Group__0"
+    // InternalDescartesQL.g:10443:1: rule__WhatIfVariationClause__Group__0 : rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1 ;
+    public final void rule__WhatIfVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9636:1: ( rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2 )
-            // InternalDescartesQL.g:9637:2: rule__WhatIfQuery__Group_2__1__Impl rule__WhatIfQuery__Group_2__2
+            // InternalDescartesQL.g:10447:1: ( rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1 )
+            // InternalDescartesQL.g:10448:2: rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1
             {
-            pushFollow(FOLLOW_61);
-            rule__WhatIfQuery__Group_2__1__Impl();
+            pushFollow(FOLLOW_65);
+            rule__WhatIfVariationClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group_2__2();
+            rule__WhatIfVariationClause__Group__1();
 
             state._fsp--;
 
@@ -26893,35 +29131,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__1"
+    // $ANTLR end "rule__WhatIfVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__1__Impl"
-    // InternalDescartesQL.g:9644:1: rule__WhatIfQuery__Group_2__1__Impl : ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) ) ;
-    public final void rule__WhatIfQuery__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:10455:1: rule__WhatIfVariationClause__Group__0__Impl : ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) ) ;
+    public final void rule__WhatIfVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9648:1: ( ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) ) )
-            // InternalDescartesQL.g:9649:1: ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) )
+            // InternalDescartesQL.g:10459:1: ( ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) ) )
+            // InternalDescartesQL.g:10460:1: ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9649:1: ( ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 ) )
-            // InternalDescartesQL.g:9650:1: ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 )
+            // InternalDescartesQL.g:10460:1: ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) )
+            // InternalDescartesQL.g:10461:1: ( rule__WhatIfVariationClause__VariationPointAssignment_0 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getMetricReferenceClausesAssignment_2_1()); 
-            // InternalDescartesQL.g:9651:1: ( rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 )
-            // InternalDescartesQL.g:9651:2: rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1
+             before(grammarAccess.getWhatIfVariationClauseAccess().getVariationPointAssignment_0()); 
+            // InternalDescartesQL.g:10462:1: ( rule__WhatIfVariationClause__VariationPointAssignment_0 )
+            // InternalDescartesQL.g:10462:2: rule__WhatIfVariationClause__VariationPointAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1();
+            rule__WhatIfVariationClause__VariationPointAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getMetricReferenceClausesAssignment_2_1()); 
+             after(grammarAccess.getWhatIfVariationClauseAccess().getVariationPointAssignment_0()); 
 
             }
 
@@ -26940,21 +29178,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__1__Impl"
+    // $ANTLR end "rule__WhatIfVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__2"
-    // InternalDescartesQL.g:9661:1: rule__WhatIfQuery__Group_2__2 : rule__WhatIfQuery__Group_2__2__Impl ;
-    public final void rule__WhatIfQuery__Group_2__2() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfVariationClause__Group__1"
+    // InternalDescartesQL.g:10472:1: rule__WhatIfVariationClause__Group__1 : rule__WhatIfVariationClause__Group__1__Impl ;
+    public final void rule__WhatIfVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9665:1: ( rule__WhatIfQuery__Group_2__2__Impl )
-            // InternalDescartesQL.g:9666:2: rule__WhatIfQuery__Group_2__2__Impl
+            // InternalDescartesQL.g:10476:1: ( rule__WhatIfVariationClause__Group__1__Impl )
+            // InternalDescartesQL.g:10477:2: rule__WhatIfVariationClause__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__Group_2__2__Impl();
+            rule__WhatIfVariationClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -26973,35 +29211,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__2"
+    // $ANTLR end "rule__WhatIfVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfQuery__Group_2__2__Impl"
-    // InternalDescartesQL.g:9672:1: rule__WhatIfQuery__Group_2__2__Impl : ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) ) ;
-    public final void rule__WhatIfQuery__Group_2__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:10483:1: rule__WhatIfVariationClause__Group__1__Impl : ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) ) ;
+    public final void rule__WhatIfVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9676:1: ( ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) ) )
-            // InternalDescartesQL.g:9677:1: ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) )
+            // InternalDescartesQL.g:10487:1: ( ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) ) )
+            // InternalDescartesQL.g:10488:1: ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9677:1: ( ( rule__WhatIfQuery__ForClauseAssignment_2_2 ) )
-            // InternalDescartesQL.g:9678:1: ( rule__WhatIfQuery__ForClauseAssignment_2_2 )
+            // InternalDescartesQL.g:10488:1: ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) )
+            // InternalDescartesQL.g:10489:1: ( rule__WhatIfVariationClause__ValuesAssignment_1 )
             {
-             before(grammarAccess.getWhatIfQueryAccess().getForClauseAssignment_2_2()); 
-            // InternalDescartesQL.g:9679:1: ( rule__WhatIfQuery__ForClauseAssignment_2_2 )
-            // InternalDescartesQL.g:9679:2: rule__WhatIfQuery__ForClauseAssignment_2_2
+             before(grammarAccess.getWhatIfVariationClauseAccess().getValuesAssignment_1()); 
+            // InternalDescartesQL.g:10490:1: ( rule__WhatIfVariationClause__ValuesAssignment_1 )
+            // InternalDescartesQL.g:10490:2: rule__WhatIfVariationClause__ValuesAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfQuery__ForClauseAssignment_2_2();
+            rule__WhatIfVariationClause__ValuesAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWhatIfQueryAccess().getForClauseAssignment_2_2()); 
+             after(grammarAccess.getWhatIfVariationClauseAccess().getValuesAssignment_1()); 
 
             }
 
@@ -27020,26 +29258,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfQuery__Group_2__2__Impl"
+    // $ANTLR end "rule__WhatIfVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group__0"
-    // InternalDescartesQL.g:9695:1: rule__WhatIfVariation__Group__0 : rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1 ;
-    public final void rule__WhatIfVariation__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__0"
+    // InternalDescartesQL.g:10504:1: rule__WhatIfValueVariationClause__Group__0 : rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1 ;
+    public final void rule__WhatIfValueVariationClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9699:1: ( rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1 )
-            // InternalDescartesQL.g:9700:2: rule__WhatIfVariation__Group__0__Impl rule__WhatIfVariation__Group__1
+            // InternalDescartesQL.g:10508:1: ( rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1 )
+            // InternalDescartesQL.g:10509:2: rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1
             {
-            pushFollow(FOLLOW_8);
-            rule__WhatIfVariation__Group__0__Impl();
+            pushFollow(FOLLOW_66);
+            rule__WhatIfValueVariationClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__Group__1();
+            rule__WhatIfValueVariationClause__Group__1();
 
             state._fsp--;
 
@@ -27058,35 +29296,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group__0"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group__0__Impl"
-    // InternalDescartesQL.g:9707:1: rule__WhatIfVariation__Group__0__Impl : ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) ) ;
-    public final void rule__WhatIfVariation__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__0__Impl"
+    // InternalDescartesQL.g:10516:1: rule__WhatIfValueVariationClause__Group__0__Impl : ( '<' ) ;
+    public final void rule__WhatIfValueVariationClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9711:1: ( ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) ) )
-            // InternalDescartesQL.g:9712:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:9712:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 ) )
-            // InternalDescartesQL.g:9713:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 )
+            // InternalDescartesQL.g:10520:1: ( ( '<' ) )
+            // InternalDescartesQL.g:10521:1: ( '<' )
             {
-             before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_0()); 
-            // InternalDescartesQL.g:9714:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 )
-            // InternalDescartesQL.g:9714:2: rule__WhatIfVariation__WhatIfVariationClauseAssignment_0
+            // InternalDescartesQL.g:10521:1: ( '<' )
+            // InternalDescartesQL.g:10522:1: '<'
             {
-            pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__WhatIfVariationClauseAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_0()); 
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getLessThanSignKeyword_0()); 
+            match(input,19,FOLLOW_2); 
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getLessThanSignKeyword_0()); 
 
             }
 
@@ -27105,21 +29333,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group__0__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group__1"
-    // InternalDescartesQL.g:9724:1: rule__WhatIfVariation__Group__1 : rule__WhatIfVariation__Group__1__Impl ;
-    public final void rule__WhatIfVariation__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__1"
+    // InternalDescartesQL.g:10535:1: rule__WhatIfValueVariationClause__Group__1 : rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2 ;
+    public final void rule__WhatIfValueVariationClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9728:1: ( rule__WhatIfVariation__Group__1__Impl )
-            // InternalDescartesQL.g:9729:2: rule__WhatIfVariation__Group__1__Impl
+            // InternalDescartesQL.g:10539:1: ( rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2 )
+            // InternalDescartesQL.g:10540:2: rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2
             {
+            pushFollow(FOLLOW_67);
+            rule__WhatIfValueVariationClause__Group__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__Group__1__Impl();
+            rule__WhatIfValueVariationClause__Group__2();
 
             state._fsp--;
 
@@ -27138,53 +29371,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group__1"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group__1__Impl"
-    // InternalDescartesQL.g:9735:1: rule__WhatIfVariation__Group__1__Impl : ( ( rule__WhatIfVariation__Group_1__0 )* ) ;
-    public final void rule__WhatIfVariation__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__1__Impl"
+    // InternalDescartesQL.g:10547:1: rule__WhatIfValueVariationClause__Group__1__Impl : ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) ) ;
+    public final void rule__WhatIfValueVariationClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9739:1: ( ( ( rule__WhatIfVariation__Group_1__0 )* ) )
-            // InternalDescartesQL.g:9740:1: ( ( rule__WhatIfVariation__Group_1__0 )* )
+            // InternalDescartesQL.g:10551:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:10552:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:9740:1: ( ( rule__WhatIfVariation__Group_1__0 )* )
-            // InternalDescartesQL.g:9741:1: ( rule__WhatIfVariation__Group_1__0 )*
+            // InternalDescartesQL.g:10552:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) )
+            // InternalDescartesQL.g:10553:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 )
             {
-             before(grammarAccess.getWhatIfVariationAccess().getGroup_1()); 
-            // InternalDescartesQL.g:9742:1: ( rule__WhatIfVariation__Group_1__0 )*
-            loop69:
-            do {
-                int alt69=2;
-                int LA69_0 = input.LA(1);
-
-                if ( (LA69_0==53) ) {
-                    alt69=1;
-                }
-
-
-                switch (alt69) {
-            	case 1 :
-            	    // InternalDescartesQL.g:9742:2: rule__WhatIfVariation__Group_1__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__WhatIfVariation__Group_1__0();
-
-            	    state._fsp--;
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_1()); 
+            // InternalDescartesQL.g:10554:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 )
+            // InternalDescartesQL.g:10554:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__WhatIfValueVariationClause__VariationClauseAssignment_1();
 
+            state._fsp--;
 
-            	    }
-            	    break;
 
-            	default :
-            	    break loop69;
-                }
-            } while (true);
+            }
 
-             after(grammarAccess.getWhatIfVariationAccess().getGroup_1()); 
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_1()); 
 
             }
 
@@ -27203,26 +29418,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group__1__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group_1__0"
-    // InternalDescartesQL.g:9756:1: rule__WhatIfVariation__Group_1__0 : rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1 ;
-    public final void rule__WhatIfVariation__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__2"
+    // InternalDescartesQL.g:10564:1: rule__WhatIfValueVariationClause__Group__2 : rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3 ;
+    public final void rule__WhatIfValueVariationClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9760:1: ( rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1 )
-            // InternalDescartesQL.g:9761:2: rule__WhatIfVariation__Group_1__0__Impl rule__WhatIfVariation__Group_1__1
+            // InternalDescartesQL.g:10568:1: ( rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3 )
+            // InternalDescartesQL.g:10569:2: rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3
             {
-            pushFollow(FOLLOW_34);
-            rule__WhatIfVariation__Group_1__0__Impl();
+            pushFollow(FOLLOW_67);
+            rule__WhatIfValueVariationClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__Group_1__1();
+            rule__WhatIfValueVariationClause__Group__3();
 
             state._fsp--;
 
@@ -27241,25 +29456,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group_1__0"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__2"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group_1__0__Impl"
-    // InternalDescartesQL.g:9768:1: rule__WhatIfVariation__Group_1__0__Impl : ( ',' ) ;
-    public final void rule__WhatIfVariation__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__2__Impl"
+    // InternalDescartesQL.g:10576:1: rule__WhatIfValueVariationClause__Group__2__Impl : ( ( rule__WhatIfValueVariationClause__Group_2__0 )* ) ;
+    public final void rule__WhatIfValueVariationClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9772:1: ( ( ',' ) )
-            // InternalDescartesQL.g:9773:1: ( ',' )
+            // InternalDescartesQL.g:10580:1: ( ( ( rule__WhatIfValueVariationClause__Group_2__0 )* ) )
+            // InternalDescartesQL.g:10581:1: ( ( rule__WhatIfValueVariationClause__Group_2__0 )* )
             {
-            // InternalDescartesQL.g:9773:1: ( ',' )
-            // InternalDescartesQL.g:9774:1: ','
+            // InternalDescartesQL.g:10581:1: ( ( rule__WhatIfValueVariationClause__Group_2__0 )* )
+            // InternalDescartesQL.g:10582:1: ( rule__WhatIfValueVariationClause__Group_2__0 )*
             {
-             before(grammarAccess.getWhatIfVariationAccess().getCommaKeyword_1_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getWhatIfVariationAccess().getCommaKeyword_1_0()); 
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getGroup_2()); 
+            // InternalDescartesQL.g:10583:1: ( rule__WhatIfValueVariationClause__Group_2__0 )*
+            loop78:
+            do {
+                int alt78=2;
+                int LA78_0 = input.LA(1);
+
+                if ( (LA78_0==57) ) {
+                    alt78=1;
+                }
+
+
+                switch (alt78) {
+            	case 1 :
+            	    // InternalDescartesQL.g:10583:2: rule__WhatIfValueVariationClause__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__WhatIfValueVariationClause__Group_2__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop78;
+                }
+            } while (true);
+
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getGroup_2()); 
 
             }
 
@@ -27278,21 +29521,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group_1__0__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group_1__1"
-    // InternalDescartesQL.g:9787:1: rule__WhatIfVariation__Group_1__1 : rule__WhatIfVariation__Group_1__1__Impl ;
-    public final void rule__WhatIfVariation__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__3"
+    // InternalDescartesQL.g:10593:1: rule__WhatIfValueVariationClause__Group__3 : rule__WhatIfValueVariationClause__Group__3__Impl ;
+    public final void rule__WhatIfValueVariationClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9791:1: ( rule__WhatIfVariation__Group_1__1__Impl )
-            // InternalDescartesQL.g:9792:2: rule__WhatIfVariation__Group_1__1__Impl
+            // InternalDescartesQL.g:10597:1: ( rule__WhatIfValueVariationClause__Group__3__Impl )
+            // InternalDescartesQL.g:10598:2: rule__WhatIfValueVariationClause__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__Group_1__1__Impl();
+            rule__WhatIfValueVariationClause__Group__3__Impl();
 
             state._fsp--;
 
@@ -27311,35 +29554,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group_1__1"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__3"
 
 
-    // $ANTLR start "rule__WhatIfVariation__Group_1__1__Impl"
-    // InternalDescartesQL.g:9798:1: rule__WhatIfVariation__Group_1__1__Impl : ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) ) ;
-    public final void rule__WhatIfVariation__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group__3__Impl"
+    // InternalDescartesQL.g:10604:1: rule__WhatIfValueVariationClause__Group__3__Impl : ( '>' ) ;
+    public final void rule__WhatIfValueVariationClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9802:1: ( ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:9803:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) )
-            {
-            // InternalDescartesQL.g:9803:1: ( ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 ) )
-            // InternalDescartesQL.g:9804:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 )
+            // InternalDescartesQL.g:10608:1: ( ( '>' ) )
+            // InternalDescartesQL.g:10609:1: ( '>' )
             {
-             before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_1_1()); 
-            // InternalDescartesQL.g:9805:1: ( rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 )
-            // InternalDescartesQL.g:9805:2: rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1
+            // InternalDescartesQL.g:10609:1: ( '>' )
+            // InternalDescartesQL.g:10610:1: '>'
             {
-            pushFollow(FOLLOW_2);
-            rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseAssignment_1_1()); 
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getGreaterThanSignKeyword_3()); 
+            match(input,21,FOLLOW_2); 
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getGreaterThanSignKeyword_3()); 
 
             }
 
@@ -27358,26 +29591,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariation__Group_1__1__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__FilteringClause__Group__0"
-    // InternalDescartesQL.g:9819:1: rule__FilteringClause__Group__0 : rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1 ;
-    public final void rule__FilteringClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__0"
+    // InternalDescartesQL.g:10631:1: rule__WhatIfValueVariationClause__Group_2__0 : rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1 ;
+    public final void rule__WhatIfValueVariationClause__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9823:1: ( rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1 )
-            // InternalDescartesQL.g:9824:2: rule__FilteringClause__Group__0__Impl rule__FilteringClause__Group__1
+            // InternalDescartesQL.g:10635:1: ( rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1 )
+            // InternalDescartesQL.g:10636:2: rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1
             {
-            pushFollow(FOLLOW_62);
-            rule__FilteringClause__Group__0__Impl();
+            pushFollow(FOLLOW_66);
+            rule__WhatIfValueVariationClause__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilteringClause__Group__1();
+            rule__WhatIfValueVariationClause__Group_2__1();
 
             state._fsp--;
 
@@ -27396,25 +29629,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringClause__Group__0"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__0"
 
 
-    // $ANTLR start "rule__FilteringClause__Group__0__Impl"
-    // InternalDescartesQL.g:9831:1: rule__FilteringClause__Group__0__Impl : ( 'FILTERING' ) ;
-    public final void rule__FilteringClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__0__Impl"
+    // InternalDescartesQL.g:10643:1: rule__WhatIfValueVariationClause__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__WhatIfValueVariationClause__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9835:1: ( ( 'FILTERING' ) )
-            // InternalDescartesQL.g:9836:1: ( 'FILTERING' )
+            // InternalDescartesQL.g:10647:1: ( ( ',' ) )
+            // InternalDescartesQL.g:10648:1: ( ',' )
             {
-            // InternalDescartesQL.g:9836:1: ( 'FILTERING' )
-            // InternalDescartesQL.g:9837:1: 'FILTERING'
+            // InternalDescartesQL.g:10648:1: ( ',' )
+            // InternalDescartesQL.g:10649:1: ','
             {
-             before(grammarAccess.getFilteringClauseAccess().getFILTERINGKeyword_0()); 
-            match(input,74,FOLLOW_2); 
-             after(grammarAccess.getFilteringClauseAccess().getFILTERINGKeyword_0()); 
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -27433,21 +29666,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringClause__Group__0__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__FilteringClause__Group__1"
-    // InternalDescartesQL.g:9850:1: rule__FilteringClause__Group__1 : rule__FilteringClause__Group__1__Impl ;
-    public final void rule__FilteringClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__1"
+    // InternalDescartesQL.g:10662:1: rule__WhatIfValueVariationClause__Group_2__1 : rule__WhatIfValueVariationClause__Group_2__1__Impl ;
+    public final void rule__WhatIfValueVariationClause__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9854:1: ( rule__FilteringClause__Group__1__Impl )
-            // InternalDescartesQL.g:9855:2: rule__FilteringClause__Group__1__Impl
+            // InternalDescartesQL.g:10666:1: ( rule__WhatIfValueVariationClause__Group_2__1__Impl )
+            // InternalDescartesQL.g:10667:2: rule__WhatIfValueVariationClause__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__FilteringClause__Group__1__Impl();
+            rule__WhatIfValueVariationClause__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -27466,35 +29699,78 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringClause__Group__1"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__1"
 
 
-    // $ANTLR start "rule__FilteringClause__Group__1__Impl"
-    // InternalDescartesQL.g:9861:1: rule__FilteringClause__Group__1__Impl : ( ( rule__FilteringClause__Alternatives_1 ) ) ;
-    public final void rule__FilteringClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__1__Impl"
+    // InternalDescartesQL.g:10673:1: rule__WhatIfValueVariationClause__Group_2__1__Impl : ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) ) ;
+    public final void rule__WhatIfValueVariationClause__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9865:1: ( ( ( rule__FilteringClause__Alternatives_1 ) ) )
-            // InternalDescartesQL.g:9866:1: ( ( rule__FilteringClause__Alternatives_1 ) )
+            // InternalDescartesQL.g:10677:1: ( ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) ) )
+            // InternalDescartesQL.g:10678:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) )
             {
-            // InternalDescartesQL.g:9866:1: ( ( rule__FilteringClause__Alternatives_1 ) )
-            // InternalDescartesQL.g:9867:1: ( rule__FilteringClause__Alternatives_1 )
+            // InternalDescartesQL.g:10678:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) )
+            // InternalDescartesQL.g:10679:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* )
             {
-             before(grammarAccess.getFilteringClauseAccess().getAlternatives_1()); 
-            // InternalDescartesQL.g:9868:1: ( rule__FilteringClause__Alternatives_1 )
-            // InternalDescartesQL.g:9868:2: rule__FilteringClause__Alternatives_1
+            // InternalDescartesQL.g:10679:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) )
+            // InternalDescartesQL.g:10680:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )
             {
-            pushFollow(FOLLOW_2);
-            rule__FilteringClause__Alternatives_1();
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
+            // InternalDescartesQL.g:10681:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )
+            // InternalDescartesQL.g:10681:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1
+            {
+            pushFollow(FOLLOW_68);
+            rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
+
+            }
+
+            // InternalDescartesQL.g:10684:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* )
+            // InternalDescartesQL.g:10685:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )*
+            {
+             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
+            // InternalDescartesQL.g:10686:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )*
+            loop79:
+            do {
+                int alt79=2;
+                int LA79_0 = input.LA(1);
+
+                if ( ((LA79_0>=RULE_ID && LA79_0<=RULE_INT)||(LA79_0>=16 && LA79_0<=18)) ) {
+                    alt79=1;
+                }
+
+
+                switch (alt79) {
+            	case 1 :
+            	    // InternalDescartesQL.g:10686:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1
+            	    {
+            	    pushFollow(FOLLOW_68);
+            	    rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1();
+
+            	    state._fsp--;
 
-            state._fsp--;
 
+            	    }
+            	    break;
+
+            	default :
+            	    break loop79;
+                }
+            } while (true);
+
+             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
 
             }
 
-             after(grammarAccess.getFilteringClauseAccess().getAlternatives_1()); 
 
             }
 
@@ -27513,26 +29789,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringClause__Group__1__Impl"
+    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__FilteringRule__Group__0"
-    // InternalDescartesQL.g:9882:1: rule__FilteringRule__Group__0 : rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1 ;
-    public final void rule__FilteringRule__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group__0"
+    // InternalDescartesQL.g:10703:1: rule__VariationInstruction__Group__0 : rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1 ;
+    public final void rule__VariationInstruction__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9886:1: ( rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1 )
-            // InternalDescartesQL.g:9887:2: rule__FilteringRule__Group__0__Impl rule__FilteringRule__Group__1
+            // InternalDescartesQL.g:10707:1: ( rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1 )
+            // InternalDescartesQL.g:10708:2: rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1
             {
-            pushFollow(FOLLOW_63);
-            rule__FilteringRule__Group__0__Impl();
+            pushFollow(FOLLOW_14);
+            rule__VariationInstruction__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__FilteringRule__Group__1();
+            rule__VariationInstruction__Group__1();
 
             state._fsp--;
 
@@ -27551,35 +29827,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringRule__Group__0"
+    // $ANTLR end "rule__VariationInstruction__Group__0"
 
 
-    // $ANTLR start "rule__FilteringRule__Group__0__Impl"
-    // InternalDescartesQL.g:9894:1: rule__FilteringRule__Group__0__Impl : ( ( rule__FilteringRule__FilteringValueAssignment_0 ) ) ;
-    public final void rule__FilteringRule__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group__0__Impl"
+    // InternalDescartesQL.g:10715:1: rule__VariationInstruction__Group__0__Impl : ( ( rule__VariationInstruction__VariationAssignment_0 ) ) ;
+    public final void rule__VariationInstruction__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9898:1: ( ( ( rule__FilteringRule__FilteringValueAssignment_0 ) ) )
-            // InternalDescartesQL.g:9899:1: ( ( rule__FilteringRule__FilteringValueAssignment_0 ) )
+            // InternalDescartesQL.g:10719:1: ( ( ( rule__VariationInstruction__VariationAssignment_0 ) ) )
+            // InternalDescartesQL.g:10720:1: ( ( rule__VariationInstruction__VariationAssignment_0 ) )
             {
-            // InternalDescartesQL.g:9899:1: ( ( rule__FilteringRule__FilteringValueAssignment_0 ) )
-            // InternalDescartesQL.g:9900:1: ( rule__FilteringRule__FilteringValueAssignment_0 )
+            // InternalDescartesQL.g:10720:1: ( ( rule__VariationInstruction__VariationAssignment_0 ) )
+            // InternalDescartesQL.g:10721:1: ( rule__VariationInstruction__VariationAssignment_0 )
             {
-             before(grammarAccess.getFilteringRuleAccess().getFilteringValueAssignment_0()); 
-            // InternalDescartesQL.g:9901:1: ( rule__FilteringRule__FilteringValueAssignment_0 )
-            // InternalDescartesQL.g:9901:2: rule__FilteringRule__FilteringValueAssignment_0
+             before(grammarAccess.getVariationInstructionAccess().getVariationAssignment_0()); 
+            // InternalDescartesQL.g:10722:1: ( rule__VariationInstruction__VariationAssignment_0 )
+            // InternalDescartesQL.g:10722:2: rule__VariationInstruction__VariationAssignment_0
             {
             pushFollow(FOLLOW_2);
-            rule__FilteringRule__FilteringValueAssignment_0();
+            rule__VariationInstruction__VariationAssignment_0();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getFilteringRuleAccess().getFilteringValueAssignment_0()); 
+             after(grammarAccess.getVariationInstructionAccess().getVariationAssignment_0()); 
 
             }
 
@@ -27598,21 +29874,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringRule__Group__0__Impl"
+    // $ANTLR end "rule__VariationInstruction__Group__0__Impl"
 
 
-    // $ANTLR start "rule__FilteringRule__Group__1"
-    // InternalDescartesQL.g:9911:1: rule__FilteringRule__Group__1 : rule__FilteringRule__Group__1__Impl ;
-    public final void rule__FilteringRule__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group__1"
+    // InternalDescartesQL.g:10732:1: rule__VariationInstruction__Group__1 : rule__VariationInstruction__Group__1__Impl ;
+    public final void rule__VariationInstruction__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9915:1: ( rule__FilteringRule__Group__1__Impl )
-            // InternalDescartesQL.g:9916:2: rule__FilteringRule__Group__1__Impl
+            // InternalDescartesQL.g:10736:1: ( rule__VariationInstruction__Group__1__Impl )
+            // InternalDescartesQL.g:10737:2: rule__VariationInstruction__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__FilteringRule__Group__1__Impl();
+            rule__VariationInstruction__Group__1__Impl();
 
             state._fsp--;
 
@@ -27631,46 +29907,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringRule__Group__1"
+    // $ANTLR end "rule__VariationInstruction__Group__1"
 
 
-    // $ANTLR start "rule__FilteringRule__Group__1__Impl"
-    // InternalDescartesQL.g:9922:1: rule__FilteringRule__Group__1__Impl : ( ( rule__FilteringRule__ModifierAssignment_1 )? ) ;
-    public final void rule__FilteringRule__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group__1__Impl"
+    // InternalDescartesQL.g:10743:1: rule__VariationInstruction__Group__1__Impl : ( ( rule__VariationInstruction__Group_1__0 ) ) ;
+    public final void rule__VariationInstruction__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9926:1: ( ( ( rule__FilteringRule__ModifierAssignment_1 )? ) )
-            // InternalDescartesQL.g:9927:1: ( ( rule__FilteringRule__ModifierAssignment_1 )? )
+            // InternalDescartesQL.g:10747:1: ( ( ( rule__VariationInstruction__Group_1__0 ) ) )
+            // InternalDescartesQL.g:10748:1: ( ( rule__VariationInstruction__Group_1__0 ) )
             {
-            // InternalDescartesQL.g:9927:1: ( ( rule__FilteringRule__ModifierAssignment_1 )? )
-            // InternalDescartesQL.g:9928:1: ( rule__FilteringRule__ModifierAssignment_1 )?
+            // InternalDescartesQL.g:10748:1: ( ( rule__VariationInstruction__Group_1__0 ) )
+            // InternalDescartesQL.g:10749:1: ( rule__VariationInstruction__Group_1__0 )
             {
-             before(grammarAccess.getFilteringRuleAccess().getModifierAssignment_1()); 
-            // InternalDescartesQL.g:9929:1: ( rule__FilteringRule__ModifierAssignment_1 )?
-            int alt70=2;
-            int LA70_0 = input.LA(1);
-
-            if ( (LA70_0==102) ) {
-                alt70=1;
-            }
-            switch (alt70) {
-                case 1 :
-                    // InternalDescartesQL.g:9929:2: rule__FilteringRule__ModifierAssignment_1
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__FilteringRule__ModifierAssignment_1();
-
-                    state._fsp--;
+             before(grammarAccess.getVariationInstructionAccess().getGroup_1()); 
+            // InternalDescartesQL.g:10750:1: ( rule__VariationInstruction__Group_1__0 )
+            // InternalDescartesQL.g:10750:2: rule__VariationInstruction__Group_1__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__VariationInstruction__Group_1__0();
 
+            state._fsp--;
 
-                    }
-                    break;
 
             }
 
-             after(grammarAccess.getFilteringRuleAccess().getModifierAssignment_1()); 
+             after(grammarAccess.getVariationInstructionAccess().getGroup_1()); 
 
             }
 
@@ -27689,26 +29954,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__FilteringRule__Group__1__Impl"
+    // $ANTLR end "rule__VariationInstruction__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariationClause__Group__0"
-    // InternalDescartesQL.g:9943:1: rule__WhatIfVariationClause__Group__0 : rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1 ;
-    public final void rule__WhatIfVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__0"
+    // InternalDescartesQL.g:10764:1: rule__VariationInstruction__Group_1__0 : rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1 ;
+    public final void rule__VariationInstruction__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9947:1: ( rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1 )
-            // InternalDescartesQL.g:9948:2: rule__WhatIfVariationClause__Group__0__Impl rule__WhatIfVariationClause__Group__1
+            // InternalDescartesQL.g:10768:1: ( rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1 )
+            // InternalDescartesQL.g:10769:2: rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1
             {
-            pushFollow(FOLLOW_64);
-            rule__WhatIfVariationClause__Group__0__Impl();
+            pushFollow(FOLLOW_35);
+            rule__VariationInstruction__Group_1__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariationClause__Group__1();
+            rule__VariationInstruction__Group_1__1();
 
             state._fsp--;
 
@@ -27727,35 +29992,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariationClause__Group__0"
+    // $ANTLR end "rule__VariationInstruction__Group_1__0"
 
 
-    // $ANTLR start "rule__WhatIfVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:9955:1: rule__WhatIfVariationClause__Group__0__Impl : ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) ) ;
-    public final void rule__WhatIfVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__0__Impl"
+    // InternalDescartesQL.g:10776:1: rule__VariationInstruction__Group_1__0__Impl : ( '(' ) ;
+    public final void rule__VariationInstruction__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9959:1: ( ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) ) )
-            // InternalDescartesQL.g:9960:1: ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) )
+            // InternalDescartesQL.g:10780:1: ( ( '(' ) )
+            // InternalDescartesQL.g:10781:1: ( '(' )
             {
-            // InternalDescartesQL.g:9960:1: ( ( rule__WhatIfVariationClause__VariationPointAssignment_0 ) )
-            // InternalDescartesQL.g:9961:1: ( rule__WhatIfVariationClause__VariationPointAssignment_0 )
+            // InternalDescartesQL.g:10781:1: ( '(' )
+            // InternalDescartesQL.g:10782:1: '('
             {
-             before(grammarAccess.getWhatIfVariationClauseAccess().getVariationPointAssignment_0()); 
-            // InternalDescartesQL.g:9962:1: ( rule__WhatIfVariationClause__VariationPointAssignment_0 )
-            // InternalDescartesQL.g:9962:2: rule__WhatIfVariationClause__VariationPointAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__WhatIfVariationClause__VariationPointAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWhatIfVariationClauseAccess().getVariationPointAssignment_0()); 
+             before(grammarAccess.getVariationInstructionAccess().getLeftParenthesisKeyword_1_0()); 
+            match(input,59,FOLLOW_2); 
+             after(grammarAccess.getVariationInstructionAccess().getLeftParenthesisKeyword_1_0()); 
 
             }
 
@@ -27774,21 +30029,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__VariationInstruction__Group_1__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfVariationClause__Group__1"
-    // InternalDescartesQL.g:9972:1: rule__WhatIfVariationClause__Group__1 : rule__WhatIfVariationClause__Group__1__Impl ;
-    public final void rule__WhatIfVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__1"
+    // InternalDescartesQL.g:10795:1: rule__VariationInstruction__Group_1__1 : rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2 ;
+    public final void rule__VariationInstruction__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9976:1: ( rule__WhatIfVariationClause__Group__1__Impl )
-            // InternalDescartesQL.g:9977:2: rule__WhatIfVariationClause__Group__1__Impl
+            // InternalDescartesQL.g:10799:1: ( rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2 )
+            // InternalDescartesQL.g:10800:2: rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2
             {
+            pushFollow(FOLLOW_30);
+            rule__VariationInstruction__Group_1__1__Impl();
+
+            state._fsp--;
+
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariationClause__Group__1__Impl();
+            rule__VariationInstruction__Group_1__2();
 
             state._fsp--;
 
@@ -27807,35 +30067,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariationClause__Group__1"
+    // $ANTLR end "rule__VariationInstruction__Group_1__1"
 
 
-    // $ANTLR start "rule__WhatIfVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:9983:1: rule__WhatIfVariationClause__Group__1__Impl : ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) ) ;
-    public final void rule__WhatIfVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__1__Impl"
+    // InternalDescartesQL.g:10807:1: rule__VariationInstruction__Group_1__1__Impl : ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) ) ;
+    public final void rule__VariationInstruction__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:9987:1: ( ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) ) )
-            // InternalDescartesQL.g:9988:1: ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) )
+            // InternalDescartesQL.g:10811:1: ( ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) ) )
+            // InternalDescartesQL.g:10812:1: ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) )
             {
-            // InternalDescartesQL.g:9988:1: ( ( rule__WhatIfVariationClause__ValuesAssignment_1 ) )
-            // InternalDescartesQL.g:9989:1: ( rule__WhatIfVariationClause__ValuesAssignment_1 )
+            // InternalDescartesQL.g:10812:1: ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) )
+            // InternalDescartesQL.g:10813:1: ( rule__VariationInstruction__ArgumentAssignment_1_1 )
             {
-             before(grammarAccess.getWhatIfVariationClauseAccess().getValuesAssignment_1()); 
-            // InternalDescartesQL.g:9990:1: ( rule__WhatIfVariationClause__ValuesAssignment_1 )
-            // InternalDescartesQL.g:9990:2: rule__WhatIfVariationClause__ValuesAssignment_1
+             before(grammarAccess.getVariationInstructionAccess().getArgumentAssignment_1_1()); 
+            // InternalDescartesQL.g:10814:1: ( rule__VariationInstruction__ArgumentAssignment_1_1 )
+            // InternalDescartesQL.g:10814:2: rule__VariationInstruction__ArgumentAssignment_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfVariationClause__ValuesAssignment_1();
+            rule__VariationInstruction__ArgumentAssignment_1_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getWhatIfVariationClauseAccess().getValuesAssignment_1()); 
+             after(grammarAccess.getVariationInstructionAccess().getArgumentAssignment_1_1()); 
 
             }
 
@@ -27854,26 +30114,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__VariationInstruction__Group_1__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__0"
-    // InternalDescartesQL.g:10004:1: rule__WhatIfValueVariationClause__Group__0 : rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1 ;
-    public final void rule__WhatIfValueVariationClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__2"
+    // InternalDescartesQL.g:10824:1: rule__VariationInstruction__Group_1__2 : rule__VariationInstruction__Group_1__2__Impl ;
+    public final void rule__VariationInstruction__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10008:1: ( rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1 )
-            // InternalDescartesQL.g:10009:2: rule__WhatIfValueVariationClause__Group__0__Impl rule__WhatIfValueVariationClause__Group__1
+            // InternalDescartesQL.g:10828:1: ( rule__VariationInstruction__Group_1__2__Impl )
+            // InternalDescartesQL.g:10829:2: rule__VariationInstruction__Group_1__2__Impl
             {
-            pushFollow(FOLLOW_65);
-            rule__WhatIfValueVariationClause__Group__0__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group__1();
+            rule__VariationInstruction__Group_1__2__Impl();
 
             state._fsp--;
 
@@ -27892,25 +30147,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__0"
+    // $ANTLR end "rule__VariationInstruction__Group_1__2"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__0__Impl"
-    // InternalDescartesQL.g:10016:1: rule__WhatIfValueVariationClause__Group__0__Impl : ( '<' ) ;
-    public final void rule__WhatIfValueVariationClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__VariationInstruction__Group_1__2__Impl"
+    // InternalDescartesQL.g:10835:1: rule__VariationInstruction__Group_1__2__Impl : ( ')' ) ;
+    public final void rule__VariationInstruction__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10020:1: ( ( '<' ) )
-            // InternalDescartesQL.g:10021:1: ( '<' )
+            // InternalDescartesQL.g:10839:1: ( ( ')' ) )
+            // InternalDescartesQL.g:10840:1: ( ')' )
             {
-            // InternalDescartesQL.g:10021:1: ( '<' )
-            // InternalDescartesQL.g:10022:1: '<'
+            // InternalDescartesQL.g:10840:1: ( ')' )
+            // InternalDescartesQL.g:10841:1: ')'
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getLessThanSignKeyword_0()); 
-            match(input,18,FOLLOW_2); 
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getLessThanSignKeyword_0()); 
+             before(grammarAccess.getVariationInstructionAccess().getRightParenthesisKeyword_1_2()); 
+            match(input,60,FOLLOW_2); 
+             after(grammarAccess.getVariationInstructionAccess().getRightParenthesisKeyword_1_2()); 
 
             }
 
@@ -27929,26 +30184,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__0__Impl"
+    // $ANTLR end "rule__VariationInstruction__Group_1__2__Impl"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__1"
-    // InternalDescartesQL.g:10035:1: rule__WhatIfValueVariationClause__Group__1 : rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2 ;
-    public final void rule__WhatIfValueVariationClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__0"
+    // InternalDescartesQL.g:10860:1: rule__MultipleArithmeticClause__Group__0 : rule__MultipleArithmeticClause__Group__0__Impl rule__MultipleArithmeticClause__Group__1 ;
+    public final void rule__MultipleArithmeticClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10039:1: ( rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2 )
-            // InternalDescartesQL.g:10040:2: rule__WhatIfValueVariationClause__Group__1__Impl rule__WhatIfValueVariationClause__Group__2
+            // InternalDescartesQL.g:10864:1: ( rule__MultipleArithmeticClause__Group__0__Impl rule__MultipleArithmeticClause__Group__1 )
+            // InternalDescartesQL.g:10865:2: rule__MultipleArithmeticClause__Group__0__Impl rule__MultipleArithmeticClause__Group__1
             {
-            pushFollow(FOLLOW_66);
-            rule__WhatIfValueVariationClause__Group__1__Impl();
+            pushFollow(FOLLOW_69);
+            rule__MultipleArithmeticClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group__2();
+            rule__MultipleArithmeticClause__Group__1();
 
             state._fsp--;
 
@@ -27967,35 +30222,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__1"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__0"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__1__Impl"
-    // InternalDescartesQL.g:10047:1: rule__WhatIfValueVariationClause__Group__1__Impl : ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) ) ;
-    public final void rule__WhatIfValueVariationClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__0__Impl"
+    // InternalDescartesQL.g:10872:1: rule__MultipleArithmeticClause__Group__0__Impl : ( '<' ) ;
+    public final void rule__MultipleArithmeticClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10051:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) ) )
-            // InternalDescartesQL.g:10052:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) )
-            {
-            // InternalDescartesQL.g:10052:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 ) )
-            // InternalDescartesQL.g:10053:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 )
+            // InternalDescartesQL.g:10876:1: ( ( '<' ) )
+            // InternalDescartesQL.g:10877:1: ( '<' )
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_1()); 
-            // InternalDescartesQL.g:10054:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_1 )
-            // InternalDescartesQL.g:10054:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_1
+            // InternalDescartesQL.g:10877:1: ( '<' )
+            // InternalDescartesQL.g:10878:1: '<'
             {
-            pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__VariationClauseAssignment_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_1()); 
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getLessThanSignKeyword_0()); 
+            match(input,19,FOLLOW_2); 
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getLessThanSignKeyword_0()); 
 
             }
 
@@ -28014,26 +30259,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__1__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__2"
-    // InternalDescartesQL.g:10064:1: rule__WhatIfValueVariationClause__Group__2 : rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3 ;
-    public final void rule__WhatIfValueVariationClause__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__1"
+    // InternalDescartesQL.g:10891:1: rule__MultipleArithmeticClause__Group__1 : rule__MultipleArithmeticClause__Group__1__Impl rule__MultipleArithmeticClause__Group__2 ;
+    public final void rule__MultipleArithmeticClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10068:1: ( rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3 )
-            // InternalDescartesQL.g:10069:2: rule__WhatIfValueVariationClause__Group__2__Impl rule__WhatIfValueVariationClause__Group__3
+            // InternalDescartesQL.g:10895:1: ( rule__MultipleArithmeticClause__Group__1__Impl rule__MultipleArithmeticClause__Group__2 )
+            // InternalDescartesQL.g:10896:2: rule__MultipleArithmeticClause__Group__1__Impl rule__MultipleArithmeticClause__Group__2
             {
-            pushFollow(FOLLOW_66);
-            rule__WhatIfValueVariationClause__Group__2__Impl();
+            pushFollow(FOLLOW_67);
+            rule__MultipleArithmeticClause__Group__1__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group__3();
+            rule__MultipleArithmeticClause__Group__2();
 
             state._fsp--;
 
@@ -28052,123 +30297,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__2"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__1"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__2__Impl"
-    // InternalDescartesQL.g:10076:1: rule__WhatIfValueVariationClause__Group__2__Impl : ( ( rule__WhatIfValueVariationClause__Group_2__0 )* ) ;
-    public final void rule__WhatIfValueVariationClause__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__1__Impl"
+    // InternalDescartesQL.g:10903:1: rule__MultipleArithmeticClause__Group__1__Impl : ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 ) ) ;
+    public final void rule__MultipleArithmeticClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10080:1: ( ( ( rule__WhatIfValueVariationClause__Group_2__0 )* ) )
-            // InternalDescartesQL.g:10081:1: ( ( rule__WhatIfValueVariationClause__Group_2__0 )* )
+            // InternalDescartesQL.g:10907:1: ( ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 ) ) )
+            // InternalDescartesQL.g:10908:1: ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 ) )
             {
-            // InternalDescartesQL.g:10081:1: ( ( rule__WhatIfValueVariationClause__Group_2__0 )* )
-            // InternalDescartesQL.g:10082:1: ( rule__WhatIfValueVariationClause__Group_2__0 )*
+            // InternalDescartesQL.g:10908:1: ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 ) )
+            // InternalDescartesQL.g:10909:1: ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 )
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getGroup_2()); 
-            // InternalDescartesQL.g:10083:1: ( rule__WhatIfValueVariationClause__Group_2__0 )*
-            loop71:
-            do {
-                int alt71=2;
-                int LA71_0 = input.LA(1);
-
-                if ( (LA71_0==53) ) {
-                    alt71=1;
-                }
-
-
-                switch (alt71) {
-            	case 1 :
-            	    // InternalDescartesQL.g:10083:2: rule__WhatIfValueVariationClause__Group_2__0
-            	    {
-            	    pushFollow(FOLLOW_9);
-            	    rule__WhatIfValueVariationClause__Group_2__0();
-
-            	    state._fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop71;
-                }
-            } while (true);
-
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getGroup_2()); 
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__2__Impl"
-
-
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__3"
-    // InternalDescartesQL.g:10093:1: rule__WhatIfValueVariationClause__Group__3 : rule__WhatIfValueVariationClause__Group__3__Impl ;
-    public final void rule__WhatIfValueVariationClause__Group__3() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-            
-        try {
-            // InternalDescartesQL.g:10097:1: ( rule__WhatIfValueVariationClause__Group__3__Impl )
-            // InternalDescartesQL.g:10098:2: rule__WhatIfValueVariationClause__Group__3__Impl
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseAssignment_1()); 
+            // InternalDescartesQL.g:10910:1: ( rule__MultipleArithmeticClause__MultiClauseAssignment_1 )
+            // InternalDescartesQL.g:10910:2: rule__MultipleArithmeticClause__MultiClauseAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group__3__Impl();
+            rule__MultipleArithmeticClause__MultiClauseAssignment_1();
 
             state._fsp--;
 
 
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__3"
-
-
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group__3__Impl"
-    // InternalDescartesQL.g:10104:1: rule__WhatIfValueVariationClause__Group__3__Impl : ( '>' ) ;
-    public final void rule__WhatIfValueVariationClause__Group__3__Impl() throws RecognitionException {
+            }
 
-        		int stackSize = keepStackSize();
-            
-        try {
-            // InternalDescartesQL.g:10108:1: ( ( '>' ) )
-            // InternalDescartesQL.g:10109:1: ( '>' )
-            {
-            // InternalDescartesQL.g:10109:1: ( '>' )
-            // InternalDescartesQL.g:10110:1: '>'
-            {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getGreaterThanSignKeyword_3()); 
-            match(input,20,FOLLOW_2); 
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getGreaterThanSignKeyword_3()); 
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseAssignment_1()); 
 
             }
 
@@ -28187,26 +30344,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group__3__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__0"
-    // InternalDescartesQL.g:10131:1: rule__WhatIfValueVariationClause__Group_2__0 : rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1 ;
-    public final void rule__WhatIfValueVariationClause__Group_2__0() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__2"
+    // InternalDescartesQL.g:10920:1: rule__MultipleArithmeticClause__Group__2 : rule__MultipleArithmeticClause__Group__2__Impl rule__MultipleArithmeticClause__Group__3 ;
+    public final void rule__MultipleArithmeticClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10135:1: ( rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1 )
-            // InternalDescartesQL.g:10136:2: rule__WhatIfValueVariationClause__Group_2__0__Impl rule__WhatIfValueVariationClause__Group_2__1
+            // InternalDescartesQL.g:10924:1: ( rule__MultipleArithmeticClause__Group__2__Impl rule__MultipleArithmeticClause__Group__3 )
+            // InternalDescartesQL.g:10925:2: rule__MultipleArithmeticClause__Group__2__Impl rule__MultipleArithmeticClause__Group__3
             {
-            pushFollow(FOLLOW_65);
-            rule__WhatIfValueVariationClause__Group_2__0__Impl();
+            pushFollow(FOLLOW_67);
+            rule__MultipleArithmeticClause__Group__2__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group_2__1();
+            rule__MultipleArithmeticClause__Group__3();
 
             state._fsp--;
 
@@ -28225,25 +30382,53 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__0"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__2"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__0__Impl"
-    // InternalDescartesQL.g:10143:1: rule__WhatIfValueVariationClause__Group_2__0__Impl : ( ',' ) ;
-    public final void rule__WhatIfValueVariationClause__Group_2__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__2__Impl"
+    // InternalDescartesQL.g:10932:1: rule__MultipleArithmeticClause__Group__2__Impl : ( ( rule__MultipleArithmeticClause__Group_2__0 )* ) ;
+    public final void rule__MultipleArithmeticClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10147:1: ( ( ',' ) )
-            // InternalDescartesQL.g:10148:1: ( ',' )
+            // InternalDescartesQL.g:10936:1: ( ( ( rule__MultipleArithmeticClause__Group_2__0 )* ) )
+            // InternalDescartesQL.g:10937:1: ( ( rule__MultipleArithmeticClause__Group_2__0 )* )
             {
-            // InternalDescartesQL.g:10148:1: ( ',' )
-            // InternalDescartesQL.g:10149:1: ','
+            // InternalDescartesQL.g:10937:1: ( ( rule__MultipleArithmeticClause__Group_2__0 )* )
+            // InternalDescartesQL.g:10938:1: ( rule__MultipleArithmeticClause__Group_2__0 )*
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getCommaKeyword_2_0()); 
-            match(input,53,FOLLOW_2); 
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getCommaKeyword_2_0()); 
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getGroup_2()); 
+            // InternalDescartesQL.g:10939:1: ( rule__MultipleArithmeticClause__Group_2__0 )*
+            loop80:
+            do {
+                int alt80=2;
+                int LA80_0 = input.LA(1);
+
+                if ( (LA80_0==57) ) {
+                    alt80=1;
+                }
+
+
+                switch (alt80) {
+            	case 1 :
+            	    // InternalDescartesQL.g:10939:2: rule__MultipleArithmeticClause__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_12);
+            	    rule__MultipleArithmeticClause__Group_2__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop80;
+                }
+            } while (true);
+
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getGroup_2()); 
 
             }
 
@@ -28262,21 +30447,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__0__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__2__Impl"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__1"
-    // InternalDescartesQL.g:10162:1: rule__WhatIfValueVariationClause__Group_2__1 : rule__WhatIfValueVariationClause__Group_2__1__Impl ;
-    public final void rule__WhatIfValueVariationClause__Group_2__1() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__3"
+    // InternalDescartesQL.g:10949:1: rule__MultipleArithmeticClause__Group__3 : rule__MultipleArithmeticClause__Group__3__Impl ;
+    public final void rule__MultipleArithmeticClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10166:1: ( rule__WhatIfValueVariationClause__Group_2__1__Impl )
-            // InternalDescartesQL.g:10167:2: rule__WhatIfValueVariationClause__Group_2__1__Impl
+            // InternalDescartesQL.g:10953:1: ( rule__MultipleArithmeticClause__Group__3__Impl )
+            // InternalDescartesQL.g:10954:2: rule__MultipleArithmeticClause__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__WhatIfValueVariationClause__Group_2__1__Impl();
+            rule__MultipleArithmeticClause__Group__3__Impl();
 
             state._fsp--;
 
@@ -28295,78 +30480,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__1"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__3"
 
 
-    // $ANTLR start "rule__WhatIfValueVariationClause__Group_2__1__Impl"
-    // InternalDescartesQL.g:10173:1: rule__WhatIfValueVariationClause__Group_2__1__Impl : ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) ) ;
-    public final void rule__WhatIfValueVariationClause__Group_2__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group__3__Impl"
+    // InternalDescartesQL.g:10960:1: rule__MultipleArithmeticClause__Group__3__Impl : ( '>' ) ;
+    public final void rule__MultipleArithmeticClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10177:1: ( ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) ) )
-            // InternalDescartesQL.g:10178:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) )
-            {
-            // InternalDescartesQL.g:10178:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* ) )
-            // InternalDescartesQL.g:10179:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) ) ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* )
-            {
-            // InternalDescartesQL.g:10179:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 ) )
-            // InternalDescartesQL.g:10180:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )
+            // InternalDescartesQL.g:10964:1: ( ( '>' ) )
+            // InternalDescartesQL.g:10965:1: ( '>' )
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
-            // InternalDescartesQL.g:10181:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )
-            // InternalDescartesQL.g:10181:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1
-            {
-            pushFollow(FOLLOW_67);
-            rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
-
-            }
-
-            // InternalDescartesQL.g:10184:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )* )
-            // InternalDescartesQL.g:10185:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )*
+            // InternalDescartesQL.g:10965:1: ( '>' )
+            // InternalDescartesQL.g:10966:1: '>'
             {
-             before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
-            // InternalDescartesQL.g:10186:1: ( rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 )*
-            loop72:
-            do {
-                int alt72=2;
-                int LA72_0 = input.LA(1);
-
-                if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_INT)||(LA72_0>=15 && LA72_0<=17)) ) {
-                    alt72=1;
-                }
-
-
-                switch (alt72) {
-            	case 1 :
-            	    // InternalDescartesQL.g:10186:2: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1
-            	    {
-            	    pushFollow(FOLLOW_67);
-            	    rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1();
-
-            	    state._fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop72;
-                }
-            } while (true);
-
-             after(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAssignment_2_1()); 
-
-            }
-
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getGreaterThanSignKeyword_3()); 
+            match(input,21,FOLLOW_2); 
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getGreaterThanSignKeyword_3()); 
 
             }
 
@@ -28385,26 +30517,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__WhatIfValueVariationClause__Group_2__1__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group__3__Impl"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group__0"
-    // InternalDescartesQL.g:10203:1: rule__VariationInstruction__Group__0 : rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1 ;
-    public final void rule__VariationInstruction__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group_2__0"
+    // InternalDescartesQL.g:10987:1: rule__MultipleArithmeticClause__Group_2__0 : rule__MultipleArithmeticClause__Group_2__0__Impl rule__MultipleArithmeticClause__Group_2__1 ;
+    public final void rule__MultipleArithmeticClause__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10207:1: ( rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1 )
-            // InternalDescartesQL.g:10208:2: rule__VariationInstruction__Group__0__Impl rule__VariationInstruction__Group__1
+            // InternalDescartesQL.g:10991:1: ( rule__MultipleArithmeticClause__Group_2__0__Impl rule__MultipleArithmeticClause__Group_2__1 )
+            // InternalDescartesQL.g:10992:2: rule__MultipleArithmeticClause__Group_2__0__Impl rule__MultipleArithmeticClause__Group_2__1
             {
-            pushFollow(FOLLOW_11);
-            rule__VariationInstruction__Group__0__Impl();
+            pushFollow(FOLLOW_69);
+            rule__MultipleArithmeticClause__Group_2__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group__1();
+            rule__MultipleArithmeticClause__Group_2__1();
 
             state._fsp--;
 
@@ -28423,35 +30555,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group__0"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group_2__0"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group__0__Impl"
-    // InternalDescartesQL.g:10215:1: rule__VariationInstruction__Group__0__Impl : ( ( rule__VariationInstruction__VariationAssignment_0 ) ) ;
-    public final void rule__VariationInstruction__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group_2__0__Impl"
+    // InternalDescartesQL.g:10999:1: rule__MultipleArithmeticClause__Group_2__0__Impl : ( ',' ) ;
+    public final void rule__MultipleArithmeticClause__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10219:1: ( ( ( rule__VariationInstruction__VariationAssignment_0 ) ) )
-            // InternalDescartesQL.g:10220:1: ( ( rule__VariationInstruction__VariationAssignment_0 ) )
-            {
-            // InternalDescartesQL.g:10220:1: ( ( rule__VariationInstruction__VariationAssignment_0 ) )
-            // InternalDescartesQL.g:10221:1: ( rule__VariationInstruction__VariationAssignment_0 )
+            // InternalDescartesQL.g:11003:1: ( ( ',' ) )
+            // InternalDescartesQL.g:11004:1: ( ',' )
             {
-             before(grammarAccess.getVariationInstructionAccess().getVariationAssignment_0()); 
-            // InternalDescartesQL.g:10222:1: ( rule__VariationInstruction__VariationAssignment_0 )
-            // InternalDescartesQL.g:10222:2: rule__VariationInstruction__VariationAssignment_0
+            // InternalDescartesQL.g:11004:1: ( ',' )
+            // InternalDescartesQL.g:11005:1: ','
             {
-            pushFollow(FOLLOW_2);
-            rule__VariationInstruction__VariationAssignment_0();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getVariationInstructionAccess().getVariationAssignment_0()); 
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getCommaKeyword_2_0()); 
+            match(input,57,FOLLOW_2); 
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getCommaKeyword_2_0()); 
 
             }
 
@@ -28470,21 +30592,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group__0__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group_2__0__Impl"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group__1"
-    // InternalDescartesQL.g:10232:1: rule__VariationInstruction__Group__1 : rule__VariationInstruction__Group__1__Impl ;
-    public final void rule__VariationInstruction__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group_2__1"
+    // InternalDescartesQL.g:11018:1: rule__MultipleArithmeticClause__Group_2__1 : rule__MultipleArithmeticClause__Group_2__1__Impl ;
+    public final void rule__MultipleArithmeticClause__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10236:1: ( rule__VariationInstruction__Group__1__Impl )
-            // InternalDescartesQL.g:10237:2: rule__VariationInstruction__Group__1__Impl
+            // InternalDescartesQL.g:11022:1: ( rule__MultipleArithmeticClause__Group_2__1__Impl )
+            // InternalDescartesQL.g:11023:2: rule__MultipleArithmeticClause__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group__1__Impl();
+            rule__MultipleArithmeticClause__Group_2__1__Impl();
 
             state._fsp--;
 
@@ -28503,35 +30625,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group__1"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group_2__1"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group__1__Impl"
-    // InternalDescartesQL.g:10243:1: rule__VariationInstruction__Group__1__Impl : ( ( rule__VariationInstruction__Group_1__0 ) ) ;
-    public final void rule__VariationInstruction__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__MultipleArithmeticClause__Group_2__1__Impl"
+    // InternalDescartesQL.g:11029:1: rule__MultipleArithmeticClause__Group_2__1__Impl : ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 ) ) ;
+    public final void rule__MultipleArithmeticClause__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10247:1: ( ( ( rule__VariationInstruction__Group_1__0 ) ) )
-            // InternalDescartesQL.g:10248:1: ( ( rule__VariationInstruction__Group_1__0 ) )
+            // InternalDescartesQL.g:11033:1: ( ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 ) ) )
+            // InternalDescartesQL.g:11034:1: ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 ) )
             {
-            // InternalDescartesQL.g:10248:1: ( ( rule__VariationInstruction__Group_1__0 ) )
-            // InternalDescartesQL.g:10249:1: ( rule__VariationInstruction__Group_1__0 )
+            // InternalDescartesQL.g:11034:1: ( ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 ) )
+            // InternalDescartesQL.g:11035:1: ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 )
             {
-             before(grammarAccess.getVariationInstructionAccess().getGroup_1()); 
-            // InternalDescartesQL.g:10250:1: ( rule__VariationInstruction__Group_1__0 )
-            // InternalDescartesQL.g:10250:2: rule__VariationInstruction__Group_1__0
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseAssignment_2_1()); 
+            // InternalDescartesQL.g:11036:1: ( rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 )
+            // InternalDescartesQL.g:11036:2: rule__MultipleArithmeticClause__MultiClauseAssignment_2_1
             {
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group_1__0();
+            rule__MultipleArithmeticClause__MultiClauseAssignment_2_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getVariationInstructionAccess().getGroup_1()); 
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseAssignment_2_1()); 
 
             }
 
@@ -28550,26 +30672,26 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group__1__Impl"
+    // $ANTLR end "rule__MultipleArithmeticClause__Group_2__1__Impl"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__0"
-    // InternalDescartesQL.g:10264:1: rule__VariationInstruction__Group_1__0 : rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1 ;
-    public final void rule__VariationInstruction__Group_1__0() throws RecognitionException {
+    // $ANTLR start "rule__ArithmeticClause__Group__0"
+    // InternalDescartesQL.g:11050:1: rule__ArithmeticClause__Group__0 : rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1 ;
+    public final void rule__ArithmeticClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10268:1: ( rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1 )
-            // InternalDescartesQL.g:10269:2: rule__VariationInstruction__Group_1__0__Impl rule__VariationInstruction__Group_1__1
+            // InternalDescartesQL.g:11054:1: ( rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1 )
+            // InternalDescartesQL.g:11055:2: rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1
             {
-            pushFollow(FOLLOW_34);
-            rule__VariationInstruction__Group_1__0__Impl();
+            pushFollow(FOLLOW_19);
+            rule__ArithmeticClause__Group__0__Impl();
 
             state._fsp--;
 
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group_1__1();
+            rule__ArithmeticClause__Group__1();
 
             state._fsp--;
 
@@ -28588,25 +30710,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__0"
+    // $ANTLR end "rule__ArithmeticClause__Group__0"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__0__Impl"
-    // InternalDescartesQL.g:10276:1: rule__VariationInstruction__Group_1__0__Impl : ( '(' ) ;
-    public final void rule__VariationInstruction__Group_1__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ArithmeticClause__Group__0__Impl"
+    // InternalDescartesQL.g:11062:1: rule__ArithmeticClause__Group__0__Impl : ( ( rule__ArithmeticClause__ModeAssignment_0 ) ) ;
+    public final void rule__ArithmeticClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10280:1: ( ( '(' ) )
-            // InternalDescartesQL.g:10281:1: ( '(' )
+            // InternalDescartesQL.g:11066:1: ( ( ( rule__ArithmeticClause__ModeAssignment_0 ) ) )
+            // InternalDescartesQL.g:11067:1: ( ( rule__ArithmeticClause__ModeAssignment_0 ) )
             {
-            // InternalDescartesQL.g:10281:1: ( '(' )
-            // InternalDescartesQL.g:10282:1: '('
+            // InternalDescartesQL.g:11067:1: ( ( rule__ArithmeticClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:11068:1: ( rule__ArithmeticClause__ModeAssignment_0 )
             {
-             before(grammarAccess.getVariationInstructionAccess().getLeftParenthesisKeyword_1_0()); 
-            match(input,55,FOLLOW_2); 
-             after(grammarAccess.getVariationInstructionAccess().getLeftParenthesisKeyword_1_0()); 
+             before(grammarAccess.getArithmeticClauseAccess().getModeAssignment_0()); 
+            // InternalDescartesQL.g:11069:1: ( rule__ArithmeticClause__ModeAssignment_0 )
+            // InternalDescartesQL.g:11069:2: rule__ArithmeticClause__ModeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ArithmeticClause__ModeAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getArithmeticClauseAccess().getModeAssignment_0()); 
 
             }
 
@@ -28625,26 +30757,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__0__Impl"
+    // $ANTLR end "rule__ArithmeticClause__Group__0__Impl"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__1"
-    // InternalDescartesQL.g:10295:1: rule__VariationInstruction__Group_1__1 : rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2 ;
-    public final void rule__VariationInstruction__Group_1__1() throws RecognitionException {
+    // $ANTLR start "rule__ArithmeticClause__Group__1"
+    // InternalDescartesQL.g:11079:1: rule__ArithmeticClause__Group__1 : rule__ArithmeticClause__Group__1__Impl ;
+    public final void rule__ArithmeticClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10299:1: ( rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2 )
-            // InternalDescartesQL.g:10300:2: rule__VariationInstruction__Group_1__1__Impl rule__VariationInstruction__Group_1__2
+            // InternalDescartesQL.g:11083:1: ( rule__ArithmeticClause__Group__1__Impl )
+            // InternalDescartesQL.g:11084:2: rule__ArithmeticClause__Group__1__Impl
             {
-            pushFollow(FOLLOW_29);
-            rule__VariationInstruction__Group_1__1__Impl();
-
-            state._fsp--;
-
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group_1__2();
+            rule__ArithmeticClause__Group__1__Impl();
 
             state._fsp--;
 
@@ -28663,35 +30790,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__1"
+    // $ANTLR end "rule__ArithmeticClause__Group__1"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__1__Impl"
-    // InternalDescartesQL.g:10307:1: rule__VariationInstruction__Group_1__1__Impl : ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) ) ;
-    public final void rule__VariationInstruction__Group_1__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__ArithmeticClause__Group__1__Impl"
+    // InternalDescartesQL.g:11090:1: rule__ArithmeticClause__Group__1__Impl : ( ( rule__ArithmeticClause__ValueAssignment_1 ) ) ;
+    public final void rule__ArithmeticClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10311:1: ( ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) ) )
-            // InternalDescartesQL.g:10312:1: ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) )
+            // InternalDescartesQL.g:11094:1: ( ( ( rule__ArithmeticClause__ValueAssignment_1 ) ) )
+            // InternalDescartesQL.g:11095:1: ( ( rule__ArithmeticClause__ValueAssignment_1 ) )
             {
-            // InternalDescartesQL.g:10312:1: ( ( rule__VariationInstruction__ArgumentAssignment_1_1 ) )
-            // InternalDescartesQL.g:10313:1: ( rule__VariationInstruction__ArgumentAssignment_1_1 )
+            // InternalDescartesQL.g:11095:1: ( ( rule__ArithmeticClause__ValueAssignment_1 ) )
+            // InternalDescartesQL.g:11096:1: ( rule__ArithmeticClause__ValueAssignment_1 )
             {
-             before(grammarAccess.getVariationInstructionAccess().getArgumentAssignment_1_1()); 
-            // InternalDescartesQL.g:10314:1: ( rule__VariationInstruction__ArgumentAssignment_1_1 )
-            // InternalDescartesQL.g:10314:2: rule__VariationInstruction__ArgumentAssignment_1_1
+             before(grammarAccess.getArithmeticClauseAccess().getValueAssignment_1()); 
+            // InternalDescartesQL.g:11097:1: ( rule__ArithmeticClause__ValueAssignment_1 )
+            // InternalDescartesQL.g:11097:2: rule__ArithmeticClause__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__ArgumentAssignment_1_1();
+            rule__ArithmeticClause__ValueAssignment_1();
 
             state._fsp--;
 
 
             }
 
-             after(grammarAccess.getVariationInstructionAccess().getArgumentAssignment_1_1()); 
+             after(grammarAccess.getArithmeticClauseAccess().getValueAssignment_1()); 
 
             }
 
@@ -28710,25 +30837,39 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__1__Impl"
+    // $ANTLR end "rule__ArithmeticClause__Group__1__Impl"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__2"
-    // InternalDescartesQL.g:10324:1: rule__VariationInstruction__Group_1__2 : rule__VariationInstruction__Group_1__2__Impl ;
-    public final void rule__VariationInstruction__Group_1__2() throws RecognitionException {
+    // $ANTLR start "rule__DescartesQL__QueryAssignment_0"
+    // InternalDescartesQL.g:11112:1: rule__DescartesQL__QueryAssignment_0 : ( ( rule__DescartesQL__QueryAlternatives_0_0 ) ) ;
+    public final void rule__DescartesQL__QueryAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10328:1: ( rule__VariationInstruction__Group_1__2__Impl )
-            // InternalDescartesQL.g:10329:2: rule__VariationInstruction__Group_1__2__Impl
+            // InternalDescartesQL.g:11116:1: ( ( ( rule__DescartesQL__QueryAlternatives_0_0 ) ) )
+            // InternalDescartesQL.g:11117:1: ( ( rule__DescartesQL__QueryAlternatives_0_0 ) )
+            {
+            // InternalDescartesQL.g:11117:1: ( ( rule__DescartesQL__QueryAlternatives_0_0 ) )
+            // InternalDescartesQL.g:11118:1: ( rule__DescartesQL__QueryAlternatives_0_0 )
+            {
+             before(grammarAccess.getDescartesQLAccess().getQueryAlternatives_0_0()); 
+            // InternalDescartesQL.g:11119:1: ( rule__DescartesQL__QueryAlternatives_0_0 )
+            // InternalDescartesQL.g:11119:2: rule__DescartesQL__QueryAlternatives_0_0
             {
             pushFollow(FOLLOW_2);
-            rule__VariationInstruction__Group_1__2__Impl();
+            rule__DescartesQL__QueryAlternatives_0_0();
 
             state._fsp--;
 
 
+            }
+
+             after(grammarAccess.getDescartesQLAccess().getQueryAlternatives_0_0()); 
+
+            }
+
+
             }
 
         }
@@ -28743,25 +30884,35 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__2"
+    // $ANTLR end "rule__DescartesQL__QueryAssignment_0"
 
 
-    // $ANTLR start "rule__VariationInstruction__Group_1__2__Impl"
-    // InternalDescartesQL.g:10335:1: rule__VariationInstruction__Group_1__2__Impl : ( ')' ) ;
-    public final void rule__VariationInstruction__Group_1__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Goal__QueryTypeAssignment_0"
+    // InternalDescartesQL.g:11128:1: rule__Goal__QueryTypeAssignment_0 : ( ( rule__Goal__QueryTypeAlternatives_0_0 ) ) ;
+    public final void rule__Goal__QueryTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10339:1: ( ( ')' ) )
-            // InternalDescartesQL.g:10340:1: ( ')' )
+            // InternalDescartesQL.g:11132:1: ( ( ( rule__Goal__QueryTypeAlternatives_0_0 ) ) )
+            // InternalDescartesQL.g:11133:1: ( ( rule__Goal__QueryTypeAlternatives_0_0 ) )
             {
-            // InternalDescartesQL.g:10340:1: ( ')' )
-            // InternalDescartesQL.g:10341:1: ')'
+            // InternalDescartesQL.g:11133:1: ( ( rule__Goal__QueryTypeAlternatives_0_0 ) )
+            // InternalDescartesQL.g:11134:1: ( rule__Goal__QueryTypeAlternatives_0_0 )
             {
-             before(grammarAccess.getVariationInstructionAccess().getRightParenthesisKeyword_1_2()); 
-            match(input,56,FOLLOW_2); 
-             after(grammarAccess.getVariationInstructionAccess().getRightParenthesisKeyword_1_2()); 
+             before(grammarAccess.getGoalAccess().getQueryTypeAlternatives_0_0()); 
+            // InternalDescartesQL.g:11135:1: ( rule__Goal__QueryTypeAlternatives_0_0 )
+            // InternalDescartesQL.g:11135:2: rule__Goal__QueryTypeAlternatives_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Goal__QueryTypeAlternatives_0_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGoalAccess().getQueryTypeAlternatives_0_0()); 
 
             }
 
@@ -28780,28 +30931,31 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__VariationInstruction__Group_1__2__Impl"
+    // $ANTLR end "rule__Goal__QueryTypeAssignment_0"
 
 
-    // $ANTLR start "rule__ArithmeticClause__Group__0"
-    // InternalDescartesQL.g:10362:1: rule__ArithmeticClause__Group__0 : rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1 ;
-    public final void rule__ArithmeticClause__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__Goal__SlaQueryAssignment_1"
+    // InternalDescartesQL.g:11144:1: rule__Goal__SlaQueryAssignment_1 : ( ruleSlaQuery ) ;
+    public final void rule__Goal__SlaQueryAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10366:1: ( rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1 )
-            // InternalDescartesQL.g:10367:2: rule__ArithmeticClause__Group__0__Impl rule__ArithmeticClause__Group__1
+            // InternalDescartesQL.g:11148:1: ( ( ruleSlaQuery ) )
+            // InternalDescartesQL.g:11149:1: ( ruleSlaQuery )
             {
-            pushFollow(FOLLOW_16);
-            rule__ArithmeticClause__Group__0__Impl();
+            // InternalDescartesQL.g:11149:1: ( ruleSlaQuery )
+            // InternalDescartesQL.g:11150:1: ruleSlaQuery
+            {
+             before(grammarAccess.getGoalAccess().getSlaQuerySlaQueryParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_2);
+            ruleSlaQuery();
 
             state._fsp--;
 
-            pushFollow(FOLLOW_2);
-            rule__ArithmeticClause__Group__1();
+             after(grammarAccess.getGoalAccess().getSlaQuerySlaQueryParserRuleCall_1_0()); 
 
-            state._fsp--;
+            }
 
 
             }
@@ -28818,35 +30972,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ArithmeticClause__Group__0"
+    // $ANTLR end "rule__Goal__SlaQueryAssignment_1"
 
 
-    // $ANTLR start "rule__ArithmeticClause__Group__0__Impl"
-    // InternalDescartesQL.g:10374:1: rule__ArithmeticClause__Group__0__Impl : ( ( rule__ArithmeticClause__ModeAssignment_0 ) ) ;
-    public final void rule__ArithmeticClause__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Goal__SloQueryAssignment_2"
+    // InternalDescartesQL.g:11159:1: rule__Goal__SloQueryAssignment_2 : ( ruleSloQuery ) ;
+    public final void rule__Goal__SloQueryAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10378:1: ( ( ( rule__ArithmeticClause__ModeAssignment_0 ) ) )
-            // InternalDescartesQL.g:10379:1: ( ( rule__ArithmeticClause__ModeAssignment_0 ) )
+            // InternalDescartesQL.g:11163:1: ( ( ruleSloQuery ) )
+            // InternalDescartesQL.g:11164:1: ( ruleSloQuery )
             {
-            // InternalDescartesQL.g:10379:1: ( ( rule__ArithmeticClause__ModeAssignment_0 ) )
-            // InternalDescartesQL.g:10380:1: ( rule__ArithmeticClause__ModeAssignment_0 )
-            {
-             before(grammarAccess.getArithmeticClauseAccess().getModeAssignment_0()); 
-            // InternalDescartesQL.g:10381:1: ( rule__ArithmeticClause__ModeAssignment_0 )
-            // InternalDescartesQL.g:10381:2: rule__ArithmeticClause__ModeAssignment_0
+            // InternalDescartesQL.g:11164:1: ( ruleSloQuery )
+            // InternalDescartesQL.g:11165:1: ruleSloQuery
             {
+             before(grammarAccess.getGoalAccess().getSloQuerySloQueryParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
-            rule__ArithmeticClause__ModeAssignment_0();
+            ruleSloQuery();
 
             state._fsp--;
 
-
-            }
-
-             after(grammarAccess.getArithmeticClauseAccess().getModeAssignment_0()); 
+             after(grammarAccess.getGoalAccess().getSloQuerySloQueryParserRuleCall_2_0()); 
 
             }
 
@@ -28865,24 +31013,32 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ArithmeticClause__Group__0__Impl"
+    // $ANTLR end "rule__Goal__SloQueryAssignment_2"
 
 
-    // $ANTLR start "rule__ArithmeticClause__Group__1"
-    // InternalDescartesQL.g:10391:1: rule__ArithmeticClause__Group__1 : rule__ArithmeticClause__Group__1__Impl ;
-    public final void rule__ArithmeticClause__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__Goal__ConstraintClauseAssignment_3"
+    // InternalDescartesQL.g:11174:1: rule__Goal__ConstraintClauseAssignment_3 : ( ruleConstraintClause ) ;
+    public final void rule__Goal__ConstraintClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10395:1: ( rule__ArithmeticClause__Group__1__Impl )
-            // InternalDescartesQL.g:10396:2: rule__ArithmeticClause__Group__1__Impl
+            // InternalDescartesQL.g:11178:1: ( ( ruleConstraintClause ) )
+            // InternalDescartesQL.g:11179:1: ( ruleConstraintClause )
             {
+            // InternalDescartesQL.g:11179:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:11180:1: ruleConstraintClause
+            {
+             before(grammarAccess.getGoalAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
-            rule__ArithmeticClause__Group__1__Impl();
+            ruleConstraintClause();
 
             state._fsp--;
 
+             after(grammarAccess.getGoalAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
+
+            }
+
 
             }
 
@@ -28898,35 +31054,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ArithmeticClause__Group__1"
+    // $ANTLR end "rule__Goal__ConstraintClauseAssignment_3"
 
 
-    // $ANTLR start "rule__ArithmeticClause__Group__1__Impl"
-    // InternalDescartesQL.g:10402:1: rule__ArithmeticClause__Group__1__Impl : ( ( rule__ArithmeticClause__ValueAssignment_1 ) ) ;
-    public final void rule__ArithmeticClause__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__Goal__DofClauseAssignment_4"
+    // InternalDescartesQL.g:11189:1: rule__Goal__DofClauseAssignment_4 : ( ruleDoFClause ) ;
+    public final void rule__Goal__DofClauseAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10406:1: ( ( ( rule__ArithmeticClause__ValueAssignment_1 ) ) )
-            // InternalDescartesQL.g:10407:1: ( ( rule__ArithmeticClause__ValueAssignment_1 ) )
+            // InternalDescartesQL.g:11193:1: ( ( ruleDoFClause ) )
+            // InternalDescartesQL.g:11194:1: ( ruleDoFClause )
             {
-            // InternalDescartesQL.g:10407:1: ( ( rule__ArithmeticClause__ValueAssignment_1 ) )
-            // InternalDescartesQL.g:10408:1: ( rule__ArithmeticClause__ValueAssignment_1 )
-            {
-             before(grammarAccess.getArithmeticClauseAccess().getValueAssignment_1()); 
-            // InternalDescartesQL.g:10409:1: ( rule__ArithmeticClause__ValueAssignment_1 )
-            // InternalDescartesQL.g:10409:2: rule__ArithmeticClause__ValueAssignment_1
+            // InternalDescartesQL.g:11194:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:11195:1: ruleDoFClause
             {
+             before(grammarAccess.getGoalAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
-            rule__ArithmeticClause__ValueAssignment_1();
+            ruleDoFClause();
 
             state._fsp--;
 
-
-            }
-
-             after(grammarAccess.getArithmeticClauseAccess().getValueAssignment_1()); 
+             after(grammarAccess.getGoalAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
 
             }
 
@@ -28945,35 +31095,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__ArithmeticClause__Group__1__Impl"
+    // $ANTLR end "rule__Goal__DofClauseAssignment_4"
 
 
-    // $ANTLR start "rule__DescartesQL__QueryAssignment_0"
-    // InternalDescartesQL.g:10424:1: rule__DescartesQL__QueryAssignment_0 : ( ( rule__DescartesQL__QueryAlternatives_0_0 ) ) ;
-    public final void rule__DescartesQL__QueryAssignment_0() throws RecognitionException {
+    // $ANTLR start "rule__Goal__ForClauseAssignment_5"
+    // InternalDescartesQL.g:11204:1: rule__Goal__ForClauseAssignment_5 : ( ruleForClause ) ;
+    public final void rule__Goal__ForClauseAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10428:1: ( ( ( rule__DescartesQL__QueryAlternatives_0_0 ) ) )
-            // InternalDescartesQL.g:10429:1: ( ( rule__DescartesQL__QueryAlternatives_0_0 ) )
+            // InternalDescartesQL.g:11208:1: ( ( ruleForClause ) )
+            // InternalDescartesQL.g:11209:1: ( ruleForClause )
             {
-            // InternalDescartesQL.g:10429:1: ( ( rule__DescartesQL__QueryAlternatives_0_0 ) )
-            // InternalDescartesQL.g:10430:1: ( rule__DescartesQL__QueryAlternatives_0_0 )
-            {
-             before(grammarAccess.getDescartesQLAccess().getQueryAlternatives_0_0()); 
-            // InternalDescartesQL.g:10431:1: ( rule__DescartesQL__QueryAlternatives_0_0 )
-            // InternalDescartesQL.g:10431:2: rule__DescartesQL__QueryAlternatives_0_0
+            // InternalDescartesQL.g:11209:1: ( ruleForClause )
+            // InternalDescartesQL.g:11210:1: ruleForClause
             {
+             before(grammarAccess.getGoalAccess().getForClauseForClauseParserRuleCall_5_0()); 
             pushFollow(FOLLOW_2);
-            rule__DescartesQL__QueryAlternatives_0_0();
+            ruleForClause();
 
             state._fsp--;
 
-
-            }
-
-             after(grammarAccess.getDescartesQLAccess().getQueryAlternatives_0_0()); 
+             after(grammarAccess.getGoalAccess().getForClauseForClauseParserRuleCall_5_0()); 
 
             }
 
@@ -28992,35 +31136,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__DescartesQL__QueryAssignment_0"
+    // $ANTLR end "rule__Goal__ForClauseAssignment_5"
 
 
-    // $ANTLR start "rule__Goal__QueryTypeAssignment_0"
-    // InternalDescartesQL.g:10440:1: rule__Goal__QueryTypeAssignment_0 : ( ( rule__Goal__QueryTypeAlternatives_0_0 ) ) ;
-    public final void rule__Goal__QueryTypeAssignment_0() throws RecognitionException {
+    // $ANTLR start "rule__Goal__UsingClauseAssignment_6"
+    // InternalDescartesQL.g:11219:1: rule__Goal__UsingClauseAssignment_6 : ( ruleUsingClause ) ;
+    public final void rule__Goal__UsingClauseAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10444:1: ( ( ( rule__Goal__QueryTypeAlternatives_0_0 ) ) )
-            // InternalDescartesQL.g:10445:1: ( ( rule__Goal__QueryTypeAlternatives_0_0 ) )
+            // InternalDescartesQL.g:11223:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:11224:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:10445:1: ( ( rule__Goal__QueryTypeAlternatives_0_0 ) )
-            // InternalDescartesQL.g:10446:1: ( rule__Goal__QueryTypeAlternatives_0_0 )
-            {
-             before(grammarAccess.getGoalAccess().getQueryTypeAlternatives_0_0()); 
-            // InternalDescartesQL.g:10447:1: ( rule__Goal__QueryTypeAlternatives_0_0 )
-            // InternalDescartesQL.g:10447:2: rule__Goal__QueryTypeAlternatives_0_0
+            // InternalDescartesQL.g:11224:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11225:1: ruleUsingClause
             {
+             before(grammarAccess.getGoalAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
-            rule__Goal__QueryTypeAlternatives_0_0();
+            ruleUsingClause();
 
             state._fsp--;
 
-
-            }
-
-             after(grammarAccess.getGoalAccess().getQueryTypeAlternatives_0_0()); 
+             after(grammarAccess.getGoalAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
 
             }
 
@@ -29039,29 +31177,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__QueryTypeAssignment_0"
+    // $ANTLR end "rule__Goal__UsingClauseAssignment_6"
 
 
-    // $ANTLR start "rule__Goal__SlaQueryAssignment_1"
-    // InternalDescartesQL.g:10456:1: rule__Goal__SlaQueryAssignment_1 : ( ruleSlaQuery ) ;
-    public final void rule__Goal__SlaQueryAssignment_1() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__OffsetAssignment_1"
+    // InternalDescartesQL.g:11234:1: rule__GenerateSLAConcern__OffsetAssignment_1 : ( ruleMultipleArithmeticClause ) ;
+    public final void rule__GenerateSLAConcern__OffsetAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10460:1: ( ( ruleSlaQuery ) )
-            // InternalDescartesQL.g:10461:1: ( ruleSlaQuery )
+            // InternalDescartesQL.g:11238:1: ( ( ruleMultipleArithmeticClause ) )
+            // InternalDescartesQL.g:11239:1: ( ruleMultipleArithmeticClause )
             {
-            // InternalDescartesQL.g:10461:1: ( ruleSlaQuery )
-            // InternalDescartesQL.g:10462:1: ruleSlaQuery
+            // InternalDescartesQL.g:11239:1: ( ruleMultipleArithmeticClause )
+            // InternalDescartesQL.g:11240:1: ruleMultipleArithmeticClause
             {
-             before(grammarAccess.getGoalAccess().getSlaQuerySlaQueryParserRuleCall_1_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getOffsetMultipleArithmeticClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
-            ruleSlaQuery();
+            ruleMultipleArithmeticClause();
 
             state._fsp--;
 
-             after(grammarAccess.getGoalAccess().getSlaQuerySlaQueryParserRuleCall_1_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getOffsetMultipleArithmeticClauseParserRuleCall_1_0()); 
 
             }
 
@@ -29080,29 +31218,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__SlaQueryAssignment_1"
+    // $ANTLR end "rule__GenerateSLAConcern__OffsetAssignment_1"
 
 
-    // $ANTLR start "rule__Goal__SloQueryAssignment_2"
-    // InternalDescartesQL.g:10471:1: rule__Goal__SloQueryAssignment_2 : ( ruleSloQuery ) ;
-    public final void rule__Goal__SloQueryAssignment_2() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__PercentageAssignment_2_1"
+    // InternalDescartesQL.g:11249:1: rule__GenerateSLAConcern__PercentageAssignment_2_1 : ( RULE_DOUBLE ) ;
+    public final void rule__GenerateSLAConcern__PercentageAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10475:1: ( ( ruleSloQuery ) )
-            // InternalDescartesQL.g:10476:1: ( ruleSloQuery )
+            // InternalDescartesQL.g:11253:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:11254:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:10476:1: ( ruleSloQuery )
-            // InternalDescartesQL.g:10477:1: ruleSloQuery
+            // InternalDescartesQL.g:11254:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:11255:1: RULE_DOUBLE
             {
-             before(grammarAccess.getGoalAccess().getSloQuerySloQueryParserRuleCall_2_0()); 
-            pushFollow(FOLLOW_2);
-            ruleSloQuery();
-
-            state._fsp--;
-
-             after(grammarAccess.getGoalAccess().getSloQuerySloQueryParserRuleCall_2_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getPercentageDOUBLETerminalRuleCall_2_1_0()); 
+            match(input,RULE_DOUBLE,FOLLOW_2); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getPercentageDOUBLETerminalRuleCall_2_1_0()); 
 
             }
 
@@ -29121,29 +31255,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__SloQueryAssignment_2"
+    // $ANTLR end "rule__GenerateSLAConcern__PercentageAssignment_2_1"
 
 
-    // $ANTLR start "rule__Goal__ConstraintClauseAssignment_3"
-    // InternalDescartesQL.g:10486:1: rule__Goal__ConstraintClauseAssignment_3 : ( ruleConstraintClause ) ;
-    public final void rule__Goal__ConstraintClauseAssignment_3() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__ConstraintClauseAssignment_3"
+    // InternalDescartesQL.g:11264:1: rule__GenerateSLAConcern__ConstraintClauseAssignment_3 : ( ruleConstraintClause ) ;
+    public final void rule__GenerateSLAConcern__ConstraintClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10490:1: ( ( ruleConstraintClause ) )
-            // InternalDescartesQL.g:10491:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:11268:1: ( ( ruleConstraintClause ) )
+            // InternalDescartesQL.g:11269:1: ( ruleConstraintClause )
             {
-            // InternalDescartesQL.g:10491:1: ( ruleConstraintClause )
-            // InternalDescartesQL.g:10492:1: ruleConstraintClause
+            // InternalDescartesQL.g:11269:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:11270:1: ruleConstraintClause
             {
-             before(grammarAccess.getGoalAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
             ruleConstraintClause();
 
             state._fsp--;
 
-             after(grammarAccess.getGoalAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
 
             }
 
@@ -29162,29 +31296,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__ConstraintClauseAssignment_3"
+    // $ANTLR end "rule__GenerateSLAConcern__ConstraintClauseAssignment_3"
 
 
-    // $ANTLR start "rule__Goal__DofClauseAssignment_4"
-    // InternalDescartesQL.g:10501:1: rule__Goal__DofClauseAssignment_4 : ( ruleDoFClause ) ;
-    public final void rule__Goal__DofClauseAssignment_4() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__DofClauseAssignment_4"
+    // InternalDescartesQL.g:11279:1: rule__GenerateSLAConcern__DofClauseAssignment_4 : ( ruleDoFClause ) ;
+    public final void rule__GenerateSLAConcern__DofClauseAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10505:1: ( ( ruleDoFClause ) )
-            // InternalDescartesQL.g:10506:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:11283:1: ( ( ruleDoFClause ) )
+            // InternalDescartesQL.g:11284:1: ( ruleDoFClause )
             {
-            // InternalDescartesQL.g:10506:1: ( ruleDoFClause )
-            // InternalDescartesQL.g:10507:1: ruleDoFClause
+            // InternalDescartesQL.g:11284:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:11285:1: ruleDoFClause
             {
-             before(grammarAccess.getGoalAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
             ruleDoFClause();
 
             state._fsp--;
 
-             after(grammarAccess.getGoalAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getDofClauseDoFClauseParserRuleCall_4_0()); 
 
             }
 
@@ -29203,29 +31337,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__DofClauseAssignment_4"
+    // $ANTLR end "rule__GenerateSLAConcern__DofClauseAssignment_4"
 
 
-    // $ANTLR start "rule__Goal__ForClauseAssignment_5"
-    // InternalDescartesQL.g:10516:1: rule__Goal__ForClauseAssignment_5 : ( ruleForClause ) ;
-    public final void rule__Goal__ForClauseAssignment_5() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__ForClauseAssignment_5"
+    // InternalDescartesQL.g:11294:1: rule__GenerateSLAConcern__ForClauseAssignment_5 : ( ruleForClause ) ;
+    public final void rule__GenerateSLAConcern__ForClauseAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10520:1: ( ( ruleForClause ) )
-            // InternalDescartesQL.g:10521:1: ( ruleForClause )
+            // InternalDescartesQL.g:11298:1: ( ( ruleForClause ) )
+            // InternalDescartesQL.g:11299:1: ( ruleForClause )
             {
-            // InternalDescartesQL.g:10521:1: ( ruleForClause )
-            // InternalDescartesQL.g:10522:1: ruleForClause
+            // InternalDescartesQL.g:11299:1: ( ruleForClause )
+            // InternalDescartesQL.g:11300:1: ruleForClause
             {
-             before(grammarAccess.getGoalAccess().getForClauseForClauseParserRuleCall_5_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getForClauseForClauseParserRuleCall_5_0()); 
             pushFollow(FOLLOW_2);
             ruleForClause();
 
             state._fsp--;
 
-             after(grammarAccess.getGoalAccess().getForClauseForClauseParserRuleCall_5_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getForClauseForClauseParserRuleCall_5_0()); 
 
             }
 
@@ -29244,29 +31378,29 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__ForClauseAssignment_5"
+    // $ANTLR end "rule__GenerateSLAConcern__ForClauseAssignment_5"
 
 
-    // $ANTLR start "rule__Goal__UsingClauseAssignment_6"
-    // InternalDescartesQL.g:10531:1: rule__Goal__UsingClauseAssignment_6 : ( ruleUsingClause ) ;
-    public final void rule__Goal__UsingClauseAssignment_6() throws RecognitionException {
+    // $ANTLR start "rule__GenerateSLAConcern__UsingClauseAssignment_6"
+    // InternalDescartesQL.g:11309:1: rule__GenerateSLAConcern__UsingClauseAssignment_6 : ( ruleUsingClause ) ;
+    public final void rule__GenerateSLAConcern__UsingClauseAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10535:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:10536:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11313:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:11314:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:10536:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:10537:1: ruleUsingClause
+            // InternalDescartesQL.g:11314:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11315:1: ruleUsingClause
             {
-             before(grammarAccess.getGoalAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
+             before(grammarAccess.getGenerateSLAConcernAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
             ruleUsingClause();
 
             state._fsp--;
 
-             after(grammarAccess.getGoalAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
+             after(grammarAccess.getGenerateSLAConcernAccess().getUsingClauseUsingClauseParserRuleCall_6_0()); 
 
             }
 
@@ -29285,28 +31419,28 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Goal__UsingClauseAssignment_6"
+    // $ANTLR end "rule__GenerateSLAConcern__UsingClauseAssignment_6"
 
 
     // $ANTLR start "rule__SlaQuery__TypeAssignment_0"
-    // InternalDescartesQL.g:10546:1: rule__SlaQuery__TypeAssignment_0 : ( ( 'AGREEMENTS' ) ) ;
+    // InternalDescartesQL.g:11324:1: rule__SlaQuery__TypeAssignment_0 : ( ( 'AGREEMENTS' ) ) ;
     public final void rule__SlaQuery__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10550:1: ( ( ( 'AGREEMENTS' ) ) )
-            // InternalDescartesQL.g:10551:1: ( ( 'AGREEMENTS' ) )
+            // InternalDescartesQL.g:11328:1: ( ( ( 'AGREEMENTS' ) ) )
+            // InternalDescartesQL.g:11329:1: ( ( 'AGREEMENTS' ) )
             {
-            // InternalDescartesQL.g:10551:1: ( ( 'AGREEMENTS' ) )
-            // InternalDescartesQL.g:10552:1: ( 'AGREEMENTS' )
+            // InternalDescartesQL.g:11329:1: ( ( 'AGREEMENTS' ) )
+            // InternalDescartesQL.g:11330:1: ( 'AGREEMENTS' )
             {
              before(grammarAccess.getSlaQueryAccess().getTypeAGREEMENTSKeyword_0_0()); 
-            // InternalDescartesQL.g:10553:1: ( 'AGREEMENTS' )
-            // InternalDescartesQL.g:10554:1: 'AGREEMENTS'
+            // InternalDescartesQL.g:11331:1: ( 'AGREEMENTS' )
+            // InternalDescartesQL.g:11332:1: 'AGREEMENTS'
             {
              before(grammarAccess.getSlaQueryAccess().getTypeAGREEMENTSKeyword_0_0()); 
-            match(input,75,FOLLOW_2); 
+            match(input,79,FOLLOW_2); 
              after(grammarAccess.getSlaQueryAccess().getTypeAGREEMENTSKeyword_0_0()); 
 
             }
@@ -29334,17 +31468,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SlaQuery__SlasAssignment_1"
-    // InternalDescartesQL.g:10569:1: rule__SlaQuery__SlasAssignment_1 : ( ruleSla ) ;
+    // InternalDescartesQL.g:11347:1: rule__SlaQuery__SlasAssignment_1 : ( ruleSla ) ;
     public final void rule__SlaQuery__SlasAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10573:1: ( ( ruleSla ) )
-            // InternalDescartesQL.g:10574:1: ( ruleSla )
+            // InternalDescartesQL.g:11351:1: ( ( ruleSla ) )
+            // InternalDescartesQL.g:11352:1: ( ruleSla )
             {
-            // InternalDescartesQL.g:10574:1: ( ruleSla )
-            // InternalDescartesQL.g:10575:1: ruleSla
+            // InternalDescartesQL.g:11352:1: ( ruleSla )
+            // InternalDescartesQL.g:11353:1: ruleSla
             {
              before(grammarAccess.getSlaQueryAccess().getSlasSlaParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -29375,17 +31509,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SlaQuery__SlasAssignment_2_1"
-    // InternalDescartesQL.g:10584:1: rule__SlaQuery__SlasAssignment_2_1 : ( ruleSla ) ;
+    // InternalDescartesQL.g:11362:1: rule__SlaQuery__SlasAssignment_2_1 : ( ruleSla ) ;
     public final void rule__SlaQuery__SlasAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10588:1: ( ( ruleSla ) )
-            // InternalDescartesQL.g:10589:1: ( ruleSla )
+            // InternalDescartesQL.g:11366:1: ( ( ruleSla ) )
+            // InternalDescartesQL.g:11367:1: ( ruleSla )
             {
-            // InternalDescartesQL.g:10589:1: ( ruleSla )
-            // InternalDescartesQL.g:10590:1: ruleSla
+            // InternalDescartesQL.g:11367:1: ( ruleSla )
+            // InternalDescartesQL.g:11368:1: ruleSla
             {
              before(grammarAccess.getSlaQueryAccess().getSlasSlaParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -29416,24 +31550,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SloQuery__TypeAssignment_0"
-    // InternalDescartesQL.g:10599:1: rule__SloQuery__TypeAssignment_0 : ( ( 'GOALS' ) ) ;
+    // InternalDescartesQL.g:11377:1: rule__SloQuery__TypeAssignment_0 : ( ( 'GOALS' ) ) ;
     public final void rule__SloQuery__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10603:1: ( ( ( 'GOALS' ) ) )
-            // InternalDescartesQL.g:10604:1: ( ( 'GOALS' ) )
+            // InternalDescartesQL.g:11381:1: ( ( ( 'GOALS' ) ) )
+            // InternalDescartesQL.g:11382:1: ( ( 'GOALS' ) )
             {
-            // InternalDescartesQL.g:10604:1: ( ( 'GOALS' ) )
-            // InternalDescartesQL.g:10605:1: ( 'GOALS' )
+            // InternalDescartesQL.g:11382:1: ( ( 'GOALS' ) )
+            // InternalDescartesQL.g:11383:1: ( 'GOALS' )
             {
              before(grammarAccess.getSloQueryAccess().getTypeGOALSKeyword_0_0()); 
-            // InternalDescartesQL.g:10606:1: ( 'GOALS' )
-            // InternalDescartesQL.g:10607:1: 'GOALS'
+            // InternalDescartesQL.g:11384:1: ( 'GOALS' )
+            // InternalDescartesQL.g:11385:1: 'GOALS'
             {
              before(grammarAccess.getSloQueryAccess().getTypeGOALSKeyword_0_0()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getSloQueryAccess().getTypeGOALSKeyword_0_0()); 
 
             }
@@ -29461,17 +31595,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SloQuery__SlosAssignment_1"
-    // InternalDescartesQL.g:10622:1: rule__SloQuery__SlosAssignment_1 : ( ruleSlo ) ;
+    // InternalDescartesQL.g:11400:1: rule__SloQuery__SlosAssignment_1 : ( ruleSlo ) ;
     public final void rule__SloQuery__SlosAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10626:1: ( ( ruleSlo ) )
-            // InternalDescartesQL.g:10627:1: ( ruleSlo )
+            // InternalDescartesQL.g:11404:1: ( ( ruleSlo ) )
+            // InternalDescartesQL.g:11405:1: ( ruleSlo )
             {
-            // InternalDescartesQL.g:10627:1: ( ruleSlo )
-            // InternalDescartesQL.g:10628:1: ruleSlo
+            // InternalDescartesQL.g:11405:1: ( ruleSlo )
+            // InternalDescartesQL.g:11406:1: ruleSlo
             {
              before(grammarAccess.getSloQueryAccess().getSlosSloParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -29502,17 +31636,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SloQuery__SlosAssignment_2_1"
-    // InternalDescartesQL.g:10637:1: rule__SloQuery__SlosAssignment_2_1 : ( ruleSlo ) ;
+    // InternalDescartesQL.g:11415:1: rule__SloQuery__SlosAssignment_2_1 : ( ruleSlo ) ;
     public final void rule__SloQuery__SlosAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10641:1: ( ( ruleSlo ) )
-            // InternalDescartesQL.g:10642:1: ( ruleSlo )
+            // InternalDescartesQL.g:11419:1: ( ( ruleSlo ) )
+            // InternalDescartesQL.g:11420:1: ( ruleSlo )
             {
-            // InternalDescartesQL.g:10642:1: ( ruleSlo )
-            // InternalDescartesQL.g:10643:1: ruleSlo
+            // InternalDescartesQL.g:11420:1: ( ruleSlo )
+            // InternalDescartesQL.g:11421:1: ruleSlo
             {
              before(grammarAccess.getSloQueryAccess().getSlosSloParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -29543,17 +31677,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Sla__NameAssignment_0"
-    // InternalDescartesQL.g:10652:1: rule__Sla__NameAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:11430:1: rule__Sla__NameAssignment_0 : ( RULE_ID ) ;
     public final void rule__Sla__NameAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10656:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:10657:1: ( RULE_ID )
+            // InternalDescartesQL.g:11434:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:11435:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:10657:1: ( RULE_ID )
-            // InternalDescartesQL.g:10658:1: RULE_ID
+            // InternalDescartesQL.g:11435:1: ( RULE_ID )
+            // InternalDescartesQL.g:11436:1: RULE_ID
             {
              before(grammarAccess.getSlaAccess().getNameIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -29580,17 +31714,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Sla__WeightedSloAssignment_3"
-    // InternalDescartesQL.g:10667:1: rule__Sla__WeightedSloAssignment_3 : ( ruleWeightedSlo ) ;
+    // InternalDescartesQL.g:11445:1: rule__Sla__WeightedSloAssignment_3 : ( ruleWeightedSlo ) ;
     public final void rule__Sla__WeightedSloAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10671:1: ( ( ruleWeightedSlo ) )
-            // InternalDescartesQL.g:10672:1: ( ruleWeightedSlo )
+            // InternalDescartesQL.g:11449:1: ( ( ruleWeightedSlo ) )
+            // InternalDescartesQL.g:11450:1: ( ruleWeightedSlo )
             {
-            // InternalDescartesQL.g:10672:1: ( ruleWeightedSlo )
-            // InternalDescartesQL.g:10673:1: ruleWeightedSlo
+            // InternalDescartesQL.g:11450:1: ( ruleWeightedSlo )
+            // InternalDescartesQL.g:11451:1: ruleWeightedSlo
             {
              before(grammarAccess.getSlaAccess().getWeightedSloWeightedSloParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -29621,17 +31755,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Sla__WeightedSloAssignment_4_1"
-    // InternalDescartesQL.g:10682:1: rule__Sla__WeightedSloAssignment_4_1 : ( ruleWeightedSlo ) ;
+    // InternalDescartesQL.g:11460:1: rule__Sla__WeightedSloAssignment_4_1 : ( ruleWeightedSlo ) ;
     public final void rule__Sla__WeightedSloAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10686:1: ( ( ruleWeightedSlo ) )
-            // InternalDescartesQL.g:10687:1: ( ruleWeightedSlo )
+            // InternalDescartesQL.g:11464:1: ( ( ruleWeightedSlo ) )
+            // InternalDescartesQL.g:11465:1: ( ruleWeightedSlo )
             {
-            // InternalDescartesQL.g:10687:1: ( ruleWeightedSlo )
-            // InternalDescartesQL.g:10688:1: ruleWeightedSlo
+            // InternalDescartesQL.g:11465:1: ( ruleWeightedSlo )
+            // InternalDescartesQL.g:11466:1: ruleWeightedSlo
             {
              before(grammarAccess.getSlaAccess().getWeightedSloWeightedSloParserRuleCall_4_1_0()); 
             pushFollow(FOLLOW_2);
@@ -29662,17 +31796,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__NameAssignment_0"
-    // InternalDescartesQL.g:10697:1: rule__Slo__NameAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:11475:1: rule__Slo__NameAssignment_0 : ( RULE_ID ) ;
     public final void rule__Slo__NameAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10701:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:10702:1: ( RULE_ID )
+            // InternalDescartesQL.g:11479:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:11480:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:10702:1: ( RULE_ID )
-            // InternalDescartesQL.g:10703:1: RULE_ID
+            // InternalDescartesQL.g:11480:1: ( RULE_ID )
+            // InternalDescartesQL.g:11481:1: RULE_ID
             {
              before(grammarAccess.getSloAccess().getNameIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -29699,17 +31833,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__MetricClauseTypeAssignment_2"
-    // InternalDescartesQL.g:10712:1: rule__Slo__MetricClauseTypeAssignment_2 : ( ruleMetricClauseType ) ;
+    // InternalDescartesQL.g:11490:1: rule__Slo__MetricClauseTypeAssignment_2 : ( ruleMetricClauseType ) ;
     public final void rule__Slo__MetricClauseTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10716:1: ( ( ruleMetricClauseType ) )
-            // InternalDescartesQL.g:10717:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:11494:1: ( ( ruleMetricClauseType ) )
+            // InternalDescartesQL.g:11495:1: ( ruleMetricClauseType )
             {
-            // InternalDescartesQL.g:10717:1: ( ruleMetricClauseType )
-            // InternalDescartesQL.g:10718:1: ruleMetricClauseType
+            // InternalDescartesQL.g:11495:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:11496:1: ruleMetricClauseType
             {
              before(grammarAccess.getSloAccess().getMetricClauseTypeMetricClauseTypeParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -29740,17 +31874,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__ComparatorAssignment_3"
-    // InternalDescartesQL.g:10727:1: rule__Slo__ComparatorAssignment_3 : ( ruleComparator ) ;
+    // InternalDescartesQL.g:11505:1: rule__Slo__ComparatorAssignment_3 : ( ruleComparator ) ;
     public final void rule__Slo__ComparatorAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10731:1: ( ( ruleComparator ) )
-            // InternalDescartesQL.g:10732:1: ( ruleComparator )
+            // InternalDescartesQL.g:11509:1: ( ( ruleComparator ) )
+            // InternalDescartesQL.g:11510:1: ( ruleComparator )
             {
-            // InternalDescartesQL.g:10732:1: ( ruleComparator )
-            // InternalDescartesQL.g:10733:1: ruleComparator
+            // InternalDescartesQL.g:11510:1: ( ruleComparator )
+            // InternalDescartesQL.g:11511:1: ruleComparator
             {
              before(grammarAccess.getSloAccess().getComparatorComparatorEnumRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -29781,17 +31915,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__ValueAssignment_4"
-    // InternalDescartesQL.g:10742:1: rule__Slo__ValueAssignment_4 : ( ruleVariableValue ) ;
+    // InternalDescartesQL.g:11520:1: rule__Slo__ValueAssignment_4 : ( ruleVariableValue ) ;
     public final void rule__Slo__ValueAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10746:1: ( ( ruleVariableValue ) )
-            // InternalDescartesQL.g:10747:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:11524:1: ( ( ruleVariableValue ) )
+            // InternalDescartesQL.g:11525:1: ( ruleVariableValue )
             {
-            // InternalDescartesQL.g:10747:1: ( ruleVariableValue )
-            // InternalDescartesQL.g:10748:1: ruleVariableValue
+            // InternalDescartesQL.g:11525:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:11526:1: ruleVariableValue
             {
              before(grammarAccess.getSloAccess().getValueVariableValueParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -29822,17 +31956,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__FuzAssignment_5"
-    // InternalDescartesQL.g:10757:1: rule__Slo__FuzAssignment_5 : ( ruleFuzziness ) ;
+    // InternalDescartesQL.g:11535:1: rule__Slo__FuzAssignment_5 : ( ruleFuzziness ) ;
     public final void rule__Slo__FuzAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10761:1: ( ( ruleFuzziness ) )
-            // InternalDescartesQL.g:10762:1: ( ruleFuzziness )
+            // InternalDescartesQL.g:11539:1: ( ( ruleFuzziness ) )
+            // InternalDescartesQL.g:11540:1: ( ruleFuzziness )
             {
-            // InternalDescartesQL.g:10762:1: ( ruleFuzziness )
-            // InternalDescartesQL.g:10763:1: ruleFuzziness
+            // InternalDescartesQL.g:11540:1: ( ruleFuzziness )
+            // InternalDescartesQL.g:11541:1: ruleFuzziness
             {
              before(grammarAccess.getSloAccess().getFuzFuzzinessParserRuleCall_5_0()); 
             pushFollow(FOLLOW_2);
@@ -29863,17 +31997,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Slo__PenAssignment_6"
-    // InternalDescartesQL.g:10772:1: rule__Slo__PenAssignment_6 : ( rulePenalty ) ;
+    // InternalDescartesQL.g:11550:1: rule__Slo__PenAssignment_6 : ( rulePenalty ) ;
     public final void rule__Slo__PenAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10776:1: ( ( rulePenalty ) )
-            // InternalDescartesQL.g:10777:1: ( rulePenalty )
+            // InternalDescartesQL.g:11554:1: ( ( rulePenalty ) )
+            // InternalDescartesQL.g:11555:1: ( rulePenalty )
             {
-            // InternalDescartesQL.g:10777:1: ( rulePenalty )
-            // InternalDescartesQL.g:10778:1: rulePenalty
+            // InternalDescartesQL.g:11555:1: ( rulePenalty )
+            // InternalDescartesQL.g:11556:1: rulePenalty
             {
              before(grammarAccess.getSloAccess().getPenPenaltyParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
@@ -29903,22 +32037,63 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "rule__Slo__PenAssignment_6"
 
 
+    // $ANTLR start "rule__Slo__ViolationAssignment_7"
+    // InternalDescartesQL.g:11565:1: rule__Slo__ViolationAssignment_7 : ( ruleViolation ) ;
+    public final void rule__Slo__ViolationAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:11569:1: ( ( ruleViolation ) )
+            // InternalDescartesQL.g:11570:1: ( ruleViolation )
+            {
+            // InternalDescartesQL.g:11570:1: ( ruleViolation )
+            // InternalDescartesQL.g:11571:1: ruleViolation
+            {
+             before(grammarAccess.getSloAccess().getViolationViolationParserRuleCall_7_0()); 
+            pushFollow(FOLLOW_2);
+            ruleViolation();
+
+            state._fsp--;
+
+             after(grammarAccess.getSloAccess().getViolationViolationParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Slo__ViolationAssignment_7"
+
+
     // $ANTLR start "rule__WeightedSlo__SloAssignment_0"
-    // InternalDescartesQL.g:10787:1: rule__WeightedSlo__SloAssignment_0 : ( ( RULE_ID ) ) ;
+    // InternalDescartesQL.g:11580:1: rule__WeightedSlo__SloAssignment_0 : ( ( RULE_ID ) ) ;
     public final void rule__WeightedSlo__SloAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10791:1: ( ( ( RULE_ID ) ) )
-            // InternalDescartesQL.g:10792:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:11584:1: ( ( ( RULE_ID ) ) )
+            // InternalDescartesQL.g:11585:1: ( ( RULE_ID ) )
             {
-            // InternalDescartesQL.g:10792:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:10793:1: ( RULE_ID )
+            // InternalDescartesQL.g:11585:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:11586:1: ( RULE_ID )
             {
              before(grammarAccess.getWeightedSloAccess().getSloSloCrossReference_0_0()); 
-            // InternalDescartesQL.g:10794:1: ( RULE_ID )
-            // InternalDescartesQL.g:10795:1: RULE_ID
+            // InternalDescartesQL.g:11587:1: ( RULE_ID )
+            // InternalDescartesQL.g:11588:1: RULE_ID
             {
              before(grammarAccess.getWeightedSloAccess().getSloSloIDTerminalRuleCall_0_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -29949,17 +32124,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WeightedSlo__WeightAssignment_1_1"
-    // InternalDescartesQL.g:10806:1: rule__WeightedSlo__WeightAssignment_1_1 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:11599:1: rule__WeightedSlo__WeightAssignment_1_1 : ( RULE_INT ) ;
     public final void rule__WeightedSlo__WeightAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10810:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:10811:1: ( RULE_INT )
+            // InternalDescartesQL.g:11603:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:11604:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:10811:1: ( RULE_INT )
-            // InternalDescartesQL.g:10812:1: RULE_INT
+            // InternalDescartesQL.g:11604:1: ( RULE_INT )
+            // InternalDescartesQL.g:11605:1: RULE_INT
             {
              before(grammarAccess.getWeightedSloAccess().getWeightINTTerminalRuleCall_1_1_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -29986,24 +32161,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Fuzziness__TypeAssignment_0"
-    // InternalDescartesQL.g:10821:1: rule__Fuzziness__TypeAssignment_0 : ( ( 'FUZZINESS' ) ) ;
+    // InternalDescartesQL.g:11614:1: rule__Fuzziness__TypeAssignment_0 : ( ( 'FUZZINESS' ) ) ;
     public final void rule__Fuzziness__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10825:1: ( ( ( 'FUZZINESS' ) ) )
-            // InternalDescartesQL.g:10826:1: ( ( 'FUZZINESS' ) )
+            // InternalDescartesQL.g:11618:1: ( ( ( 'FUZZINESS' ) ) )
+            // InternalDescartesQL.g:11619:1: ( ( 'FUZZINESS' ) )
             {
-            // InternalDescartesQL.g:10826:1: ( ( 'FUZZINESS' ) )
-            // InternalDescartesQL.g:10827:1: ( 'FUZZINESS' )
+            // InternalDescartesQL.g:11619:1: ( ( 'FUZZINESS' ) )
+            // InternalDescartesQL.g:11620:1: ( 'FUZZINESS' )
             {
              before(grammarAccess.getFuzzinessAccess().getTypeFUZZINESSKeyword_0_0()); 
-            // InternalDescartesQL.g:10828:1: ( 'FUZZINESS' )
-            // InternalDescartesQL.g:10829:1: 'FUZZINESS'
+            // InternalDescartesQL.g:11621:1: ( 'FUZZINESS' )
+            // InternalDescartesQL.g:11622:1: 'FUZZINESS'
             {
              before(grammarAccess.getFuzzinessAccess().getTypeFUZZINESSKeyword_0_0()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getFuzzinessAccess().getTypeFUZZINESSKeyword_0_0()); 
 
             }
@@ -30031,17 +32206,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Fuzziness__DeviationAssignment_1"
-    // InternalDescartesQL.g:10844:1: rule__Fuzziness__DeviationAssignment_1 : ( ruleVariableValue ) ;
+    // InternalDescartesQL.g:11637:1: rule__Fuzziness__DeviationAssignment_1 : ( ruleVariableValue ) ;
     public final void rule__Fuzziness__DeviationAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10848:1: ( ( ruleVariableValue ) )
-            // InternalDescartesQL.g:10849:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:11641:1: ( ( ruleVariableValue ) )
+            // InternalDescartesQL.g:11642:1: ( ruleVariableValue )
             {
-            // InternalDescartesQL.g:10849:1: ( ruleVariableValue )
-            // InternalDescartesQL.g:10850:1: ruleVariableValue
+            // InternalDescartesQL.g:11642:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:11643:1: ruleVariableValue
             {
              before(grammarAccess.getFuzzinessAccess().getDeviationVariableValueParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30072,24 +32247,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Penalty__TypeAssignment_0"
-    // InternalDescartesQL.g:10859:1: rule__Penalty__TypeAssignment_0 : ( ( 'PENALTY' ) ) ;
+    // InternalDescartesQL.g:11652:1: rule__Penalty__TypeAssignment_0 : ( ( 'PENALTY' ) ) ;
     public final void rule__Penalty__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10863:1: ( ( ( 'PENALTY' ) ) )
-            // InternalDescartesQL.g:10864:1: ( ( 'PENALTY' ) )
+            // InternalDescartesQL.g:11656:1: ( ( ( 'PENALTY' ) ) )
+            // InternalDescartesQL.g:11657:1: ( ( 'PENALTY' ) )
             {
-            // InternalDescartesQL.g:10864:1: ( ( 'PENALTY' ) )
-            // InternalDescartesQL.g:10865:1: ( 'PENALTY' )
+            // InternalDescartesQL.g:11657:1: ( ( 'PENALTY' ) )
+            // InternalDescartesQL.g:11658:1: ( 'PENALTY' )
             {
              before(grammarAccess.getPenaltyAccess().getTypePENALTYKeyword_0_0()); 
-            // InternalDescartesQL.g:10866:1: ( 'PENALTY' )
-            // InternalDescartesQL.g:10867:1: 'PENALTY'
+            // InternalDescartesQL.g:11659:1: ( 'PENALTY' )
+            // InternalDescartesQL.g:11660:1: 'PENALTY'
             {
              before(grammarAccess.getPenaltyAccess().getTypePENALTYKeyword_0_0()); 
-            match(input,78,FOLLOW_2); 
+            match(input,82,FOLLOW_2); 
              after(grammarAccess.getPenaltyAccess().getTypePENALTYKeyword_0_0()); 
 
             }
@@ -30117,17 +32292,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Penalty__ValueAssignment_1"
-    // InternalDescartesQL.g:10882:1: rule__Penalty__ValueAssignment_1 : ( RULE_DOUBLE ) ;
+    // InternalDescartesQL.g:11675:1: rule__Penalty__ValueAssignment_1 : ( RULE_DOUBLE ) ;
     public final void rule__Penalty__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10886:1: ( ( RULE_DOUBLE ) )
-            // InternalDescartesQL.g:10887:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:11679:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:11680:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:10887:1: ( RULE_DOUBLE )
-            // InternalDescartesQL.g:10888:1: RULE_DOUBLE
+            // InternalDescartesQL.g:11680:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:11681:1: RULE_DOUBLE
             {
              before(grammarAccess.getPenaltyAccess().getValueDOUBLETerminalRuleCall_1_0()); 
             match(input,RULE_DOUBLE,FOLLOW_2); 
@@ -30154,17 +32329,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__Penalty__CurrencyAssignment_2"
-    // InternalDescartesQL.g:10897:1: rule__Penalty__CurrencyAssignment_2 : ( ruleCurrency ) ;
+    // InternalDescartesQL.g:11690:1: rule__Penalty__CurrencyAssignment_2 : ( ruleCurrency ) ;
     public final void rule__Penalty__CurrencyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10901:1: ( ( ruleCurrency ) )
-            // InternalDescartesQL.g:10902:1: ( ruleCurrency )
+            // InternalDescartesQL.g:11694:1: ( ( ruleCurrency ) )
+            // InternalDescartesQL.g:11695:1: ( ruleCurrency )
             {
-            // InternalDescartesQL.g:10902:1: ( ruleCurrency )
-            // InternalDescartesQL.g:10903:1: ruleCurrency
+            // InternalDescartesQL.g:11695:1: ( ruleCurrency )
+            // InternalDescartesQL.g:11696:1: ruleCurrency
             {
              before(grammarAccess.getPenaltyAccess().getCurrencyCurrencyEnumRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30194,26 +32369,22 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "rule__Penalty__CurrencyAssignment_2"
 
 
-    // $ANTLR start "rule__Penalty__ViolationAssignment_3"
-    // InternalDescartesQL.g:10912:1: rule__Penalty__ViolationAssignment_3 : ( ruleViolation ) ;
-    public final void rule__Penalty__ViolationAssignment_3() throws RecognitionException {
+    // $ANTLR start "rule__Violation__AmountAssignment_0_1"
+    // InternalDescartesQL.g:11705:1: rule__Violation__AmountAssignment_0_1 : ( RULE_INT ) ;
+    public final void rule__Violation__AmountAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10916:1: ( ( ruleViolation ) )
-            // InternalDescartesQL.g:10917:1: ( ruleViolation )
+            // InternalDescartesQL.g:11709:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:11710:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:10917:1: ( ruleViolation )
-            // InternalDescartesQL.g:10918:1: ruleViolation
+            // InternalDescartesQL.g:11710:1: ( RULE_INT )
+            // InternalDescartesQL.g:11711:1: RULE_INT
             {
-             before(grammarAccess.getPenaltyAccess().getViolationViolationParserRuleCall_3_0()); 
-            pushFollow(FOLLOW_2);
-            ruleViolation();
-
-            state._fsp--;
-
-             after(grammarAccess.getPenaltyAccess().getViolationViolationParserRuleCall_3_0()); 
+             before(grammarAccess.getViolationAccess().getAmountINTTerminalRuleCall_0_1_0()); 
+            match(input,RULE_INT,FOLLOW_2); 
+             after(grammarAccess.getViolationAccess().getAmountINTTerminalRuleCall_0_1_0()); 
 
             }
 
@@ -30232,25 +32403,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Penalty__ViolationAssignment_3"
+    // $ANTLR end "rule__Violation__AmountAssignment_0_1"
 
 
-    // $ANTLR start "rule__Violation__AmountAssignment_1"
-    // InternalDescartesQL.g:10927:1: rule__Violation__AmountAssignment_1 : ( RULE_INT ) ;
-    public final void rule__Violation__AmountAssignment_1() throws RecognitionException {
+    // $ANTLR start "rule__Violation__PercentageAssignment_1_1"
+    // InternalDescartesQL.g:11720:1: rule__Violation__PercentageAssignment_1_1 : ( RULE_DOUBLE ) ;
+    public final void rule__Violation__PercentageAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10931:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:10932:1: ( RULE_INT )
+            // InternalDescartesQL.g:11724:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:11725:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:10932:1: ( RULE_INT )
-            // InternalDescartesQL.g:10933:1: RULE_INT
+            // InternalDescartesQL.g:11725:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:11726:1: RULE_DOUBLE
             {
-             before(grammarAccess.getViolationAccess().getAmountINTTerminalRuleCall_1_0()); 
-            match(input,RULE_INT,FOLLOW_2); 
-             after(grammarAccess.getViolationAccess().getAmountINTTerminalRuleCall_1_0()); 
+             before(grammarAccess.getViolationAccess().getPercentageDOUBLETerminalRuleCall_1_1_0()); 
+            match(input,RULE_DOUBLE,FOLLOW_2); 
+             after(grammarAccess.getViolationAccess().getPercentageDOUBLETerminalRuleCall_1_1_0()); 
 
             }
 
@@ -30269,25 +32440,25 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
         }
         return ;
     }
-    // $ANTLR end "rule__Violation__AmountAssignment_1"
+    // $ANTLR end "rule__Violation__PercentageAssignment_1_1"
 
 
     // $ANTLR start "rule__ListQuery__QueryTypeAssignment_1"
-    // InternalDescartesQL.g:10942:1: rule__ListQuery__QueryTypeAssignment_1 : ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:11735:1: rule__ListQuery__QueryTypeAssignment_1 : ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) ) ;
     public final void rule__ListQuery__QueryTypeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10946:1: ( ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:10947:1: ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:11739:1: ( ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:11740:1: ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:10947:1: ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) )
-            // InternalDescartesQL.g:10948:1: ( rule__ListQuery__QueryTypeAlternatives_1_0 )
+            // InternalDescartesQL.g:11740:1: ( ( rule__ListQuery__QueryTypeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:11741:1: ( rule__ListQuery__QueryTypeAlternatives_1_0 )
             {
              before(grammarAccess.getListQueryAccess().getQueryTypeAlternatives_1_0()); 
-            // InternalDescartesQL.g:10949:1: ( rule__ListQuery__QueryTypeAlternatives_1_0 )
-            // InternalDescartesQL.g:10949:2: rule__ListQuery__QueryTypeAlternatives_1_0
+            // InternalDescartesQL.g:11742:1: ( rule__ListQuery__QueryTypeAlternatives_1_0 )
+            // InternalDescartesQL.g:11742:2: rule__ListQuery__QueryTypeAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__ListQuery__QueryTypeAlternatives_1_0();
@@ -30320,17 +32491,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListQuery__FilterClauseAssignment_2"
-    // InternalDescartesQL.g:10958:1: rule__ListQuery__FilterClauseAssignment_2 : ( ruleFilterClause ) ;
+    // InternalDescartesQL.g:11751:1: rule__ListQuery__FilterClauseAssignment_2 : ( ruleFilterClause ) ;
     public final void rule__ListQuery__FilterClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10962:1: ( ( ruleFilterClause ) )
-            // InternalDescartesQL.g:10963:1: ( ruleFilterClause )
+            // InternalDescartesQL.g:11755:1: ( ( ruleFilterClause ) )
+            // InternalDescartesQL.g:11756:1: ( ruleFilterClause )
             {
-            // InternalDescartesQL.g:10963:1: ( ruleFilterClause )
-            // InternalDescartesQL.g:10964:1: ruleFilterClause
+            // InternalDescartesQL.g:11756:1: ( ruleFilterClause )
+            // InternalDescartesQL.g:11757:1: ruleFilterClause
             {
              before(grammarAccess.getListQueryAccess().getFilterClauseFilterClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30361,17 +32532,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListQuery__UsingClauseAssignment_3"
-    // InternalDescartesQL.g:10973:1: rule__ListQuery__UsingClauseAssignment_3 : ( ruleUsingClause ) ;
+    // InternalDescartesQL.g:11766:1: rule__ListQuery__UsingClauseAssignment_3 : ( ruleUsingClause ) ;
     public final void rule__ListQuery__UsingClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10977:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:10978:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11770:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:11771:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:10978:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:10979:1: ruleUsingClause
+            // InternalDescartesQL.g:11771:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11772:1: ruleUsingClause
             {
              before(grammarAccess.getListQueryAccess().getUsingClauseUsingClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -30402,21 +32573,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetQuery__QueryTapeAssignment_1"
-    // InternalDescartesQL.g:10988:1: rule__GetQuery__QueryTapeAssignment_1 : ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:11781:1: rule__GetQuery__QueryTapeAssignment_1 : ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) ) ;
     public final void rule__GetQuery__QueryTapeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:10992:1: ( ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:10993:1: ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:11785:1: ( ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:11786:1: ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:10993:1: ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) )
-            // InternalDescartesQL.g:10994:1: ( rule__GetQuery__QueryTapeAlternatives_1_0 )
+            // InternalDescartesQL.g:11786:1: ( ( rule__GetQuery__QueryTapeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:11787:1: ( rule__GetQuery__QueryTapeAlternatives_1_0 )
             {
              before(grammarAccess.getGetQueryAccess().getQueryTapeAlternatives_1_0()); 
-            // InternalDescartesQL.g:10995:1: ( rule__GetQuery__QueryTapeAlternatives_1_0 )
-            // InternalDescartesQL.g:10995:2: rule__GetQuery__QueryTapeAlternatives_1_0
+            // InternalDescartesQL.g:11788:1: ( rule__GetQuery__QueryTapeAlternatives_1_0 )
+            // InternalDescartesQL.g:11788:2: rule__GetQuery__QueryTapeAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__GetQuery__QueryTapeAlternatives_1_0();
@@ -30449,17 +32620,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetQuery__UsingClauseAssignment_2"
-    // InternalDescartesQL.g:11004:1: rule__GetQuery__UsingClauseAssignment_2 : ( ruleUsingClause ) ;
+    // InternalDescartesQL.g:11797:1: rule__GetQuery__UsingClauseAssignment_2 : ( ruleUsingClause ) ;
     public final void rule__GetQuery__UsingClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11008:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:11009:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11801:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:11802:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:11009:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:11010:1: ruleUsingClause
+            // InternalDescartesQL.g:11802:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:11803:1: ruleUsingClause
             {
              before(grammarAccess.getGetQueryAccess().getUsingClauseUsingClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30490,24 +32661,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetConstraintsQuery__ModeAssignment"
-    // InternalDescartesQL.g:11019:1: rule__GetConstraintsQuery__ModeAssignment : ( ( 'CONSTRAINTS' ) ) ;
+    // InternalDescartesQL.g:11812:1: rule__GetConstraintsQuery__ModeAssignment : ( ( 'CONSTRAINTS' ) ) ;
     public final void rule__GetConstraintsQuery__ModeAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11023:1: ( ( ( 'CONSTRAINTS' ) ) )
-            // InternalDescartesQL.g:11024:1: ( ( 'CONSTRAINTS' ) )
+            // InternalDescartesQL.g:11816:1: ( ( ( 'CONSTRAINTS' ) ) )
+            // InternalDescartesQL.g:11817:1: ( ( 'CONSTRAINTS' ) )
             {
-            // InternalDescartesQL.g:11024:1: ( ( 'CONSTRAINTS' ) )
-            // InternalDescartesQL.g:11025:1: ( 'CONSTRAINTS' )
+            // InternalDescartesQL.g:11817:1: ( ( 'CONSTRAINTS' ) )
+            // InternalDescartesQL.g:11818:1: ( 'CONSTRAINTS' )
             {
              before(grammarAccess.getGetConstraintsQueryAccess().getModeCONSTRAINTSKeyword_0()); 
-            // InternalDescartesQL.g:11026:1: ( 'CONSTRAINTS' )
-            // InternalDescartesQL.g:11027:1: 'CONSTRAINTS'
+            // InternalDescartesQL.g:11819:1: ( 'CONSTRAINTS' )
+            // InternalDescartesQL.g:11820:1: 'CONSTRAINTS'
             {
              before(grammarAccess.getGetConstraintsQueryAccess().getModeCONSTRAINTSKeyword_0()); 
-            match(input,79,FOLLOW_2); 
+            match(input,83,FOLLOW_2); 
              after(grammarAccess.getGetConstraintsQueryAccess().getModeCONSTRAINTSKeyword_0()); 
 
             }
@@ -30535,24 +32706,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetExplorationStrategiesQuery__ModeAssignment"
-    // InternalDescartesQL.g:11042:1: rule__GetExplorationStrategiesQuery__ModeAssignment : ( ( 'EXPLORATION STRATEGIES' ) ) ;
+    // InternalDescartesQL.g:11835:1: rule__GetExplorationStrategiesQuery__ModeAssignment : ( ( 'EXPLORATION STRATEGIES' ) ) ;
     public final void rule__GetExplorationStrategiesQuery__ModeAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11046:1: ( ( ( 'EXPLORATION STRATEGIES' ) ) )
-            // InternalDescartesQL.g:11047:1: ( ( 'EXPLORATION STRATEGIES' ) )
+            // InternalDescartesQL.g:11839:1: ( ( ( 'EXPLORATION STRATEGIES' ) ) )
+            // InternalDescartesQL.g:11840:1: ( ( 'EXPLORATION STRATEGIES' ) )
             {
-            // InternalDescartesQL.g:11047:1: ( ( 'EXPLORATION STRATEGIES' ) )
-            // InternalDescartesQL.g:11048:1: ( 'EXPLORATION STRATEGIES' )
+            // InternalDescartesQL.g:11840:1: ( ( 'EXPLORATION STRATEGIES' ) )
+            // InternalDescartesQL.g:11841:1: ( 'EXPLORATION STRATEGIES' )
             {
              before(grammarAccess.getGetExplorationStrategiesQueryAccess().getModeEXPLORATIONSTRATEGIESKeyword_0()); 
-            // InternalDescartesQL.g:11049:1: ( 'EXPLORATION STRATEGIES' )
-            // InternalDescartesQL.g:11050:1: 'EXPLORATION STRATEGIES'
+            // InternalDescartesQL.g:11842:1: ( 'EXPLORATION STRATEGIES' )
+            // InternalDescartesQL.g:11843:1: 'EXPLORATION STRATEGIES'
             {
              before(grammarAccess.getGetExplorationStrategiesQueryAccess().getModeEXPLORATIONSTRATEGIESKeyword_0()); 
-            match(input,80,FOLLOW_2); 
+            match(input,84,FOLLOW_2); 
              after(grammarAccess.getGetExplorationStrategiesQueryAccess().getModeEXPLORATIONSTRATEGIESKeyword_0()); 
 
             }
@@ -30580,24 +32751,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__GetTimeUnitsQuery__ModeAssignment"
-    // InternalDescartesQL.g:11065:1: rule__GetTimeUnitsQuery__ModeAssignment : ( ( 'TIME UNITS' ) ) ;
+    // InternalDescartesQL.g:11858:1: rule__GetTimeUnitsQuery__ModeAssignment : ( ( 'TIME UNITS' ) ) ;
     public final void rule__GetTimeUnitsQuery__ModeAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11069:1: ( ( ( 'TIME UNITS' ) ) )
-            // InternalDescartesQL.g:11070:1: ( ( 'TIME UNITS' ) )
+            // InternalDescartesQL.g:11862:1: ( ( ( 'TIME UNITS' ) ) )
+            // InternalDescartesQL.g:11863:1: ( ( 'TIME UNITS' ) )
             {
-            // InternalDescartesQL.g:11070:1: ( ( 'TIME UNITS' ) )
-            // InternalDescartesQL.g:11071:1: ( 'TIME UNITS' )
+            // InternalDescartesQL.g:11863:1: ( ( 'TIME UNITS' ) )
+            // InternalDescartesQL.g:11864:1: ( 'TIME UNITS' )
             {
              before(grammarAccess.getGetTimeUnitsQueryAccess().getModeTIMEUNITSKeyword_0()); 
-            // InternalDescartesQL.g:11072:1: ( 'TIME UNITS' )
-            // InternalDescartesQL.g:11073:1: 'TIME UNITS'
+            // InternalDescartesQL.g:11865:1: ( 'TIME UNITS' )
+            // InternalDescartesQL.g:11866:1: 'TIME UNITS'
             {
              before(grammarAccess.getGetTimeUnitsQueryAccess().getModeTIMEUNITSKeyword_0()); 
-            match(input,81,FOLLOW_2); 
+            match(input,85,FOLLOW_2); 
              after(grammarAccess.getGetTimeUnitsQueryAccess().getModeTIMEUNITSKeyword_0()); 
 
             }
@@ -30625,24 +32796,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListDoFQuery__ModeAssignment_0"
-    // InternalDescartesQL.g:11088:1: rule__ListDoFQuery__ModeAssignment_0 : ( ( 'DOF' ) ) ;
+    // InternalDescartesQL.g:11881:1: rule__ListDoFQuery__ModeAssignment_0 : ( ( 'DOF' ) ) ;
     public final void rule__ListDoFQuery__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11092:1: ( ( ( 'DOF' ) ) )
-            // InternalDescartesQL.g:11093:1: ( ( 'DOF' ) )
+            // InternalDescartesQL.g:11885:1: ( ( ( 'DOF' ) ) )
+            // InternalDescartesQL.g:11886:1: ( ( 'DOF' ) )
             {
-            // InternalDescartesQL.g:11093:1: ( ( 'DOF' ) )
-            // InternalDescartesQL.g:11094:1: ( 'DOF' )
+            // InternalDescartesQL.g:11886:1: ( ( 'DOF' ) )
+            // InternalDescartesQL.g:11887:1: ( 'DOF' )
             {
              before(grammarAccess.getListDoFQueryAccess().getModeDOFKeyword_0_0()); 
-            // InternalDescartesQL.g:11095:1: ( 'DOF' )
-            // InternalDescartesQL.g:11096:1: 'DOF'
+            // InternalDescartesQL.g:11888:1: ( 'DOF' )
+            // InternalDescartesQL.g:11889:1: 'DOF'
             {
              before(grammarAccess.getListDoFQueryAccess().getModeDOFKeyword_0_0()); 
-            match(input,82,FOLLOW_2); 
+            match(input,86,FOLLOW_2); 
              after(grammarAccess.getListDoFQueryAccess().getModeDOFKeyword_0_0()); 
 
             }
@@ -30670,17 +32841,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListDoFQuery__WithClauseAssignment_1"
-    // InternalDescartesQL.g:11111:1: rule__ListDoFQuery__WithClauseAssignment_1 : ( ruleWithClause ) ;
+    // InternalDescartesQL.g:11904:1: rule__ListDoFQuery__WithClauseAssignment_1 : ( ruleWithClause ) ;
     public final void rule__ListDoFQuery__WithClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11115:1: ( ( ruleWithClause ) )
-            // InternalDescartesQL.g:11116:1: ( ruleWithClause )
+            // InternalDescartesQL.g:11908:1: ( ( ruleWithClause ) )
+            // InternalDescartesQL.g:11909:1: ( ruleWithClause )
             {
-            // InternalDescartesQL.g:11116:1: ( ruleWithClause )
-            // InternalDescartesQL.g:11117:1: ruleWithClause
+            // InternalDescartesQL.g:11909:1: ( ruleWithClause )
+            // InternalDescartesQL.g:11910:1: ruleWithClause
             {
              before(grammarAccess.getListDoFQueryAccess().getWithClauseWithClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30711,24 +32882,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListEntitiesQuery__ModeAssignment"
-    // InternalDescartesQL.g:11126:1: rule__ListEntitiesQuery__ModeAssignment : ( ( 'ENTITIES' ) ) ;
+    // InternalDescartesQL.g:11919:1: rule__ListEntitiesQuery__ModeAssignment : ( ( 'ENTITIES' ) ) ;
     public final void rule__ListEntitiesQuery__ModeAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11130:1: ( ( ( 'ENTITIES' ) ) )
-            // InternalDescartesQL.g:11131:1: ( ( 'ENTITIES' ) )
+            // InternalDescartesQL.g:11923:1: ( ( ( 'ENTITIES' ) ) )
+            // InternalDescartesQL.g:11924:1: ( ( 'ENTITIES' ) )
             {
-            // InternalDescartesQL.g:11131:1: ( ( 'ENTITIES' ) )
-            // InternalDescartesQL.g:11132:1: ( 'ENTITIES' )
+            // InternalDescartesQL.g:11924:1: ( ( 'ENTITIES' ) )
+            // InternalDescartesQL.g:11925:1: ( 'ENTITIES' )
             {
              before(grammarAccess.getListEntitiesQueryAccess().getModeENTITIESKeyword_0()); 
-            // InternalDescartesQL.g:11133:1: ( 'ENTITIES' )
-            // InternalDescartesQL.g:11134:1: 'ENTITIES'
+            // InternalDescartesQL.g:11926:1: ( 'ENTITIES' )
+            // InternalDescartesQL.g:11927:1: 'ENTITIES'
             {
              before(grammarAccess.getListEntitiesQueryAccess().getModeENTITIESKeyword_0()); 
-            match(input,83,FOLLOW_2); 
+            match(input,87,FOLLOW_2); 
              after(grammarAccess.getListEntitiesQueryAccess().getModeENTITIESKeyword_0()); 
 
             }
@@ -30756,24 +32927,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListMetricsQuery__ModeAssignment_0"
-    // InternalDescartesQL.g:11149:1: rule__ListMetricsQuery__ModeAssignment_0 : ( ( 'METRICS' ) ) ;
+    // InternalDescartesQL.g:11942:1: rule__ListMetricsQuery__ModeAssignment_0 : ( ( 'METRICS' ) ) ;
     public final void rule__ListMetricsQuery__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11153:1: ( ( ( 'METRICS' ) ) )
-            // InternalDescartesQL.g:11154:1: ( ( 'METRICS' ) )
+            // InternalDescartesQL.g:11946:1: ( ( ( 'METRICS' ) ) )
+            // InternalDescartesQL.g:11947:1: ( ( 'METRICS' ) )
             {
-            // InternalDescartesQL.g:11154:1: ( ( 'METRICS' ) )
-            // InternalDescartesQL.g:11155:1: ( 'METRICS' )
+            // InternalDescartesQL.g:11947:1: ( ( 'METRICS' ) )
+            // InternalDescartesQL.g:11948:1: ( 'METRICS' )
             {
              before(grammarAccess.getListMetricsQueryAccess().getModeMETRICSKeyword_0_0()); 
-            // InternalDescartesQL.g:11156:1: ( 'METRICS' )
-            // InternalDescartesQL.g:11157:1: 'METRICS'
+            // InternalDescartesQL.g:11949:1: ( 'METRICS' )
+            // InternalDescartesQL.g:11950:1: 'METRICS'
             {
              before(grammarAccess.getListMetricsQueryAccess().getModeMETRICSKeyword_0_0()); 
-            match(input,84,FOLLOW_2); 
+            match(input,88,FOLLOW_2); 
              after(grammarAccess.getListMetricsQueryAccess().getModeMETRICSKeyword_0_0()); 
 
             }
@@ -30801,17 +32972,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ListMetricsQuery__EntityReferenceClauseAssignment_2"
-    // InternalDescartesQL.g:11172:1: rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 : ( ruleEntityReferenceClause ) ;
+    // InternalDescartesQL.g:11965:1: rule__ListMetricsQuery__EntityReferenceClauseAssignment_2 : ( ruleEntityReferenceClause ) ;
     public final void rule__ListMetricsQuery__EntityReferenceClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11176:1: ( ( ruleEntityReferenceClause ) )
-            // InternalDescartesQL.g:11177:1: ( ruleEntityReferenceClause )
+            // InternalDescartesQL.g:11969:1: ( ( ruleEntityReferenceClause ) )
+            // InternalDescartesQL.g:11970:1: ( ruleEntityReferenceClause )
             {
-            // InternalDescartesQL.g:11177:1: ( ruleEntityReferenceClause )
-            // InternalDescartesQL.g:11178:1: ruleEntityReferenceClause
+            // InternalDescartesQL.g:11970:1: ( ruleEntityReferenceClause )
+            // InternalDescartesQL.g:11971:1: ruleEntityReferenceClause
             {
              before(grammarAccess.getListMetricsQueryAccess().getEntityReferenceClauseEntityReferenceClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30842,17 +33013,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__MetricReferenceClausesAssignment_1"
-    // InternalDescartesQL.g:11187:1: rule__SelectQuery__MetricReferenceClausesAssignment_1 : ( ruleMetricReferenceClauses ) ;
+    // InternalDescartesQL.g:11980:1: rule__SelectQuery__MetricReferenceClausesAssignment_1 : ( ruleMetricReferenceClauses ) ;
     public final void rule__SelectQuery__MetricReferenceClausesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11191:1: ( ( ruleMetricReferenceClauses ) )
-            // InternalDescartesQL.g:11192:1: ( ruleMetricReferenceClauses )
+            // InternalDescartesQL.g:11984:1: ( ( ruleMetricReferenceClauses ) )
+            // InternalDescartesQL.g:11985:1: ( ruleMetricReferenceClauses )
             {
-            // InternalDescartesQL.g:11192:1: ( ruleMetricReferenceClauses )
-            // InternalDescartesQL.g:11193:1: ruleMetricReferenceClauses
+            // InternalDescartesQL.g:11985:1: ( ruleMetricReferenceClauses )
+            // InternalDescartesQL.g:11986:1: ruleMetricReferenceClauses
             {
              before(grammarAccess.getSelectQueryAccess().getMetricReferenceClausesMetricReferenceClausesParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30883,17 +33054,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__ConstraintClauseAssignment_2"
-    // InternalDescartesQL.g:11202:1: rule__SelectQuery__ConstraintClauseAssignment_2 : ( ruleConstraintClause ) ;
+    // InternalDescartesQL.g:11995:1: rule__SelectQuery__ConstraintClauseAssignment_2 : ( ruleConstraintClause ) ;
     public final void rule__SelectQuery__ConstraintClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11206:1: ( ( ruleConstraintClause ) )
-            // InternalDescartesQL.g:11207:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:11999:1: ( ( ruleConstraintClause ) )
+            // InternalDescartesQL.g:12000:1: ( ruleConstraintClause )
             {
-            // InternalDescartesQL.g:11207:1: ( ruleConstraintClause )
-            // InternalDescartesQL.g:11208:1: ruleConstraintClause
+            // InternalDescartesQL.g:12000:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:12001:1: ruleConstraintClause
             {
              before(grammarAccess.getSelectQueryAccess().getConstraintClauseConstraintClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30924,17 +33095,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__DofClauseAssignment_3"
-    // InternalDescartesQL.g:11217:1: rule__SelectQuery__DofClauseAssignment_3 : ( ruleDoFClause ) ;
+    // InternalDescartesQL.g:12010:1: rule__SelectQuery__DofClauseAssignment_3 : ( ruleDoFClause ) ;
     public final void rule__SelectQuery__DofClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11221:1: ( ( ruleDoFClause ) )
-            // InternalDescartesQL.g:11222:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:12014:1: ( ( ruleDoFClause ) )
+            // InternalDescartesQL.g:12015:1: ( ruleDoFClause )
             {
-            // InternalDescartesQL.g:11222:1: ( ruleDoFClause )
-            // InternalDescartesQL.g:11223:1: ruleDoFClause
+            // InternalDescartesQL.g:12015:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:12016:1: ruleDoFClause
             {
              before(grammarAccess.getSelectQueryAccess().getDofClauseDoFClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -30965,17 +33136,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__ForClauseAssignment_4"
-    // InternalDescartesQL.g:11232:1: rule__SelectQuery__ForClauseAssignment_4 : ( ruleForClause ) ;
+    // InternalDescartesQL.g:12025:1: rule__SelectQuery__ForClauseAssignment_4 : ( ruleForClause ) ;
     public final void rule__SelectQuery__ForClauseAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11236:1: ( ( ruleForClause ) )
-            // InternalDescartesQL.g:11237:1: ( ruleForClause )
+            // InternalDescartesQL.g:12029:1: ( ( ruleForClause ) )
+            // InternalDescartesQL.g:12030:1: ( ruleForClause )
             {
-            // InternalDescartesQL.g:11237:1: ( ruleForClause )
-            // InternalDescartesQL.g:11238:1: ruleForClause
+            // InternalDescartesQL.g:12030:1: ( ruleForClause )
+            // InternalDescartesQL.g:12031:1: ruleForClause
             {
              before(grammarAccess.getSelectQueryAccess().getForClauseForClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -31006,17 +33177,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__UsingClauseAssignment_5"
-    // InternalDescartesQL.g:11247:1: rule__SelectQuery__UsingClauseAssignment_5 : ( ruleUsingClause ) ;
+    // InternalDescartesQL.g:12040:1: rule__SelectQuery__UsingClauseAssignment_5 : ( ruleUsingClause ) ;
     public final void rule__SelectQuery__UsingClauseAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11251:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:11252:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:12044:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:12045:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:11252:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:11253:1: ruleUsingClause
+            // InternalDescartesQL.g:12045:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:12046:1: ruleUsingClause
             {
              before(grammarAccess.getSelectQueryAccess().getUsingClauseUsingClauseParserRuleCall_5_0()); 
             pushFollow(FOLLOW_2);
@@ -31047,17 +33218,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SelectQuery__ObserveClauseAssignment_6"
-    // InternalDescartesQL.g:11262:1: rule__SelectQuery__ObserveClauseAssignment_6 : ( ruleObserveClause ) ;
+    // InternalDescartesQL.g:12055:1: rule__SelectQuery__ObserveClauseAssignment_6 : ( ruleObserveClause ) ;
     public final void rule__SelectQuery__ObserveClauseAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11266:1: ( ( ruleObserveClause ) )
-            // InternalDescartesQL.g:11267:1: ( ruleObserveClause )
+            // InternalDescartesQL.g:12059:1: ( ( ruleObserveClause ) )
+            // InternalDescartesQL.g:12060:1: ( ruleObserveClause )
             {
-            // InternalDescartesQL.g:11267:1: ( ruleObserveClause )
-            // InternalDescartesQL.g:11268:1: ruleObserveClause
+            // InternalDescartesQL.g:12060:1: ( ruleObserveClause )
+            // InternalDescartesQL.g:12061:1: ruleObserveClause
             {
              before(grammarAccess.getSelectQueryAccess().getObserveClauseObserveClauseParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
@@ -31088,17 +33259,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReferenceClauses__MetricClauseTypesAssignment_0"
-    // InternalDescartesQL.g:11277:1: rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 : ( ruleMetricClauseType ) ;
+    // InternalDescartesQL.g:12070:1: rule__MetricReferenceClauses__MetricClauseTypesAssignment_0 : ( ruleMetricClauseType ) ;
     public final void rule__MetricReferenceClauses__MetricClauseTypesAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11281:1: ( ( ruleMetricClauseType ) )
-            // InternalDescartesQL.g:11282:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:12074:1: ( ( ruleMetricClauseType ) )
+            // InternalDescartesQL.g:12075:1: ( ruleMetricClauseType )
             {
-            // InternalDescartesQL.g:11282:1: ( ruleMetricClauseType )
-            // InternalDescartesQL.g:11283:1: ruleMetricClauseType
+            // InternalDescartesQL.g:12075:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:12076:1: ruleMetricClauseType
             {
              before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesMetricClauseTypeParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -31129,17 +33300,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1"
-    // InternalDescartesQL.g:11292:1: rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 : ( ruleMetricClauseType ) ;
+    // InternalDescartesQL.g:12085:1: rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1 : ( ruleMetricClauseType ) ;
     public final void rule__MetricReferenceClauses__MetricClauseTypesAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11296:1: ( ( ruleMetricClauseType ) )
-            // InternalDescartesQL.g:11297:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:12089:1: ( ( ruleMetricClauseType ) )
+            // InternalDescartesQL.g:12090:1: ( ruleMetricClauseType )
             {
-            // InternalDescartesQL.g:11297:1: ( ruleMetricClauseType )
-            // InternalDescartesQL.g:11298:1: ruleMetricClauseType
+            // InternalDescartesQL.g:12090:1: ( ruleMetricClauseType )
+            // InternalDescartesQL.g:12091:1: ruleMetricClauseType
             {
              before(grammarAccess.getMetricReferenceClausesAccess().getMetricClauseTypesMetricClauseTypeParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31170,17 +33341,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DetectQuery__QueryTypeAssignment_1"
-    // InternalDescartesQL.g:11307:1: rule__DetectQuery__QueryTypeAssignment_1 : ( ruleDetectBottlenecksQuery ) ;
+    // InternalDescartesQL.g:12100:1: rule__DetectQuery__QueryTypeAssignment_1 : ( ruleDetectBottlenecksQuery ) ;
     public final void rule__DetectQuery__QueryTypeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11311:1: ( ( ruleDetectBottlenecksQuery ) )
-            // InternalDescartesQL.g:11312:1: ( ruleDetectBottlenecksQuery )
+            // InternalDescartesQL.g:12104:1: ( ( ruleDetectBottlenecksQuery ) )
+            // InternalDescartesQL.g:12105:1: ( ruleDetectBottlenecksQuery )
             {
-            // InternalDescartesQL.g:11312:1: ( ruleDetectBottlenecksQuery )
-            // InternalDescartesQL.g:11313:1: ruleDetectBottlenecksQuery
+            // InternalDescartesQL.g:12105:1: ( ruleDetectBottlenecksQuery )
+            // InternalDescartesQL.g:12106:1: ruleDetectBottlenecksQuery
             {
              before(grammarAccess.getDetectQueryAccess().getQueryTypeDetectBottlenecksQueryParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31211,17 +33382,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DetectBottlenecksQuery__DofClauseAssignment_1"
-    // InternalDescartesQL.g:11322:1: rule__DetectBottlenecksQuery__DofClauseAssignment_1 : ( ruleDoFClause ) ;
+    // InternalDescartesQL.g:12115:1: rule__DetectBottlenecksQuery__DofClauseAssignment_1 : ( ruleDoFClause ) ;
     public final void rule__DetectBottlenecksQuery__DofClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11326:1: ( ( ruleDoFClause ) )
-            // InternalDescartesQL.g:11327:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:12119:1: ( ( ruleDoFClause ) )
+            // InternalDescartesQL.g:12120:1: ( ruleDoFClause )
             {
-            // InternalDescartesQL.g:11327:1: ( ruleDoFClause )
-            // InternalDescartesQL.g:11328:1: ruleDoFClause
+            // InternalDescartesQL.g:12120:1: ( ruleDoFClause )
+            // InternalDescartesQL.g:12121:1: ruleDoFClause
             {
              before(grammarAccess.getDetectBottlenecksQueryAccess().getDofClauseDoFClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31252,17 +33423,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DetectBottlenecksQuery__UsingClauseAssignment_2"
-    // InternalDescartesQL.g:11337:1: rule__DetectBottlenecksQuery__UsingClauseAssignment_2 : ( ruleUsingClause ) ;
+    // InternalDescartesQL.g:12130:1: rule__DetectBottlenecksQuery__UsingClauseAssignment_2 : ( ruleUsingClause ) ;
     public final void rule__DetectBottlenecksQuery__UsingClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11341:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:11342:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:12134:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:12135:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:11342:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:11343:1: ruleUsingClause
+            // InternalDescartesQL.g:12135:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:12136:1: ruleUsingClause
             {
              before(grammarAccess.getDetectBottlenecksQueryAccess().getUsingClauseUsingClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -31293,17 +33464,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConstraintClause__TypeAssignment_1"
-    // InternalDescartesQL.g:11352:1: rule__ConstraintClause__TypeAssignment_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:12145:1: rule__ConstraintClause__TypeAssignment_1 : ( RULE_STRING ) ;
     public final void rule__ConstraintClause__TypeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11356:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:11357:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12149:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:12150:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:11357:1: ( RULE_STRING )
-            // InternalDescartesQL.g:11358:1: RULE_STRING
+            // InternalDescartesQL.g:12150:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12151:1: RULE_STRING
             {
              before(grammarAccess.getConstraintClauseAccess().getTypeSTRINGTerminalRuleCall_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -31330,24 +33501,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFClause__ModeAssignment_0"
-    // InternalDescartesQL.g:11367:1: rule__DoFClause__ModeAssignment_0 : ( ( 'EVALUATE DOF' ) ) ;
+    // InternalDescartesQL.g:12160:1: rule__DoFClause__ModeAssignment_0 : ( ( 'EVALUATE DOF' ) ) ;
     public final void rule__DoFClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11371:1: ( ( ( 'EVALUATE DOF' ) ) )
-            // InternalDescartesQL.g:11372:1: ( ( 'EVALUATE DOF' ) )
+            // InternalDescartesQL.g:12164:1: ( ( ( 'EVALUATE DOF' ) ) )
+            // InternalDescartesQL.g:12165:1: ( ( 'EVALUATE DOF' ) )
             {
-            // InternalDescartesQL.g:11372:1: ( ( 'EVALUATE DOF' ) )
-            // InternalDescartesQL.g:11373:1: ( 'EVALUATE DOF' )
+            // InternalDescartesQL.g:12165:1: ( ( 'EVALUATE DOF' ) )
+            // InternalDescartesQL.g:12166:1: ( 'EVALUATE DOF' )
             {
              before(grammarAccess.getDoFClauseAccess().getModeEVALUATEDOFKeyword_0_0()); 
-            // InternalDescartesQL.g:11374:1: ( 'EVALUATE DOF' )
-            // InternalDescartesQL.g:11375:1: 'EVALUATE DOF'
+            // InternalDescartesQL.g:12167:1: ( 'EVALUATE DOF' )
+            // InternalDescartesQL.g:12168:1: 'EVALUATE DOF'
             {
              before(grammarAccess.getDoFClauseAccess().getModeEVALUATEDOFKeyword_0_0()); 
-            match(input,85,FOLLOW_2); 
+            match(input,89,FOLLOW_2); 
              after(grammarAccess.getDoFClauseAccess().getModeEVALUATEDOFKeyword_0_0()); 
 
             }
@@ -31375,17 +33546,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFClause__VaryingClauseAssignment_1"
-    // InternalDescartesQL.g:11390:1: rule__DoFClause__VaryingClauseAssignment_1 : ( ruleVaryingClause ) ;
+    // InternalDescartesQL.g:12183:1: rule__DoFClause__VaryingClauseAssignment_1 : ( ruleVaryingClause ) ;
     public final void rule__DoFClause__VaryingClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11394:1: ( ( ruleVaryingClause ) )
-            // InternalDescartesQL.g:11395:1: ( ruleVaryingClause )
+            // InternalDescartesQL.g:12187:1: ( ( ruleVaryingClause ) )
+            // InternalDescartesQL.g:12188:1: ( ruleVaryingClause )
             {
-            // InternalDescartesQL.g:11395:1: ( ruleVaryingClause )
-            // InternalDescartesQL.g:11396:1: ruleVaryingClause
+            // InternalDescartesQL.g:12188:1: ( ruleVaryingClause )
+            // InternalDescartesQL.g:12189:1: ruleVaryingClause
             {
              before(grammarAccess.getDoFClauseAccess().getVaryingClauseVaryingClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31416,17 +33587,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFClause__ExplorationStrategyAssignment_2"
-    // InternalDescartesQL.g:11405:1: rule__DoFClause__ExplorationStrategyAssignment_2 : ( ruleExplorationStrategyClause ) ;
+    // InternalDescartesQL.g:12198:1: rule__DoFClause__ExplorationStrategyAssignment_2 : ( ruleExplorationStrategyClause ) ;
     public final void rule__DoFClause__ExplorationStrategyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11409:1: ( ( ruleExplorationStrategyClause ) )
-            // InternalDescartesQL.g:11410:1: ( ruleExplorationStrategyClause )
+            // InternalDescartesQL.g:12202:1: ( ( ruleExplorationStrategyClause ) )
+            // InternalDescartesQL.g:12203:1: ( ruleExplorationStrategyClause )
             {
-            // InternalDescartesQL.g:11410:1: ( ruleExplorationStrategyClause )
-            // InternalDescartesQL.g:11411:1: ruleExplorationStrategyClause
+            // InternalDescartesQL.g:12203:1: ( ruleExplorationStrategyClause )
+            // InternalDescartesQL.g:12204:1: ruleExplorationStrategyClause
             {
              before(grammarAccess.getDoFClauseAccess().getExplorationStrategyExplorationStrategyClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -31457,17 +33628,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFClause__ConstraintClauseAssignment_3"
-    // InternalDescartesQL.g:11420:1: rule__DoFClause__ConstraintClauseAssignment_3 : ( ruleConstraintClause ) ;
+    // InternalDescartesQL.g:12213:1: rule__DoFClause__ConstraintClauseAssignment_3 : ( ruleConstraintClause ) ;
     public final void rule__DoFClause__ConstraintClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11424:1: ( ( ruleConstraintClause ) )
-            // InternalDescartesQL.g:11425:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:12217:1: ( ( ruleConstraintClause ) )
+            // InternalDescartesQL.g:12218:1: ( ruleConstraintClause )
             {
-            // InternalDescartesQL.g:11425:1: ( ruleConstraintClause )
-            // InternalDescartesQL.g:11426:1: ruleConstraintClause
+            // InternalDescartesQL.g:12218:1: ( ruleConstraintClause )
+            // InternalDescartesQL.g:12219:1: ruleConstraintClause
             {
              before(grammarAccess.getDoFClauseAccess().getConstraintClauseConstraintClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -31498,17 +33669,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFClause__WithClauseAssignment_4"
-    // InternalDescartesQL.g:11435:1: rule__DoFClause__WithClauseAssignment_4 : ( ruleWithClause ) ;
+    // InternalDescartesQL.g:12228:1: rule__DoFClause__WithClauseAssignment_4 : ( ruleWithClause ) ;
     public final void rule__DoFClause__WithClauseAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11439:1: ( ( ruleWithClause ) )
-            // InternalDescartesQL.g:11440:1: ( ruleWithClause )
+            // InternalDescartesQL.g:12232:1: ( ( ruleWithClause ) )
+            // InternalDescartesQL.g:12233:1: ( ruleWithClause )
             {
-            // InternalDescartesQL.g:11440:1: ( ruleWithClause )
-            // InternalDescartesQL.g:11441:1: ruleWithClause
+            // InternalDescartesQL.g:12233:1: ( ruleWithClause )
+            // InternalDescartesQL.g:12234:1: ruleWithClause
             {
              before(grammarAccess.getDoFClauseAccess().getWithClauseWithClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -31539,24 +33710,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ExplorationStrategyClause__ModeAssignment_0"
-    // InternalDescartesQL.g:11450:1: rule__ExplorationStrategyClause__ModeAssignment_0 : ( ( 'GUIDED BY' ) ) ;
+    // InternalDescartesQL.g:12243:1: rule__ExplorationStrategyClause__ModeAssignment_0 : ( ( 'GUIDED BY' ) ) ;
     public final void rule__ExplorationStrategyClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11454:1: ( ( ( 'GUIDED BY' ) ) )
-            // InternalDescartesQL.g:11455:1: ( ( 'GUIDED BY' ) )
+            // InternalDescartesQL.g:12247:1: ( ( ( 'GUIDED BY' ) ) )
+            // InternalDescartesQL.g:12248:1: ( ( 'GUIDED BY' ) )
             {
-            // InternalDescartesQL.g:11455:1: ( ( 'GUIDED BY' ) )
-            // InternalDescartesQL.g:11456:1: ( 'GUIDED BY' )
+            // InternalDescartesQL.g:12248:1: ( ( 'GUIDED BY' ) )
+            // InternalDescartesQL.g:12249:1: ( 'GUIDED BY' )
             {
              before(grammarAccess.getExplorationStrategyClauseAccess().getModeGUIDEDBYKeyword_0_0()); 
-            // InternalDescartesQL.g:11457:1: ( 'GUIDED BY' )
-            // InternalDescartesQL.g:11458:1: 'GUIDED BY'
+            // InternalDescartesQL.g:12250:1: ( 'GUIDED BY' )
+            // InternalDescartesQL.g:12251:1: 'GUIDED BY'
             {
              before(grammarAccess.getExplorationStrategyClauseAccess().getModeGUIDEDBYKeyword_0_0()); 
-            match(input,86,FOLLOW_2); 
+            match(input,90,FOLLOW_2); 
              after(grammarAccess.getExplorationStrategyClauseAccess().getModeGUIDEDBYKeyword_0_0()); 
 
             }
@@ -31584,17 +33755,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ExplorationStrategyClause__NameAssignment_1"
-    // InternalDescartesQL.g:11473:1: rule__ExplorationStrategyClause__NameAssignment_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:12266:1: rule__ExplorationStrategyClause__NameAssignment_1 : ( RULE_STRING ) ;
     public final void rule__ExplorationStrategyClause__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11477:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:11478:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12270:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:12271:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:11478:1: ( RULE_STRING )
-            // InternalDescartesQL.g:11479:1: RULE_STRING
+            // InternalDescartesQL.g:12271:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12272:1: RULE_STRING
             {
              before(grammarAccess.getExplorationStrategyClauseAccess().getNameSTRINGTerminalRuleCall_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -31621,17 +33792,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ExplorationStrategyClause__ParameterClauseAssignment_2"
-    // InternalDescartesQL.g:11488:1: rule__ExplorationStrategyClause__ParameterClauseAssignment_2 : ( ruleConfigurationPropertiesClause ) ;
+    // InternalDescartesQL.g:12281:1: rule__ExplorationStrategyClause__ParameterClauseAssignment_2 : ( ruleConfigurationPropertiesClause ) ;
     public final void rule__ExplorationStrategyClause__ParameterClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11492:1: ( ( ruleConfigurationPropertiesClause ) )
-            // InternalDescartesQL.g:11493:1: ( ruleConfigurationPropertiesClause )
+            // InternalDescartesQL.g:12285:1: ( ( ruleConfigurationPropertiesClause ) )
+            // InternalDescartesQL.g:12286:1: ( ruleConfigurationPropertiesClause )
             {
-            // InternalDescartesQL.g:11493:1: ( ruleConfigurationPropertiesClause )
-            // InternalDescartesQL.g:11494:1: ruleConfigurationPropertiesClause
+            // InternalDescartesQL.g:12286:1: ( ruleConfigurationPropertiesClause )
+            // InternalDescartesQL.g:12287:1: ruleConfigurationPropertiesClause
             {
              before(grammarAccess.getExplorationStrategyClauseAccess().getParameterClauseConfigurationPropertiesClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -31662,24 +33833,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertiesClause__Mode1Assignment_0"
-    // InternalDescartesQL.g:11503:1: rule__ConfigurationPropertiesClause__Mode1Assignment_0 : ( ( '[' ) ) ;
+    // InternalDescartesQL.g:12296:1: rule__ConfigurationPropertiesClause__Mode1Assignment_0 : ( ( '[' ) ) ;
     public final void rule__ConfigurationPropertiesClause__Mode1Assignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11507:1: ( ( ( '[' ) ) )
-            // InternalDescartesQL.g:11508:1: ( ( '[' ) )
+            // InternalDescartesQL.g:12300:1: ( ( ( '[' ) ) )
+            // InternalDescartesQL.g:12301:1: ( ( '[' ) )
             {
-            // InternalDescartesQL.g:11508:1: ( ( '[' ) )
-            // InternalDescartesQL.g:11509:1: ( '[' )
+            // InternalDescartesQL.g:12301:1: ( ( '[' ) )
+            // InternalDescartesQL.g:12302:1: ( '[' )
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1LeftSquareBracketKeyword_0_0()); 
-            // InternalDescartesQL.g:11510:1: ( '[' )
-            // InternalDescartesQL.g:11511:1: '['
+            // InternalDescartesQL.g:12303:1: ( '[' )
+            // InternalDescartesQL.g:12304:1: '['
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1LeftSquareBracketKeyword_0_0()); 
-            match(input,87,FOLLOW_2); 
+            match(input,91,FOLLOW_2); 
              after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode1LeftSquareBracketKeyword_0_0()); 
 
             }
@@ -31707,17 +33878,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertiesClause__PropertiesAssignment_1"
-    // InternalDescartesQL.g:11526:1: rule__ConfigurationPropertiesClause__PropertiesAssignment_1 : ( ruleConfigurationPropertyClause ) ;
+    // InternalDescartesQL.g:12319:1: rule__ConfigurationPropertiesClause__PropertiesAssignment_1 : ( ruleConfigurationPropertyClause ) ;
     public final void rule__ConfigurationPropertiesClause__PropertiesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11530:1: ( ( ruleConfigurationPropertyClause ) )
-            // InternalDescartesQL.g:11531:1: ( ruleConfigurationPropertyClause )
+            // InternalDescartesQL.g:12323:1: ( ( ruleConfigurationPropertyClause ) )
+            // InternalDescartesQL.g:12324:1: ( ruleConfigurationPropertyClause )
             {
-            // InternalDescartesQL.g:11531:1: ( ruleConfigurationPropertyClause )
-            // InternalDescartesQL.g:11532:1: ruleConfigurationPropertyClause
+            // InternalDescartesQL.g:12324:1: ( ruleConfigurationPropertyClause )
+            // InternalDescartesQL.g:12325:1: ruleConfigurationPropertyClause
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesConfigurationPropertyClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31748,17 +33919,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1"
-    // InternalDescartesQL.g:11541:1: rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 : ( ruleConfigurationPropertyClause ) ;
+    // InternalDescartesQL.g:12334:1: rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1 : ( ruleConfigurationPropertyClause ) ;
     public final void rule__ConfigurationPropertiesClause__PropertiesAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11545:1: ( ( ruleConfigurationPropertyClause ) )
-            // InternalDescartesQL.g:11546:1: ( ruleConfigurationPropertyClause )
+            // InternalDescartesQL.g:12338:1: ( ( ruleConfigurationPropertyClause ) )
+            // InternalDescartesQL.g:12339:1: ( ruleConfigurationPropertyClause )
             {
-            // InternalDescartesQL.g:11546:1: ( ruleConfigurationPropertyClause )
-            // InternalDescartesQL.g:11547:1: ruleConfigurationPropertyClause
+            // InternalDescartesQL.g:12339:1: ( ruleConfigurationPropertyClause )
+            // InternalDescartesQL.g:12340:1: ruleConfigurationPropertyClause
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getPropertiesConfigurationPropertyClauseParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31789,24 +33960,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertiesClause__Mode2Assignment_3"
-    // InternalDescartesQL.g:11556:1: rule__ConfigurationPropertiesClause__Mode2Assignment_3 : ( ( ']' ) ) ;
+    // InternalDescartesQL.g:12349:1: rule__ConfigurationPropertiesClause__Mode2Assignment_3 : ( ( ']' ) ) ;
     public final void rule__ConfigurationPropertiesClause__Mode2Assignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11560:1: ( ( ( ']' ) ) )
-            // InternalDescartesQL.g:11561:1: ( ( ']' ) )
+            // InternalDescartesQL.g:12353:1: ( ( ( ']' ) ) )
+            // InternalDescartesQL.g:12354:1: ( ( ']' ) )
             {
-            // InternalDescartesQL.g:11561:1: ( ( ']' ) )
-            // InternalDescartesQL.g:11562:1: ( ']' )
+            // InternalDescartesQL.g:12354:1: ( ( ']' ) )
+            // InternalDescartesQL.g:12355:1: ( ']' )
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2RightSquareBracketKeyword_3_0()); 
-            // InternalDescartesQL.g:11563:1: ( ']' )
-            // InternalDescartesQL.g:11564:1: ']'
+            // InternalDescartesQL.g:12356:1: ( ']' )
+            // InternalDescartesQL.g:12357:1: ']'
             {
              before(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2RightSquareBracketKeyword_3_0()); 
-            match(input,88,FOLLOW_2); 
+            match(input,92,FOLLOW_2); 
              after(grammarAccess.getConfigurationPropertiesClauseAccess().getMode2RightSquareBracketKeyword_3_0()); 
 
             }
@@ -31834,17 +34005,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertyClause__KeyAssignment_0"
-    // InternalDescartesQL.g:11579:1: rule__ConfigurationPropertyClause__KeyAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12372:1: rule__ConfigurationPropertyClause__KeyAssignment_0 : ( RULE_ID ) ;
     public final void rule__ConfigurationPropertyClause__KeyAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11583:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:11584:1: ( RULE_ID )
+            // InternalDescartesQL.g:12376:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12377:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:11584:1: ( RULE_ID )
-            // InternalDescartesQL.g:11585:1: RULE_ID
+            // InternalDescartesQL.g:12377:1: ( RULE_ID )
+            // InternalDescartesQL.g:12378:1: RULE_ID
             {
              before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31871,17 +34042,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertyClause__KeyAssignment_1_1"
-    // InternalDescartesQL.g:11594:1: rule__ConfigurationPropertyClause__KeyAssignment_1_1 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12387:1: rule__ConfigurationPropertyClause__KeyAssignment_1_1 : ( RULE_ID ) ;
     public final void rule__ConfigurationPropertyClause__KeyAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11598:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:11599:1: ( RULE_ID )
+            // InternalDescartesQL.g:12391:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12392:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:11599:1: ( RULE_ID )
-            // InternalDescartesQL.g:11600:1: RULE_ID
+            // InternalDescartesQL.g:12392:1: ( RULE_ID )
+            // InternalDescartesQL.g:12393:1: RULE_ID
             {
              before(grammarAccess.getConfigurationPropertyClauseAccess().getKeyIDTerminalRuleCall_1_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31908,17 +34079,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConfigurationPropertyClause__ValueAssignment_3"
-    // InternalDescartesQL.g:11609:1: rule__ConfigurationPropertyClause__ValueAssignment_3 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:12402:1: rule__ConfigurationPropertyClause__ValueAssignment_3 : ( RULE_STRING ) ;
     public final void rule__ConfigurationPropertyClause__ValueAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11613:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:11614:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12406:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:12407:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:11614:1: ( RULE_STRING )
-            // InternalDescartesQL.g:11615:1: RULE_STRING
+            // InternalDescartesQL.g:12407:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12408:1: RULE_STRING
             {
              before(grammarAccess.getConfigurationPropertyClauseAccess().getValueSTRINGTerminalRuleCall_3_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -31945,24 +34116,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFVariationClause__Mode1Assignment_0"
-    // InternalDescartesQL.g:11624:1: rule__DoFVariationClause__Mode1Assignment_0 : ( ( '<' ) ) ;
+    // InternalDescartesQL.g:12417:1: rule__DoFVariationClause__Mode1Assignment_0 : ( ( '<' ) ) ;
     public final void rule__DoFVariationClause__Mode1Assignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11628:1: ( ( ( '<' ) ) )
-            // InternalDescartesQL.g:11629:1: ( ( '<' ) )
+            // InternalDescartesQL.g:12421:1: ( ( ( '<' ) ) )
+            // InternalDescartesQL.g:12422:1: ( ( '<' ) )
             {
-            // InternalDescartesQL.g:11629:1: ( ( '<' ) )
-            // InternalDescartesQL.g:11630:1: ( '<' )
+            // InternalDescartesQL.g:12422:1: ( ( '<' ) )
+            // InternalDescartesQL.g:12423:1: ( '<' )
             {
              before(grammarAccess.getDoFVariationClauseAccess().getMode1LessThanSignKeyword_0_0()); 
-            // InternalDescartesQL.g:11631:1: ( '<' )
-            // InternalDescartesQL.g:11632:1: '<'
+            // InternalDescartesQL.g:12424:1: ( '<' )
+            // InternalDescartesQL.g:12425:1: '<'
             {
              before(grammarAccess.getDoFVariationClauseAccess().getMode1LessThanSignKeyword_0_0()); 
-            match(input,18,FOLLOW_2); 
+            match(input,19,FOLLOW_2); 
              after(grammarAccess.getDoFVariationClauseAccess().getMode1LessThanSignKeyword_0_0()); 
 
             }
@@ -31990,21 +34161,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFVariationClause__VariationAssignment_1"
-    // InternalDescartesQL.g:11647:1: rule__DoFVariationClause__VariationAssignment_1 : ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:12440:1: rule__DoFVariationClause__VariationAssignment_1 : ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) ) ;
     public final void rule__DoFVariationClause__VariationAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11651:1: ( ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:11652:1: ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) )
+            // InternalDescartesQL.g:12444:1: ( ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:12445:1: ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:11652:1: ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) )
-            // InternalDescartesQL.g:11653:1: ( rule__DoFVariationClause__VariationAlternatives_1_0 )
+            // InternalDescartesQL.g:12445:1: ( ( rule__DoFVariationClause__VariationAlternatives_1_0 ) )
+            // InternalDescartesQL.g:12446:1: ( rule__DoFVariationClause__VariationAlternatives_1_0 )
             {
              before(grammarAccess.getDoFVariationClauseAccess().getVariationAlternatives_1_0()); 
-            // InternalDescartesQL.g:11654:1: ( rule__DoFVariationClause__VariationAlternatives_1_0 )
-            // InternalDescartesQL.g:11654:2: rule__DoFVariationClause__VariationAlternatives_1_0
+            // InternalDescartesQL.g:12447:1: ( rule__DoFVariationClause__VariationAlternatives_1_0 )
+            // InternalDescartesQL.g:12447:2: rule__DoFVariationClause__VariationAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__DoFVariationClause__VariationAlternatives_1_0();
@@ -32037,24 +34208,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFVariationClause__Mode2Assignment_2"
-    // InternalDescartesQL.g:11663:1: rule__DoFVariationClause__Mode2Assignment_2 : ( ( '>' ) ) ;
+    // InternalDescartesQL.g:12456:1: rule__DoFVariationClause__Mode2Assignment_2 : ( ( '>' ) ) ;
     public final void rule__DoFVariationClause__Mode2Assignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11667:1: ( ( ( '>' ) ) )
-            // InternalDescartesQL.g:11668:1: ( ( '>' ) )
+            // InternalDescartesQL.g:12460:1: ( ( ( '>' ) ) )
+            // InternalDescartesQL.g:12461:1: ( ( '>' ) )
             {
-            // InternalDescartesQL.g:11668:1: ( ( '>' ) )
-            // InternalDescartesQL.g:11669:1: ( '>' )
+            // InternalDescartesQL.g:12461:1: ( ( '>' ) )
+            // InternalDescartesQL.g:12462:1: ( '>' )
             {
              before(grammarAccess.getDoFVariationClauseAccess().getMode2GreaterThanSignKeyword_2_0()); 
-            // InternalDescartesQL.g:11670:1: ( '>' )
-            // InternalDescartesQL.g:11671:1: '>'
+            // InternalDescartesQL.g:12463:1: ( '>' )
+            // InternalDescartesQL.g:12464:1: '>'
             {
              before(grammarAccess.getDoFVariationClauseAccess().getMode2GreaterThanSignKeyword_2_0()); 
-            match(input,20,FOLLOW_2); 
+            match(input,21,FOLLOW_2); 
              after(grammarAccess.getDoFVariationClauseAccess().getMode2GreaterThanSignKeyword_2_0()); 
 
             }
@@ -32082,17 +34253,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ValueVariationClause__ValueAssignment_0"
-    // InternalDescartesQL.g:11686:1: rule__ValueVariationClause__ValueAssignment_0 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:12479:1: rule__ValueVariationClause__ValueAssignment_0 : ( RULE_INT ) ;
     public final void rule__ValueVariationClause__ValueAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11690:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:11691:1: ( RULE_INT )
+            // InternalDescartesQL.g:12483:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:12484:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:11691:1: ( RULE_INT )
-            // InternalDescartesQL.g:11692:1: RULE_INT
+            // InternalDescartesQL.g:12484:1: ( RULE_INT )
+            // InternalDescartesQL.g:12485:1: RULE_INT
             {
              before(grammarAccess.getValueVariationClauseAccess().getValueINTTerminalRuleCall_0_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -32119,17 +34290,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ValueVariationClause__ValueAssignment_1_1"
-    // InternalDescartesQL.g:11701:1: rule__ValueVariationClause__ValueAssignment_1_1 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:12494:1: rule__ValueVariationClause__ValueAssignment_1_1 : ( RULE_INT ) ;
     public final void rule__ValueVariationClause__ValueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11705:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:11706:1: ( RULE_INT )
+            // InternalDescartesQL.g:12498:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:12499:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:11706:1: ( RULE_INT )
-            // InternalDescartesQL.g:11707:1: RULE_INT
+            // InternalDescartesQL.g:12499:1: ( RULE_INT )
+            // InternalDescartesQL.g:12500:1: RULE_INT
             {
              before(grammarAccess.getValueVariationClauseAccess().getValueINTTerminalRuleCall_1_1_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -32156,17 +34327,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoubleValueVariationClause__ValueAssignment_0"
-    // InternalDescartesQL.g:11716:1: rule__DoubleValueVariationClause__ValueAssignment_0 : ( RULE_DOUBLE ) ;
+    // InternalDescartesQL.g:12509:1: rule__DoubleValueVariationClause__ValueAssignment_0 : ( RULE_DOUBLE ) ;
     public final void rule__DoubleValueVariationClause__ValueAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11720:1: ( ( RULE_DOUBLE ) )
-            // InternalDescartesQL.g:11721:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:12513:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:12514:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:11721:1: ( RULE_DOUBLE )
-            // InternalDescartesQL.g:11722:1: RULE_DOUBLE
+            // InternalDescartesQL.g:12514:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:12515:1: RULE_DOUBLE
             {
              before(grammarAccess.getDoubleValueVariationClauseAccess().getValueDOUBLETerminalRuleCall_0_0()); 
             match(input,RULE_DOUBLE,FOLLOW_2); 
@@ -32193,17 +34364,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoubleValueVariationClause__ValueAssignment_1_1"
-    // InternalDescartesQL.g:11731:1: rule__DoubleValueVariationClause__ValueAssignment_1_1 : ( RULE_DOUBLE ) ;
+    // InternalDescartesQL.g:12524:1: rule__DoubleValueVariationClause__ValueAssignment_1_1 : ( RULE_DOUBLE ) ;
     public final void rule__DoubleValueVariationClause__ValueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11735:1: ( ( RULE_DOUBLE ) )
-            // InternalDescartesQL.g:11736:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:12528:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:12529:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:11736:1: ( RULE_DOUBLE )
-            // InternalDescartesQL.g:11737:1: RULE_DOUBLE
+            // InternalDescartesQL.g:12529:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:12530:1: RULE_DOUBLE
             {
              before(grammarAccess.getDoubleValueVariationClauseAccess().getValueDOUBLETerminalRuleCall_1_1_0()); 
             match(input,RULE_DOUBLE,FOLLOW_2); 
@@ -32230,17 +34401,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__IntervalVariationClause__StartAssignment_0"
-    // InternalDescartesQL.g:11746:1: rule__IntervalVariationClause__StartAssignment_0 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:12539:1: rule__IntervalVariationClause__StartAssignment_0 : ( RULE_INT ) ;
     public final void rule__IntervalVariationClause__StartAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11750:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:11751:1: ( RULE_INT )
+            // InternalDescartesQL.g:12543:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:12544:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:11751:1: ( RULE_INT )
-            // InternalDescartesQL.g:11752:1: RULE_INT
+            // InternalDescartesQL.g:12544:1: ( RULE_INT )
+            // InternalDescartesQL.g:12545:1: RULE_INT
             {
              before(grammarAccess.getIntervalVariationClauseAccess().getStartINTTerminalRuleCall_0_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -32267,17 +34438,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__IntervalVariationClause__EndAssignment_2"
-    // InternalDescartesQL.g:11761:1: rule__IntervalVariationClause__EndAssignment_2 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:12554:1: rule__IntervalVariationClause__EndAssignment_2 : ( RULE_INT ) ;
     public final void rule__IntervalVariationClause__EndAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11765:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:11766:1: ( RULE_INT )
+            // InternalDescartesQL.g:12558:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:12559:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:11766:1: ( RULE_INT )
-            // InternalDescartesQL.g:11767:1: RULE_INT
+            // InternalDescartesQL.g:12559:1: ( RULE_INT )
+            // InternalDescartesQL.g:12560:1: RULE_INT
             {
              before(grammarAccess.getIntervalVariationClauseAccess().getEndINTTerminalRuleCall_2_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -32304,17 +34475,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__IntervalVariationClause__StepAssignment_4"
-    // InternalDescartesQL.g:11776:1: rule__IntervalVariationClause__StepAssignment_4 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:12569:1: rule__IntervalVariationClause__StepAssignment_4 : ( RULE_INT ) ;
     public final void rule__IntervalVariationClause__StepAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11780:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:11781:1: ( RULE_INT )
+            // InternalDescartesQL.g:12573:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:12574:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:11781:1: ( RULE_INT )
-            // InternalDescartesQL.g:11782:1: RULE_INT
+            // InternalDescartesQL.g:12574:1: ( RULE_INT )
+            // InternalDescartesQL.g:12575:1: RULE_INT
             {
              before(grammarAccess.getIntervalVariationClauseAccess().getStepINTTerminalRuleCall_4_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -32341,24 +34512,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VaryingClause__ModeAssignment_0"
-    // InternalDescartesQL.g:11791:1: rule__VaryingClause__ModeAssignment_0 : ( ( 'VARYING' ) ) ;
+    // InternalDescartesQL.g:12584:1: rule__VaryingClause__ModeAssignment_0 : ( ( 'VARYING' ) ) ;
     public final void rule__VaryingClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11795:1: ( ( ( 'VARYING' ) ) )
-            // InternalDescartesQL.g:11796:1: ( ( 'VARYING' ) )
+            // InternalDescartesQL.g:12588:1: ( ( ( 'VARYING' ) ) )
+            // InternalDescartesQL.g:12589:1: ( ( 'VARYING' ) )
             {
-            // InternalDescartesQL.g:11796:1: ( ( 'VARYING' ) )
-            // InternalDescartesQL.g:11797:1: ( 'VARYING' )
+            // InternalDescartesQL.g:12589:1: ( ( 'VARYING' ) )
+            // InternalDescartesQL.g:12590:1: ( 'VARYING' )
             {
              before(grammarAccess.getVaryingClauseAccess().getModeVARYINGKeyword_0_0()); 
-            // InternalDescartesQL.g:11798:1: ( 'VARYING' )
-            // InternalDescartesQL.g:11799:1: 'VARYING'
+            // InternalDescartesQL.g:12591:1: ( 'VARYING' )
+            // InternalDescartesQL.g:12592:1: 'VARYING'
             {
              before(grammarAccess.getVaryingClauseAccess().getModeVARYINGKeyword_0_0()); 
-            match(input,89,FOLLOW_2); 
+            match(input,93,FOLLOW_2); 
              after(grammarAccess.getVaryingClauseAccess().getModeVARYINGKeyword_0_0()); 
 
             }
@@ -32386,17 +34557,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VaryingClause__DofReferencesAssignment_1"
-    // InternalDescartesQL.g:11814:1: rule__VaryingClause__DofReferencesAssignment_1 : ( ruleDoFReference ) ;
+    // InternalDescartesQL.g:12607:1: rule__VaryingClause__DofReferencesAssignment_1 : ( ruleDoFReference ) ;
     public final void rule__VaryingClause__DofReferencesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11818:1: ( ( ruleDoFReference ) )
-            // InternalDescartesQL.g:11819:1: ( ruleDoFReference )
+            // InternalDescartesQL.g:12611:1: ( ( ruleDoFReference ) )
+            // InternalDescartesQL.g:12612:1: ( ruleDoFReference )
             {
-            // InternalDescartesQL.g:11819:1: ( ruleDoFReference )
-            // InternalDescartesQL.g:11820:1: ruleDoFReference
+            // InternalDescartesQL.g:12612:1: ( ruleDoFReference )
+            // InternalDescartesQL.g:12613:1: ruleDoFReference
             {
              before(grammarAccess.getVaryingClauseAccess().getDofReferencesDoFReferenceParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32427,17 +34598,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VaryingClause__DofReferencesAssignment_2_1"
-    // InternalDescartesQL.g:11829:1: rule__VaryingClause__DofReferencesAssignment_2_1 : ( ruleDoFReference ) ;
+    // InternalDescartesQL.g:12622:1: rule__VaryingClause__DofReferencesAssignment_2_1 : ( ruleDoFReference ) ;
     public final void rule__VaryingClause__DofReferencesAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11833:1: ( ( ruleDoFReference ) )
-            // InternalDescartesQL.g:11834:1: ( ruleDoFReference )
+            // InternalDescartesQL.g:12626:1: ( ( ruleDoFReference ) )
+            // InternalDescartesQL.g:12627:1: ( ruleDoFReference )
             {
-            // InternalDescartesQL.g:11834:1: ( ruleDoFReference )
-            // InternalDescartesQL.g:11835:1: ruleDoFReference
+            // InternalDescartesQL.g:12627:1: ( ruleDoFReference )
+            // InternalDescartesQL.g:12628:1: ruleDoFReference
             {
              before(grammarAccess.getVaryingClauseAccess().getDofReferencesDoFReferenceParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32468,17 +34639,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFReference__DoFIdentifierAssignment_0"
-    // InternalDescartesQL.g:11844:1: rule__DoFReference__DoFIdentifierAssignment_0 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:12637:1: rule__DoFReference__DoFIdentifierAssignment_0 : ( RULE_STRING ) ;
     public final void rule__DoFReference__DoFIdentifierAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11848:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:11849:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12641:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:12642:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:11849:1: ( RULE_STRING )
-            // InternalDescartesQL.g:11850:1: RULE_STRING
+            // InternalDescartesQL.g:12642:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12643:1: RULE_STRING
             {
              before(grammarAccess.getDoFReferenceAccess().getDoFIdentifierSTRINGTerminalRuleCall_0_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -32505,17 +34676,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFReference__DoFAliasClauseAssignment_1"
-    // InternalDescartesQL.g:11859:1: rule__DoFReference__DoFAliasClauseAssignment_1 : ( ruleAliasClause ) ;
+    // InternalDescartesQL.g:12652:1: rule__DoFReference__DoFAliasClauseAssignment_1 : ( ruleAliasClause ) ;
     public final void rule__DoFReference__DoFAliasClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11863:1: ( ( ruleAliasClause ) )
-            // InternalDescartesQL.g:11864:1: ( ruleAliasClause )
+            // InternalDescartesQL.g:12656:1: ( ( ruleAliasClause ) )
+            // InternalDescartesQL.g:12657:1: ( ruleAliasClause )
             {
-            // InternalDescartesQL.g:11864:1: ( ruleAliasClause )
-            // InternalDescartesQL.g:11865:1: ruleAliasClause
+            // InternalDescartesQL.g:12657:1: ( ruleAliasClause )
+            // InternalDescartesQL.g:12658:1: ruleAliasClause
             {
              before(grammarAccess.getDoFReferenceAccess().getDoFAliasClauseAliasClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32546,21 +34717,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__DoFReference__DoFVariationClauseAssignment_2"
-    // InternalDescartesQL.g:11874:1: rule__DoFReference__DoFVariationClauseAssignment_2 : ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) ) ;
+    // InternalDescartesQL.g:12667:1: rule__DoFReference__DoFVariationClauseAssignment_2 : ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) ) ;
     public final void rule__DoFReference__DoFVariationClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11878:1: ( ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) ) )
-            // InternalDescartesQL.g:11879:1: ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) )
+            // InternalDescartesQL.g:12671:1: ( ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) ) )
+            // InternalDescartesQL.g:12672:1: ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) )
             {
-            // InternalDescartesQL.g:11879:1: ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) )
-            // InternalDescartesQL.g:11880:1: ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 )
+            // InternalDescartesQL.g:12672:1: ( ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 ) )
+            // InternalDescartesQL.g:12673:1: ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 )
             {
              before(grammarAccess.getDoFReferenceAccess().getDoFVariationClauseAlternatives_2_0()); 
-            // InternalDescartesQL.g:11881:1: ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 )
-            // InternalDescartesQL.g:11881:2: rule__DoFReference__DoFVariationClauseAlternatives_2_0
+            // InternalDescartesQL.g:12674:1: ( rule__DoFReference__DoFVariationClauseAlternatives_2_0 )
+            // InternalDescartesQL.g:12674:2: rule__DoFReference__DoFVariationClauseAlternatives_2_0
             {
             pushFollow(FOLLOW_2);
             rule__DoFReference__DoFVariationClauseAlternatives_2_0();
@@ -32593,17 +34764,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricClause__MetricReferenceAssignment"
-    // InternalDescartesQL.g:11890:1: rule__MetricClause__MetricReferenceAssignment : ( ruleMetricReference ) ;
+    // InternalDescartesQL.g:12683:1: rule__MetricClause__MetricReferenceAssignment : ( ruleMetricReference ) ;
     public final void rule__MetricClause__MetricReferenceAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11894:1: ( ( ruleMetricReference ) )
-            // InternalDescartesQL.g:11895:1: ( ruleMetricReference )
+            // InternalDescartesQL.g:12687:1: ( ( ruleMetricReference ) )
+            // InternalDescartesQL.g:12688:1: ( ruleMetricReference )
             {
-            // InternalDescartesQL.g:11895:1: ( ruleMetricReference )
-            // InternalDescartesQL.g:11896:1: ruleMetricReference
+            // InternalDescartesQL.g:12688:1: ( ruleMetricReference )
+            // InternalDescartesQL.g:12689:1: ruleMetricReference
             {
              before(grammarAccess.getMetricClauseAccess().getMetricReferenceMetricReferenceParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -32634,17 +34805,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AggregateMetricClause__FunctionAssignment_0"
-    // InternalDescartesQL.g:11905:1: rule__AggregateMetricClause__FunctionAssignment_0 : ( ruleStatisticalAggregateType ) ;
+    // InternalDescartesQL.g:12698:1: rule__AggregateMetricClause__FunctionAssignment_0 : ( ruleStatisticalAggregateType ) ;
     public final void rule__AggregateMetricClause__FunctionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11909:1: ( ( ruleStatisticalAggregateType ) )
-            // InternalDescartesQL.g:11910:1: ( ruleStatisticalAggregateType )
+            // InternalDescartesQL.g:12702:1: ( ( ruleStatisticalAggregateType ) )
+            // InternalDescartesQL.g:12703:1: ( ruleStatisticalAggregateType )
             {
-            // InternalDescartesQL.g:11910:1: ( ruleStatisticalAggregateType )
-            // InternalDescartesQL.g:11911:1: ruleStatisticalAggregateType
+            // InternalDescartesQL.g:12703:1: ( ruleStatisticalAggregateType )
+            // InternalDescartesQL.g:12704:1: ruleStatisticalAggregateType
             {
              before(grammarAccess.getAggregateMetricClauseAccess().getFunctionStatisticalAggregateTypeEnumRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -32675,21 +34846,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AggregateMetricClause__MetricsAssignment_2"
-    // InternalDescartesQL.g:11920:1: rule__AggregateMetricClause__MetricsAssignment_2 : ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) ) ;
+    // InternalDescartesQL.g:12713:1: rule__AggregateMetricClause__MetricsAssignment_2 : ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) ) ;
     public final void rule__AggregateMetricClause__MetricsAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11924:1: ( ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) ) )
-            // InternalDescartesQL.g:11925:1: ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) )
+            // InternalDescartesQL.g:12717:1: ( ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) ) )
+            // InternalDescartesQL.g:12718:1: ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) )
             {
-            // InternalDescartesQL.g:11925:1: ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) )
-            // InternalDescartesQL.g:11926:1: ( rule__AggregateMetricClause__MetricsAlternatives_2_0 )
+            // InternalDescartesQL.g:12718:1: ( ( rule__AggregateMetricClause__MetricsAlternatives_2_0 ) )
+            // InternalDescartesQL.g:12719:1: ( rule__AggregateMetricClause__MetricsAlternatives_2_0 )
             {
              before(grammarAccess.getAggregateMetricClauseAccess().getMetricsAlternatives_2_0()); 
-            // InternalDescartesQL.g:11927:1: ( rule__AggregateMetricClause__MetricsAlternatives_2_0 )
-            // InternalDescartesQL.g:11927:2: rule__AggregateMetricClause__MetricsAlternatives_2_0
+            // InternalDescartesQL.g:12720:1: ( rule__AggregateMetricClause__MetricsAlternatives_2_0 )
+            // InternalDescartesQL.g:12720:2: rule__AggregateMetricClause__MetricsAlternatives_2_0
             {
             pushFollow(FOLLOW_2);
             rule__AggregateMetricClause__MetricsAlternatives_2_0();
@@ -32722,17 +34893,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AggregateMetricClause__PropertiesAssignment_4"
-    // InternalDescartesQL.g:11936:1: rule__AggregateMetricClause__PropertiesAssignment_4 : ( ruleConfigurationPropertiesClause ) ;
+    // InternalDescartesQL.g:12729:1: rule__AggregateMetricClause__PropertiesAssignment_4 : ( ruleConfigurationPropertiesClause ) ;
     public final void rule__AggregateMetricClause__PropertiesAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11940:1: ( ( ruleConfigurationPropertiesClause ) )
-            // InternalDescartesQL.g:11941:1: ( ruleConfigurationPropertiesClause )
+            // InternalDescartesQL.g:12733:1: ( ( ruleConfigurationPropertiesClause ) )
+            // InternalDescartesQL.g:12734:1: ( ruleConfigurationPropertiesClause )
             {
-            // InternalDescartesQL.g:11941:1: ( ruleConfigurationPropertiesClause )
-            // InternalDescartesQL.g:11942:1: ruleConfigurationPropertiesClause
+            // InternalDescartesQL.g:12734:1: ( ruleConfigurationPropertiesClause )
+            // InternalDescartesQL.g:12735:1: ruleConfigurationPropertiesClause
             {
              before(grammarAccess.getAggregateMetricClauseAccess().getPropertiesConfigurationPropertiesClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -32763,17 +34934,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricClauses__MetricsAssignment_0"
-    // InternalDescartesQL.g:11951:1: rule__MetricClauses__MetricsAssignment_0 : ( ruleMetricClause ) ;
+    // InternalDescartesQL.g:12744:1: rule__MetricClauses__MetricsAssignment_0 : ( ruleMetricClause ) ;
     public final void rule__MetricClauses__MetricsAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11955:1: ( ( ruleMetricClause ) )
-            // InternalDescartesQL.g:11956:1: ( ruleMetricClause )
+            // InternalDescartesQL.g:12748:1: ( ( ruleMetricClause ) )
+            // InternalDescartesQL.g:12749:1: ( ruleMetricClause )
             {
-            // InternalDescartesQL.g:11956:1: ( ruleMetricClause )
-            // InternalDescartesQL.g:11957:1: ruleMetricClause
+            // InternalDescartesQL.g:12749:1: ( ruleMetricClause )
+            // InternalDescartesQL.g:12750:1: ruleMetricClause
             {
              before(grammarAccess.getMetricClausesAccess().getMetricsMetricClauseParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -32804,17 +34975,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricClauses__MetricsAssignment_1_1"
-    // InternalDescartesQL.g:11966:1: rule__MetricClauses__MetricsAssignment_1_1 : ( ruleMetricClause ) ;
+    // InternalDescartesQL.g:12759:1: rule__MetricClauses__MetricsAssignment_1_1 : ( ruleMetricClause ) ;
     public final void rule__MetricClauses__MetricsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11970:1: ( ( ruleMetricClause ) )
-            // InternalDescartesQL.g:11971:1: ( ruleMetricClause )
+            // InternalDescartesQL.g:12763:1: ( ( ruleMetricClause ) )
+            // InternalDescartesQL.g:12764:1: ( ruleMetricClause )
             {
-            // InternalDescartesQL.g:11971:1: ( ruleMetricClause )
-            // InternalDescartesQL.g:11972:1: ruleMetricClause
+            // InternalDescartesQL.g:12764:1: ( ruleMetricClause )
+            // InternalDescartesQL.g:12765:1: ruleMetricClause
             {
              before(grammarAccess.getMetricClausesAccess().getMetricsMetricClauseParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32845,17 +35016,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricStarClause__MetricNameAssignment_1"
-    // InternalDescartesQL.g:11981:1: rule__MetricStarClause__MetricNameAssignment_1 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12774:1: rule__MetricStarClause__MetricNameAssignment_1 : ( RULE_ID ) ;
     public final void rule__MetricStarClause__MetricNameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:11985:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:11986:1: ( RULE_ID )
+            // InternalDescartesQL.g:12778:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12779:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:11986:1: ( RULE_ID )
-            // InternalDescartesQL.g:11987:1: RULE_ID
+            // InternalDescartesQL.g:12779:1: ( RULE_ID )
+            // InternalDescartesQL.g:12780:1: RULE_ID
             {
              before(grammarAccess.getMetricStarClauseAccess().getMetricNameIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32882,17 +35053,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__EntityReferenceAssignment_0"
-    // InternalDescartesQL.g:11996:1: rule__MetricReference__EntityReferenceAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12789:1: rule__MetricReference__EntityReferenceAssignment_0 : ( RULE_ID ) ;
     public final void rule__MetricReference__EntityReferenceAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12000:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12001:1: ( RULE_ID )
+            // InternalDescartesQL.g:12793:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12794:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12001:1: ( RULE_ID )
-            // InternalDescartesQL.g:12002:1: RULE_ID
+            // InternalDescartesQL.g:12794:1: ( RULE_ID )
+            // InternalDescartesQL.g:12795:1: RULE_ID
             {
              before(grammarAccess.getMetricReferenceAccess().getEntityReferenceIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32919,24 +35090,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__SeperatornAssignment_1_0"
-    // InternalDescartesQL.g:12011:1: rule__MetricReference__SeperatornAssignment_1_0 : ( ( '.' ) ) ;
+    // InternalDescartesQL.g:12804:1: rule__MetricReference__SeperatornAssignment_1_0 : ( ( '.' ) ) ;
     public final void rule__MetricReference__SeperatornAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12015:1: ( ( ( '.' ) ) )
-            // InternalDescartesQL.g:12016:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12808:1: ( ( ( '.' ) ) )
+            // InternalDescartesQL.g:12809:1: ( ( '.' ) )
             {
-            // InternalDescartesQL.g:12016:1: ( ( '.' ) )
-            // InternalDescartesQL.g:12017:1: ( '.' )
+            // InternalDescartesQL.g:12809:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12810:1: ( '.' )
             {
              before(grammarAccess.getMetricReferenceAccess().getSeperatornFullStopKeyword_1_0_0()); 
-            // InternalDescartesQL.g:12018:1: ( '.' )
-            // InternalDescartesQL.g:12019:1: '.'
+            // InternalDescartesQL.g:12811:1: ( '.' )
+            // InternalDescartesQL.g:12812:1: '.'
             {
              before(grammarAccess.getMetricReferenceAccess().getSeperatornFullStopKeyword_1_0_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getMetricReferenceAccess().getSeperatornFullStopKeyword_1_0_0()); 
 
             }
@@ -32964,17 +35135,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__NavigationClauseAssignment_1_1"
-    // InternalDescartesQL.g:12034:1: rule__MetricReference__NavigationClauseAssignment_1_1 : ( ruleNavigationClause ) ;
+    // InternalDescartesQL.g:12827:1: rule__MetricReference__NavigationClauseAssignment_1_1 : ( ruleNavigationClause ) ;
     public final void rule__MetricReference__NavigationClauseAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12038:1: ( ( ruleNavigationClause ) )
-            // InternalDescartesQL.g:12039:1: ( ruleNavigationClause )
+            // InternalDescartesQL.g:12831:1: ( ( ruleNavigationClause ) )
+            // InternalDescartesQL.g:12832:1: ( ruleNavigationClause )
             {
-            // InternalDescartesQL.g:12039:1: ( ruleNavigationClause )
-            // InternalDescartesQL.g:12040:1: ruleNavigationClause
+            // InternalDescartesQL.g:12832:1: ( ruleNavigationClause )
+            // InternalDescartesQL.g:12833:1: ruleNavigationClause
             {
              before(grammarAccess.getMetricReferenceAccess().getNavigationClauseNavigationClauseParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33005,24 +35176,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__SeparatorAssignment_2"
-    // InternalDescartesQL.g:12049:1: rule__MetricReference__SeparatorAssignment_2 : ( ( '.' ) ) ;
+    // InternalDescartesQL.g:12842:1: rule__MetricReference__SeparatorAssignment_2 : ( ( '.' ) ) ;
     public final void rule__MetricReference__SeparatorAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12053:1: ( ( ( '.' ) ) )
-            // InternalDescartesQL.g:12054:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12846:1: ( ( ( '.' ) ) )
+            // InternalDescartesQL.g:12847:1: ( ( '.' ) )
             {
-            // InternalDescartesQL.g:12054:1: ( ( '.' ) )
-            // InternalDescartesQL.g:12055:1: ( '.' )
+            // InternalDescartesQL.g:12847:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12848:1: ( '.' )
             {
              before(grammarAccess.getMetricReferenceAccess().getSeparatorFullStopKeyword_2_0()); 
-            // InternalDescartesQL.g:12056:1: ( '.' )
-            // InternalDescartesQL.g:12057:1: '.'
+            // InternalDescartesQL.g:12849:1: ( '.' )
+            // InternalDescartesQL.g:12850:1: '.'
             {
              before(grammarAccess.getMetricReferenceAccess().getSeparatorFullStopKeyword_2_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getMetricReferenceAccess().getSeparatorFullStopKeyword_2_0()); 
 
             }
@@ -33050,17 +35221,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__MetricReferenceAssignment_3"
-    // InternalDescartesQL.g:12072:1: rule__MetricReference__MetricReferenceAssignment_3 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12865:1: rule__MetricReference__MetricReferenceAssignment_3 : ( RULE_ID ) ;
     public final void rule__MetricReference__MetricReferenceAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12076:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12077:1: ( RULE_ID )
+            // InternalDescartesQL.g:12869:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12870:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12077:1: ( RULE_ID )
-            // InternalDescartesQL.g:12078:1: RULE_ID
+            // InternalDescartesQL.g:12870:1: ( RULE_ID )
+            // InternalDescartesQL.g:12871:1: RULE_ID
             {
              before(grammarAccess.getMetricReferenceAccess().getMetricReferenceIDTerminalRuleCall_3_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -33087,24 +35258,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__SeparatorvAssignment_4_0"
-    // InternalDescartesQL.g:12087:1: rule__MetricReference__SeparatorvAssignment_4_0 : ( ( '.' ) ) ;
+    // InternalDescartesQL.g:12880:1: rule__MetricReference__SeparatorvAssignment_4_0 : ( ( '.' ) ) ;
     public final void rule__MetricReference__SeparatorvAssignment_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12091:1: ( ( ( '.' ) ) )
-            // InternalDescartesQL.g:12092:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12884:1: ( ( ( '.' ) ) )
+            // InternalDescartesQL.g:12885:1: ( ( '.' ) )
             {
-            // InternalDescartesQL.g:12092:1: ( ( '.' ) )
-            // InternalDescartesQL.g:12093:1: ( '.' )
+            // InternalDescartesQL.g:12885:1: ( ( '.' ) )
+            // InternalDescartesQL.g:12886:1: ( '.' )
             {
              before(grammarAccess.getMetricReferenceAccess().getSeparatorvFullStopKeyword_4_0_0()); 
-            // InternalDescartesQL.g:12094:1: ( '.' )
-            // InternalDescartesQL.g:12095:1: '.'
+            // InternalDescartesQL.g:12887:1: ( '.' )
+            // InternalDescartesQL.g:12888:1: '.'
             {
              before(grammarAccess.getMetricReferenceAccess().getSeparatorvFullStopKeyword_4_0_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getMetricReferenceAccess().getSeparatorvFullStopKeyword_4_0_0()); 
 
             }
@@ -33132,17 +35303,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__MetricReference__StatTypeReferenceAssignment_4_1"
-    // InternalDescartesQL.g:12110:1: rule__MetricReference__StatTypeReferenceAssignment_4_1 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:12903:1: rule__MetricReference__StatTypeReferenceAssignment_4_1 : ( RULE_ID ) ;
     public final void rule__MetricReference__StatTypeReferenceAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12114:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12115:1: ( RULE_ID )
+            // InternalDescartesQL.g:12907:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:12908:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12115:1: ( RULE_ID )
-            // InternalDescartesQL.g:12116:1: RULE_ID
+            // InternalDescartesQL.g:12908:1: ( RULE_ID )
+            // InternalDescartesQL.g:12909:1: RULE_ID
             {
              before(grammarAccess.getMetricReferenceAccess().getStatTypeReferenceIDTerminalRuleCall_4_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -33169,24 +35340,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ChildrenClause__ContentAssignment"
-    // InternalDescartesQL.g:12125:1: rule__ChildrenClause__ContentAssignment : ( ( 'children' ) ) ;
+    // InternalDescartesQL.g:12918:1: rule__ChildrenClause__ContentAssignment : ( ( 'children' ) ) ;
     public final void rule__ChildrenClause__ContentAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12129:1: ( ( ( 'children' ) ) )
-            // InternalDescartesQL.g:12130:1: ( ( 'children' ) )
+            // InternalDescartesQL.g:12922:1: ( ( ( 'children' ) ) )
+            // InternalDescartesQL.g:12923:1: ( ( 'children' ) )
             {
-            // InternalDescartesQL.g:12130:1: ( ( 'children' ) )
-            // InternalDescartesQL.g:12131:1: ( 'children' )
+            // InternalDescartesQL.g:12923:1: ( ( 'children' ) )
+            // InternalDescartesQL.g:12924:1: ( 'children' )
             {
              before(grammarAccess.getChildrenClauseAccess().getContentChildrenKeyword_0()); 
-            // InternalDescartesQL.g:12132:1: ( 'children' )
-            // InternalDescartesQL.g:12133:1: 'children'
+            // InternalDescartesQL.g:12925:1: ( 'children' )
+            // InternalDescartesQL.g:12926:1: 'children'
             {
              before(grammarAccess.getChildrenClauseAccess().getContentChildrenKeyword_0()); 
-            match(input,90,FOLLOW_2); 
+            match(input,94,FOLLOW_2); 
              after(grammarAccess.getChildrenClauseAccess().getContentChildrenKeyword_0()); 
 
             }
@@ -33214,24 +35385,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ParentClause__ContentAssignment"
-    // InternalDescartesQL.g:12148:1: rule__ParentClause__ContentAssignment : ( ( 'parent' ) ) ;
+    // InternalDescartesQL.g:12941:1: rule__ParentClause__ContentAssignment : ( ( 'parent' ) ) ;
     public final void rule__ParentClause__ContentAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12152:1: ( ( ( 'parent' ) ) )
-            // InternalDescartesQL.g:12153:1: ( ( 'parent' ) )
+            // InternalDescartesQL.g:12945:1: ( ( ( 'parent' ) ) )
+            // InternalDescartesQL.g:12946:1: ( ( 'parent' ) )
             {
-            // InternalDescartesQL.g:12153:1: ( ( 'parent' ) )
-            // InternalDescartesQL.g:12154:1: ( 'parent' )
+            // InternalDescartesQL.g:12946:1: ( ( 'parent' ) )
+            // InternalDescartesQL.g:12947:1: ( 'parent' )
             {
              before(grammarAccess.getParentClauseAccess().getContentParentKeyword_0()); 
-            // InternalDescartesQL.g:12155:1: ( 'parent' )
-            // InternalDescartesQL.g:12156:1: 'parent'
+            // InternalDescartesQL.g:12948:1: ( 'parent' )
+            // InternalDescartesQL.g:12949:1: 'parent'
             {
              before(grammarAccess.getParentClauseAccess().getContentParentKeyword_0()); 
-            match(input,91,FOLLOW_2); 
+            match(input,95,FOLLOW_2); 
              after(grammarAccess.getParentClauseAccess().getContentParentKeyword_0()); 
 
             }
@@ -33259,24 +35430,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FindClause__StartAssignment_0"
-    // InternalDescartesQL.g:12171:1: rule__FindClause__StartAssignment_0 : ( ( 'find(' ) ) ;
+    // InternalDescartesQL.g:12964:1: rule__FindClause__StartAssignment_0 : ( ( 'find(' ) ) ;
     public final void rule__FindClause__StartAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12175:1: ( ( ( 'find(' ) ) )
-            // InternalDescartesQL.g:12176:1: ( ( 'find(' ) )
+            // InternalDescartesQL.g:12968:1: ( ( ( 'find(' ) ) )
+            // InternalDescartesQL.g:12969:1: ( ( 'find(' ) )
             {
-            // InternalDescartesQL.g:12176:1: ( ( 'find(' ) )
-            // InternalDescartesQL.g:12177:1: ( 'find(' )
+            // InternalDescartesQL.g:12969:1: ( ( 'find(' ) )
+            // InternalDescartesQL.g:12970:1: ( 'find(' )
             {
              before(grammarAccess.getFindClauseAccess().getStartFindKeyword_0_0()); 
-            // InternalDescartesQL.g:12178:1: ( 'find(' )
-            // InternalDescartesQL.g:12179:1: 'find('
+            // InternalDescartesQL.g:12971:1: ( 'find(' )
+            // InternalDescartesQL.g:12972:1: 'find('
             {
              before(grammarAccess.getFindClauseAccess().getStartFindKeyword_0_0()); 
-            match(input,92,FOLLOW_2); 
+            match(input,96,FOLLOW_2); 
              after(grammarAccess.getFindClauseAccess().getStartFindKeyword_0_0()); 
 
             }
@@ -33304,17 +35475,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FindClause__ChildNameAssignment_1"
-    // InternalDescartesQL.g:12194:1: rule__FindClause__ChildNameAssignment_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:12987:1: rule__FindClause__ChildNameAssignment_1 : ( RULE_STRING ) ;
     public final void rule__FindClause__ChildNameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12198:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12199:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12991:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:12992:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12199:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12200:1: RULE_STRING
+            // InternalDescartesQL.g:12992:1: ( RULE_STRING )
+            // InternalDescartesQL.g:12993:1: RULE_STRING
             {
              before(grammarAccess.getFindClauseAccess().getChildNameSTRINGTerminalRuleCall_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -33341,24 +35512,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FindClause__EndAssignment_2"
-    // InternalDescartesQL.g:12209:1: rule__FindClause__EndAssignment_2 : ( ( ')' ) ) ;
+    // InternalDescartesQL.g:13002:1: rule__FindClause__EndAssignment_2 : ( ( ')' ) ) ;
     public final void rule__FindClause__EndAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12213:1: ( ( ( ')' ) ) )
-            // InternalDescartesQL.g:12214:1: ( ( ')' ) )
+            // InternalDescartesQL.g:13006:1: ( ( ( ')' ) ) )
+            // InternalDescartesQL.g:13007:1: ( ( ')' ) )
             {
-            // InternalDescartesQL.g:12214:1: ( ( ')' ) )
-            // InternalDescartesQL.g:12215:1: ( ')' )
+            // InternalDescartesQL.g:13007:1: ( ( ')' ) )
+            // InternalDescartesQL.g:13008:1: ( ')' )
             {
              before(grammarAccess.getFindClauseAccess().getEndRightParenthesisKeyword_2_0()); 
-            // InternalDescartesQL.g:12216:1: ( ')' )
-            // InternalDescartesQL.g:12217:1: ')'
+            // InternalDescartesQL.g:13009:1: ( ')' )
+            // InternalDescartesQL.g:13010:1: ')'
             {
              before(grammarAccess.getFindClauseAccess().getEndRightParenthesisKeyword_2_0()); 
-            match(input,56,FOLLOW_2); 
+            match(input,60,FOLLOW_2); 
              after(grammarAccess.getFindClauseAccess().getEndRightParenthesisKeyword_2_0()); 
 
             }
@@ -33386,24 +35557,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ForClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12232:1: rule__ForClause__ModeAssignment_0 : ( ( 'FOR' ) ) ;
+    // InternalDescartesQL.g:13025:1: rule__ForClause__ModeAssignment_0 : ( ( 'FOR' ) ) ;
     public final void rule__ForClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12236:1: ( ( ( 'FOR' ) ) )
-            // InternalDescartesQL.g:12237:1: ( ( 'FOR' ) )
+            // InternalDescartesQL.g:13029:1: ( ( ( 'FOR' ) ) )
+            // InternalDescartesQL.g:13030:1: ( ( 'FOR' ) )
             {
-            // InternalDescartesQL.g:12237:1: ( ( 'FOR' ) )
-            // InternalDescartesQL.g:12238:1: ( 'FOR' )
+            // InternalDescartesQL.g:13030:1: ( ( 'FOR' ) )
+            // InternalDescartesQL.g:13031:1: ( 'FOR' )
             {
              before(grammarAccess.getForClauseAccess().getModeFORKeyword_0_0()); 
-            // InternalDescartesQL.g:12239:1: ( 'FOR' )
-            // InternalDescartesQL.g:12240:1: 'FOR'
+            // InternalDescartesQL.g:13032:1: ( 'FOR' )
+            // InternalDescartesQL.g:13033:1: 'FOR'
             {
              before(grammarAccess.getForClauseAccess().getModeFORKeyword_0_0()); 
-            match(input,93,FOLLOW_2); 
+            match(input,97,FOLLOW_2); 
              after(grammarAccess.getForClauseAccess().getModeFORKeyword_0_0()); 
 
             }
@@ -33431,17 +35602,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ForClause__EntityReferenceClauseAssignment_1"
-    // InternalDescartesQL.g:12255:1: rule__ForClause__EntityReferenceClauseAssignment_1 : ( ruleEntityReferenceClause ) ;
+    // InternalDescartesQL.g:13048:1: rule__ForClause__EntityReferenceClauseAssignment_1 : ( ruleEntityReferenceClause ) ;
     public final void rule__ForClause__EntityReferenceClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12259:1: ( ( ruleEntityReferenceClause ) )
-            // InternalDescartesQL.g:12260:1: ( ruleEntityReferenceClause )
+            // InternalDescartesQL.g:13052:1: ( ( ruleEntityReferenceClause ) )
+            // InternalDescartesQL.g:13053:1: ( ruleEntityReferenceClause )
             {
-            // InternalDescartesQL.g:12260:1: ( ruleEntityReferenceClause )
-            // InternalDescartesQL.g:12261:1: ruleEntityReferenceClause
+            // InternalDescartesQL.g:13053:1: ( ruleEntityReferenceClause )
+            // InternalDescartesQL.g:13054:1: ruleEntityReferenceClause
             {
              before(grammarAccess.getForClauseAccess().getEntityReferenceClauseEntityReferenceClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33472,17 +35643,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__EntityReferenceClause__EntityReferencesAssignment_0"
-    // InternalDescartesQL.g:12270:1: rule__EntityReferenceClause__EntityReferencesAssignment_0 : ( ruleEntityReference ) ;
+    // InternalDescartesQL.g:13063:1: rule__EntityReferenceClause__EntityReferencesAssignment_0 : ( ruleEntityReference ) ;
     public final void rule__EntityReferenceClause__EntityReferencesAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12274:1: ( ( ruleEntityReference ) )
-            // InternalDescartesQL.g:12275:1: ( ruleEntityReference )
+            // InternalDescartesQL.g:13067:1: ( ( ruleEntityReference ) )
+            // InternalDescartesQL.g:13068:1: ( ruleEntityReference )
             {
-            // InternalDescartesQL.g:12275:1: ( ruleEntityReference )
-            // InternalDescartesQL.g:12276:1: ruleEntityReference
+            // InternalDescartesQL.g:13068:1: ( ruleEntityReference )
+            // InternalDescartesQL.g:13069:1: ruleEntityReference
             {
              before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesEntityReferenceParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -33513,17 +35684,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__EntityReferenceClause__EntityReferencesAssignment_1_1"
-    // InternalDescartesQL.g:12285:1: rule__EntityReferenceClause__EntityReferencesAssignment_1_1 : ( ruleEntityReference ) ;
+    // InternalDescartesQL.g:13078:1: rule__EntityReferenceClause__EntityReferencesAssignment_1_1 : ( ruleEntityReference ) ;
     public final void rule__EntityReferenceClause__EntityReferencesAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12289:1: ( ( ruleEntityReference ) )
-            // InternalDescartesQL.g:12290:1: ( ruleEntityReference )
+            // InternalDescartesQL.g:13082:1: ( ( ruleEntityReference ) )
+            // InternalDescartesQL.g:13083:1: ( ruleEntityReference )
             {
-            // InternalDescartesQL.g:12290:1: ( ruleEntityReference )
-            // InternalDescartesQL.g:12291:1: ruleEntityReference
+            // InternalDescartesQL.g:13083:1: ( ruleEntityReference )
+            // InternalDescartesQL.g:13084:1: ruleEntityReference
             {
              before(grammarAccess.getEntityReferenceClauseAccess().getEntityReferencesEntityReferenceParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33554,17 +35725,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__EntityReference__TypeAssignment_0"
-    // InternalDescartesQL.g:12300:1: rule__EntityReference__TypeAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:13093:1: rule__EntityReference__TypeAssignment_0 : ( RULE_ID ) ;
     public final void rule__EntityReference__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12304:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12305:1: ( RULE_ID )
+            // InternalDescartesQL.g:13097:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:13098:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12305:1: ( RULE_ID )
-            // InternalDescartesQL.g:12306:1: RULE_ID
+            // InternalDescartesQL.g:13098:1: ( RULE_ID )
+            // InternalDescartesQL.g:13099:1: RULE_ID
             {
              before(grammarAccess.getEntityReferenceAccess().getTypeIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -33591,17 +35762,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__EntityReference__IdentifierAssignment_1"
-    // InternalDescartesQL.g:12315:1: rule__EntityReference__IdentifierAssignment_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13108:1: rule__EntityReference__IdentifierAssignment_1 : ( RULE_STRING ) ;
     public final void rule__EntityReference__IdentifierAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12319:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12320:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13112:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13113:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12320:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12321:1: RULE_STRING
+            // InternalDescartesQL.g:13113:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13114:1: RULE_STRING
             {
              before(grammarAccess.getEntityReferenceAccess().getIdentifierSTRINGTerminalRuleCall_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -33628,17 +35799,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__EntityReference__AliasAssignment_2"
-    // InternalDescartesQL.g:12330:1: rule__EntityReference__AliasAssignment_2 : ( ruleAliasClause ) ;
+    // InternalDescartesQL.g:13123:1: rule__EntityReference__AliasAssignment_2 : ( ruleAliasClause ) ;
     public final void rule__EntityReference__AliasAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12334:1: ( ( ruleAliasClause ) )
-            // InternalDescartesQL.g:12335:1: ( ruleAliasClause )
+            // InternalDescartesQL.g:13127:1: ( ( ruleAliasClause ) )
+            // InternalDescartesQL.g:13128:1: ( ruleAliasClause )
             {
-            // InternalDescartesQL.g:12335:1: ( ruleAliasClause )
-            // InternalDescartesQL.g:12336:1: ruleAliasClause
+            // InternalDescartesQL.g:13128:1: ( ruleAliasClause )
+            // InternalDescartesQL.g:13129:1: ruleAliasClause
             {
              before(grammarAccess.getEntityReferenceAccess().getAliasAliasClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33669,24 +35840,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AliasClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12345:1: rule__AliasClause__ModeAssignment_0 : ( ( 'AS' ) ) ;
+    // InternalDescartesQL.g:13138:1: rule__AliasClause__ModeAssignment_0 : ( ( 'AS' ) ) ;
     public final void rule__AliasClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12349:1: ( ( ( 'AS' ) ) )
-            // InternalDescartesQL.g:12350:1: ( ( 'AS' ) )
+            // InternalDescartesQL.g:13142:1: ( ( ( 'AS' ) ) )
+            // InternalDescartesQL.g:13143:1: ( ( 'AS' ) )
             {
-            // InternalDescartesQL.g:12350:1: ( ( 'AS' ) )
-            // InternalDescartesQL.g:12351:1: ( 'AS' )
+            // InternalDescartesQL.g:13143:1: ( ( 'AS' ) )
+            // InternalDescartesQL.g:13144:1: ( 'AS' )
             {
              before(grammarAccess.getAliasClauseAccess().getModeASKeyword_0_0()); 
-            // InternalDescartesQL.g:12352:1: ( 'AS' )
-            // InternalDescartesQL.g:12353:1: 'AS'
+            // InternalDescartesQL.g:13145:1: ( 'AS' )
+            // InternalDescartesQL.g:13146:1: 'AS'
             {
              before(grammarAccess.getAliasClauseAccess().getModeASKeyword_0_0()); 
-            match(input,94,FOLLOW_2); 
+            match(input,98,FOLLOW_2); 
              after(grammarAccess.getAliasClauseAccess().getModeASKeyword_0_0()); 
 
             }
@@ -33714,17 +35885,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AliasClause__AliasAssignment_1"
-    // InternalDescartesQL.g:12368:1: rule__AliasClause__AliasAssignment_1 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:13161:1: rule__AliasClause__AliasAssignment_1 : ( RULE_ID ) ;
     public final void rule__AliasClause__AliasAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12372:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12373:1: ( RULE_ID )
+            // InternalDescartesQL.g:13165:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:13166:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12373:1: ( RULE_ID )
-            // InternalDescartesQL.g:12374:1: RULE_ID
+            // InternalDescartesQL.g:13166:1: ( RULE_ID )
+            // InternalDescartesQL.g:13167:1: RULE_ID
             {
              before(grammarAccess.getAliasClauseAccess().getAliasIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -33751,24 +35922,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__UsingClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12383:1: rule__UsingClause__ModeAssignment_0 : ( ( 'USING' ) ) ;
+    // InternalDescartesQL.g:13176:1: rule__UsingClause__ModeAssignment_0 : ( ( 'USING' ) ) ;
     public final void rule__UsingClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12387:1: ( ( ( 'USING' ) ) )
-            // InternalDescartesQL.g:12388:1: ( ( 'USING' ) )
+            // InternalDescartesQL.g:13180:1: ( ( ( 'USING' ) ) )
+            // InternalDescartesQL.g:13181:1: ( ( 'USING' ) )
             {
-            // InternalDescartesQL.g:12388:1: ( ( 'USING' ) )
-            // InternalDescartesQL.g:12389:1: ( 'USING' )
+            // InternalDescartesQL.g:13181:1: ( ( 'USING' ) )
+            // InternalDescartesQL.g:13182:1: ( 'USING' )
             {
              before(grammarAccess.getUsingClauseAccess().getModeUSINGKeyword_0_0()); 
-            // InternalDescartesQL.g:12390:1: ( 'USING' )
-            // InternalDescartesQL.g:12391:1: 'USING'
+            // InternalDescartesQL.g:13183:1: ( 'USING' )
+            // InternalDescartesQL.g:13184:1: 'USING'
             {
              before(grammarAccess.getUsingClauseAccess().getModeUSINGKeyword_0_0()); 
-            match(input,95,FOLLOW_2); 
+            match(input,99,FOLLOW_2); 
              after(grammarAccess.getUsingClauseAccess().getModeUSINGKeyword_0_0()); 
 
             }
@@ -33796,17 +35967,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__UsingClause__ModelReferenceAssignment_1"
-    // InternalDescartesQL.g:12406:1: rule__UsingClause__ModelReferenceAssignment_1 : ( ruleModelReferenceClause ) ;
+    // InternalDescartesQL.g:13199:1: rule__UsingClause__ModelReferenceAssignment_1 : ( ruleModelReferenceClause ) ;
     public final void rule__UsingClause__ModelReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12410:1: ( ( ruleModelReferenceClause ) )
-            // InternalDescartesQL.g:12411:1: ( ruleModelReferenceClause )
+            // InternalDescartesQL.g:13203:1: ( ( ruleModelReferenceClause ) )
+            // InternalDescartesQL.g:13204:1: ( ruleModelReferenceClause )
             {
-            // InternalDescartesQL.g:12411:1: ( ruleModelReferenceClause )
-            // InternalDescartesQL.g:12412:1: ruleModelReferenceClause
+            // InternalDescartesQL.g:13204:1: ( ruleModelReferenceClause )
+            // InternalDescartesQL.g:13205:1: ruleModelReferenceClause
             {
              before(grammarAccess.getUsingClauseAccess().getModelReferenceModelReferenceClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33837,24 +36008,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WithClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12421:1: rule__WithClause__ModeAssignment_0 : ( ( 'WITH' ) ) ;
+    // InternalDescartesQL.g:13214:1: rule__WithClause__ModeAssignment_0 : ( ( 'WITH' ) ) ;
     public final void rule__WithClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12425:1: ( ( ( 'WITH' ) ) )
-            // InternalDescartesQL.g:12426:1: ( ( 'WITH' ) )
+            // InternalDescartesQL.g:13218:1: ( ( ( 'WITH' ) ) )
+            // InternalDescartesQL.g:13219:1: ( ( 'WITH' ) )
             {
-            // InternalDescartesQL.g:12426:1: ( ( 'WITH' ) )
-            // InternalDescartesQL.g:12427:1: ( 'WITH' )
+            // InternalDescartesQL.g:13219:1: ( ( 'WITH' ) )
+            // InternalDescartesQL.g:13220:1: ( 'WITH' )
             {
              before(grammarAccess.getWithClauseAccess().getModeWITHKeyword_0_0()); 
-            // InternalDescartesQL.g:12428:1: ( 'WITH' )
-            // InternalDescartesQL.g:12429:1: 'WITH'
+            // InternalDescartesQL.g:13221:1: ( 'WITH' )
+            // InternalDescartesQL.g:13222:1: 'WITH'
             {
              before(grammarAccess.getWithClauseAccess().getModeWITHKeyword_0_0()); 
-            match(input,96,FOLLOW_2); 
+            match(input,100,FOLLOW_2); 
              after(grammarAccess.getWithClauseAccess().getModeWITHKeyword_0_0()); 
 
             }
@@ -33882,17 +36053,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WithClause__ModelReferenceAssignment_1"
-    // InternalDescartesQL.g:12444:1: rule__WithClause__ModelReferenceAssignment_1 : ( ruleModelReferenceClause ) ;
+    // InternalDescartesQL.g:13237:1: rule__WithClause__ModelReferenceAssignment_1 : ( ruleModelReferenceClause ) ;
     public final void rule__WithClause__ModelReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12448:1: ( ( ruleModelReferenceClause ) )
-            // InternalDescartesQL.g:12449:1: ( ruleModelReferenceClause )
+            // InternalDescartesQL.g:13241:1: ( ( ruleModelReferenceClause ) )
+            // InternalDescartesQL.g:13242:1: ( ruleModelReferenceClause )
             {
-            // InternalDescartesQL.g:12449:1: ( ruleModelReferenceClause )
-            // InternalDescartesQL.g:12450:1: ruleModelReferenceClause
+            // InternalDescartesQL.g:13242:1: ( ruleModelReferenceClause )
+            // InternalDescartesQL.g:13243:1: ruleModelReferenceClause
             {
              before(grammarAccess.getWithClauseAccess().getModelReferenceModelReferenceClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33923,17 +36094,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ModelReferenceClause__FamilyAssignment_0"
-    // InternalDescartesQL.g:12459:1: rule__ModelReferenceClause__FamilyAssignment_0 : ( ruleModelFamily ) ;
+    // InternalDescartesQL.g:13252:1: rule__ModelReferenceClause__FamilyAssignment_0 : ( ruleModelFamily ) ;
     public final void rule__ModelReferenceClause__FamilyAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12463:1: ( ( ruleModelFamily ) )
-            // InternalDescartesQL.g:12464:1: ( ruleModelFamily )
+            // InternalDescartesQL.g:13256:1: ( ( ruleModelFamily ) )
+            // InternalDescartesQL.g:13257:1: ( ruleModelFamily )
             {
-            // InternalDescartesQL.g:12464:1: ( ruleModelFamily )
-            // InternalDescartesQL.g:12465:1: ruleModelFamily
+            // InternalDescartesQL.g:13257:1: ( ruleModelFamily )
+            // InternalDescartesQL.g:13258:1: ruleModelFamily
             {
              before(grammarAccess.getModelReferenceClauseAccess().getFamilyModelFamilyParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -33964,17 +36135,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ModelReferenceClause__ModelAssignment_2"
-    // InternalDescartesQL.g:12474:1: rule__ModelReferenceClause__ModelAssignment_2 : ( ruleModelLocation ) ;
+    // InternalDescartesQL.g:13267:1: rule__ModelReferenceClause__ModelAssignment_2 : ( ruleModelLocation ) ;
     public final void rule__ModelReferenceClause__ModelAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12478:1: ( ( ruleModelLocation ) )
-            // InternalDescartesQL.g:12479:1: ( ruleModelLocation )
+            // InternalDescartesQL.g:13271:1: ( ( ruleModelLocation ) )
+            // InternalDescartesQL.g:13272:1: ( ruleModelLocation )
             {
-            // InternalDescartesQL.g:12479:1: ( ruleModelLocation )
-            // InternalDescartesQL.g:12480:1: ruleModelLocation
+            // InternalDescartesQL.g:13272:1: ( ruleModelLocation )
+            // InternalDescartesQL.g:13273:1: ruleModelLocation
             {
              before(grammarAccess.getModelReferenceClauseAccess().getModelModelLocationParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34005,17 +36176,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ModelFamily__FamilyAssignment"
-    // InternalDescartesQL.g:12489:1: rule__ModelFamily__FamilyAssignment : ( RULE_ID ) ;
+    // InternalDescartesQL.g:13282:1: rule__ModelFamily__FamilyAssignment : ( RULE_ID ) ;
     public final void rule__ModelFamily__FamilyAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12493:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12494:1: ( RULE_ID )
+            // InternalDescartesQL.g:13286:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:13287:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12494:1: ( RULE_ID )
-            // InternalDescartesQL.g:12495:1: RULE_ID
+            // InternalDescartesQL.g:13287:1: ( RULE_ID )
+            // InternalDescartesQL.g:13288:1: RULE_ID
             {
              before(grammarAccess.getModelFamilyAccess().getFamilyIDTerminalRuleCall_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -34042,17 +36213,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ModelLocation__LocationAssignment"
-    // InternalDescartesQL.g:12504:1: rule__ModelLocation__LocationAssignment : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13297:1: rule__ModelLocation__LocationAssignment : ( RULE_STRING ) ;
     public final void rule__ModelLocation__LocationAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12508:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12509:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13301:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13302:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12509:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12510:1: RULE_STRING
+            // InternalDescartesQL.g:13302:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13303:1: RULE_STRING
             {
              before(grammarAccess.getModelLocationAccess().getLocationSTRINGTerminalRuleCall_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -34079,24 +36250,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12519:1: rule__FilterClause__ModeAssignment_0 : ( ( 'FILTERED BY' ) ) ;
+    // InternalDescartesQL.g:13312:1: rule__FilterClause__ModeAssignment_0 : ( ( 'FILTERED BY' ) ) ;
     public final void rule__FilterClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12523:1: ( ( ( 'FILTERED BY' ) ) )
-            // InternalDescartesQL.g:12524:1: ( ( 'FILTERED BY' ) )
+            // InternalDescartesQL.g:13316:1: ( ( ( 'FILTERED BY' ) ) )
+            // InternalDescartesQL.g:13317:1: ( ( 'FILTERED BY' ) )
             {
-            // InternalDescartesQL.g:12524:1: ( ( 'FILTERED BY' ) )
-            // InternalDescartesQL.g:12525:1: ( 'FILTERED BY' )
+            // InternalDescartesQL.g:13317:1: ( ( 'FILTERED BY' ) )
+            // InternalDescartesQL.g:13318:1: ( 'FILTERED BY' )
             {
              before(grammarAccess.getFilterClauseAccess().getModeFILTEREDBYKeyword_0_0()); 
-            // InternalDescartesQL.g:12526:1: ( 'FILTERED BY' )
-            // InternalDescartesQL.g:12527:1: 'FILTERED BY'
+            // InternalDescartesQL.g:13319:1: ( 'FILTERED BY' )
+            // InternalDescartesQL.g:13320:1: 'FILTERED BY'
             {
              before(grammarAccess.getFilterClauseAccess().getModeFILTEREDBYKeyword_0_0()); 
-            match(input,97,FOLLOW_2); 
+            match(input,101,FOLLOW_2); 
              after(grammarAccess.getFilterClauseAccess().getModeFILTEREDBYKeyword_0_0()); 
 
             }
@@ -34124,17 +36295,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterClause__FilterConditionsAssignment_1"
-    // InternalDescartesQL.g:12542:1: rule__FilterClause__FilterConditionsAssignment_1 : ( ruleFilterConditionClause ) ;
+    // InternalDescartesQL.g:13335:1: rule__FilterClause__FilterConditionsAssignment_1 : ( ruleFilterConditionClause ) ;
     public final void rule__FilterClause__FilterConditionsAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12546:1: ( ( ruleFilterConditionClause ) )
-            // InternalDescartesQL.g:12547:1: ( ruleFilterConditionClause )
+            // InternalDescartesQL.g:13339:1: ( ( ruleFilterConditionClause ) )
+            // InternalDescartesQL.g:13340:1: ( ruleFilterConditionClause )
             {
-            // InternalDescartesQL.g:12547:1: ( ruleFilterConditionClause )
-            // InternalDescartesQL.g:12548:1: ruleFilterConditionClause
+            // InternalDescartesQL.g:13340:1: ( ruleFilterConditionClause )
+            // InternalDescartesQL.g:13341:1: ruleFilterConditionClause
             {
              before(grammarAccess.getFilterClauseAccess().getFilterConditionsFilterConditionClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34165,17 +36336,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterClause__FilterConjunctionsAssignment_2_0"
-    // InternalDescartesQL.g:12557:1: rule__FilterClause__FilterConjunctionsAssignment_2_0 : ( ruleFilterConjunction ) ;
+    // InternalDescartesQL.g:13350:1: rule__FilterClause__FilterConjunctionsAssignment_2_0 : ( ruleFilterConjunction ) ;
     public final void rule__FilterClause__FilterConjunctionsAssignment_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12561:1: ( ( ruleFilterConjunction ) )
-            // InternalDescartesQL.g:12562:1: ( ruleFilterConjunction )
+            // InternalDescartesQL.g:13354:1: ( ( ruleFilterConjunction ) )
+            // InternalDescartesQL.g:13355:1: ( ruleFilterConjunction )
             {
-            // InternalDescartesQL.g:12562:1: ( ruleFilterConjunction )
-            // InternalDescartesQL.g:12563:1: ruleFilterConjunction
+            // InternalDescartesQL.g:13355:1: ( ruleFilterConjunction )
+            // InternalDescartesQL.g:13356:1: ruleFilterConjunction
             {
              before(grammarAccess.getFilterClauseAccess().getFilterConjunctionsFilterConjunctionEnumRuleCall_2_0_0()); 
             pushFollow(FOLLOW_2);
@@ -34206,17 +36377,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterClause__FilterConditionsAssignment_2_1"
-    // InternalDescartesQL.g:12572:1: rule__FilterClause__FilterConditionsAssignment_2_1 : ( ruleFilterConditionClause ) ;
+    // InternalDescartesQL.g:13365:1: rule__FilterClause__FilterConditionsAssignment_2_1 : ( ruleFilterConditionClause ) ;
     public final void rule__FilterClause__FilterConditionsAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12576:1: ( ( ruleFilterConditionClause ) )
-            // InternalDescartesQL.g:12577:1: ( ruleFilterConditionClause )
+            // InternalDescartesQL.g:13369:1: ( ( ruleFilterConditionClause ) )
+            // InternalDescartesQL.g:13370:1: ( ruleFilterConditionClause )
             {
-            // InternalDescartesQL.g:12577:1: ( ruleFilterConditionClause )
-            // InternalDescartesQL.g:12578:1: ruleFilterConditionClause
+            // InternalDescartesQL.g:13370:1: ( ruleFilterConditionClause )
+            // InternalDescartesQL.g:13371:1: ruleFilterConditionClause
             {
              before(grammarAccess.getFilterClauseAccess().getFilterConditionsFilterConditionClauseParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34247,24 +36418,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConditionClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12587:1: rule__FilterConditionClause__ModeAssignment_0 : ( ( 'CONDITION' ) ) ;
+    // InternalDescartesQL.g:13380:1: rule__FilterConditionClause__ModeAssignment_0 : ( ( 'CONDITION' ) ) ;
     public final void rule__FilterConditionClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12591:1: ( ( ( 'CONDITION' ) ) )
-            // InternalDescartesQL.g:12592:1: ( ( 'CONDITION' ) )
+            // InternalDescartesQL.g:13384:1: ( ( ( 'CONDITION' ) ) )
+            // InternalDescartesQL.g:13385:1: ( ( 'CONDITION' ) )
             {
-            // InternalDescartesQL.g:12592:1: ( ( 'CONDITION' ) )
-            // InternalDescartesQL.g:12593:1: ( 'CONDITION' )
+            // InternalDescartesQL.g:13385:1: ( ( 'CONDITION' ) )
+            // InternalDescartesQL.g:13386:1: ( 'CONDITION' )
             {
              before(grammarAccess.getFilterConditionClauseAccess().getModeCONDITIONKeyword_0_0()); 
-            // InternalDescartesQL.g:12594:1: ( 'CONDITION' )
-            // InternalDescartesQL.g:12595:1: 'CONDITION'
+            // InternalDescartesQL.g:13387:1: ( 'CONDITION' )
+            // InternalDescartesQL.g:13388:1: 'CONDITION'
             {
              before(grammarAccess.getFilterConditionClauseAccess().getModeCONDITIONKeyword_0_0()); 
-            match(input,98,FOLLOW_2); 
+            match(input,102,FOLLOW_2); 
              after(grammarAccess.getFilterConditionClauseAccess().getModeCONDITIONKeyword_0_0()); 
 
             }
@@ -34292,17 +36463,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConditionClause__ConditionAssignment_2"
-    // InternalDescartesQL.g:12610:1: rule__FilterConditionClause__ConditionAssignment_2 : ( ruleFilterConditionType ) ;
+    // InternalDescartesQL.g:13403:1: rule__FilterConditionClause__ConditionAssignment_2 : ( ruleFilterConditionType ) ;
     public final void rule__FilterConditionClause__ConditionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12614:1: ( ( ruleFilterConditionType ) )
-            // InternalDescartesQL.g:12615:1: ( ruleFilterConditionType )
+            // InternalDescartesQL.g:13407:1: ( ( ruleFilterConditionType ) )
+            // InternalDescartesQL.g:13408:1: ( ruleFilterConditionType )
             {
-            // InternalDescartesQL.g:12615:1: ( ruleFilterConditionType )
-            // InternalDescartesQL.g:12616:1: ruleFilterConditionType
+            // InternalDescartesQL.g:13408:1: ( ruleFilterConditionType )
+            // InternalDescartesQL.g:13409:1: ruleFilterConditionType
             {
              before(grammarAccess.getFilterConditionClauseAccess().getConditionFilterConditionTypeEnumRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34333,17 +36504,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConditionClause__ValueAssignment_4"
-    // InternalDescartesQL.g:12625:1: rule__FilterConditionClause__ValueAssignment_4 : ( ruleFilterConditionValue ) ;
+    // InternalDescartesQL.g:13418:1: rule__FilterConditionClause__ValueAssignment_4 : ( ruleFilterConditionValue ) ;
     public final void rule__FilterConditionClause__ValueAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12629:1: ( ( ruleFilterConditionValue ) )
-            // InternalDescartesQL.g:12630:1: ( ruleFilterConditionValue )
+            // InternalDescartesQL.g:13422:1: ( ( ruleFilterConditionValue ) )
+            // InternalDescartesQL.g:13423:1: ( ruleFilterConditionValue )
             {
-            // InternalDescartesQL.g:12630:1: ( ruleFilterConditionValue )
-            // InternalDescartesQL.g:12631:1: ruleFilterConditionValue
+            // InternalDescartesQL.g:13423:1: ( ruleFilterConditionValue )
+            // InternalDescartesQL.g:13424:1: ruleFilterConditionValue
             {
              before(grammarAccess.getFilterConditionClauseAccess().getValueFilterConditionValueParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -34374,17 +36545,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilterConditionValue__ValueAssignment"
-    // InternalDescartesQL.g:12640:1: rule__FilterConditionValue__ValueAssignment : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13433:1: rule__FilterConditionValue__ValueAssignment : ( RULE_STRING ) ;
     public final void rule__FilterConditionValue__ValueAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12644:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12645:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13437:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13438:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12645:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12646:1: RULE_STRING
+            // InternalDescartesQL.g:13438:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13439:1: RULE_STRING
             {
              before(grammarAccess.getFilterConditionValueAccess().getValueSTRINGTerminalRuleCall_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -34411,24 +36582,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12655:1: rule__ObserveClause__ModeAssignment_0 : ( ( 'OBSERVE' ) ) ;
+    // InternalDescartesQL.g:13448:1: rule__ObserveClause__ModeAssignment_0 : ( ( 'OBSERVE' ) ) ;
     public final void rule__ObserveClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12659:1: ( ( ( 'OBSERVE' ) ) )
-            // InternalDescartesQL.g:12660:1: ( ( 'OBSERVE' ) )
+            // InternalDescartesQL.g:13452:1: ( ( ( 'OBSERVE' ) ) )
+            // InternalDescartesQL.g:13453:1: ( ( 'OBSERVE' ) )
             {
-            // InternalDescartesQL.g:12660:1: ( ( 'OBSERVE' ) )
-            // InternalDescartesQL.g:12661:1: ( 'OBSERVE' )
+            // InternalDescartesQL.g:13453:1: ( ( 'OBSERVE' ) )
+            // InternalDescartesQL.g:13454:1: ( 'OBSERVE' )
             {
              before(grammarAccess.getObserveClauseAccess().getModeOBSERVEKeyword_0_0()); 
-            // InternalDescartesQL.g:12662:1: ( 'OBSERVE' )
-            // InternalDescartesQL.g:12663:1: 'OBSERVE'
+            // InternalDescartesQL.g:13455:1: ( 'OBSERVE' )
+            // InternalDescartesQL.g:13456:1: 'OBSERVE'
             {
              before(grammarAccess.getObserveClauseAccess().getModeOBSERVEKeyword_0_0()); 
-            match(input,99,FOLLOW_2); 
+            match(input,103,FOLLOW_2); 
              after(grammarAccess.getObserveClauseAccess().getModeOBSERVEKeyword_0_0()); 
 
             }
@@ -34456,17 +36627,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveClause__ObservationAssignment_1"
-    // InternalDescartesQL.g:12678:1: rule__ObserveClause__ObservationAssignment_1 : ( ruleObservationClause ) ;
+    // InternalDescartesQL.g:13471:1: rule__ObserveClause__ObservationAssignment_1 : ( ruleObservationClause ) ;
     public final void rule__ObserveClause__ObservationAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12682:1: ( ( ruleObservationClause ) )
-            // InternalDescartesQL.g:12683:1: ( ruleObservationClause )
+            // InternalDescartesQL.g:13475:1: ( ( ruleObservationClause ) )
+            // InternalDescartesQL.g:13476:1: ( ruleObservationClause )
             {
-            // InternalDescartesQL.g:12683:1: ( ruleObservationClause )
-            // InternalDescartesQL.g:12684:1: ruleObservationClause
+            // InternalDescartesQL.g:13476:1: ( ruleObservationClause )
+            // InternalDescartesQL.g:13477:1: ruleObservationClause
             {
              before(grammarAccess.getObserveClauseAccess().getObservationObservationClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34497,17 +36668,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveClause__SampleClauseAssignment_2"
-    // InternalDescartesQL.g:12693:1: rule__ObserveClause__SampleClauseAssignment_2 : ( ruleSampleClause ) ;
+    // InternalDescartesQL.g:13486:1: rule__ObserveClause__SampleClauseAssignment_2 : ( ruleSampleClause ) ;
     public final void rule__ObserveClause__SampleClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12697:1: ( ( ruleSampleClause ) )
-            // InternalDescartesQL.g:12698:1: ( ruleSampleClause )
+            // InternalDescartesQL.g:13490:1: ( ( ruleSampleClause ) )
+            // InternalDescartesQL.g:13491:1: ( ruleSampleClause )
             {
-            // InternalDescartesQL.g:12698:1: ( ruleSampleClause )
-            // InternalDescartesQL.g:12699:1: ruleSampleClause
+            // InternalDescartesQL.g:13491:1: ( ruleSampleClause )
+            // InternalDescartesQL.g:13492:1: ruleSampleClause
             {
              before(grammarAccess.getObserveClauseAccess().getSampleClauseSampleClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34538,24 +36709,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SampleClause__ModeAssignment_0"
-    // InternalDescartesQL.g:12708:1: rule__SampleClause__ModeAssignment_0 : ( ( 'SAMPLED BY' ) ) ;
+    // InternalDescartesQL.g:13501:1: rule__SampleClause__ModeAssignment_0 : ( ( 'SAMPLED BY' ) ) ;
     public final void rule__SampleClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12712:1: ( ( ( 'SAMPLED BY' ) ) )
-            // InternalDescartesQL.g:12713:1: ( ( 'SAMPLED BY' ) )
+            // InternalDescartesQL.g:13505:1: ( ( ( 'SAMPLED BY' ) ) )
+            // InternalDescartesQL.g:13506:1: ( ( 'SAMPLED BY' ) )
             {
-            // InternalDescartesQL.g:12713:1: ( ( 'SAMPLED BY' ) )
-            // InternalDescartesQL.g:12714:1: ( 'SAMPLED BY' )
+            // InternalDescartesQL.g:13506:1: ( ( 'SAMPLED BY' ) )
+            // InternalDescartesQL.g:13507:1: ( 'SAMPLED BY' )
             {
              before(grammarAccess.getSampleClauseAccess().getModeSAMPLEDBYKeyword_0_0()); 
-            // InternalDescartesQL.g:12715:1: ( 'SAMPLED BY' )
-            // InternalDescartesQL.g:12716:1: 'SAMPLED BY'
+            // InternalDescartesQL.g:13508:1: ( 'SAMPLED BY' )
+            // InternalDescartesQL.g:13509:1: 'SAMPLED BY'
             {
              before(grammarAccess.getSampleClauseAccess().getModeSAMPLEDBYKeyword_0_0()); 
-            match(input,100,FOLLOW_2); 
+            match(input,104,FOLLOW_2); 
              after(grammarAccess.getSampleClauseAccess().getModeSAMPLEDBYKeyword_0_0()); 
 
             }
@@ -34583,17 +36754,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SampleClause__DurationClauseAssignment_1"
-    // InternalDescartesQL.g:12731:1: rule__SampleClause__DurationClauseAssignment_1 : ( ruleRelativeTimeDurationClause ) ;
+    // InternalDescartesQL.g:13524:1: rule__SampleClause__DurationClauseAssignment_1 : ( ruleRelativeTimeDurationClause ) ;
     public final void rule__SampleClause__DurationClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12735:1: ( ( ruleRelativeTimeDurationClause ) )
-            // InternalDescartesQL.g:12736:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13528:1: ( ( ruleRelativeTimeDurationClause ) )
+            // InternalDescartesQL.g:13529:1: ( ruleRelativeTimeDurationClause )
             {
-            // InternalDescartesQL.g:12736:1: ( ruleRelativeTimeDurationClause )
-            // InternalDescartesQL.g:12737:1: ruleRelativeTimeDurationClause
+            // InternalDescartesQL.g:13529:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13530:1: ruleRelativeTimeDurationClause
             {
              before(grammarAccess.getSampleClauseAccess().getDurationClauseRelativeTimeDurationClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34624,17 +36795,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__SampleClause__DurationClauseAssignment_2"
-    // InternalDescartesQL.g:12746:1: rule__SampleClause__DurationClauseAssignment_2 : ( ruleRelativeTimeDurationClause ) ;
+    // InternalDescartesQL.g:13539:1: rule__SampleClause__DurationClauseAssignment_2 : ( ruleRelativeTimeDurationClause ) ;
     public final void rule__SampleClause__DurationClauseAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12750:1: ( ( ruleRelativeTimeDurationClause ) )
-            // InternalDescartesQL.g:12751:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13543:1: ( ( ruleRelativeTimeDurationClause ) )
+            // InternalDescartesQL.g:13544:1: ( ruleRelativeTimeDurationClause )
             {
-            // InternalDescartesQL.g:12751:1: ( ruleRelativeTimeDurationClause )
-            // InternalDescartesQL.g:12752:1: ruleRelativeTimeDurationClause
+            // InternalDescartesQL.g:13544:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13545:1: ruleRelativeTimeDurationClause
             {
              before(grammarAccess.getSampleClauseAccess().getDurationClauseRelativeTimeDurationClauseParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34665,17 +36836,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConnectorTimeUnitClause__CountAssignment_0"
-    // InternalDescartesQL.g:12761:1: rule__ConnectorTimeUnitClause__CountAssignment_0 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:13554:1: rule__ConnectorTimeUnitClause__CountAssignment_0 : ( RULE_INT ) ;
     public final void rule__ConnectorTimeUnitClause__CountAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12765:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:12766:1: ( RULE_INT )
+            // InternalDescartesQL.g:13558:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:13559:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:12766:1: ( RULE_INT )
-            // InternalDescartesQL.g:12767:1: RULE_INT
+            // InternalDescartesQL.g:13559:1: ( RULE_INT )
+            // InternalDescartesQL.g:13560:1: RULE_INT
             {
              before(grammarAccess.getConnectorTimeUnitClauseAccess().getCountINTTerminalRuleCall_0_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -34702,17 +36873,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1"
-    // InternalDescartesQL.g:12776:1: rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:13569:1: rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1 : ( RULE_ID ) ;
     public final void rule__ConnectorTimeUnitClause__TimeIndicatorAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12780:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12781:1: ( RULE_ID )
+            // InternalDescartesQL.g:13573:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:13574:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12781:1: ( RULE_ID )
-            // InternalDescartesQL.g:12782:1: RULE_ID
+            // InternalDescartesQL.g:13574:1: ( RULE_ID )
+            // InternalDescartesQL.g:13575:1: RULE_ID
             {
              before(grammarAccess.getConnectorTimeUnitClauseAccess().getTimeIndicatorIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -34739,17 +36910,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConnectorInstanceReferenceClause__TypeAssignment_0"
-    // InternalDescartesQL.g:12791:1: rule__ConnectorInstanceReferenceClause__TypeAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:13584:1: rule__ConnectorInstanceReferenceClause__TypeAssignment_0 : ( RULE_ID ) ;
     public final void rule__ConnectorInstanceReferenceClause__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12795:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:12796:1: ( RULE_ID )
+            // InternalDescartesQL.g:13588:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:13589:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:12796:1: ( RULE_ID )
-            // InternalDescartesQL.g:12797:1: RULE_ID
+            // InternalDescartesQL.g:13589:1: ( RULE_ID )
+            // InternalDescartesQL.g:13590:1: RULE_ID
             {
              before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getTypeIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -34776,17 +36947,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1"
-    // InternalDescartesQL.g:12806:1: rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13599:1: rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1 : ( RULE_STRING ) ;
     public final void rule__ConnectorInstanceReferenceClause__IdentifierAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12810:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12811:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13603:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13604:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12811:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12812:1: RULE_STRING
+            // InternalDescartesQL.g:13604:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13605:1: RULE_STRING
             {
              before(grammarAccess.getConnectorInstanceReferenceClauseAccess().getIdentifierSTRINGTerminalRuleCall_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -34813,17 +36984,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveRelativeClause__DirectionAssignment_0"
-    // InternalDescartesQL.g:12821:1: rule__ObserveRelativeClause__DirectionAssignment_0 : ( ruleObserveRelativeDirectionType ) ;
+    // InternalDescartesQL.g:13614:1: rule__ObserveRelativeClause__DirectionAssignment_0 : ( ruleObserveRelativeDirectionType ) ;
     public final void rule__ObserveRelativeClause__DirectionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12825:1: ( ( ruleObserveRelativeDirectionType ) )
-            // InternalDescartesQL.g:12826:1: ( ruleObserveRelativeDirectionType )
+            // InternalDescartesQL.g:13618:1: ( ( ruleObserveRelativeDirectionType ) )
+            // InternalDescartesQL.g:13619:1: ( ruleObserveRelativeDirectionType )
             {
-            // InternalDescartesQL.g:12826:1: ( ruleObserveRelativeDirectionType )
-            // InternalDescartesQL.g:12827:1: ruleObserveRelativeDirectionType
+            // InternalDescartesQL.g:13619:1: ( ruleObserveRelativeDirectionType )
+            // InternalDescartesQL.g:13620:1: ruleObserveRelativeDirectionType
             {
              before(grammarAccess.getObserveRelativeClauseAccess().getDirectionObserveRelativeDirectionTypeEnumRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -34854,21 +37025,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveRelativeClause__TimeTargetAssignment_1"
-    // InternalDescartesQL.g:12836:1: rule__ObserveRelativeClause__TimeTargetAssignment_1 : ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:13629:1: rule__ObserveRelativeClause__TimeTargetAssignment_1 : ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) ) ;
     public final void rule__ObserveRelativeClause__TimeTargetAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12840:1: ( ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:12841:1: ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) )
+            // InternalDescartesQL.g:13633:1: ( ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:13634:1: ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:12841:1: ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) )
-            // InternalDescartesQL.g:12842:1: ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 )
+            // InternalDescartesQL.g:13634:1: ( ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 ) )
+            // InternalDescartesQL.g:13635:1: ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 )
             {
              before(grammarAccess.getObserveRelativeClauseAccess().getTimeTargetAlternatives_1_0()); 
-            // InternalDescartesQL.g:12843:1: ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 )
-            // InternalDescartesQL.g:12843:2: rule__ObserveRelativeClause__TimeTargetAlternatives_1_0
+            // InternalDescartesQL.g:13636:1: ( rule__ObserveRelativeClause__TimeTargetAlternatives_1_0 )
+            // InternalDescartesQL.g:13636:2: rule__ObserveRelativeClause__TimeTargetAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveRelativeClause__TimeTargetAlternatives_1_0();
@@ -34901,24 +37072,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__Mode1Assignment_0"
-    // InternalDescartesQL.g:12852:1: rule__ObserveBetweenClause__Mode1Assignment_0 : ( ( 'BETWEEN' ) ) ;
+    // InternalDescartesQL.g:13645:1: rule__ObserveBetweenClause__Mode1Assignment_0 : ( ( 'BETWEEN' ) ) ;
     public final void rule__ObserveBetweenClause__Mode1Assignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12856:1: ( ( ( 'BETWEEN' ) ) )
-            // InternalDescartesQL.g:12857:1: ( ( 'BETWEEN' ) )
+            // InternalDescartesQL.g:13649:1: ( ( ( 'BETWEEN' ) ) )
+            // InternalDescartesQL.g:13650:1: ( ( 'BETWEEN' ) )
             {
-            // InternalDescartesQL.g:12857:1: ( ( 'BETWEEN' ) )
-            // InternalDescartesQL.g:12858:1: ( 'BETWEEN' )
+            // InternalDescartesQL.g:13650:1: ( ( 'BETWEEN' ) )
+            // InternalDescartesQL.g:13651:1: ( 'BETWEEN' )
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getMode1BETWEENKeyword_0_0()); 
-            // InternalDescartesQL.g:12859:1: ( 'BETWEEN' )
-            // InternalDescartesQL.g:12860:1: 'BETWEEN'
+            // InternalDescartesQL.g:13652:1: ( 'BETWEEN' )
+            // InternalDescartesQL.g:13653:1: 'BETWEEN'
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getMode1BETWEENKeyword_0_0()); 
-            match(input,101,FOLLOW_2); 
+            match(input,105,FOLLOW_2); 
              after(grammarAccess.getObserveBetweenClauseAccess().getMode1BETWEENKeyword_0_0()); 
 
             }
@@ -34946,21 +37117,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__StartingTimeAssignment_1"
-    // InternalDescartesQL.g:12875:1: rule__ObserveBetweenClause__StartingTimeAssignment_1 : ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:13668:1: rule__ObserveBetweenClause__StartingTimeAssignment_1 : ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) ) ;
     public final void rule__ObserveBetweenClause__StartingTimeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12879:1: ( ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:12880:1: ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:13672:1: ( ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:13673:1: ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:12880:1: ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) )
-            // InternalDescartesQL.g:12881:1: ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 )
+            // InternalDescartesQL.g:13673:1: ( ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 ) )
+            // InternalDescartesQL.g:13674:1: ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 )
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getStartingTimeAlternatives_1_0()); 
-            // InternalDescartesQL.g:12882:1: ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 )
-            // InternalDescartesQL.g:12882:2: rule__ObserveBetweenClause__StartingTimeAlternatives_1_0
+            // InternalDescartesQL.g:13675:1: ( rule__ObserveBetweenClause__StartingTimeAlternatives_1_0 )
+            // InternalDescartesQL.g:13675:2: rule__ObserveBetweenClause__StartingTimeAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveBetweenClause__StartingTimeAlternatives_1_0();
@@ -34993,24 +37164,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__Mode2Assignment_2"
-    // InternalDescartesQL.g:12891:1: rule__ObserveBetweenClause__Mode2Assignment_2 : ( ( 'AND' ) ) ;
+    // InternalDescartesQL.g:13684:1: rule__ObserveBetweenClause__Mode2Assignment_2 : ( ( 'AND' ) ) ;
     public final void rule__ObserveBetweenClause__Mode2Assignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12895:1: ( ( ( 'AND' ) ) )
-            // InternalDescartesQL.g:12896:1: ( ( 'AND' ) )
+            // InternalDescartesQL.g:13688:1: ( ( ( 'AND' ) ) )
+            // InternalDescartesQL.g:13689:1: ( ( 'AND' ) )
             {
-            // InternalDescartesQL.g:12896:1: ( ( 'AND' ) )
-            // InternalDescartesQL.g:12897:1: ( 'AND' )
+            // InternalDescartesQL.g:13689:1: ( ( 'AND' ) )
+            // InternalDescartesQL.g:13690:1: ( 'AND' )
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getMode2ANDKeyword_2_0()); 
-            // InternalDescartesQL.g:12898:1: ( 'AND' )
-            // InternalDescartesQL.g:12899:1: 'AND'
+            // InternalDescartesQL.g:13691:1: ( 'AND' )
+            // InternalDescartesQL.g:13692:1: 'AND'
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getMode2ANDKeyword_2_0()); 
-            match(input,25,FOLLOW_2); 
+            match(input,26,FOLLOW_2); 
              after(grammarAccess.getObserveBetweenClauseAccess().getMode2ANDKeyword_2_0()); 
 
             }
@@ -35038,21 +37209,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ObserveBetweenClause__EndingTimeAssignment_3"
-    // InternalDescartesQL.g:12914:1: rule__ObserveBetweenClause__EndingTimeAssignment_3 : ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) ) ;
+    // InternalDescartesQL.g:13707:1: rule__ObserveBetweenClause__EndingTimeAssignment_3 : ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) ) ;
     public final void rule__ObserveBetweenClause__EndingTimeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12918:1: ( ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) ) )
-            // InternalDescartesQL.g:12919:1: ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) )
+            // InternalDescartesQL.g:13711:1: ( ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) ) )
+            // InternalDescartesQL.g:13712:1: ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) )
             {
-            // InternalDescartesQL.g:12919:1: ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) )
-            // InternalDescartesQL.g:12920:1: ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 )
+            // InternalDescartesQL.g:13712:1: ( ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 ) )
+            // InternalDescartesQL.g:13713:1: ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 )
             {
              before(grammarAccess.getObserveBetweenClauseAccess().getEndingTimeAlternatives_3_0()); 
-            // InternalDescartesQL.g:12921:1: ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 )
-            // InternalDescartesQL.g:12921:2: rule__ObserveBetweenClause__EndingTimeAlternatives_3_0
+            // InternalDescartesQL.g:13714:1: ( rule__ObserveBetweenClause__EndingTimeAlternatives_3_0 )
+            // InternalDescartesQL.g:13714:2: rule__ObserveBetweenClause__EndingTimeAlternatives_3_0
             {
             pushFollow(FOLLOW_2);
             rule__ObserveBetweenClause__EndingTimeAlternatives_3_0();
@@ -35085,17 +37256,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeWithSignClause__SignAssignment_0"
-    // InternalDescartesQL.g:12930:1: rule__RelativeTimeWithSignClause__SignAssignment_0 : ( ruleRelativeTimeSignType ) ;
+    // InternalDescartesQL.g:13723:1: rule__RelativeTimeWithSignClause__SignAssignment_0 : ( ruleRelativeTimeSignType ) ;
     public final void rule__RelativeTimeWithSignClause__SignAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12934:1: ( ( ruleRelativeTimeSignType ) )
-            // InternalDescartesQL.g:12935:1: ( ruleRelativeTimeSignType )
+            // InternalDescartesQL.g:13727:1: ( ( ruleRelativeTimeSignType ) )
+            // InternalDescartesQL.g:13728:1: ( ruleRelativeTimeSignType )
             {
-            // InternalDescartesQL.g:12935:1: ( ruleRelativeTimeSignType )
-            // InternalDescartesQL.g:12936:1: ruleRelativeTimeSignType
+            // InternalDescartesQL.g:13728:1: ( ruleRelativeTimeSignType )
+            // InternalDescartesQL.g:13729:1: ruleRelativeTimeSignType
             {
              before(grammarAccess.getRelativeTimeWithSignClauseAccess().getSignRelativeTimeSignTypeEnumRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -35126,17 +37297,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeWithSignClause__TimeClauseAssignment_1"
-    // InternalDescartesQL.g:12945:1: rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 : ( ruleRelativeTimeClause ) ;
+    // InternalDescartesQL.g:13738:1: rule__RelativeTimeWithSignClause__TimeClauseAssignment_1 : ( ruleRelativeTimeClause ) ;
     public final void rule__RelativeTimeWithSignClause__TimeClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12949:1: ( ( ruleRelativeTimeClause ) )
-            // InternalDescartesQL.g:12950:1: ( ruleRelativeTimeClause )
+            // InternalDescartesQL.g:13742:1: ( ( ruleRelativeTimeClause ) )
+            // InternalDescartesQL.g:13743:1: ( ruleRelativeTimeClause )
             {
-            // InternalDescartesQL.g:12950:1: ( ruleRelativeTimeClause )
-            // InternalDescartesQL.g:12951:1: ruleRelativeTimeClause
+            // InternalDescartesQL.g:13743:1: ( ruleRelativeTimeClause )
+            // InternalDescartesQL.g:13744:1: ruleRelativeTimeClause
             {
              before(grammarAccess.getRelativeTimeWithSignClauseAccess().getTimeClauseRelativeTimeClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35167,17 +37338,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__AbsoluteTimeClause__TimeSpecAssignment"
-    // InternalDescartesQL.g:12960:1: rule__AbsoluteTimeClause__TimeSpecAssignment : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13753:1: rule__AbsoluteTimeClause__TimeSpecAssignment : ( RULE_STRING ) ;
     public final void rule__AbsoluteTimeClause__TimeSpecAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12964:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:12965:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13757:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13758:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:12965:1: ( RULE_STRING )
-            // InternalDescartesQL.g:12966:1: RULE_STRING
+            // InternalDescartesQL.g:13758:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13759:1: RULE_STRING
             {
              before(grammarAccess.getAbsoluteTimeClauseAccess().getTimeSpecSTRINGTerminalRuleCall_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -35204,17 +37375,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeClause__DurationClauseAssignment_0"
-    // InternalDescartesQL.g:12975:1: rule__RelativeTimeClause__DurationClauseAssignment_0 : ( ruleRelativeTimeDurationClause ) ;
+    // InternalDescartesQL.g:13768:1: rule__RelativeTimeClause__DurationClauseAssignment_0 : ( ruleRelativeTimeDurationClause ) ;
     public final void rule__RelativeTimeClause__DurationClauseAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12979:1: ( ( ruleRelativeTimeDurationClause ) )
-            // InternalDescartesQL.g:12980:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13772:1: ( ( ruleRelativeTimeDurationClause ) )
+            // InternalDescartesQL.g:13773:1: ( ruleRelativeTimeDurationClause )
             {
-            // InternalDescartesQL.g:12980:1: ( ruleRelativeTimeDurationClause )
-            // InternalDescartesQL.g:12981:1: ruleRelativeTimeDurationClause
+            // InternalDescartesQL.g:13773:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13774:1: ruleRelativeTimeDurationClause
             {
              before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseRelativeTimeDurationClauseParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -35245,17 +37416,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeClause__DurationClauseAssignment_1"
-    // InternalDescartesQL.g:12990:1: rule__RelativeTimeClause__DurationClauseAssignment_1 : ( ruleRelativeTimeDurationClause ) ;
+    // InternalDescartesQL.g:13783:1: rule__RelativeTimeClause__DurationClauseAssignment_1 : ( ruleRelativeTimeDurationClause ) ;
     public final void rule__RelativeTimeClause__DurationClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:12994:1: ( ( ruleRelativeTimeDurationClause ) )
-            // InternalDescartesQL.g:12995:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13787:1: ( ( ruleRelativeTimeDurationClause ) )
+            // InternalDescartesQL.g:13788:1: ( ruleRelativeTimeDurationClause )
             {
-            // InternalDescartesQL.g:12995:1: ( ruleRelativeTimeDurationClause )
-            // InternalDescartesQL.g:12996:1: ruleRelativeTimeDurationClause
+            // InternalDescartesQL.g:13788:1: ( ruleRelativeTimeDurationClause )
+            // InternalDescartesQL.g:13789:1: ruleRelativeTimeDurationClause
             {
              before(grammarAccess.getRelativeTimeClauseAccess().getDurationClauseRelativeTimeDurationClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35286,17 +37457,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeDurationClause__DurationAssignment_0"
-    // InternalDescartesQL.g:13005:1: rule__RelativeTimeDurationClause__DurationAssignment_0 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:13798:1: rule__RelativeTimeDurationClause__DurationAssignment_0 : ( RULE_INT ) ;
     public final void rule__RelativeTimeDurationClause__DurationAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13009:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:13010:1: ( RULE_INT )
+            // InternalDescartesQL.g:13802:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:13803:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:13010:1: ( RULE_INT )
-            // InternalDescartesQL.g:13011:1: RULE_INT
+            // InternalDescartesQL.g:13803:1: ( RULE_INT )
+            // InternalDescartesQL.g:13804:1: RULE_INT
             {
              before(grammarAccess.getRelativeTimeDurationClauseAccess().getDurationINTTerminalRuleCall_0_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -35323,17 +37494,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__RelativeTimeDurationClause__TimeModifierAssignment_1"
-    // InternalDescartesQL.g:13020:1: rule__RelativeTimeDurationClause__TimeModifierAssignment_1 : ( ruleTimeModifierType ) ;
+    // InternalDescartesQL.g:13813:1: rule__RelativeTimeDurationClause__TimeModifierAssignment_1 : ( ruleTimeModifierType ) ;
     public final void rule__RelativeTimeDurationClause__TimeModifierAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13024:1: ( ( ruleTimeModifierType ) )
-            // InternalDescartesQL.g:13025:1: ( ruleTimeModifierType )
+            // InternalDescartesQL.g:13817:1: ( ( ruleTimeModifierType ) )
+            // InternalDescartesQL.g:13818:1: ( ruleTimeModifierType )
             {
-            // InternalDescartesQL.g:13025:1: ( ruleTimeModifierType )
-            // InternalDescartesQL.g:13026:1: ruleTimeModifierType
+            // InternalDescartesQL.g:13818:1: ( ruleTimeModifierType )
+            // InternalDescartesQL.g:13819:1: ruleTimeModifierType
             {
              before(grammarAccess.getRelativeTimeDurationClauseAccess().getTimeModifierTimeModifierTypeEnumRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35364,17 +37535,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__WhatIfVariationAssignment_1"
-    // InternalDescartesQL.g:13035:1: rule__WhatIfQuery__WhatIfVariationAssignment_1 : ( ruleWhatIfVariation ) ;
+    // InternalDescartesQL.g:13828:1: rule__WhatIfQuery__WhatIfVariationAssignment_1 : ( ruleWhatIfVariation ) ;
     public final void rule__WhatIfQuery__WhatIfVariationAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13039:1: ( ( ruleWhatIfVariation ) )
-            // InternalDescartesQL.g:13040:1: ( ruleWhatIfVariation )
+            // InternalDescartesQL.g:13832:1: ( ( ruleWhatIfVariation ) )
+            // InternalDescartesQL.g:13833:1: ( ruleWhatIfVariation )
             {
-            // InternalDescartesQL.g:13040:1: ( ruleWhatIfVariation )
-            // InternalDescartesQL.g:13041:1: ruleWhatIfVariation
+            // InternalDescartesQL.g:13833:1: ( ruleWhatIfVariation )
+            // InternalDescartesQL.g:13834:1: ruleWhatIfVariation
             {
              before(grammarAccess.getWhatIfQueryAccess().getWhatIfVariationWhatIfVariationParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35405,17 +37576,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1"
-    // InternalDescartesQL.g:13050:1: rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 : ( ruleMetricReferenceClauses ) ;
+    // InternalDescartesQL.g:13843:1: rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1 : ( ruleMetricReferenceClauses ) ;
     public final void rule__WhatIfQuery__MetricReferenceClausesAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13054:1: ( ( ruleMetricReferenceClauses ) )
-            // InternalDescartesQL.g:13055:1: ( ruleMetricReferenceClauses )
+            // InternalDescartesQL.g:13847:1: ( ( ruleMetricReferenceClauses ) )
+            // InternalDescartesQL.g:13848:1: ( ruleMetricReferenceClauses )
             {
-            // InternalDescartesQL.g:13055:1: ( ruleMetricReferenceClauses )
-            // InternalDescartesQL.g:13056:1: ruleMetricReferenceClauses
+            // InternalDescartesQL.g:13848:1: ( ruleMetricReferenceClauses )
+            // InternalDescartesQL.g:13849:1: ruleMetricReferenceClauses
             {
              before(grammarAccess.getWhatIfQueryAccess().getMetricReferenceClausesMetricReferenceClausesParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35446,17 +37617,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__ForClauseAssignment_2_2"
-    // InternalDescartesQL.g:13065:1: rule__WhatIfQuery__ForClauseAssignment_2_2 : ( ruleForClause ) ;
+    // InternalDescartesQL.g:13858:1: rule__WhatIfQuery__ForClauseAssignment_2_2 : ( ruleForClause ) ;
     public final void rule__WhatIfQuery__ForClauseAssignment_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13069:1: ( ( ruleForClause ) )
-            // InternalDescartesQL.g:13070:1: ( ruleForClause )
+            // InternalDescartesQL.g:13862:1: ( ( ruleForClause ) )
+            // InternalDescartesQL.g:13863:1: ( ruleForClause )
             {
-            // InternalDescartesQL.g:13070:1: ( ruleForClause )
-            // InternalDescartesQL.g:13071:1: ruleForClause
+            // InternalDescartesQL.g:13863:1: ( ruleForClause )
+            // InternalDescartesQL.g:13864:1: ruleForClause
             {
              before(grammarAccess.getWhatIfQueryAccess().getForClauseForClauseParserRuleCall_2_2_0()); 
             pushFollow(FOLLOW_2);
@@ -35487,17 +37658,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__FilteringClauseAssignment_3"
-    // InternalDescartesQL.g:13080:1: rule__WhatIfQuery__FilteringClauseAssignment_3 : ( ruleFilteringClause ) ;
+    // InternalDescartesQL.g:13873:1: rule__WhatIfQuery__FilteringClauseAssignment_3 : ( ruleFilteringClause ) ;
     public final void rule__WhatIfQuery__FilteringClauseAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13084:1: ( ( ruleFilteringClause ) )
-            // InternalDescartesQL.g:13085:1: ( ruleFilteringClause )
+            // InternalDescartesQL.g:13877:1: ( ( ruleFilteringClause ) )
+            // InternalDescartesQL.g:13878:1: ( ruleFilteringClause )
             {
-            // InternalDescartesQL.g:13085:1: ( ruleFilteringClause )
-            // InternalDescartesQL.g:13086:1: ruleFilteringClause
+            // InternalDescartesQL.g:13878:1: ( ruleFilteringClause )
+            // InternalDescartesQL.g:13879:1: ruleFilteringClause
             {
              before(grammarAccess.getWhatIfQueryAccess().getFilteringClauseFilteringClauseParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -35528,17 +37699,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__DeltaClauseAssignment_4"
-    // InternalDescartesQL.g:13095:1: rule__WhatIfQuery__DeltaClauseAssignment_4 : ( ruleDeltaClause ) ;
+    // InternalDescartesQL.g:13888:1: rule__WhatIfQuery__DeltaClauseAssignment_4 : ( ruleDeltaClause ) ;
     public final void rule__WhatIfQuery__DeltaClauseAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13099:1: ( ( ruleDeltaClause ) )
-            // InternalDescartesQL.g:13100:1: ( ruleDeltaClause )
+            // InternalDescartesQL.g:13892:1: ( ( ruleDeltaClause ) )
+            // InternalDescartesQL.g:13893:1: ( ruleDeltaClause )
             {
-            // InternalDescartesQL.g:13100:1: ( ruleDeltaClause )
-            // InternalDescartesQL.g:13101:1: ruleDeltaClause
+            // InternalDescartesQL.g:13893:1: ( ruleDeltaClause )
+            // InternalDescartesQL.g:13894:1: ruleDeltaClause
             {
              before(grammarAccess.getWhatIfQueryAccess().getDeltaClauseDeltaClauseParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -35569,17 +37740,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfQuery__UsingClauseAssignment_5"
-    // InternalDescartesQL.g:13110:1: rule__WhatIfQuery__UsingClauseAssignment_5 : ( ruleUsingClause ) ;
+    // InternalDescartesQL.g:13903:1: rule__WhatIfQuery__UsingClauseAssignment_5 : ( ruleUsingClause ) ;
     public final void rule__WhatIfQuery__UsingClauseAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13114:1: ( ( ruleUsingClause ) )
-            // InternalDescartesQL.g:13115:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:13907:1: ( ( ruleUsingClause ) )
+            // InternalDescartesQL.g:13908:1: ( ruleUsingClause )
             {
-            // InternalDescartesQL.g:13115:1: ( ruleUsingClause )
-            // InternalDescartesQL.g:13116:1: ruleUsingClause
+            // InternalDescartesQL.g:13908:1: ( ruleUsingClause )
+            // InternalDescartesQL.g:13909:1: ruleUsingClause
             {
              before(grammarAccess.getWhatIfQueryAccess().getUsingClauseUsingClauseParserRuleCall_5_0()); 
             pushFollow(FOLLOW_2);
@@ -35610,17 +37781,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfVariation__WhatIfVariationClauseAssignment_0"
-    // InternalDescartesQL.g:13125:1: rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 : ( ruleWhatIfVariationClause ) ;
+    // InternalDescartesQL.g:13918:1: rule__WhatIfVariation__WhatIfVariationClauseAssignment_0 : ( ruleWhatIfVariationClause ) ;
     public final void rule__WhatIfVariation__WhatIfVariationClauseAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13129:1: ( ( ruleWhatIfVariationClause ) )
-            // InternalDescartesQL.g:13130:1: ( ruleWhatIfVariationClause )
+            // InternalDescartesQL.g:13922:1: ( ( ruleWhatIfVariationClause ) )
+            // InternalDescartesQL.g:13923:1: ( ruleWhatIfVariationClause )
             {
-            // InternalDescartesQL.g:13130:1: ( ruleWhatIfVariationClause )
-            // InternalDescartesQL.g:13131:1: ruleWhatIfVariationClause
+            // InternalDescartesQL.g:13923:1: ( ruleWhatIfVariationClause )
+            // InternalDescartesQL.g:13924:1: ruleWhatIfVariationClause
             {
              before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseWhatIfVariationClauseParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -35651,17 +37822,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1"
-    // InternalDescartesQL.g:13140:1: rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 : ( ruleWhatIfVariationClause ) ;
+    // InternalDescartesQL.g:13933:1: rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1 : ( ruleWhatIfVariationClause ) ;
     public final void rule__WhatIfVariation__WhatIfVariationClauseAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13144:1: ( ( ruleWhatIfVariationClause ) )
-            // InternalDescartesQL.g:13145:1: ( ruleWhatIfVariationClause )
+            // InternalDescartesQL.g:13937:1: ( ( ruleWhatIfVariationClause ) )
+            // InternalDescartesQL.g:13938:1: ( ruleWhatIfVariationClause )
             {
-            // InternalDescartesQL.g:13145:1: ( ruleWhatIfVariationClause )
-            // InternalDescartesQL.g:13146:1: ruleWhatIfVariationClause
+            // InternalDescartesQL.g:13938:1: ( ruleWhatIfVariationClause )
+            // InternalDescartesQL.g:13939:1: ruleWhatIfVariationClause
             {
              before(grammarAccess.getWhatIfVariationAccess().getWhatIfVariationClauseWhatIfVariationClauseParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35692,17 +37863,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringClause__FilteringRuleAssignment_1_0"
-    // InternalDescartesQL.g:13155:1: rule__FilteringClause__FilteringRuleAssignment_1_0 : ( ruleFilteringRule ) ;
+    // InternalDescartesQL.g:13948:1: rule__FilteringClause__FilteringRuleAssignment_1_0 : ( ruleFilteringRule ) ;
     public final void rule__FilteringClause__FilteringRuleAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13159:1: ( ( ruleFilteringRule ) )
-            // InternalDescartesQL.g:13160:1: ( ruleFilteringRule )
+            // InternalDescartesQL.g:13952:1: ( ( ruleFilteringRule ) )
+            // InternalDescartesQL.g:13953:1: ( ruleFilteringRule )
             {
-            // InternalDescartesQL.g:13160:1: ( ruleFilteringRule )
-            // InternalDescartesQL.g:13161:1: ruleFilteringRule
+            // InternalDescartesQL.g:13953:1: ( ruleFilteringRule )
+            // InternalDescartesQL.g:13954:1: ruleFilteringRule
             {
              before(grammarAccess.getFilteringClauseAccess().getFilteringRuleFilteringRuleParserRuleCall_1_0_0()); 
             pushFollow(FOLLOW_2);
@@ -35733,17 +37904,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringClause__FilteringStrategyAssignment_1_1"
-    // InternalDescartesQL.g:13170:1: rule__FilteringClause__FilteringStrategyAssignment_1_1 : ( ruleFilteringStrategy ) ;
+    // InternalDescartesQL.g:13963:1: rule__FilteringClause__FilteringStrategyAssignment_1_1 : ( ruleFilteringStrategy ) ;
     public final void rule__FilteringClause__FilteringStrategyAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13174:1: ( ( ruleFilteringStrategy ) )
-            // InternalDescartesQL.g:13175:1: ( ruleFilteringStrategy )
+            // InternalDescartesQL.g:13967:1: ( ( ruleFilteringStrategy ) )
+            // InternalDescartesQL.g:13968:1: ( ruleFilteringStrategy )
             {
-            // InternalDescartesQL.g:13175:1: ( ruleFilteringStrategy )
-            // InternalDescartesQL.g:13176:1: ruleFilteringStrategy
+            // InternalDescartesQL.g:13968:1: ( ruleFilteringStrategy )
+            // InternalDescartesQL.g:13969:1: ruleFilteringStrategy
             {
              before(grammarAccess.getFilteringClauseAccess().getFilteringStrategyFilteringStrategyParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35774,17 +37945,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringStrategy__FilteringStrategyAssignment"
-    // InternalDescartesQL.g:13185:1: rule__FilteringStrategy__FilteringStrategyAssignment : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:13978:1: rule__FilteringStrategy__FilteringStrategyAssignment : ( RULE_STRING ) ;
     public final void rule__FilteringStrategy__FilteringStrategyAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13189:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:13190:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13982:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:13983:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:13190:1: ( RULE_STRING )
-            // InternalDescartesQL.g:13191:1: RULE_STRING
+            // InternalDescartesQL.g:13983:1: ( RULE_STRING )
+            // InternalDescartesQL.g:13984:1: RULE_STRING
             {
              before(grammarAccess.getFilteringStrategyAccess().getFilteringStrategySTRINGTerminalRuleCall_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -35811,17 +37982,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringRule__FilteringValueAssignment_0"
-    // InternalDescartesQL.g:13200:1: rule__FilteringRule__FilteringValueAssignment_0 : ( ruleVariableValue ) ;
+    // InternalDescartesQL.g:13993:1: rule__FilteringRule__FilteringValueAssignment_0 : ( ruleVariableValue ) ;
     public final void rule__FilteringRule__FilteringValueAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13204:1: ( ( ruleVariableValue ) )
-            // InternalDescartesQL.g:13205:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:13997:1: ( ( ruleVariableValue ) )
+            // InternalDescartesQL.g:13998:1: ( ruleVariableValue )
             {
-            // InternalDescartesQL.g:13205:1: ( ruleVariableValue )
-            // InternalDescartesQL.g:13206:1: ruleVariableValue
+            // InternalDescartesQL.g:13998:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:13999:1: ruleVariableValue
             {
              before(grammarAccess.getFilteringRuleAccess().getFilteringValueVariableValueParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -35852,24 +38023,24 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__FilteringRule__ModifierAssignment_1"
-    // InternalDescartesQL.g:13215:1: rule__FilteringRule__ModifierAssignment_1 : ( ( '%' ) ) ;
+    // InternalDescartesQL.g:14008:1: rule__FilteringRule__ModifierAssignment_1 : ( ( '%' ) ) ;
     public final void rule__FilteringRule__ModifierAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13219:1: ( ( ( '%' ) ) )
-            // InternalDescartesQL.g:13220:1: ( ( '%' ) )
+            // InternalDescartesQL.g:14012:1: ( ( ( '%' ) ) )
+            // InternalDescartesQL.g:14013:1: ( ( '%' ) )
             {
-            // InternalDescartesQL.g:13220:1: ( ( '%' ) )
-            // InternalDescartesQL.g:13221:1: ( '%' )
+            // InternalDescartesQL.g:14013:1: ( ( '%' ) )
+            // InternalDescartesQL.g:14014:1: ( '%' )
             {
              before(grammarAccess.getFilteringRuleAccess().getModifierPercentSignKeyword_1_0()); 
-            // InternalDescartesQL.g:13222:1: ( '%' )
-            // InternalDescartesQL.g:13223:1: '%'
+            // InternalDescartesQL.g:14015:1: ( '%' )
+            // InternalDescartesQL.g:14016:1: '%'
             {
              before(grammarAccess.getFilteringRuleAccess().getModifierPercentSignKeyword_1_0()); 
-            match(input,102,FOLLOW_2); 
+            match(input,106,FOLLOW_2); 
              after(grammarAccess.getFilteringRuleAccess().getModifierPercentSignKeyword_1_0()); 
 
             }
@@ -35897,17 +38068,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfVariationClause__VariationPointAssignment_0"
-    // InternalDescartesQL.g:13238:1: rule__WhatIfVariationClause__VariationPointAssignment_0 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:14031:1: rule__WhatIfVariationClause__VariationPointAssignment_0 : ( RULE_STRING ) ;
     public final void rule__WhatIfVariationClause__VariationPointAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13242:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:13243:1: ( RULE_STRING )
+            // InternalDescartesQL.g:14035:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:14036:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:13243:1: ( RULE_STRING )
-            // InternalDescartesQL.g:13244:1: RULE_STRING
+            // InternalDescartesQL.g:14036:1: ( RULE_STRING )
+            // InternalDescartesQL.g:14037:1: RULE_STRING
             {
              before(grammarAccess.getWhatIfVariationClauseAccess().getVariationPointSTRINGTerminalRuleCall_0_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -35934,17 +38105,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfVariationClause__ValuesAssignment_1"
-    // InternalDescartesQL.g:13253:1: rule__WhatIfVariationClause__ValuesAssignment_1 : ( ruleWhatIfValueVariationClause ) ;
+    // InternalDescartesQL.g:14046:1: rule__WhatIfVariationClause__ValuesAssignment_1 : ( ruleWhatIfValueVariationClause ) ;
     public final void rule__WhatIfVariationClause__ValuesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13257:1: ( ( ruleWhatIfValueVariationClause ) )
-            // InternalDescartesQL.g:13258:1: ( ruleWhatIfValueVariationClause )
+            // InternalDescartesQL.g:14050:1: ( ( ruleWhatIfValueVariationClause ) )
+            // InternalDescartesQL.g:14051:1: ( ruleWhatIfValueVariationClause )
             {
-            // InternalDescartesQL.g:13258:1: ( ruleWhatIfValueVariationClause )
-            // InternalDescartesQL.g:13259:1: ruleWhatIfValueVariationClause
+            // InternalDescartesQL.g:14051:1: ( ruleWhatIfValueVariationClause )
+            // InternalDescartesQL.g:14052:1: ruleWhatIfValueVariationClause
             {
              before(grammarAccess.getWhatIfVariationClauseAccess().getValuesWhatIfValueVariationClauseParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -35975,21 +38146,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfValueVariationClause__VariationClauseAssignment_1"
-    // InternalDescartesQL.g:13268:1: rule__WhatIfValueVariationClause__VariationClauseAssignment_1 : ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) ) ;
+    // InternalDescartesQL.g:14061:1: rule__WhatIfValueVariationClause__VariationClauseAssignment_1 : ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) ) ;
     public final void rule__WhatIfValueVariationClause__VariationClauseAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13272:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) ) )
-            // InternalDescartesQL.g:13273:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) )
+            // InternalDescartesQL.g:14065:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) ) )
+            // InternalDescartesQL.g:14066:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) )
             {
-            // InternalDescartesQL.g:13273:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) )
-            // InternalDescartesQL.g:13274:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 )
+            // InternalDescartesQL.g:14066:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 ) )
+            // InternalDescartesQL.g:14067:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 )
             {
              before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAlternatives_1_0()); 
-            // InternalDescartesQL.g:13275:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 )
-            // InternalDescartesQL.g:13275:2: rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0
+            // InternalDescartesQL.g:14068:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0 )
+            // InternalDescartesQL.g:14068:2: rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfValueVariationClause__VariationClauseAlternatives_1_0();
@@ -36022,21 +38193,21 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1"
-    // InternalDescartesQL.g:13284:1: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 : ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) ) ;
+    // InternalDescartesQL.g:14077:1: rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1 : ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) ) ;
     public final void rule__WhatIfValueVariationClause__VariationClauseAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13288:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) ) )
-            // InternalDescartesQL.g:13289:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) )
+            // InternalDescartesQL.g:14081:1: ( ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) ) )
+            // InternalDescartesQL.g:14082:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) )
             {
-            // InternalDescartesQL.g:13289:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) )
-            // InternalDescartesQL.g:13290:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 )
+            // InternalDescartesQL.g:14082:1: ( ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 ) )
+            // InternalDescartesQL.g:14083:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 )
             {
              before(grammarAccess.getWhatIfValueVariationClauseAccess().getVariationClauseAlternatives_2_1_0()); 
-            // InternalDescartesQL.g:13291:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 )
-            // InternalDescartesQL.g:13291:2: rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0
+            // InternalDescartesQL.g:14084:1: ( rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0 )
+            // InternalDescartesQL.g:14084:2: rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0
             {
             pushFollow(FOLLOW_2);
             rule__WhatIfValueVariationClause__VariationClauseAlternatives_2_1_0();
@@ -36069,17 +38240,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VariationInstruction__VariationAssignment_0"
-    // InternalDescartesQL.g:13302:1: rule__VariationInstruction__VariationAssignment_0 : ( RULE_ID ) ;
+    // InternalDescartesQL.g:14095:1: rule__VariationInstruction__VariationAssignment_0 : ( RULE_ID ) ;
     public final void rule__VariationInstruction__VariationAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13306:1: ( ( RULE_ID ) )
-            // InternalDescartesQL.g:13307:1: ( RULE_ID )
+            // InternalDescartesQL.g:14099:1: ( ( RULE_ID ) )
+            // InternalDescartesQL.g:14100:1: ( RULE_ID )
             {
-            // InternalDescartesQL.g:13307:1: ( RULE_ID )
-            // InternalDescartesQL.g:13308:1: RULE_ID
+            // InternalDescartesQL.g:14100:1: ( RULE_ID )
+            // InternalDescartesQL.g:14101:1: RULE_ID
             {
              before(grammarAccess.getVariationInstructionAccess().getVariationIDTerminalRuleCall_0_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -36106,17 +38277,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VariationInstruction__ArgumentAssignment_1_1"
-    // InternalDescartesQL.g:13317:1: rule__VariationInstruction__ArgumentAssignment_1_1 : ( RULE_STRING ) ;
+    // InternalDescartesQL.g:14110:1: rule__VariationInstruction__ArgumentAssignment_1_1 : ( RULE_STRING ) ;
     public final void rule__VariationInstruction__ArgumentAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13321:1: ( ( RULE_STRING ) )
-            // InternalDescartesQL.g:13322:1: ( RULE_STRING )
+            // InternalDescartesQL.g:14114:1: ( ( RULE_STRING ) )
+            // InternalDescartesQL.g:14115:1: ( RULE_STRING )
             {
-            // InternalDescartesQL.g:13322:1: ( RULE_STRING )
-            // InternalDescartesQL.g:13323:1: RULE_STRING
+            // InternalDescartesQL.g:14115:1: ( RULE_STRING )
+            // InternalDescartesQL.g:14116:1: RULE_STRING
             {
              before(grammarAccess.getVariationInstructionAccess().getArgumentSTRINGTerminalRuleCall_1_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -36142,22 +38313,104 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
     // $ANTLR end "rule__VariationInstruction__ArgumentAssignment_1_1"
 
 
+    // $ANTLR start "rule__MultipleArithmeticClause__MultiClauseAssignment_1"
+    // InternalDescartesQL.g:14125:1: rule__MultipleArithmeticClause__MultiClauseAssignment_1 : ( ruleArithmeticClause ) ;
+    public final void rule__MultipleArithmeticClause__MultiClauseAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:14129:1: ( ( ruleArithmeticClause ) )
+            // InternalDescartesQL.g:14130:1: ( ruleArithmeticClause )
+            {
+            // InternalDescartesQL.g:14130:1: ( ruleArithmeticClause )
+            // InternalDescartesQL.g:14131:1: ruleArithmeticClause
+            {
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseArithmeticClauseParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_2);
+            ruleArithmeticClause();
+
+            state._fsp--;
+
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseArithmeticClauseParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MultipleArithmeticClause__MultiClauseAssignment_1"
+
+
+    // $ANTLR start "rule__MultipleArithmeticClause__MultiClauseAssignment_2_1"
+    // InternalDescartesQL.g:14140:1: rule__MultipleArithmeticClause__MultiClauseAssignment_2_1 : ( ruleArithmeticClause ) ;
+    public final void rule__MultipleArithmeticClause__MultiClauseAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalDescartesQL.g:14144:1: ( ( ruleArithmeticClause ) )
+            // InternalDescartesQL.g:14145:1: ( ruleArithmeticClause )
+            {
+            // InternalDescartesQL.g:14145:1: ( ruleArithmeticClause )
+            // InternalDescartesQL.g:14146:1: ruleArithmeticClause
+            {
+             before(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseArithmeticClauseParserRuleCall_2_1_0()); 
+            pushFollow(FOLLOW_2);
+            ruleArithmeticClause();
+
+            state._fsp--;
+
+             after(grammarAccess.getMultipleArithmeticClauseAccess().getMultiClauseArithmeticClauseParserRuleCall_2_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MultipleArithmeticClause__MultiClauseAssignment_2_1"
+
+
     // $ANTLR start "rule__ArithmeticClause__ModeAssignment_0"
-    // InternalDescartesQL.g:13334:1: rule__ArithmeticClause__ModeAssignment_0 : ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) ) ;
+    // InternalDescartesQL.g:14155:1: rule__ArithmeticClause__ModeAssignment_0 : ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) ) ;
     public final void rule__ArithmeticClause__ModeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13338:1: ( ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) ) )
-            // InternalDescartesQL.g:13339:1: ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) )
+            // InternalDescartesQL.g:14159:1: ( ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) ) )
+            // InternalDescartesQL.g:14160:1: ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) )
             {
-            // InternalDescartesQL.g:13339:1: ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) )
-            // InternalDescartesQL.g:13340:1: ( rule__ArithmeticClause__ModeAlternatives_0_0 )
+            // InternalDescartesQL.g:14160:1: ( ( rule__ArithmeticClause__ModeAlternatives_0_0 ) )
+            // InternalDescartesQL.g:14161:1: ( rule__ArithmeticClause__ModeAlternatives_0_0 )
             {
              before(grammarAccess.getArithmeticClauseAccess().getModeAlternatives_0_0()); 
-            // InternalDescartesQL.g:13341:1: ( rule__ArithmeticClause__ModeAlternatives_0_0 )
-            // InternalDescartesQL.g:13341:2: rule__ArithmeticClause__ModeAlternatives_0_0
+            // InternalDescartesQL.g:14162:1: ( rule__ArithmeticClause__ModeAlternatives_0_0 )
+            // InternalDescartesQL.g:14162:2: rule__ArithmeticClause__ModeAlternatives_0_0
             {
             pushFollow(FOLLOW_2);
             rule__ArithmeticClause__ModeAlternatives_0_0();
@@ -36190,17 +38443,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__ArithmeticClause__ValueAssignment_1"
-    // InternalDescartesQL.g:13350:1: rule__ArithmeticClause__ValueAssignment_1 : ( ruleVariableValue ) ;
+    // InternalDescartesQL.g:14171:1: rule__ArithmeticClause__ValueAssignment_1 : ( ruleVariableValue ) ;
     public final void rule__ArithmeticClause__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13354:1: ( ( ruleVariableValue ) )
-            // InternalDescartesQL.g:13355:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:14175:1: ( ( ruleVariableValue ) )
+            // InternalDescartesQL.g:14176:1: ( ruleVariableValue )
             {
-            // InternalDescartesQL.g:13355:1: ( ruleVariableValue )
-            // InternalDescartesQL.g:13356:1: ruleVariableValue
+            // InternalDescartesQL.g:14176:1: ( ruleVariableValue )
+            // InternalDescartesQL.g:14177:1: ruleVariableValue
             {
              before(grammarAccess.getArithmeticClauseAccess().getValueVariableValueParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -36231,17 +38484,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VariableValue__IntValueAssignment_0"
-    // InternalDescartesQL.g:13365:1: rule__VariableValue__IntValueAssignment_0 : ( RULE_INT ) ;
+    // InternalDescartesQL.g:14186:1: rule__VariableValue__IntValueAssignment_0 : ( RULE_INT ) ;
     public final void rule__VariableValue__IntValueAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13369:1: ( ( RULE_INT ) )
-            // InternalDescartesQL.g:13370:1: ( RULE_INT )
+            // InternalDescartesQL.g:14190:1: ( ( RULE_INT ) )
+            // InternalDescartesQL.g:14191:1: ( RULE_INT )
             {
-            // InternalDescartesQL.g:13370:1: ( RULE_INT )
-            // InternalDescartesQL.g:13371:1: RULE_INT
+            // InternalDescartesQL.g:14191:1: ( RULE_INT )
+            // InternalDescartesQL.g:14192:1: RULE_INT
             {
              before(grammarAccess.getVariableValueAccess().getIntValueINTTerminalRuleCall_0_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -36268,17 +38521,17 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
 
     // $ANTLR start "rule__VariableValue__DoubleValueAssignment_1"
-    // InternalDescartesQL.g:13380:1: rule__VariableValue__DoubleValueAssignment_1 : ( RULE_DOUBLE ) ;
+    // InternalDescartesQL.g:14201:1: rule__VariableValue__DoubleValueAssignment_1 : ( RULE_DOUBLE ) ;
     public final void rule__VariableValue__DoubleValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // InternalDescartesQL.g:13384:1: ( ( RULE_DOUBLE ) )
-            // InternalDescartesQL.g:13385:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:14205:1: ( ( RULE_DOUBLE ) )
+            // InternalDescartesQL.g:14206:1: ( RULE_DOUBLE )
             {
-            // InternalDescartesQL.g:13385:1: ( RULE_DOUBLE )
-            // InternalDescartesQL.g:13386:1: RULE_DOUBLE
+            // InternalDescartesQL.g:14206:1: ( RULE_DOUBLE )
+            // InternalDescartesQL.g:14207:1: RULE_DOUBLE
             {
              before(grammarAccess.getVariableValueAccess().getDoubleValueDOUBLETerminalRuleCall_1_0()); 
             match(input,RULE_DOUBLE,FOLLOW_2); 
@@ -36310,70 +38563,72 @@ public class InternalDescartesQLParser extends AbstractInternalContentAssistPars
 
     public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0010000000000000L});
-    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000000L,0x00000000A0200004L});
-    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0020000000000000L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0020000000000002L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0040000000000000L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0120000000000000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0200000000000000L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x000FFC0000000010L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x00000000007C0000L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000060L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0400000000000000L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000001800000L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0800000000000000L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x00000000001C0000L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x00000002A0200004L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000038000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000090L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0100000000000000L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200004L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000102400004L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0020000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000018L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000040000L,0x0000000040800000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x000000001C000000L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x000000000E000000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000000000E000002L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000030000000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x00000000C0000030L,0x0000002000000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000022L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x00000000000000A0L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000300000080L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x000003FC00000000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x8000000000001000L,0x00000000A0200404L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x00000000000000E0L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000038030L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0020000000100000L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000038032L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000000L,0x0000000A02000040L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0080000000080000L,0x0000000A02000040L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0200000000000000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0200000000000002L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0400000000000000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0800000000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x1200000000000000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x001FF80000000020L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000F80000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x8080000000000000L,0x0000000000060000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000003000000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000001C00000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000002A02000040L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000380000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x00000000000000A0L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000202000040L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000001024000040L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0200000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000080000L,0x0000000408000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000020L,0x0000000000000800L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x00000001C0000000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000000001C000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x000000001C000002L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000060000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000180000060L,0x0000020000000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000042L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x00000000000000C0L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000600000080L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x000007F800000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000001000L,0x0000000A02004048L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x00000000000000D0L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000070060L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0200000000200000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000000070062L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000070000L});
 
 }
\ No newline at end of file