OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

regrep message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: [regrep] Latest V3 schema distribution


Kathryn,

Nikola and I have updated schema files for the following changes:

  -Move status from RegistryEntryType to RegistryObjectType

  -Remove accessControlPolicy from RegistryObjectType

  -Simplified Subscription model by removing SelectorType
  and QuerySelectorType and replaced with a selector attribute in 
SubscriptionType
  that is a ref to AdhocQueryType instance.

  -Simplified Subscription model by removing ListenerNotifyActionType
  and EmailNotifyActionType and adding an endPoint attribute in
  NotifyActionType that can be a URI to an email endpoint or a ref to a
  Service object.

  -Replaced NMTOKEN with NCName for retsricting enumerations to map 
better to
  programming languages.

In this distribution, we have also for the first time updated the 
database.sql file for all known V3 changes. This is a major task that is 
completed for the V3 release!

Team, please review these files and send your comments on this thread. 
Thanks.

To help further testing and development, please place the attached files
at the locations specified below on our web site.

*.xsd => http://www.oasis-open.org/committees/regrep/documents/3.0/schema

*.sql =>
http://www.oasis-open.org/committees/regrep/documents/3.0/sql

Please note that the locations above are the pre-Kavi locations. I do 
not see them on our web site any more. We need to sort this out right 
away. Please send me coordinates for who to talk to about this. Thanks.


-- 
Regards,
Farrukh







<?xml version = "1.0" encoding = "UTF-8"?>

<!--$Revision: 1.21 $-->
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
        xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
        targetNamespace = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0"
        xmlns:tns = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0"
	>
	<annotation>
		<documentation xml:lang = "en">The schema for OASIS ebXML Registry Information Model</documentation>
	</annotation>	
	
        <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" />

  	<!--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="SignatureListType">
            <sequence>
                <element ref="dsig:Signature" minOccurs="1" maxOccurs="unbounded" />
            </sequence>
        </complexType>
        <element name="SignatureList" type="tns:SignatureListType" />
        
        
	<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 = "anyURI"/>
				<attribute name = "sourceObject" use = "required" type = "anyURI"/>
				<attribute name = "targetObject" use = "required" type = "anyURI"/>
				<attribute name = "isConfirmedBySourceOwner" use = "optional" type = "boolean"/>
				<attribute name = "isConfirmedByTargetOwner" use = "optional" type = "boolean"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "Association" type = "tns:AssociationType1"/>

	<complexType name = "AuditableEventType">
		<annotation>
			<documentation xml:lang = "en">
An Event that forms an audit trail in ebXML Registry.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryObjectType">
				<sequence>
					<!--List of all objects that have been effected by this event-->
					<element name="affectedObject" type="tns:ObjectRefListType" minOccurs="1" maxOccurs="1"/>
				</sequence>

				<!--Was an enumeration in V2. Now is extensible-->
				<attribute name = "eventType" use = "required" type = "tns:LongName"/>

				<attribute name = "timestamp" use = "required" type = "dateTime"/>
				<attribute name = "user" use = "required" type = "anyURI"/>

				<attribute name = "requestId" use = "required" type = "anyURI"/>
			</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 = "anyURI"/>
				<attribute name = "classifiedObject" use = "required" type = "anyURI"/>
				<attribute name = "classificationNode" use = "optional" type = "anyURI"/>
				<attribute name = "nodeRepresentation" use = "optional" type = "tns: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 = "anyURI"/>
				<attribute name = "code" use="optional" type = "tns:LongName"/>
				<attribute name = "path" use = "optional" type = "string"/>
			</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 = "NCName">
							<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 = "registryObject" use = "optional" type = "anyURI"/>
				<attribute name = "identificationScheme" use = "required" type = "anyURI"/>
				<attribute name = "value" use = "required" type = "tns:LongName"/>
			</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" default="application/octet-stream" type = "tns:LongName"/>
				<attribute name = "isOpaque" default = "false" 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"/>
					<element ref = "tns:EmailAddress" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
				<attribute name = "parent" type = "anyURI"/>
				<attribute name = "primaryContact" use = "required" type = "anyURI"/>
			</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 = "tns:LongName"/>
		<attribute name = "slotType" use = "optional" type = "tns: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 = "tns:LongName"/>

	<complexType name = "SlotListType">
		<sequence>
			<element ref = "tns:Slot" minOccurs = "0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name = "SlotList" type = "tns:SlotListType"/>


	<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 = "tns:ShortName"/>
		<attribute name = "middleName" use = "optional" type = "tns:ShortName"/>
		<attribute name = "lastName" use = "optional" type = "tns: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 = "tns:ShortName"/>
		<attribute name = "type" use = "optional" type = "tns: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 = "tns:ShortName"/>
		<attribute name = "country" use = "optional" type = "tns:ShortName"/>
		<attribute name = "postalCode" use = "optional" type = "tns:ShortName"/>
		<attribute name = "stateOrProvince" use = "optional" type = "tns:ShortName"/>
		<attribute name = "street" use = "optional" type = "tns:ShortName"/>
		<attribute name = "streetNumber" use = "optional" type = "tns: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 = "NCName">
							<enumeration value = "Dynamic"/>
							<enumeration value = "DynamicCompatible"/>
							<enumeration value = "Static"/>
						</restriction>
					</simpleType>
				</attribute>

				<attribute name = "userVersion" use = "optional" type = "tns: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 = "tns: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 = "id" type = "anyURI"/>

		<!--home attribute is required only for replicas of remote Objects-->
		<attribute name = "home" type = "anyURI" use="optional"/>

		<attribute name = "objectType" use = "optional" type = "anyURI"/>
    <attribute name = "status">
      <simpleType>
        <restriction base = "NCName">
          <enumeration value = "Submitted"/>
          <enumeration value = "Approved"/>
          <enumeration value = "Deprecated"/>
          <enumeration value = "Withdrawn"/>
        </restriction>
      </simpleType>
    </attribute>
	</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 = "service" use = "optional" type = "anyURI"/>
				<attribute name = "accessURI" use="optional" type = "anyURI"/>
				<attribute name = "targetBinding" use="optional" type = "anyURI"/>
			</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 = "anyURI"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "SpecificationLink" type = "tns:SpecificationLinkType"/>
	<element name = "UsageDescription" type = "tns:InternationalStringType"  />
	<element name = "UsageParameter" type = "tns: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 = "tns:String8"/>
		<attribute name = "countryCode" use = "optional" type = "tns:String8"/>
		<attribute name = "extension" use = "optional" type = "tns:String8"/>
		<attribute name = "number" use = "optional" type = "tns:String16"/>
		<attribute name = "phoneType" use = "optional" type = "tns: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="1" maxOccurs = "1">
					<element ref = "tns:Address" minOccurs="1" maxOccurs="unbounded"/>
					<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 = "url" use = "optional" type = "anyURI"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "User" type = "tns:UserType"/>

	<complexType name = "RegistryType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryEntryType">
			    <attribute name = "operator" use = "required" type = "anyURI"/>
                            <attribute name = "specificationVersion" use = "required" type = "string"/>
                            <attribute name = "replicationSyncLatency"  default= "P1D" type = "duration"/>
                            <attribute name = "catalogingLatency" default= "P1D" type = "duration"/>

                            <!--Optional features supported -->
                            <attribute name = "sqlQuerySupported" default = "false" type = "boolean"/>
                            <attribute name = "eventNotificationSupported" default = "false" type = "boolean"/>
                            <attribute name = "objectReplicationSupported" default = "false" type = "boolean"/>
                            <attribute name = "objectRelocationSupported" default = "false" type = "boolean"/>
                                
			</extension>
		</complexContent>
	</complexType>
	<element name = "Registry" type = "tns:RegistryType"/>
        
	<complexType name = "FederationType">
		<annotation>
			<documentation xml:lang = "en">
