<?xml version="1.0"?>

<!-- 
Open Source Metadata Framework (OMF XML DTD) Version 1.1

Copyright (C) 1999, 2000  Kendall Grant Clark. All rights reserved.

$Id: OMF.dtd,v 1.2 2000/01/31 17:56:20 kendall Exp $

To use the OMF.dtd, an FPI like the following works:

"-//Open Source Metadata Framework (OMF) //DTD OMF.dtd V1.1//EN"

Permission to use, copy, modify and distribute the OMF DTD and its
accompanying documentation for any purpose and without fee is hereby
granted in perpetuity, provided that the above copyright notice and
this paragraph appear in all copies.  The copyright holders make no
representation about the suitability of the DTD for any purpose.  It
is provided "as is" without expressed or implied warranty. If you
modify the OMF DTD in any way, except for declaring and referencing
additional sets of general entities, declaring additional notations,
please label your DTD as a variant of OMF. This license requirement is
stated solely in the interests of maintaining data interchange
capability.
     
Please direct all queries, comments, and suggestions about OMF to
Kendall Grant Clark, kclark@ntlug.org, or to Open Source Research
Team's mailing list:ldp-meta@franklin.oic.unc.edu 

                                                                   -->

<!-- ............................................................. -->
<!-- Entity Sets ................................................. -->
<!-- ............................................................. -->

<!ENTITY % licenseTypes PUBLIC
"-//Open Source Metadata Framework (OMF)//ENTITIES License Types//EN"
"licenseTypes.mod"                                                   >
<!-- %licenseTypes; -->

<!ENTITY % countryCodes PUBLIC
"-//Open Source Metadata Framework (OMF)//ENTITIES Country Codes//EN"
"countryCodes.mod"                                                   >
<!-- %countryCodes; -->

<!ENTITY % languageCodes PUBLIC
"-//Open Source Metadata Framework (OMF)//ENTITIES Language Codes//EN"
"languageCodes.mod"                                                  >
<!-- %languageCodes; -->

<!ENTITY % linuxDistributions PUBLIC
"-//Open Source Metadata Framework (OMF)//ENTITIES Linux Distributions//EN"
"linuxDistributions.mod"                                             >
<!-- %linuxDistributions; -->

<!-- ............................................................. -->
<!-- ............................................................. -->

<!-- ............................................................. -->
<!-- Internal Entities ........................................... -->
<!-- ............................................................. -->
<!ENTITY % base.attribute.set
"id        ID                                 #IMPLIED
modified   CDATA                              #IMPLIED
created    CDATA                              #IMPLIED"              >

<!ENTITY % core.attribute.set
"%base.attribute.set;
agent      CDATA                              #IMPLIED
status     CDATA                              #IMPLIED"              >

<!ENTITY % url.attribute.set
"url       CDATA                              #REQUIRED
%core.attribute.set;"                                                >

<!ENTITY % value.attribute.set
"value     CDATA                              #REQUIRED
%core.attribute.set;"                                                >

<!ENTITY % person.model
           "(honorific*, firstName, otherName*, surname, email+)"    >

<!ENTITY % org.model
           "(name+, division*, email+)"                              >

<!ENTITY % content.entity.model
           "(organization, person)*"                                 >
<!-- ............................................................. -->
<!-- ............................................................. -->

<!-- ............................................................. -->
<!-- Element Declarations......................................... -->
<!-- ............................................................. -->
<!--                    omf root element                           -->
<!ELEMENT  omf          (resource)+                                  >
<!ATTLIST  omf
             %base.attribute.set;                                    >

<!--                    resource                                   -->
<!ELEMENT  resource     (creator, maintainer, contributor, title, 
                         date, versionGroup, subject, description, 
                         type, format, identifier, source, language, 
                         relation, coverage, rights)*                >

<!ATTLIST  resource
             %core.attribute.set;                                    >
<!--                    creator                                    -->
<!ELEMENT  creator
             %content.entity.model;                                  >
<!ATTLIST  creator
             %core.attribute.set;                                    >

<!--                    organization                               -->
<!ELEMENT  organization 
             %org.model;                                             >

