You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/01/11 21:36:05 UTC

svn commit: r495367 - in /incubator/uima/uimaj/trunk/uima-docbooks/src: docbook/references/ docbook/tutorials_and_users_guides/ olink/references/ olink/tutorials_and_users_guides/

Author: alally
Date: Thu Jan 11 12:36:04 2007
New Revision: 495367

URL: http://svn.apache.org/viewvc?view=rev&rev=495367
Log:
Documentation updates for default bag indexes 
(and clarifying some index concepts in general).
UIMA=173: http://issues.apache.org/jira/browse/UIMA-173

Modified:
    incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.cas.xml
    incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.xml.component_descriptor.xml
    incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/tutorials_and_users_guides/annotator_analysis_engine_guide.xml
    incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/htmlsingle-target.db
    incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/pdf-target.db
    incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/htmlsingle-target.db
    incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/pdf-target.db

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.cas.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.cas.xml?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.cas.xml (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.cas.xml Thu Jan 11 12:36:04 2007
@@ -657,10 +657,10 @@
     <para>Each CAS can have many indexes associated with it. Each index is represented by an
       instance of the type org.apache.uima.cas.FSIndex. You use the object
       org.apache.uima.cas.FSIndexRepository, accessible via a method on a CAS object, to
-      retrieve instances of the index object. There are methods that let you select the index
-      by name, or by name and type. Since each index is already associated with a type, the
-      passing of an additional type parameter is valid only if the type passed in is the same
-      type or a subtype of the one declared in the index specification for this index. If you
+      retrieve instances of indexes. There are methods that let you select the index
+      by name, by type, or by both name and type. Since each index is already associated with a type, 
+      passing both a name and a type is valid only if the type passed in is the same
+      type or a subtype of the one declared in the index specification for the named index. If you
       pass in a subtype, the returned FSIndex object refers to an index that will return only
       items belonging to that subtype (or subtypes of that subtype).</para>
     
@@ -670,22 +670,49 @@
       order, where the sort order is specified in the XML index definition. This XML is part of
       the Component Descriptor, see <olink targetdoc="&uima_docs_ref;"
         targetptr="ugr.ref.xml.component_descriptor.aes.index"/>.</para>
-    
+       
     <para>Feature structures should not be added to or removed from indexes while iterating
       over them; a ConcurrentModificationException is thrown when this is detected.
       Certain operations are allowed with the iterators after modification, which can
       <quote>reset</quote> this condition, such as moving to beginning, end, or moving to a
       particular feature structure. So - if you have to modify the index, you can move it back to
       the last FS you had retrieved from the iterator, and then continue, if that makes sense in
-      your application.</para>
+      your application.</para>   
+
+    <section id="ugr.ref.cas.index.built_in_indexes">
+      <title>Built-in Indexes</title>
+      
+      <para>The CAS contains a built-in index for the type <literal>uima.tcas.Annotation</literal>, which sorts
+        annotations in the order in which they appear in the document. Annotations are sorted first by increasing
+        <literal>begin</literal> position. Ties are then broken by <emphasis>decreasing</emphasis>
+        <literal>end</literal> position (so that longer annotations come first). Annotations that match in both
+        their <literal>begin</literal> and <literal>end</literal> features are sorted using the Type Priority
+        (see <olink targetdoc="&uima_docs_ref;"
+          targetptr="ugr.ref.xml.component_descriptor.aes.type_priority"/> )</para>
+      
+      <para>For all types that are not subtypes of <literal>uima.tcas.Annotation</literal>, if there is no custom
+        index defined in the Component Descriptor, the CAS will create a default bag (unsorted) index to hold
+        FeatureStructures of that type.</para>
+    </section>
+
     
+    <section id="ugr.ref.cas.index.adding_to_indexes">
+      <title>Adding Feature Structures to the Indexes</title>
+      
+      <para>Feature Structures are added to the indexes by calling the
+        <literal>FSIndexRepository.addFS(FeatureStructure)</literal> method or the equivalent convenience
+        method <literal>CAS.addFsToIndexes(FeatureStructure)</literal>. This adds the Feature Structure to
+        <emphasis>all</emphasis> indexes that are defined for the type of that FeatureStructure (or any of its
+        supertypes). Note that you should not add a Feature Structure to the indexes until you have set values for all
+        of the features that may be used as sort keys in an index.</para>
+    </section>
+        
     <section id="ugr.ref.cas.index.iterators">
       <title>Iterators</title>
       
-      <para>Iterators are objects of class
-        <literal>org.apache.uima.cas.FSIterator.</literal> This class implements the
-        normal Java iterator methods, plus additional ones that allow moving both forwards
-        and backwards.</para>
+      <para>Iterators are objects of class <literal>org.apache.uima.cas.FSIterator.</literal> This class
+        extends <literal>java.util.Iterator</literal> and implements the normal Java iterator methods, plus
+        additional ones that allow moving both forwards and backwards.</para>
       
     </section>
     

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.xml.component_descriptor.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.xml.component_descriptor.xml?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.xml.component_descriptor.xml (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/references/ref.xml.component_descriptor.xml Thu Jan 11 12:36:04 2007
@@ -983,15 +983,15 @@
 
 </fsIndexCollection>]]></programlisting>
             