Mapping of the same named interface in ebRIM.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:RegistryEntryType">
				<sequence>
					<element name = "Members" type = "tns:ObjectRefListType"/>
				</sequence>

				<attribute name = "replicationSyncLatency" use = "required" type = "duration"/>
			</extension>
		</complexContent>
	</complexType>
	<element name = "Federation" type = "tns:FederationType"/>
  
  
	<complexType name = "AdhocQueryType" abstract="true">
		<annotation>
			<documentation xml:lang = "en">
The common base type for all types of Adh hoc queries.
			</documentation>
		</annotation>
        
    <complexContent>
    <extension base = "tns:RegistryObjectType">
    </extension>
    </complexContent>
	</complexType>
       
	<element name = "Subscription">
		<annotation>
			<documentation xml:lang = "en">
A Subscription for specified Events in an ebXML V3+ registry.
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tns:RegistryObjectType">
					<sequence>
						<element name = "Action" type="tns:ActionType" maxOccurs="unbounded"/>
					</sequence>
          
          <!--Ref to a AdhocQueryType instance -->
          <attribute name = "selector" type = "anyURI" use="required"/>	
					<attribute name = "startDate" use = "optional" type = "dateTime"/>
					<attribute name = "endDate" use = "optional" type = "dateTime"/>
					<attribute name = "notificationInterval" use = "optional" type="duration" /> 
				</extension>
			</complexContent>
		</complexType>
	</element>

	<complexType name = "ActionType" abstract="true">
		<annotation>
			<documentation>
Abstract Base type for all types of Actions.
			</documentation>
		</annotation>
	</complexType>

	<complexType name = "NotifyActionType" abstract="true">
		<annotation>
			<documentation xml:lang = "en">
Abstract Base type for all types of Notify Actions
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:ActionType">
				<attribute name = "notificationOption" default="ObjectRefs">
					<simpleType>
						<restriction base = "NCName">
							<enumeration value = "ObjectRefs"/>
							<enumeration value = "Objects"/>
						</restriction>
					</simpleType>
				</attribute>
        <attribute name = "endPoint" type = "anyURI" use="required"/>
			</extension>
		</complexContent>
	</complexType>

	<complexType name = "ListenerNotifyActionType">
		<annotation>
			<documentation xml:lang = "en">
An ActionType that notifies the specified ServiceBinding
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:NotifyActionType">
				<sequence>
                                        <!-- Service interface is defined by RegistryClient interface, uses method onResponse to deliver NotificationType -->
					<element name="service" type="tns:ObjectRefType" minOccurs="1" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name = "EmailNotifyActionType">
		<annotation>
			<documentation xml:lang = "en">
An ActionType that notifies by sending email to specified email address
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:NotifyActionType">
				<sequence>
					<element ref="tns:EmailAddress" minOccurs="1" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
  
  
	<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 = "anyURI" use="required"/>

		<!--home attribute is required only for remote ObjectRef-->
		<attribute name = "home" type = "anyURI" use="optional"/>

		<!--When true and is a remote ObjectRef then the registry must create a replica for this ObjectRef -->
		<attribute name = "createReplica" type = "boolean" default="false"/>
	</complexType>
	<element name = "ObjectRef" type = "tns:ObjectRefType"/>


	<complexType name = "ObjectRefListType">
		<sequence minOccurs = "0" maxOccurs = "unbounded">
			<element ref = "tns:ObjectRef"/>
		</sequence>
	</complexType>
	<element name = "ObjectRefList" type="tns:ObjectRefListType"/>


	<complexType name = "RegistryObjectListType">  
    <sequence>
      <element name="RegistryObject" type="tns:RegistryObjectType" minOccurs="0" maxOccurs="unbounded"/>
      <element ref="tns:ObjectRef" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
	</complexType>
	<element name = "RegistryObjectList" type = "tns:RegistryObjectListType"/>  	
	
</schema>
<?xml version = "1.0" encoding = "UTF-8"?>

<!--$Revision: 1.7 $-->
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
	 targetNamespace = "urn:oasis:names:tc:ebxml-regrep:lcm:xsd:3.0"
	 xmlns:tns = "urn:oasis:names:tc:ebxml-regrep:lcm:xsd:3.0"
	 xmlns:rim = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0" 	 
	 xmlns:rs = "urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0" 	 
   
	>
	<annotation>
		<documentation xml:lang = "en">The schema for OASIS ebXML Registry Services</documentation>
	</annotation>

	<!-- Import the rim.xsd file with XML schema mappaing from RIM -->
	<import namespace="urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0" schemaLocation="rim.xsd"/>

	<!-- Import the rs.xsd file with XML schema for base rs related schema -->
	<import namespace="urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0" schemaLocation="rs.xsd"/>
  
	<element name = "SubmitObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The SubmitObjectsRequest allows one to submit a list of RegistryObject elements. Each RegistryEntry element provides metadata for a single submitted object.  Note that the repository item being submitted is in a separate document that is not in this DTD. The ebXML Messaging Services Specfication defines packaging, for submission, of the metadata of a repository item with the repository item itself. The value of the id attribute of the ExtrinsicObject element must be the same as the xlink:href attribute within the Reference element within the Manifest element of the MessageHeader.
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">

					<sequence>
						<element ref = "rim:RegistryObjectList"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "UpdateObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The UpdateObjectsRequest allows one to update a list of RegistryObject elements. Each RegistryEntry element provides metadata for a single submitted object.  Note that the repository item being submitted is in a separate document that is not in this DTD. The ebXML Messaging Services Specfication defines packaging, for submission, of the metadata of a repository item with the repository item itself. The value of the id attribute of the ExtrinsicObject element must be the same as the xlink:href attribute within the Reference element within the Manifest element of the MessageHeader.
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:RegistryObjectList"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "AddSlotsRequest">
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRef" minOccurs="1" maxOccurs="1"/>
						<element ref = "rim:Slot" minOccurs="1" maxOccurs="unbounded"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "RemoveSlotsRequest">
		<annotation>
			<documentation xml:lang = "en"> Only need name in Slot within SlotList </documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRef" minOccurs="1" maxOccurs="1"/>
						<element ref = "rim:Slot" minOccurs="1" maxOccurs="unbounded"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "ApproveObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The ObjectRefList is the list of
refs to the registry entrys being approved.
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRefList"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
	<element name = "DeprecateObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The ObjectRefList is the list of
refs to the registry entrys being deprecated.

			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRefList"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "UndeprecateObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The ObjectRefList is the list of
refs to the registry entrys being un-deprecated.

			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRefList"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
        
	<element name = "RemoveObjectsRequest">
		<annotation>
			<documentation xml:lang = "en">
The ObjectRefList is the list of
refs to the registry entrys being removed

			</documentation>
		</annotation>

		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
					<sequence>
						<element ref = "rim:ObjectRefList"/>
					</sequence>
					<attribute name = "deletionScope" use = "optional">
						<simpleType>
							<restriction base = "NCName">
								<enumeration value = "DeleteAll"/>
								<enumeration value = "DeleteRepositoryItemOnly"/>
							</restriction>
						</simpleType>
					</attribute>
				</extension>
			</complexContent>
		</complexType>
	</element>
  
	<element name = "RelocateObjectsRequest">
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">

					<sequence>
            <element name="Query" type="rim:AdhocQueryType" minOccurs="1" maxOccurs="1"/>		
						<element name = "SourceRegistry" type = "rim:ObjectRefType" minOccurs = "1" maxOccurs = "1"/>
						<element name = "DestinationRegistry" type = "rim:ObjectRefType" minOccurs = "1" maxOccurs = "1"/>
						<element name = "OwnerAtSource" type = "rim:ObjectRefType" minOccurs = "1" maxOccurs = "1"/>
						<element name = "OwnerAtDestination" type = "rim:ObjectRefType" minOccurs = "1" maxOccurs = "1"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>

	<element name = "AcceptObjectsRequest">
		<!--The ObjectRefList must only contain local ObjectRefs such that they do not specify home attribute -->
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">

					<attribute name = "correlationId" use = "required" type = "anyURI"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
  
		
