<?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.tutorial.ex6.UimaMeetingAnnotator</annotatorImplementationName>
  <analysisEngineMetaData>
    <name>UIMA Meeting Annotator</name>
    <description>Iterates over Meeting annotations and annotates a meeting as a UimaMeeting if a UIMA acronym occurs in close proximity to that meeting.</description>
    <version>1.0</version>
    <vendor>The Apache Software Foundation</vendor>
    <configurationParameters/>
    <configurationParameterSettings/>
    <typeSystemDescription>
      <imports>
        <import location="TutorialTypeSystem.xml"/>
      </imports>
    </typeSystemDescription>
    <capabilities>
      <capability>
        <inputs>
          <type allAnnotatorFeatures="true">org.apache.uima.tutorial.Meeting</type>
        </inputs>
        <outputs>
          <type allAnnotatorFeatures="true">org.apache.uima.tutorial.UimaMeeting</type>
        </outputs>
        <languagesSupported>
          <language>en</language>
        </languagesSupported>
      </capability>
    </capabilities>
	<operationalProperties>
		<modifiesCas>true</modifiesCas>
		<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
		<outputsNewCASes>false</outputsNewCASes>
	</operationalProperties>
  </analysisEngineMetaData>
  <externalResourceDependencies>
    <externalResourceDependency>
      <key>UimaTermTable</key>
      <description>Map whose keps are UIMA terms.</description>
      <interfaceName>org.apache.uima.tutorial.ex6.StringMapResource</interfaceName>
      <optional>false</optional>
    </externalResourceDependency>
  </externalResourceDependencies>
</analysisEngineDescription>