-            <para>The <literal>fsIndexCollection</literal> element
-              declares<emphasis> Feature Structure Indexes</emphasis>, which define an
-              index that holds feature structures of a given type. Information in the CAS is
-              always accessed through an index. There is a built-in default annotation
-              index declared which can be used to access instances of type Annotation (or its
-              subtypes), but if there is a need for a specialized index it must be declared in
-              this element. See <olink targetdoc="&uima_docs_ref;"
-                targetptr="ugr.ref.cas.indexes_and_iterators"/> for details on FS
-              indexes.</para>
+            <para>The <literal>fsIndexCollection</literal> element declares<emphasis> Feature Structure
+              Indexes</emphasis>, which define an index that holds feature structures of a given type.
+              Information in the CAS is always accessed through an index. There is a built-in default annotation
+              index declared which can be used to access instances of type
+              <literal>uima.tcas.Annotation</literal> (or its subtypes), sorted based on their
+              <literal>begin</literal> and <literal>end</literal> features. For all other types, there is a
+              default, unsorted (bag) index. If there is a need for a specialized index it must be declared in this
+              element of the descriptor. See <olink targetdoc="&uima_docs_ref;"
+                targetptr="ugr.ref.cas.indexes_and_iterators"/> for details on FS indexes.</para>
             
             <para>Like type systems and type priorities, an
               <literal>fsIndexCollection</literal> can declare a
@@ -1037,10 +1037,13 @@
               <literal>&lt;kind&gt;</literal> of index. Sorted indexes enforce an
               ordering of feature structures, and may contain duplicates. Bag indexes do
               not enforce ordering, and also may contain duplicates. Set indexes do not
-              enforce ordering and may not contain duplicates. If the
-              <literal>&lt;kind&gt;</literal>element is omitted, it will default to
+              enforce ordering and may not contain duplicates.  If the <literal>&lt;kind&gt;</literal>element is omitted, it will default to
               sorted, which is the most common type of index.</para>
             
