<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
  <primitive>true</primitive>
  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
  <analysisEngineMetaData>
    <name>org.apache.uima.ruta.engine.BasicEngine</name>
    <description/>
    <version>1.0</version>
    <vendor/>
    <configurationParameters searchStrategy="language_fallback">
      <configurationParameter>
        <name>seeders</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>debug</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>additionalScripts</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>profile</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>debugWithMatches</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>statistics</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>additionalEngines</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>additionalExtensions</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>debugOnlyFor</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>scriptEncoding</name>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>additionalEngineLoaders</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>resourcePaths</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>defaultFilteredTypes</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>mainScript</name>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>scriptPaths</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>descriptorPaths</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>removeBasics</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>dynamicAnchoring</name>
        <description>Activates dynamic anchoring (possible speed up).</description>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>greedyRuleElement</name>
        <description>Activates greedy anchoring for rule elements.</description>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>greedyRule</name>
        <description>Activates greedy anchoring for complete rules.</description>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>lowMemoryProfile</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>createdBy</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>simpleGreedyForComposed</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>additionalUimafitEngines</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>strictImports</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>varNames</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>varValues</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>rules</name>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      <configurationParameter>
        <name>rulesScriptName</name>
        <description/>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>true</mandatory>
       </configurationParameter>
    <configurationParameter>
        <name>dictRemoveWS</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
    <configurationParameter>
        <name>reindexOnly</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>reindexOnlyMentionedTypes</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>indexOnlyMentionedTypes</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>indexAdditionally</name>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>emptyIsInvisible</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>modifyDataPath</name>
        <type>Boolean</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>csvSeparator</name>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>inferenceVisitors</name>
        <description/>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>maxRuleMatches</name>
        <description/>
        <type>Integer</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    <configurationParameter>
        <name>maxRuleElementMatches</name>
        <description/>
        <type>Integer</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
    </configurationParameter>
    </configurationParameters>
    <configurationParameterSettings>
      <nameValuePair>
        <name>rulesScriptName</name>
        <value>
          <string>Anonymous</string>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>debug</name>
        <value>
          <boolean>false</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>profile</name>
        <value>
          <boolean>false</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>debugWithMatches</name>
        <value>
          <boolean>true</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>defaultFilteredTypes</name>
        <value>
          <array>
            <string>org.apache.uima.ruta.type.SPACE</string>
            <string>org.apache.uima.ruta.type.BREAK</string>
            <string>org.apache.uima.ruta.type.MARKUP</string>
          </array>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>removeBasics</name>
        <value>
          <boolean>false</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>seeders</name>
        <value>
          <array>
            <string>org.apache.uima.ruta.seed.TextSeeder</string>
          </array>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>createdBy</name>
        <value>
          <boolean>false</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>emptyIsInvisible</name>
        <value>
          <boolean>true</boolean>
        </value>
      </nameValuePair>
       <nameValuePair>
        <name>dictRemoveWS</name>
        <value>
          <boolean>true</boolean>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>inferenceVisitors</name>
        <value>
          <array/>
        </value>
      </nameValuePair>
      <nameValuePair>
         <name>maxRuleMatches</name>
         <value>
            <integer>2147483647</integer>
         </value>
      </nameValuePair>
      <nameValuePair>
         <name>maxRuleElementMatches</name>
         <value>
           <integer>2147483647</integer>
         </value>
      </nameValuePair>
    </configurationParameterSettings>
    <typeSystemDescription>
      <imports>
        <import name="org.apache.uima.ruta.engine.BasicTypeSystem"/>
      </imports>
    </typeSystemDescription>
    <typePriorities>
      <priorityList>
        <type>org.apache.uima.ruta.type.RutaFrame</type>
        <type>uima.tcas.Annotation</type>
        <type>org.apache.uima.ruta.type.RutaBasic</type>
      </priorityList>
    </typePriorities>
    <fsIndexCollection/>
    <capabilities>
      <capability>
        <inputs/>
        <outputs/>
        <languagesSupported/>
      </capability>
    </capabilities>
    <operationalProperties>
      <modifiesCas>true</modifiesCas>
      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
      <outputsNewCASes>true</outputsNewCASes>
    </operationalProperties>
  </analysisEngineMetaData>
  <resourceManagerConfiguration/>
</analysisEngineDescription>