</schema>
<?xml version = "1.0" encoding = "UTF-8"?>

<!--$Revision: 1.15 $-->
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
	 targetNamespace = "urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0"
	 xmlns:tns = "urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0"
	 xmlns:rim = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0" 	 
	>
	<annotation>
		<documentation xml:lang = "en">The schema for OASIS ebXML Registry Services</documentation>
	</annotation>

	<!-- Import the rim.xsd file with XML schema mappaing from RIM -->
	<import namespace="urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0" schemaLocation="rim.xsd"/>

	<complexType name = "RegistryRequestType">
		<annotation>
			<documentation xml:lang = "en">
Base type for all ebXML Registry requests
			</documentation>
		</annotation>

                <sequence>
                    <!-- every request may be signed. -->
                    <element ref="rim:SignatureList" minOccurs = "0" maxOccurs="1"/>
                    
                    <!-- every request may be extended using Slots. -->
                    <element name = "RequestSlotList" type="rim:SlotListType" minOccurs = "0" maxOccurs="1"/>
                </sequence>
                
		<!--Needed for async case. In case of sync request/response you may not need id. -->
		<attribute name = "id" use = "optional" type = "anyURI"/>
	</complexType>
		
	<simpleType name = "ErrorType">
		<restriction base = "NCName">
			<enumeration value = "Warning"/>
			<enumeration value = "Error"/>
		</restriction>
	</simpleType>
	<element name = "RegistryErrorList">
		<annotation>
			<documentation xml:lang = "en"> The RegistryErrorList is derived from the ErrorList element from the ebXML Message Service Specification </documentation>
		</annotation>
		<complexType>
			<sequence>
				<element ref = "tns:RegistryError" maxOccurs = "unbounded"/>
			</sequence>
			<attribute name = "highestSeverity" use = "optional" type = "tns:ErrorType"/>
		</complexType>
	</element>
	<element name = "RegistryError">
		<complexType>
			<simpleContent>
				<extension base = "string">
					<attribute name = "codeContext" use = "required" type = "string"/>
					<attribute name = "errorCode" use = "required" type = "string"/>
					<attribute name = "severity" default = "Error" type = "tns:ErrorType"/>
					<attribute name = "location" use = "optional" type = "string"/>
				</extension>
			</simpleContent>
		</complexType>
	</element>

	<complexType name = "RegistryResponseType">
		<annotation>
			<documentation xml:lang = "en">
Base type for all ebXML Registry responses
			</documentation>
		</annotation>

                <sequence>
                    <!-- every response may be signed. -->
                    <element ref="rim:SignatureList" minOccurs = "0" maxOccurs="1"/>
                    
                    <!-- every response may be extended using Slots. -->
                    <element name = "ResponseSlotList" type="rim:SlotListType" minOccurs = "0" maxOccurs="1"/>
                
                    <element ref = "tns:RegistryErrorList" minOccurs = "0"/>
                </sequence>
                <attribute name = "status" use = "required">
                        <simpleType>
                                <restriction base = "NCName">
                                        <enumeration value = "Success"/>
                                        <enumeration value = "Failure"/>
                                        <enumeration value = "Unavailable"/>
                                </restriction>
                        </simpleType>
                </attribute>
                
		<!--id is the request if for the request for which this is a response-->
		<attribute name = "requestId" use = "optional" type = "anyURI"/>
	</complexType>
	<element name = "RegistryResponse" type="tns:RegistryResponseType"/>

</schema>
<?xml version = "1.0" encoding = "UTF-8"?>

<!--$Revision: 1.17 $-->
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
	 targetNamespace = "urn:oasis:names:tc:ebxml-regrep:query:xsd:3.0"
	 xmlns:rs = "urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0"
	 xmlns:tns = "urn:oasis:names:tc:ebxml-regrep:query:xsd:3.0"
	 xmlns:rim = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0">

	<!-- Import the rim.xsd file with XML schema mappaing from RIM -->
	<import namespace = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:3.0" schemaLocation = "rim.xsd"/>
	<import namespace = "urn:oasis:names:tc:ebxml-regrep:rs:xsd:3.0" schemaLocation = "rs.xsd"/>
	
	<complexType name = "ResponseOptionType">
		<attribute name = "returnType" default="RegistryObject">
			<simpleType>
				<restriction base = "NCName">
					<enumeration value = "ObjectRef"/>
					<enumeration value = "RegistryObject"/>
					<enumeration value = "RegistryEntry"/>
					<enumeration value = "LeafClass"/>
					<enumeration value = "LeafClassWithRepositoryItem"/>
				</restriction>
			</simpleType>
		</attribute>

		<attribute name = "returnComposedObjects" type="boolean" default="false"/>
		
	</complexType>
	<element name = "ResponseOption" type = "tns:ResponseOptionType"/>


	<element name = "AdhocQueryRequest">
		<annotation>
			<documentation xml:lang = "en">
An Ad hoc query request specifies an ad hoc query.
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">

					<sequence>
						<element ref = "tns:ResponseOption" minOccurs="1" maxOccurs="1" />
						<choice minOccurs="1" maxOccurs="1">
							<element ref = "tns:FilterQuery"/>
							<element ref = "tns:SQLQuery"/>
						</choice>
					</sequence>
		
					<attribute name = "federated" use = "optional" type="boolean" default="false"/>
					<attribute name = "federation" use = "optional" type="anyURI"/>
					<attribute name = "startIndex" type="integer" default="0"/>
					<attribute name = "maxResults" type="integer" default="-1"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
        

 <complexType name="SQLQueryType">
  <annotation>
   <documentation xml:lang="en">
An Ad hoc query request specifies a query string as defined by [RS] in the queryString attribute
 
   </documentation>
  </annotation>
 
  <complexContent>
   <extension base="rim:AdhocQueryType">
    <sequence>
      <element name="QueryString" type="string"/>
    </sequence>   
   </extension>
  </complexContent>
 </complexType>
 <element name="SQLQuery" type="tns:SQLQueryType"/>
               

	<element name = "AdhocQueryResponse">
		<annotation>
			<documentation xml:lang = "en">
