<?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.cpp</frameworkImplementation>
<primitive>true</primitive>
<annotatorImplementationName>SimpleTextSegmenter</annotatorImplementationName>
 
<analysisEngineMetaData>
	<name>Simple Text Segmenter</name>
	<description>Splits a text document into pieces. The point at which the text is split is determined by SegmentDelimiter configuration parameter which defaults to new line ('\n')</description>
	<version>1.0</version>
	<vendor>IBM</vendor>
	
	<configurationParameters>
		<configurationParameter>
			<name>SegmentDelimiter</name>
			<description>segment delimiter</description>
			<type>String</type>
			<multiValued>false</multiValued>
			<mandatory>false</mandatory>
		</configurationParameter>
	</configurationParameters>
	<configurationParameterSettings>
		<nameValuePair>
			<name>SegmentDelimiter</name>
			<value>
				<string>.</string>
			</value>
		</nameValuePair>
	</configurationParameterSettings>

	<typeSystemDescription/>

	<fsIndexCollection>
	 <fsIndexes>
	   <fsIndexDescription>
	      <label>TestIndex</label>
	      <typeName>uima.cas.TOP</typeName>
	      <kind>bag</kind>
	      <keys/>
	    </fsIndexDescription>
          </fsIndexes>
        </fsIndexCollection>
		
	<capabilities>
		<capability>
			<outputs/>
		</capability>
	</capabilities>
	
	<operationalProperties>
		<modifiesCas>false</modifiesCas>
		<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
		<outputsNewCASes>true</outputsNewCASes>
	</operationalProperties>
	
</analysisEngineMetaData>
</analysisEngineDescription>
