<?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.
	 ***************************************************************
   -->

<taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.cpp</frameworkImplementation>
  <primitive>true</primitive>
<annotatorImplementationName>tclator</annotatorImplementationName>


<analysisEngineMetaData>
  <name>Tcl Sample</name>
  <description>Generic Tcl Annotator.</description>
  <version>1.0</version>
  <vendor>IBM</vendor>


<!--
  Configuration Parameter Definitions
-->
        <configurationParameters>
            <configurationParameter>
                <name>DebugLevel</name>
                <description>Sets the perl annotators debug level</description>
                <type>Integer</type>
                <multiValued>false</multiValued>
                <mandatory>true</mandatory>
            </configurationParameter>
            <configurationParameter>
                <name>SourceFile</name>
                <description>Tcl code to be loaded</description>
                <type>String</type>
                <multiValued>false</multiValued>
                <mandatory>true</mandatory>
            </configurationParameter>
            <configurationParameter>
                <name>matchString</name>
                <description>Tcl regular expression</description>
                <type>String</type>
                <multiValued>false</multiValued>
                <mandatory>true</mandatory>
            </configurationParameter>
        </configurationParameters>

<!--
        Values for the configuration parameters
-->
        <configurationParameterSettings>
          <nameValuePair>
            <name>SourceFile</name>
            <value>
              <string>sample.tcl</string>
            </value>
          </nameValuePair>
          <nameValuePair>
            <name>DebugLevel</name>
            <value>
              <integer>101</integer>
            </value>
          </nameValuePair>
          <nameValuePair>
            <name>matchString</name>
            <value>
              <string>Dave|David|human\s+rights</string>
            </value>
          </nameValuePair>
        </configurationParameterSettings>
 

<!--
        TypeSystem Definition
-->

<typeSystemDescription>
  <types>
    <typeDescription>
      <name>com.ibm.uima.examples.keyword</name>
      <description></description>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
      </features>
    </typeDescription>
  </types>
</typeSystemDescription>


<!--
Capabilities: Inputs, Outputs, and Preconditions
-->
<capabilities>
  <capability>
    <inputs/>
    <outputs>
      <type allAnnotatorFeatures="true">com.ibm.uima.examples.keyword</type>
    </outputs> 
    <languagesSupported>
      <language>x-unspecified</language>
    </languagesSupported>
  </capability>
</capabilities>

</analysisEngineMetaData>
</taeDescription>