The response includes a RegistryObjectList which has zero or more
RegistryObjects that match the query specified in AdhocQueryRequest.

			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryResponseType">
					<choice minOccurs="1" maxOccurs="1">
						<element ref = "tns:FilterQueryResult"/>
						<element ref = "tns:SQLQueryResult"/>
					</choice>
					<attribute name = "startIndex" type="integer" default="0"/>
					<attribute name = "totalResultCount" type="integer" use="optional"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<element name = "SQLQueryResult" type = "rim:RegistryObjectListType"/>	

 <complexType name="FilterQueryType">
  <complexContent>
   <extension base="rim:AdhocQueryType">
    <choice minOccurs="1" maxOccurs="1">
     <element ref="tns:RegistryObjectQuery"/>
     <element ref="tns:RegistryEntryQuery"/>
     <element ref="tns:AssociationQuery"/>
     <element ref="tns:AuditableEventQuery"/>
     <element ref="tns:ClassificationQuery"/>
     <element ref="tns:ClassificationNodeQuery"/>
     <element ref="tns:ClassificationSchemeQuery"/>
     <element ref="tns:RegistryPackageQuery"/>
     <element ref="tns:ExtrinsicObjectQuery"/>
     <element ref="tns:OrganizationQuery"/>
     <element ref="tns:ServiceQuery"/>
     <element ref="tns:FederationQuery"/>
     <element ref="tns:RegistryQuery"/>
     <element ref="tns:SubscriptionQuery"/>
     <element ref="tns:UserQuery"/>
    </choice>
   </extension>
  </complexContent>
 </complexType>
 <element name="FilterQuery" type="tns:FilterQueryType"/>  
  	
	<complexType name = "RegistryObjectQueryType">
		<sequence>
			<element ref = "tns:RegistryObjectFilter" minOccurs = "0"  maxOccurs="1"/>
			<element ref = "tns:ExternalIdentifierFilter" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:AuditableEventQuery" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:NameBranch" minOccurs = "0" maxOccurs = "1"/>
			<element ref = "tns:DescriptionBranch" minOccurs = "0" maxOccurs = "1"/>
			<element ref = "tns:ClassifiedByBranch" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:SlotBranch" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:SourceAssociationBranch" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tns:TargetAssociationBranch" minOccurs = "0" maxOccurs = "unbounded"/>
		</sequence>
	</complexType>
	<element name = "RegistryObjectQuery" type = "tns:RegistryObjectQueryType"/>

	<complexType name = "InternationalStringBranchType">
		<sequence>
			<element ref = "tns:LocalizedStringFilter" minOccurs = "0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name = "NameBranch" type = "tns:InternationalStringBranchType" />
	<element name = "DescriptionBranch" type = "tns:InternationalStringBranchType" />

	<complexType name = "RegistryEntryQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence>
					<element ref = "tns:RegistryEntryFilter" minOccurs = "0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryEntryQuery" type = "tns:RegistryEntryQueryType"/>

	<complexType name = "ClassificationQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence>
					<element ref = "tns:ClassificationFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:ClassificationSchemeQuery" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:ClassificationNodeQuery" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:RegistryObjectQuery" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:RegistryEntryQuery" minOccurs = "0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ClassificationQuery" type = "tns:ClassificationQueryType"/>

	<complexType name = "ClassificationSchemeQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:ClassificationSchemeFilter" minOccurs = "0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ClassificationSchemeQuery" type = "tns:ClassificationSchemeQueryType"/>

	<complexType name = "AssociationQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence>
					<element ref = "tns:AssociationFilter" minOccurs = "0" maxOccurs = "1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "AssociationQuery" type = "tns:AssociationQueryType"/>

	<complexType name = "AuditableEventQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence>
					<element ref = "tns:AuditableEventFilter" minOccurs = "0" maxOccurs = "1"/>
					<element ref = "tns:RegistryObjectQuery" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tns:RegistryEntryQuery" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tns:UserQuery" minOccurs = "0" maxOccurs = "1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "AuditableEventQuery" type = "tns:AuditableEventQueryType"/>
	
	<complexType name = "ClassificationNodeQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence minOccurs = "0" maxOccurs="1">
					<element ref = "tns:ClassificationNodeFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:ClassificationSchemeQuery" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:ClassificationNodeParentBranch" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:ClassificationNodeChildrenBranch" minOccurs = "0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ClassificationNodeQuery" type = "tns:ClassificationNodeQueryType"/>
	<element name = "ClassificationNodeParentBranch" type="tns:ClassificationNodeQueryType" />
	<element name = "ClassificationNodeChildrenBranch" type="tns:ClassificationNodeQueryType" />

	<complexType name = "RegistryPackageQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:RegistryPackageFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:RegistryObjectQuery" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tns:RegistryEntryQuery" minOccurs = "0" maxOccurs = "unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryPackageQuery" type = "tns:RegistryPackageQueryType"/>
	
	<complexType name = "ExtrinsicObjectQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:ExtrinsicObjectFilter" minOccurs = "0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ExtrinsicObjectQuery" type = "tns:ExtrinsicObjectQueryType"/>

	<complexType name = "FederationQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:FederationFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:RegistryQuery" minOccurs = "0" maxOccurs = "unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "FederationQuery" type = "tns:FederationQueryType"/>

	<complexType name = "OrganizationQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
				<sequence>
					<element ref = "tns:OrganizationFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:PostalAddressFilter" minOccurs = "0" maxOccurs="1"/>
					<element ref = "tns:TelephoneNumberFilter" minOccurs = "0" maxOccurs="unbounded"/>
					<element ref = "tns:UserQuery" minOccurs = "0" maxOccurs = "1"/>
					<element ref = "tns:OrganizationParentBranch" minOccurs = "0" maxOccurs="1" />
					<element ref = "tns:OrganizationChildrenBranch" minOccurs = "0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "OrganizationQuery" type = "tns:OrganizationQueryType"/>
	<element name = "OrganizationParentBranch" type="tns:OrganizationQueryType" />
	<element name = "OrganizationChildrenBranch" type="tns:OrganizationQueryType" />

	<complexType name = "RegistryQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:RegistryFilter" minOccurs = "0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "RegistryQuery" type = "tns:RegistryQueryType"/>

	<complexType name = "ServiceQueryType">
		<complexContent>
			<extension base = "tns:RegistryEntryQueryType">
				<sequence>
					<element ref = "tns:ServiceFilter" minOccurs = "0" maxOccurs="1"/>					
					<element ref = "tns:ServiceBindingBranch" minOccurs = "0" maxOccurs="unbounded"/>					
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ServiceQuery" type = "tns:ServiceQueryType"/>

	<complexType name = "ServiceBindingBranchType">
		<sequence>
			<element ref = "tns:ServiceBindingFilter" minOccurs = "0" maxOccurs="1"/>
			<element ref = "tns:SpecificationLinkBranch" minOccurs = "0" maxOccurs="unbounded"/>					
			<element ref = "tns:ServiceBindingTargetBranch" minOccurs = "0" maxOccurs="1"/>
		</sequence>
	</complexType>
	<element name = "ServiceBindingBranch" type = "tns:ServiceBindingBranchType"/>
	<element name = "ServiceBindingTargetBranch" type = "tns:ServiceBindingBranchType"/>

	<element name = "SpecificationLinkBranch">
		<complexType>
			<sequence>
				<element ref = "tns:SpecificationLinkFilter" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryObjectQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryEntryQuery" minOccurs = "0" maxOccurs="1"/>
			</sequence>
		</complexType>
	</element>

	<complexType name = "SubscriptionQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
	                <sequence>
	                        <element ref = "tns:SubscriptionFilter" minOccurs = "0" maxOccurs="1"/>
	                </sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "SubscriptionQuery" type = "tns:SubscriptionQueryType"/>


	<complexType name = "UserQueryType">
		<complexContent>
			<extension base = "tns:RegistryObjectQueryType">
	                <sequence>
	                        <element ref = "tns:UserFilter" minOccurs = "0" maxOccurs="1"/>
	                        <element ref = "tns:EmailAddressFilter" minOccurs = "0" maxOccurs="unbounded"/>
	                        <element ref = "tns:PostalAddressFilter" minOccurs = "0" maxOccurs="1"/>
	                        <element ref = "tns:PersonNameFilter" minOccurs = "0" maxOccurs="1"/>
	                        <element ref = "tns:TelephoneNumberFilter" minOccurs = "0" maxOccurs="unbounded"/>
	                </sequence>
			</extension>
		</complexContent>
	</complexType >
	<element name = "UserQuery" type = "tns:UserQueryType"/>

	<element name = "FilterQueryResult" >
		<complexType>
			<choice minOccurs = "1" maxOccurs = "1">
				<element ref = "tns:RegistryObjectQueryResult"/>
				<element ref = "tns:RegistryEntryQueryResult"/>
				<element ref = "tns:AssociationQueryResult"/>
				<element ref = "tns:AuditableEventQueryResult"/>
				<element ref = "tns:ClassificationQueryResult"/>
				<element ref = "tns:ClassificationNodeQueryResult"/>
				<element ref = "tns:ClassificationSchemeQueryResult"/>
				<element ref = "tns:RegistryPackageQueryResult"/>
				<element ref = "tns:ExtrinsicObjectQueryResult"/>
				<element ref = "tns:OrganizationQueryResult"/>
				<element ref = "tns:ServiceQueryResult"/>
				<element ref = "tns:FederationQueryResult"/>
				<element ref = "tns:RegistryQueryResult"/>
				<element ref = "tns:SubscriptionQueryResult"/>
				<element ref = "tns:UserQueryResult"/>
			</choice>
		</complexType>
	</element>

	<element name = "RegistryObjectQueryResult" type = "rim:RegistryObjectListType"/>

	<element name = "RegistryEntryQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:ClassificationScheme"/>
				<element ref = "rim:ExtrinsicObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryPackage"/>
				<element ref = "rim:Service"/>
				<element ref = "rim:Federation"/>
				<element ref = "rim:Registry"/>
			</choice>
		</complexType>
	</element>

	<element name = "AssociationQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:Association"/>
			</choice>
		</complexType>
	</element>

	<element name = "AuditableEventQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:AuditableEvent"/>
			</choice>
		</complexType>
	</element>
	
	<element name = "ClassificationQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:Classification"/>
			</choice>
		</complexType>
	</element>

	<element name = "ClassificationNodeQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:ClassificationNode"/>
			</choice>
		</complexType>
	</element>
	
	<element name = "ClassificationSchemeQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:ClassificationScheme"/>
			</choice>
		</complexType>
	</element>

	<element name = "RegistryPackageQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryPackage"/>
			</choice>
		</complexType>
	</element>

	<element name = "ExtrinsicObjectQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:ExtrinsicObject"/>
			</choice>
		</complexType>
	</element>

	<element name = "FederationQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:Federation"/>
			</choice>
		</complexType>
	</element>

	<element name = "OrganizationQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:Organization"/>
			</choice>
		</complexType>
	</element>

	<element name = "RegistryQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:Registry"/>
			</choice>
		</complexType>
	</element>

	<element name = "ServiceQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:RegistryEntry"/>
				<element ref = "rim:Service"/>
			</choice>
		</complexType>
	</element>

	<element name = "SubscriptionQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:Subscription"/>
			</choice>
		</complexType>
	</element>

	<element name = "UserQueryResult">
		<complexType>
			<choice minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "rim:ObjectRef"/>
				<element ref = "rim:RegistryObject"/>
				<element ref = "rim:User"/>
			</choice>
		</complexType>
	</element>

	<complexType name = "AssociationBranchType">
		<sequence>
			<element ref = "tns:AssociationFilter" minOccurs = "0" maxOccurs="1"/>
			<choice minOccurs = "0" maxOccurs="1">
				<element ref = "tns:ExternalLinkFilter" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ExternalIdentifierFilter" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryObjectQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryEntryQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:AssociationQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ClassificationQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ClassificationSchemeQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ClassificationNodeQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:OrganizationQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:AuditableEventQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryPackageQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ExtrinsicObjectQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ServiceQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:FederationQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:RegistryQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:SubscriptionQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:UserQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ServiceBindingBranch" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:SpecificationLinkBranch" minOccurs = "0" maxOccurs="1"/>
			</choice>
		</sequence>
	</complexType>
	<element name = "SourceAssociationBranch" type="tns:AssociationBranchType" />
	<element name = "TargetAssociationBranch" type="tns:AssociationBranchType" />

	<element name = "ClassifiedByBranch">
		<complexType>
			<sequence>
				<element ref = "tns:ClassificationFilter" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ClassificationSchemeQuery" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:ClassificationNodeQuery" minOccurs = "0" maxOccurs="1"/>
			</sequence>
		</complexType>
	</element>

	<element name = "SlotBranch">
		<complexType>
			<sequence>
				<element ref = "tns:SlotFilter" minOccurs = "0" maxOccurs="1"/>
				<element ref = "tns:SlotValueFilter" minOccurs = "0" maxOccurs = "unbounded"/>
			</sequence>
		</complexType>
	</element>
	
	<complexType name = "FilterType">
		<sequence>
			<element ref = "tns:Clause"/>
		</sequence>
	</complexType>


	<element name = "RegistryObjectFilter" type = "tns:FilterType"/>
	<element name = "RegistryEntryFilter" type = "tns:FilterType"/>
	<element name = "ExtrinsicObjectFilter" type = "tns:FilterType"/>
	<element name = "RegistryPackageFilter" type = "tns:FilterType"/>
	<element name = "OrganizationFilter" type = "tns:FilterType"/>
	<element name = "ClassificationNodeFilter" type = "tns:FilterType"/>
	<element name = "AssociationFilter" type = "tns:FilterType"/>
	<element name = "ClassificationFilter" type = "tns:FilterType"/>
	<element name = "ClassificationSchemeFilter" type = "tns:FilterType"/>
	<element name = "ExternalLinkFilter" type = "tns:FilterType"/>
	<element name = "ExternalIdentifierFilter" type = "tns:FilterType"/>
	<element name = "SlotFilter" type = "tns:FilterType"/>
	<element name = "AuditableEventFilter" type = "tns:FilterType"/>
	<element name = "UserFilter" type = "tns:FilterType"/>
	<element name = "SlotValueFilter" type = "tns:FilterType"/>
	<element name = "PostalAddressFilter" type = "tns:FilterType"/>
	<element name = "TelephoneNumberFilter" type = "tns:FilterType"/>
	<element name = "EmailAddressFilter" type = "tns:FilterType"/>
	<element name = "ServiceFilter" type = "tns:FilterType"/>					
	<element name = "ServiceBindingFilter" type = "tns:FilterType"/>
	<element name = "SpecificationLinkFilter" type = "tns:FilterType"/>
	<element name = "LocalizedStringFilter" type = "tns:FilterType"/>
	<element name = "FederationFilter" type = "tns:FilterType"/>
	<element name = "PersonNameFilter" type = "tns:FilterType"/>
	<element name = "RegistryFilter" type = "tns:FilterType"/>
	<element name = "SubscriptionFilter" type = "tns:FilterType"/>

	<element name = "Clause">
		<annotation>
			<documentation xml:lang = "en">
