<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:element name="ABSTRACT">
		<xs:complexType/>
	</xs:element>
	<xs:element name="Attribute">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="OPTIONAL" minOccurs="0"/>
				<xs:element ref="Attribute.Aggregate" minOccurs="0"/>
				<xs:element ref="Attribute.Type"/>
			</xs:sequence>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Attribute.Aggregate">
		<xs:complexType>
			<xs:attribute name="Type" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="LIST"/>
						<xs:enumeration value="SET"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="Lower" type="xs:string" use="required"/>
			<xs:attribute name="Upper" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Attribute.Type">
		<xs:complexType>
			<xs:attribute name="Name" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="BOOLEAN"/>
						<xs:enumeration value="INTEGER"/>
						<xs:enumeration value="LOGICAL"/>
						<xs:enumeration value="REAL"/>
						<xs:enumeration value="STRING"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="Width" type="xs:int"/>
			<xs:attribute name="Fixed" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Comment" type="xs:string"/>
	<xs:element name="ENTITY">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ENTITY.Attributes" minOccurs="0"/>
				<xs:element ref="Inverses" minOccurs="0"/>
				<xs:element ref="ENTITY.Supertypes" minOccurs="0"/>
				<xs:element ref="ENTITY.Attributes" minOccurs="0"/>
				<xs:element ref="Inverses" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ENTITY.Attributes">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Attribute" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ENTITY.SubtypeOf">
		<xs:complexType>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ENTITY.SupertypeOf">
		<xs:complexType>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ENTITY.Supertypes">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ABSTRACT" minOccurs="0"/>
				<xs:element ref="supertype_one_of" minOccurs="0"/>
				<xs:element ref="ENTITY.SubtypeOf" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Express">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Comment"/>
				<xs:element ref="SCHEMA"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Inverse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Attribute.Aggregate" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="Type" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="For" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Inverses">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Inverse" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="OPTIONAL">
		<xs:complexType/>
	</xs:element>
	<xs:element name="SCHEMA">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SCHEMA.Comment"/>
				<xs:element ref="SCHEMA.Name"/>
				<xs:element ref="TYPE" maxOccurs="unbounded"/>
				<xs:element ref="ENTITY" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SCHEMA.Comment">
		<xs:complexType/>
	</xs:element>
	<xs:element name="SCHEMA.Name" type="xs:string"/>
	<xs:element name="TYPE">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TYPE.SelectList" minOccurs="0"/>
				<xs:element ref="TYPE.EnumList" minOccurs="0"/>
				<xs:element ref="TYPE.Aggregate" minOccurs="0"/>
				<xs:element ref="TYPE.Type" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="Kind" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="Defined"/>
						<xs:enumeration value="ENUMERATION"/>
						<xs:enumeration value="SELECT"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="TYPE.Aggregate">
		<xs:complexType>
			<xs:attribute name="Type" type="xs:string" use="required"/>
			<xs:attribute name="Lower" type="xs:byte" use="required"/>
			<xs:attribute name="Upper" type="xs:byte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="TYPE.EnumItem" type="xs:NMTOKEN"/>
	<xs:element name="TYPE.EnumList">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TYPE.EnumItem" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="TYPE.SelectItem" type="xs:NMTOKEN"/>
	<xs:element name="TYPE.SelectList">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TYPE.SelectItem" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="TYPE.Type">
		<xs:complexType>
			<xs:attribute name="Name" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="BINARY"/>
						<xs:enumeration value="BOOLEAN"/>
						<xs:enumeration value="INTEGER"/>
						<xs:enumeration value="NUMBER"/>
						<xs:enumeration value="REAL"/>
						<xs:enumeration value="STRING"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="Width" type="xs:int"/>
			<xs:attribute name="Fixed" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="supertype_one_of">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ENTITY.SupertypeOf" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

