<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by XML Authority. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
	 targetNamespace = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.0"
	 xmlns:tns = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.0"
	>
	<annotation>
		<documentation xml:lang = "en">The schema for OASIS ebXML Registry Information Model</documentation>
	</annotation>
	<!--$Header: /cvsroot/ebxmlrr/ebxmlrr-spec/misc/schema/rim.xsd,v 1.31 2001/12/01 14:45:46 farrukh_najmi Exp $-->
	
	
	<!--Begin information model mapping from ebRIM.-->
	
	<!--Define Data Types -->
	<simpleType name = "String4">
		<restriction base = "string">
			<maxLength value = "4" />
		</restriction>
	</simpleType>	
	
	<simpleType name = "String8">
		<restriction base = "string">
			<maxLength value = "8" />
		</restriction>
	</simpleType>	

	<simpleType name = "String16">
		<restriction base = "string">
			<maxLength value = "16" />
		</restriction>
	</simpleType>	

	<simpleType name = "String32">
		<restriction base = "string">
			<maxLength value = "32" />
		</restriction>
	</simpleType>	

	<simpleType name = "ShortName">
		<restriction base = "string">
			<maxLength value = "64" />
		</restriction>
	</simpleType>	

	<simpleType name = "LongName">
		<restriction base = "string">
			<maxLength value = "128" />
		</restriction>
	</simpleType>	

	<simpleType name = "FreeFormText">
		<restriction base = "string">
			<maxLength value = "256" />
		</restriction>
	</simpleType>	

	<complexType name = "AssociationType1">
		<annotation>
			<documentation xml:lang = "en">
Association is the mapping of the same named interface in ebRIM.
It extends RegistryObject.

An Association specifies references to two previously submitted
registry entrys.

The sourceObject is id of the sourceObject in association
The targetObject is id of the targetObject in association
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "associationType" use = "required" type = "tns:LongName"/>
				<attribute name = "sourceObject" use = "required" type = "IDREF"/>
				<attribute name = "targetObject" use = "required" type = "IDREF"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "Association" type = "tns:AssociationType1"/>
	<complexType name = "AuditableEventType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "eventType" use = "required">
					<simpleType>
						<restriction base = "NMTOKEN">
							<enumeration value = "Created"/>
							<enumeration value = "Deleted"/>
							<enumeration value = "Deprecated"/>
							<enumeration value = "Updated"/>
							<enumeration value = "Versioned"/>
						</restriction>
					</simpleType>
				</attribute>
				<attribute name = "registryObject" use = "required" type = "IDREF"/>
				<attribute name = "timestamp" use = "required" type = "dateTime"/>
				<attribute name = "user" use = "required" type = "IDREF"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "AuditableEvent" type = "tns:AuditableEventType"/>

	<complexType name = "ClassificationType">
		<annotation>
			<documentation xml:lang = "en">
Classification is the mapping of the same named interface in ebRIM.
It extends RegistryObject.

A Classification specifies references to two registry entrys.

The classifiedObject is id of the Object being classified.
The classificationNode is id of the ClassificationNode classying the object
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "classificationScheme" use = "optional" type = "IDREF"/>
				<attribute name = "classifiedObject" use = "required" type = "IDREF"/>
				<attribute name = "classificationNode" use = "optional" type = "IDREF"/>
				<attribute name = "nodeRepresentation" use = "optional" type = "LongName"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "Classification" type = "tns:ClassificationType"/>

	<complexType name = "ClassificationNodeType">
		<annotation>
			<documentation xml:lang = "en">
ClassificationNode is the mapping of the same named interface in ebRIM.
It extends RegistryObject.

ClassificationNode is used to submit a Classification tree to the Registry.

The parent attribute is the id to the parent node. code is an optional code value for a ClassificationNode
often defined by an external taxonomy (e.g. NAICS)
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">

				<sequence>
					<element ref="tns:ClassificationNode" minOccurs="0" maxOccurs="unbounded" />
				</sequence>
				<attribute name = "parent" use="optional" type = "IDREF"/>
				<attribute name = "code" use="optional" type = "ShortName"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ClassificationNode" type = "tns:ClassificationNodeType"/>

	<complexType name = "ClassificationSchemeType">
		<annotation>
			<documentation xml:lang = "en">