The following lines define the XML syntax for Clause.

			</documentation>
		</annotation>
		<complexType>
			<choice>
				<element ref = "tns:SimpleClause"/>
				<element ref = "tns:CompoundClause"/>
			</choice>
		</complexType>
	</element>
	<element name = "SimpleClause">
		<complexType>
			<choice>
				<element ref = "tns:BooleanClause"/>
				<element ref = "tns:RationalClause"/>
				<element ref = "tns:StringClause"/>
			</choice>
			<attribute name = "leftArgument" use = "required" type = "string"/>
		</complexType>
	</element>
	<element name = "CompoundClause">
		<complexType>
			<sequence>
				<element ref = "tns:Clause" maxOccurs = "unbounded"/>
			</sequence>
			<attribute name = "connectivePredicate" use = "required">
				<simpleType>
					<restriction base = "NCName">
						<enumeration value = "And"/>
						<enumeration value = "Or"/>
					</restriction>
				</simpleType>
			</attribute>
		</complexType>
	</element>
	<element name = "BooleanClause">
		<complexType>
			<attribute name = "booleanPredicate" use = "required" type = "boolean"/>
		</complexType>
	</element>
	<element name = "RationalClause">
		<complexType>
			<choice>
				<element ref = "tns:IntClause"/>
				<element ref = "tns:FloatClause"/>
				<element ref = "tns:DateTimeClause"/>
			</choice>
			<attribute name = "logicalPredicate" use = "required">
				<simpleType>
					<restriction base = "NCName">
						<enumeration value = "LE"/>
						<enumeration value = "LT"/>
						<enumeration value = "GE"/>
						<enumeration value = "GT"/>
						<enumeration value = "EQ"/>
						<enumeration value = "NE"/>
					</restriction>
				</simpleType>
			</attribute>
		</complexType>
	</element>
	<element name = "IntClause" type = "integer"/>
	<element name = "FloatClause" type = "float"/>
	<element name = "DateTimeClause" type = "dateTime"/>

	<element name = "StringClause">
		<complexType>
			<simpleContent>
				<extension base = "string">
					<attribute name = "stringPredicate" use = "required">
						<simpleType>
							<restriction base = "NCName">
								<enumeration value = "Contains"/>
								<enumeration value = "NotContains"/>
								<enumeration value = "StartsWith"/>
								<enumeration value = "NotStartsWith"/>
								<enumeration value = "Like"/>
								<enumeration value = "Equal"/>
								<enumeration value = "NotEqual"/>
								<enumeration value = "EndsWith"/>
								<enumeration value = "NotEndsWith"/>
							</restriction>
						</simpleType>
					</attribute>
				</extension>
			</simpleContent>
		</complexType>
	</element>
	
	<element name = "GetContentRequest">
		<annotation>
			<documentation xml:lang = "en">