+            <note><para>There is usually no need to explicitly declare a Bag index in your descriptor.  
+              As of UIMA v2.1, if you do not declare any index for a type (or any of its 
+              supertypes), a Bag index will be automatically created.</para></note>
+                        
             <para>An index may define one or more <emphasis>keys</emphasis>. These keys
               determine the sort order of the feature structures within a sorted index, and
               determine equality for set indexes. Bag indexes do not use keys. Keys are

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/tutorials_and_users_guides/annotator_analysis_engine_guide.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/tutorials_and_users_guides/annotator_analysis_engine_guide.xml?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/tutorials_and_users_guides/annotator_analysis_engine_guide.xml (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/docbook/tutorials_and_users_guides/annotator_analysis_engine_guide.xml Thu Jan 11 12:36:04 2007
@@ -336,58 +336,57 @@
     <section id="ugr.tug.aae.developing_annotator_code">
       <title>Developing Your Annotator Code</title>
       
-      <para>Annotator implementations all implement a standard interface
-        (AnalysisComponent), having several methods, the most important of which are:
+      <para>Annotator implementations all implement a standard interface (AnalysisComponent), having several
+        methods, the most important of which are:
         
         <itemizedlist spacing="compact">
-          <listitem><para><literal>initialize</literal>, </para></listitem>
+          <listitem>
+            <para><literal>initialize</literal>, </para>
+          </listitem>
           
-          <listitem><para><literal>process</literal>, and </para></listitem>
+          <listitem>
+            <para><literal>process</literal>, and </para>
+          </listitem>
           
-          <listitem><para><literal>destroy</literal>. </para></listitem>
+          <listitem>
+            <para><literal>destroy</literal>. </para>
+          </listitem>
         </itemizedlist></para>
       
-      <para><literal>initialize</literal> is called by the framework once when it first
-        creates an instance of the annotator class. <literal>process</literal> is called
-        once per item being processed. <literal>destroy</literal> may be called by the
-        application when it is done. There is a default implementation of this interface for
-        annotators using the JCas, called JCasAnnotator_ImplBase, which has
+      <para><literal>initialize</literal> is called by the framework once when it first creates an instance of the
+        annotator class. <literal>process</literal> is called once per item being processed.
+        <literal>destroy</literal> may be called by the application when it is done. There is a default
+        implementation of this interface for annotators using the JCas, called JCasAnnotator_ImplBase, which has
         implementations of all required methods except for the process method.</para>
       
-      <para>Our annotator class extends the JCasAnnotator_ImplBase; most annotators that
-        use the JCas will extend from this class, so they only have to implement the process
-        method. This class is not restricted to handling just text; see <olink
-          targetdoc="&uima_docs_tutorial_guides;"
-          targetptr="ugr.tug.aas"/>.</para>
-      
-      <para>Annotators are not required to extend from the JCasAnnotator_ImplBase class;
-        they may instead directly implement the AnalysisComponent interface, and provide
-        all method implementations themselves. <footnote>
-        <para>Note that AnalysisComponent is not specific to JCAS. There is a method
-          getRequiredCasInterface() which the user would have to implement to return
-          <literal>JCas.class</literal>. Then in the <literal>process(AbstractCas
-          cas)</literal> method, they would need to typecas <literal>cas</literal> to
-          type <literal>JCas</literal>.</para></footnote> This allows you to have your
-        annotator inherit from some other superclass if necessary. If you would like to do
-        this, see the JavaDocs for JCasAnnotator for descriptions of the methods you must
-        implement.</para>
-      
-      <para>Annotator classes need to be public and have public, 0-argument constructors,
-        so that they can be instantiated by the framework <footnote><para> Although Java
-        classes in which you do not define any constructor will, by default, have a 0-argument
-        constructor that doesn&apos;t do anything, a class in which you have defined at least
-        one constructor does not get a default 0-argument constructor.</para> </footnote>
-        .</para>
-      
-      <para>The class definition for our RoomNumberAnnotator implements the process
-        method, and is shown here. You can find the source for this in the
-        <literal>uimaj_examples/src/org/apache/uima/tutorial/ex1/RoomNumberAnnotator.java</literal>
-        . <note><para>In Eclipse, in the <quote>Package Explorer</quote> view, this will
-        appear by default in the project <literal>uimaj_examples</literal>, in the folder
-        <literal>src</literal>, in the package
-        <literal>org.apache.uima.tutorial.ex1</literal>.</para></note> In Eclipse,
-        open the RoomNumberAnnotator.java in the uimaj_examples project, under the src
-        directory.</para>
+      <para>Our annotator class extends the JCasAnnotator_ImplBase; most annotators that use the JCas will extend
+        from this class, so they only have to implement the process method. This class is not restricted to handling
+        just text; see <olink targetdoc="&uima_docs_tutorial_guides;" targetptr="ugr.tug.aas"/>.</para>
+      
+      <para>Annotators are not required to extend from the JCasAnnotator_ImplBase class; they may instead
+        directly implement the AnalysisComponent interface, and provide all method implementations themselves.
+        <footnote>
+        <para>Note that AnalysisComponent is not specific to JCAS. There is a method getRequiredCasInterface()
+          which the user would have to implement to return <literal>JCas.class</literal>. Then in the
+          <literal>process(AbstractCas cas)</literal> method, they would need to typecas
+          <literal>cas</literal> to type <literal>JCas</literal>.</para></footnote> This allows you to have
+        your annotator inherit from some other superclass if necessary. If you would like to do this, see the JavaDocs
+        for JCasAnnotator for descriptions of the methods you must implement.</para>
+      
+      <para>Annotator classes need to be public and have public, 0-argument constructors, so that they can be
+        instantiated by the framework <footnote>
+        <para> Although Java classes in which you do not define any constructor will, by default, have a 0-argument
+          constructor that doesn&apos;t do anything, a class in which you have defined at least one constructor does
+          not get a default 0-argument constructor.</para> </footnote> .</para>
+      
+      <para>The class definition for our RoomNumberAnnotator implements the process method, and is shown here. You
+        can find the source for this in the
+        <literal>uimaj_examples/src/org/apache/uima/tutorial/ex1/RoomNumberAnnotator.java</literal> .
+        <note>
+        <para>In Eclipse, in the <quote>Package Explorer</quote> view, this will appear by default in the project
+          <literal>uimaj_examples</literal>, in the folder <literal>src</literal>, in the package
+          <literal>org.apache.uima.tutorial.ex1</literal>.</para></note> In Eclipse, open the
+        RoomNumberAnnotator.java in the uimaj_examples project, under the src directory.</para>
       
       
       <programlisting>package org.apache.uima.tutorial.ex1;
@@ -415,24 +414,21 @@
   }
 }</programlisting>
       