ClassificationScheme is the mapping of the same named interface in ebRIM.
It extends RegistryEntry.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryEntryType">
				<sequence>
					<element ref = "tns:ClassificationNode" minOccurs = "0" maxOccurs = "unbounded"/>
				</sequence>
				<attribute name = "isInternal" use = "required" type = "boolean"/>
				<attribute name = "nodeType" use = "required">
					<simpleType>
						<restriction base = "NMTOKEN">
							<enumeration value = "UniqueCode"/>
							<enumeration value = "EmbeddedPath"/>
							<enumeration value = "NonUniqueCode"/>
						</restriction>
					</simpleType>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ClassificationScheme" type = "tns:ClassificationSchemeType"/>

	<complexType name = "ExternalIdentifierType">
		<annotation>
			<documentation xml:lang = "en">
ExternalIdentifier is the mapping of the same named interface in ebRIM.
It extends RegistryObject.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "identificationScheme" use = "required" type = "IDREF"/>
				<attribute name = "value" use = "required" type = "ShortName"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ExternalIdentifier" type = "tns:ExternalIdentifierType"/>

	<complexType name = "ExternalLinkType">
		<annotation>
			<documentation xml:lang = "en">
ExternalLink is the mapping of the same named interface in ebRIM.
It extends RegistryObject.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "externalURI" use="required" type = "anyURI"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ExternalLink" type = "tns:ExternalLinkType"/>

	<complexType name = "ExtrinsicObjectType">
		<annotation>
			<documentation xml:lang = "en">
ExtrinsicObject are attributes from the ExtrinsicObject interface in ebRIM.
It inherits RegistryEntryAttributes
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryEntryType">
				<attribute name = "mimeType" type = "LongName"/>
				<attribute name = "isOpaque" use = "optional" type = "boolean"/>
			</extension>
		</complexContent>
	</complexType>
	
	<!--Following element decl nneds to be lower case but using upper camel case for backward compatibility-->
	
	<element name = "ExtrinsicObject" type = "tns:ExtrinsicObjectType"/>
	<element name = "Address" type = "tns:PostalAddressType"/>

	<complexType name = "OrganizationType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<sequence minOccurs = "1" maxOccurs = "1">
					<element ref = "tns:Address" minOccurs = "1" maxOccurs = "1"/>
					<element ref = "tns:TelephoneNumber" minOccurs = "1" maxOccurs = "unbounded"/>
				</sequence>
				<attribute name = "parent" type = "IDREF"/>
				<attribute name = "primaryContact" use = "required" type = "IDREF"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "Organization" type = "tns:OrganizationType"/>

	<complexType name = "SlotType1">
		<sequence>
			<element ref = "tns:ValueList" minOccurs = "1" maxOccurs="1"/>
		</sequence>
		<attribute name = "name" use = "required" type = "LongName"/>
		<attribute name = "slotType" use = "optional" type = "LongName"/>
	</complexType>
	<element name = "Slot" type = "tns:SlotType1"/>

	<complexType name = "ValueListType">
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:Value" />
		</sequence>
	</complexType>
	<element name = "ValueList" type = "tns:ValueListType"/>
	<element name = "Value" type = "ShortName"/>

	<complexType name = "PersonNameType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:Slot"/>
		</sequence>
		<attribute name = "firstName" use = "optional"  type = "ShortName"/>
		<attribute name = "middleName" use = "optional" type = "ShortName"/>
		<attribute name = "lastName" use = "optional" type = "ShortName"/>
	</complexType>
	<element name = "PersonName" type = "tns:PersonNameType"/>

	<complexType name = "EmailAddressType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:Slot"/>
		</sequence>
		<attribute name = "address" use = "required" type = "ShortName"/>
		<attribute name = "type" use = "optional" type = "String32"/>
	</complexType>
	<element name = "EmailAddress" type = "tns:EmailAddressType"/>


	<complexType name = "PostalAddressType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:Slot"/>
		</sequence>
		<attribute name = "city" use = "optional" type = "ShortName"/>
		<attribute name = "country" use = "optional" type = "ShortName"/>
		<attribute name = "postalCode" use = "optional" type = "ShortName"/>
		<attribute name = "stateOrProvince" use = "optional" type = "ShortName"/>
		<attribute name = "street" use = "optional" type = "ShortName"/>
		<attribute name = "streetNumber" use = "optional" type = "String32"/>
	</complexType>
	<element name = "PostalAddress" type = "tns:PostalAddressType"/>

	<complexType name = "RegistryEntryType">
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<attribute name = "expiration" use = "optional" type = "dateTime"/>
				<attribute name = "majorVersion" default = "1" type = "integer"/>
				<attribute name = "minorVersion" default = "0" type = "integer"/>
				<attribute name = "stability" use = "optional">
					<simpleType>
						<restriction base = "NMTOKEN">
							<enumeration value = "Dynamic"/>
							<enumeration value = "DynamicCompatible"/>
							<enumeration value = "Static"/>
						</restriction>
					</simpleType>
				</attribute>

				<attribute name = "status">
					<simpleType>
						<restriction base = "NMTOKEN">
							<enumeration value = "Submitted"/>
							<enumeration value = "Approved"/>
							<enumeration value = "Deprecated"/>
							<enumeration value = "Withdrawn"/>
						</restriction>
					</simpleType>
				</attribute>
				<attribute name = "userVersion" use = "optional" type = "ShortName"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryEntry" type = "tns:RegistryEntryType"/>
	
	<complexType name = "InternationalStringType">
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:LocalizedString" />
		</sequence>
	</complexType>
	<element name = "InternationalString" type = "tns:InternationalStringType"/>

	<complexType name = "LocalizedStringType">
		<attribute name = "lang" default = "en-us" form = "qualified" type = "language"/>
		<attribute name = "charset" default = "UTF-8" />
		<attribute name = "value" use = "required" type = "FreeFormText"/>
	</complexType>
	<element name = "LocalizedString" type = "tns:LocalizedStringType"/>

	<complexType name = "RegistryObjectType">
		<annotation>
			<documentation xml:lang = "en">
