<?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.
	 ***************************************************************
   -->
   
<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
	<name>org.apache.uima.examples.SourceDocumentInformation</name>
	<description>Defines a type for storing information about the original source document from which the current CAS was initialized</description>
	<version>1.0</version>
	<vendor>The Apache Software Foundation</vendor>
	<types>
		<typeDescription>
			<name>org.apache.uima.examples.SourceDocumentInformation</name>
			<description>Stores detailed information about the original source document from which the current CAS was initialized. All information (like size) refers to the source document and not to the document in the CAS which may be converted and filtered by a CAS Initializer. For example this information will be written to the Semantic Search index so that the original document contents can be retrieved by queries.</description>
			<supertypeName>uima.tcas.Annotation</supertypeName>
			<features>
				<featureDescription>
					<name>uri</name>
					<description>URI of document. (For example, file:///MyDirectory/myFile.txt for a simple file or http://uima.apache.org/index.html for content from a web source.)</description>
					<rangeTypeName>uima.cas.String</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>offsetInSource</name>
					<description>Byte offset of the start of document content within original source file or other input source. Only used if the CAS document was retrieved from an source where one physical source file contained several conceptual documents. Zero otherwise.</description>
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
					<name>documentSize</name>
					<description>Size of original document in bytes before processing by CAS Initializer. Either absolute file size of size within file or other source.</description>
					<rangeTypeName>uima.cas.Integer</rangeTypeName>
				</featureDescription>
				<featureDescription>
				  <name>lastSegment</name>
				  <description>For a CAS that represents a segment of a larger source document, this flag indicates whether this CAS is the final segment of the source document.  This is useful for downstream components that want to take some action after having seen all of the segments of a particular source document. </description>
			      <rangeTypeName>uima.cas.Boolean</rangeTypeName>
			    </featureDescription>				
			</features>
		</typeDescription>
	</types>
</typeSystemDescription>