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

SchemaAdministration {joint-iso-itu-t ds(5) module(1) schemaAdministration(23)
  6} 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 ITU-T Rec. X.501 | ISO/IEC 9594-2
  id-soa, id-soc, informationFramework, selectedAttributeTypes
    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
      usefulDefinitions(0) 6}
  ATTRIBUTE, AttributeUsage, CONTEXT, DITContentRule, DITStructureRule,
    MATCHING-RULE, NAME-FORM, OBJECT-CLASS, ObjectClassKind,
    objectIdentifierMatch
    FROM InformationFramework informationFramework
  -- from ITU-T Rec. X.520 | ISO/IEC 9594-6
  integerFirstComponentMatch, integerMatch,
    objectIdentifierFirstComponentMatch, UnboundedDirectoryString
    FROM SelectedAttributeTypes selectedAttributeTypes;

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

dITStructureRules ATTRIBUTE ::= {
  WITH SYNTAX             DITStructureRuleDescription
  EQUALITY MATCHING RULE  integerFirstComponentMatch
  USAGE                   directoryOperation
  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
  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
  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
  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
  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
  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
  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
  ID                      id-soa-structuralObjectClass
}

governingStructureRule ATTRIBUTE ::= {
  WITH SYNTAX             INTEGER
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  NO USER MODIFICATION    TRUE
  USAGE                   directoryOperation
  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