Subject: Re: RFC 2596 questions

From: "Jim Sermersheim" <[email-masked]>
Date: Fri, 20 Oct 2000 10:56:01 -0600

Getting back to this:

The example David gives below shows a subtype inheriting from multiple supertypes. As of yet, I believe that this is illegal in X.500/LDAP and as such might cause problems with existing servers.

I don't have a good feeling of closure on this subject. We need to revise 4.1.5 of RFC 2251 to say one of the following:

1) "An AttributeDescription with one or more options is treated as a direct subtype of the attribute type without any options" (inserted direct)

or

2) "An AttributeDescription with one option is treated as a direct subtype of the attribute type without any options. An AttributeDescription with more than one option is treated as a direct subtype of all the possible AttributeDescriptions that could be made up of all lesser combinations the options"

That description is pretty ugly and could be fixed. It says that cn;a;b;c;d is in a direct subtype of:
cn;a
cn;a;b
cn;a;c
cn;a;d
cn;a;b;c
cn;a;b;d
cn;a;c;d
cn;b
cn;b;c
cn;b;d
cn;b;c;d
cn;c
cn;c;d
cn;d

This also tells me that attribute subtype inheritance is at most two levels, but infinitely wide (leaf can multiply inherit from any number of supertypes)

or

"An AttributeDescription with one option is treated as a direct subtype of the attribute type without any options. An AttributeDescription with more than one option is treated as a direct subtype of all the possible AttributeDescriptions that could be made up of all combinations the options sans one option"

Using the former example, this produces:
cn;a (direct subtype of cn)
cn;b (direct subtype of cn)
cn;c (direct subtype of cn)
cn;d (direct subtype of cn)
cn;a;b (direct subtype of cn;a and cn;b)
cn;a;c (direct subtype of cn;a and cn;c)
cn;a;d (direct subtype of cn;a and cn;d)
cn;b;c (direct subtype of cn;b and cn;c)
cn;b;d (direct subtype of cn;b and cn;d)
cn;c;d (direct subtype of cn;c and cn;d)
cn;a;b;c (direct subtype of cn;a;b and cn;a;c and cn;b;c)
cn;a;b;d (direct subtype of cn;a;b and cn;a;d and cn;b;d)
cn;a;c;d (direct subtype of cn;a;c and cn;a;d and cn;c;d)
cn;b;c;d (direct subtype of cn;b;c and cn;b;d and cn;c;d)
cn;a;b;c;d (direct subtype of cn;a;b;c and cn;a;b;d and cn;a;c;d)

In the context of language tags, the implications might be benign, but when combining disparate options some combinations might cause problems.

I personally prefer 1). Though it may be less flexible, It's simpler to understand and fits well with the current subtyping model.

Jim

>>> "David Chadwick" <[email-masked]> 9/23/00 5:11:55 AM >>>

> Yes, I'm reading "direct" into the 2251 statement. David has argued
> that: cn;lang-en-US;lang-ja is a direct subtype of cn;lang-en-US,
> which in turn is a direct subtype of cn. Does this also mean that it's
> also a subtype of cn;lang-ja, 

Yes, I would say so. The new dual language subtype is a subtype 
of both single language subtypes. The order does not matter. We 
have

               supertype
             /                  \
subtype 1                    subtype 2
              \                 /
              subtype1-2

David

>or is it strictly a right to left thing?
> If r to l, then the attribute type option ordering restriction will
> get in people's way.
> 
> Jim
> 

***************************************************

David Chadwick
IS Institute, University of Salford, Salford M5 4WT
Tel +44 161 295 5351  Fax +44 161 745 8169
Mobile +44 790 167 0359
Email [email-masked]
Home Page  http://www.salford.ac.uk/its024/chadwick.htm
Understanding X.500  http://www.salford.ac.uk/its024/X500.htm
X.500/LDAP Seminars http://www.salford.ac.uk/its024/seminars.htm
Entrust key validation string MLJ9-DU5T-HV8J

***************************************************

---

From: "Kurt D. Zeilenga" <[email-masked]>
Date: Fri, 20 Oct 2000 10:34:19 -0700

Note that "cn;a;b;c;d" should be a direct subtype of "name;a;b;c;d"
as well...

---

From: "David Chadwick" <[email-masked]>
Date: Sat, 21 Oct 2000 16:08:23 +0100

Date forwarded: 	Fri, 20 Oct 2000 09:57:30 -0700 (PDT)
Date sent:      	Fri, 20 Oct 2000 10:56:01 -0600
From:           	"Jim Sermersheim" <[email-masked]>
To:             	<[email-masked]>
Copies to:      	<[email-masked]>, <[email-masked]>
Subject:        	Re: RFC 2596 questions
Forwarded by:   	[email-masked]

> Getting back to this:
> 
> The example David gives below shows a subtype inheriting from multiple
> supertypes. As of yet, I believe that this is illegal in X.500/LDAP

It might be illegal in LDAP but it is not illegal in X.501.

> and as such might cause problems with existing servers.
> 
> I don't have a good feeling of closure on this subject. We need to
> revise 4.1.5 of RFC 2251 to say one of the following:

From the 3 options I prefer option 3 from a modelling perspective, 
but pragmatically what are the implementation implications of the 3 
different models (not being a server implementer myself)?

David

