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");
+ }
+
}