<?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">
	<name>TutorialTypeSystem</name>
	<description>Type System Definition for the tutorial examples - as of Exercise 3</description>
	<vendor>The Apache Software Foundation</vendor>
	<version>1.0</version>
	<types>
		<typeDescription>
			<name>org.apache.uima.tutorial.RoomNumber</name>
			<description></description>
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>building</name>
					<description>Building containing this room</description>
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
		<typeDescription>
			<name>org.apache.uima.tutorial.DateTimeAnnot</name>
			<description></description>
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>shortDateString</name>
					<description />
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
			</features>
		</typeDescription>
		<typeDescription>
			<name>org.apache.uima.tutorial.TimeAnnot</name>
			<description></description>
			<supertypeName>org.apache.uima.tutorial.DateTimeAnnot</supertypeName>
			<features></features>
		</typeDescription>
		<typeDescription>
			<name>org.apache.uima.tutorial.DateAnnot</name>
			<description></description>
			<supertypeName>org.apache.uima.tutorial.DateTimeAnnot</supertypeName>
			<features></features>
		</typeDescription>
	</types>
</typeSystemDescription>