<?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.
	 ***************************************************************
   -->

<!--
	Descriptor for a primitive TAE that uses the TutorialDateTime annotator
-->
<taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
	<frameworkImplementation>org.apache.uima.cpp</frameworkImplementation>
	<primitive>true</primitive>
	<annotatorImplementationName>MeetingAnnotator</annotatorImplementationName>


	<analysisEngineMetaData>
		<name>Meeting Annotator</name>
		<description>Detects meetings from co-occurrences of room numbers, dates, and times</description>
		<version>1.0</version>
		<vendor>IBM</vendor>

		<configurationParameters>
			<configurationParameter>
				<name>WindowSize</name>
				<description>Maximum number of characters within which a room number, a date, and two times must occur for a meeting annotation to be created.</description>
				<type>Integer</type>
				<multiValued>false</multiValued>
				<mandatory>true</mandatory>
			</configurationParameter>
		</configurationParameters>

		<configurationParameterSettings>
			<nameValuePair>
				<name>WindowSize</name>
				<value>
					<integer>200</integer>
				</value>
			</nameValuePair>
		</configurationParameterSettings>

		<!--
			TypeSystem Definition
		-->

		<typeSystemDescription>
		  <imports>
		    <import location="TutorialTypeSystem.xml"/>
		  </imports>
		</typeSystemDescription>



		<!--
			Capabilities: Inputs, Outputs, and Preconditions
		-->
		<capabilities>
			<capability>
				<inputs>
					<type allAnnotatorFeatures="true">org.apache.uima.tutorial.RoomNumber</type>
					<type allAnnotatorFeatures="true">org.apache.uima.tutorial.TimeAnnot</type>
					<type allAnnotatorFeatures="true">org.apache.uima.tutorial.DateAnnot</type>
				</inputs>
				<outputs>
					<type allAnnotatorFeatures="true">org.apache.uima.tutorial.Meeting</type>
				</outputs>
				<languagesSupported>
					<language>en</language>
				</languagesSupported>
			</capability>
		</capabilities>

	</analysisEngineMetaData>
</taeDescription>
