# RFC1274: Cosine and Internet X.500 schema
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2019 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
#
# RFC1274: Cosine and Internet X.500 schema
#
# This file contains LDAPv3 schema derived from X.500 COSINE "pilot"
# schema.  As this schema was defined for X.500(89), some
# oddities were introduced in the mapping to LDAPv3.  The
# mappings were based upon: draft-ietf-asid-ldapv3-attributes-03.txt
# (a work in progress)
#
# Note: It seems that the pilot schema evolved beyond what was
# described in RFC1274.  However, this document attempts to describes
# RFC1274 as published.
#
# Depends on core.schema


# Network Working Group                                          P. Barker
# Request for Comments: 1274                                      S. Kille
#                                              University College London
#                                                          November 1991
#
#                 The COSINE and Internet X.500 Schema
#
# [trimmed]
#
# Abstract
#
#  This document suggests an X.500 Directory Schema, or Naming
#  Architecture, for use in the COSINE and Internet X.500 pilots.  The
#  schema is independent of any specific implementation.  As well as
#  indicating support for the standard object classes and attributes, a
#  large number of generally useful object classes and attributes are
#  also defined.  An appendix to this document includes a machine
#  processable version of the schema.
#
# [trimmed]

# 7.  Object Identifiers
#
#  Some additional object identifiers are defined for this schema.
#  These are also reproduced in Appendix C.
#
#    data OBJECT IDENTIFIER ::= {ccitt 9}
#    pss OBJECT IDENTIFIER ::= {data 2342}
#    ucl OBJECT IDENTIFIER ::= {pss 19200300}
#    pilot OBJECT IDENTIFIER ::= {ucl 100}
#
#    pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
#    pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
#    pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
#    pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
#
#    iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
#    caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
#                                          {pilotAttributeSyntax 5}
#
# 8.  Object Classes
# [relocated after 9]

#
# 9.  Attribute Types
#
# 9.1.  X.500 standard attribute types
#
#  A number of generally useful attribute types are defined in X.520,
#  and these are supported.  Refer to that document for descriptions of
#  the suggested usage of these attribute types.  The ASN.1 for these
#  attribute types is reproduced for completeness in Appendix C.
#
# 9.2.  X.400 standard attribute types
#
#  The standard X.400 attribute types are supported.  See X.402 for full
#  details.  The ASN.1 for these attribute types is reproduced in
#  Appendix C.
#
# 9.3.  COSINE/Internet attribute types
#
#  This section describes all the attribute types defined for use in the
#  COSINE and Internet pilots.  Descriptions are given as to the
#  suggested usage of these attribute types.  The ASN.1 for these
#  attribute types is reproduced in Appendix C.
#
# 9.3.1.  Userid
#
#  The Userid attribute type specifies a computer system login name.
#
#    userid ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-user-identifier))
#    ::= {pilotAttributeType 1}
#
#(in core.schema)
##attributetype ( 0.9.2342.19200300.100.1.1 NAME ( 'uid' 'userid' )
##	EQUALITY caseIgnoreMatch
##	SUBSTR caseIgnoreSubstringsMatch
##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.2.  Text Encoded O/R Address
#
#  The Text Encoded O/R Address attribute type specifies a text encoding
#  of an X.400 O/R address, as specified in RFC 987.  The use of this
#  attribute is deprecated as the attribute is intended for interim use
#  only.  This attribute will be the first candidate for the attribute
#  expiry mechanisms!
#
#    textEncodedORAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#        (SIZE (1 .. ub-text-encoded-or-address))
#    ::= {pilotAttributeType 2}
#
attributetype ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.3.  RFC 822 Mailbox
#
#  The RFC822 Mailbox attribute type specifies an electronic mailbox
#  attribute following the syntax specified in RFC 822.  Note that this
#  attribute should not be used for greybook or other non-Internet order
#  mailboxes.
#
#    rfc822Mailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            (SIZE (1 .. ub-rfc822-mailbox))
#    ::= {pilotAttributeType 3}
#
#(in core.schema)
##attributetype ( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mailbox' )
##	EQUALITY caseIgnoreIA5Match
##	SUBSTR caseIgnoreIA5SubstringsMatch
##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

# 9.3.4.  Information
#
#  The Information attribute type specifies any general information
#  pertinent to an object.  It is recommended that specific usage of
#  this attribute type is avoided, and that specific requirements are
#  met by other (possibly additional) attribute types.
#
#    info ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-information))
#    ::= {pilotAttributeType 4}
#
attributetype ( 0.9.2342.19200300.100.1.4 NAME 'info'
	DESC 'RFC1274: general information'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )


