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


<analysisEngineMetaData>
  <name>Sofa Test Annotator</name>
  <description>Looks for an English Sofa and creates a German one.</description>
  <version>1.0</version>
  <vendor>IBM</vendor>


<!--
  Configuration Parameter Definitions
-->
        <configurationParameters/>

<!--
        Values for the configuration parameters
-->
        <configurationParameterSettings/>
 

<!--
        TypeSystem Definition
-->

  <typeSystemDescription>
    <types>
      <typeDescription>
        <name>sofa.test.CrossAnnotation</name>
        <description></description>
        <supertypeName>uima.tcas.Annotation</supertypeName>
        <features>
  	<featureDescription>
  	  <name>otherAnnotation</name>
  	  <description></description>
  	  <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
  	</featureDescription>
        </features>
      </typeDescription>
    </types>
  </typeSystemDescription>

<!--
        IndexSystem Definition
-->

        

<!--
Capabilities: Inputs, Outputs, and Preconditions
-->
  <capabilities>
    <capability>
      <inputs/>
      <outputs>
        <type allAnnotatorFeatures="true">sofa.test.CrossAnnotation</type>
      </outputs> 
      <inputSofas>
  	<sofaName>EnglishDocument</sofaName>
      </inputSofas>
      <outputSofas>
  	<sofaName>GermanDocument</sofaName>
      </outputSofas>
      <languagesSupported>
        <language>x-unspecified</language>
      </languagesSupported>
    </capability>
  </capabilities>

</analysisEngineMetaData>
</taeDescription>