id may be empty. If specified it may be in urn:uuid format or be in some
arbitrary format. If id is empty registry must generate globally unique id.

If id is provided and in proper UUID syntax (starts with urn:uuid:) 
registry will honour it.

If id is provided and is not in proper UUID syntax then it is used for
linkage within document and is ignored by the registry. In this case the
registry generates a UUID for id attribute.

id must not be null when object is being retrieved from the registry.

			</documentation>
		</annotation>
		<sequence minOccurs = "0" maxOccurs = "1">
			<element ref = "tns:Name" minOccurs = "0" maxOccurs = "1"/>
			<element ref = "tns:Description" minOccurs = "0" maxOccurs = "1"/>
			<element ref = "tns:Slot" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:Classification" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:ExternalIdentifier" minOccurs = "0" maxOccurs = "unbounded"/>
		</sequence>
		<attribute name = "accessControlPolicy" use = "optional" type = "IDREF"/>
		<attribute name = "id" type = "ID"/>
		<attribute name = "objectType" use = "optional" type = "LongName"/>
	</complexType>
	<element name = "RegistryObject" type = "tns:RegistryObjectType"/>
	<element name = "Name" type = "tns:InternationalStringType" />
	<element name = "Description" type = "tns:InternationalStringType" />

	<complexType name = "RegistryPackageType">
		<annotation>
			<documentation xml:lang = "en">
RegistryPackage is the mapping of the same named interface in ebRIM.
It extends RegistryEntry.

A RegistryPackage is a named collection of objects.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryEntryType">
				<sequence>
					<element ref = "tns:RegistryObjectList" minOccurs="0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryPackage" type = "tns:RegistryPackageType"/>

	<complexType name = "ServiceType">
		<complexContent>
			<extension base = "tns:RegistryEntryType">
				<sequence>
					<element ref = "tns:ServiceBinding" minOccurs = "0" maxOccurs = "unbounded"/>
				</sequence>				
			</extension>
		</complexContent>
	</complexType>
	<element name = "Service" type = "tns:ServiceType"/>

	<complexType name = "ServiceBindingType">
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<sequence>
					<element ref = "tns:SpecificationLink" minOccurs = "0" maxOccurs = "unbounded"/>
				</sequence>
				
				<attribute name = "accessURI" use="optional" type = "anyURI"/>
				<attribute name = "targetBinding" use="optional" type = "IDREF"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ServiceBinding" type = "tns:ServiceBindingType"/>

	<complexType name = "SpecificationLinkType">
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<sequence minOccurs = "0" maxOccurs = "1">
					<element ref = "tns:UsageDescription" minOccurs = "0" maxOccurs="1" />
					<element ref = "tns:UsageParameter" minOccurs = "0" maxOccurs="unbounded" />
				</sequence>
				<attribute name = "specificationObject" use="required" type = "IDREF"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "SpecificationLink" type = "tns:SpecificationLinkType"/>
	<element name = "UsageDescription" type = "tns:InternationalStringType"  />
	<element name = "UsageParameter" type = "FreeFormText" />
	
	<complexType name = "TelephoneNumberType">
		<annotation>
			<documentation xml:lang = "en">
