[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: SUBCLASSING, again



Hi Kurt!

Responses in-line.

Regards,
Kathy


"Kurt D. Zeilenga" wrote:

> At 07:30 PM 2/11/2004, Kathleen Dally wrote:
> >"Kurt D. Zeilenga" wrote:
> >
> >> At 06:56 PM 2/11/2004, Kathleen Dally wrote:
> >> >I would have no trouble deleting the sentence from Models, section
> >> >2.4.3:
> >> >        " Auxiliary object classes cannot subclass structural object
> >> >classes."
> >>
> >> Even though the model makes no sense in face of such
> >> constructions?
> >
> >kd:  I agree that this seems nonsensical.  I haven't seen any use made of
> >such a subclassing.
>
> So, it's okay to disallow this, even though X.501 didn't
> explicitly do so, because they are nonsensical.
>
> One can, and the WG did, apply the same argument to Structural
> Classes which subclass Auxiliaries.  That is, that this is
> nonsensical and hence should be disallowed, as implied by the
> "more generic" statement as well as other aspects of the
> specification.
>

> kd:  By definition of multiple inheritance, a (new) object class can have
> more than one direct superclass.  Nothing is said in the multiple
> inheritance definition about the type of  the superclasses.  In the
> definition of structural, it indicates that only one of the superclasses is
> a structural object class.  Therefore, the other direct superclasses must be
> auxiliary or abstract.  An ENTRY has exactly one structural object class,
> which is in the case of the new object class derived from one structural
> object class and, possibly, auxiliary object classes.

>
> As I noted then (and recently), the alternative is to try to
> make sense of it.  However, that's a tall order (see below).
>
> >> >However, I do not believe that the intent to permit Auxiliary object
> >> >classes to subclass Structural object classes is as clear in X.501.
> >>
> >> Why?  Since X.501 didn't explicitly disallow this, why do
> >> you think it clear that the intent was to disallow this?
> >
> >kd:  The intent that I am speaking about is the nature of Auxiliary
> >Object Classes being a means of augmenting other classes and entries with
> >groups of attributes.
>
> Where in X.501 does it describe Auxiliary object classes as a
> mechanism for extending other classes, in particular, any
> structural class?  In reading 8.3.3, it seems clear the nature
> of Auxiliary object classes is to allow optional augmentation
> of entries.

> Do you see any language anywhere which specifically mentions
> that those constructs are allowed, and, more importantly, any
> text which addresses the special cases which would naturally
> arise from allowance of such constructs?
>

kd:  Could you please give an example of one of the special cases?

> My concern is that there are many statements which, when taken
> together, make little sense if structural classes are allowed
> to subclass auxiliary classes.  Below I elaborate on a few
> instances.
>
> 8.3.3 says:
>   Therefore, besides being a member of the structural object class,
>   an entry may be optionally a member of one or more auxiliary object
>   classes.
> This would have to reworded:
>   Therefore, besides being a member of the structural object class
>   and any auxiliary classes which are superclasses of this
>   structural object class, an entry may be optionally a member of
>   one or more auxiliary object classes.
> to clarify that membership in structural class's superclass
> auxiliary class is not always optional as implied by current text.

kd:  No, the rewording would have to be:
        "Therefore, besides being a member of the structural object class and
any structural, auxiliary, and abstract
         classes which are superclasses of this structural object class, and
entry maybe optional a member of one or
         more auxiliary object classes."
I don't think we need to elaborate the definition of subclassing here.

>
> 8.3.3 continues:
>   An entry?s auxiliary object classes may change over time.
> This would have to reworded:
>   An entry's auxiliary object classes, except those which are
>   superclasses of the entry's structural object class, may
>   change over time.
> as not all the entry's object classes may change over time as
> implied by the current text.

kd:  No, because the statement is about the nature of ENTRIES, not OBJECT
CLASSES.

>
> Before I go on, I note that it's starting to sounding like an
> auxiliary class which is a superclass of the structural object
> class of an entry is to be treated as if it were structural
> in this situation.  But, I note that is counter to 8.3:
>   Each object class is of precisely one of these kinds,
>   and remains of this kind in whatever situation it is
>   encountered within the Directory.
> This section, I think, was intended that special cases were
> not intended.  But we'd have to treat auxiliary classes in this
> situation quite differently from those not in this situation.
>

kd:  No, the nature of the auxiliary class is not changed by being a
superclass.  However, the attributes included in the auxiliary class are
inherited in the new class in the same way as those from any other
superclasses.  (For example, top does not become structural.)

>
> 12.3 says,
>    There shall be one value of the objectClass attribute for
>    the entry?s structural object class and a value for each
>    of its superclasses.
> So, in this situation, the auxiliary superclasses of the
> structural class of the entry are required to be listed as
> objectClass values.

kd:  Yes.

> 12.3 then says:
>       Where auxiliary object classes are used, an entry may
>    contain values of the objectClass attribute for the
>    auxiliary object classes and their superclasses allowed
>    by a DIT content rule.
> which means that in this situation, these auxiliary
> superclasses of the structural class of the entry must in
> listed in the controlling DIT content rule.  And, unsaid,
> this requires there to be a controlling DIT content rule
> in this situation.

kd:  No.  The statement is about ENTRY.  Any auxiliary superclasses of the
structural object classes are not required to be cited in a Content Rule,
because they are already part of the entry under the definition of the
structural object class.

>
>
> 12.7 says:
>   A DIT content rule specifies the permissible content of
>   entries of a particular structural object class via the
>   identification of an optional set of auxiliary object
>   classes, mandatory, optional and precluded attributes.
> That is, only those auxiliary classes in this optional set are
> permissible.

kd:  No.  This statement is discussing the significance of the Content Rule,
which controls auxiliary object classes and attributes beyond the
specification of the structural object class.

>

> 12.7 continues:
>   A DIT content rule definition includes:
>       optionally, an indication of the auxiliary object
>       classes allowed for entries governed by the rule
> That is, if they are listed, the class is "allowed", not
> "required". But from 12.3 we get that auxiliary superclasses
> of the structural class of the entry are actually required
> to be listed and this set is not optional in this situation.
>

kd:  This is a discussion of the Content Rule, not the requirements on the
entry specified by the structural object class.

>
> 12.7 says:
>   An entry governed by a DIT content rule may, in addition
>   to the structural object class of the DIT structure rule,
>   be associated with a subset of the auxiliary object
>   classes identified by the DIT content rule. This
>   association is reflected in the entry?s objectClass
>   attribute.
> If we consider a DIT content rule which lists as allowed
> only the auxiliary superclasses of the structural class of
> the entry, then the only subset which an entry can be
> associated with is the complete set, not any subset.
>

kd:  Same as above.

>
> There are likely other areas where that would need to
> be revised if such constructs were to be allowed.
>
> In response to your comment:
>
> >For many years, I have been told by implementors that
> >the products do not support Content Rules!
>
> Some do, some don't.  In LDAP, it's viewed as optional.
>
> >Given this fact, if Auxiliary Object Classes could not be
> >superclasses, no Auxiliary Object Classes could never
> >be used.
> kd:  But, the use of auxiliary object classes as superclasses is not
> precluded in X.500.  LDAP is being overly restrictive.

>
> In absence of some extension, as previously discussed
> during WG Last Call, yes.
>
> Many LDAP implementations have extensions in this area.
> However, I'm now aware of any formal specification which
> details how the set of permissible auxiliary classes is
> controlled in absence of DIT content rules.  However, I
> am aware of implementations which, while supporting
> such extensions, do not allow such subclassing constructs.
> This because the constructs are nonsensical even when
> one uses other mechanisms to control which auxiliaries
> may be present (for instance, section 8 concerns above).
>

kd:  I disagree that structural object classes derived from another structural
class and one or more auxiliary or abstract classes is nonsense.  A perfectly
good, useful, structural object class is one, such as, "namedPerson" which
would be defined as:

( x.x.x.x NAME 'namedPerson'
   SUP person, individualName)

( x.x.x.x NAME 'individualName'
   SUP top
   AUXILIARY
   MUST ( givenName $ initials $ generationQualifier ) )

The advantage of using the auxiliary object class in namedPerson (instead of a
MUST list of attributes), is that the individualName object class can be
searched for in the objectClass attribute.

> The question for us is whether implementations which
> claim to support DIT content rules in a manner consistent
> with the existing specification and, if so, how to address
> interoperability and other known technical issues.  It is
> clear that that there are multiple independently developed
> implementations of DIT content rules as described in this
> X.500 and that the clarifications in [Models] go a long way
> towards addressing the known technical issues.
>

kd:  I am NOT disagreeing with the definition of CONTENT RULES or ENTRIES,
only the Models restriction on OBJECT CLASSES.



>
> Kurt