-      <para>The two Java class fields, mYorktownPattern and mHawthornePattern, hold
-        regular expressions that will be used in the process method. Note that these two
-        fields are part of the Java implementation of the annotator code, and not a part of the
-        CAS type system. We are using the regular expression facility that is built into Java
-        1.4. It is not critical that you know the details of how this works, but if you are
-        curious the details can be found in the Java API docs for the java.util.regex
-        package.</para>
-      
-      <para>The only method that we are required to implement is process. This method is
-        typically called once for each document that is being analyzed. This method takes one
-        argument, which is a JCas instance; this holds the document to be analyzed and all of
-        the analysis results. <footnote><para>Version 1 of UIMA specified an additional
-        parameter, the ResultSpecification. This provides a specification of which types
-        and features are desired to be computed and "output" from this annotator. Its use is
-        optional; many annotators ignore it.</para><para> This parameter has been
-        replaced by specific set/getResultSpecification() methods, which allow the
-        annotator to receive a signal (a method call) when the result specification
-        changes.</para></footnote></para>
+      <para>The two Java class fields, mYorktownPattern and mHawthornePattern, hold regular expressions that
+        will be used in the process method. Note that these two fields are part of the Java implementation of the
+        annotator code, and not a part of the CAS type system. We are using the regular expression facility that is
+        built into Java 1.4. It is not critical that you know the details of how this works, but if you are curious the
+        details can be found in the Java API docs for the java.util.regex package.</para>
+      
+      <para>The only method that we are required to implement is process. This method is typically called once for
+        each document that is being analyzed. This method takes one argument, which is a JCas instance; this holds the
+        document to be analyzed and all of the analysis results. <footnote>
+        <para>Version 1 of UIMA specified an additional parameter, the ResultSpecification. This provides a
+          specification of which types and features are desired to be computed and "output" from this annotator. Its
+          use is optional; many annotators ignore it.</para>
+        <para> This parameter has been replaced by specific set/getResultSpecification() methods, which allow
+          the annotator to receive a signal (a method call) when the result specification changes.</para>
+        </footnote></para>
       
       
       <programlisting>public void process(JCas aJCas) {
@@ -465,9 +461,9 @@
 }
 </programlisting>
       
-      <para>The Matcher class is part of the java.util.regex package and is used to find the
-        room numbers in the document text. When we find one, recording the annotation is as
-        simple as creating a new Java object and calling some set methods:</para>
+      <para>The Matcher class is part of the java.util.regex package and is used to find the room numbers in the
+        document text. When we find one, recording the annotation is as simple as creating a new Java object and
+        calling some set methods:</para>
       
       
       <programlisting>RoomNumber annotation = new RoomNumber(aJCas);
@@ -476,21 +472,27 @@
 annotation.setBuilding("Yorktown");
 </programlisting>
       
