Farrukh,
+1 - semantic syntax type changes are
cheap!
DW.
----- Original Message -----
Sent: Friday, January 09, 2004 8:58
PM
Subject: [regrep] rim.xsd and reference
URIs
Team,
I have been busy implementing support for
ebXML Registry version 3 in the freebXML Registry project. One issue that
keeps coming up during implementation is the fact that in rim.xsd reference
attributes cannot be distinguished from any other attributes.
Recall
that we use attributes (not elements) of type xsd:anyURI for all reference
attributes (e.g. the attribute classifiedObject in complex type
ClassificationType).
The problem is that we also use attributes of type
anyURI for other reasons such as externalURI in ExternalLinkType.
This
makes it impossible for code to be written to distinguish the reference
attributes in a RIM class. This means that code has to be written to hard code
knowledge about reference attributes. The result is complex and hard to
maintain code.
The solution to this problem is extremely simple and
described next....
Define a new type called referenceURI which is just
an anyURI but with a new specialized type:
<simpleType
name="referenceURI"> <restriction base="anyURI"
/> </simpleType>
We then use
referenceURI instead of anyURI whenever we have a reference
attribute:
<complexType
name="ServiceBindingType">
<complexContent> <extension
base="tns:RegistryObjectType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:SpecificationLink"/>
</sequence>
<attribute name="service" type="referenceURI"
use="optional"/>
<attribute name="accessURI" type="anyURI"
use="optional"/>
<attribute name="targetBinding" type="referenceURI"
use="optional"/>
</extension> </complexContent>
</complexType>
Notice above that some attributes in bold text
are referenceURI type while accessURI is not. This allows us to distinguish
reference attributes from other URI attributes.
Best of all the
proposed change has no functional impact on what the XML instance documents
look like.
I am enclosing the modified rim.xsd and a diff.txt file that
has only the differences of changes using the universal diff format.
I
am proposing that we make this simple and safe change to rim.xsd in order to
address the problem I have described. This issue is simple enough that I
propose that we resolve it over email rather than a more heavy weight process.
What does team think?
--
Regards,
Farrukh
<?xml version = "1.0" encoding = "UTF-8"?> <!-- $Header:
/cvsroot/ebxmlrr/ebxmlrr-spec/misc/2.5/schema/rim.xsd,v 1.10 2003/11/13
13:59:13 farrukh_najmi Exp $ --> <schema
targetNamespace="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns:tns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5">
<annotation> <documentation
xml:lang="en">The schema for OASIS ebXML Registry Information
Model</documentation> </annotation> <import
namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/> <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="referenceURI">
<annotation> <documentation
xml:lang="en"> referenceURI
is used by reference attributes within
RIM. Each attribute of type
referenceURI references a RegistryObject
with specified URI as
id.
</documentation>
</annotation> <restriction base="anyURI"
/> </simpleType> <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
maxOccurs="unbounded" minOccurs="1"
ref="dsig:Signature"/> </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" type="referenceURI"
use="required"/>
<attribute name="sourceObject" type="referenceURI"
use="required"/>
<attribute name="targetObject" type="referenceURI"
use="required"/>
<attribute name="isConfirmedBySourceOwner" type="boolean"
use="optional"/>
<attribute name="isConfirmedByTargetOwner" type="boolean"
use="optional"/>
</extension> </complexContent>
</complexType> <element name="Association"
type="tns:AssociationType1"
substitutionGroup="tns:Identifiable"/> <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
maxOccurs="1" minOccurs="1" name="affectedObject"
type="tns:ObjectRefListType"/>
</sequence> <!-- Was an
enumeration in V2. Now is extensible
--> <attribute
name="eventType" type="tns:LongName"
use="required"/>
<attribute name="timestamp" type="dateTime"
use="required"/>
<attribute name="user" type="referenceURI"
use="required"/>
<attribute name="requestId" type="referenceURI"
use="required"/>
</extension> </complexContent>
</complexType> <element name="AuditableEvent"
type="tns:AuditableEventType"
substitutionGroup="tns:Identifiable"/> <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" type="referenceURI"
use="optional"/>
<attribute name="classifiedObject" type="referenceURI"
use="required"/>
<attribute name="classificationNode" type="referenceURI"
use="optional"/>
<attribute name="nodeRepresentation" type="tns:LongName"
use="optional"/>
</extension> </complexContent>
</complexType> <element name="Classification"
type="tns:ClassificationType"
substitutionGroup="tns:Identifiable"/> <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 maxOccurs="unbounded" minOccurs="0"
ref="tns:ClassificationNode"/>
</sequence> <attribute
name="parent" type="referenceURI"
use="optional"/> <!-- Why
is this optional?? Needs to be discussed as an issue and fixed
--> <attribute name="code"
type="tns:LongName"
use="optional"/>
<attribute name="path" type="string"
use="optional"/>
</extension> </complexContent>
</complexType> <element name="ClassificationNode"
type="tns:ClassificationNodeType"
substitutionGroup="tns:Identifiable"/> <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 maxOccurs="unbounded" minOccurs="0"
ref="tns:ClassificationNode"/>
</sequence> <attribute
name="isInternal" type="boolean"
use="required"/>
<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"
substitutionGroup="tns:Identifiable"/> <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" type="referenceURI"
use="optional"/>
<attribute name="identificationScheme" type="referenceURI"
use="required"/>
<attribute name="value" type="tns:LongName"
use="required"/>
</extension> </complexContent>
</complexType> <element name="ExternalIdentifier"
type="tns:ExternalIdentifierType"
substitutionGroup="tns:Identifiable"/> <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" type="anyURI"
use="required"/>
</extension> </complexContent>
</complexType> <element name="ExternalLink"
type="tns:ExternalLinkType"
substitutionGroup="tns:Identifiable"/> <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 default="application/octet-stream" name="mimeType"
type="tns:LongName"/>
<attribute default="false" name="isOpaque"
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"
substitutionGroup="tns:Identifiable"/> <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 maxOccurs="1"
minOccurs="1">
<element maxOccurs="1" minOccurs="1"
ref="tns:Address"/>
<element maxOccurs="unbounded" minOccurs="1"
ref="tns:TelephoneNumber"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:EmailAddress"/>
</sequence> <attribute
name="parent"
type="referenceURI"/>
<attribute name="primaryContact" type="referenceURI"
use="required"/>
</extension> </complexContent>
</complexType> <element name="Organization"
type="tns:OrganizationType"
substitutionGroup="tns:Identifiable"/> <complexType
name="SlotType1">
<sequence> <element maxOccurs="1"
minOccurs="1" ref="tns:ValueList"/>
</sequence> <attribute name="name"
type="tns:LongName" use="required"/> <attribute
name="slotType" type="tns:LongName" use="optional"/>
</complexType> <element name="Slot"
type="tns:SlotType1"/> <complexType
name="ValueListType"> <sequence
maxOccurs="unbounded" minOccurs="0">
<element ref="tns:Value"/>
</sequence> </complexType> <element
name="ValueList" type="tns:ValueListType"/> <element
name="Value" type="tns:LongName"/> <complexType
name="SlotListType">
<sequence> <element
maxOccurs="unbounded" minOccurs="0" ref="tns:Slot"/>
</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 maxOccurs="unbounded"
minOccurs="0"> <element
ref="tns:Slot"/>
</sequence> <attribute name="firstName"
type="tns:ShortName" use="optional"/> <attribute
name="middleName" type="tns:ShortName"
use="optional"/> <attribute name="lastName"
type="tns:ShortName" use="optional"/>
</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 maxOccurs="unbounded"
minOccurs="0"> <element
ref="tns:Slot"/>
</sequence> <attribute name="address"
type="tns:ShortName" use="required"/> <attribute
name="type" type="tns:String32" use="optional"/>
</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 maxOccurs="unbounded"
minOccurs="0"> <element
ref="tns:Slot"/>
</sequence> <attribute name="city"
type="tns:ShortName" use="optional"/> <attribute
name="country" type="tns:ShortName" use="optional"/>
<attribute name="postalCode" type="tns:ShortName"
use="optional"/> <attribute name="stateOrProvince"
type="tns:ShortName" use="optional"/> <attribute
name="street" type="tns:ShortName" use="optional"/>
<attribute name="streetNumber" type="tns:String32"
use="optional"/> </complexType> <element
name="PostalAddress" type="tns:PostalAddressType"/>
<complexType name="RegistryEntryType">
<complexContent> <extension
base="tns:RegistryObjectType">
<attribute name="expiration" type="dateTime"
use="optional"/>
<attribute default="1" name="majorVersion"
type="integer"/>
<attribute default="0" name="minorVersion"
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" type="tns:ShortName"
use="optional"/>
</extension> </complexContent>
</complexType> <element name = "RegistryEntry" type =
"tns:RegistryEntryType"/> <complexType
name="InternationalStringType"> <sequence
maxOccurs="unbounded" minOccurs="0">
<element ref="tns:LocalizedString"/>
</sequence> </complexType> <element
name="InternationalString" type="tns:InternationalStringType"/>
<complexType name="LocalizedStringType">
<attribute ref="xml:lang" default="en-US"/>
<!--attribute name = "lang" default = "en-US" form = "qualified" type =
"language"/--> <attribute default="UTF-8"
name="charset"/> <attribute name="value"
type="tns:FreeFormText" use="required"/>
</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>
<complexContent> <extension
base="tns:IdentifiableType">
<sequence maxOccurs="1"
minOccurs="0">
<element maxOccurs="1" minOccurs="0"
ref="tns:Name"/>
<element maxOccurs="1" minOccurs="0"
ref="tns:Description"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:Slot"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:Classification"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:ExternalIdentifier"/>
</sequence> <attribute
name="objectType" type="referenceURI"
use="optional"/>
<attribute
name="status">
<simpleType>
<restriction
base="NCName">
<enumeration
value="Submitted"/>
<enumeration
value="Approved"/>
<enumeration
value="Deprecated"/>
<enumeration
value="Withdrawn"/>
</restriction>
</simpleType>
</attribute>
</extension> </complexContent>
</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 maxOccurs="1" minOccurs="0"
ref="tns:RegistryObjectList"/>
</sequence>
</extension> </complexContent>
</complexType> <element name="RegistryPackage"
type="tns:RegistryPackageType"
substitutionGroup="tns:Identifiable"/> <complexType
name="ServiceType">
<complexContent> <extension
base="tns:RegistryEntryType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:ServiceBinding"/>
</sequence>
</extension> </complexContent>
</complexType> <element name="Service"
type="tns:ServiceType" substitutionGroup="tns:Identifiable"/>
<complexType name="ServiceBindingType">
<complexContent> <extension
base="tns:RegistryObjectType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:SpecificationLink"/>
</sequence> <attribute
name="service" type="referenceURI"
use="optional"/>
<attribute name="accessURI" type="anyURI"
use="optional"/>
<attribute name="targetBinding" type="referenceURI"
use="optional"/>
</extension> </complexContent>
</complexType> <element name="ServiceBinding"
type="tns:ServiceBindingType"
substitutionGroup="tns:Identifiable"/> <complexType
name="SpecificationLinkType">
<complexContent> <extension
base="tns:RegistryObjectType">
<sequence maxOccurs="1"
minOccurs="0">
<element maxOccurs="1" minOccurs="0"
ref="tns:UsageDescription"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:UsageParameter"/>
</sequence> <attribute
name="serviceBinding" type="referenceURI"
use="optional"/>
<attribute name="specificationObject" type="referenceURI"
use="required"/>
</extension> </complexContent>
</complexType> <element name="SpecificationLink"
type="tns:SpecificationLinkType"
substitutionGroup="tns:Identifiable"/> <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"
type="tns:String8" use="optional"/> <attribute
name="countryCode" type="tns:String8"
use="optional"/> <attribute name="extension"
type="tns:String8" use="optional"/> <attribute
name="number" type="tns:String16" use="optional"/>
<attribute name="phoneType" type="tns:String32"
use="optional"/> <attribute name="url"
type="anyURI" use="optional"/> </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
maxOccurs="unbounded" minOccurs="0"
ref="tns:TelephoneNumber"/>
</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 maxOccurs="1"
minOccurs="1">
<element maxOccurs="unbounded" minOccurs="1"
ref="tns:Address"/>
<element maxOccurs="1" minOccurs="1"
ref="tns:PersonName"/>
<element maxOccurs="unbounded" minOccurs="1"
ref="tns:TelephoneNumber"/>
<element maxOccurs="unbounded" minOccurs="1"
ref="tns:EmailAddress"/>
</sequence> <attribute
name="url" type="anyURI" use="optional"/>
</extension> </complexContent>
</complexType> <element name="User" type="tns:UserType"
substitutionGroup="tns:Identifiable"/> <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" type="referenceURI"
use="required"/>
<attribute name="specificationVersion" type="string"
use="required"/>
<attribute default="P1D" name="replicationSyncLatency"
type="duration"/>
<attribute default="P1D" name="catalogingLatency"
type="duration"/> <!--
Optional features supported
--> <attribute
default="false" name="sqlQuerySupported"
type="boolean"/>
<attribute default="false" name="eventNotificationSupported"
type="boolean"/>
<attribute default="false" name="objectReplicationSupported"
type="boolean"/>
<attribute default="false" name="objectRelocationSupported"
type="boolean"/>
</extension> </complexContent>
</complexType> <element name="Registry"
type="tns:RegistryType" substitutionGroup="tns:Identifiable"/>
<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
ref="tns:Members"/>
</sequence> <attribute
name="replicationSyncLatency" type="duration"
use="required"/>
</extension> </complexContent>
</complexType> <element name="Members"
type="tns:ObjectRefListType"/> <element name="Federation"
type="tns:FederationType"
substitutionGroup="tns:Identifiable"/> <complexType
abstract="true" name="AdhocQueryType">
<annotation> <documentation
xml:lang="en">The common base type for all types of Adh hoc
queries.</documentation>
</annotation>
<complexContent> <extension
base="tns:RegistryObjectType"/>
</complexContent> </complexType> <element
name="Action" type="tns:ActionType"/> <complexType
name="SubscriptionType">
<annotation> <documentation
xml:lang="en">A Subscription for specified Events in an ebXML V3+
registry.</documentation>
</annotation>
<complexContent> <extension
base="tns:RegistryObjectType">
<sequence>
<element ref="tns:Action" minOccurs="1"
maxOccurs="unbounded"/>
</sequence> <!-- Ref to
a AdhocQueryType instance -->
<attribute name="selector" type="referenceURI"
use="required"/>
<attribute name="startDate" type="dateTime"
use="optional"/>
<attribute name="endDate" type="dateTime"
use="optional"/>
<attribute name="notificationInterval" type="duration"
use="optional"/>
</extension> </complexContent>
</complexType> <element name="Subscription"
type="tns:SubscriptionType"
substitutionGroup="tns:Identifiable"/> <complexType
abstract="true" name="ActionType">
<annotation>
<documentation>Abstract Base type for all types of
Actions.</documentation>
</annotation> </complexType> <complexType
name="NotifyActionType">
<annotation> <documentation
xml:lang="en">Abstract Base type for all types of Notify
Actions</documentation>
</annotation>
<complexContent> <extension
base="tns:ActionType">
<attribute default="ObjectRefs"
name="notificationOption">
<simpleType>
<restriction
base="NCName">
<enumeration
value="ObjectRefs"/>
<enumeration
value="Objects"/>
</restriction>
</simpleType>
</attribute> <attribute
name="endPoint" type="anyURI"
use="required"/>
</extension> </complexContent>
</complexType> <element name="NotifyAction"
type="tns:NotifyActionType" substitutionGroup="tns:Action"/>
<complexType name="IdentifiableType">
<annotation> <documentation
xml:lang="en">Common base class for all types that have unique
identity.</documentation>
</annotation> <attribute name="id"
type="anyURI" use="required"/> <!-- home attribute
is required only for remote ObjectRef -->
<attribute name="home" type="anyURI" use="optional"/>
</complexType> <element name="Identifiable"
type="tns:IdentifiableType"/> <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>
<complexContent> <extension
base="tns:IdentifiableType">
<!-- When true and is a remote ObjectRef then the registry must create a
replica for this ObjectRef
--> <attribute
default="false" name="createReplica"
type="boolean"/>
</extension> </complexContent>
</complexType> <element name="ObjectRef"
type="tns:ObjectRefType" substitutionGroup="tns:Identifiable"/>
<complexType name="ObjectRefListType">
<sequence maxOccurs="unbounded"
minOccurs="0"> <element
ref="tns:ObjectRef"/> </sequence>
</complexType> <element name="ObjectRefList"
type="tns:ObjectRefListType"/> <complexType
name="RegistryObjectListType">
<sequence> <element
maxOccurs="unbounded" minOccurs="0"
ref="tns:Identifiable"/> </sequence>
</complexType> <element name="RegistryObjectList"
type="tns:RegistryObjectListType"/> </schema>
Index:
rim.xsd =================================================================== RCS
file: /cvsroot/ebxmlrr/ebxmlrr-spec/misc/2.5/schema/rim.xsd,v retrieving
revision 1.10 diff -u -r1.10 rim.xsd --- rim.xsd 13 Nov 2003 13:59:13
-0000 1.10 +++ rim.xsd 9 Jan 2004 23:57:04 -0000 @@ -8,6 +8,16
@@ <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="referenceURI"> +
<annotation> + <documentation
xml:lang="en"> + referenceURI
is used by reference attributes within
RIM. + Each attribute of type
referenceURI references a RegistryObject
with + specified URI as
id. +
</documentation> +
</annotation> + <restriction base="anyURI"
/> + </simpleType> <simpleType
name="String4"> <restriction
base="string"> <maxLength
value="4"/> @@ -62,9 +72,9 @@
</annotation>
<complexContent> <extension
base="tns:RegistryObjectType"> -
<attribute name="associationType" type="anyURI"
use="required"/> -
<attribute name="sourceObject" type="anyURI"
use="required"/> -
<attribute name="targetObject" type="anyURI"
use="required"/> +
<attribute name="associationType" type="referenceURI"
use="required"/> +
<attribute name="sourceObject" type="referenceURI"
use="required"/> +
<attribute name="targetObject" type="referenceURI"
use="required"/>
<attribute name="isConfirmedBySourceOwner" type="boolean"
use="optional"/>
<attribute name="isConfirmedByTargetOwner" type="boolean"
use="optional"/>
</extension> @@ -84,8 +94,8
@@ <!-- Was an
enumeration in V2. Now is extensible
--> <attribute
name="eventType" type="tns:LongName"
use="required"/>
<attribute name="timestamp" type="dateTime"
use="required"/> -
<attribute name="user" type="anyURI"
use="required"/> -
<attribute name="requestId" type="anyURI"
use="required"/> +
<attribute name="user" type="referenceURI"
use="required"/> +
<attribute name="requestId" type="referenceURI"
use="required"/>
</extension>
</complexContent> </complexType> @@ -102,9
+112,9 @@
</annotation>
<complexContent> <extension
base="tns:RegistryObjectType"> -
<attribute name="classificationScheme" type="anyURI"
use="optional"/> -
<attribute name="classifiedObject" type="anyURI"
use="required"/> -
<attribute name="classificationNode" type="anyURI"
use="optional"/> +
<attribute name="classificationScheme" type="referenceURI"
use="optional"/> +
<attribute name="classifiedObject" type="referenceURI"
use="required"/> +
<attribute name="classificationNode" type="referenceURI"
use="optional"/>
<attribute name="nodeRepresentation" type="tns:LongName"
use="optional"/>
</extension> </complexContent> @@
-125,7 +135,7 @@
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:ClassificationNode"/>
</sequence> - <attribute
name="parent" type="anyURI"
use="optional"/> +
<attribute name="parent" type="referenceURI"
use="optional"/>
<!-- Why is this optional?? Needs to be discussed as an issue and fixed
--> <attribute
name="code" type="tns:LongName"
use="optional"/>
<attribute name="path" type="string" use="optional"/> @@ -168,8
+178,8 @@
</annotation>
<complexContent> <extension
base="tns:RegistryObjectType"> -
<attribute name="registryObject" type="anyURI"
use="optional"/> -
<attribute name="identificationScheme" type="anyURI"
use="required"/> +
<attribute name="registryObject" type="referenceURI"
use="optional"/> +
<attribute name="identificationScheme" type="referenceURI"
use="required"/>
<attribute name="value" type="tns:LongName"
use="required"/>
</extension> </complexContent> @@
-217,8 +227,8
@@ <element
maxOccurs="unbounded" minOccurs="1"
ref="tns:TelephoneNumber"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:EmailAddress"/>
</sequence> - <attribute
name="parent"
type="anyURI"/> -
<attribute name="primaryContact" type="anyURI"
use="required"/> +
<attribute name="parent"
type="referenceURI"/> +
<attribute name="primaryContact" type="referenceURI"
use="required"/>
</extension>
</complexContent> </complexType> @@ -337,7
+347,7 @@
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:Classification"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:ExternalIdentifier"/>
</sequence> - <attribute
name="objectType" type="anyURI"
use="optional"/> +
<attribute name="objectType" type="referenceURI"
use="optional"/>
<attribute
name="status">
<simpleType>
<restriction base="NCName"> @@ -387,9 +397,9
@@
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:SpecificationLink"/>
</sequence> - <attribute
name="service" type="anyURI"
use="optional"/> +
<attribute name="service" type="referenceURI"
use="optional"/>
<attribute name="accessURI" type="anyURI"
use="optional"/> -
<attribute name="targetBinding" type="anyURI"
use="optional"/> +
<attribute name="targetBinding" type="referenceURI"
use="optional"/>
</extension>
</complexContent> </complexType> @@ -401,8
+411,8 @@
<element maxOccurs="1" minOccurs="0"
ref="tns:UsageDescription"/>
<element maxOccurs="unbounded" minOccurs="0"
ref="tns:UsageParameter"/>
</sequence> - <attribute
name="serviceBinding" type="anyURI"
use="optional"/> -
<attribute name="specificationObject" type="anyURI"
use="required"/> +
<attribute name="serviceBinding" type="referenceURI"
use="optional"/> +
<attribute name="specificationObject" type="referenceURI"
use="required"/>
</extension>
</complexContent> </complexType> @@ -452,7
+462,7 @@
</annotation>
<complexContent> <extension
base="tns:RegistryEntryType"> -
<attribute name="operator" type="anyURI"
use="required"/> +
<attribute name="operator" type="referenceURI"
use="required"/>
<attribute name="specificationVersion" type="string"
use="required"/>
<attribute default="P1D" name="replicationSyncLatency"
type="duration"/>
<attribute default="P1D" name="catalogingLatency"
type="duration"/> @@ -499,7 +509,7
@@ <element
ref="tns:Action" minOccurs="1"
maxOccurs="unbounded"/>
</sequence> <!--
Ref to a AdhocQueryType instance
--> - <attribute
name="selector" type="anyURI"
use="required"/> +
<attribute name="selector" type="referenceURI"
use="required"/>
<attribute name="startDate" type="dateTime"
use="optional"/>
<attribute name="endDate" type="dateTime"
use="optional"/>
<attribute name="notificationInterval" type="duration"
use="optional"/>
To unsubscribe from this mailing list (and be removed from the roster
of the OASIS TC), go to
http://www.oasis-open.org/apps/org/workgroup/regrep/members/leave_workgroup.php.
|