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 2013/06/05 17:53:27 UTC
svn commit: r1489931 - in /uima/sandbox/ruta/trunk:
ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
ruta-docbook/src/docbook/tools.ruta.language.actions.xml
Author: pkluegl
Date: Wed Jun 5 15:53:27 2013
New Revision: 1489931
URL: http://svn.apache.org/r1489931
Log:
UIMA-2969
- adapted implementation of MARKONCE: "not if part of"
Modified:
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml
Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java?rev=1489931&r1=1489930&r2=1489931&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java Wed Jun 5 15:53:27 2013
@@ -21,8 +21,6 @@ package org.apache.uima.ruta.action;
import java.util.List;
-import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.ruta.RutaStream;
@@ -30,6 +28,7 @@ import org.apache.uima.ruta.expression.n
import org.apache.uima.ruta.expression.type.TypeExpression;
import org.apache.uima.ruta.rule.RuleElement;
import org.apache.uima.ruta.rule.RuleMatch;
+import org.apache.uima.ruta.type.RutaBasic;
import org.apache.uima.ruta.visitor.InferenceCrowd;
public class MarkOnceAction extends MarkAction {
@@ -44,28 +43,18 @@ public class MarkOnceAction extends Mark
List<Integer> indexList = getIndexList(element, list, stream);
List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(indexList,
element.getContainer());
+ Type targetType = type.getType(element.getParent());
for (AnnotationFS matchedAnnotation : matchedAnnotations) {
-
- CAS cas = stream.getCas();
- if (matchedAnnotation == null)
- return;
- Type t = type.getType(element.getParent());
- AnnotationFS createAnnotation = cas.createAnnotation(t, matchedAnnotation.getBegin(),
- matchedAnnotation.getEnd());
- boolean contains = false;
- FSIterator<AnnotationFS> iterator = cas.getAnnotationIndex(t).iterator(createAnnotation);
- while (iterator.isValid()
- && ((AnnotationFS) iterator.get()).getEnd() == createAnnotation.getEnd()) {
- AnnotationFS a = (AnnotationFS) iterator.get();
- if (a.getBegin() == createAnnotation.getBegin() && a.getEnd() == createAnnotation.getEnd()
- && a.getType().getName().equals(createAnnotation.getType().getName())) {
- contains = true;
+ boolean partof = false;
+ List<RutaBasic> basicsInWindow = stream.getBasicsInWindow(matchedAnnotation);
+ for (RutaBasic rutaBasic : basicsInWindow) {
+ if (rutaBasic.isPartOf(targetType)) {
+ partof = true;
break;
}
- iterator.moveToNext();
}
- if (!contains) {
- super.execute(match, element, stream, crowd);
+ if (!partof) {
+ createAnnotation(matchedAnnotation, element, stream, match);
}
}
}
Modified: uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml?rev=1489931&r1=1489930&r2=1489931&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml (original)
+++ uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml Wed Jun 5 15:53:27 2013
@@ -790,7 +790,8 @@ Document{-> MARKFAST(FirstName, FirstNam
<title>MARKONCE</title>
<para>
The MARKONCE action has the same functionality as the MARK
- action, but creates a new annotation only, if it is not yet existing.
+ action, but creates a new annotation only,
+ if each part of the matched annotation is not yet part of the given type.
</para>
<section>
<title>
@@ -809,7 +810,7 @@ Document{-> MARKFAST(FirstName, FirstNam
</para>
<para>
This rule matches on a free line followed by a Paragraph and
- annotates both in a single ParagraphAfterFreeline annotation, if it
+ annotates both in a single ParagraphAfterFreeline annotation, if no part
is not already annotated with ParagraphAfterFreeline annotation. The
two numerical expressions at the end of the MARKONCE action state
that the matched text of the first and the second rule elements are