> 
> 1) "An AttributeDescription with one or more options is treated as a
> direct subtype of the attribute type without any options" (inserted
> direct)
> 
> or
> 
> 2) "An AttributeDescription with one option is treated as a direct
> subtype of the attribute type without any options. An
> AttributeDescription with more than one option is treated as a direct
> subtype of all the possible AttributeDescriptions that could be made
> up of all lesser combinations the options"
> 
> That description is pretty ugly and could be fixed. It says that
> cn;a;b;c;d is in a direct subtype of: cn;a cn;a;b cn;a;c cn;a;d
> cn;a;b;c cn;a;b;d cn;a;c;d cn;b cn;b;c cn;b;d cn;b;c;d cn;c cn;c;d
> cn;d
> 
> This also tells me that attribute subtype inheritance is at most two
> levels, but infinitely wide (leaf can multiply inherit from any number
> of supertypes)
> 
> or
> 
> "An AttributeDescription with one option is treated as a direct
> subtype of the attribute type without any options. An
> AttributeDescription with more than one option is treated as a direct
> subtype of all the possible AttributeDescriptions that could be made
> up of all combinations the options sans one option"
> 
> In the context of language tags, the implications might be benign, but
> when combining disparate options some combinations might cause
> problems.
> 
> I personally prefer 1). Though it may be less flexible, It's simpler
> to understand and fits well with the current subtyping model.
> 
> Jim
> 
> 
> >>> "David Chadwick" <[email-masked]> 9/23/00 5:11:55 AM
> >>> >>>
> 
> > which in turn is a direct subtype of cn. Does this also mean that
> > it's also a subtype of cn;lang-ja, 
> 

David Chadwick

---

From: "Kurt D. Zeilenga" <[email-masked]>
Date: Sat, 21 Oct 2000 09:12:54 -0700

>It might be illegal in LDAP but it is not illegal in X.501.

?????

The X.501(93~97) AttributeTypeDescription appears to allow
only one 'derivation'... that is, an attribute type can
have zero or one direct supertypes.

(I'm actually looking at a draft of the 97 spec)

---

From: "David Chadwick" <[email-masked]>
Date: Sat, 21 Oct 2000 19:58:33 +0100

Date sent:      	Sat, 21 Oct 2000 09:12:54 -0700

To:             	[email-masked]

From:           	"Kurt D. Zeilenga" <<[email-masked]>

<color><param>0000,0000,0000</param>> 

</color>I am basing my evidence of support for multiple superclasses on the 
following from X.501 (and also that I was at the meeting when it 
was discussed and agreed upon)

<flushboth><bold><color><param>0100,0100,0100</param><FontFamily><param>Times</param><smaller>7.1.13	subclass</bold>: Relative to one or more superclasses – an object class derived from 
one or more superclasses. The members of the subclass share all the characteristics of 
the super classes and additional characteristics possessed by none of the members of 
those superclasses.</flushboth>

from <bold>7.2</bold>

<flushboth>An <italic>object class</italic> is an identified family of objects, or conceivable objects, which share 
certain characteristics. Every object belongs to at least one class. An object class may 
be a <italic>subclass</italic> of other object classes, in which case the members of the former class, 
the subclass, are also considered to be members of the latter classes, the superclasses. 
There may be subclasses of subclasses, etc., to an arbitrary depth.</flushboth>

<flushboth>From <bold>7.3</bold></flushboth>

<flushboth>Each entry contains an indication of the object classes, and their superclasses, to which 
the entry belongs.</flushboth>

<flushboth>From <bold>8.3</bold></flushboth>

<flushboth>An object class may be derived from two or more direct superclasses (superclasses not 
part of the same superclass chain). This feature of subclassing is termed <italic>multiple<bold></italic> 
<italic></bold>inheritance</italic>.</flushboth>

<flushboth><bold><bigger>12.3	Object class definition</flushboth>

<flushboth></bold><smaller>The definition of an object class involves:</flushboth>

<paraindent><param>out</param><flushboth>a)	indicating which classes this object class is to be a subclass of;</paraindent></flushboth>

<paraindent><param>out</param><flushboth>b)	indicating what kind of object class is being defined;</paraindent></flushboth>

<paraindent><param>out</param><flushboth>c)	listing the <italic>mandatory</italic> attribute types that an entry of the object class 
shall contain in addition to the mandatory attribute types of all its 
superclasses;</paraindent></flushboth>

<paraindent><param>out</param><flushboth>d)	listing the <italic>optional </italic>attribute types that an entry of the object class may 
contain in addition to the optional attributes of all its superclasses;</paraindent></flushboth>

<paraindent><param>out</param><flushboth>e)	assigning an object identifier for the object class.</paraindent></flushboth>

I think this is pretty conclusive evidence that multiple superclasses are supported (i.e. 
multiple inheritance)

David

<color><param>0000,0000,0000</param><FontFamily><param>Arial</param><bigger>> 

David Chadwick

---

From: "Kurt D. Zeilenga" <[email-masked]>
Date: Sat, 21 Oct 2000 12:10:31 -0700

At 07:58 PM 10/21/00 +0100, David Chadwick wrote:
>I think this is pretty conclusive evidence that multiple superclasses are supported (i.e. multiple inheritance) 

Of object classes, yes.
But we're talking about multiple inheritance of attribute types.

---

From: "David Chadwick" <[email-masked]>
Date: Sat, 21 Oct 2000 22:04:00 +0100

Date forwarded: 	Sat, 21 Oct 2000 12:11:09 -0700 (PDT)
Date sent:      	Sat, 21 Oct 2000 12:10:31 -0700
To:             	[email-masked]
From:           	"Kurt D. Zeilenga" <[email-masked]>
Subject:        	Re: RFC 2596 questions
Copies to:      	<[email-masked]>
Forwarded by:   	[email-masked]

> >I think this is pretty conclusive evidence that multiple superclasses
> >are supported (i.e. multiple inheritance) 
> 
> Of object classes, yes.
Slight disconnect there !. 
I agree that multiple inheritance of attribute types is not supported 
by X.501

David

David Chadwick