<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/opa/10.4/modeling/interchange" xmlns:NS="http://xmlns.oracle.com/opa/10.4/modeling/interchange" targetNamespace="http://xmlns.oracle.com/opa/10.4/modeling/interchange" elementFormDefault="qualified" attributeFormDefault="unqualified" version="10.4:20120202">
<!--Root element-->
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="project" type="projectType">
<xs:annotation>
<xs:documentation>Container for project and other interchange metadata, including the project name, the identity of the user creating the interchange file, encryption settings, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="model" type="modelType">
<xs:annotation>
<xs:documentation>Container for the rulebase data model, including entities, attributes and relationships.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="rules" type="rulesType" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of rules and rulesets that make up the rulebase.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--Top level elements-->
<xs:complexType name="projectType">
<xs:all>
<xs:element name="name">
<xs:annotation>
<xs:documentation>The name of the project.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="date-created" type="xs:date" minOccurs="0">
<xs:annotation>
<xs:documentation>The date and time that the instance of the interchange file was created.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="created-by" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The full name of the person who generated the instance of the interchange file.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="region" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The project Region Culture code.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="user-id" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The user identifier of the person who generated the instance of the interchange file.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="property-definitions" type="propertyDefinitionsType" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of definitions for custom properties used by assets in the project.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="properties" type="propertiesType" minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="modelType">
<xs:annotation>
<xs:documentation>The rulebase model, comprising entities, attributes and relationships.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="entities" type="entitiesType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The collection of entities in the rulebase model.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="relationships" type="relationshipsType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The collection of relationships between the entities in the rulebase model.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="rulesType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="ruleset" type="rulesetType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A ruleset is a group of rules, and potentially, other rulesets, that are semantically related in some way. The grouping is user-definable and has no effect on the how the rulebase executes - eg. rulesets do not specify any scope for rules.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default-structural-element" type="defaultStructElementType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="rule" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ruleType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!--Base element definitions-->
<xs:complexType name="baseAttributeTextType">
<xs:sequence>
<xs:element name="base">
<xs:annotation>
<xs:documentation>The text of the attribute.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="statement-form" type="questionFormType" minOccurs="0">
<xs:annotation>
<xs:documentation>If included and enabled, specifies the text that Oracle Policy Modeling should use for the statement form of the attribute instead of the base text.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="question-form" type="questionFormType" minOccurs="0">
<xs:annotation>
<xs:documentation>If included and enabled, specifies the text that Oracle Policy Modeling should use for the question form of the attribute instead of the base text.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="baseAttributeType">
<xs:annotation>
<xs:documentation>Base type for attributes, including attribute aliases.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="definition" type="definitionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The definition of the attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="attribute-text" type="attributeTextType">
<xs:annotation>
<xs:documentation>The text of the attribute, optionally including overrides for various natural language forms.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the rulebase attribute. This is mandatory for both import and export. For export, if an attribute is public, this will be the public name. If it is not public, it will be the build model identifier of the attribute (ie. the document identifier +'@' + document scope). Note that for non-public attributes, this name is not persistent, but is regenerated every time the rule document is compiled.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="synchronization-id" type="synchronizationIdType" use="optional">
<xs:annotation>
<xs:documentation>May be used by a system or application that supports generation and importing of project interchange files to assign a persistent mapping identifier to a rulebase artifact - eg. to support round-tripping.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="baseRuleType">
<xs:annotation>
<xs:documentation>Base type for rules and rulesets.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="name">
<xs:annotation>
<xs:documentation>The name of the rule or ruleset.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="source" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The source of the rule, eg. legislative reference, policy document name, instruction number, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="source-date-range" minOccurs="0">
<xs:annotation>
<xs:documentation>An optional commencement and/or end date for a rule or ruleset. These dates are documentary, only: they have no effect on whether a rule or ruleset will fire in a compiled rulebase.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="from" type="xs:date" use="optional"/>
<xs:attribute name="to" type="xs:date" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="definition" type="definitionType" minOccurs="0">
<xs:annotation>
<xs:documentation>A definition or business expression applying to the rule or ruleset.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="properties" type="propertiesType" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of named (key/value) properties applying to the rule or ruleset.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="synchronization-id" type="synchronizationIdType" use="optional">
<xs:annotation>
<xs:documentation>May be used by a system or application that supports generation and importing of project interchange files to assign a persistent mapping identifier to a rulebase artifact - eg. to support round-tripping.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--Derived element definitions-->
<xs:complexType name="attributeType">
<xs:complexContent>
<xs:extension base="baseAttributeType">
<xs:sequence>
<xs:element name="properties" type="propertiesType" minOccurs="0">
<xs:annotation>
<xs:documentation>A collection of arbitrary or user-defined key/value pairs associated with the attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="aliases" type="attributeAliasesType" minOccurs="0">
<xs:annotation>
<xs:documentation>A collection of attributes that are bound to this attribute. The bound attribute is an alias for the primary attribute - it has no distinct or separate value.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="constraint" type="constraintType" minOccurs="0">
<xs:annotation>
<xs:documentation>If present, may be used to constrain the values that an attribute may be assigned at runtime.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type">
<xs:annotation>
<xs:documentation>The data type of the attribute - ie. boolean, text, currency, number or date.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="boolean"/>
<xs:enumeration value="text"/>
<xs:enumeration value="number"/>
<xs:enumeration value="date"/>
<xs:enumeration value="datetime"/>
<xs:enumeration value="timeofday"/>
<xs:enumeration value="currency"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="public" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates whether entity participates in the rulebase's public data model.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="module-only" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates if the attribute is defined only in a module (such attributes are exported, but not re-imported).</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="attributeAliasType">
<xs:complexContent>
<xs:extension base="baseAttributeType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="attributeTextType">
<xs:complexContent>
<xs:extension base="baseAttributeTextType">
<xs:sequence minOccurs="0">
<xs:annotation>
<xs:documentation>For boolean attributes only, the following elements may be specified.</xs:documentation>
</xs:annotation>
<xs:element name="uncertain-form" type="questionFormType" minOccurs="0">
<xs:annotation>
<xs:documentation>If included and enabled, specifies the text that Oracle Policy Modeling should use when the attribute has an uncertain value.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="parse" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Applies to boolean attributes only, specifies the object, subject and verb elements of the attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="negative-form" type="questionFormType" minOccurs="0">
<xs:annotation>
<xs:documentation>If included and enabled, specifies the text that Oracle Policy Modeling should use when the attribute is negative.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="allow-subst" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>If true, the value of the attribute is substituted for the attribute text when it appears in rulebase statements. Applies to non-boolean attributes only.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="plural" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>If true, the base attribute text is plural. Applies to non-boolean attributes only.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="gender" default="impersonal">
<xs:annotation>
<xs:documentation>Specifies the default gender of the attribute: impersonal (it), generic (he/she), male (he) or female (she). Applies to non-boolean attributes only.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="generic"/>
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
<xs:enumeration value="impersonal"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="constraintType">
<xs:attribute name="min" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>The minimum value the attribute may take. Applies to numeric, currency and date attributes only.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>The maximum value the attribute may take. Applies to numeric, currency and date attributes only.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="reg-exp" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>A regular expression that will be applied to validate the attribute. Applies to text attributes only.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="validation-message" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>User defined error message to be displayed when validation fails.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="entityType">
<xs:sequence>
<xs:element name="entity-text">
<xs:annotation>
<xs:documentation>The textual form of the entity name.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="definition" type="definitionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The definition of the entity.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="attributes" type="attributesType">
<xs:annotation>
<xs:documentation>The collection of attributes defined for the entity.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="properties" type="propertiesType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>This is the entity identifiier and must be unique within the interchange document. This is a generated value based on the entity's text</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="public" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates if the entity is using a public name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="module-only" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates if the entity is defined only in a module (such entities and their attributes are exported, but not re-imported).</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="synchronization-id" type="synchronizationIdType" use="optional">
<xs:annotation>
<xs:documentation>May be used by a system or application that supports generation and importing of project interchange files to assign a persistent mapping identifier to a rulebase artifact - eg. to support round-tripping.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="singleton" type="xs:boolean" use="optional" default="false">
<xs:annotation>
<xs:documentation>If true, there can be at most one instance of this entity. Otherwise, any number of instances is allowed. In the case of the global entity, this attribute must be true, and indicates there is exactly one instance of this entity.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="containment-relationship-id" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>ID of the entity's containment relationship</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="containment-parent-id" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>ID of the entity's containment parent (i.e. the containing entity)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="identifying-attribute-name" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Public ID of the entity's identifying attribute</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="relationshipType">
<xs:sequence>
<xs:element name="source" type="xs:string">
<xs:annotation>
<xs:documentation>The name of the parent or LHS entity in the relationship. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="target" type="xs:string">
<xs:annotation>
<xs:documentation>The name of the target, child or RHS entity in the relationship.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="relationship-text">
<xs:annotation>
<xs:documentation>The textual form of the relationship name. This is normally expressed in plural form of the relationship and used by the natural language processor to identify the presence of the relationship in a quantification operation - eg. existential, universal, instance selection, (conditional) instance counting.</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="reverse-text">
<xs:annotation>
<xs:documentation>The textual form of the reverse relationship. </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="properties" type="propertiesType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the relationship. This must be unique and comply with the object naming rules: ie. begin with a letter, contain only letters, numbers, '_', '@' and not include any spaces.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="module-only" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates if the relationship is defined only in a module (such relationships are exported, but not re-imported).</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="reverse-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the relationship. This must be unique and comply with the object naming rules: ie. begin with a letter, contain only letters, numbers, '_', '@' and not include any spaces.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="public" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates the relationship name is a public name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="reverse-public" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Indicates the reverse relationship name is a public name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="is-containment" type="xs:boolean" use="required">
<xs:annotation>
<xs:documentation>Indicates if the relationship is a containment relationship</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="synchronization-id" type="synchronizationIdType" use="optional">
<xs:annotation>
<xs:documentation>May be used by a system or application that supports generation and importing of project interchange files to assign a persistent mapping identifier to a rulebase artifact - eg. to support round-tripping.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The relationship type. Single indicates a one-to-one relationship. Child indicates a one-to-many relationship from source to target. Parent indicates a path from a child entity to its parent. Multiple indicates a many-to-many relationship.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="defaultStructElementType">
<xs:annotation>
<xs:documentation>The file name of the document that the ruleset represents.</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="rule" minOccurs="0">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ruleType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string">
<xs:annotation>
<xs:documentation>Name of default structural element as defined in the document.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="rulesetType">
<xs:complexContent>
<xs:extension base="baseRuleType">
<xs:sequence>
<xs:element name="document" minOccurs="0">
<xs:annotation>
<xs:documentation>The file name of the document that the ruleset represents.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scope" type="xs:string">
<xs:annotation>
<xs:documentation>Reserved for Oracle Policy Modeling. This is a scope identifier appended to attributes defined in the document and used to disambiguate attributes auto-assigned the same base name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="default-structural-element" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Default structural element as defined in the document.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="document-type" use="optional" default="Word">
<xs:annotation>
<xs:documentation>The type of document that the rules in this ruleset were sourced from - eg. Word or Excel. Useful on import when allocating rules to project documents. Defaults to Word.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Word"/>
<xs:enumeration value="Excel"/>
<xs:enumeration value="Visio"/>
<xs:enumeration value="Module"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="rules" type="rulesType">
<xs:annotation>
<xs:documentation>The collection of rules and rulesets that make up this 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 Policy Modeling. 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-loop" type="xs:boolean"/>
<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="help-text" type="xs:string" minOccurs="0"/>
<xs:element name="values" minOccurs="0">
<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, control</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:enumeration value="interactivedocument"/>
<xs:enumeration value="control"/>
</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:attribute name="runtime" type="xs:boolean">
<xs:annotation>
<xs:documentation>True if the property is available at Runtime.</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 minOccurs="0" 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 project interchange files to assign a persistent mapping identifier to a rulebase artifact - eg. to support round-tripping.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:schema>