<?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>false</primitive>

	<delegateAnalysisEngineSpecifiers>
		<delegateAnalysisEngine key="MeetingDetector">
			<import location="../ex4/MeetingDetectorTAE.xml" />
		</delegateAnalysisEngine>

		<delegateAnalysisEngine key="UimaMeetingAnnotator">
			<import location="UimaMeetingAnnotator.xml" />
		</delegateAnalysisEngine>

		<delegateAnalysisEngine key="UimaAcronymAnnotator">
			<import location="UimaAcronymAnnotator.xml" />
		</delegateAnalysisEngine>
	</delegateAnalysisEngineSpecifiers>

	<analysisEngineMetaData>
		<name>UIMA Meeting Detector TAE</name>
		<description> Annotates meeting notices, and also marks those meetings whose topic
			is likely to be related to UIMA. Also annotates all UIMA acronyms and provides
			their expanded form.
			This TAE also demonstrates using the Resource Manager to share data between
			annotators. Both the UimaMeetingAnnotator and UimaAcronymAnnotator share a
			common resource file. </description>
		
		<flowConstraints>
			<fixedFlow>
				<node>MeetingDetector</node>
				<node>UimaMeetingAnnotator</node>
				<node>UimaAcronymAnnotator</node>
			</fixedFlow>
		</flowConstraints>
		
		<capabilities>
			<capability>
				<inputs/>
				<outputs>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.Meeting</type>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.UimaMeeting</type>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.UimaAcronym</type>
				</outputs>
				<languagesSupported>
					<language>en</language>
				</languagesSupported>
			</capability>
		</capabilities>
		<operationalProperties>
			<modifiesCas>true</modifiesCas>
			<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
			<outputsNewCASes>false</outputsNewCASes>
		</operationalProperties>
	</analysisEngineMetaData>

	<resourceManagerConfiguration>
		<externalResources>
			<externalResource>
				<name>UimaAcronymTableFile</name>
				<description>A table containing UIMA acronyms and their exanded forms.</description>
				<fileResourceSpecifier>
					<fileUrl>file:org/apache/uima/tutorial/ex6/uimaAcronyms.txt</fileUrl>
				</fileResourceSpecifier>
				<implementationName>org.apache.uima.tutorial.ex6.StringMapResource_impl</implementationName>
			</externalResource>
		</externalResources>
		<externalResourceBindings>
			<externalResourceBinding>
				<key>UimaAcronymAnnotator/AcronymTable</key>
				<resourceName>UimaAcronymTableFile</resourceName>
			</externalResourceBinding>
			<externalResourceBinding>
				<key>UimaMeetingAnnotator/UimaTermTable</key>
				<resourceName>UimaAcronymTableFile</resourceName>
			</externalResourceBinding>
		</externalResourceBindings>
	</resourceManagerConfiguration>
</analysisEngineDescription>