<!--                    name                                       -->
<!ELEMENT  name         (#PCDATA)                                    >
<!ATTLIST  name
             %core.attribute.set;                                    >
<!--                    division                                   -->
<!ELEMENT  division     (#PCDATA)                                    >
<!ATTLIST  division
             %core.attribute.set;                                    >

<!--                    person                                     -->
<!ELEMENT  person       
             %person.model;                                          >

<!--                    email                                      -->
<!ELEMENT  email        (#PCDATA)                                    >
<!ATTLIST  email
             %core.attribute.set;                                    >

<!--                    honorific                                  -->
<!ELEMENT  honorific    (#PCDATA)                                    >
<!ATTLIST  honorific
             %core.attribute.set;                                    >

<!--                    firstName                                  -->
<!ELEMENT  firstName    (#PCDATA)                                    >
<!ATTLIST  firstName
             %core.attribute.set;                                    >

<!--                    otherName                                  -->
<!ELEMENT  otherName     (#PCDATA)                                   >
<!ATTLIST  otherName
             %core.attribute.set;                                    >

<!--                    surname                                    -->
<!ELEMENT  surname       (#PCDATA)                                   >
<!ATTLIST  surname
             %core.attribute.set;                                    >

<!--                    maintainer                                 -->
<!ELEMENT  maintainer
             %content.entity.model;                                  >
<!ATTLIST  maintainer
             %core.attribute.set;                                    >

<!--                    contributor                                -->
<!ELEMENT  contributor  
             %content.entity.model;                                  >
<!ATTLIST  contributor
             %core.attribute.set;                                    >

<!--                    title                                      -->
<!ELEMENT  title        (#PCDATA)                                    >
<!ATTLIST  title
             %core.attribute.set;                                    >

<!--                    versiongroup                               -->
<!ELEMENT  versionGroup (version)*                                   >
<!ATTLIST  versionGroup
             %core.attribute.set;                                    >

<!--                    version                                    -->
<!ELEMENT  version      (id, date, description?)                     >
<!ATTLIST  version
             %core.attribute.set;                                    >

<!--                    id                                         -->
<!ELEMENT  id           (#PCDATA)                                    >
<!ATTLIST  id
             %core.attribute.set;                                    >
<!--                    date                                       -->
<!ELEMENT  date         (#PCDATA)                                    >
<!ATTLIST  date
             %core.attribute.set;                                    >
<!--                    description                                -->
<!ELEMENT  description  (#PCDATA)                                    >
<!ATTLIST  description
             %core.attribute.set;                                    >

<!--                    subject                                    -->
<!ELEMENT  subject      (#PCDATA)                                    >
<!ATTLIST  subject
             %core.attribute.set;                                    >

<!--                    type                                       -->
<!--                    See coreTypes.mod, an entity set
                        comprising a formal vocabulary for type    -->
<!ELEMENT  type         (#PCDATA)                                    >
<!ATTLIST  type
             %core.attribute.set;                                    >

<!--                    format                                     -->
<!ELEMENT  format       EMPTY                                        >
<!ATTLIST  format
             mime       CDATA                              #REQUIRED 
             dtd        CDATA                              #IMPLIED
             %core.attribute.set;                                    >

<!--                    identifier                                 -->
<!ELEMENT  identifier   EMPTY                                        >
<!ATTLIST  identifier
             %url.attribute.set;                                     >
 
<!--                    source                                     -->
<!ELEMENT  source       (#PCDATA)                                    >
<!ATTLIST  source
             %core.attribute.set;                                    >

<!--                    language                                   -->
<!--                    see languageCodes.mod, an entity set
                        comprising a formal vocabulary for
                        language, derived from ISO 639 and 639-2   -->
<!ELEMENT  language     EMPTY                                        >
<!ATTLIST  language
             code       CDATA                              #REQUIRED
             name       CDATA                              #IMPLIED
             src        CDATA                              #IMPLIED
             %core.attribute.set;                                    >

<!--                    relation                                   -->
<!ELEMENT  relation     EMPTY                                        >
<!ATTLIST  relation
             %url.attribute.set;                                     >

<!--                    coverage                                   -->
<!ELEMENT  coverage     (geographic, distribution, kernel,
                         architecture, os)*                          >
<!ATTLIST  coverage
             %core.attribute.set;                                    >
<!--                    see countryCodes.mod, an entity set
                        comprising a formal vocabulary for
                        geographic, derived from ISO 3166-1        -->
<!--                    geographic                                 -->
<!ELEMENT  geographic   (#PCDATA)                                    >
<!ATTLIST  geographic
             %core.attribute.set;                                    >
<!--                    see linuxDistributions.mod, an entity set
                        comprising a formal vocabulary for
                        distribution                               -->
<!--                    distribution                               -->
<!ELEMENT  distribution (#PCDATA)                                    >
<!ATTLIST  distribution
             %core.attribute.set;                                    >
<!--                    kernel                                     -->
<!ELEMENT  kernel       (#PCDATA)                                    >
<!ATTLIST  kernel
             %core.attribute.set;                                    >
<!--                    architecture                               -->
<!ELEMENT  architecture (#PCDATA)                                    >
<!ATTLIST  architecture
             %core.attribute.set;                                    >
<!--                    os                                         -->
<!ELEMENT  os           (#PCDATA)                                    >
<!ATTLIST  os
             %core.attribute.set;                                    >

<!--                    rights                                     -->
<!--                    see licenseTypes.mod, an entity set
                        comprising a formal vocabulary for rights  -->
<!ELEMENT  rights       (holder, license)*                           >
<!ATTLIST  rights
             %core.attribute.set;                                    >
<!--                    holder                                     -->
<!ELEMENT  holder       EMPTY                                        >
<!ATTLIST  holder
             name       CDATA                              #REQUIRED
             %core.attribute.set;                                    >
<!--                    license                                    -->
<!ELEMENT  license      EMPTY                                        >
<!ATTLIST  license
             name       CDATA                              #REQUIRED
             url        CDATA                              #REQUIRED 
             version    CDATA                              #IMPLIED
             %core.attribute.set;                                    >
<!-- ............................................................. -->
<!-- ............................................................. -->


