<?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://incubator.apache.org/uima/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>