Gets the actual content (not metadata) specified by the ObjectRefList
			</documentation>
		</annotation>

		<complexType>
                    <complexContent>
                        <extension base = "rs:RegistryRequestType">
                            <sequence>
                                    <element ref = "rim:ObjectRefList" minOccurs="1" maxOccurs="1"/>
                            </sequence>
                        </extension>
                    </complexContent>
		</complexType>
	</element>

	<element name = "GetContentResponse">
		<annotation>
			<documentation xml:lang = "en">
The GetContentResponse will have no sub-elements if there were no errors.
The actual contents will be in the other payloads of the message.  
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryResponseType">
				</extension>
			</complexContent>
		</complexType>
	</element>
  
	<element name = "GetNotificationsRequest">
		<complexType>
			<complexContent>
				<extension base = "rs:RegistryRequestType">
            <!--The id for the request/subscription that resulted in this notification-->
            <attribute name = "subscription" use = "optional" type="anyURI" />
				</extension>
			</complexContent>
		</complexType>
	</element>

	<complexType name = "NotificationType">
		<annotation>
			<documentation>
Abstract Base type for all types of Notifications.
			</documentation>
		</annotation>

		<complexContent>
                        <!--Might be unsolicited and not a response to a request-->
			<extension base = "rs:RegistryResponseType">
                                <!--The id for the request/subscription that resulted in this notification-->
                                <attribute name = "subscription" use = "optional" type="anyURI" />
			</extension>
		</complexContent>
	</complexType>      
	<element name = "Notification" type = "tns:NotificationType"/>
        
	<complexType name = "ObjectRefsNotificationType">
		<annotation>
			<documentation xml:lang = "en">
An ActionType that notifies the recipient
by providing light weight references to the RegistryObjects of interest.
Client must retrieve the objects separately if needed.
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:NotificationType">
				<sequence>
					<element ref="rim:ObjectRefList" minOccurs="1" maxOccurs="1"/> 					
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name = "ObjectRefsNotification" type = "tns:ObjectRefsNotificationType"/>

	<complexType name = "ObjectsNotificationType">
		<annotation>
			<documentation xml:lang = "en">
An ActionType that notifies the recipient
by providing the actual RegistryObjects of interest..
			</documentation>
		</annotation>
		<complexContent>
			<extension base = "tns:NotificationType">
				<sequence>
					<element ref="rim:RegistryObjectList" minOccurs="1" maxOccurs="1"/> 					
				</sequence>
			</extension>
		</complexContent>
	</complexType>	
	<element name = "ObjectsNotification" type = "tns:ObjectsNotificationType"/>
    
	
</schema>

--$Revision: 1.15 $
--Normative SQL schema for ebXML Registry V3

CREATE TABLE Association ( 

--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:69399ff8-ca2c-4637-baf0-a157b2466b90' CHECK (objectType = 'urn:uuid:69399ff8-ca2c-4637-baf0-a157b2466b90'),
  status			VARCHAR(16) NOT NULL,
  
--Association attributes
  associationType	VARCHAR(64) NOT NULL,
  sourceObject		VARCHAR(64) NOT NULL,
  targetObject  	VARCHAR(64) NOT NULL,
  
  isConfirmedBySourceOwner	BOOLEAN DEFAULT false,
  isConfirmedByTargetOwner	BOOLEAN DEFAULT false
);

CREATE TABLE AuditableEvent ( 

--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:1945f7e4-cf24-44fd-bbff-cd3d98e78674' CHECK (objectType = 'urn:uuid:1945f7e4-cf24-44fd-bbff-cd3d98e78674'),
  status			VARCHAR(16) NOT NULL,
  
--AuditableEvent attributes
  eventType			VARCHAR(64) NOT NULL,
  timeStamp_		TIMESTAMP NOT NULL,
  user_				VARCHAR(64) NOT NULL
);

CREATE TABLE AffectedObject ( 

--Each row is a relationship between a RegistryObject and an AuditableEvent
--Enables association of multiple effected RegistryObjects with an the AuditableEvent
  id                            VARCHAR(64) NOT NULL,
  eventId                   VARCHAR(64) NOT NULL,
  
  PRIMARY KEY (id, eventId)
);

CREATE TABLE Classification ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:65e731a8-3325-4ac5-bd95-d71a277e3216' CHECK (objectType = 'urn:uuid:65e731a8-3325-4ac5-bd95-d71a277e3216'),
  status			VARCHAR(16) NOT NULL,

--Classification attributes. 
  classificationNode		VARCHAR(64),
  classificationScheme		VARCHAR(64),
  classifiedObject			VARCHAR(64) NOT NULL,

  nodeRepresentation		VARCHAR(128)
  
);


CREATE TABLE ClassificationNode ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:247edbdb-31e8-40bc-97bd-fd60497deabb' CHECK (objectType = 'urn:uuid:247edbdb-31e8-40bc-97bd-fd60497deabb'),
  status			VARCHAR(16) NOT NULL,

--ClassificationNode attributes
  code					VARCHAR(128),
  parent				VARCHAR(64),
  path					VARCHAR(1024)
);

CREATE TABLE ClassificationScheme ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:c8b3dd77-9290-4fa3-a01a-94514d8f89ee' CHECK (objectType = 'urn:uuid:c8b3dd77-9290-4fa3-a01a-94514d8f89ee'),
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 1 NOT NULL,
  minorVersion		INT DEFAULT 0 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64),

--ClassificationScheme attributes
  isInternal		BOOLEAN DEFAULT false NOT NULL,
  nodeType			VARCHAR(32) DEFAULT 'UniqueCode' NOT NULL
);

CREATE TABLE ExternalIdentifier ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:8280e1b1-84ac-4bca-a0ee-8d7ffe2f2333' CHECK (objectType = 'urn:uuid:8280e1b1-84ac-4bca-a0ee-8d7ffe2f2333'),
  status			VARCHAR(16) NOT NULL,

--ExternalIdentifier attributes
  registryObject	VARCHAR(64) NOT NULL,
  identificationScheme		VARCHAR(64) NOT NULL,
  value				VARCHAR(128) NOT NULL
);

CREATE TABLE ExternalLink ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),

--Not including CHECK as it is legal to specify a different objectType for ExternalLink
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:9c442a04-8eb6-4595-82c4-d4f96d001409',
  status			VARCHAR(16) NOT NULL,

--ExternalLink attributes
  externalURI		VARCHAR(256) NOT NULL	  
);

