<?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.    
-->  
  <typeSystemDescription
	xmlns="http://uima.apache.org/resourceSpecifier">
	<types>
		<typeDescription>
			<name>uima.tcas.Annotation</name>
			<description />
			<supertypeName>uima.cas.AnnotationBase</supertypeName>
			<features>
				<featureDescription>
					<name>sofa</name>
					<description />
					<rangeTypeName>uima.cas.Sofa</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>begin</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>end</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
		<typeDescription>
			<name>uima.tcas.DocumentAnnotation</name>
			<description />
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>sofa</name>
					<description />
					<rangeTypeName>uima.cas.Sofa</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>begin</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>end</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>language</name>
					<description />
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
		<typeDescription>
			<name>org.apache.uima.TokenAnnotation</name>
			<description />
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>sofa</name>
					<description />
					<rangeTypeName>uima.cas.Sofa</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>begin</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>end</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>tokenType</name>
					<description />
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>stem</name>
					<description>stem</description>
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
		<typeDescription>
			<name>org.apache.uima.SentenceAnnotation</name>
			<description />
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>sofa</name>
					<description />
					<rangeTypeName>uima.cas.Sofa</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>begin</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>end</name>
					<description />
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
	</types>
</typeSystemDescription>
