The Project Interchange XML Schema definition

ruleset.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ruleType">
        <xs:complexContent>
            <xs:extension base="baseRuleType">
                <xs:sequence>
                    <xs:element name="rule-text" type="ruleTextType"/>
                    <xs:element name="plain-text" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A plain text form of the rule text. This form is guaranteed to include on ASCII alpha-numeric characters, spaces, tabs, carriage returns and line feeds.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="lang" type="xs:string"/>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="rule-xml" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Reserved for Oracle use. This is the compiled XML form of the rule. This schema is defined elsewhere.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="participating-attributes" type="participatingAttributesType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The collection of attributes that participate in the rule. Participation may be as a conclusion attribute, an intermediate conclusion attribute or as a condition.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="rule-type" use="optional">
                    <xs:annotation>
                        <xs:documentation>Used to indicate that a rule is a shortcut rule. Can be used in the future to identify different types of rules.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="shortcut"/>
                            <xs:enumeration value="standard"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ruleTextType">
        <xs:sequence>
            <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="format" use="optional" default="text">
            <xs:annotation>
                <xs:documentation>Describes the original format of the rule in its source document - eg. free-form paragraph style (text), tabular or graphical.  Only text and table are supported. Graph is reserved for future use.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="text"/>
                    <xs:enumeration value="table"/>
                    <xs:enumeration value="graph"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="propertyDefinitionType">
        <xs:sequence minOccurs="0">
            <xs:element name="values">
                <xs:complexType>
                    <xs:sequence minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="value" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="name" use="required">
            <xs:annotation>
                <xs:documentation>The name of the property. Must be unique for an object type.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="applies-to" use="required">
            <xs:annotation>
                <xs:documentation>The type of object to which a property definition applies - project, rule, entity, attribute, relationship, screen</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="project"/>
                    <xs:enumeration value="ruleset"/>
                    <xs:enumeration value="rule"/>
                    <xs:enumeration value="entity"/>
                    <xs:enumeration value="attribute"/>
                    <xs:enumeration value="relationship"/>
                    <xs:enumeration value="screen"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type" use="required">
            <xs:annotation>
                <xs:documentation>The data type of the property - text, number, boolean or list</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="boolean"/>
                    <xs:enumeration value="number"/>
                    <xs:enumeration value="list"/>
                    <xs:enumeration value="text"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="default-value" type="xs:string" use="optional"/>
        <xs:attribute name="allow-blank" type="xs:boolean">
            <xs:annotation>
                <xs:documentation>True if an empty value for the property is permitted.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="propertyType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" use="required">
                    <xs:annotation>
                        <xs:documentation>The name part of the property.  When combined with the type of the element that owns the property (eg. project, ruleset, rule, entity, attribute, relationship), selects a property-definition that specifies the property's data type, default value and, for lists, allowed values.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="participatingAttributeType">
        <xs:annotation>
            <xs:documentation>An attribute that participates in a rule, either as a concluded attribute or as a contributing attribute (ie. appearing in a premise)</xs:documentation>
        </xs:annotation>
        <xs:attribute name="role" use="required">
            <xs:annotation>
                <xs:documentation>The role of the attribute in rule - ie. either a conclusion, an intermediate conclusion or a premise.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="conclusion"/>
                    <xs:enumeration value="intermediate"/>
                    <xs:enumeration value="premise"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="entity-name" use="required">
            <xs:annotation>
                <xs:documentation>The name (unique identifier) of the participating attribute's entity.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="attribute-name" use="required">
            <xs:annotation>
                <xs:documentation>The name (unique identifier) of the participating attribute.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="abbreviation" type="xs:string" use="optional"/>
    </xs:complexType>
    <!--Collections-->
    <xs:complexType name="attributesType">
        <xs:sequence>
            <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="attributeType"/>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="attributeAliasesType">
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="alias" type="attributeAliasType">
                <xs:annotation>
                    <xs:documentation>An attribute that is bound to another attribute.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="entitiesType">
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="entity" type="entityType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="participatingAttributesType">
        <xs:annotation>
            <xs:documentation>A collection of attributes that participate in a rule.</xs:documentation>
        </xs:annotation>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="participating-attribute" type="participatingAttributeType">
                <xs:annotation>
                    <xs:documentation>An attribute that participates in the rule. Participation may be as a conclusion attribute, an intermediate conclusion attribute or as a condition.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="propertyDefinitionsType">
        <xs:annotation>
            <xs:documentation>A collection of property definitions specifying a property's type, allowed values, default value, etc.</xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="property-definition" type="propertyDefinitionType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="propertiesType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="property" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The value of the property.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="propertyType"/>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="relationshipsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="relationship" type="relationshipType"/>
        </xs:sequence>
    </xs:complexType>
    <!--Other types-->
    <xs:complexType name="definitionType">
        <xs:annotation>
            <xs:documentation>The definition of an object.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="lang" type="xs:language" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="questionFormType">
        <xs:annotation>
            <xs:documentation>Properties of the various forms that a boolean attribute may take (eg. negative, uncertain, question).</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="lang" type="xs:language" use="optional"/>
                <xs:attribute name="enabled" type="xs:boolean" use="optional" default="false">
                    <xs:annotation>
                        <xs:documentation>If false, indicates that the default form should not be overridden. Use to persist, but not immediately use, a potential override form.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="synchronizationIdType">
        <xs:annotation>
            <xs:documentation>May be used by a system or application that supports generation and importing of Oracle Interchange Files to assign a persistent mapping identifier to an Oracle rulebase artifact - eg. to support round-tripping.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
</xs:schema>