You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2018/12/29 20:57:44 UTC

svn commit: r1849942 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/rule/ test/java/org/apache/uima/ruta/expression/annotation/ test/java/org/apache/uima/ruta/rule/

Author: pkluegl
Date: Sat Dec 29 20:57:43 2018
New Revision: 1849942

URL: http://svn.apache.org/viewvc?rev=1849942&view=rev
Log:
UIMA-5945 + UIMA-5946: eval inlined condition rules only for matched rule element, also for wildcards

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaOptionalRuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java Sat Dec 29 20:57:43 2018
@@ -137,20 +137,21 @@ public abstract class AbstractRuleElemen
   }
 
   protected boolean matchInnerRules(RuleMatch ruleMatch, RutaStream stream, InferenceCrowd crowd) {
-    boolean inlinedRulesMatched = true;
+
     List<ScriptApply> list = processInlinedConditionRules(ruleMatch, stream, crowd);
-    if (list != null) {
-      inlinedRulesMatched = false;
-      for (ScriptApply scriptApply : list) {
-        if (scriptApply instanceof RuleApply) {
-          RuleApply ra = (RuleApply) scriptApply;
-          if (ra.applied > 0) {
-            inlinedRulesMatched = true;
-          }
+    if (list == null) {
+      return true;
+    }
+
+    for (ScriptApply scriptApply : list) {
+      if (scriptApply instanceof RuleApply) {
+        RuleApply ra = (RuleApply) scriptApply;
+        if (ra.applied > 0) {
+          return true;
         }
       }
     }
-    return inlinedRulesMatched;
+    return false;
   }
 
   protected List<RuleElementMatch> getMatch(RuleMatch ruleMatch,

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java Sat Dec 29 20:57:43 2018
@@ -567,8 +567,10 @@ public class ComposedRuleElement extends
     }
     match.setConditionInfo(evaluatedConditions);
     match.evaluateInnerMatches(true, stream);
-    boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
-    match.setInlinedRulesMatched(inlinedRulesMatched);
+    if (match.matched()) {
+      boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
+      match.setInlinedRulesMatched(inlinedRulesMatched);
+    }
   }
 
   @Override

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaOptionalRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaOptionalRuleElement.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaOptionalRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaOptionalRuleElement.java Sat Dec 29 20:57:43 2018
@@ -85,8 +85,10 @@ public class RutaOptionalRuleElement ext
       }
     }
     result.setConditionInfo(base, evaluatedConditions);
-    boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
-    result.setInlinedRulesMatched(inlinedRulesMatched);
+    if (result.matched()) {
+      boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
+      result.setInlinedRulesMatched(inlinedRulesMatched);
+    }
     ruleMatch.setMatched(ruleMatch.matched() && result.matched());
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java Sat Dec 29 20:57:43 2018
@@ -401,8 +401,10 @@ public class RutaRuleElement extends Abs
       }
     }
     result.setConditionInfo(base, evaluatedConditions);
-    boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
-    result.setInlinedRulesMatched(inlinedRulesMatched);
+    if (result.matched()) {
+      boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
+      result.setInlinedRulesMatched(inlinedRulesMatched);
+    }
     ruleMatch.setMatched(ruleMatch.matched() && result.matched());
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java Sat Dec 29 20:57:43 2018
@@ -666,6 +666,10 @@ public class WildCardRuleElement extends
       }
     }
     result.setConditionInfo(base, evaluatedConditions);
+    if (result.matched()) {
+      boolean inlinedRulesMatched = matchInnerRules(ruleMatch, stream, crowd);
+      result.setInlinedRulesMatched(inlinedRulesMatched);
+    }
     ruleMatch.setMatched(ruleMatch.matched() && result.matched());
   }
 

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java Sat Dec 29 20:57:43 2018
@@ -755,12 +755,14 @@ public class AnnotationLabelExpressionTe
 
     String script = "W.begin==0{-> T1};\n";
     script += "T1 a:ANY{REGEXP(\"c\")}->{a{-> T2};};\n";
+    script += "T1 a:ANY{REGEXP(\"c\")}<-{a{-> T3};};\n";
 
     CAS cas = RutaTestUtils.getCAS(document);
     Ruta.apply(cas, script);
 
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "a");
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);
 
   }
 

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java?rev=1849942&r1=1849941&r2=1849942&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java Sat Dec 29 20:57:43 2018
@@ -195,4 +195,17 @@ public class WildCard2Test {
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "1", "1");
   }
 
+  @Test
+  public void testInlinedRulesAtWildcard() throws Exception {
+    String document = "1 a a a 1";
+    String script = "NUM #{->T1}<-{PERIOD;} NUM;\n";
+    script += "NUM #{->T2}<-{SW;} NUM;\n";
+
+    CAS cas = RutaTestUtils.getCAS(document);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 0);
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "a a a");
+  }
+
 }