TelephoneNumber is the mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<attribute name = "areaCode" use = "optional" type = "String4"/>
		<attribute name = "countryCode" use = "optional" type = "String4"/>
		<attribute name = "extension" use = "optional" type = "String8"/>
		<attribute name = "number" use = "optional" type = "String16"/>
		<attribute name = "phoneType" use = "optional" type = "String32"/>
		<attribute name = "url" use = "optional" type = "anyURI"/>
	</complexType>
	<element name = "TelephoneNumber" type = "tns:TelephoneNumberType"/>
	<element name = "FaxNumber" type = "tns:TelephoneNumberType"/>
	<element name = "MobileTelephoneNumber" type = "tns:TelephoneNumberType"/>
	<element name = "PagerNumber" type = "tns:TelephoneNumberType"/>

	<complexType name = "TelephoneNumberListType">
		<sequence>
			<element ref = "tns:TelephoneNumber" minOccurs = "0" maxOccurs = "unbounded"/>
		</sequence>
	</complexType>

	<complexType name = "UserType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<sequence minOccurs="0" maxOccurs = "1">
					<element ref = "tns:Address" minOccurs="1" maxOccurs="1"/>
					<element ref = "tns:PersonName" minOccurs="1" maxOccurs="1"/>
					<element ref = "tns:TelephoneNumber" minOccurs="1" maxOccurs="unbounded"/>
					<element ref = "tns:EmailAddress" minOccurs="1" maxOccurs="unbounded"/>
				</sequence>
				<attribute name = "organization" type = "IDREF"/>
				<attribute name = "url" use = "optional" type = "anyURI"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "User" type = "tns:UserType"/>

	<complexType name = "ObjectRefType">
		<annotation>
			<documentation xml:lang = "en"> 
Use to reference an Object by its id.
Specifies the id attribute of the object as its id attribute.
id attribute in ObjectAttributes is exactly the same syntax and semantics as
id attribute in RegistryObject.
			</documentation>
		</annotation>
		<attribute name = "id" type = "ID"/>
	</complexType>
	<element name = "ObjectRef" type = "tns:ObjectRefType"/>

	<element name = "ObjectRefList">
		<annotation>
			<documentation xml:lang = "en">A list of ObjectRefs</documentation>
		</annotation>
		<complexType>
			<sequence minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "tns:ObjectRef"/>
			</sequence>
		</complexType>
	</element>


	<complexType name = "LeafRegistryObjectListType">
		<choice minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:ObjectRef"/>
			<element ref = "tns:Association"/>
			<element ref = "tns:AuditableEvent"/>
			<element ref = "tns:Classification"/>
			<element ref = "tns:ClassificationNode"/>
			<element ref = "tns:ClassificationScheme"/>
			<element ref = "tns:ExternalIdentifier"/>
			<element ref = "tns:ExternalLink"/>
			<element ref = "tns:ExtrinsicObject"/>
			<element ref = "tns:Organization"/>
			<element ref = "tns:RegistryPackage"/>
			<element ref = "tns:Service"/>
			<element ref = "tns:ServiceBinding"/>
			<element ref = "tns:SpecificationLink"/>
			<element ref = "tns:User"/>
		</choice>
	</complexType>
	<element name = "LeafRegistryObjectList" type = "tns:LeafRegistryObjectListType"/>
	
	<complexType name = "RegistryObjectListType">
		<complexContent>
			<extension base = "tns:LeafRegistryObjectListType">
				
				<sequence>
					<choice minOccurs = "0" maxOccurs = "unbounded">
						<element ref = "tns:RegistryEntry" />
						<element ref = "tns:RegistryObject"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryObjectList" type = "tns:RegistryObjectListType"/>
	
	
</schema>