# 9.3.5.  Favourite Drink
#
#  The Favourite Drink attribute type specifies the favourite drink of
#  an object (or person).
#
#    favouriteDrink ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-favourite-drink))
#    ::= {pilotAttributeType 5}
#
attributetype ( 0.9.2342.19200300.100.1.5
	NAME ( 'drink' 'favouriteDrink' )
	DESC 'RFC1274: favorite drink'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.6.  Room Number
#
#  The Room Number attribute type specifies the room number of an
#  object.  Note that the commonName attribute should be used for naming
#  room objects.
#
#    roomNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-room-number))
#    ::= {pilotAttributeType 6}
#
attributetype ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber'
	DESC 'RFC1274: room number'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.7.  Photo
#
#  The Photo attribute type specifies a "photograph" for an object.
#  This should be encoded in G3 fax as explained in recommendation T.4,
#  with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as
#  defined in X.420.
#
#    IMPORT  G3FacsimileBodyPart  FROM  {   mhs-motis   ipms   modules
#    information-objects }
#
#    photo ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            CHOICE {
#                g3-facsimile [3] G3FacsimileBodyPart
#                }
#        (SIZE (1 .. ub-photo))
#    ::= {pilotAttributeType 7}
#
attributetype ( 0.9.2342.19200300.100.1.7 NAME 'photo'
	DESC 'RFC1274: photo (G3 fax)'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )

# 9.3.8.  User Class
#
#  The User Class attribute type specifies a category of computer user.
#  The semantics placed on this attribute are for local interpretation.
#  Examples of current usage od this attribute in academia are
#  undergraduate student, researcher, lecturer, etc.  Note that the
#  organizationalStatus attribute may now often be preferred as it makes
#  no distinction between computer users and others.
#
#    userClass ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-user-class))
#    ::= {pilotAttributeType 8}
#
attributetype ( 0.9.2342.19200300.100.1.8 NAME 'userClass'
	DESC 'RFC1274: category of user'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.9.  Host
#
#  The Host attribute type specifies a host computer.
#
#    host ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-host))
#    ::= {pilotAttributeType 9}
#
attributetype ( 0.9.2342.19200300.100.1.9 NAME 'host'
	DESC 'RFC1274: host computer'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.10.  Manager
#
#  The Manager attribute type specifies the manager of an object
#  represented by an entry.
#
#    manager ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 10}
#
attributetype ( 0.9.2342.19200300.100.1.10 NAME 'manager'
	DESC 'RFC1274: DN of manager'
	EQUALITY distinguishedNameMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

# 9.3.11.  Document Identifier
#
#  The Document Identifier attribute type specifies a unique identifier
#  for a document.
#
#    documentIdentifier ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-identifier))
#    ::= {pilotAttributeType 11}
#
attributetype ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier'
	DESC 'RFC1274: unique identifier of document'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.12.  Document Title
#
#  The Document Title attribute type specifies the title of a document.
#
#    documentTitle ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#        (SIZE (1 .. ub-document-title))
#    ::= {pilotAttributeType 12}
#
attributetype ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle'
	DESC 'RFC1274: title of document'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.13.  Document Version
#
#  The Document Version attribute type specifies the version number of a
#  document.
#
#    documentVersion ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-version))
#    ::= {pilotAttributeType 13}
#
attributetype ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion'
	DESC 'RFC1274: version of document'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.14.  Document Author
#
#  The Document Author attribute type specifies the distinguished name
#  of the author of a document.
#
#    documentAuthor ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 14}
#
attributetype ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor'
	DESC 'RFC1274: DN of author of document'
	EQUALITY distinguishedNameMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

# 9.3.15.  Document Location
#
#  The Document Location attribute type specifies the location of the
#  document original.
#
#    documentLocation ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-location))
#    ::= {pilotAttributeType 15}
#
attributetype ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation'
	DESC 'RFC1274: location of document original'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.16.  Home Telephone Number
#
#  The Home Telephone Number attribute type specifies a home telephone
#  number associated with a person.  Attribute values should follow the
#  agreed format for international telephone numbers: i.e., "+44 71 123
#  4567".
#
#    homeTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 20}
#
attributetype ( 0.9.2342.19200300.100.1.20
	NAME ( 'homePhone' 'homeTelephoneNumber' )
	DESC 'RFC1274: home telephone number'
	EQUALITY telephoneNumberMatch
	SUBSTR telephoneNumberSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )

# 9.3.17.  Secretary
#
#  The Secretary attribute type specifies the secretary of a person.
#  The attribute value for Secretary is a distinguished name.
#
#    secretary ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 21}
#
attributetype ( 0.9.2342.19200300.100.1.21 NAME 'secretary'
	DESC 'RFC1274: DN of secretary'
	EQUALITY distinguishedNameMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

# 9.3.18.  Other Mailbox
#
#  The Other Mailbox attribute type specifies values for electronic
#  mailbox types other than X.400 and rfc822.
#
#    otherMailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            SEQUENCE {
#                    mailboxType PrintableString, -- e.g. Telemail
#                    mailbox IA5String  -- e.g. X378:Joe
#            }
#    ::= {pilotAttributeType 22}
#
attributetype ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 )

# 9.3.19.  Last Modified Time
#
#  The Last Modified Time attribute type specifies the last time, in UTC
#  time, that an entry was modified.  Ideally, this attribute should be
#  maintained by the DSA.
#
#    lastModifiedTime ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            uTCTimeSyntax
#    ::= {pilotAttributeType 23}
#
## Deprecated in favor of modifyTimeStamp
#attributetype ( 0.9.2342.19200300.100.1.23 NAME 'lastModifiedTime'
#	DESC 'RFC1274: time of last modify, replaced by modifyTimestamp'
#	OBSOLETE
#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.53
#	USAGE directoryOperation )

# 9.3.20.  Last Modified By
#
#  The Last Modified By attribute specifies the distinguished name of
#  the last user to modify the associated entry.  Ideally, this
#  attribute should be maintained by the DSA.
#
#    lastModifiedBy ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 24}
#
## Deprecated in favor of modifiersName
#attributetype ( 0.9.2342.19200300.100.1.24 NAME 'lastModifiedBy'
#	DESC 'RFC1274: last modifier, replaced by modifiersName'
#	OBSOLETE
#	EQUALITY distinguishedNameMatch
#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
#	USAGE directoryOperation )

# 9.3.21.  Domain Component
#
#  The Domain Component attribute type specifies a DNS/NRS domain.  For
#  example, "uk" or "ac".
#
#    domainComponent ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            SINGLE VALUE
#    ::= {pilotAttributeType 25}
#
##(in core.schema)
##attributetype ( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' )
##	EQUALITY caseIgnoreIA5Match
##	SUBSTR caseIgnoreIA5SubstringsMatch
##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )

# 9.3.22.  DNS ARecord
#
#  The A Record attribute type specifies a type A (Address) DNS resource
#  record [6] [7].
#
#    aRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 26}
#
## incorrect syntax?
attributetype ( 0.9.2342.19200300.100.1.26 NAME 'aRecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

## missing from RFC1274
## incorrect syntax?
attributetype ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.23.  MX Record
#
#  The MX Record attribute type specifies a type MX (Mail Exchange) DNS
#  resource record [6] [7].
#
#    mXRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 28}
#
## incorrect syntax!!
attributetype ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.24.  NS Record
#
#  The NS Record attribute type specifies an NS (Name Server) DNS
#  resource record [6] [7].
#
#    nSRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 29}
#
## incorrect syntax!!
attributetype ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.25.  SOA Record
#
#  The SOA Record attribute type specifies a type SOA (Start of
#  Authority) DNS resource record [6] [7].
#
#    sOARecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 30}
#
## incorrect syntax!!
attributetype ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.26.  CNAME Record
#
#  The CNAME Record attribute type specifies a type CNAME (Canonical
#  Name) DNS resource record [6] [7].
#
#    cNAMERecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            iA5StringSyntax
#    ::= {pilotAttributeType 31}
#
## incorrect syntax!!
attributetype ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.27.  Associated Domain
#
#  The Associated Domain attribute type specifies a DNS or NRS domain
#  which is associated with an object in the DIT. For example, the entry
#  in the DIT with a distinguished name "C=GB, O=University College
#  London" would have an associated domain of "UCL.AC.UK.  Note that all
#  domains should be represented in rfc822 order.  See [3] for more
#  details of usage of this attribute.
#
#    associatedDomain ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#    ::= {pilotAttributeType 37}
#
#attributetype ( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain'
#	EQUALITY caseIgnoreIA5Match
#	SUBSTR caseIgnoreIA5SubstringsMatch
#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 9.3.28.  Associated Name
#
#  The Associated Name attribute type specifies an entry in the
#  organisational DIT associated with a DNS/NRS domain.  See [3] for
#  more details of usage of this attribute.
#
#    associatedName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 38}
#
attributetype ( 0.9.2342.19200300.100.1.38 NAME 'associatedName'
	DESC 'RFC1274: DN of entry associated with domain'
	EQUALITY distinguishedNameMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

# 9.3.29.  Home postal address
#
#  The Home postal address attribute type specifies a home postal
#  address for an object.  This should be limited to up to 6 lines of 30
#  characters each.
#
#    homePostalAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            postalAddress
#            MATCHES FOR EQUALITY
#    ::= {pilotAttributeType 39}
#
attributetype ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress'
	DESC 'RFC1274: home postal address'
	EQUALITY caseIgnoreListMatch
	SUBSTR caseIgnoreListSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )

# 9.3.30.  Personal Title
#
#  The Personal Title attribute type specifies a personal title for a
#  person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev".
#
#    personalTitle ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-personal-title))
#    ::= {pilotAttributeType 40}
#
attributetype ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle'
	DESC 'RFC1274: personal title'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.31.  Mobile Telephone Number
#
#  The Mobile Telephone Number attribute type specifies a mobile
#  telephone number associated with a person.  Attribute values should
#  follow the agreed format for international telephone numbers: i.e.,
#  "+44 71 123 4567".
#
#    mobileTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 41}
#
attributetype ( 0.9.2342.19200300.100.1.41
	NAME ( 'mobile' 'mobileTelephoneNumber' )
	DESC 'RFC1274: mobile telephone number'
	EQUALITY telephoneNumberMatch
	SUBSTR telephoneNumberSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )

# 9.3.32.  Pager Telephone Number
#
#  The Pager Telephone Number attribute type specifies a pager telephone
#  number for an object. Attribute values should follow the agreed
#  format for international telephone numbers: i.e., "+44 71 123 4567".
#
#    pagerTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 42}
#
attributetype ( 0.9.2342.19200300.100.1.42
	NAME ( 'pager' 'pagerTelephoneNumber' )
	DESC 'RFC1274: pager telephone number'
	EQUALITY telephoneNumberMatch
	SUBSTR telephoneNumberSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )

# 9.3.33.  Friendly Country Name
#
#  The Friendly Country Name attribute type specifies names of countries
#  in human readable format.  The standard attribute country name must
#  be one of the two-letter codes defined in ISO 3166.
#
#    friendlyCountryName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#    ::= {pilotAttributeType 43}
#
attributetype ( 0.9.2342.19200300.100.1.43
	NAME ( 'co' 'friendlyCountryName' )
	DESC 'RFC1274: friendly country name'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

# 9.3.34.  Unique Identifier
#
#  The Unique Identifier attribute type specifies a "unique identifier"
#  for an object represented in the Directory.  The domain within which
#  the identifier is unique, and the exact semantics of the identifier,
#  are for local definition.  For a person, this might be an
#  institution-wide payroll number.  For an organisational unit, it
#  might be a department code.
#
#    uniqueIdentifier ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-unique-identifier))
#    ::= {pilotAttributeType 44}
#
attributetype ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier'
	DESC 'RFC1274: unique identifer'
	EQUALITY caseIgnoreMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.35.  Organisational Status
#
#  The Organisational Status attribute type specifies a category by
#  which a person is often referred to in an organisation.  Examples of
#  usage in academia might include undergraduate student, researcher,
#  lecturer, etc.
#
#  A Directory administrator should probably consider carefully the
#  distinctions between this and the title and userClass attributes.
#
#    organizationalStatus ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-organizational-status))
#    ::= {pilotAttributeType 45}
#
attributetype ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus'
	DESC 'RFC1274: organizational status'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.36.  Janet Mailbox
#
#  The Janet Mailbox attribute type specifies an electronic mailbox
#  attribute following the syntax specified in the Grey Book of the
#  Coloured Book series.  This attribute is intended for the convenience
#  of U.K users unfamiliar with rfc822 and little-endian mail addresses.
#  Entries using this attribute MUST also include an rfc822Mailbox
#  attribute.
#
#    janetMailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            (SIZE (1 .. ub-janet-mailbox))
#    ::= {pilotAttributeType 46}
#
attributetype ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox'
	DESC 'RFC1274: Janet mailbox'
	EQUALITY caseIgnoreIA5Match
	SUBSTR caseIgnoreIA5SubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

# 9.3.37.  Mail Preference Option
#
#  An attribute to allow users to indicate a preference for inclusion of
#  their names on mailing lists (electronic or physical).  The absence
#  of such an attribute should be interpreted as if the attribute was
#  present with value "no-list-inclusion".  This attribute should be
#  interpreted by anyone using the directory to derive mailing lists,
#  and its value respected.
#
#    mailPreferenceOption ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX ENUMERATED {
#                no-list-inclusion(0),
#                any-list-inclusion(1),  -- may be added to any lists
#                professional-list-inclusion(2)
#                                        -- may be added to lists
#                                        -- which the list provider
#                                        -- views as related to the
#                                        -- users professional inter-
#                                        -- ests, perhaps evaluated
#                                        -- from the business of the
#                                        -- organisation or keywords
#                                        -- in the entry.
#                }
#    ::= {pilotAttributeType 47}
#
attributetype ( 0.9.2342.19200300.100.1.47
	NAME 'mailPreferenceOption'
	DESC 'RFC1274: mail preference option'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

# 9.3.38.  Building Name
#
#  The Building Name attribute type specifies the name of the building
#  where an organisation or organisational unit is based.
#
#    buildingName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-building-name))
#    ::= {pilotAttributeType 48}
#
attributetype ( 0.9.2342.19200300.100.1.48 NAME 'buildingName'
	DESC 'RFC1274: name of building'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )

# 9.3.39.  DSA Quality
#
#  The DSA Quality attribute type specifies the purported quality of a
#  DSA.  It allows a DSA manager to indicate the expected level of
#  availability of the DSA. See [8] for details of the syntax.
#
#    dSAQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
#            SINGLE VALUE
#    ::= {pilotAttributeType 49}
#
attributetype ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality'
	DESC 'RFC1274: DSA Quality'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )

# 9.3.40.  Single Level Quality
#
#  The Single Level Quality attribute type specifies the purported data
#  quality at the level immediately below in the DIT.  See [8] for
#  details of the syntax.
#
#    singleLevelQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#    ::= {pilotAttributeType 50}
#
attributetype ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality'
	DESC 'RFC1274: Single Level Quality'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )

# 9.3.41.  Subtree Minimum Quality
#
#  The Subtree Minimum Quality attribute type specifies the purported
#  minimum data quality for a DIT subtree.  See [8] for more discussion
#  and details of the syntax.
#
#    subtreeMinimumQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#               -- Defaults to singleLevelQuality
#    ::= {pilotAttributeType 51}
#
attributetype ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQuality'
	DESC 'RFC1274: Subtree Minimum Quality'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )

# 9.3.42.  Subtree Maximum Quality
#
#  The Subtree Maximum Quality attribute type specifies the purported
#  maximum data quality for a DIT subtree.  See [8] for more discussion
#  and details of the syntax.
#
#    subtreeMaximumQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#               -- Defaults to singleLevelQuality
#    ::= {pilotAttributeType 52}
#
attributetype ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQuality'
	DESC 'RFC1274: Subtree Maximum Quality'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )

# 9.3.43.  Personal Signature
#
#  The Personal Signature attribute type allows for a representation of
#  a person's signature.  This should be encoded in G3 fax as explained
#  in recommendation T.4, with an ASN.1 wrapper to make it compatible
#  with an X.400 BodyPart as defined in X.420.
#
#    IMPORT  G3FacsimileBodyPart  FROM  {   mhs-motis   ipms   modules
#    information-objects }
#
#    personalSignature ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            CHOICE {
#                g3-facsimile [3] G3FacsimileBodyPart
#                }
#        (SIZE (1 .. ub-personal-signature))
#    ::= {pilotAttributeType 53}
#
attributetype ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature'
	DESC 'RFC1274: Personal Signature (G3 fax)'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.23 )

# 9.3.44.  DIT Redirect
#
#  The DIT Redirect attribute type is used to indicate that the object
#  described by one entry now has a newer entry in the DIT.  The entry
#  containing the redirection attribute should be expired after a
#  suitable grace period.  This attribute may be used when an individual
#  changes his/her place of work, and thus acquires a new organisational
#  DN.
#
#    dITRedirect ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 54}
#
attributetype ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect'
	DESC 'RFC1274: DIT Redirect'
	EQUALITY distinguishedNameMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

# 9.3.45.  Audio
#
#  The Audio attribute type allows the storing of sounds in the
#  Directory.  The attribute uses a u-law encoded sound file as used by
#  the "play" utility on a Sun 4.  This is an interim format.
#
#    audio ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            Audio
#        (SIZE (1 .. ub-audio))
#    ::= {pilotAttributeType 55}
#
attributetype ( 0.9.2342.19200300.100.1.55 NAME 'audio'
	DESC 'RFC1274: audio (u-law)'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )

# 9.3.46.  Publisher of Document
#
#
#  The Publisher of Document attribute is the person and/or organization
#  that published a document.
#
#    documentPublisher ATTRIBUTE
#            WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
#    ::= {pilotAttributeType 56}
#
attributetype ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher'
	DESC 'RFC1274: publisher of document'
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

# 9.4.  Generally useful syntaxes
#
#    caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
#            IA5String
#            MATCHES FOR EQUALITY SUBSTRINGS
#
#    iA5StringSyntax ATTRIBUTE-SYNTAX
#        IA5String
#        MATCHES FOR EQUALITY SUBSTRINGS
#
#
#    -- Syntaxes to support the DNS attributes
#
#    DNSRecordSyntax ATTRIBUTE-SYNTAX
#            IA5String
#            MATCHES FOR EQUALITY
#
#
#    NRSInformationSyntax ATTRIBUTE-SYNTAX
#            NRSInformation
#            MATCHES FOR EQUALITY
#
#
#    NRSInformation ::=  SET {
#                    [0] Context,
#                    [1] Address-space-id,
#                    routes [2] SEQUENCE OF SEQUENCE {
#                    Route-cost,
#                    Addressing-info }
#            }
#
#
# 9.5.  Upper bounds on length of attribute values
#
#
#    ub-document-identifier INTEGER ::= 256
#
#    ub-document-location INTEGER ::= 256
#
#    ub-document-title INTEGER ::= 256
#
#    ub-document-version INTEGER ::= 256
#
#    ub-favourite-drink INTEGER ::= 256
#
#    ub-host INTEGER ::= 256
#
#    ub-information INTEGER ::= 2048
#
#    ub-unique-identifier INTEGER ::= 256
#
#    ub-personal-title INTEGER ::= 256
#
#    ub-photo INTEGER ::= 250000
#
#    ub-rfc822-mailbox INTEGER ::= 256
#
#    ub-room-number INTEGER ::= 256
#
#    ub-text-or-address INTEGER ::= 256
#
#    ub-user-class INTEGER ::= 256
#
#    ub-user-identifier INTEGER ::= 256
#
#    ub-organizational-status INTEGER ::= 256
#
#    ub-janet-mailbox INTEGER ::= 256
#
#    ub-building-name INTEGER ::= 256
#
#    ub-personal-signature ::= 50000
#
#    ub-audio INTEGER ::= 250000
#

# [back to 8]
# 8.  Object Classes
#
# 8.1.  X.500 standard object classes
#
#  A number of generally useful object classes are defined in X.521, and
#  these are supported.  Refer to that document for descriptions of the
#  suggested usage of these object classes.  The ASN.1 for these object
#  classes is reproduced for completeness in Appendix C.
#
# 8.2.  X.400 standard object classes
#
#  A number of object classes defined in X.400 are supported.  Refer to
#  X.402 for descriptions of the usage of these object classes.  The
#  ASN.1 for these object classes is reproduced for completeness in
#  Appendix C.
#
# 8.3.  COSINE/Internet object classes
#
#  This section attempts to fuse together the object classes designed
#  for use in the COSINE and Internet pilot activities.  Descriptions
#  are given of the suggested usage of these object classes.  The ASN.1
#  for these object classes is also reproduced in Appendix C.
#
# 8.3.1.  Pilot Object
#
#  The PilotObject object class is used as a sub-class to allow some
#  common, useful attributes to be assigned to entries of all other
#  object classes.
#
#    pilotObject OBJECT-CLASS
#        SUBCLASS OF top
#        MAY CONTAIN {
#            info,
#            photo,
#            manager,
#            uniqueIdentifier,
#            lastModifiedTime,
#            lastModifiedBy,
#            dITRedirect,
#            audio}
#    ::= {pilotObjectClass 3}
#
#objectclass ( 0.9.2342.19200300.100.4.3 NAME 'pilotObject'
#	DESC 'RFC1274: pilot object'
#	SUP top AUXILIARY
#	MAY ( info $ photo $ manager $ uniqueIdentifier $
#		lastModifiedTime $ lastModifiedBy $ dITRedirect $ audio )
#	)

# 8.3.2.  Pilot Person
#
#  The PilotPerson object class is used as a sub-class of person, to
#  allow the use of a number of additional attributes to be assigned to
#  entries of object class person.
#
#    pilotPerson OBJECT-CLASS
#        SUBCLASS OF person
#        MAY CONTAIN {
#                    userid,
#                    textEncodedORAddress,
#                    rfc822Mailbox,
#                    favouriteDrink,
#                    roomNumber,
#                    userClass,
#                    homeTelephoneNumber,
#                    homePostalAddress,
#                    secretary,
#                    personalTitle,
#                    preferredDeliveryMethod,
#                    businessCategory,
#                    janetMailbox,
#                    otherMailbox,
#                    mobileTelephoneNumber,
#                    pagerTelephoneNumber,
#                    organizationalStatus,
#                    mailPreferenceOption,
#                    personalSignature}
#    ::= {pilotObjectClass 4}
#
objectclass ( 0.9.2342.19200300.100.4.4
	NAME ( 'pilotPerson' 'newPilotPerson' )
	SUP person STRUCTURAL
	MAY ( userid $ textEncodedORAddress $ rfc822Mailbox $
		favouriteDrink $ roomNumber $ userClass $
		homeTelephoneNumber $ homePostalAddress $ secretary $
		personalTitle $ preferredDeliveryMethod $ businessCategory $
		janetMailbox $ otherMailbox $ mobileTelephoneNumber $
		pagerTelephoneNumber $ organizationalStatus $
		mailPreferenceOption $ personalSignature )
	)

# 8.3.3.  Account
#
#  The Account object class is used to define entries representing
#  computer accounts.  The userid attribute should be used for naming
#  entries of this object class.
#
#    account OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            userid}
#        MAY CONTAIN {
#            description,
#            seeAlso,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            host}
#    ::= {pilotObjectClass 5}
#
objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account'
	SUP top STRUCTURAL
	MUST userid
	MAY ( description $ seeAlso $ localityName $
		organizationName $ organizationalUnitName $ host )
	)

# 8.3.4.  Document
#
#  The Document object class is used to define entries which represent
#  documents.
#
#    document OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            documentIdentifier}
#        MAY CONTAIN {
#            commonName,
#            description,
#            seeAlso,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            documentTitle,
#            documentVersion,
#            documentAuthor,
#            documentLocation,
#            documentPublisher}
#    ::= {pilotObjectClass 6}
#
objectclass ( 0.9.2342.19200300.100.4.6 NAME 'document'
	SUP top STRUCTURAL
	MUST documentIdentifier
	MAY ( commonName $ description $ seeAlso $ localityName $
		organizationName $ organizationalUnitName $
		documentTitle $ documentVersion $ documentAuthor $
		documentLocation $ documentPublisher )
	)

# 8.3.5.  Room
#
#  The Room object class is used to define entries representing rooms.
#  The commonName attribute should be used for naming pentries of this
#  object class.
#
#    room OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            roomNumber,
#            description,
#            seeAlso,
#            telephoneNumber}
#    ::= {pilotObjectClass 7}
#
objectclass ( 0.9.2342.19200300.100.4.7 NAME 'room'
	SUP top STRUCTURAL
	MUST commonName
	MAY ( roomNumber $ description $ seeAlso $ telephoneNumber )
	)

# 8.3.6.  Document Series
#
#  The Document Series object class is used to define an entry which
#  represents a series of documents (e.g., The Request For Comments
#  papers).
#
#    documentSeries OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            description,
#            seeAlso,
#            telephoneNumber,
#            localityName,
#            organizationName,
#            organizationalUnitName}
#    ::= {pilotObjectClass 9}
#
objectclass ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries'
	SUP top STRUCTURAL
	MUST commonName
	MAY ( description $ seeAlso $ telephonenumber $
		localityName $ organizationName $ organizationalUnitName )
	)

