Work in progress
This site is in the process of being reviewed and updated.

Introduction

This page is used to describe the MetaSchema using OpenLdap schema syntx, so that it can be loaded into the ou=schema special partition

The MetaSchema schema

This part expose the elements we have to declare to be able to store the schema using a standard schema

Meta top level elements

MetaTop OjectClass

This Meta object is used as the top-level class which will be the mother of all MetaObjects

ObjectClass ( 1.3.6.1.4.1.18060.0.4.0.3.1
    NAME MetaTop
    DESC 'Top level ObjectClass of all Meta objects'
    SUP top
    ABSTRACT
    MUST ( m-oid $ m-description )
)

MetaTop AttributeTypes

We also need to describe all the meta attributeTypes we will use :

name ldif form
m-oid dn: m-name=m-oid,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid:  1.3.6.1.4.1.18060.0.4.0.2.1
m-name: m-oid
m-description: The Object Identifier
m-equality: OidMatch
m-syntax: NumericOid
m-singleValue: true 
m-name dn: m-name=m-name,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.2
m-name: m-name
m-description: The Object name
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-description dn: m-name=m-description,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.3
m-name: m-description
m-description: Meta descriptive information
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{1024}
m-single-value: true 
m-obsolete dn: m-name=m-obsolete,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.4
m-name: m-obsolete
m-description: The type is obsolete
m-equality: BooleanMatch
m-syntax: Boolean
m-singleValue: true 
m-supObjectClass dn: m-name=m-supObjectClass,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.5
m-name: m-sup-objectclass
m-description: The list of superiors
m-equality: NameOrOidMatch
m-syntax: Oid
m-must dn: m-name=m-must,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.6
m-name: m-must
m-description: The list of mandatory ATs
m-equality: NameOrOidMatch
m-syntax: Oid
m-may dn: m-name=m-may,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.7
m-name: m-may
m-description: The list of authorized ATs
m-equality: NameOrOidMatch
m-syntax: Oid
m-typeObjectClass dn: m-name=m-typeObjectClass,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.8
m-name: m-type-object-class
m-description: The ObjectClass type
m-equality: TypeObjectClassMatch
m-syntax: TypeObjectClass
m-singleValue: true 
m-extensionObjectClass dn: m-name=m-extensionObjectClass,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.9
m-name: m-extension-object-class
m-description: An objectclass extension
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768} 
m-supAttributeType dn: m-name=m-supAttributeType,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.10
m-name: m-sup-attribute-type
m-description: The list of superior
m-equality: nameOrOidMatch
m-syntax: Oid
m-singleValue: true 
m-equality dn: m-name=m-equality,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.11
m-name: m-equality
m-description: Equality matching rule
m-equality: nameOrOidMatch
m-syntax: Oid
m-singleValue: true 
m-ordering dn: m-name=m-ordering,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.12
m-name: m-ordering
m-description: Ordering matching rule
m-equality: nameOrOidMatch
m-syntax: Oid
m-singleValue: true 
m-substr dn: m-name=m-substr,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.13
m-name: m-substr
m-description: Substring matching rule
m-equality: nameOrOidMatch
m-syntax: Oid
m-singleValue: true 
m-attributeTypeSyntax dn: m-name=m-attributeTypeSyntax,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.14
m-name: m-attributeTypeSyntax
m-description: The attributeType syntax
m-equality: OidLenMatch
m-syntax: OidLen
m-singleValue: true 
m-singleValue dn: m-name=m-singleValue,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.15
m-name: m-singleValue
m-description: The attribute is single valued
m-equality: BooleanMatch
m-syntax: Boolean
m-singleValue: true 
m-collective dn: m-name=m-collective,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.16
m-name: m-collective
m-description: The attribute is collective
m-equality: BooleanMatch
m-syntax: Boolean
m-singleValue: true 
m-noUserModification dn: m-name=m-noUserModification,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.17
m-name: m-noUserModification
m-description: The attribute is protected
m-equality: BooleanMatch
m-syntax: Boolean
m-singleValue: true 
m-usage dn: m-name=m-usage,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.18
m-name: m-usage
m-description: Type of operation
m-equality: UsageMatch
m-syntax: AttributeTypeUsage
m-single-value: true 
m-extensionAttributeType dn: name=m-extensionAttributeType,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.19
m-name: m-extensionAttributeType
m-description: Extension for attributeType
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-ruleId dn: name=mruleId,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.20
m-name: m-ruleId
m-description: The rule ID
m-equality: ruleIDMatch
m-syntax: Number
m-form dn: name=m-form,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.21
m-name: m-form
m-description: The name form associated with this DITStructure rule
m-equality: caseIgnoreMatch
m-syntax: Oid
m-supDITStructureRule dn: name=m-supDITStructureRule,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.22
m-name: m-supDITStructureRule
m-description: The list of superiors
m-equality: Match
m-syntax: NumericString 
m-extensionDITStructureRule dn: name=m-extensionDITStructureRule,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.23
m-name: m-extensionDITStructureRule
m-description: Extensions for DITStructureRule
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-oc dn: name=m-oc,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.24
m-name: m-oc
m-description: The structural ObjectClass
m-equality: numericOidMatch
m-syntax: Oid
m-singleValue: true
m-extensionNameForm dn: name=m-extensionNameForm,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.25
m-name: m-extensionNameForm
m-description: Extensions for NameForm
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-aux dn: name=m-aux,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.26
m-name: m-aux
m-description: List of auxiliary ObjectClasses
m-equality: numericOidMatch
m-syntax: Oid
m-not dn: name=m-not,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.27
m-name: m-not
m-description: List of precluded attribute types
m-equality: numericOidMatch
m-syntax: Oid
m-extensionDITContentRule dn: name=m-extensionDITContentRule,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.28
m-name: m-extensionDITContentRule
m-description: Extensions for DITContentRule
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-applies dn: name=m-applies,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.29
m-name: m-applies
m-description: List of attribute types the matching rule applies to
m-equality: numericOidMatch
m-syntax: Oid
m-extensionMatchingRuleUse dn: name=m-extensionMatchingRuleUse,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.30
m-name: m-extensionMatchingRuleUse
m-description: Extensions for DITContentRule
m-equality: caseIgnoreMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
m-matchingRuleSyntax dn: m-name=m-matchingRuleSyntax,ou=meta,ou=schema
objectclass: meta-attributeType
objectclass: meta-top
objectclass: top
m-oid: 1.3.6.1.4.1.18060.0.4.0.2.31
m-name: m-matchingRuleSyntax
m-description: The matchingRule attribute syntax
m-equality: NumericOidMatch
m-syntax: NumericOid
m-singleValue: true