-      <para>The <literal>RoomNumber</literal> class was generated from the type system
-        description by the Component Descriptor Editor or the JCasGen tool, as discussed in
-        the previous section.</para>
-      
-      <para>Finally, we call annotation.addToIndexes() to add the new annotation to the
-        indexes maintained in the CAS. By default, the CAS implementation used for analysis
-        of text documents keeps an index of all annotations in their order from beginning to
-        end of the document. Subsequent annotators or applications use the indexes to
-        iterate over the annotations. It is also possible to define your own custom indexes in
-        the CAS (see <olink targetdoc="&uima_docs_ref;" targetptr="ugr.ref.cas"/> for
-        details).</para> <note><para> If you don&apos;t add the instance to the indexes, it
-      cannot be retrieved by down-stream annotators, using the indexes. </para></note>
+      <para>The <literal>RoomNumber</literal> class was generated from the type system description by the
+        Component Descriptor Editor or the JCasGen tool, as discussed in the previous section.</para>
+      
+      <para>Finally, we call <literal>annotation.addToIndexes()</literal> to add the new annotation to the
+        indexes maintained in the CAS. By default, the CAS implementation used for analysis of text documents keeps
+        an index of all annotations in their order from beginning to end of the document. Subsequent annotators or
+        applications use the indexes to iterate over the annotations. </para>
+      
+      <note>
+      <para> If you don&apos;t add the instance to the indexes, it cannot be retrieved by down-stream annotators,
+        using the indexes. </para></note>
+      
+      <note>
+      <para>You can also call <literal>addToIndexes()</literal> on Feature Structures that are not subtypes of
+        <literal>uima.tcas.Annotation</literal>, but these will not be sorted in any particular way. If you want
+        to specify a sort order, you can define your own custom indexes in the CAS: see <olink
+          targetdoc="&uima_docs_ref;" targetptr="ugr.ref.cas"/> and <olink targetdoc="&uima_docs_ref;"
+          targetptr="ugr.ref.xml.component_descriptor.aes.index"/> for details.</para></note>
       
-      <para>We&apos;re almost ready to test the RoomNumberAnnotator. There is just one more
-        step remaining.</para>
+      <para>We&apos;re almost ready to test the RoomNumberAnnotator. There is just one more step
+        remaining.</para>
     </section>
     <section id="ugr.tug.aae.creating_xml_descriptor">
       <title>Creating the XML Descriptor</title>
@@ -1220,15 +1222,13 @@
     <section id="ugr.tug.aae.reading_results_previous_annotators">
       <title>Reading the Results of Previous Annotators</title>
       
-      <para>So far, we have been looking at annotators that look directly at the document
-        text. However, annotators can also use the results of other annotators. One useful
-        thing we can do at this point is look for the co-occurrence of a Date, a RoomNumber, and
-        two Times &ndash; and annotate that as a Meeting.</para>
-      
-      <para>The CAS maintains <emphasis>indexes</emphasis> of annotations, and from an
-        index you can obtain an iterator that allows you to step through all annotations of a
-        particular type. Here&apos;s some example code that would iterate over all of the
-        TimeAnnot annotations in the JCas:
+      <para>So far, we have been looking at annotators that look directly at the document text. However, annotators
+        can also use the results of other annotators. One useful thing we can do at this point is look for the
+        co-occurrence of a Date, a RoomNumber, and two Times &ndash; and annotate that as a Meeting.</para>
+      
+      <para>The CAS maintains <emphasis>indexes</emphasis> of annotations, and from an index you can obtain an
+        iterator that allows you to step through all annotations of a particular type. Here&apos;s some example code
+        that would iterate over all of the TimeAnnot annotations in the JCas:
         
         
         <programlisting>JFSIndexRepository indexes = aJCas.getJFSIndexRepository();
@@ -1241,27 +1241,32 @@
 }
 </programlisting></para>
       
