Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. 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

h1. The MetaSchema schema

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

h2. Meta top level elements


h3. MetaTop OjectClass

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

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

Code Block
ObjectClass ( 1.3.6.1.4.1.18060.1.1.0.0.1
    NAME MetaTop
    DESC 'Top level ObjectClass of all Meta objects'
    SUP top
    ABSTRACT
    MUST ( m-oid $ m-desc )
)

MetaTop AttributeTypes

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

...

name

...

ldif form

...

m-oid

...

{code}

h3. 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.1.1.0.3.1

...


  m-name: m-oid

...


  m-description:

...

 The Object Identifier 
  m-equality:

...

 OidMatch
  m-syntax:

...

 Oid
  m-single-value: true
  m-no-user-modification: true

...


  m-usage: dSAOperation

...

|
|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.1.1.0.3.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-no-user-modification: true

...


  m-usage: dSAOperation

...

|
|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.1.1.0.3.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-no-user-modification:

...

 true
  m-single-value: true
  m-usage: dSAOperation

...

|
|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.1.1.0.3.

...

4
  m-name: m-

...

obsolete
  m-description: The

...

 type is obsolete 
  m-equality: BooleanMatch
  m-syntax: Boolean
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|m-sup-objectclass|dn: m-name=m-sup-objectclass,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.5
  m-name: m-sup-objectclass
  m-description: The list of superiors
  m-equality: NameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-usage: dSAOperation|
|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.1.1.0.3.6
  m-name: m-must
  m-description: The list of mandatory ATs
  m-equality: NameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-usage: dSAOperation|
|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.1.1.0.3.7
  m-name: m-may
  m-description: The list of authorized ATs
  m-equality: NameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true 
  m-usage: dSAOperation|
|m-type-object-class|dn: m-name=m-type-object-class,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.8
  m-name: m-type-object-class
  m-description: The ObjectClass type 
  m-equality: TypeObjectClassMatch
  m-syntax: TypeObjectClass
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|m-extension-object-class|dn: m-name=m-extension-object-class,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.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-no-user-modification: yes
  m-usage: dSAOperation|
|m-sup-attribute-type|dn: m-name=m-sup-attribute-type,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.10
  m-name: m-sup-attribute-type
  m-description: The list of superior
  m-equality: nameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-single-value: true

...


  m-usage: dSAOperation

...

|
|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.1.1.0.3.11

...

 
  m-name: m-equality

...


  m-desc: Equality matching

...

 rule
  m-equality: nameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|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.1.1.0.3.12
  m-name: m-ordering
  m-description: Ordering matching rule
  m-equality: nameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|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.1.1.0.3.13
  m-name: m-substr
  m-description:  Substring matching rule
  m-equality: nameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|m-syntax|dn: m-name=m-syntax,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.14
  m-name: m-syntax
  m-description: The attribute syntax
  m-equality: nameOrOidMatch
  m-syntax: NameOrOid
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|m-single-value|dn: m-name=m-single-value,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.15
  m-name: m-single-value
  m-description:  The attribute is single valued 
  m-equality: BooleanMatch
  m-syntax: Boolean
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|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.1.1.0.3.16
  m-name: m-collective
  m-description: The attribute is collective
  m-equality: BooleanMatch
  m-syntax: Boolean
  m-no-user-modification:

...

 true
  m-single-value: true
  m-usage:

...

m-extension-attributeType

...

m-extension-objectClass

...

m-may

...

m-must

...

m-no-user-modificatio

...

m-obsolete

...

m-ordering

...

m-single-value

...

m-substr

...

m-sup-attribute-type

...

m-sup-objectclass

...

m_syntax

...

m-type-attribute-type

...

m-type-objectclass

...

m-usage

MetaTop ObjectClasses instances

MetaObjectClass

The following text is the description of the MetaObjectClass :

Code Block
 dSAOperation|
|m-no-user-modification|dn: m-name=m-no-user-modification,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.17
  m-name: m-no-user-modification
  m-description: The attribute is protected
  m-equality: BooleanMatch
  m-syntax: Boolean
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|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.1.1.0.3.18
  m-name: m-usage
  m-description: Type of operation
  m-equality: UsageMatch
  m-syntax: Usage
  m-no-user-modification: true
  m-single-value: true
  m-usage: dSAOperation|
|m-type-attribute-type|dn: m-name=m-type-attribute-type,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.19
  m-name: m-type-attribute-type
  m-description: Type of attributeType
  m-equality: TypeAttributeTypeMatch
  m-syntax: TypeAttributeType
  m-no-user-modification: 
  m-single-value: true
  m-usage: dSAOperation|
|m-extension-attribute-type|dn: name=m-extension-attribute-type,ou=meta,ou=schema
  objectclass: meta-attributeType
  objectclass: meta-top
  objectclass: top
  m-oid: 1.3.6.1.4.1.18060.1.1.0.3.20
  m-name: m-extension-attribute-type
  m-description: Extension for attributeType
  m-equality: caseIgnoreMatch
  m-syntax: 1.3.6.1.4.1.1466.115.121.1.15{32768}
  m-no-user-modification: true
  m-single-value: false
  m-usage: dSAOperation|


h2. MetaTop ObjectClasses instances


h3. MetaObjectClass

The following text is the description of the *MetaObjectClass* :
{code}
ObjectClass ( 1.3.6.1.4.1.18060.1.1.0.0.2
    NAME MetaObjectClass
    DESC 'Meta definition of the ObjectClass object'
    SUP MetaTop
    STRUCTURAL
    MUST m-name
    MAY ( m-sup-objectclass $ m-must $ m-may $ m-type-objectclass $ m-obsolete $ m-extension )
)

MetaAttributeType

The following text is the description of the MetaAttributeType :

Code Block

{code}

h3. MetaAttributeType

The following text is the description of the *MetaAttributeType* :
{code}
ObjectClass ( 1.3.6.1.4.1.18060.1.1.0.0.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 :

Code Block

{code}

h3. MetaSyntax

The following text is the description of the *MetaSyntax* :
{code}
ObjectClass ( 1.3.6.1.4.1.18060.1.1.0.0.4
    NAME MetaSyntax
    DESC 'Meta definition of the Syntax object'
    SUP MetaTop
    STRUCTURAL
)

MetaMatchingRule

The following text is the description of the MatchingRule :

Code Block
{code}

h3. MetaMatchingRule

The following text is the description of the *MatchingRule* :
{code}
ObjectClass ( 1.3.6.1.4.1.18060.1.1.0.0.5
    NAME MetaMatchingRule
    DESC 'Meta definition of the MatchingRule object'
    SUP MetaTop
    STRUCTURAL
    MUST m-syntax
    MAY ( m-obsolete $ m-extensions )
)

Application to Core Schema

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

Country

The country ObjectClass in OpenLdap format :

Code Block
{code}

h1. Application to Core Schema

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

h2. Country

The country ObjectClass in OpenLdap format :
{code}
objectclass ( 2.5.6.2 NAME 'country'
    DESC 'RFC2256: a country'
    SUP top 
    STRUCTURAL
    MUST c
    MAY ( searchGuide $ description )
)
{code}
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 :

...


{code
}
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
{code}