# 8.3.7.  Domain
#
#  The Domain object class is used to define entries which represent DNS
#  or NRS domains.  The domainComponent attribute should be used for
#  naming entries of this object class.  The usage of this object class
#  is described in more detail in [3].
#
#    domain OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            domainComponent}
#        MAY CONTAIN {
#            associatedName,
#            organizationName,
#            organizationalAttributeSet}
#    ::= {pilotObjectClass 13}
#
objectclass ( 0.9.2342.19200300.100.4.13 NAME 'domain'
	SUP top STRUCTURAL
	MUST domainComponent
	MAY ( associatedName $ organizationName $ description $
		businessCategory $ seeAlso $ searchGuide $ userPassword $
		localityName $ stateOrProvinceName $ streetAddress $
		physicalDeliveryOfficeName $ postalAddress $ postalCode $
		postOfficeBox $ streetAddress $
		facsimileTelephoneNumber $ internationalISDNNumber $
		telephoneNumber $ teletexTerminalIdentifier $ telexNumber $
		preferredDeliveryMethod $ destinationIndicator $
		registeredAddress $ x121Address )
	)

# 8.3.8.  RFC822 Local Part
#
#  The RFC822 Local Part object class is used to define entries which
#  represent the local part of RFC822 mail addresses.  This treats this
#  part of an RFC822 address as a domain.  The usage of this object
#  class is described in more detail in [3].
#
#    rFC822localPart OBJECT-CLASS
#        SUBCLASS OF domain
#        MAY CONTAIN {
#            commonName,
#            surname,
#            description,
#            seeAlso,
#            telephoneNumber,
#            postalAttributeSet,
#            telecommunicationAttributeSet}
#    ::= {pilotObjectClass 14}
#
objectclass ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart'
	SUP domain STRUCTURAL
	MAY ( commonName $ surname $ description $ seeAlso $ telephoneNumber $
		physicalDeliveryOfficeName $ postalAddress $ postalCode $
		postOfficeBox $ streetAddress $
		facsimileTelephoneNumber $ internationalISDNNumber $
		telephoneNumber $ teletexTerminalIdentifier $
		telexNumber $ preferredDeliveryMethod $ destinationIndicator $
		registeredAddress $ x121Address )
	)