CREATE TABLE ExtrinsicObject ( 

--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:baa2e6c8-873e-4624-8f2d-b9c7230eb4f8',
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 0 NOT NULL,
  minorVersion		INT DEFAULT 1 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64),

--ExtrinsicObject attributes
  isOpaque			BOOLEAN DEFAULT false,
  mimeType			VARCHAR(128) DEFAULT 'application/octet-stream'
);

CREATE TABLE Federation ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:e21b23a1-e34b-4fc1-b878-a73f5598c74b' CHECK (objectType = 'urn:uuid:e21b23a1-e34b-4fc1-b878-a73f5598c74b'),
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 0 NOT NULL,
  minorVersion		INT DEFAULT 1 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64),

--Federation attributes: currently none defined
--xsd:duration stored in string form since no corresponding SQL type. Is 32 long enough?
  replicationSyncLatency    VARCHAR(64) DEFAULT 'P1D'
);

CREATE TABLE Name ( 

--LocalizedString attributes flattened for Name
  charset			VARCHAR(32),
  lang				VARCHAR(32) NOT NULL,
  value				VARCHAR(256) NOT NULL,

--The RegistryObject id for the parent RegistryObject for which this is a Name
  parent			VARCHAR(64) NOT NULL,	

  PRIMARY KEY (parent, lang, value)

);

CREATE TABLE Description ( 

--LocalizedString attributes flattened for Description
  charset			VARCHAR(32),
  lang				VARCHAR(32) NOT NULL,
  value				VARCHAR(256) NOT NULL,

--The RegistryObject id for the parent RegistryObject for which this is a Name
  parent			VARCHAR(64) NOT NULL,	

  PRIMARY KEY (parent, lang, value)	

);

CREATE TABLE UsageDescription ( 

--LocalizedString attributes flattened for UsageDescription
  charset			VARCHAR(32),
  lang				VARCHAR(32) NOT NULL,
  value				VARCHAR(256) NOT NULL,

--The RegistryObject id for the parent RegistryObject for which this is a Name
  parent			VARCHAR(64) NOT NULL,	

  PRIMARY KEY (parent, lang, value)	

);

CREATE TABLE Organization ( 

--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:c7219bab-f78f-4340-b02a-e493617c6952' CHECK (objectType = 'urn:uuid:c7219bab-f78f-4340-b02a-e493617c6952'),
  status			VARCHAR(16) NOT NULL,

--Organization attributes

--Organization.address attribute is in PostalAddress table

  parent			VARCHAR(64),	

--primary contact for Organization, points to a User. 
  primaryContact	VARCHAR(64) NOT NULL

--Organization.telephoneNumbers attribute is in TelephoneNumber table
--Organization.emailAddresses attribute is in EmailAddress table

);

CREATE TABLE RegistryPackage ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:ca61fbb7-80b2-40d3-95df-b0b9e2694c2a' CHECK (objectType = 'urn:uuid:ca61fbb7-80b2-40d3-95df-b0b9e2694c2a'),
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 0 NOT NULL,
  minorVersion		INT DEFAULT 1 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64)

--RegistryPackage attributes: currently none defined
);

CREATE TABLE PostalAddress ( 

  city				VARCHAR(64),
  country			VARCHAR(64),
  postalCode		VARCHAR(64),
  state				VARCHAR(64),
  street			VARCHAR(64),
  streetNumber		VARCHAR(32),
    
--The parent object that this is an address for
  parent			VARCHAR(64) NOT NULL

);

CREATE TABLE EmailAddress ( 

  address			VARCHAR(64) NOT NULL,
  type				VARCHAR(64),
    
--The parent object that this is an email address for
  parent			VARCHAR(64) NOT NULL

);

CREATE TABLE Registry ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:52b8100a-01ff-4e30-a326-8905e438ca4f' CHECK (objectType = 'urn:uuid:52b8100a-01ff-4e30-a326-8905e438ca4f'),
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 0 NOT NULL,
  minorVersion		INT DEFAULT 1 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64),

--Registry attributes: currently none defined
--xsd:duration stored in string form since no corresponding SQL type. Is 32 long enough?
  catalogingSyncLatency    VARCHAR(32) DEFAULT 'P1D',
  eventNotificationSupported    BOOLEAN DEFAULT false,
  objectRelocationSupported    BOOLEAN DEFAULT false,
  objectReplicationSupported    BOOLEAN DEFAULT false,
  operator  VARCHAR(64) NOT NULL,

--xsd:duration stored in string form since no corresponding SQL type. Is 32 long enough?
  replicationSyncLatency    VARCHAR(32) DEFAULT 'P1D',
  specificationVersion    VARCHAR(8),

  sqlQuerySupported    BOOLEAN DEFAULT false
);

CREATE TABLE Service ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:52fc5536-c38f-4e89-b661-9664fa1f592f' CHECK (objectType = 'urn:uuid:52fc5536-c38f-4e89-b661-9664fa1f592f'),
  status			VARCHAR(16) NOT NULL,

--RegistryEntry attributes
  expiration		TIMESTAMP,
  majorVersion		INT DEFAULT 0 NOT NULL,
  minorVersion		INT DEFAULT 1 NOT NULL,

  stability			VARCHAR(128),
  userVersion		VARCHAR(64)

--Service attributes: currently none defined
);

CREATE TABLE ServiceBinding ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:3495faba-e699-411a-acfd-efecabc9ef48' CHECK (objectType = 'urn:uuid:3495faba-e699-411a-acfd-efecabc9ef48'),
  status			VARCHAR(16) NOT NULL,

--ServiceBinding attributes
  service			VARCHAR(64) NOT NULL,
  accessURI			VARCHAR(256),
  targetBinding		VARCHAR(64)
);

--Multiple rows of Slot make up a single Slot
CREATE TABLE Slot (
  
  name				VARCHAR(128) NOT NULL, 

  slotType			VARCHAR(128),			
  value				VARCHAR(128),

--The parent RegistryObject that this is a Slot for
  parent			VARCHAR(64) NOT NULL,

  PRIMARY KEY (parent, name)
);


CREATE TABLE SpecificationLink ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:124b974f-503e-4f40-9223-91e161631eb8' CHECK (objectType = 'urn:uuid:124b974f-503e-4f40-9223-91e161631eb8'),
  status			VARCHAR(16) NOT NULL,

--SpecificationLink attributes
  service			VARCHAR(64) NOT NULL,
  serviceBinding	VARCHAR(64) NOT NULL,
  specificationObject VARCHAR(64) NOT NULL
  
);

CREATE TABLE Subscription ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:a5fab058-55de-4c9b-9263-9c5de09112f1' CHECK (objectType = 'urn:uuid:a5fab058-55de-4c9b-9263-9c5de09112f1'),
  status			VARCHAR(16) NOT NULL,

--Subscription attributes
  selector                VARCHAR(64) NOT NULL,
  endDate               TIMESTAMP,

--xsd:duration stored in string form since no corresponding SQL type. Is 32 long enough?
  notificationInterval  VARCHAR(32) DEFAULT P1D,
  startDate               TIMESTAMP,  
);

CREATE TABLE NotifyAction (
  notificationOption       VARCHAR(16),

--Either a ref to a Service, a String representing an email address in form: mailto:user@server,
--or a String representing an http URLin form: http://url
  endPoint                    VARCHAR(64) NOT NULL,
  
--Parent Subscription reference  
  parent			VARCHAR(64) NOT NULL
);

CREATE TABLE AdhocQuery (
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:ccac6140-ce43-4d83-b067-f44d303f7c4c' CHECK (objectType = 'ccac6140-ce43-4d83-b067-f44d303f7c4c'),
  status			VARCHAR(16) NOT NULL,

--AdhocQuery attributes
  query			VARCHAR(1024) NOT NULL
);

