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/08/28 17:49:09 UTC

svn commit: r1518266 - in /uima/sandbox/ruta/trunk: ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/ ruta-core/src/main/java/org/apache/uima/ruta/action/ ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ ruta-core/src/test/java/org/apache/u...

Author: pkluegl
Date: Wed Aug 28 15:49:09 2013
New Revision: 1518266

URL: http://svn.apache.org/r1518266
Log:
UIMA-3228
- added MARKFIRST action

Added:
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java
    uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFirstActionTest.java
Modified:
    uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g
    uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
    uima/sandbox/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.language.actions.xml
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g Wed Aug 28 15:49:09 2013
@@ -189,6 +189,10 @@ MARKTABLE
 MARKLAST
 	:	'MARKLAST'
 	;
+	
+MARKFIRST
+	:	'MARKFIRST'
+	;
 
 REPLACE
 	:	'REPLACE'

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Wed Aug 28 15:49:09 2013
@@ -1280,6 +1280,7 @@ action  returns [AbstractRutaAction resu
 	| a = actionMarkScore
 	| a = actionMarkFast
 	| a = actionMarkLast
+	| a = actionMarkFirst
 	| a = actionReplace
 	| a = actionFilterType
 	| a = actionRetainType
@@ -1518,6 +1519,12 @@ actionMarkLast returns [AbstractRutaActi
     MARKLAST LPAREN type = typeExpression RPAREN
     {action = ActionFactory.createMarkLastAction(type, $blockDeclaration::env);}
     ;
+    
+actionMarkFirst returns [AbstractRutaAction action = null]
+    :   
+    MARKFIRST LPAREN type = typeExpression RPAREN
+    {action = ActionFactory.createMarkFirstAction(type, $blockDeclaration::env);}
+    ;
 
 actionReplace returns [AbstractRutaAction action = null]
     :   

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java Wed Aug 28 15:49:09 2013
@@ -269,4 +269,8 @@ public class ActionFactory {
     return new ImplicitMarkAction(te);
   }
 
+  public static AbstractRutaAction createMarkFirstAction(TypeExpression type, RutaBlock env) {
+    return new MarkFirstAction(type);
+  }
+
 }

Added: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java?rev=1518266&view=auto
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java (added)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java Wed Aug 28 15:49:09 2013
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.ruta.action;
+
+import java.util.List;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaStream;
+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 MarkFirstAction extends AbstractMarkAction {
+
+  public MarkFirstAction(TypeExpression type) {
+    super(type);
+  }
+
+  @Override
+  public void execute(RuleMatch match, RuleElement element, RutaStream stream, InferenceCrowd crowd) {
+    List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(null,
+            element.getContainer());
+    for (AnnotationFS matchedAnnotation : matchedAnnotations) {
+      RutaBasic beginAnchor = stream.getBeginAnchor(matchedAnnotation.getBegin());
+      createAnnotation(beginAnchor, element, stream, match);
+    }
+  }
+
+}

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java Wed Aug 28 15:49:09 2013
@@ -45,6 +45,7 @@ import org.apache.uima.ruta.action.Impli
 import org.apache.uima.ruta.action.LogAction;
 import org.apache.uima.ruta.action.MarkAction;
 import org.apache.uima.ruta.action.MarkFastAction;
+import org.apache.uima.ruta.action.MarkFirstAction;
 import org.apache.uima.ruta.action.MarkLastAction;
 import org.apache.uima.ruta.action.MarkOnceAction;
 import org.apache.uima.ruta.action.MarkTableAction;
@@ -113,6 +114,8 @@ public class ActionVerbalizer {
       return "MARKFAST";
     } else if (action instanceof MarkLastAction) {
       return "MARKLAST";
+    } else if (action instanceof MarkFirstAction) {
+      return "MARKFIRST";
     } else if (action instanceof ReplaceAction) {
       return "REPLACE";
     } else if (action instanceof RetainTypeAction) {
@@ -309,6 +312,9 @@ public class ActionVerbalizer {
     } else if (action instanceof MarkLastAction) {
       MarkLastAction a = (MarkLastAction) action;
       return name + verbalizer.verbalize(a.getType()) + ")";
+    } else if (action instanceof MarkFirstAction) {
+      MarkFirstAction a = (MarkFirstAction) action;
+      return name + verbalizer.verbalize(a.getType()) + ")";
     } else if (action instanceof ReplaceAction) {
       ReplaceAction a = (ReplaceAction) action;
       return name + verbalizer.verbalize(a.getReplacement()) + ")";

Added: uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFirstActionTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFirstActionTest.java?rev=1518266&view=auto
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFirstActionTest.java (added)
+++ uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFirstActionTest.java Wed Aug 28 15:49:09 2013
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.ruta.action;
+
+import static org.junit.Assert.assertEquals;
+
+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.cas.text.AnnotationIndex;
+import org.apache.uima.ruta.RutaTestUtils;
+import org.apache.uima.ruta.engine.Ruta;
+import org.junit.Test;
+
+public class MarkFirstActionTest {
+
+  @Test
+  public void test() {
+    String document = "Peter Kluegl, Joern Kottmann, Marshall Schor.";
+    String script = "Document{-> MARKFIRST(T1)};\n";
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(1, ai.size());
+    assertEquals("Peter", iterator.next().getCoveredText());
+    
+    if (cas != null) {
+      cas.release();
+    }
+
+  }
+}

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=1518266&r1=1518265&r2=1518266&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 Aug 28 15:49:09 2013
@@ -768,6 +768,34 @@ Document{-> MARKFAST(FirstName, FirstNam
     </section>
   </section>
 
+  <section id="ugr.tools.ruta.language.actions.markfirst">
+    <title>MARKFIRST</title>
+    <para>
+      The MARKFIRST action annotates the first token (basic annotation) of the matched
+      annotation with the given type.
+    </para>
+    <section>
+      <title>
+        <emphasis role="bold">Definition:</emphasis>
+      </title>
+      <para>
+        <programlisting><![CDATA[MARKFIRST(TypeExpression)]]></programlisting>
+      </para>
+    </section>
+    <section>
+      <title>
+        <emphasis role="bold">Example:</emphasis>
+      </title>
+      <para>
+        <programlisting><![CDATA[Document{->MARKFIRST(First)};]]></programlisting>
+      </para>
+      <para>
+        This rule annotates the first token of the document with the
+        annotation First.
+      </para>
+    </section>
+  </section>
+
   <section id="ugr.tools.ruta.language.actions.marklast">
     <title>MARKLAST</title>
     <para>

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g Wed Aug 28 15:49:09 2013
@@ -189,7 +189,11 @@ MARKTABLE
 MARKLAST
 	:	'MARKLAST'
 	;
-
+	
+MARKFIRST
+	:	'MARKFIRST'
+	;
+	
 REPLACE
 	:	'REPLACE'
 	;

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g Wed Aug 28 15:49:09 2013
@@ -1294,6 +1294,7 @@ result = ActionFactory.createEmptyAction
 	| a = actionMarkScore
 	| a = actionMarkFast
 	| a = actionMarkLast
+	| a = actionMarkFirst
 	| a = actionReplace
 	| a = actionRetainType
 	| a = actionFilterType
@@ -1557,6 +1558,13 @@ actionMarkLast returns [RutaAction actio
     RPAREN
     ;
 
+actionMarkFirst returns [RutaAction action = null]
+    :   
+    name = MARKFIRST LPAREN type = typeExpression 
+    {action = ActionFactory.createAction(name, type);}
+    RPAREN
+    ;
+
 
 actionReplace returns [RutaAction action = null]
     :   

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java?rev=1518266&r1=1518265&r2=1518266&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java Wed Aug 28 15:49:09 2013
@@ -36,7 +36,7 @@ public class RutaKeywords implements IRu
       "FILTERTYPE", "CREATE", "FILL", "MARKTABLE", "UNMARK", "TRANSFER", "MARKONCE", "TRIE",
       "GATHER", "EXEC", "MARKLAST", "ADD", "REMOVE", "MERGE", "GET", "GETLIST", "REMOVEDUPLICATE",
       "GETFEATURE", "MATCHEDTEXT", "CLEAR", "UNMARKALL", "SHIFT", "CONFIGURE", "DYNAMICANCHORING",
-      "TRIM", "ADDRETAINTYPE", "REMOVERETAINTYPE", "ADDFILTERTYPE", "REMOVEFILTERTYPE" };
+      "TRIM", "ADDRETAINTYPE", "REMOVERETAINTYPE", "ADDFILTERTYPE", "REMOVEFILTERTYPE", "MARKFIRST" };
 
   private static String[] basic = { "ALL", "ANY", "AMP", "BREAK", "W", "NUM", "PM", "Document",
       "MARKUP", "SW", "CW", "CAP", "PERIOD", "NBSP", "SENTENCEEND", "COLON", "COMMA", "SEMICOLON",