# 8.3.9.  DNS Domain
#
#  The DNS Domain (Domain NameServer) object class is used to define
#  entries for DNS domains.  The usage of this object class is described
#  in more detail in [3].
#
#    dNSDomain OBJECT-CLASS
#        SUBCLASS OF domain
#        MAY CONTAIN {
#            ARecord,
#            MDRecord,
#            MXRecord,
#            NSRecord,
#            SOARecord,
#            CNAMERecord}
#    ::= {pilotObjectClass 15}
#
objectclass ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain'
	SUP domain STRUCTURAL
	MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $
		SOARecord $ CNAMERecord )
	)

# 8.3.10.  Domain Related Object
#
#  The Domain Related Object object class is used to define entries
#  which represent DNS/NRS domains which are "equivalent" to an X.500
#  domain: e.g., an organisation or organisational unit.  The usage of
#  this object class is described in more detail in [3].
#
#    domainRelatedObject OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            associatedDomain}
#    ::= {pilotObjectClass 17}
#
objectclass ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject'
	DESC 'RFC1274: an object related to an domain'
	SUP top AUXILIARY
	MUST associatedDomain )

# 8.3.11.  Friendly Country
#
#  The Friendly Country object class is used to define country entries
#  in the DIT.  The object class is used to allow friendlier naming of
#  countries than that allowed by the object class country.  The naming
#  attribute of object class country, countryName, has to be a 2 letter
#  string defined in ISO 3166.
#
#    friendlyCountry OBJECT-CLASS
#        SUBCLASS OF country
#        MUST CONTAIN {
#            friendlyCountryName}
#    ::= {pilotObjectClass 18}
#
objectclass ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry'
	SUP country STRUCTURAL
	MUST friendlyCountryName )

