<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 (http://www.altova.com) by KING FAHD UNIVERSITY OF PETROLEUM & MINERALS (KING FAHD UNIVERSITY OF PETROLEUM & MINERALS) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="IntegratedModel">
		<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="UseCase" type="UseCase" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:Name"/>
			<xs:attribute name="id" type="xs:ID" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="UseCase">
		<xs:sequence>
			<xs:element name="Include" type="Include" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Extend" type="Extend" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Actor" type="Actor" maxOccurs="unbounded"/>
			<xs:element name="ExtPoint" type="ExtPoint" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Interaction" type="Interaction"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:Name"/>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="superUC" type="xs:IDREF"/>
	</xs:complexType>
	<xs:complexType name="ExtPoint">
		<xs:attribute name="id" type="xs:IDREF" use="required"/>
		<xs:attribute name="name" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Include">
		<xs:attribute name="includedCase" type="xs:IDREF"/>
	</xs:complexType>
	<xs:complexType name="Extend">
		<xs:attribute name="extension" type="xs:IDREF"/>
		<xs:attribute name="RejoinPoint" type="xs:integer" use="required"/>
	</xs:complexType>
	<xs:complexType name="Actor">
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:Name" use="required"/>
		<xs:attribute name="superActor" type="xs:IDREF" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Interaction">
		<xs:sequence>
			<xs:element name="InteractionFragment" type="InteractionFragment" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Class" type="Class"/>
			<xs:element name="Message" type="Message"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Class">
		<xs:sequence>
			<xs:element name="endList"/>
			<xs:element name="Property" type="Property" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="implements" type="implements" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Association" type="Association" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Message" type="Message" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:IDREF" use="required"/>
		<xs:attribute name="name" type="xs:Name"/>
		<xs:attribute name="superClass" type="xs:IDREF"/>
		<xs:attribute name="isAbstract" type="xs:boolean"/>
		<xs:attribute name="isRoot" type="xs:boolean"/>
		<xs:attribute name="isLeaf" type="xs:boolean"/>
	</xs:complexType>
	<xs:complexType name="Property">
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="name" type="xs:Name" use="required"/>
		<xs:attribute name="type" type="xs:IDREF" use="required"/>
		<xs:attribute name="lower" type="xs:integer"/>
		<xs:attribute name="upper" type="xs:string"/>
		<xs:attribute name="default" type="xs:string"/>
		<xs:attribute name="isReadOnly" type="xs:boolean"/>
		<xs:attribute name="isDerived" type="xs:boolean"/>
	</xs:complexType>
	<xs:complexType name="Association">
		<xs:attribute name="name" type="xs:Name"/>
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="targetClass" type="xs:IDREF"/>
		<xs:attribute name="cardinality" type="xs:string"/>
		<xs:attribute name="AggregationKind" type="enumAggregationKind"/>
		<xs:attribute name="navigable" type="xs:boolean"/>
		<xs:attribute name="AssociationClass" type="xs:IDREF" use="optional"/>
	</xs:complexType>
	<xs:complexType name="MessageEnd">
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="id" type="xs:IDREF" use="required"/>
		<xs:attribute name="isGate" type="xs:boolean"/>
	</xs:complexType>
	<xs:complexType name="DataType">
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="Message">
		<xs:sequence>
			<xs:element name="Arguments" type="Arguments" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:Name" use="required"/>
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="messageKind" type="enumMessageKind"/>
		<xs:attribute name="messageSort" type="enumMessageSort"/>
		<xs:attribute name="retAttr" type="xs:IDREF"/>
		<xs:attribute name="visibility" type="enumVisibilityKind"/>
		<xs:attribute name="isQuery" type="xs:boolean"/>
		<xs:attribute name="isAbstract" type="xs:boolean"/>
		<xs:attribute name="isUnique" type="xs:boolean"/>
	</xs:complexType>
	<xs:complexType name="InteractionFragment">
		<xs:choice>
			<xs:element name="SingleOperand">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="InteractionOperand" type="InteractionOperand"/>
						<xs:choice>
							<xs:element name="Opt"/>
							<xs:element name="Loop"/>
							<xs:element name="Break"/>
							<xs:element name="Neg"/>
						</xs:choice>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="MultiOperand">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="InteractionOperand" type="InteractionOperand" maxOccurs="unbounded"/>
						<xs:choice>
							<xs:element name="Par"/>
							<xs:element name="Alt"/>
							<xs:element name="Assert"/>
							<xs:element name="Strict"/>
							<xs:element name="Seq"/>
							<xs:element name="ConsiderIgnore">
								<xs:complexType/>
							</xs:element>
						</xs:choice>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="id"/>
		<xs:attribute name="name"/>
	</xs:complexType>
	<xs:complexType name="InteractionOperand">
		<xs:sequence>
			<xs:element name="Interaction" type="Interaction"/>
			<xs:element name="Guard" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Arguments">
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:Name"/>
		<xs:attribute name="direction" type="enumDirectionKind"/>
		<xs:attribute name="type" type="xs:IDREF"/>
		<xs:attribute name="default" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="implements">
		<xs:attribute name="id" type="xs:IDREF" use="required"/>
		<xs:attribute name="name" type="xs:Name" use="optional"/>
	</xs:complexType>
	<xs:simpleType name="enumMessageKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="syncCall"/>
			<xs:enumeration value="asyncCall"/>
			<xs:enumeration value="createMsg"/>
			<xs:enumeration value="deleteMsg"/>
			<xs:enumeration value="return"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumMessageSort">
		<xs:restriction base="xs:string">
			<xs:enumeration value="complete"/>
			<xs:enumeration value="lost"/>
			<xs:enumeration value="found"/>
			<xs:enumeration value="unknown"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumDirectionKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="in"/>
			<xs:enumeration value="out"/>
			<xs:enumeration value="inout"/>
			<xs:enumeration value="return"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumAggregationKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none"/>
			<xs:enumeration value="shared"/>
			<xs:enumeration value="composite"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumVisibilityKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="public"/>
			<xs:enumeration value="private"/>
			<xs:enumeration value="protected"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
