You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2016/09/22 15:31:23 UTC

svn commit: r1761971 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java

Author: schor
Date: Thu Sep 22 15:31:23 2016
New Revision: 1761971

URL: http://svn.apache.org/viewvc?rev=1761971&view=rev
Log:
[UIMA-5115] rename noSubtype to the positive case matchType, add positionUsesType and skipEquals to control positioning and bounded ops for equals edge cases, add comments, have terminal operators take type arg from class arg, add following / preceding

Modified:
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java?rev=1761971&r1=1761970&r2=1761971&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/SelectFSs.java Thu Sep 22 15:31:23 2016
@@ -31,6 +31,7 @@ import org.apache.uima.jcas.tcas.Annotat
  * Comment codes:
  *   AI = implies AnnotationIndex
  *   Ordered = implies an ordered index not necessarily AnnotationIndex
+ *   BI = bounded iterator (boundedBy or bounding)
  */
 public interface SelectFSs<T extends FeatureStructure> {
   
@@ -64,6 +65,9 @@ public interface SelectFSs<T extends Fea
   SelectFSs<T> endWithinBounds();  // AI known as "strict"
   SelectFSs<T> endWithinBounds(boolean endWithinBounds); // AI
   
+  SelectFSs<T> matchType();      // exact type match (no subtypes)
+  SelectFSs<T> matchType(boolean matchType); // exact type match (no subtypes)
+
 //  SelectFSs<T> useTypePriorities();
 //  SelectFSs<T> useTypePriorities(boolean useTypePriorities);
   
@@ -83,6 +87,12 @@ public interface SelectFSs<T extends Fea
   SelectFSs<T> backwards();                  // ignored if not ordered index
   SelectFSs<T> backwards(boolean backwards); // ignored if not ordered index
   
+  SelectFSs<T> positionUsesType();           // ignored if not ordered index
+  SelectFSs<T> positionUsesType(boolean positionUsesType); // ignored if not ordered index
+  
+  SelectFSs<T> skipEquals();                 // ignored if not ordered index
+  SelectFSs<T> skipEquals(boolean skipEquals); // ignored if not ordered index
+  
 //  SelectFSs<T> noSubtypes();
 //  SelectFSs<T> noSubtypes(boolean noSubtypes);
 
@@ -93,6 +103,19 @@ public interface SelectFSs<T extends Fea
   
   /*********************************
    * starting position specification
+   * 
+   * Variations, controlled by: 
+   *   * typePriority
+   *   * positionUsesType
+   *   
+   * The positional specs imply starting at the 
+   *   - left-most (if multiple) FS at that position, or
+   *   - if no FS at the position, the next higher FS
+   *   - if !typePriority, equal test is only begin/end 
+   *     -- types ignored or not depending on positionUsesType 
+   *    
+   * shifts, if any, occur afterwards
+   *   - can be positive or negative
    *********************************/
   SelectFSs<T> startAt(TOP fs);  // Ordered
   SelectFSs<T> startAt(int begin, int end);   // AI
@@ -102,12 +125,17 @@ public interface SelectFSs<T extends Fea
     
   /*********************************
    * subselection based on bounds
+   *   - uses 
+   *     -- typePriority, 
+   *     -- positionUsesType, 
+   *     -- skipEquals
    *********************************/
   SelectFSs<T> at(Annotation fs);  // AI
   SelectFSs<T> at(int begin, int end);  // AI
   
   SelectFSs<T> coveredBy(Annotation fs);       // AI
   SelectFSs<T> coveredBy(int begin, int end);       // AI
+  
   SelectFSs<T> covering(Annotation fs);      // AI
   SelectFSs<T> covering(int begin, int end);      // AI
   
@@ -117,12 +145,12 @@ public interface SelectFSs<T extends Fea
    * terminal operations
    * returning other than SelectFSs
    *********************************/
-  <T extends FeatureStructure> FSIterator<T> fsIterator();
-  <T extends FeatureStructure> Iterator<T> iterator();
-  <T extends FeatureStructure> List<T> asList();
-  <T extends FeatureStructure> Spliterator<T> spliterator();
-  <T extends FeatureStructure> T get();
-  <T extends FeatureStructure> T single();
+  FSIterator<T> fsIterator();
+  Iterator<T> iterator();
+  List<T> asList();
+  Spliterator<T> spliterator();
+  T get();
+  T single();
   
   /********************************************
    * The methods below are alternatives 
@@ -131,4 +159,20 @@ public interface SelectFSs<T extends Fea
    * concise forms using positional arguments
    ********************************************/
   
+  /**
+   * Semantics: the arg is used to position.
+   * The position is 
+   *   - if the arg is a match, then the next/previous one not matching (skip over matches)
+   *     -- uses typePriority, positionUsesType, and skipEqual for match cas
+   *   - if the arg is not a match, the first position > or < arg 
+   */
+  SelectFSs<T> following(Annotation fs);
+  SelectFSs<T> following(int begin, int end);
+  SelectFSs<T> following(Annotation fs, int offset);
+  SelectFSs<T> following(int begin, int end, int offset);
+
+  SelectFSs<T> preceding(Annotation fs);
+  SelectFSs<T> preceding(int begin, int end);
+  SelectFSs<T> preceding(Annotation fs, int offset);
+  SelectFSs<T> preceding(int begin, int end, int offset);
 }