CREATE TABLE UsageParameter ( 

  value				VARCHAR(256) NOT NULL,
    
--The parent SpecificationLink that this is a usage parameter for
  parent			VARCHAR(64) NOT NULL

);

CREATE TABLE TelephoneNumber ( 
  areaCode			VARCHAR(8),
  countryCode		VARCHAR(8),
  extension			VARCHAR(8),
  number			VARCHAR(16),
  phoneType			VARCHAR(64),

  url				VARCHAR(256),
  
  parent			VARCHAR(64) NOT NULL
);

CREATE TABLE User_ ( 
--RegistryObject Attributes
  accessControlPolicy	VARCHAR(64),
  id				VARCHAR(64) NOT NULL PRIMARY KEY,
  home                      VARCHAR(128),
  objectType		VARCHAR(64) DEFAULT 'urn:uuid:6d07b299-10e7-408f-843d-bb2bc913bfbb' CHECK (objectType = 'urn:uuid:6d07b299-10e7-408f-843d-bb2bc913bfbb'),
  status			VARCHAR(16) NOT NULL,

--User attributes

--address is in PostalAddress table

--emails is in EmailAddress table

--personName flattened
  personName_firstName	VARCHAR(64),
  personName_middleName	VARCHAR(64),
  personName_lastName	VARCHAR(64),
  

--telephoneNumbers is in TelephoneNumber table

  url				VARCHAR(256)
   
);

CREATE VIEW RegistryObject (
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status

) AS
 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM AdhocQuery
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Association
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM AuditableEvent
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Classification
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ClassificationNode
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ClassificationScheme
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ExternalIdentifier
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ExternalLink
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ExtrinsicObject
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Federation
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Organization
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Registry
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM RegistryPackage
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Service
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM ServiceBinding
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM SpecificationLink
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM Subscription
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status
  
 FROM User_
;

CREATE VIEW RegistryEntry (
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status,

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion

) AS
 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status,

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion
  
 FROM ClassificationScheme
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status,

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion
  
 FROM ExtrinsicObject
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status,

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion
  
 FROM Federation
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status,

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion
  
 FROM Registry
 UNION

 SELECT
--RegistryObject Attributes
  accessControlPolicy,
  id,
  home,
  objectType,
  status

--RegistryEntry attributes
  expiration,
  majorVersion,
  minorVersion,
  stability,
  userVersion
  
 FROM RegistryPackage;

--Following is a partial list of indexes. Will need to add more.

--id index
CREATE INDEX id_AdhocQuery_index ON AdhocQuery(id);
CREATE INDEX id_Association_index ON Association(id);
CREATE INDEX id_AuditableEvent_index ON AuditableEvent(id);
CREATE INDEX id_Classification_index ON Classification(id);
CREATE INDEX id_ClassificationNode_index ON ClassificationNode(id);
CREATE INDEX id_ClassificationScheme_index ON ClassificationScheme(id);
CREATE INDEX id_ExternalIdentifier_index ON ExternalIdentifier(id);
CREATE INDEX id_ExternalLink_index ON ExternalLink(id);
CREATE INDEX id_ExtrinsicObject_index ON ExtrinsicObject(id);
CREATE INDEX id_Federation_index ON Federation(id);
CREATE INDEX id_Organization_index ON Organization(id);
CREATE INDEX id_Registry_index ON Registry(id);
CREATE INDEX id_RegistryPackage_index ON RegistryPackage(id);
CREATE INDEX id_Service_index ON Service(id);
CREATE INDEX id_ServiceBinding_index ON ServiceBinding(id);
CREATE INDEX id_SpecificationLink_index ON SpecificationLink(id);
CREATE INDEX id_Subscription_index ON Subscription(id);
CREATE INDEX id_User_index ON User_(id);

--home index
CREATE INDEX home_AdhocQuery_index ON AdhocQuery(home);
CREATE INDEX home_Association_index ON Association(home);
CREATE INDEX home_AuditableEvent_index ON AuditableEvent(home);
CREATE INDEX home_Classification_index ON Classification(home);
CREATE INDEX home_ClassificationNode_index ON ClassificationNode(home);
CREATE INDEX home_ClassificationScheme_index ON ClassificationScheme(home);
CREATE INDEX home_ExternalIdentifier_index ON ExternalIdentifier(home);
CREATE INDEX home_ExternalLink_index ON ExternalLink(home);
CREATE INDEX home_ExtrinsicObject_index ON ExtrinsicObject(home);
CREATE INDEX home_Federation_index ON Federation(home);
CREATE INDEX home_Organization_index ON Organization(home);
CREATE INDEX home_Registry_index ON Registry(home);
CREATE INDEX home_RegistryPackage_index ON RegistryPackage(home);
CREATE INDEX home_Service_index ON Service(home);
CREATE INDEX home_ServiceBinding_index ON ServiceBinding(home);
CREATE INDEX home_SpecificationLink_index ON SpecificationLink(home);
CREATE INDEX home_Subscription_index ON Subscription(home);
CREATE INDEX home_User_index ON User_(home);

--name index
CREATE INDEX value_Name_index ON Name(value);
CREATE INDEX lang_value_Name_index ON Name(lang, value);

--description index
CREATE INDEX value_Description_index ON Description(value);
CREATE INDEX lang_value_Description_index ON Description(lang, value);

--UsageDescription index
CREATE INDEX value_UsageDescription_index ON UsageDescription(value);
CREATE INDEX lang_value_UsageDescription_index ON UsageDescription(lang, value);

--Indexes on Association

CREATE INDEX sourceObject_Association_index ON Association(sourceObject);
CREATE INDEX targetObject_Association_index ON Association(targetObject);
CREATE INDEX associationType_Association_index ON Association(associationType);


--Indexes on Classification

CREATE INDEX classifiedObject_Classification_index ON Classification(classifiedObject);
CREATE INDEX classificationNode_Classification_index ON Classification(classificationNode);

--Indexes on ClassificationNode

CREATE INDEX parent_ClassificationNode_index ON ClassificationNode(parent);
CREATE INDEX code_ClassificationNode_index ON ClassificationNode(code);
CREATE INDEX path_ClassificationNode_index ON ClassificationNode(path);

--Indexes on ExternalIdentifier

CREATE INDEX registryObject_ExternalIdentifier_index ON ExternalIdentifier(registryObject);

--Indexes on ExternalLink

CREATE INDEX externalURI_ExternalLink_index ON ExternalLink(externalURI);

--Indexes on ExtrinsicObject

--Indexes on Organization
CREATE INDEX parent_Organization_index ON Organization(parent);

--Indexes on PostalAddress

CREATE INDEX parent_PostalAddress_index ON PostalAddress(parent);
CREATE INDEX city_PostalAddress_index ON PostalAddress(city);
CREATE INDEX country_PostalAddress_index ON PostalAddress(country);
CREATE INDEX postalCode_PostalAddress_index ON PostalAddress(postalCode);

--Indexes on EmailAddress

CREATE INDEX parent_EmailAddress_index ON EmailAddress(parent);

--Indexes on ServiceBinding

CREATE INDEX service_ServiceBinding_index ON ServiceBinding(service);

--Indexes on Slot

CREATE INDEX parent_Slot_index ON Slot(parent);
CREATE INDEX name_Slot_index ON Slot(name);

--Indexes on SpecificationLink

CREATE INDEX service_SpecificationLink_index ON SpecificationLink(service);
CREATE INDEX serviceBinding_SpecificationLink_index ON SpecificationLink(serviceBinding);
CREATE INDEX specificationObject_SpecificationLink_index ON SpecificationLink(specificationObject);

--Indexes on TelephoneNumber

CREATE INDEX parent_TelephoneNumber_index ON TelephoneNumber(parent);

--Indexes on User
CREATE INDEX personName_lastName_User_index ON User_(personName_lastName);





[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]