         NADF-SCHEMA {joint-iso-ccitt mhs(6) group(6) al-grimstad(5) nadf(1) schema(1)} DEFINITIONS ::= BEGIN

         IMPORTS
             OBJECT-CLASS, ATTRIBUTE
                 FROM InformationFramework
                     { joint-iso-ccitt ds(5) module(1)
                           informationFramework(1) }
             caseIgnoreStringSyntax, Criteria
                 FROM SelectedAttributeTypes
                     { joint-iso-ccitt ds(5) module(1)
                           selectedAttributeTypes(5) }
             locality, organization, applicationEntity, top
                 FROM SelectedObjectClasses
                     { joint-iso-ccitt ds(5) module(1)
                           selectedObjectClasses(6) }
                 ;


         nadf OBJECT IDENTIFIER ::= { joint-iso-ccitt mhs(6) group (6)
                                      al-grimstad(5) 1 }

         nadfModule          OBJECT IDENTIFIER ::= { nadf 1 }
         nadfAttributeType   OBJECT IDENTIFIER ::= { nadf 4 }
         nadfObjectClass     OBJECT IDENTIFIER ::= { nadf 6 }


         -- object classes

         usStateOrEquivalent OBJECT-CLASS
             -- localityName is used for RDN
             -- values come from US FIPS PUB 5
             SUBCLASS OF locality
             MUST CONTAIN { fipsStateNumericCode,
                            fipsStateAlphaCode,
                            stateOrProvinceName }
             MAY CONTAIN  { nadfSearchGuide }
             ::= { nadfObjectClass 1 }






         usPlace OBJECT-CLASS
             -- localityName is used for RDN
             -- values come from US FIPS PUB 55
             SUBCLASS OF locality
             MUST CONTAIN { fipsPlaceNumericCode,
                            localityName }
             MAY CONTAIN  { nadfSearchGuide }
             ::= { nadfObjectClass 2 }

          usCounty OBJECT-CLASS
             SUBCLASS OF usPlace
             MUST CONTAIN { fipsCountyNumericCode }
             ::= { nadfObjectClass 3 }

         usOrganization OBJECT-CLASS
             -- organizationName is used for RDN
             -- values come from ANSI Alphanumeric Registry
             SUBCLASS OF organization
             MUST CONTAIN { ansiOrgNumericCode }
             MAY CONTAIN  { nadfSearchGuide }
             ::= { nadfObjectClass 4 }

         nadfApplicationEntity OBJECT-CLASS
             SUBCLASS OF applicationEntity
             MUST CONTAIN { supportedApplicationContext }
             ::= { nadfObjectClass 5 }

         nadfADDMD OBJECT-CLASS
             -- addmdName is used for RDN
             -- values come from NADF Registry (tbd)
             SUBCLASS OF top
             MUST CONTAIN { addmdName }
             MAY CONTAIN  { nadfSearchGuide }
             ::= { nadfObjectClass 6 }


         -- auxiliary classes

         nadfObject OBJECT-CLASS
             SUBCLASS OF top
             MAY CONTAIN { supplementaryInformation }
             ::= { nadfObjectClass 7 }











         -- attribute types

         fipsStateNumericCode ATTRIBUTE

                 -- semantics and values defined in US FIPS PUB 5
             WITH ATTRIBUTE-SYNTAX
                             -- leading zero is significant
                 NumericString (SIZE (2))
                 MATCHES FOR EQUALITY
             ::= { nadfAttributeType 1 }

         fipsStateAlphaCode ATTRIBUTE
                 -- semantics and values defined in US FIPS PUB 5
             WITH ATTRIBUTE-SYNTAX
                 PrintableString (SIZE (2))
                 MATCHES FOR EQUALITY      -- case-insensitive
             ::= { nadfAttributeType 2 }

         fipsCountyNumericCode ATTRIBUTE
                 -- semantics and values defined in US FIPS PUB 6
             WITH ATTRIBUTE-SYNTAX
                             -- leading zeros are significant
                 NumericString (SIZE (3))
                 MATCHES FOR EQUALITY
             ::= { nadfAttributeType 3 }

         fipsPlaceNumericCode ATTRIBUTE
                 -- semantics and values defined in US FIPS PUB 55
             WITH ATTRIBUTE-SYNTAX
                             -- leading zeros are significant
                 NumericString (SIZE (5))
                 MATCHES FOR EQUALITY
             ::= { nadfAttributeType 4 }

         ansiOrgNumericCode ATTRIBUTE
                 -- semantics and values defined in ANSI registry
             WITH ATTRIBUTE-SYNTAX
                 INTEGER
                 MATCHES FOR EQUALITY
             ::= { nadfAttributeType 5 }

         addmdName ATTRIBUTE
                 -- semantics and values defined in NADF registry
             WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
             ::= { nadfAttributeType 6 }








         nadfSearchGuide ATTRIBUTE
             WITH ATTRIBUTE-SYNTAX NadfGuide
             ::= { nadfAttributeType 7 }

         NadfGuide ::=
             SET {
                 objectClass[0]
                     OBJECT-CLASS,
                 criteria[1]
                     Criteria,
                 subset[2]
                     INTEGER {
                         baseObject(0), oneLevel(1), wholeSubtree(2)
                     } DEFAULT oneLevel
             }

         supplementaryInformation ATTRIBUTE
             WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax (SIZE (1..76))
             ::= { nadfAttributeType 8 }

         END