MetaTop ObjectClasses instances

MetaObjectClass

The following text is the description of the MetaObjectClass :

ObjectClass ( 1.3.6.1.4.1.18060.0.4.0.3.2
    NAME MetaObjectClass
    DESC 'Meta definition of the ObjectClass object'
    SUP MetaTop
    STRUCTURAL
    MUST m-name
    MAY ( m-sup-object-class $ m-must $ m-may $ m-type-object-class $ m-obsolete $ m-extension )
)

MetaAttributeType

The following text is the description of the MetaAttributeType :

ObjectClass ( 1.3.6.1.4.1.18060.0.4.0.3.3
    NAME MetaAttributeType
    DESC 'Meta definition of the AttributeType object'
    SUP MetaTop
    STRUCTURAL
    MUST ( m-name $ m-syntax )
    MAY ( m-sup-attribute-type $ m-type-attribute-type $ m-obsolete $ m-equality $ m-ordering $ m-substr $ m-single-value $ m-collective $ m-no-user-modification $ m-usage $ m-extension )
)

MetaSyntax

The following text is the description of the MetaSyntax :

ObjectClass ( 1.3.6.1.4.1.18060.0.4.0.3.4
    NAME MetaSyntax
    DESC 'Meta definition of the Syntax object'
    SUP MetaTop
    STRUCTURAL
)

MetaMatchingRule

The following text is the description of the MatchingRule :

ObjectClass ( 1.3.6.1.4.1.18060.0.4.0.3.5
    NAME MetaMatchingRule
    DESC 'Meta definition of the MatchingRule object'
    SUP MetaTop
    STRUCTURAL
    MUST m-syntax
    MAY ( m-obsolete $ m-extensions )
)

MetaDITStructureRule

The following text is the description of the DITStructureRule :

ObjectClass (  1.3.6.1.4.1.18060.0.4.0.3.6
    NAME MetaDITStructureRule
    DESC 'Meta definition of the DITStructureRule object'
    SUP top
    STRUCTURAL
    MUST ( m-ruleId $ m-form )
    MAY ( m-obsolete $ m-supDITStructureRule $ m-extensionDITStructureRule )
)

MetaNameForm

The following text is the description of the NameForm :

ObjectClass (  1.3.6.1.4.1.18060.0.4.0.3.7
    NAME MetaNameForm
    DESC 'Meta definition of the NameForm object'
    SUP top
    STRUCTURAL
    MUST ( m-oc $ m-must )
    MAY ( m-obsolete $ m-may $ m-extensionNameForm )
)

MetaMatchingRuleUse

The following text is the description of the MatchingRuleUse :

ObjectClass (  1.3.6.1.4.1.18060.0.4.0.3.8
    NAME MetaMatchingRuleUse
    DESC 'Meta definition of the MatchingRuleUse object'
    SUP top
    STRUCTURAL
    MUST ( m-applies )
    MAY ( m-obsolete $ m-extensionMatchingRuleUse )
)

MetaDITContentRule

The following text is the description of the DITContentRule :

ObjectClass (  1.3.6.1.4.1.18060.0.4.0.3.9
    NAME MetaDITContentRule
    DESC 'Meta definition of the DITContentRule object'
    SUP top
    STRUCTURAL
    MAY ( m-obsolete $ m-aux $ m-must $ m-may $ m-not $ m-extensionDITContentRule )
)

Application to Core Schema

We will express the Core schema using the previously defined Ldap objects :

Country

The country ObjectClass in OpenLdap format :

objectclass ( 2.5.6.2 NAME 'country'
    DESC 'RFC2256: a country'
    SUP top
    STRUCTURAL
    MUST c
    MAY ( searchGuide $ description )
)

The Country ObjectClass using the MetaObjectClass definition will be inserted as an entry into the ou=schema partition. As it is declared in core, we use a DN which describe this relationship with the original filer :

dn: name=country, dc=core, ou=schema
objectclass: MetaObjectClass
objectclass: MetaTop
objectClass: top
m-oid: 2.5.6.2
m-name: country
m-desc: RFC2256: a country
m-sup-objectClass: top
m-type-objectClass: STRUCTURAL
m-must: c
m-may: searchGuide
m-may: description