-- Module SchemaAdministration (X.501:10/2012)
-- See also ITU-T X.501 (10/2012)
-- See also the index of all ASN.1 assignments needed in this document

SchemaAdministration {joint-iso-itu-t ds(5) module(1) schemaAdministration(23)
  7} DEFINITIONS ::=
BEGIN

-- EXPORTS All 
-- The types and values defined in this module are exported for use in the other ASN.1
-- modules contained within the Directory Specifications, and for the use of other
-- applications which will use them to access Directory services. Other applications may
-- use them for their own purposes, but this will not constrain extensions and
-- modifications needed to maintain or improve the Directory service.
IMPORTS
  -- from Rec. ITU-T X.501 | ISO/IEC 9594-2
  id-soa, id-soc, informationFramework, ldapSystemSchema,
    selectedAttributeTypes
    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
      usefulDefinitions(0) 7}
  ATTRIBUTE, AttributeUsage, CONTEXT, DITContentRule, DITStructureRule,
    MATCHING-RULE, NAME-FORM, OBJECT-CLASS, ObjectClassKind,
    objectIdentifierMatch, SYNTAX-NAME
    FROM InformationFramework informationFramework
  ldapSyntaxes
    FROM LdapSystemSchema ldapSystemSchema
  -- from Rec. ITU-T X.520 | ISO/IEC 9594-6
  attributeTypeDescription, dITContentRuleDescription,
    dITStructureRuleDescription, integer, integerFirstComponentMatch,
    integerMatch, matchingRuleDescription, matchingRuleUseDescription,
    nameFormDescription, objectClassDescription,
    objectIdentifierFirstComponentMatch, oid, UnboundedDirectoryString
    FROM SelectedAttributeTypes selectedAttributeTypes;

subschema OBJECT-CLASS ::= {
  KIND         auxiliary
  MAY CONTAIN
    {dITStructureRules | nameForms | dITContentRules | objectClasses |
      attributeTypes | friends | contextTypes | dITContextUse | matchingRules |
      matchingRuleUse | ldapSyntaxes}
  LDAP-NAME    {"subschema"}
  ID           id-soc-subschema
}

dITStructureRules ATTRIBUTE ::= {
  WITH SYNTAX             DITStructureRuleDescription
  EQUALITY MATCHING RULE  integerFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             dITStructureRuleDescription.&id
  LDAP-NAME               {"dITStructureRules"}
  ID                      id-soa-dITStructureRule
}

DITStructureRuleDescription ::= SEQUENCE {
  COMPONENTS OF DITStructureRule,
  name         [1]  SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  ...
}

dITContentRules ATTRIBUTE ::= {
  WITH SYNTAX             DITContentRuleDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             dITContentRuleDescription.&id
  LDAP-NAME               {"dITContentRules"}
  ID                      id-soa-dITContentRules
}

DITContentRuleDescription ::= SEQUENCE {
  COMPONENTS OF DITContentRule,
  name         [4]  SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  ...
}

matchingRules ATTRIBUTE ::= {
  WITH SYNTAX             MatchingRuleDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             matchingRuleDescription.&id
  LDAP-NAME               {"matchingRules"}
  ID                      id-soa-matchingRules
}

MatchingRuleDescription ::= SEQUENCE {
  identifier   MATCHING-RULE.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  UnboundedDirectoryString OPTIONAL,
  -- describes the ASN.1 syntax
  ...
}

attributeTypes ATTRIBUTE ::= {
  WITH SYNTAX             AttributeTypeDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             attributeTypeDescription.&id
  LDAP-NAME               {"attributeTypes"}
  ID                      id-soa-attributeTypes
}

AttributeTypeDescription ::= SEQUENCE {
  identifier   ATTRIBUTE.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  AttributeTypeInformation,
  ...
}

AttributeTypeInformation ::= SEQUENCE {
  derivation       [0]  ATTRIBUTE.&id OPTIONAL,
  equalityMatch    [1]  MATCHING-RULE.&id OPTIONAL,
  orderingMatch    [2]  MATCHING-RULE.&id OPTIONAL,
  substringsMatch  [3]  MATCHING-RULE.&id OPTIONAL,
  attributeSyntax  [4]  UnboundedDirectoryString OPTIONAL,
  multi-valued     [5]  BOOLEAN DEFAULT TRUE,
  collective       [6]  BOOLEAN DEFAULT FALSE,
  userModifiable   [7]  BOOLEAN DEFAULT TRUE,
  application      AttributeUsage DEFAULT userApplications,
  ...
}

objectClasses ATTRIBUTE ::= {
  WITH SYNTAX             ObjectClassDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             objectClassDescription.&id
  LDAP-NAME               {"objectClasses"}
  ID                      id-soa-objectClasses
}

ObjectClassDescription ::= SEQUENCE {
  identifier   OBJECT-CLASS.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  ObjectClassInformation,
  ...
}