-      <para>Now that we&apos;ve explained the basics, let&apos;s take a look at the process
-        method for
-        <literal>org.apache.uima.tutorial.ex4.MeetingAnnotator</literal>. Since
-        we&apos;re looking for a combination of a RoomNumber, a Date, and two Times, there are
-        four nested iterators. (There&apos;s surely a better algorithm for doing this, but
-        to keep things simple we&apos;re just going to look at every combination of the four
-        items.)</para>
-      
-      <para>For each combination of the four annotations, we compute the span of text that
-        includes all of them, and then we check to see if that span is smaller than a
-        <quote>window</quote> size, a configuration parameter. There are also some checks
-        to make sure that we don&apos;t annotate the same span of text multiple times. If all
-        the checks pass, we create a Meeting annotation over the whole span. There&apos;s
-        really nothing to it!</para>
+      <note>
+      <para>You can also use the method
+        <literal>JFSIndexRepository.getAllIndexedFS(YourClass.type)</literal>, which returns an iterator
+        over all instances of <literal>YourClass</literal> in no particular order. This can be useful for types
+        that are not subtypes of the built-in Annotation type and which therefore have no default sort order.</para>
+      <para>Also, if you've defined your own custom index as described in <olink targetdoc="&uima_docs_ref;"
+          targetptr="ugr.ref.xml.component_descriptor.aes.index"/>, you can get an iterator over that
+        specific index by calling <literal>JFSIndexRepository.getIndex(label)</literal>.</para></note>
+      
+      <para>Now that we&apos;ve explained the basics, let&apos;s take a look at the process method for
+        <literal>org.apache.uima.tutorial.ex4.MeetingAnnotator</literal>. Since we&apos;re looking for a
+        combination of a RoomNumber, a Date, and two Times, there are four nested iterators. (There&apos;s surely a
+        better algorithm for doing this, but to keep things simple we&apos;re just going to look at every combination
+        of the four items.)</para>
+      
+      <para>For each combination of the four annotations, we compute the span of text that includes all of them, and
+        then we check to see if that span is smaller than a <quote>window</quote> size, a configuration parameter.
+        There are also some checks to make sure that we don&apos;t annotate the same span of text multiple times. If all
+        the checks pass, we create a Meeting annotation over the whole span. There&apos;s really nothing to
+        it!</para>
       
       <para>The XML descriptor, located in
-        <literal>examples/descriptors/tutorial/ex4/MeetingAnnotator.xml</literal>
-        , is also very straightforward. An important difference from previous descriptors
-        is that this is the first annotator we&apos;ve discussed that has input
-        requirements. This can be seen on the <quote>Capabilities</quote> page of the
-        Component Descriptor Editor:</para>
+        <literal>examples/descriptors/tutorial/ex4/MeetingAnnotator.xml</literal> , is also very
+        straightforward. An important difference from previous descriptors is that this is the first annotator
+        we&apos;ve discussed that has input requirements. This can be seen on the <quote>Capabilities</quote>
+        page of the Component Descriptor Editor:</para>
       
       
       <screenshot>
@@ -1274,26 +1279,24 @@
      </mediaobject>
    </screenshot>
       
-      <para>If we were to run the MeetingAnnotator on its own, it wouldn&apos;t detect
-        anything because it wouldn&apos;t have any input annotations to work with. The
-        required input annotations can be produced by the RoomNumber and DateTime
-        annotators. So, we create an aggregate Analysis Engine containing these two
-        annotators, followed by the Meeting annotator. This aggregate is illustrated in
-          <xref linkend="ugr.tug.aae.fig.aggregate_for_meeting_annotator"/>. The
-        descriptor for this is in
-        <literal>examples/descriptors/tutorial/ex4/MeetingDetectorAE.xml</literal>
-        . Give it a try in the Document Analyzer.
+      <para>If we were to run the MeetingAnnotator on its own, it wouldn&apos;t detect anything because it
+        wouldn&apos;t have any input annotations to work with. The required input annotations can be produced by the
+        RoomNumber and DateTime annotators. So, we create an aggregate Analysis Engine containing these two
+        annotators, followed by the Meeting annotator. This aggregate is illustrated in <xref
+          linkend="ugr.tug.aae.fig.aggregate_for_meeting_annotator"/>. The descriptor for this is in
+        <literal>examples/descriptors/tutorial/ex4/MeetingDetectorAE.xml</literal> . Give it a try in the
+        Document Analyzer.
         
         <figure id="ugr.tug.aae.fig.aggregate_for_meeting_annotator">
-          <title>An Aggregate Analysis Engine where an internal component uses output from
-            previous engines</title>
+          <title>An Aggregate Analysis Engine where an internal component uses output from previous
+            engines</title>
           <mediaobject>
             <imageobject>
