<?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.annotator.SnowballAnnotator</annotatorImplementationName>

   <analysisEngineMetaData>
      <name>SnowballAnnotator</name>
      <description></description>
      <version>1.0</version>
      <vendor></vendor>

      <configurationParameters>
      </configurationParameters>

      <configurationParameterSettings>
      </configurationParameterSettings>

 		<typeSystemDescription>
			<typeDescription>
				<name>org.apache.uima.TokenAnnotation</name>
				<description>Single token annotation</description>
				<supertypeName>uima.tcas.Annotation</supertypeName>
				<features>
					<featureDescription>
						<name>stem</name>
						<description>stem</description>
						<rangeTypeName>uima.cas.String</rangeTypeName>
					</featureDescription>
				</features>
			</typeDescription>

			<typeDescription>
				<name>org.apache.uima.SentenceAnnotation</name>
				<description>sentence annotation</description>
				<supertypeName>uima.tcas.Annotation</supertypeName>
				<features>
					
				</features>
			</typeDescription>
		</typeSystemDescription>

      <fsIndexes/>

      <capabilities>
         <capability>
            <inputs/>

            <outputs>
            </outputs>

            <languagesSupported>
               <language>x-unspecified</language>
            </languagesSupported>
         </capability>
      </capabilities>

   </analysisEngineMetaData>
</analysisEngineDescription>