ObjectClassInformation ::= SEQUENCE {
  subclassOf   SET SIZE (1..MAX) OF OBJECT-CLASS.&id OPTIONAL,
  kind         ObjectClassKind DEFAULT structural,
  mandatories  [3]  SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL,
  optionals    [4]  SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL,
  ...
}

nameForms ATTRIBUTE ::= {
  WITH SYNTAX             NameFormDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             nameFormDescription.&id
  LDAP-NAME               {"nameForms"}
  ID                      id-soa-nameForms
}

NameFormDescription ::= SEQUENCE {
  identifier   NAME-FORM.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  NameFormInformation,
  ...
}

NameFormInformation ::= SEQUENCE {
  subordinate        OBJECT-CLASS.&id,
  namingMandatories  SET OF ATTRIBUTE.&id,
  namingOptionals    SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL,
  ...
}

matchingRuleUse ATTRIBUTE ::= {
  WITH SYNTAX             MatchingRuleUseDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  LDAP-SYNTAX             matchingRuleUseDescription.&id
  LDAP-NAME               {"matchingRuleUse"}
  ID                      id-soa-matchingRuleUse
}

MatchingRuleUseDescription ::= SEQUENCE {
  identifier   MATCHING-RULE.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  SET OF ATTRIBUTE.&id,
  ...
}

structuralObjectClass ATTRIBUTE ::= {
  WITH SYNTAX             OBJECT IDENTIFIER
  EQUALITY MATCHING RULE  objectIdentifierMatch
  SINGLE VALUE            TRUE
  NO USER MODIFICATION    TRUE
  USAGE                   directoryOperation
  LDAP-SYNTAX             oid.&id
  LDAP-NAME               {"structuralObjectClass"}
  ID                      id-soa-structuralObjectClass
}

governingStructureRule ATTRIBUTE ::= {
  WITH SYNTAX             INTEGER
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  NO USER MODIFICATION    TRUE
  USAGE                   directoryOperation
  LDAP-SYNTAX             integer.&id
  LDAP-NAME               {"governingStructureRule"}
  ID                      id-soa-governingStructureRule
}

contextTypes ATTRIBUTE ::= {
  WITH SYNTAX             ContextDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  ID                      id-soa-contextTypes
}

ContextDescription ::= SEQUENCE {
  identifier   CONTEXT.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  ContextInformation,
  ...
}

ContextInformation ::= SEQUENCE {
  syntax           UnboundedDirectoryString,
  assertionSyntax  UnboundedDirectoryString OPTIONAL,
  ...
}

dITContextUse ATTRIBUTE ::= {
  WITH SYNTAX             DITContextUseDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  ID                      id-soa-dITContextUse
}

DITContextUseDescription ::= SEQUENCE {
  identifier   ATTRIBUTE.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  information  [0]  DITContextUseInformation,
  ...
}

DITContextUseInformation ::= SEQUENCE {
  mandatoryContexts  [1]  SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL,
  optionalContexts   [2]  SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL,
  ...
}

friends ATTRIBUTE ::= {
  WITH SYNTAX             FriendsDescription
  EQUALITY MATCHING RULE  objectIdentifierFirstComponentMatch
  USAGE                   directoryOperation
  ID                      id-soa-friends
}

FriendsDescription ::= SEQUENCE {
  anchor       ATTRIBUTE.&id,
  name         SET SIZE (1..MAX) OF UnboundedDirectoryString OPTIONAL,
  description  UnboundedDirectoryString OPTIONAL,
  obsolete     BOOLEAN DEFAULT FALSE,
  friends      [0]  SET SIZE (1..MAX) OF ATTRIBUTE.&id,
  ...
}

-- object identifier assignments 
-- schema object classes 
id-soc-subschema OBJECT IDENTIFIER ::=
  {id-soc 1}

-- schema operational attributes 
id-soa-dITStructureRule OBJECT IDENTIFIER ::=
  {id-soa 1}

id-soa-dITContentRules OBJECT IDENTIFIER ::= {id-soa 2}

id-soa-matchingRules OBJECT IDENTIFIER ::= {id-soa 4}

id-soa-attributeTypes OBJECT IDENTIFIER ::= {id-soa 5}

id-soa-objectClasses OBJECT IDENTIFIER ::= {id-soa 6}

id-soa-nameForms OBJECT IDENTIFIER ::= {id-soa 7}

id-soa-matchingRuleUse OBJECT IDENTIFIER ::= {id-soa 8}

id-soa-structuralObjectClass OBJECT IDENTIFIER ::= {id-soa 9}

id-soa-governingStructureRule OBJECT IDENTIFIER ::= {id-soa 10}

id-soa-contextTypes OBJECT IDENTIFIER ::= {id-soa 11}

id-soa-dITContextUse OBJECT IDENTIFIER ::= {id-soa 12}

id-soa-friends OBJECT IDENTIFIER ::= {id-soa 13}

END -- SchemaAdministration
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D