<?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>perltator</annotatorImplementationName>


<analysisEngineMetaData>
  <name>Perl Sample</name>
  <description>Generic Perl 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>Perl code to be loaded</description>
                <type>String</type>
                <multiValued>false</multiValued>
                <mandatory>true</mandatory>
            </configurationParameter>
            <configurationParameter>
                <name>matchString</name>
                <description>Perl 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.pl</string>
            </value>
          </nameValuePair>
          <nameValuePair>
            <name>DebugLevel</name>
            <value>
              <integer>100</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>
