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 2012/11/30 14:00:13 UTC
svn commit: r1415610 [2/4] - in
/uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook:
language/ workbench/
Modified: uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.basic_annotations.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.basic_annotations.xml?rev=1415610&r1=1415609&r2=1415610&view=diff
==============================================================================
--- uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.basic_annotations.xml (original)
+++ uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.basic_annotations.xml Fri Nov 30 13:00:11 2012
@@ -6,234 +6,234 @@
%uimaents;
]>
<!-- 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. -->
+ 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. -->
<section id="ugr.tools.tm.language.seeding">
- <title>Basic annotations and tokens</title>
- <para>
- The TextMarker system uses a JFlex lexer to initially create a
- seed of
- basic token annotations. These tokens build a hierarchy
- which is shown
- in
- <xref linkend='figure.ugr.tools.tm.language.seeding.basic_token' />
- . The
- <quote>ALL</quote>
- (green) annotation is the root of the hierarchy. ALL and the red
- marked annotation types are abstract. This means that they are not
- actually
- created by the lexer. An overview of these abstract types can
- be found in
- <xref linkend='table.ugr.tools.tm.language.seeding.basic_token.abstract' />
- . The leafs of the hierarchy (blue) are created by the lexer. Each
- leaf is
- an own type but also inherits the types of the abstract
- annotation types further up in the hierarchy. The leaf types are
- described in
- more detail in
- <xref linkend='table.ugr.tools.tm.language.seeding.basic_token.created' />
- Each text unit within an input
- document belongs to exactly one of these
- annotation types.
- </para>
- <para>
- <figure id="figure.ugr.tools.tm.language.seeding.basic_token">
- <title>Basic token hierarchy
- </title>
- <mediaobject>
- <imageobject role="html">
- <imagedata width="576px" format="PNG" align="center"
- fileref="&imgroot;basic_token/basic_token.png" />
- </imageobject>
- <imageobject role="fo">
- <imagedata width="5.5in" format="PNG" align="center"
- fileref="&imgroot;basic_token/basic_token.png" />
- </imageobject>
- <textobject>
- <phrase>
- Basic token hierarchy.
- </phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
- <para>
- <table id="table.ugr.tools.tm.language.seeding.basic_token.abstract"
- frame="all">
- <title>Abstract annotations</title>
- <tgroup cols="3" colsep="1" rowsep="1">
- <colspec colname="c1" colwidth="1*" />
- <colspec colname="c2" colwidth="1*" />
- <colspec colname="c3" colwidth="3*" />
- <thead>
- <row>
- <entry align="center">Annotation</entry>
- <entry align="center">Parent</entry>
- <entry align="center">Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>ALL</entry>
- <entry>-</entry>
- <entry>parent type of all tokens</entry>
- </row>
- <row>
- <entry>ANY</entry>
- <entry>ALL</entry>
- <entry>all token but markup</entry>
- </row>
- <row>
- <entry>W</entry>
- <entry>ANY</entry>
- <entry>all kinds of words</entry>
- </row>
- <row>
- <entry>PM</entry>
- <entry>ANY</entry>
- <entry>all kinds of punctuation marks</entry>
- </row>
- <row>
- <entry>WS</entry>
- <entry>ANY</entry>
- <entry>all kinds of white spaces</entry>
- </row>
- <row>
- <entry>SENTENCEEND</entry>
- <entry>PM</entry>
- <entry>all kinds of punctuation marks that indicate the end of a
- sentence
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- <para>
- <table id="table.ugr.tools.tm.language.seeding.basic_token.created"
- frame="all">
- <title>Annotations created by lexer</title>
- <tgroup cols="4" colsep="1" rowsep="1">
- <colspec colname="c1" colwidth="1*" />
- <colspec colname="c2" colwidth="1*" />
- <colspec colname="c3" colwidth="1*" />
- <colspec colname="c4" colwidth="1*" />
+ <title>Basic annotations and tokens</title>
+ <para>
+ The TextMarker system uses a JFlex lexer to initially create a
+ seed of
+ basic token annotations. These tokens build a hierarchy
+ which is shown
+ in
+ <xref linkend='figure.ugr.tools.tm.language.seeding.basic_token' />
+ . The
+ <quote>ALL</quote>
+ (green) annotation is the root of the hierarchy. ALL and the red
+ marked annotation types are abstract. This means that they are not
+ actually
+ created by the lexer. An overview of these abstract types can
+ be found in
+ <xref linkend='table.ugr.tools.tm.language.seeding.basic_token.abstract' />
+ . The leafs of the hierarchy (blue) are created by the lexer. Each
+ leaf is
+ an own type but also inherits the types of the abstract
+ annotation types further up in the hierarchy. The leaf types are
+ described in
+ more detail in
+ <xref linkend='table.ugr.tools.tm.language.seeding.basic_token.created' />
+ Each text unit within an input
+ document belongs to exactly one of these
+ annotation types.
+ </para>
+ <para>
+ <figure id="figure.ugr.tools.tm.language.seeding.basic_token">
+ <title>Basic token hierarchy
+ </title>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="576px" format="PNG" align="center"
+ fileref="&imgroot;basic_token/basic_token.png" />
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="5.5in" format="PNG" align="center"
+ fileref="&imgroot;basic_token/basic_token.png" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ Basic token hierarchy.
+ </phrase>
+ </textobject>
+ </mediaobject>
+ </figure>
+ </para>
+ <para>
+ <table id="table.ugr.tools.tm.language.seeding.basic_token.abstract"
+ frame="all">
+ <title>Abstract annotations</title>
+ <tgroup cols="3" colsep="1" rowsep="1">
+ <colspec colname="c1" colwidth="1*" />
+ <colspec colname="c2" colwidth="1*" />
+ <colspec colname="c3" colwidth="3*" />
+ <thead>
+ <row>
+ <entry align="center">Annotation</entry>
+ <entry align="center">Parent</entry>
+ <entry align="center">Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>ALL</entry>
+ <entry>-</entry>
+ <entry>parent type of all tokens</entry>
+ </row>
+ <row>
+ <entry>ANY</entry>
+ <entry>ALL</entry>
+ <entry>all token but markup</entry>
+ </row>
+ <row>
+ <entry>W</entry>
+ <entry>ANY</entry>
+ <entry>all kinds of words</entry>
+ </row>
+ <row>
+ <entry>PM</entry>
+ <entry>ANY</entry>
+ <entry>all kinds of punctuation marks</entry>
+ </row>
+ <row>
+ <entry>WS</entry>
+ <entry>ANY</entry>
+ <entry>all kinds of white spaces</entry>
+ </row>
+ <row>
+ <entry>SENTENCEEND</entry>
+ <entry>PM</entry>
+ <entry>all kinds of punctuation marks that indicate the end of a
+ sentence
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
+ <table id="table.ugr.tools.tm.language.seeding.basic_token.created"
+ frame="all">
+ <title>Annotations created by lexer</title>
+ <tgroup cols="4" colsep="1" rowsep="1">
+ <colspec colname="c1" colwidth="1*" />
+ <colspec colname="c2" colwidth="1*" />
+ <colspec colname="c3" colwidth="1*" />
+ <colspec colname="c4" colwidth="1*" />
- <thead>
- <row>
- <entry align="center">Annotation</entry>
- <entry align="center">Parent</entry>
- <entry align="center">Description</entry>
- <entry align="center">Example</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>MARKUP</entry>
- <entry>ALL</entry>
- <entry>HTML and XML elements</entry>
- <entry><![CDATA[<p class="Headline">]]></entry>
- </row>
- <row>
- <entry>NBSP</entry>
- <entry>ANY</entry>
- <entry>non breaking space</entry>
- <entry><![CDATA[ ]]></entry>
- </row>
- <row>
- <entry>AMP</entry>
- <entry>ANY</entry>
- <entry>ampersant expression</entry>
- <entry><![CDATA[ä]]></entry>
- </row>
- <row>
- <entry>BREAK</entry>
- <entry>WS</entry>
- <entry>line break</entry>
- <entry><![CDATA[\n]]></entry>
- </row>
- <row>
- <entry>SPACE</entry>
- <entry>WS</entry>
- <entry>spaces</entry>
- <entry><![CDATA[" "]]></entry>
- </row>
- <row>
- <entry>COLON</entry>
- <entry>PM</entry>
- <entry>colon</entry>
- <entry><![CDATA[:]]></entry>
- </row>
- <row>
- <entry>COMMA</entry>
- <entry>PM</entry>
- <entry>comma</entry>
- <entry><![CDATA[,]]></entry>
- </row>
- <row>
- <entry>PERIOD</entry>
- <entry>SENTENCEEND</entry>
- <entry>period</entry>
- <entry><![CDATA[.]]></entry>
- </row>
- <row>
- <entry>EXCLAMATION</entry>
- <entry>SENTENCEEND</entry>
- <entry>exclamation mark</entry>
- <entry><![CDATA[!]]></entry>
- </row>
- <row>
- <entry>SEMICOLON</entry>
- <entry>PM</entry>
- <entry>semicolon</entry>
- <entry><![CDATA[;]]></entry>
- </row>
- <row>
- <entry>QUESTION</entry>
- <entry>SENTENCEEND</entry>
- <entry>question mark</entry>
- <entry><![CDATA[?]]></entry>
- </row>
- <row>
- <entry>SW</entry>
- <entry>W</entry>
- <entry>lower case work</entry>
- <entry><![CDATA[annotation]]></entry>
- </row>
- <row>
- <entry>CW</entry>
- <entry>W</entry>
- <entry>work starting with one capitalized letter</entry>
- <entry><![CDATA[Annotation]]></entry>
- </row>
- <row>
- <entry>CAP</entry>
- <entry>W</entry>
- <entry>word only containing capitalized letters</entry>
- <entry><![CDATA[ANNOTATION]]></entry>
- </row>
- <row>
- <entry>NUM</entry>
- <entry>ANY</entry>
- <entry>sequence of digits</entry>
- <entry><![CDATA[0123]]></entry>
- </row>
- <row>
- <entry>SPECIAL</entry>
- <entry>ANY</entry>
- <entry>all other tokens and symbols</entry>
- <entry><![CDATA[/]]></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
+ <thead>
+ <row>
+ <entry align="center">Annotation</entry>
+ <entry align="center">Parent</entry>
+ <entry align="center">Description</entry>
+ <entry align="center">Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>MARKUP</entry>
+ <entry>ALL</entry>
+ <entry>HTML and XML elements</entry>
+ <entry><![CDATA[<p class="Headline">]]></entry>
+ </row>
+ <row>
+ <entry>NBSP</entry>
+ <entry>ANY</entry>
+ <entry>non breaking space</entry>
+ <entry><![CDATA[ ]]></entry>
+ </row>
+ <row>
+ <entry>AMP</entry>
+ <entry>ANY</entry>
+ <entry>ampersant expression</entry>
+ <entry><![CDATA[ä]]></entry>
+ </row>
+ <row>
+ <entry>BREAK</entry>
+ <entry>WS</entry>
+ <entry>line break</entry>
+ <entry><![CDATA[\n]]></entry>
+ </row>
+ <row>
+ <entry>SPACE</entry>
+ <entry>WS</entry>
+ <entry>spaces</entry>
+ <entry><![CDATA[" "]]></entry>
+ </row>
+ <row>
+ <entry>COLON</entry>
+ <entry>PM</entry>
+ <entry>colon</entry>
+ <entry><![CDATA[:]]></entry>
+ </row>
+ <row>
+ <entry>COMMA</entry>
+ <entry>PM</entry>
+ <entry>comma</entry>
+ <entry><![CDATA[,]]></entry>
+ </row>
+ <row>
+ <entry>PERIOD</entry>
+ <entry>SENTENCEEND</entry>
+ <entry>period</entry>
+ <entry><![CDATA[.]]></entry>
+ </row>
+ <row>
+ <entry>EXCLAMATION</entry>
+ <entry>SENTENCEEND</entry>
+ <entry>exclamation mark</entry>
+ <entry><![CDATA[!]]></entry>
+ </row>
+ <row>
+ <entry>SEMICOLON</entry>
+ <entry>PM</entry>
+ <entry>semicolon</entry>
+ <entry><![CDATA[;]]></entry>
+ </row>
+ <row>
+ <entry>QUESTION</entry>
+ <entry>SENTENCEEND</entry>
+ <entry>question mark</entry>
+ <entry><![CDATA[?]]></entry>
+ </row>
+ <row>
+ <entry>SW</entry>
+ <entry>W</entry>
+ <entry>lower case work</entry>
+ <entry><![CDATA[annotation]]></entry>
+ </row>
+ <row>
+ <entry>CW</entry>
+ <entry>W</entry>
+ <entry>work starting with one capitalized letter</entry>
+ <entry><![CDATA[Annotation]]></entry>
+ </row>
+ <row>
+ <entry>CAP</entry>
+ <entry>W</entry>
+ <entry>word only containing capitalized letters</entry>
+ <entry><![CDATA[ANNOTATION]]></entry>
+ </row>
+ <row>
+ <entry>NUM</entry>
+ <entry>ANY</entry>
+ <entry>sequence of digits</entry>
+ <entry><![CDATA[0123]]></entry>
+ </row>
+ <row>
+ <entry>SPECIAL</entry>
+ <entry>ANY</entry>
+ <entry>all other tokens and symbols</entry>
+ <entry><![CDATA[/]]></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
</section>
\ No newline at end of file
Modified: uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.conditions.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.conditions.xml?rev=1415610&r1=1415609&r2=1415610&view=diff
==============================================================================
--- uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.conditions.xml (original)
+++ uima/sandbox/trunk/TextMarker/uima-docbook-textmarker/src/docbook/language/tools.textmarker.language.conditions.xml Fri Nov 30 13:00:11 2012
@@ -6,928 +6,928 @@
%uimaents;
]>
<!-- 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. -->
+ 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. -->
<section id="ugr.tools.tm.language.conditions">
- <title>Conditions</title>
+ <title>Conditions</title>
- <section id="ugr.tools.tm.language.conditions.after">
- <title>AFTER</title>
- <para>
- The AFTER condition evaluates true if the matched annotation
- starts after the beginning of an arbitrary annotation of the passed
- type. If a list of types is passed, this has to be true for at least
- one of them.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[AFTER(Type|TypeListExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[CW{AFTER(SW)};]]></programlisting>
- </para>
- <para>
- Here, the rule matches on a capitalized word if there is any
- small written word previously.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.and">
- <title>AND</title>
- <para>
- The AND condition is a composed condition and evaluates true if
- all contained conditions evaluate true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[AND(Condition1,...,ConditionN)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{AND(PARTOF(Headline),CONTAINS(Keyword))
- ->MARK(ImportantHeadline)};]]></programlisting>
- </para>
- <para>
- In this example a Paragraph is annotated with an
- ImportantHeadline annotation if it is part of a Headline and
- contains a Keyword annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.before">
- <title>BEFORE</title>
- <para>
- The BEFORE condition evaluates true if the matched annotation
- starts before the beginning of an arbitrary annotation of the passed
- type. If a list of types is passed, this has to be true for at least
- one of them.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[BEFORE(Type|TypeListExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[CW{BEFORE(SW)};]]></programlisting>
- </para>
- <para>
- Here, the rule matches on a capitalized word if there is any
- small written word afterwards.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.contains">
- <title>CONTAINS</title>
- <para>
- The CONTAINS condition evaluates true on a matched annotation
- if
- the frequency of the passed type lies within an optionally passed
- interval. The limits of the passed interval are per default
- interpreted as absolute numeral values. By passing a further boolean
- parameter set to true the limits are interpreted as percental
- values.
- If no interval parameters are passed at all the condition
- checks
- whether the matched annotation contains at least one
- occurrence of the
- passed type.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[CONTAINS(Type(,NumberExpression,NumberExpression(,BooleanExpression)?)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{CONTAINS(Keyword)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- A Paragraph is annotated with a KeywordParagraph annotation if
- it contains a Keyword annotation.
- </para>
- <para>
- <programlisting><![CDATA[Paragraph{CONTAINS(Keyword,2,4)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- A Paragraph is annotated with a KeywordParagraph annotation if
- it contains between two and four Keyword annotations.
- </para>
- <para>
- <programlisting><![CDATA[Paragraph{CONTAINS(Keyword,50,100,true)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- A Paragraph is annotated with a KeywordParagraph annotation if it
- contains between 50% and 100% Keyword annotations. This is
- calculated based on the tokens of the Paragraph. If the Paragraph
- contains six basic annotations (see
- <xref linkend='ugr.tools.tm.language.seeding' />
- ), two of them are part of one Keyword annotation and one basic
- annotation is also annotated with a Keyword annotation, then the
- percentage of the contained Keywords is 50%.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.contextcount">
- <title>CONTEXTCOUNT</title>
- <para>
- The CONTEXTCOUNT condition numbers all occurrences of the
- matched type within the context of a passed type's annotation
- consecutively, thus assigning an index to each occurrence.
- Additionally it stores the index of the matched annotation in a
- numerical variable if one is passed. The condition evaluates true if
- the index of the matched annotation is within a passed interval. If
- no interval is passed, the condition always evaluates true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[CONTEXTCOUNT(Type(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Keyword{CONTEXTCOUNT(Paragraph,2,3,var)
- ->MARK(SecondOrThirdKeywordInParagraph)};]]></programlisting>
- </para>
- <para>
- Here, the position of the matched Keyword annotation within a
- Paragraph annotation is calculated and stored in the variable 'var'.
- If the counted value lies within the interval [2,3] the matched
- Keyword is annotated with the SecondOrThirdKeywordInParagraph
- annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.count">
- <title>COUNT</title>
- <para>
- The COUNT condition can be used in two different ways. In the
- first case (see first definition), it counts the number of
- annotations of the passed type within the window of the matched
- annotation and stores the amount in a numerical variable if such a
- variable is passed. The condition evaluates true if the counted
- amount is within a specified interval. If no interval is passed, the
- condition always evaluates true. In the second case (see second
- definition), it counts the number of occurrences of the passed
- VariableExpression (second parameter) within the passed list (first
- parameter) and stores the amount in a numerical variable if such a
- variable is passed. Again the condition evaluates true if the counted
- amount is within a specified interval. If no interval is passed, the
- condition always evaluates true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[COUNT(Type(,NumberExpression,NumberExpression)?(,NumberVariable)?)]]></programlisting>
- </para>
- <para>
- <programlisting><![CDATA[COUNT(ListExpression,VariableExpression
- (,NumberExpression,NumberExpression)?(,NumberVariable)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{COUNT(Keyword,1,10,var)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- Here, the amount of Keyword annotations within a Paragraph is
- calculated and stored in the variable 'var'. If one to ten Keywords
- were counted, the Paragraph is marked with a KeywordParagraph
- annotation.
- </para>
- <para>
- <programlisting><![CDATA[Paragraph{COUNT(list,"author",5,7,var)};]]></programlisting>
- </para>
- <para>
- Here, the number of occurrences of STRING "author" within the
- STRINGLIST 'list' is counted and stored in the variable 'var'. If
- "author" occurs five to seven times within 'list', the condition
- evaluates true.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.currentcount">
- <title>CURRENTCOUNT</title>
- <para>
- The CURRENTCOUNT condition numbers all occurences of the matched
- type within the whole document consecutively, thus assigning an index
- to each occurence. Additionally it stores the index of the matched
- annotation in a numerical variable if one is passed. The condition
- evaluates true if the index of the matched annotation is within a
- specified interval. If no interval is passed, the condition always
- evaluates true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[CURRENTCOUNT(Type(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{CURRENTCOUNT(Keyword,3,3,var)->MARK(ParagraphWithThirdKeyword)};]]></programlisting>
- </para>
- <para>
- Here, the Paragraph which contains the third Keyword of the
- whole document is annotated with the ParagraphWithThirdKeyword
- annotation. The index is stored in the variable 'var'.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.endswith">
- <title>ENDSWITH</title>
- <para>
- The ENDSWITH condition evaluates true if an annotation of the
- given type ends exactly at the same position as the matched
- annotation. If a list of types is passed, this has to be true for at
- least one of them.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[ENDSWITH(Type|TypeListExpression) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{ENDSWITH(SW)};]]></programlisting>
- </para>
- <para>
- Here, the rule matches on a Paragraph annotation if it ends
- with a small written word.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.feature">
- <title>FEATURE</title>
- <para>
- The FEATURE condition compares a feature of the matched
- annotation with the second argument.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[FEATURE(StringExpression,Expression) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Document{FEATURE("language",targetLanguage)}]]></programlisting>
- </para>
- <para>
- This rule matches if the feature named 'language' of the
- document annotation equals the value of the variable
- 'targetLanguage'.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.if">
- <title>IF</title>
- <para>
- The IF condition evaluates true if the contained boolean
- expression does.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[IF(BooleanExpression) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{IF(keywordAmount > 5)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- A Paragraph annotation is annotated with a KeywordParagraph
- annotation if the value of the variable 'keywordAmount' is greater
- than five.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.inlist">
- <title>INLIST</title>
- <para>
- The INLIST condition is fulfilled if the matched annotation is listed
- in a given word or string list. The (relative) edit distance
- is
- currently disabled.
- <!-- ATTENTION: it seems the edit distance is still disabled? what does
- this mean? -->
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[INLIST(WordList(,NumberExpression,(BooleanExpression)?)?) ]]></programlisting>
- </para>
- <para>
- <programlisting><![CDATA[INLIST(StringList(,NumberExpression,(BooleanExpression)?)?) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Keyword{INLIST(specialKeywords.txt)->MARK(SpecialKeyword)};]]></programlisting>
- </para>
- <para>
- A Keyword is annotated with the type SpecialKeyword if the text
- of the Keyword annotation is listed in the word list
- 'specialKeywords.txt'.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.is">
- <title>IS</title>
- <para>
- The IS condition evaluates true if there is an annotation of the
- given type with the same beginning and ending offsets as the
- matched
- annotation. If a list of types is given, the condition
- evaluates true
- if at least one of them fulfills the former condition.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[IS(Type|TypeListExpression) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Author{IS(Englishman)->MARK(EnglishAuthor)};]]></programlisting>
- </para>
- <para>
- If an Author annotation is also annotated with an Englishman
- annotation, it is annotated with an EnglishAuthor annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.last">
- <title>LAST</title>
- <para>
- The LAST condition evaluates true if the type of the last token
- within the window of the matched annotation is of the given type.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[LAST(TypeExpression) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Document{LAST(CW)};]]></programlisting>
- </para>
- <para>
- This rule fires if the last token of the document is a
- capitalized word.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.mofn">
- <title>MOFN</title>
- <para>
- The MOFN condition is a composed condition. It evaluates true if
- the number of containing conditions evaluating true is within a given
- interval.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[MOFN(NumberExpression,NumberExpression,Condition1,...,ConditionN) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{MOFN(1,1,PARTOF(Headline),CONTAINS(Keyword))
- ->MARK(HeadlineXORKeywords)};]]></programlisting>
- </para>
- <para>
- A Paragraph is marked as a HeadlineXORKeywords if the matched
- text is either part of a Headline annotation or contains Keyword
- annotations.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.near">
- <title>NEAR</title>
- <para>
- The NEAR condition is fulfilled if the distance of the matched
- annotation to an annotation of the given type is within a given
- interval. The direction is defined by a boolean parameter, whose
- default value is true, therefore searching forward. By default this
- condition works on an unfiltered index. An optional fifth boolean
- parameter can be set to true to get the condition being evaluated on
- a filtered index.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[NEAR(TypeExpression,NumberExpression,NumberExpression
- (,BooleanExpression(,BooleanExpression)?)?) ]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{NEAR(Headline,0,10,false)->MARK(NoHeadline)};]]></programlisting>
- </para>
- <para>
- A Paragraph that starts at most ten tokens after a Headline
- annotation is annotated with the NoHeadline annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.not">
- <title>NOT</title>
- <para>
- The NOT condition negates the result of its contained
- condition.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA["-"Condition]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{-PARTOF(Headline)->MARK(Headline)};]]></programlisting>
- </para>
- <para>
- A Paragraph that is not part of a Headline annotation so far is
- annotated with a Headline annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.or">
- <title>OR</title>
- <para>
- The OR Condition is a composed condition and evaluates true if
- at least one contained condition is evaluated true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[OR(Condition1,...,ConditionN)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{OR(PARTOF(Headline),CONTAINS(Keyword))->MARK(ImportantParagraph)};]]></programlisting>
- </para>
- <para>
- In this example a Paragraph is annotated with the
- ImportantParagraph annotation if it is a Headline or contains
- Keyword annotations.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.parse">
- <title>PARSE</title>
- <para>
- The PARSE condition is fulfilled if the text covered by the
- matched annotation can be transformed into a value of the given
- variable's type. If this is possible, the parsed value is
- additionally assigned to the passed variable.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[PARSE(variable)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[NUM{PARSE(var)};]]></programlisting>
- </para>
- <para>
- If the variable 'var' is of an appropriate numeric type, the
- value of NUM is parsed and subsequently stored in 'var'.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.partof">
- <title>PARTOF</title>
- <para>
- The PARTOF condition is fulfilled if the matched annotation is
- part of an annotation of the given type. However it is not necessary
- that the matched annotation is smaller than the annotation of the
- given type. Use the (much slower) PARTOFNEQ condition instead if this
- is needed. If a type list is given, the condition evaluates true if
- the former described condition for a single type is fulfilled for at
- least one of the types in the list.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[PARTOF(Type|TypeListExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{PARTOF(Headline) -> MARK(ImportantParagraph)};]]></programlisting>
- </para>
- <para>
- A Paragraph is an ImportantParagraph if the matched text is
- part of a Headline annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.partofneq">
- <title>PARTOFNEQ</title>
- <para>
- The PARTOFNEQ condition is fulfilled if the matched annotation
- is part of (smaller than and inside of) an annotation of the given
- type. If also annotations of the same size should be acceptable, use
- the PARTOF condition. If a type list is given, the condition
- evaluates true if the former described condition is fulfilled for at
- least one of the types in the list.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[PARTOFNEQ(Type|TypeListExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[W{PARTOFNEQ(Headline) -> MARK(ImportantWord)};]]></programlisting>
- </para>
- <para>
- A word is an ImportantWord if it is part of a headline.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.position">
- <title>POSITION</title>
- <para>
- The POSITION condition is fulfilled if the matched type is the
- k-th occurence of this type within the window of an annotation of the
- passed type, whereby k is defined by the value of the passed
- NumberExpression. If the additional boolean paramter is set to false,
- then k count the occurences of of the minimal annotations.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[POSITION(Type,NumberExpression(,BooleanExpression)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Keyword{POSITION(Paragraph,2)->MARK(SecondKeyword)};]]></programlisting>
- </para>
- <para>
- The second Keyword in a Paragraph is annotated with the type
- SecondKeyword.
- </para>
- <para>
- <programlisting><![CDATA[Keyword{POSITION(Paragraph,2,false)->MARK(SecondKeyword)};]]></programlisting>
- </para>
- <para>
- A Keyword in a Paragraph is annotated with the type
- SecondKeyword, if it starts at the same offset as the second
- (visible) TextMarkerBasic annotation, which normally corresponds to
- the tokens.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.regexp">
- <title>REGEXP</title>
- <para>
- The REGEXP condition is fulfilled if the given pattern matches on the
- matched annotation. However, if a string variable is given as the
- first
- argument, then the pattern is evaluated on the value of the
- variable.
- For more details on the syntax of regular
- expressions, have a
- look at
- the
- <ulink
- url="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html">Java API</ulink>
- . By default the REGEXP condition is case-sensitive. To change this
- add an optional boolean parameter set to true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[REGEXP((StringVariable,)? StringExpression(,BooleanExpression)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Keyword{REGEXP("..")->MARK(SmallKeyword)};]]></programlisting>
- </para>
- <para>
- A Keyword that only consists of two chars is annotated with a
- SmallKeyword annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.score">
- <title>SCORE</title>
- <para>
- The SCORE condition evaluates the heuristic score of the matched
- annotation. This score is set or changed by the MARK action.
- The
- condition is fulfilled if the score of the matched annotation is
- in a
- given interval. Optionally the score can be stored in a
- variable.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[SCORE(NumberExpression,NumberExpression(,Variable)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[MaybeHeadline{SCORE(40,100)->MARK(Headline)};]]></programlisting>
- </para>
- <para>
- A annotation of the type MaybeHeadline is annotated with
- Headline if its score is between 40 and 100.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.size">
- <title>SIZE</title>
- <para>
- The SIZE contition counts the number of elements in the given
- list. By default this condition always evaluates true. If an interval
- is passed, it evaluates true if the counted number of list elements
- is within the interval. The counted number can be stored in an
- optionally passed numeral variable.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[SIZE(ListExpression(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Document{SIZE(list,4,10,var)};]]></programlisting>
- </para>
- <para>
- This rule fires if the given list contains between 4 and 10
- elements. Additionally, the exact amount is stored in the variable
- var.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.startswith">
- <title>STARTSWITH</title>
- <para>
- The STARTSWITH condition evaluates true if an annotation of the
- given type starts exactly at the same position as the matched
- annotation. If a type list is given, the condition evaluates true if
- the former is true for at least one of the given types in the list.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[STARTSWITH(Type|TypeListExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{STARTSWITH(SW)};]]></programlisting>
- </para>
- <para>
- Here, the rule matches on a Paragraph annotation if it starts
- with small written word.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.totalcount">
- <title>TOTALCOUNT</title>
- <para>
- The TOTALCOUNT condition counts the annotations of the passed
- type within the whole document and stores the amount in an optionally
- passed numerical variable. The condition evaluates true if the
- amount
- is within the passed interval. If no interval is passed, the
- condition always evaluates true.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[TOTALCOUNT(Type(,NumberExpression,NumberExpression(,Variable)?)?)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{TOTALCOUNT(Keyword,1,10,var)->MARK(KeywordParagraph)};]]></programlisting>
- </para>
- <para>
- Here, the amount of Keyword annotations within the whole
- document is calculated and stored in the variable 'var'. If one to
- ten Keywords were counted, the Paragraph is marked with a
- KeywordParagraph annotation.
- </para>
- </section>
- </section>
-
- <section id="ugr.tools.tm.language.conditions.vote">
- <title>VOTE</title>
- <para>
- The VOTE condition counts the annotations of the given two types
- within the window of the matched annotation and evaluates true
- if it
- found more annotations of the first type.
- </para>
- <section>
- <title>
- <emphasis role="bold">Definition:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[VOTE(TypeExpression,TypeExpression)]]></programlisting>
- </para>
- </section>
- <section>
- <title>
- <emphasis role="bold">Example:</emphasis>
- </title>
- <para>
- <programlisting><![CDATA[Paragraph{VOTE(FirstName,LastName)};]]></programlisting>
- </para>
- <para>
- Here, this rule fires if a paragraph contains more firstnames
- than lastnames.
- </para>
- </section>
- </section>
+ <section id="ugr.tools.tm.language.conditions.after">
+ <title>AFTER</title>
+ <para>
+ The AFTER condition evaluates true if the matched annotation
+ starts after the beginning of an arbitrary annotation of the passed
+ type. If a list of types is passed, this has to be true for at least
+ one of them.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[AFTER(Type|TypeListExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[CW{AFTER(SW)};]]></programlisting>
+ </para>
+ <para>
+ Here, the rule matches on a capitalized word if there is any
+ small written word previously.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.and">
+ <title>AND</title>
+ <para>
+ The AND condition is a composed condition and evaluates true if
+ all contained conditions evaluate true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[AND(Condition1,...,ConditionN)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{AND(PARTOF(Headline),CONTAINS(Keyword))
+ ->MARK(ImportantHeadline)};]]></programlisting>
+ </para>
+ <para>
+ In this example a Paragraph is annotated with an
+ ImportantHeadline annotation if it is part of a Headline and
+ contains a Keyword annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.before">
+ <title>BEFORE</title>
+ <para>
+ The BEFORE condition evaluates true if the matched annotation
+ starts before the beginning of an arbitrary annotation of the passed
+ type. If a list of types is passed, this has to be true for at least
+ one of them.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[BEFORE(Type|TypeListExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[CW{BEFORE(SW)};]]></programlisting>
+ </para>
+ <para>
+ Here, the rule matches on a capitalized word if there is any
+ small written word afterwards.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.contains">
+ <title>CONTAINS</title>
+ <para>
+ The CONTAINS condition evaluates true on a matched annotation
+ if
+ the frequency of the passed type lies within an optionally passed
+ interval. The limits of the passed interval are per default
+ interpreted as absolute numeral values. By passing a further boolean
+ parameter set to true the limits are interpreted as percental
+ values.
+ If no interval parameters are passed at all the condition
+ checks
+ whether the matched annotation contains at least one
+ occurrence of the
+ passed type.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[CONTAINS(Type(,NumberExpression,NumberExpression(,BooleanExpression)?)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{CONTAINS(Keyword)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph is annotated with a KeywordParagraph annotation if
+ it contains a Keyword annotation.
+ </para>
+ <para>
+ <programlisting><![CDATA[Paragraph{CONTAINS(Keyword,2,4)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph is annotated with a KeywordParagraph annotation if
+ it contains between two and four Keyword annotations.
+ </para>
+ <para>
+ <programlisting><![CDATA[Paragraph{CONTAINS(Keyword,50,100,true)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph is annotated with a KeywordParagraph annotation if it
+ contains between 50% and 100% Keyword annotations. This is
+ calculated based on the tokens of the Paragraph. If the Paragraph
+ contains six basic annotations (see
+ <xref linkend='ugr.tools.tm.language.seeding' />
+ ), two of them are part of one Keyword annotation and one basic
+ annotation is also annotated with a Keyword annotation, then the
+ percentage of the contained Keywords is 50%.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.contextcount">
+ <title>CONTEXTCOUNT</title>
+ <para>
+ The CONTEXTCOUNT condition numbers all occurrences of the
+ matched type within the context of a passed type's annotation
+ consecutively, thus assigning an index to each occurrence.
+ Additionally it stores the index of the matched annotation in a
+ numerical variable if one is passed. The condition evaluates true if
+ the index of the matched annotation is within a passed interval. If
+ no interval is passed, the condition always evaluates true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[CONTEXTCOUNT(Type(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Keyword{CONTEXTCOUNT(Paragraph,2,3,var)
+ ->MARK(SecondOrThirdKeywordInParagraph)};]]></programlisting>
+ </para>
+ <para>
+ Here, the position of the matched Keyword annotation within a
+ Paragraph annotation is calculated and stored in the variable 'var'.
+ If the counted value lies within the interval [2,3] the matched
+ Keyword is annotated with the SecondOrThirdKeywordInParagraph
+ annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.count">
+ <title>COUNT</title>
+ <para>
+ The COUNT condition can be used in two different ways. In the
+ first case (see first definition), it counts the number of
+ annotations of the passed type within the window of the matched
+ annotation and stores the amount in a numerical variable if such a
+ variable is passed. The condition evaluates true if the counted
+ amount is within a specified interval. If no interval is passed, the
+ condition always evaluates true. In the second case (see second
+ definition), it counts the number of occurrences of the passed
+ VariableExpression (second parameter) within the passed list (first
+ parameter) and stores the amount in a numerical variable if such a
+ variable is passed. Again the condition evaluates true if the counted
+ amount is within a specified interval. If no interval is passed, the
+ condition always evaluates true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[COUNT(Type(,NumberExpression,NumberExpression)?(,NumberVariable)?)]]></programlisting>
+ </para>
+ <para>
+ <programlisting><![CDATA[COUNT(ListExpression,VariableExpression
+ (,NumberExpression,NumberExpression)?(,NumberVariable)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{COUNT(Keyword,1,10,var)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ Here, the amount of Keyword annotations within a Paragraph is
+ calculated and stored in the variable 'var'. If one to ten Keywords
+ were counted, the Paragraph is marked with a KeywordParagraph
+ annotation.
+ </para>
+ <para>
+ <programlisting><![CDATA[Paragraph{COUNT(list,"author",5,7,var)};]]></programlisting>
+ </para>
+ <para>
+ Here, the number of occurrences of STRING "author" within the
+ STRINGLIST 'list' is counted and stored in the variable 'var'. If
+ "author" occurs five to seven times within 'list', the condition
+ evaluates true.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.currentcount">
+ <title>CURRENTCOUNT</title>
+ <para>
+ The CURRENTCOUNT condition numbers all occurences of the matched
+ type within the whole document consecutively, thus assigning an index
+ to each occurence. Additionally it stores the index of the matched
+ annotation in a numerical variable if one is passed. The condition
+ evaluates true if the index of the matched annotation is within a
+ specified interval. If no interval is passed, the condition always
+ evaluates true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[CURRENTCOUNT(Type(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{CURRENTCOUNT(Keyword,3,3,var)->MARK(ParagraphWithThirdKeyword)};]]></programlisting>
+ </para>
+ <para>
+ Here, the Paragraph which contains the third Keyword of the
+ whole document is annotated with the ParagraphWithThirdKeyword
+ annotation. The index is stored in the variable 'var'.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.endswith">
+ <title>ENDSWITH</title>
+ <para>
+ The ENDSWITH condition evaluates true if an annotation of the
+ given type ends exactly at the same position as the matched
+ annotation. If a list of types is passed, this has to be true for at
+ least one of them.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[ENDSWITH(Type|TypeListExpression) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{ENDSWITH(SW)};]]></programlisting>
+ </para>
+ <para>
+ Here, the rule matches on a Paragraph annotation if it ends
+ with a small written word.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.feature">
+ <title>FEATURE</title>
+ <para>
+ The FEATURE condition compares a feature of the matched
+ annotation with the second argument.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[FEATURE(StringExpression,Expression) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Document{FEATURE("language",targetLanguage)}]]></programlisting>
+ </para>
+ <para>
+ This rule matches if the feature named 'language' of the
+ document annotation equals the value of the variable
+ 'targetLanguage'.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.if">
+ <title>IF</title>
+ <para>
+ The IF condition evaluates true if the contained boolean
+ expression does.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[IF(BooleanExpression) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{IF(keywordAmount > 5)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph annotation is annotated with a KeywordParagraph
+ annotation if the value of the variable 'keywordAmount' is greater
+ than five.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.inlist">
+ <title>INLIST</title>
+ <para>
+ The INLIST condition is fulfilled if the matched annotation is listed
+ in a given word or string list. The (relative) edit distance
+ is
+ currently disabled.
+ <!-- ATTENTION: it seems the edit distance is still disabled? what does
+ this mean? -->
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[INLIST(WordList(,NumberExpression,(BooleanExpression)?)?) ]]></programlisting>
+ </para>
+ <para>
+ <programlisting><![CDATA[INLIST(StringList(,NumberExpression,(BooleanExpression)?)?) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Keyword{INLIST(specialKeywords.txt)->MARK(SpecialKeyword)};]]></programlisting>
+ </para>
+ <para>
+ A Keyword is annotated with the type SpecialKeyword if the text
+ of the Keyword annotation is listed in the word list
+ 'specialKeywords.txt'.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.is">
+ <title>IS</title>
+ <para>
+ The IS condition evaluates true if there is an annotation of the
+ given type with the same beginning and ending offsets as the
+ matched
+ annotation. If a list of types is given, the condition
+ evaluates true
+ if at least one of them fulfills the former condition.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[IS(Type|TypeListExpression) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Author{IS(Englishman)->MARK(EnglishAuthor)};]]></programlisting>
+ </para>
+ <para>
+ If an Author annotation is also annotated with an Englishman
+ annotation, it is annotated with an EnglishAuthor annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.last">
+ <title>LAST</title>
+ <para>
+ The LAST condition evaluates true if the type of the last token
+ within the window of the matched annotation is of the given type.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[LAST(TypeExpression) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Document{LAST(CW)};]]></programlisting>
+ </para>
+ <para>
+ This rule fires if the last token of the document is a
+ capitalized word.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.mofn">
+ <title>MOFN</title>
+ <para>
+ The MOFN condition is a composed condition. It evaluates true if
+ the number of containing conditions evaluating true is within a given
+ interval.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[MOFN(NumberExpression,NumberExpression,Condition1,...,ConditionN) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{MOFN(1,1,PARTOF(Headline),CONTAINS(Keyword))
+ ->MARK(HeadlineXORKeywords)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph is marked as a HeadlineXORKeywords if the matched
+ text is either part of a Headline annotation or contains Keyword
+ annotations.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.near">
+ <title>NEAR</title>
+ <para>
+ The NEAR condition is fulfilled if the distance of the matched
+ annotation to an annotation of the given type is within a given
+ interval. The direction is defined by a boolean parameter, whose
+ default value is true, therefore searching forward. By default this
+ condition works on an unfiltered index. An optional fifth boolean
+ parameter can be set to true to get the condition being evaluated on
+ a filtered index.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[NEAR(TypeExpression,NumberExpression,NumberExpression
+ (,BooleanExpression(,BooleanExpression)?)?) ]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{NEAR(Headline,0,10,false)->MARK(NoHeadline)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph that starts at most ten tokens after a Headline
+ annotation is annotated with the NoHeadline annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.not">
+ <title>NOT</title>
+ <para>
+ The NOT condition negates the result of its contained
+ condition.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA["-"Condition]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{-PARTOF(Headline)->MARK(Headline)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph that is not part of a Headline annotation so far is
+ annotated with a Headline annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.or">
+ <title>OR</title>
+ <para>
+ The OR Condition is a composed condition and evaluates true if
+ at least one contained condition is evaluated true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[OR(Condition1,...,ConditionN)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{OR(PARTOF(Headline),CONTAINS(Keyword))->MARK(ImportantParagraph)};]]></programlisting>
+ </para>
+ <para>
+ In this example a Paragraph is annotated with the
+ ImportantParagraph annotation if it is a Headline or contains
+ Keyword annotations.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.parse">
+ <title>PARSE</title>
+ <para>
+ The PARSE condition is fulfilled if the text covered by the
+ matched annotation can be transformed into a value of the given
+ variable's type. If this is possible, the parsed value is
+ additionally assigned to the passed variable.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[PARSE(variable)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[NUM{PARSE(var)};]]></programlisting>
+ </para>
+ <para>
+ If the variable 'var' is of an appropriate numeric type, the
+ value of NUM is parsed and subsequently stored in 'var'.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.partof">
+ <title>PARTOF</title>
+ <para>
+ The PARTOF condition is fulfilled if the matched annotation is
+ part of an annotation of the given type. However it is not necessary
+ that the matched annotation is smaller than the annotation of the
+ given type. Use the (much slower) PARTOFNEQ condition instead if this
+ is needed. If a type list is given, the condition evaluates true if
+ the former described condition for a single type is fulfilled for at
+ least one of the types in the list.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[PARTOF(Type|TypeListExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{PARTOF(Headline) -> MARK(ImportantParagraph)};]]></programlisting>
+ </para>
+ <para>
+ A Paragraph is an ImportantParagraph if the matched text is
+ part of a Headline annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.partofneq">
+ <title>PARTOFNEQ</title>
+ <para>
+ The PARTOFNEQ condition is fulfilled if the matched annotation
+ is part of (smaller than and inside of) an annotation of the given
+ type. If also annotations of the same size should be acceptable, use
+ the PARTOF condition. If a type list is given, the condition
+ evaluates true if the former described condition is fulfilled for at
+ least one of the types in the list.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[PARTOFNEQ(Type|TypeListExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[W{PARTOFNEQ(Headline) -> MARK(ImportantWord)};]]></programlisting>
+ </para>
+ <para>
+ A word is an ImportantWord if it is part of a headline.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.position">
+ <title>POSITION</title>
+ <para>
+ The POSITION condition is fulfilled if the matched type is the
+ k-th occurence of this type within the window of an annotation of the
+ passed type, whereby k is defined by the value of the passed
+ NumberExpression. If the additional boolean paramter is set to false,
+ then k count the occurences of of the minimal annotations.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[POSITION(Type,NumberExpression(,BooleanExpression)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Keyword{POSITION(Paragraph,2)->MARK(SecondKeyword)};]]></programlisting>
+ </para>
+ <para>
+ The second Keyword in a Paragraph is annotated with the type
+ SecondKeyword.
+ </para>
+ <para>
+ <programlisting><![CDATA[Keyword{POSITION(Paragraph,2,false)->MARK(SecondKeyword)};]]></programlisting>
+ </para>
+ <para>
+ A Keyword in a Paragraph is annotated with the type
+ SecondKeyword, if it starts at the same offset as the second
+ (visible) TextMarkerBasic annotation, which normally corresponds to
+ the tokens.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.regexp">
+ <title>REGEXP</title>
+ <para>
+ The REGEXP condition is fulfilled if the given pattern matches on the
+ matched annotation. However, if a string variable is given as the
+ first
+ argument, then the pattern is evaluated on the value of the
+ variable.
+ For more details on the syntax of regular
+ expressions, have a
+ look at
+ the
+ <ulink
+ url="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html">Java API</ulink>
+ . By default the REGEXP condition is case-sensitive. To change this
+ add an optional boolean parameter set to true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[REGEXP((StringVariable,)? StringExpression(,BooleanExpression)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Keyword{REGEXP("..")->MARK(SmallKeyword)};]]></programlisting>
+ </para>
+ <para>
+ A Keyword that only consists of two chars is annotated with a
+ SmallKeyword annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.score">
+ <title>SCORE</title>
+ <para>
+ The SCORE condition evaluates the heuristic score of the matched
+ annotation. This score is set or changed by the MARK action.
+ The
+ condition is fulfilled if the score of the matched annotation is
+ in a
+ given interval. Optionally the score can be stored in a
+ variable.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[SCORE(NumberExpression,NumberExpression(,Variable)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[MaybeHeadline{SCORE(40,100)->MARK(Headline)};]]></programlisting>
+ </para>
+ <para>
+ A annotation of the type MaybeHeadline is annotated with
+ Headline if its score is between 40 and 100.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.size">
+ <title>SIZE</title>
+ <para>
+ The SIZE contition counts the number of elements in the given
+ list. By default this condition always evaluates true. If an interval
+ is passed, it evaluates true if the counted number of list elements
+ is within the interval. The counted number can be stored in an
+ optionally passed numeral variable.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[SIZE(ListExpression(,NumberExpression,NumberExpression)?(,Variable)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Document{SIZE(list,4,10,var)};]]></programlisting>
+ </para>
+ <para>
+ This rule fires if the given list contains between 4 and 10
+ elements. Additionally, the exact amount is stored in the variable
+ var.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.startswith">
+ <title>STARTSWITH</title>
+ <para>
+ The STARTSWITH condition evaluates true if an annotation of the
+ given type starts exactly at the same position as the matched
+ annotation. If a type list is given, the condition evaluates true if
+ the former is true for at least one of the given types in the list.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[STARTSWITH(Type|TypeListExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{STARTSWITH(SW)};]]></programlisting>
+ </para>
+ <para>
+ Here, the rule matches on a Paragraph annotation if it starts
+ with small written word.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.totalcount">
+ <title>TOTALCOUNT</title>
+ <para>
+ The TOTALCOUNT condition counts the annotations of the passed
+ type within the whole document and stores the amount in an optionally
+ passed numerical variable. The condition evaluates true if the
+ amount
+ is within the passed interval. If no interval is passed, the
+ condition always evaluates true.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[TOTALCOUNT(Type(,NumberExpression,NumberExpression(,Variable)?)?)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{TOTALCOUNT(Keyword,1,10,var)->MARK(KeywordParagraph)};]]></programlisting>
+ </para>
+ <para>
+ Here, the amount of Keyword annotations within the whole
+ document is calculated and stored in the variable 'var'. If one to
+ ten Keywords were counted, the Paragraph is marked with a
+ KeywordParagraph annotation.
+ </para>
+ </section>
+ </section>
+
+ <section id="ugr.tools.tm.language.conditions.vote">
+ <title>VOTE</title>
+ <para>
+ The VOTE condition counts the annotations of the given two types
+ within the window of the matched annotation and evaluates true
+ if it
+ found more annotations of the first type.
+ </para>
+ <section>
+ <title>
+ <emphasis role="bold">Definition:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[VOTE(TypeExpression,TypeExpression)]]></programlisting>
+ </para>
+ </section>
+ <section>
+ <title>
+ <emphasis role="bold">Example:</emphasis>
+ </title>
+ <para>
+ <programlisting><![CDATA[Paragraph{VOTE(FirstName,LastName)};]]></programlisting>
+ </para>
+ <para>
+ Here, this rule fires if a paragraph contains more firstnames
+ than lastnames.
+ </para>
+ </section>
+ </section>
</section>
\ No newline at end of file