# 8.3.12.  Simple Security Object
#
#  The Simple Security Object object class is used to allow an entry to
#  have a userPassword attribute when an entry's principal object
#  classes do not allow userPassword as an attribute type.
#
#    simpleSecurityObject OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            userPassword }
#    ::= {pilotObjectClass 19}
#
## (in core.schema)
## objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
##	SUP top AUXILIARY
##	MUST userPassword )

# 8.3.13.  Pilot Organization
#
#  The PilotOrganization object class is used as a sub-class of
#  organization and organizationalUnit to allow a number of additional
#  attributes to be assigned to entries of object classes organization
#  and organizationalUnit.
#
#    pilotOrganization OBJECT-CLASS
#        SUBCLASS OF organization, organizationalUnit
#        MAY CONTAIN {
#                    buildingName}
#    ::= {pilotObjectClass 20}
#
objectclass ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization'
	SUP ( organization $ organizationalUnit ) STRUCTURAL
	MAY buildingName )

# 8.3.14.  Pilot DSA
#
#  The PilotDSA object class is used as a sub-class of the dsa object
#  class to allow additional attributes to be assigned to entries for
#  DSAs.
#
#    pilotDSA OBJECT-CLASS
#        SUBCLASS OF dsa
#        MUST CONTAIN {
#            dSAQuality}
#    ::= {pilotObjectClass 21}
#
objectclass ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA'
	SUP dsa STRUCTURAL
	MAY dSAQuality )

# 8.3.15.  Quality Labelled Data
#
#  The Quality Labelled Data object class is used to allow the
#  assignment of the data quality attributes to subtrees in the DIT.
#
#  See [8] for more details.
#
#    qualityLabelledData OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            dSAQuality}
#        MAY CONTAIN {
#            subtreeMinimumQuality,
#            subtreeMaximumQuality}
#    ::= {pilotObjectClass 22}
objectclass ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData'
	SUP top AUXILIARY
	MUST dsaQuality
	MAY ( subtreeMinimumQuality $ subtreeMaximumQuality )
	)


