<?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.WhitespaceTokenizer
	</annotatorImplementationName>

	<analysisEngineMetaData>
		<name>WhitespaceTokenizer</name>
		<description>
			creates token and sentence annotations for whitespace
			separated languages
		</description>
		<version>1.0</version>
		<vendor>The Apache Software Foundation</vendor>

		<configurationParameters>
			<configurationParameter>
				<name>SofaNames</name>
				<description>
					The Sofa names the annotator should work on. If no
					names are specified, the annotator works on the
					default sofa.
				</description>
				<type>String</type>
				<multiValued>true</multiValued>
				<mandatory>false</mandatory>
			</configurationParameter>

		</configurationParameters>

		<configurationParameterSettings>
		<!-- 
			<nameValuePair>
				<name>SofaNames</name>
				<value>
					<array>
						<string>sofaName</string>
					</array>
				</value>
			</nameValuePair>
		-->
		</configurationParameterSettings>

		<typeSystemDescription>
			<typeDescription>
				<name>org.apache.uima.TokenAnnotation</name>
				<description>Single token annotation</description>
				<supertypeName>uima.tcas.Annotation</supertypeName>
				<features>
					<featureDescription>
						<name>tokenType</name>
						<description>token type</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>
					<type>org.apache.uima.TokenAnnotation</type>
					<feature>
						org.apache.uima.TokenAnnotation:tokentype
					</feature>
					<type>org.apache.uima.SentenceAnnotation</type>
				</outputs>
				<languagesSupported>
					<language>x-unspecified</language>
				</languagesSupported>
			</capability>
		</capabilities>

	</analysisEngineMetaData>
</analysisEngineDescription>

