<?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>InternalTypeSystem</name>
  <description/>
  <version>1.0</version>
  <vendor/>
  <types>
    <typeDescription>
      <name>org.apache.uima.ruta.type.RutaBasic</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>replacement</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.RutaOptional</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.RutaAnnotation</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>score</name>
          <description/>
          <rangeTypeName>uima.cas.Double</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>annotation</name>
          <description/>
          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugRuleApply</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.DebugScriptApply</supertypeName>
      <features>
        <featureDescription>
          <name>applied</name>
          <description/>
          <rangeTypeName>uima.cas.Integer</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>tried</name>
          <description/>
          <rangeTypeName>uima.cas.Integer</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>rules</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugRuleMatch</elementType>
        </featureDescription>
        <featureDescription>
          <name>id</name>
          <description/>
          <rangeTypeName>uima.cas.Integer</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>script</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugRuleMatch</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
      <features>
        <featureDescription>
          <name>elements</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
        </featureDescription>
        <featureDescription>
          <name>matched</name>
          <description/>
          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>delegates</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugScriptApply</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
      <features>
        <featureDescription>
          <name>element</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugBlockApply</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.DebugRuleApply</supertypeName>
      <features>
        <featureDescription>
          <name>innerApply</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugRuleElementMatch</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
      <features>
        <featureDescription>
          <name>baseCondition</name>
          <description/>
          <rangeTypeName>org.apache.uima.ruta.type.DebugEvaluatedCondition</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>conditions</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
        </featureDescription>
        <featureDescription>
          <name>elements</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
          <multipleReferencesAllowed>false</multipleReferencesAllowed>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugRuleElementMatches</name>
      <description/>
      <supertypeName>uima.cas.TOP</supertypeName>
      <features>
        <featureDescription>
          <name>matches</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatch</elementType>
        </featureDescription>
        <featureDescription>
          <name>element</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>ruleAnchor</name>
          <description/>
          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.RutaColoring</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>bgColor</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>targetType</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>fgColor</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>selected</name>
          <description/>
          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugEvaluatedCondition</name>
      <description/>
      <supertypeName>uima.cas.TOP</supertypeName>
      <features>
        <featureDescription>
          <name>element</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>value</name>
          <description/>
          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>conditions</name>
          <description/>
          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugMatchedRuleMatch</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugFailedRuleMatch</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.FalsePositive</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.EvalAnnotation</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>original</name>
          <description/>
          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.FalseNegative</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.ProfiledAnnotation</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>time</name>
          <description/>
          <rangeTypeName>uima.cas.Long</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.RutaFrame</name>
      <description/>
      <supertypeName>uima.tcas.Annotation</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.Statistics</name>
      <description/>
      <supertypeName>uima.cas.TOP</supertypeName>
      <features>
        <featureDescription>
          <name>name</name>
          <description/>
          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>total</name>
          <description/>
          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>amount</name>
          <description/>
          <rangeTypeName>uima.cas.IntegerArray</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>part</name>
          <description/>
          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.TruePositive</name>
      <description/>
      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.DebugCreatedBy</name>
      <description/>
      <supertypeName>uima.cas.TOP</supertypeName>
      <features>
        <featureDescription>
          <name>rule</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>annotation</name>
          <description/>
          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>script</name>
          <description/>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>id</name>
          <description/>
          <rangeTypeName>uima.cas.Integer</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
  </types>
</typeSystemDescription>