# References
#
#    [1]  CCITT/ISO, "X.500, The Directory - overview of concepts,
#         models and services, CCITT /ISO IS 9594.
#
#    [2]  Kille, S., "The THORN and RARE X.500 Naming Architecture, in
#         University College London, Department of Computer Science
#         Research Note 89/48, May 1989.
#
#    [3]  Kille, S., "X.500 and Domains", RFC 1279, University College
#         London, November 1991.
#
#    [4]  Rose, M., "PSI/NYSERNet White Pages Pilot Project: Status
#         Report", Technical Report 90-09-10-1, published by NYSERNet
#         Inc, 1990.
#
#    [5]  Craigie, J., "UK Academic Community Directory Service Pilot
#         Project, pp. 305-310 in Computer Networks and ISDN Systems
#         17 (1989), published by North Holland.
#
#    [6]  Mockapetris, P., "Domain Names - Concepts and Facilities",
#         RFC 1034, USC/Information Sciences Institute, November 1987.
#
#    [7]  Mockapetris, P., "Domain Names - Implementation and
#         Specification, RFC 1035, USC/Information Sciences Institute,
#         November 1987.
#
#    [8]  Kille, S., "Handling QOS (Quality of service) in the
#         Directory," publication in process, March 1991.
#
#
# APPENDIX C - Summary of all Object Classes and Attribute Types
#
#    -- Some Important Object Identifiers
#
#    data OBJECT IDENTIFIER ::= {ccitt 9}
#    pss OBJECT IDENTIFIER ::= {data 2342}
#    ucl OBJECT IDENTIFIER ::= {pss 19200300}
#    pilot OBJECT IDENTIFIER ::= {ucl 100}
#
#    pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
#    pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
#    pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
#    pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
#
#    iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
#    caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
#                                          {pilotAttributeSyntax 5}
#
#    -- Standard Object Classes
#
#    top OBJECT-CLASS
#        MUST CONTAIN {
#            objectClass}
#    ::= {objectClass 0}
#
#
#    alias OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            aliasedObjectName}
#    ::= {objectClass 1}
#
#
#    country OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            countryName}
#        MAY CONTAIN {
#            description,
#            searchGuide}
#    ::= {objectClass 2}
#
#
#    locality OBJECT-CLASS
#        SUBCLASS OF top
#        MAY CONTAIN {
#            description,
#            localityName,
#            stateOrProvinceName,
#            searchGuide,
#            seeAlso,
#            streetAddress}
#    ::= {objectClass 3}
#
#
#    organization OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            organizationName}
#        MAY CONTAIN {
#            organizationalAttributeSet}
#    ::= {objectClass 4}
#
#
#    organizationalUnit OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            organizationalUnitName}
#        MAY CONTAIN {
#            organizationalAttributeSet}
#    ::= {objectClass 5}
#
#
#    person OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName,
#            surname}
#        MAY CONTAIN {
#            description,
#            seeAlso,
#            telephoneNumber,
#            userPassword}
#    ::= {objectClass 6}
#
#
#    organizationalPerson OBJECT-CLASS
#        SUBCLASS OF person
#        MAY CONTAIN {
#            localeAttributeSet,
#            organizationalUnitName,
#            postalAttributeSet,
#            telecommunicationAttributeSet,
#            title}
#    ::= {objectClass 7}
#
#
#    organizationalRole OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            description,
#            localeAttributeSet,
#            organizationalUnitName,
#            postalAttributeSet,
#            preferredDeliveryMethod,
#            roleOccupant,
#            seeAlso,
#            telecommunicationAttributeSet}
#    ::= {objectClass 8}
#
#
#    groupOfNames OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName,
#            member}
#        MAY CONTAIN {
#            description,
#            organizationName,
#            organizationalUnitName,
#            owner,
#            seeAlso,
#            businessCategory}
#    ::= {objectClass 9}
#
#
#    residentialPerson OBJECT-CLASS
#        SUBCLASS OF person
#        MUST CONTAIN {
#            localityName}
#        MAY CONTAIN {
#            localeAttributeSet,
#            postalAttributeSet,
#            preferredDeliveryMethod,
#            telecommunicationAttributeSet,
#            businessCategory}
#    ::= {objectClass 10}
#
#
#    applicationProcess OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            description,
#            localityName,
#            organizationalUnitName,
#            seeAlso}
#    ::= {objectClass 11}
#
#
#    applicationEntity OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName,
#            presentationAddress}
#        MAY CONTAIN {
#            description,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            seeAlso,
#            supportedApplicationContext}
#    ::= {objectClass 12}
#
#
#    dSA OBJECT-CLASS
#        SUBCLASS OF applicationEntity
#        MAY CONTAIN {
#            knowledgeInformation}
#    ::= {objectClass 13}
#
#
#    device OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            description,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            owner,
#            seeAlso,
#            serialNumber}
#    ::= {objectClass 14}
#
#
#    strongAuthenticationUser OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            userCertificate}
#    ::= {objectClass 15}
#
#
#    certificationAuthority OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            cACertificate,
#            certificateRevocationList,
#            authorityRevocationList}
#        MAY CONTAIN {
#            crossCertificatePair}
#    ::= {objectClass 16}
#
#    -- Standard MHS Object Classes
#
#    mhsDistributionList OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName,
#            mhsDLSubmitPermissions,
#            mhsORAddresses}
#        MAY CONTAIN {
#            description,
#            organizationName,
#            organizationalUnitName,
#            owner,
#            seeAlso,
#            mhsDeliverableContentTypes,
#            mhsdeliverableEits,
#            mhsDLMembers,
#            mhsPreferredDeliveryMethods}
#    ::= {mhsObjectClass 0}
#
#
#    mhsMessageStore OBJECT-CLASS
#        SUBCLASS OF applicationEntity
#        MAY CONTAIN {
#            description,
#            owner,
#            mhsSupportedOptionalAttributes,
#            mhsSupportedAutomaticActions,
#            mhsSupportedContentTypes}
#    ::= {mhsObjectClass 1}
#
#
#    mhsMessageTransferAgent OBJECT-CLASS
#        SUBCLASS OF applicationEntity
#        MAY CONTAIN {
#            description,
#            owner,
#            mhsDeliverableContentLength}
#    ::= {mhsObjectClass 2}
#
#
#    mhsOrganizationalUser OBJECT-CLASS
#        SUBCLASS OF organizationalPerson
#        MUST CONTAIN {
#            mhsORAddresses}
#        MAY CONTAIN {
#            mhsDeliverableContentLength,
#            mhsDeliverableContentTypes,
#            mhsDeliverableEits,
#            mhsMessageStoreName,
#            mhsPreferredDeliveryMethods }
#    ::= {mhsObjectClass 3}
#
#
#    mhsResidentialUser OBJECT-CLASS
#        SUBCLASS OF residentialPerson
#        MUST CONTAIN {
#            mhsORAddresses}
#        MAY CONTAIN {
#            mhsDeliverableContentLength,
#            mhsDeliverableContentTypes,
#            mhsDeliverableEits,
#            mhsMessageStoreName,
#            mhsPreferredDeliveryMethods }
#    ::= {mhsObjectClass 4}
#
#
#    mhsUserAgent OBJECT-CLASS
#        SUBCLASS OF applicationEntity
#        MAY CONTAIN {
#            mhsDeliverableContentLength,
#            mhsDeliverableContentTypes,
#            mhsDeliverableEits,
#            mhsORAddresses,
#            owner}
#    ::= {mhsObjectClass 5}
#
#
#
#
#    -- Pilot Object Classes
#
#    pilotObject OBJECT-CLASS
#        SUBCLASS OF top
#        MAY CONTAIN {
#            info,
#            photo,
#            manager,
#            uniqueIdentifier,
#            lastModifiedTime,
#            lastModifiedBy,
#            dITRedirect,
#            audio}
#    ::= {pilotObjectClass 3}
#    pilotPerson OBJECT-CLASS
#        SUBCLASS OF person
#        MAY CONTAIN {
#                    userid,
#                    textEncodedORAddress,
#                    rfc822Mailbox,
#                    favouriteDrink,
#                    roomNumber,
#                    userClass,
#                    homeTelephoneNumber,
#                    homePostalAddress,
#                    secretary,
#                    personalTitle,
#                    preferredDeliveryMethod,
#                    businessCategory,
#                    janetMailbox,
#                    otherMailbox,
#                    mobileTelephoneNumber,
#                    pagerTelephoneNumber,
#                    organizationalStatus,
#                    mailPreferenceOption,
#                    personalSignature}
#    ::= {pilotObjectClass 4}
#
#
#    account OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            userid}
#        MAY CONTAIN {
#            description,
#            seeAlso,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            host}
#    ::= {pilotObjectClass 5}
#
#
#    document OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            documentIdentifier}
#        MAY CONTAIN {
#            commonName,
#            description,
#            seeAlso,
#            localityName,
#            organizationName,
#            organizationalUnitName,
#            documentTitle,
#            documentVersion,
#            documentAuthor,
#            documentLocation,
#            documentPublisher}
#    ::= {pilotObjectClass 6}
#
#
#    room OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            roomNumber,
#            description,
#            seeAlso,
#            telephoneNumber}
#    ::= {pilotObjectClass 7}
#
#
#    documentSeries OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            commonName}
#        MAY CONTAIN {
#            description,
#            seeAlso,
#            telephoneNumber,
#            localityName,
#            organizationName,
#            organizationalUnitName}
#    ::= {pilotObjectClass 9}
#
#
#    domain OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            domainComponent}
#        MAY CONTAIN {
#            associatedName,
#            organizationName,
#            organizationalAttributeSet}
#    ::= {pilotObjectClass 13}
#
#
#    rFC822localPart OBJECT-CLASS
#        SUBCLASS OF domain
#        MAY CONTAIN {
#            commonName,
#            surname,
#            description,
#            seeAlso,
#            telephoneNumber,
#            postalAttributeSet,
#            telecommunicationAttributeSet}
#    ::= {pilotObjectClass 14}
#
#
#    dNSDomain OBJECT-CLASS
#        SUBCLASS OF domain
#        MAY CONTAIN {
#            ARecord,
#            MDRecord,
#            MXRecord,
#            NSRecord,
#            SOARecord,
#            CNAMERecord}
#    ::= {pilotObjectClass 15}
#
#
#    domainRelatedObject OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            associatedDomain}
#    ::= {pilotObjectClass 17}
#
#
#    friendlyCountry OBJECT-CLASS
#        SUBCLASS OF country
#        MUST CONTAIN {
#            friendlyCountryName}
#    ::= {pilotObjectClass 18}
#
#
#    simpleSecurityObject OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            userPassword }
#    ::= {pilotObjectClass 19}
#
#
#    pilotOrganization OBJECT-CLASS
#        SUBCLASS OF organization, organizationalUnit
#        MAY CONTAIN {
#                    buildingName}
#    ::= {pilotObjectClass 20}
#
#
#    pilotDSA OBJECT-CLASS
#        SUBCLASS OF dsa
#        MUST CONTAIN {
#            dSAQuality}
#    ::= {pilotObjectClass 21}
#
#
#    qualityLabelledData OBJECT-CLASS
#        SUBCLASS OF top
#        MUST CONTAIN {
#            dSAQuality}
#        MAY CONTAIN {
#            subtreeMinimumQuality,
#            subtreeMaximumQuality}
#    ::= {pilotObjectClass 22}
#
#
#
#
#    -- Standard Attribute Types
#
#    objectClass ObjectClass
#        ::= {attributeType 0}
#
#
#    aliasedObjectName AliasedObjectName
#        ::= {attributeType 1}
#
#
#    knowledgeInformation ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreString
#        ::= {attributeType 2}
#
#
#    commonName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-common-name))
#        ::= {attributeType 3}
#
#
#    surname ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-surname))
#        ::= {attributeType 4}
#
#
#    serialNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX printableStringSyntax
#        (SIZE (1..ub-serial-number))
#        ::= {attributeType 5}
#
#
#    countryName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX PrintableString
#        (SIZE (1..ub-country-code))
#        SINGLE VALUE
#        ::= {attributeType 6}
#
#
#    localityName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-locality-name))
#        ::= {attributeType 7}
#
#
#    stateOrProvinceName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-state-name))
#        ::= {attributeType 8}
#
#
#    streetAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-street-address))
#        ::= {attributeType 9}
#
#
#    organizationName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-organization-name))
#        ::= {attributeType 10}
#
#
#    organizationalUnitName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-organizational-unit-name))
#        ::= {attributeType 11}
#
#
#    title ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-title))
#        ::= {attributeType 12}
#
#
#    description ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-description))
#        ::= {attributeType 13}
#
#
#    searchGuide ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX Guide
#        ::= {attributeType 14}
#
#
#    businessCategory ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-business-category))
#        ::= {attributeType 15}
#
#
#    postalAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX PostalAddress
#        MATCHES FOR EQUALITY
#        ::= {attributeType 16}
#
#
#    postalCode ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-postal-code))
#        ::= {attributeType 17}
#
#
#    postOfficeBox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-post-office-box))
#        ::= {attributeType 18}
#
#
#    physicalDeliveryOfficeName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
#        (SIZE (1..ub-physical-office-name))
#        ::= {attributeType 19}
#
#
#    telephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX telephoneNumberSyntax
#        (SIZE (1..ub-telephone-number))
#        ::= {attributeType 20}
#
#
#    telexNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX TelexNumber
#        (SIZE (1..ub-telex))
#        ::= {attributeType 21}
#
#
#    teletexTerminalIdentifier ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX TeletexTerminalIdentifier
#        (SIZE (1..ub-teletex-terminal-id))
#        ::= {attributeType 22}
#
#
#    facsimileTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX FacsimileTelephoneNumber
#        ::= {attributeType 23}
#
#
#    x121Address ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX NumericString
#        (SIZE (1..ub-x121-address))
#        ::= {attributeType 24}
#
#
#    internationaliSDNNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX NumericString
#        (SIZE (1..ub-isdn-address))
#        ::= {attributeType 25}
#
#
#    registeredAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX PostalAddress
#        ::= {attributeType 26}
#
#
#    destinationIndicator ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX PrintableString
#        (SIZE (1..ub-destination-indicator))
#        MATCHES FOR EQUALITY SUBSTRINGS
#        ::= {attributeType 27}
#
#
#    preferredDeliveryMethod ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX deliveryMethod
#        ::= {attributeType 28}
#
#
#    presentationAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX PresentationAddress
#        MATCHES FOR EQUALITY
#        ::= {attributeType 29}
#
#
#    supportedApplicationContext ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX objectIdentifierSyntax
#        ::= {attributeType 30}
#
#
#    member ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
#        ::= {attributeType 31}
#
#
#    owner ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
#        ::= {attributeType 32}
#
#
#    roleOccupant ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
#        ::= {attributeType 33}
#
#
#    seeAlso ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
#        ::= {attributeType 34}
#
#
#    userPassword ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX Userpassword
#        ::= {attributeType 35}
#
#
#    userCertificate ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX UserCertificate
#        ::= {attributeType 36}
#
#
#    cACertificate ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX cACertificate
#        ::= {attributeType 37}
#
#
#    authorityRevocationList ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX AuthorityRevocationList
#        ::= {attributeType 38}
#
#
#    certificateRevocationList ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX CertificateRevocationList
#        ::= {attributeType 39}
#
#
#    crossCertificatePair ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX CrossCertificatePair
#        ::= {attributeType 40}
#
#
#
#
#    -- Standard MHS Attribute Types
#
#    mhsDeliverableContentLength ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX integer
#        ::= {mhsAttributeType 0}
#
#
#    mhsDeliverableContentTypes ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oID
#        ::= {mhsAttributeType 1}
#
#
#    mhsDeliverableEits ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oID
#        ::= {mhsAttributeType 2}
#
#
#    mhsDLMembers ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oRName
#        ::= {mhsAttributeType 3}
#
#
#    mhsDLSubmitPermissions ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX dLSubmitPermission
#        ::= {mhsAttributeType 4}
#
#
#    mhsMessageStoreName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX dN
#        ::= {mhsAttributeType 5}
#
#
#    mhsORAddresses ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oRAddress
#        ::= {mhsAttributeType 6}
#
#
#    mhsPreferredDeliveryMethods ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX deliveryMethod
#        ::= {mhsAttributeType 7}
#
#
#    mhsSupportedAutomaticActions ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oID
#        ::= {mhsAttributeType 8}
#
#
#    mhsSupportedContentTypes ATTRIBUTE
#
#        WITH ATTRIBUTE-SYNTAX oID
#        ::= {mhsAttributeType 9}
#
#
#    mhsSupportedOptionalAttributes ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX oID
#        ::= {mhsAttributeType 10}
#
#
#
#
#    -- Pilot Attribute Types
#
#    userid ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-user-identifier))
#    ::= {pilotAttributeType 1}
#
#
#    textEncodedORAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#        (SIZE (1 .. ub-text-encoded-or-address))
#    ::= {pilotAttributeType 2}
#
#
#    rfc822Mailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            (SIZE (1 .. ub-rfc822-mailbox))
#    ::= {pilotAttributeType 3}
#
#
#    info ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-information))
#    ::= {pilotAttributeType 4}
#
#
#    favouriteDrink ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-favourite-drink))
#    ::= {pilotAttributeType 5}
#
#
#    roomNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-room-number))
#    ::= {pilotAttributeType 6}
#
#
#    photo ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            CHOICE {
#                g3-facsimile [3] G3FacsimileBodyPart
#                }
#        (SIZE (1 .. ub-photo))
#    ::= {pilotAttributeType 7}
#
#
#    userClass ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-user-class))
#    ::= {pilotAttributeType 8}
#
#
#    host ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-host))
#    ::= {pilotAttributeType 9}
#
#
#    manager ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 10}
#
#
#    documentIdentifier ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-identifier))
#    ::= {pilotAttributeType 11}
#
#
#    documentTitle ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#        (SIZE (1 .. ub-document-title))
#    ::= {pilotAttributeType 12}
#
#
#    documentVersion ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-version))
#    ::= {pilotAttributeType 13}
#
#
#    documentAuthor ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 14}
#
#
#    documentLocation ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-document-location))
#    ::= {pilotAttributeType 15}
#
#
#    homeTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 20}
#
#
#    secretary ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 21}
#
#
#    otherMailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            SEQUENCE {
#                    mailboxType PrintableString, -- e.g. Telemail
#                    mailbox IA5String  -- e.g. X378:Joe
#            }
#    ::= {pilotAttributeType 22}
#
#
#    lastModifiedTime ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            uTCTimeSyntax
#    ::= {pilotAttributeType 23}
#
#
#    lastModifiedBy ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 24}
#
#
#    domainComponent ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            SINGLE VALUE
#    ::= {pilotAttributeType 25}
#
#
#    aRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 26}
#
#
#    mXRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 28}
#
#
#    nSRecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 29}
#
#    sOARecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            DNSRecordSyntax
#    ::= {pilotAttributeType 30}
#
#
#    cNAMERecord ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            iA5StringSyntax
#    ::= {pilotAttributeType 31}
#
#
#    associatedDomain ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#    ::= {pilotAttributeType 37}
#
#
#    associatedName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 38}
#
#
#    homePostalAddress ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            postalAddress
#            MATCHES FOR EQUALITY
#    ::= {pilotAttributeType 39}
#
#
#    personalTitle ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-personal-title))
#    ::= {pilotAttributeType 40}
#
#
#    mobileTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 41}
#
#
#    pagerTelephoneNumber ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            telephoneNumberSyntax
#    ::= {pilotAttributeType 42}
#
#
#    friendlyCountryName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#    ::= {pilotAttributeType 43}
#
#
#    uniqueIdentifier ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-unique-identifier))
#    ::= {pilotAttributeType 44}
#
#
#    organizationalStatus ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-organizational-status))
#    ::= {pilotAttributeType 45}
#
#
#    janetMailbox ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreIA5StringSyntax
#            (SIZE (1 .. ub-janet-mailbox))
#    ::= {pilotAttributeType 46}
#
#
#    mailPreferenceOption ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX ENUMERATED {
#                no-list-inclusion(0),
#                any-list-inclusion(1),  -- may be added to any lists
#                professional-list-inclusion(2)
#                                        -- may be added to lists
#                                        -- which the list provider
#                                        -- views as related to the
#                                        -- users professional inter-
#                                        -- ests, perhaps evaluated
#                                        -- from the business of the
#                                        -- organisation or keywords
#                                        -- in the entry.
#                }
#    ::= {pilotAttributeType 47}
#
#
#    buildingName ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            caseIgnoreStringSyntax
#            (SIZE (1 .. ub-building-name))
#    ::= {pilotAttributeType 48}
#
#
#    dSAQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
#            SINGLE VALUE
#    ::= {pilotAttributeType 49}
#
#
#    singleLevelQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#
#
#    subtreeMinimumQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#               -- Defaults to singleLevelQuality
#    ::= {pilotAttributeType 51}
#
#
#    subtreeMaximumQuality ATTRIBUTE
#            WITH ATTRIBUTE-SYNTAX DataQualitySyntax
#            SINGLE VALUE
#               -- Defaults to singleLevelQuality
#    ::= {pilotAttributeType 52}
#
#
#    personalSignature ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            CHOICE {
#                g3-facsimile [3] G3FacsimileBodyPart
#                }
#        (SIZE (1 .. ub-personal-signature))
#    ::= {pilotAttributeType 53}
#
#
#    dITRedirect ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            distinguishedNameSyntax
#    ::= {pilotAttributeType 54}
#
#
#    audio ATTRIBUTE
#        WITH ATTRIBUTE-SYNTAX
#            Audio
#        (SIZE (1 .. ub-audio))
#    ::= {pilotAttributeType 55}
#
#    documentPublisher ATTRIBUTE
#            WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
#    ::= {pilotAttributeType 56}
#
#
#
#    -- Generally useful syntaxes
#
#
#    caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
#            IA5String
#            MATCHES FOR EQUALITY SUBSTRINGS
#
#
#    iA5StringSyntax ATTRIBUTE-SYNTAX
#        IA5String
#        MATCHES FOR EQUALITY SUBSTRINGS
#
#
#    -- Syntaxes to support the DNS attributes
#
#    DNSRecordSyntax ATTRIBUTE-SYNTAX
#            IA5String
#            MATCHES FOR EQUALITY
#
#
#    NRSInformationSyntax ATTRIBUTE-SYNTAX
#            NRSInformation
#            MATCHES FOR EQUALITY
#
#
#    NRSInformation ::=  SET {
#                    [0] Context,
#                    [1] Address-space-id,
#                    routes [2] SEQUENCE OF SEQUENCE {
#                    Route-cost,
#                    Addressing-info }
#            }
#
#
#    -- Upper bounds on length of attribute values
#
#
#    ub-document-identifier INTEGER ::= 256
#
#    ub-document-location INTEGER ::= 256
#
#    ub-document-title INTEGER ::= 256
#
#    ub-document-version INTEGER ::= 256
#
#    ub-favourite-drink INTEGER ::= 256
#
#    ub-host INTEGER ::= 256
#
#    ub-information INTEGER ::= 2048
#
#    ub-unique-identifier INTEGER ::= 256
#
#    ub-personal-title INTEGER ::= 256
#
#    ub-photo INTEGER ::= 250000
#
#    ub-rfc822-mailbox INTEGER ::= 256
#
#    ub-room-number INTEGER ::= 256
#
#    ub-text-or-address INTEGER ::= 256
#
#    ub-user-class INTEGER ::= 256
#
#    ub-user-identifier INTEGER ::= 256
#
#    ub-organizational-status INTEGER ::= 256
#
#    ub-janet-mailbox INTEGER ::= 256
#
#    ub-building-name INTEGER ::= 256
#
#    ub-personal-signature ::= 50000
#
#    ub-audio INTEGER ::= 250000
#
# [remainder of memo trimmed]