-              <imagedata width="555px" format="PNG"
-                fileref="&imgroot;image034.png"/>
+              <imagedata width="555px" format="PNG" fileref="&imgroot;image034.png"/>
             </imageobject>
-            <textobject><phrase>An Aggregate Analysis Engine where an internal
-              component uses output from previous engines. </phrase></textobject>
+            <textobject><phrase>An Aggregate Analysis Engine where an internal component uses output from
+              previous engines. </phrase>
+            </textobject>
           </mediaobject>
         </figure> </para>
       

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/htmlsingle-target.db
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/htmlsingle-target.db?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/htmlsingle-target.db (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/htmlsingle-target.db Thu Jan 11 12:36:04 2007
@@ -311,17 +311,21 @@
       <div element="section" href="#ugr.ref.cas.indexes_and_iterators" number="4.7" targetptr="ugr.ref.cas.indexes_and_iterators">
          <ttl>Indexes and Iterators</ttl>
          <xreftext>Section 4.7, “Indexes and Iterators”</xreftext>
-         <div element="section" href="#ugr.ref.cas.index.iterators" number="4.7.1" targetptr="ugr.ref.cas.index.iterators">
+         <div element="section" href="#ugr.ref.cas.index.adding_to_indexes" number="4.7.1" targetptr="ugr.ref.cas.index.adding_to_indexes">
+            <ttl>Adding Feature Structures to the Indexes</ttl>
+            <xreftext>Section 4.7.1, “Adding Feature Structures to the Indexes”</xreftext>
+         </div>
+         <div element="section" href="#ugr.ref.cas.index.iterators" number="4.7.2" targetptr="ugr.ref.cas.index.iterators">
             <ttl>Iterators</ttl>
-            <xreftext>Section 4.7.1, “Iterators”</xreftext>
+            <xreftext>Section 4.7.2, “Iterators”</xreftext>
          </div>
-         <div element="section" href="#ugr.ref.cas.index.annotation_index" number="4.7.2" targetptr="ugr.ref.cas.index.annotation_index">
+         <div element="section" href="#ugr.ref.cas.index.annotation_index" number="4.7.3" targetptr="ugr.ref.cas.index.annotation_index">
             <ttl>Special iterators for Annotation types</ttl>
-            <xreftext>Section 4.7.2, “Special iterators for Annotation types”</xreftext>
+            <xreftext>Section 4.7.3, “Special iterators for Annotation types”</xreftext>
          </div>
-         <div element="section" href="#ugr.ref.cas.index.constraints_and_filtered_iterators" number="4.7.3" targetptr="ugr.ref.cas.index.constraints_and_filtered_iterators">
+         <div element="section" href="#ugr.ref.cas.index.constraints_and_filtered_iterators" number="4.7.4" targetptr="ugr.ref.cas.index.constraints_and_filtered_iterators">
             <ttl>Constraints and Filtered iterators</ttl>
-            <xreftext>Section 4.7.3, “Constraints and Filtered iterators”</xreftext>
+            <xreftext>Section 4.7.4, “Constraints and Filtered iterators”</xreftext>
          </div>
       </div>
       <div element="section" href="#ugr.ref.cas.guide_to_javadocs" number="4.8" targetptr="ugr.ref.cas.guide_to_javadocs">

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/pdf-target.db
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/pdf-target.db?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/pdf-target.db (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/olink/references/pdf-target.db Thu Jan 11 12:36:04 2007
@@ -311,17 +311,21 @@
       <div element="section" href="#ugr.ref.cas.indexes_and_iterators" number="4.7" targetptr="ugr.ref.cas.indexes_and_iterators">
          <ttl>Indexes and Iterators</ttl>
          <xreftext>Section 4.7, “Indexes and Iterators”</xreftext>
-         <div element="section" href="#ugr.ref.cas.index.iterators" number="4.7.1" targetptr="ugr.ref.cas.index.iterators">
+         <div element="section" href="#ugr.ref.cas.index.adding_to_indexes" number="4.7.1" targetptr="ugr.ref.cas.index.adding_to_indexes">
+            <ttl>Adding Feature Structures to the Indexes</ttl>
+            <xreftext>Section 4.7.1, “Adding Feature Structures to the Indexes”</xreftext>
+         </div>
+         <div element="section" href="#ugr.ref.cas.index.iterators" number="4.7.2" targetptr="ugr.ref.cas.index.iterators">
             <ttl>Iterators</ttl>
-            <xreftext>Section 4.7.1, “Iterators”</xreftext>
+            <xreftext>Section 4.7.2, “Iterators”</xreftext>
          </div>
-         <div element="section" href="#ugr.ref.cas.index.annotation_index" number="4.7.2" targetptr="ugr.ref.cas.index.annotation_index">
+         <div element="section" href="#ugr.ref.cas.index.annotation_index" number="4.7.3" targetptr="ugr.ref.cas.index.annotation_index">
             <ttl>Special iterators for Annotation types</ttl>
-            <xreftext>Section 4.7.2, “Special iterators for Annotation types”</xreftext>
+            <xreftext>Section 4.7.3, “Special iterators for Annotation types”</xreftext>
          </div>
-         <div element="section" href="#ugr.ref.cas.index.constraints_and_filtered_iterators" number="4.7.3" targetptr="ugr.ref.cas.index.constraints_and_filtered_iterators">
+         <div element="section" href="#ugr.ref.cas.index.constraints_and_filtered_iterators" number="4.7.4" targetptr="ugr.ref.cas.index.constraints_and_filtered_iterators">
             <ttl>Constraints and Filtered iterators</ttl>
-            <xreftext>Section 4.7.3, “Constraints and Filtered iterators”</xreftext>
+            <xreftext>Section 4.7.4, “Constraints and Filtered iterators”</xreftext>
          </div>
       </div>
       <div element="section" href="#ugr.ref.cas.guide_to_javadocs" number="4.8" targetptr="ugr.ref.cas.guide_to_javadocs">

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/htmlsingle-target.db
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/htmlsingle-target.db?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/htmlsingle-target.db (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/htmlsingle-target.db Thu Jan 11 12:36:04 2007
@@ -96,10 +96,10 @@
             <ttl>Reading the Results of Previous Annotators</ttl>
             <xreftext>Section 1.3.3, “Reading the Results of Previous Annotators”</xreftext>
             <obj element="figure" href="#ugr.tug.aae.fig.aggregate_for_meeting_annotator" number="1.2" targetptr="ugr.tug.aae.fig.aggregate_for_meeting_annotator">
-               <ttl>An Aggregate Analysis Engine where an internal component uses output from
-            previous engines</ttl>
-               <xreftext>Figure 1.2, “An Aggregate Analysis Engine where an internal component uses output from
-            previous engines”</xreftext>
+               <ttl>An Aggregate Analysis Engine where an internal component uses output from previous
+            engines</ttl>
+               <xreftext>Figure 1.2, “An Aggregate Analysis Engine where an internal component uses output from previous
+            engines”</xreftext>
             </obj>
          </div>
       </div>

Modified: incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/pdf-target.db
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/pdf-target.db?view=diff&rev=495367&r1=495366&r2=495367
==============================================================================
--- incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/pdf-target.db (original)
+++ incubator/uima/uimaj/trunk/uima-docbooks/src/olink/tutorials_and_users_guides/pdf-target.db Thu Jan 11 12:36:04 2007
@@ -96,10 +96,10 @@
             <ttl>Reading the Results of Previous Annotators</ttl>
             <xreftext>Section 1.3.3, “Reading the Results of Previous Annotators”</xreftext>
             <obj element="figure" href="#ugr.tug.aae.fig.aggregate_for_meeting_annotator" number="1.2" targetptr="ugr.tug.aae.fig.aggregate_for_meeting_annotator">
-               <ttl>An Aggregate Analysis Engine where an internal component uses output from
-            previous engines</ttl>
-               <xreftext>Figure 1.2, “An Aggregate Analysis Engine where an internal component uses output from
-            previous engines”</xreftext>
+               <ttl>An Aggregate Analysis Engine where an internal component uses output from previous
+            engines</ttl>
+               <xreftext>Figure 1.2, “An Aggregate Analysis Engine where an internal component uses output from previous
+            engines”</xreftext>
             </obj>
          </div>
       </div>