<?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="Segmenter">
			<import location="SimpleTextSegmenter.xml" />
		</delegateAnalysisEngine>

		<delegateAnalysisEngine key="Tokenizer">
			<import location="../analysis_engine/SimpleTokenAndSentenceAnnotator.xml" />
		</delegateAnalysisEngine>
	</delegateAnalysisEngineSpecifiers>

	<analysisEngineMetaData>
		<name>Segmenter and Tokenizer</name>
		<description>Splits a document into pieces and runs tokenization on each 
			piece independently.  All segments are output. </description>

		<flowConstraints>
		  <fixedFlow>
			<node>Segmenter</node>
			<node>Tokenizer</node>
		  </fixedFlow>
		</flowConstraints>
		
		<capabilities>
			<capability>
				<inputs />
				<outputs>
				  <type allAnnotatorFeatures="true">org.apache.uima.examples.tokenizer.Sentence</type>
				  <type allAnnotatorFeatures="true">org.apache.uima.examples.tokenizer.Token</type>
				</outputs>
				<languagesSupported>
					<language>en</language>
				</languagesSupported>
			</capability>
		</capabilities>
		<operationalProperties>
			<modifiesCas>true</modifiesCas>
			<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
			<outputsNewCASes>true</outputsNewCASes>
		</operationalProperties>
	</analysisEngineMetaData>
</analysisEngineDescription>
