<?xml version="1.0" encoding="iso-8859-1"?>
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Gregor Hagedorn (Biologische Bundesanstalt) -->
<xs:schema targetNamespace="http://www.tdwg.org/2004/UBIF" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all" version="Unified Biosciences Information Framework (UBIF)  1.0 beta 18" xmlns="http://www.tdwg.org/2004/UBIF" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:documentation xml:lang="en-us">
      <p>Unified Biosciences Information Frameword (UBIF) XML schema for data exchange and integration across knowledge domains. The schema has been design for biological data, but is applicable to other knowledge areas as well. It is based on work of the TDWG SDD and ABCD subgroups and currently jointly authored by the SDD, ABCD, TaxonName subgroups and by GBIF (Global Biodiversity Information Facility). The framework may be used without changes for new schemata, no registration is necessary. Its main features are:<br/>
   * A foundation of shared simple and complex types, including some enumerations to simplify world-wide data integration and interoperability across language barriers.
   * A top-level structure of Datasets collections containing independent Dataset objects. The collection is purposely semantically neutral; relations between Dataset have to be discovered by the data consumer or are assumed to be implicit in the protocol requesting the data.<br/>
   * Derivation metadata that support tracing and debugging the online transformation history data. They provide important technical information about access providers and the path of potentially multiple portals involved.<br/>
   * Metadata describing the principal data collection from which the dataset was derived. The dataset may represent the entire source dataset or it may be filtered, normalized, or enriched with secondary information. A dataset is never an aggregation of multiple data collection sources with different authorship, copyright, or other IPR; these are assumed to be delivered as separate datasets. Note: Derivation and content/source metadata together provide all necessary information for UDDI support.<br/>
   * External data interface (EDI) providing a standard mechanism to link to external data providers for knowledge domains outside of the scope of the current dataset. This includes a collection of supported object linking mechanisms involving globally unique identifiers and resolving mechanisms. Proxy objects can replace a links in cases where a specific object is (perhaps not yet) available in an external data source, and they cache a minimalized data interface on the assumption that access is asynchronous, slow, or may be temporarily unavailable. Furthermore, these cached data provide semantic information to human readers, preserving the semantics of a link even if it has become permanently broken.<br/>
   * A single "payload" element which must come from a different namespace. Note that within a Datasets collection each Dataset object may have a payload from a different external schema. It is the responsibility of the consumer to decide which dataset payload it is interested in or can process.</p>
      <p>Conventions: Element or attribute names starting with underscores (__) are present in the schema for discussion purposes only and should be only experimentally used. Annotations containing @ indicate unfinished points of discussion.<br/>
Note: blockDefault="#all" in xs:schema prevents that in instance documents derived types can be used in elements typed to the base type (which otherwise is possible using xsi:type=""). - finalDefault is not set, further type derivation is currently not considered problematic. Please contact us if you believe otherwise. Note that according to the w3c discussion forum, the developers of xml Schema consider to drop the final attribute in the upcoming XML Schema version 1.1. - Nillable: xsi:null is not supported in UBIF documents (schema declaration nillable="false" is default, not explicitly stated).</p>
      <p>Copyright © TDWG (Taxonomic Databases Working Group, www. tdwg.org), 20. July 2004. Licensed under the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version (http://www.gnu.org/licenses/gpl.html). Schema designed and annotations authored by G. Hagedorn &amp; W. Berendsohn, Berlin with help from members of the SDD, ABCD, TaxonName subgroups.</p>
    </xs:documentation>
  </xs:annotation>
  <xs:include schemaLocation="UBIF_TypeLib.xsd"/>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">The Datasets collection is the only root element allowed in UBIF:</xs:documentation>
  </xs:annotation>
  <xs:element name="Datasets">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Root element for files or data streams. Multiple Dataset objects are completely independent. Potential relationship may be detected by the consumer, but are not expressed in the UBIF format. The sequence of Dataset objects has no semantics and does not have to be preserved.

The version of the UBIF standard used is defined in the namespace declaration and needs no separate data element.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Dataset" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">A single file or data
stream may consist
of multiple data sets</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Derivation" type="DerivationMetadata">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">A history (tree) of all automatic or semi-automatic data derivations (transformations) through computer programs: database export, filtering, merging, or unmodified data provision through portals. The elements immediately in this element describe the process that created the current xml document.
[ATTR: datetime (= When was it done?), gooduntil (= caching interval)]
</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ExternalDataInterface" type="ExternalDataInterface" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Data from other knowledge domains to which the data set refers may be represented by collections of proxy data objects. In the absence of available external databases a proxy object may be used as a local placeholder. The data inside the proxy object usually provide a reduced interface data model that abstracts from a potentially more complex external data model.
 Examples: persons, publications, geographical localities, media resources, but also class names (biology: taxa) and objects/units (biology: specimens).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Metadata" type="ContentMetadata">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Metadata referring to the principal source of the entire data collection
(the metadata scope may be
wider than the objects actually
contained in the data set).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:any namespace="##any" processContents="strict" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The 'payload' of the dataset exchanged using UBIF. At this point a new namespace is defined (and usually the default namespace is redefined). Note that if an xsi:schemaLocation is desired, it should not be defined here but added to an xsi:schemaLocation attribute in the Datasets root element. Example from SDD instance document: &lt;DescriptiveData xmlns="http://www.tdwg.org/2004/SDD"&gt;</xs:documentation>
                </xs:annotation>
              </xs:any>
            </xs:sequence>
          </xs:complexType>
          <!-- The place of xs:key definition defines not only the starting point for the xpath, but also its scope/validity. While ref can be defined with the element, key definitions must be visible by all keyref identity constraints. The document root here is the branching point for terminology and description. -->
          <xs:key name="ClassNameProxyKey">
            <xs:selector xpath="ExternalDataInterface/ClassNames/ClassName"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="ClassHierarchyKey">
            <xs:selector xpath="ExternalDataInterface/ClassHierarchies/ClassHierarchy"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="UnitProxyKey">
            <xs:selector xpath="ExternalDataInterface/Units/Unit"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="AgentProxyKey">
            <xs:selector xpath="ExternalDataInterface/Agents/Agent"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="PublicationProxyKey">
            <xs:selector xpath="ExternalDataInterface/Publications/Publication"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="LocalityProxyKey">
            <xs:selector xpath="ExternalDataInterface/Geography/Locality"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="MediaResourceKey">
            <xs:selector xpath="ExternalDataInterface/MediaResources/MediaResource"/>
            <xs:field xpath="@id"/>
          </xs:key>
          <xs:key name="MeasurementUnitKey">
            <xs:selector xpath="ExternalDataInterface/MeasurementUnits/MeasurementUnit"/>
            <xs:field xpath="@id"/>
          </xs:key>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Data derivation, transformation, and derivation history:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="DerivationMetadata">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Describes the providers and application/ script(s) that produced the current data set, plus a derivation history of all automatic or semi-automatic transformation with negligable or automated content changes.

Derivation examples: a) Generation of file from a database, b) Adding/removing data to/from an existing UBIF xml file, c) Passing data through a portal without intentionally changing any data. The information provided here is intended to
a) facilitate debugging
b) react to known deficits of generators, esp. if generators produce syntactically correct but semantically faulty data (misapplication of data elements, etc.)
c) evaluate the quality and scope of archived data, especially whether the data contained in the document are complete or an excerpt from a larger data set.
d) inform about options to update/refresh data

[ATTR: datetime (= When was it done?)] = Date and time (UTC or local time with timezone information) at which the current document or data stream was created by the generator. Using UTC (Universal time coordinates = Greenwich mean time) is recommended.
[ATTR: gooduntil (= information about expiration of validity for caching purposes.]</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Generator">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Which tool did it? Metadata about the software (application, script, etc.) that performed the derivation/transformation.

[ATTR: name, version, notes, routine]
(Detailed attribute annotations exist, but are not visible in graphical schema view!)</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:attribute name="name" type="String255" use="required">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Name of the application performing the transformation. The term 'application' should be understood in a loose sense; it may be a script that is not part of a larger application (compare the Routine attribute, which may provide the detailed name of scripts that are part of an application!).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="version" type="String255" use="required">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Version of the application that has generated this document. The attribute should not be named 'Version' to avoid confusion with the version of the content (see content Metadata).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="notes" type="String" use="optional">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Additional information about the generating application that is not part of the name or version. If the copyright of the generating application is specified, it should be understood that this does not affect the content copyright of the data.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="routine" type="String255" use="optional">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Optionally allows a generating application to identify which of possibly multiple transforming routines (database code, xslt, etc.) was used. This attribute may also be used, to identify different conditions under which the export routine may behave differently.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Transformations" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">What was done? Metadata describing actions on the entire data set, recording especially the intent to transform data or pass them on unchanged. This element may be missing if the actions are variable/cannot be traced. However, consumers may wish to avoid datasets containing untraceable derivation actions. -- Note: The combination of Actions in this and previous derivations (see DerivationHistory) implicitly informs about the completeness of data (relevant when comparing archival data sets).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Action" type="DerivationActionDetails" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">The kind of action is described using three required boolean attributes:
ATTR: addition, removal, normalization = All 3 are false if the data are passed on without changes (except for information in the Derivation element itself). - The scope of action may optionally be described in: ATTR: affectedobjecttype = if empty the Action record is a summary for the entire dataset, else actions on specific object types may be described separately.
ATTR: within = if true, the action changes values and structures inside objects rather than presence/absence of entire objects in their collections. 
ATTR: description = optional free-form text description of the action.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="__Query" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">If the dataset is based on a query, use:
[ATTR: uri = If online query can be expressed as a single URI, it is recommended to provide this (even if another mechanism has actually been used). Executing a request to this URI is expected to return the same data set if no content updates occurred and updated information otherwise. If the only web query mechanism has a wizard-like interface involve multiple steps a Query/URI may not exist.
ATTR: description = Optional description of the query in any format considered intelligible to human readers. For example, it may be a set of rules in a programming language, an xpath, sql, or oql expression, or plain language (English is recommended, but not required). The format itself should be explained unless plain language is used. The information is intended for human consumption to improve the interpretation of documents that archive extracts and snapshots at a certain point in time.]</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:attribute name="uri" type="xs:anyURI" use="optional"/>
          <xs:attribute name="description" type="String" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="TechnicalContact" type="MicroAgent" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Who did it?
Technical contacts are those to whom questions about accessibility of a provider or resource should be directed.</xs:documentation>
        </xs:annotation>
        <xs:keyref name="TechnicalContact_AgentKeyRef" refer="AgentProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
      <xs:element name="AdministrativeContact" type="MicroAgent" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Who did it?
Administrative contacts [= Content contacts] are those to whom questions and feedback about data, or restrictions on use of the data should be directed.</xs:documentation>
        </xs:annotation>
        <xs:keyref name="AdministrativeContact_AgentKeyRef" refer="AgentProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
      <xs:element name="Statement" type="Statement" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Optional description of the derivation actions, acknowledgement, copyright, etc. statements. The statement should be complete and identify the speaker (Technical/AdministrativeContact should not be expected to be displayed). - This is the only item in Derivation expected to be displayed on web reports addressing the general public. All other items in Derivation are normally displayed only on technical pages. -- Note: Claiming copyright/database rights on derivations may interfere with the usability of data and is not recommended. Care must be taken to avoid violating the rights of holders of the original content copyright!</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:group ref="EnablingGroup" minOccurs="0"/>
      <xs:element name="DerivationHistory" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">The derivation history includes all automatic or semi-automatic transformation with negligable or automated content changes. It does NOT include the history of content revisions and expansions, possibly combined with changes of copyright or ownership; this history must be acknowledged in the Description, Owner and IPR statements in Metadata.

Whenever a data provider receives a dataset already containing derviation data, it will put these unchanged into previous derivations and add its own data as a new outer layer. Thus the outermost Derivation is the most recent (immediate) one, the innermost the first.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Derivation" type="DerivationMetadata" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Usually this contains only a single node! The history is not an array, but the recursion or Derivation within Derivation! However, multiple earlier derivations may be present if information has been merged. Example: SDD descriptions are enriched with images created by a geography server and based on ABCD collection data. Datasets should be kept separate whereever possible, e. g. in the case of specimen data from multiple collections.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="datetime" type="xs:dateTime" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">[ATTR: datetime] When did it occur? Date and time (UTC or local time with timezone information) at which the current document or data stream was created by the generator. Using UTC (Universal time coordinates = Greenwich mean time) is recommended.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="gooduntil" type="xs:dateTime" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">The data in this Dataset are guaranteed not to change until this date. No guarantee is given after this date and a cache should be refreshed. If the provider cannot guarantee that the data will not be changed until a future date, this attribute should be omitted.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="DerivationActionDetails">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used for transformation Action elements inside DerivationMetadata.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:any namespace="##targetNamespace" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">This extension mechanism is designed for future versions of the UBIF standard. It might, e. g., allow to list references to ids of objects affected by an action. Most transformations would probably not give such information, but it could be valuable where given.</xs:documentation>
        </xs:annotation>
      </xs:any>
    </xs:sequence>
    <xs:attribute name="addition" type="xs:boolean" use="required"/>
    <xs:attribute name="removal" type="xs:boolean" use="required"/>
    <xs:attribute name="normalization" type="xs:boolean" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Normalization are actions that change data in a way intended to improve data quality without changing the meaning. Examples: standardization of collectors names or abbreviations. Primarily intended for changes within the major objects. However, a collection of objects may be normalized as well, e. g. if duplicate objects are removed.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="affectedobjecttype" type="String255" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">If empty the Action record is a summary for the entire dataset, else actions on specific object types may be described separately.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="within" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">If within is true, the action changes values and structures inside objects rather than presence/absence of entire objects in their collections.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="description" type="String" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Optionally an unconstrained text with details of the transformation action and completeness of data relative to the source of the current transformation. It may include both an account of the actions as well as a narrative describing the purpose of the transformation. This should address human readers. It is intended for technical usage, not to be displayed in consumer-oriented web pages. English language is recommended but not required.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Meta data about the entire data collection from which the data set was derived:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="ContentMetadata">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Metadata referring to the principal source of the entire data collection
(thus the metadata scope may be
wider than the objects actually
contained in the data set).

If a history of the data collection
(revised or expanded in various
projects or at different institutions)
exist, this must be reflected in the
IPR statements and possibly in
the list of Owners.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Language-specific
header information</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Representation" type="MetadataDescriptionRepr" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">[ATTR: language]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="MetadataDescription_UniqueRepresentation">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The Language values must uniquely identify the Representations within Description.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="Representation"/>
          <xs:field xpath="@Language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Scope" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Language-independent expressions of limited geographical, taxonomic, etc. scopes. In the case of projects in progress, 'scope' may define the planned or intended, rather than the achieved scope (or coverage). Compare also Coverage in Description (which is language-specific). (Items from Scope may be added to DC.Coverage)</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="GeographicalScope" type="LocalityRefs" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">A data collection may have a limited geographical scope. Example: 'Germany', 'Austria'.</xs:documentation>
              </xs:annotation>
              <xs:unique name="ProjScope_UniqueLocalities">
                <xs:selector xpath="Locality"/>
                <xs:field xpath="@ref"/>
              </xs:unique>
            </xs:element>
            <xs:element name="ClassScope" type="ClassRefs" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">A data collection may have a limited class scope (biology: taxonomic scope). Example: 'Hymenoptera'</xs:documentation>
              </xs:annotation>
              <xs:unique name="ProjScope_UniqueClassNameRefs">
                <xs:selector xpath="ClassName"/>
                <xs:field xpath="@ref"/>
              </xs:unique>
            </xs:element>
            <xs:element name="SourcePublications" type="PublicationRefs" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Information in the entire dataset may come from these (printed or digital) publications. Note that if data are not just copied from publications into independent descriptions, but revised and combined with expert knowledge, SourcePublications should not be used. Such a process creates an independent new work and the publications are only cited in the descriptions).</xs:documentation>
              </xs:annotation>
              <xs:unique name="ProjScope_UniquePublicationRefs">
                <xs:selector xpath="Publication"/>
                <xs:field xpath="@ref"/>
              </xs:unique>
            </xs:element>
            <xs:element name="__OtherScope" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">@@ E.g. ecological like "Temperate rainforest", 'insectivores' (bats, birds, mammals' ...), temporal (jurassic fossils)... Problem: these should be external subject vocubularies that should be linked to... Library of congress subject headings may be usefull.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="__Term" type="String" maxOccurs="unbounded"/>
                </xs:sequence>
              </xs:complexType>
              <xs:unique name="ProjScope_UniqueOtherScope">
                <xs:selector xpath="__Term"/>
                <xs:field xpath="."/>
              </xs:unique>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Version" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Number and date of current version</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Major" type="xs:nonNegativeInteger">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">The major version number ('1' in 1.2)
as defined by the content creators.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Minor" type="xs:nonNegativeInteger" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">An optional minor version number
('2' in 1.2)</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Modifier" type="String255" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Unconstrained text specifying status + optional number, e. g., 'beta', 'alpha', 'rc/release candidate', 'internal'. If missing, release status is assumed.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="VersionReleaseDate" type="xs:date" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Citable 'publication date' of the current version (comp. RevisionData/ Initiation- and LastRevisionDate for version- independent dates). This date must be missing if the current version is not yet published! (= DC.Date.issued; http://purl.org/dc/terms/issued)
Note: currently no mechanism exist to record the date of the first version release. Is this needed?</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RevisionData" type="RevisionData" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Creators, Revision
status, and dates of
the entire data
collection from which
the current dataset
is derived.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:group ref="OwnerAndIPR"/>
      <xs:element name="GloballyUniqueName" type="xs:anyURI" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">A globally unique ID-string, distinguishing a data collection (which may be identical or larger than the current dataset) from all others. The value should never be changed once it has been introduced. To refer to objects within the dataset from elsewhere, this value is combined with the object. If you don't have this, it will be difficult to compare versions of data collections.

Recommendation: Avoid choosing simple names that are likely to be used multiple times ('plants', 'French bees', etc.). Authors working at research institutions that allow to use their name as permanent identifiers (even if the author stops working there), may use institutional-URI/personal-or-team-name/ data-collection-label (example: xyz.de/hagedorn/coelomycetes). Note that this is only an identifier and does NOT help to locate real web resources.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:group ref="EnablingGroup" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MetadataDescriptionRepr">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Language-specific content metadata (title, description, etc.) with *required* Language attribute added.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="LanguageRef">
        <xs:sequence>
          <xs:element name="Title" type="String255">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">A short, concise title. Does not support any formatting! (= DC.Title)</xs:documentation>
              <xs:documentation xml:lang="en-us">General Note on DublinCore translation: In addition to those that can bee transformed from UBIF metadata, an additional DC.Type='dataset' should be added.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Details" type="String" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Free-form text containing a longer description of the project.
(= DC.Description)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Coverage" type="String" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Free-form text describing geographic, taxonomic, or other coverage aspects of terminology or descriptions available in the current project. (= DC.Coverage)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Icon" type="MediaResourceRef" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Optionally an image media resource containing an icon/logo symbolizing the project.
[ATTR: ref]</xs:documentation>
            </xs:annotation>
            <xs:keyref name="MediaResourceKeyref_Icon" refer="MediaResourceKey">
              <xs:selector xpath="."/>
              <xs:field xpath="@ref"/>
            </xs:keyref>
          </xs:element>
          <xs:element name="WebAddress" type="xs:anyURI" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">URL pointing to an online source related to the current project, which may or may not serve an updated version of the terminology or descriptions.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Proxy data objects (representing external resources) and references to these objects:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="ExternalDataInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Collections of non-abstract data proxy elements, forming an interface to potentially existing more object representations</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ClassNames" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Class (biology: taxon) names used in the project. Each proxy object contains a name - either locally defined or representing an external resource defined in a linking mechanism and defines a local id attribute that may be referred to multiple times from within the project.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ClassName" type="ClassNameProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Biology: Object in a nomenclator
[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_ClassNames__UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="ClassName/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="ClassHierarchies" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Optional hierarchy (= tree, biology: taxonomy) of classes defined above. A hierarchy may be incomplete, i. e. some ClassName object may not be in the hierarchy. ClassHierarchies may be locally defined or represent an external source.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ClassHierarchy" type="ClassHierarchyProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Biology: Taxonomic hierarchy, or arbitrary set of taxa.
[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_ClassHierarchies_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="ClassHierarchy/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Units" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Units are physical objects (biology: specimens) that are collected, described, or observed. In biology a collected object is often called a specimen.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Unit" type="UnitProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Biology: Object in a collection
(= specimen) or an observation.
Units may be identified or
assigned to a Class name.
[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_Units_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="Unit/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Agents">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Documentation of persons/organizations involved in the authoring, compiling, editing, etc. of the data set.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Agent" type="AgentProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">@@ The specific elements are only a preliminary sketch, this should be synchronized with TDWG ABCD!
[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_Agents_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="Agent/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Publications" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Publications used in the project, defined through proxy objects (= local or external link, see under Agents).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Publication" type="PublicationProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Printed or digital publication
(including database source)
[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_Publications_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="Publication/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Geography" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Geographical locations (often country names, but potentially on any level), defined through proxy objects (= local or external link, see under Agents). An example of an external gazetteer referred to is the TDWG Geography standard.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Locality" type="LocalityProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_Geography_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="Locality/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="MediaResources" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Resource definitions containing links like URLs or actually embedding the resource (e. g. encoded images). These are proxy objects (= local or external link, see under Agents).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MediaResource" type="MediaResourceProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_MediaResources_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="MediaResource/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="MeasurementUnits" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Measurement units like mm-square, °C, ml, pH, and dimensionless scaling factors like %, promille.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MeasurementUnit" type="MeasurementUnitProxy" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">[ATTR: id]</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="EDI_MeasurementUnits_UniqueLabelText">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The labels of proxy objects must be unique for a given language.</xs:documentation>
          </xs:annotation>
          <xs:selector xpath="MeasurementUnit/Label/Representation"/>
          <xs:field xpath="Text"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ProxyBase" abstract="true">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Abstract base type for proxy objects representing external resource objects (publications, class names, specimens, etc.). Provides a free-form label (this may be locally defined and the only data item if no external object is available) plus an ID-based link to an external object.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Label" type="Label">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Human readable representation. This may be the only data item if no machine readable ObjectLink exists. Example for a publication: "Smith 1998. Flora of Erehwon, XY Publishers." Even if an external ID exist, the Label is required. It preserves the semantics of the proxy object (= keep interpretable by humans) even if the machine-readable object links are broken. Label should be updated automatically (without human control) only after a human decided that the semantic management of an external object provider can be fully trusted.

Some Labels like scientific taxon names or publication references can be expressed more or less language-independent, others like geographic names are always language dependent. @@Discussion neccessary: language type is currently extended with neutral and unknown codes ('-', '?'), is this necessary?@@

The Abbreviation element provided is not necessary for all proxies, but especially useful for class names (e. g., for tabular reports) and publication abbreviations (author/year style).</xs:documentation>
        </xs:annotation>
        <xs:unique name="ProxyLabel_UniqueRepresentationLanguage">
          <xs:selector xpath="Representation"/>
          <xs:field xpath="@language"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Link" type="ExternalLink" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Defines an ID of an external object or one to several services providing it.

The format in which the object is returned is undefined and needs to be interpreted by the receiving application. Ideally, common standards (TDWG, MARC, etc.) should be used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:group ref="EnablingGroup" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="id" type="RelationID" use="required"/>
    <xs:attributeGroup ref="debugkeyAttribute"/>
    <xs:anyAttribute namespace="##other"/>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Class names (biology: taxon names):</xs:documentation>
  </xs:annotation>
  <xs:complexType name="ClassNameProxy">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used for class names (biology: taxon names). Provides a locally defined simple free-form text plus an optional link to an external resource object.

This may be changed to allow entering a structured form of taxonomic names (Genus/Higher taxon, rank, optional specific/infraspecific epithets, authors). However, note that simply splitting into taxon name and authors does not work, because authors may be in the middle of the parts of the taxon name (e. g. in botanical autonyms). Currently the development of the TDWG taxon names standard should be awaited first.

Note that Class names are not restricted to accepted names (also referred to by Synonyms in ClassHierarchyNode type)</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProxyBase">
        <xs:group ref="ClassNameInterface"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:group name="ClassNameInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to
ClassNameProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Rank" type="TaxonomicRankEnum" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">For biological taxonomic names: order, family, species, etc. Derived from an enumerated value list. This element needs to be interoperable; formatting often depends on specific ranks rather than on relative place in the hierarchy alone.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="ClassRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Defines an element with a ref attribute pointing to a ClassName in ExternalDataInterface (in biology: Class = Taxon)</xs:documentation>
    </xs:annotation>
    <xs:attribute name="ref" type="RelationID" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Refers to a class name (biology = 'taxon'; ExternalDataInterface/ClassNames/ClassName)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="debugrefAttribute"/>
  </xs:complexType>
  <xs:complexType name="ClassRefs">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A collection of ClassRef type elements</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ClassName" type="ClassRef" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Reference to a class name (in biology =  taxon name) defined in ExternalDataInterface/ClassNames
[ATTR: ref]</xs:documentation>
        </xs:annotation>
        <xs:keyref name="ClassNameProxyKeyref" refer="ClassNameProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Class hierarchy (biology: taxon concepts):</xs:documentation>
  </xs:annotation>
  <xs:complexType name="ClassHierarchyProxy">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used for class hierarchies (taxonomies)</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProxyBase">
        <xs:group ref="ClassHierarchyInterface"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:group name="ClassHierarchyInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
ClassHierarchyProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="IsPhylogenetic" type="xs:boolean">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">For example, SDD supports taxonomic (order/family/genus etc.) and non-taxonomic (weed species, diseases, herb/shrub/tree) hierarchies. For many analytical purposes it is relevant whether a hierarchy is based on phylogenetic (= evolutionary) relatedness or whether it is an operational categorization.
Note: a conventional taxonomic hierarchy should be considered phylogenetic until proven to be not.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Node" type="ClassHierarchyNode">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Root of the recursive tree</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="ClassHierarchyNode">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A node in a class hierarchy tree (biology: taxonomical hierarchy)</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice>
        <xs:annotation>
          <xs:documentation xml:lang="en-us">A node either contains
a class reference (biology:
taxon) and optionally (if it
is a higher level class) further
child Nodes, or it is anonymous
and contains only further child
Nodes. Nodes may not be empty.

(The complex choice/sequence
expresses the A, or B, or A and B
constraint which is difficult to
express in xml-Schema.)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The class (biology: taxon;
with optional synonyms)
that identifies the node.</xs:documentation>
          </xs:annotation>
          <xs:element name="ClassName" type="ClassRef">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Refers to a class name
(in biology a taxon name)
[ATTR: ref]</xs:documentation>
            </xs:annotation>
            <xs:keyref name="ClassNameProxyKeyref_Hierarchy" refer="ClassNameProxyKey">
              <xs:selector xpath="."/>
              <xs:field xpath="@ref"/>
            </xs:keyref>
          </xs:element>
          <xs:choice>
            <xs:element name="TypeClass" type="ClassRef" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Rather specific to biology:
Taxa above rank of species have a lower taxon by which they are typified.</xs:documentation>
              </xs:annotation>
              <xs:keyref name="ClassNameProxyKeyref_TypeClass" refer="ClassNameProxyKey">
                <xs:selector xpath="."/>
                <xs:field xpath="@ref"/>
              </xs:keyref>
            </xs:element>
            <xs:element name="TypeUnits" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Rather specific to biology:
Taxa of species rank or below have a physical unit (specimen) by which they are typified.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TypeUnit" type="TypeUnitRef" maxOccurs="unbounded">
                    <xs:annotation>
                      <xs:documentation xml:lang="en-us">Collected and preserved unit(s) (biology: specimens) by which the name is typified.</xs:documentation>
                    </xs:annotation>
                    <xs:keyref name="UnitProxyKey_TypeUnit" refer="UnitProxyKey">
                      <xs:selector xpath="."/>
                      <xs:field xpath="@ref"/>
                    </xs:keyref>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
          <xs:element name="Synonyms" type="ClassRefs" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">(The expression of synonyms may be essential for reports and to convey the concept of a class to information consumers.)</xs:documentation>
            </xs:annotation>
            <xs:unique name="ClassHierarchyNode_UniqueSynClassRefs">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">References to project-wide defined ConceptStates (defined at the nodes of concept trees) must be unique within each character. This is achieved by a uniqueness constraint (local to each character) on the ref attribute of StateReference. The id attribute is already unique through the general CharacterStateKey.</xs:documentation>
              </xs:annotation>
              <xs:selector xpath="ClassName"/>
              <xs:field xpath="@ref"/>
            </xs:unique>
          </xs:element>
          <xs:element name="Nodes" type="ClassHierarchyNodes" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">If class identification is
present, further nodes
are optional.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
        <xs:element name="Nodes" type="ClassHierarchyNodes">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The class identification
may be missing, but then
further Nodes are required.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:group ref="EnablingGroup" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ClassHierarchyNodes">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A collection of objects with ClassHierarchyNode type</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Node" type="ClassHierarchyNode" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ClassHierarchyRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Defines an element with a ref attribute pointing to a ClassHierarchy.</xs:documentation>
    </xs:annotation>
    <xs:attribute name="ref" type="RelationID" use="required"/>
    <xs:attributeGroup ref="debugrefAttribute"/>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Units (biology: specimen, 'Objects' in earlier versions of SDD):</xs:documentation>
  </xs:annotation>
  <xs:complexType name="UnitProxy">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used to define objects that are collected, described, or observed (collected objects may be preserved permanently in a specimen collection). In biology a collected object is often called a specimen.

Provides either a simple free-form descriptive label ('so-and-so in freezer 14, with tag 1233'), or a link to an external collection unit.

Note that the term 'Unit' as used here has no relation to 'measurement units' or 'organization units'.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProxyBase">
        <xs:group ref="UnitInterface"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:group name="UnitInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
UnitProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">@@ SomeElementsAnalyzedBySDD:
These are just the preliminary elements identified by SDD to be necessary as local extensions. A decision needs to be made, compare the DWC-based present in an alternative interface group! @@</xs:documentation>
      </xs:annotation>
      <xs:element name="ClassName" type="ClassRef" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Identification of specimen object. The information may come from the service provider. If the service provider only provides a name, this must be compared with and if necessary added to the list of ClassNames so that a ClassName reference may be used here.
This may point to a higher taxon (family, order, or even "plantae") to indicate incomplete, broad identifications.
[ATTR: ref]</xs:documentation>
        </xs:annotation>
        <xs:keyref name="ClassNameProxyKeyref_ObjectID" refer="ClassNameProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
      <xs:element name="IdentificationCertainty" type="IdentificationCertaintyEnum" default="Certain" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Default is 'certain'; 'Abies cf. alba' would be recorded as 'uncertain'.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsPreservedInCollection" type="xs:boolean" default="true" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">False = object has not been collected and preserved (it may still be databased in an observation database and have an ExternalID!). The default for this element is true, i. e. if the element is missing the object has been collected/preserved.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="UnitInterface_RoughProposalBasedOnDarwinCore">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided! Extensions of 
ProxyBase
specific to 
UnitProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">This is derived from DarwinCore, "version
1.25 2003/05/24 11:14:24 John Wieczorek", but in a first attempt tried to rework into structures compatbile with UBIF usage. The following is not yet a serious proposal, just a basis for further work. Most likely this is too rich at the moment for a simplified interface...</xs:documentation>
      </xs:annotation>
      <xs:sequence>
        <xs:annotation>
          <xs:documentation xml:lang="en-us">DarwinCore
'core' fields</xs:documentation>
        </xs:annotation>
        <xs:element name="BasisOfRecord" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">A description indicating whether the record represents an object or observation (e.g., tissue sample, living organism, voucher specimen, germplasm/seed, genetic information, etc.)</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:sequence>
          <xs:element name="InstitutionCode" type="String" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">The code (or acronym) identifying the institution administering the collection in which the object or observation record is cataloged. No global registry exists for institutional codes; use the code that is "standard" in your discipline. This attribute must contain no spaces.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CollectionCode" type="String" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">The code (or acronym) identifying the collection within the institution in which the object or observation record is cataloged. This attribute must contain no spaces.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CatalogNumberText" type="String" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">The alphanumeric value identifying an individual object or observation record within the collection. It is highly recommended that each record is uniquely identified within a collection by this value. It is also recommended that each record is universally uniquely identified by the combination of InstitutionCode, CollectionCode and CatalogNumberText.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
        <xs:element name="Collector" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Collectors" type="AgentNames" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The name(s) of the collector(s) of the original data for the object or observation.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="CollectionDate" type="CompositeDateTime" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Date in which the object or observation was collected from the field. Each part of the date may be missing. (= DarwinCore: YearCollected, MonthCollected, DayCollected, VerbatimCollectingDate)
ATTR: year = four digit year;
month = two digit month of year;
day = two digit day of month</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="CollectorNumber" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">An identifying string applied to the object or observation at the time of collection. Serves as a link between field notes and the object or observations.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="FieldNumber" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">An identifying string applied to a set of objects or observations resulting from a single collecting event.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="FieldNotes" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Notes taken in the field for the object or observation, or a reference to such notes.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="GeographicalClassification" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="HigherGeography" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The combination of all geographic elements less specific than locality. "Like" query operations on this element will search for a substring that might be in any of the higher geography elements.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ContinentOcean" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the continent or ocean from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="IslandGroup" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the island group from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Island" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the island from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Country" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the country or major political unit from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="StateProvince" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the state, province, or region (i.e., the next smaller political region than Country) from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="County" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full, unabbreviated name of the county, shire, or municipality (i.e., the next smaller political region than StateProvince) from which the object or observation was collected.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="GeographicalDetails" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Locality" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The description of the locality from which the object or observation was collected. Need not contain geographic information provided in other geographic fields.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Coordinates" type="GeographicalCoordinates" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Geographical coordinates (decimal longitude/latitude) of the location from which the object or observation was collected. Includes geodetic datum and an optional verbatim text representation.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="CoordinateUncertaintyInMeters" type="xs:double" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The upper limit of the distance (in meters) from the given latitude and longitude describing a circle within which the whole of the described locality must lie. Use NULL where the uncertainty is unknown, cannot be estimated, or is not applicable (e.g., because there are no coordinates).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Elevation" type="ValueRange" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The minimum and maximum altitude in meters above (positive) or below (negative) sea level of the collecting locality. (= DarwinCore.MinimumElevationInMeters / MaximumElevationInMeters</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="VerbatimElevation" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">A text representation of the altitude in its original format in the source database.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Depth" type="ValueRange" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The minimum distance in meters below the surface of the water at which the collection was made; all material collected was in this range.
(= DarwinCore.MinimumDepthInMeters / MaximumDepthInMeters</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="VerbatimDepth" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">A text representation of the depth in its original format in the source database.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:sequence>
                <xs:element name="GeoreferencingNotes" type="String" minOccurs="0">
                  <xs:annotation>
                    <xs:documentation xml:lang="en-us">A reference to the methods used for determining the coordinates and uncertainties. This includes DarwinCore GeoreferencingMethod and GeoreferencingReferences</xs:documentation>
                  </xs:annotation>
                </xs:element>
                <xs:element name="GeorefVerificationStatus" type="String" minOccurs="0">
                  <xs:annotation>
                    <xs:documentation xml:lang="en-us">The extent to which the georeference has been verified to represent the location where a Cataloged Item was collected.</xs:documentation>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Identification" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="IdentifiedBy" type="AgentNames" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The name(s) of the person(s) who applied the currently accepted ScientificName to the object or observation.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="IdentificationDate" type="CompositeDateTime" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The date in which the unit (specimen, observations, strain, culture, animal) was identified as having the ScientificName.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="IdentificationQualifier" type="String" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">A standard term to qualify the identification of the object or observation when doubts have arisen as to its identity(e.g., "cf.", "aff.", "subspecies in question", etc.).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="TaxonomicClassification" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Kingdom" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the phylogenetic kingdom in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Phylum" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the phylogenetic phylum (or division) in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Class" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the phylogenetic class in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Order" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the phylogenetic order in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Family" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the phylogenetic family in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="ScientificName" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="ScientificName" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The full name of the lowest level taxon to which the object or observation can be identified (e.g., Family, Genus, Genus+" "+SpecificEpithet, Genus+" "+SpecificEpithet+" "+SubspecificEpithet, etc.).</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Genus" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The name of the genus in which the object or observation is classified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SpeciesEpithet" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The specific epithet of the scientific name applied to the object or observation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SubspeciesEpithet" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The subspecific epithet of the scientific name applied to the object or observation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ScientificNameAuthor" type="String" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation xml:lang="en-us">The author of the ScientificName. Can be more than one author in a concatenated string. Should be formatted according to the conventions of the applicable taxonomic discipline.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="TypeStatus" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">A list of one or more nomenclatural types (including type status and typified taxonomic name) represented by the object (e.g., "holotype of Ctenomys sociabilis. Pearson O. P., and M. I. Christie. 1985. Historia Natural, 5(37):388."). Does not apply to observations.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="RelatedInformation" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Free text references to information not covered elsewhere (e.g., URLs to specimen details, photographs, publications, etc.).</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:sequence>
        <xs:annotation>
          <xs:documentation xml:lang="en-us">DarwinCore
Curatorial</xs:documentation>
        </xs:annotation>
        <xs:element name="Sex" type="Sex" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The sex of a biological individual represented by the cataloged object or observation (e.g., male, female, hermaphrodite, gynandromorph, not recorded, indeterminate, transitional - between sexes, for sequential hermaphrodites).</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="AgeClass" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The age class, reproductive stage, or life stage of the biological individual (e.g., juvenile, adult, eft, nymph, etc.) referred to by the catalog number.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Preparations" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">A concatenated list of preparations and preservation methods (skin, skull, skeleton, whole animal (Ethanol), slide, etc.) for the object. Includes tissue preparations (frozen, EDTA, etc.). Does not apply to observations.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="GenBankNumber" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">GenBank Accession number(s) associated with the biological individual(s) referred to by the cataloged object.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="OtherCatalogNumbers" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">A list of previous or alternative fully qualified catalog numbers for the same object or observation, whether in the current collection or in any other.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="RelatedCatalogedItems" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The fully qualified identifier (InstitutionCode+" "+CollectionCode+" "+CatalogNumberText) of the related object or observation, preceded by the nature of the relationship (e.g., "(sibling of) MVZ Mamm 1234").</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Disposition" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The current disposition of the cataloged item (e.g., "in collection", "lost", "voucher elsewhere",  etc.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Remarks" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Free text comments accompanying the object or observation record.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:sequence>
        <xs:annotation>
          <xs:documentation xml:lang="en-us">DarwinCore
Microbial</xs:documentation>
        </xs:annotation>
        <xs:element name="HistoryOfDeposit" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Fate of the isolate between isolation and deposit in the present collection. The backward sequence of deposits is used separated by &quot;&lt;&quot; meaning &quot;received from&quot;. Each entry may contain the name of the collection, (month and) year of the acquisition. Between parenthesis can be entered: strain designation or collection numbers (only when confusion is possible between two or more numbers from the same collection) and/or a name when a name change has occurred. Example: [in Bacillus sphaericus DSM 488] NCTC, Nov. 1973 (Bacillus loehnisii) &lt; T. Gibson, 1935 &lt; Kral Collection (Bacillus probatus)</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Depositor" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Name of the Depositor</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="DepositionDate" type="CompositeDateTime" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The date in which the unit (strain, culture, animal) was deposited in the collection.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Substrate" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Substrate from which the strain was isolated (soil, water, blood, leaf, etc)</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Isolator" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Name of the person perfoming the isolation into pure culture</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="IsolationMethod" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Method used to isolate the strain</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="ConditionsForGrowth" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Any specific conditions related to cultivation and maintenance of the strain such as culture medium, atmospheric and light conditions, temperature, etc</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Genotype" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Names of chromosomal markers of the strain</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Mutant" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Type and parent of mutant if strain is a mutant strain</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Race" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Name of the race of the strain and authors of the race</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="AlternateState" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Name of the alternate state of the strain and authors of the alternate state</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StrainProperties" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Any specific properties of the strain (enzyme production, metabolites production, degradation, etc)</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StrainApplications" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Any specific applications that the strain may have, such as in bioremediation, inoculants, biologic control, etc</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="BiologicalRisks" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Hazard group, pathogen class, plague type</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Pathogenicity" type="String" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Any specific disease that the strain may cause</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="UnitRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Defines an element with a ref attribute pointing to a Unit (biology: observation or specimen) defined in ExternalDataInterface.</xs:documentation>
    </xs:annotation>
    <xs:attribute name="ref" type="RelationID" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Refers to a Unit object identifier (biology = 'specimen')</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="debugrefAttribute"/>
  </xs:complexType>
  <xs:complexType name="TypeUnitRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extension of UnitRef with a required type status attribute (NomenclaturalTypeStatusOfUnitsEnum)</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="UnitRef">
        <xs:attribute name="Status" type="NomenclaturalTypeStatusOfUnitsEnum" use="required">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">The type status of a unit (biology: specimen). See the enumerated type for further information.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Publications, references, and citations:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="PublicationProxy">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used for resources like publications, laboratory notes, speeches, etc. Provides either a simple free-form text, or a connection to an external resource.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProxyBase">
        <xs:group ref="PublicationInterface"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:group name="PublicationInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
PublicationProxy</xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">@@GH: Two proposals for publication-specific extensions of the proxy base data. Both have advantages and I can imagine either solution. The important thing would be to select a common solution for SDD, ABCD, TaxonNames, LinneanCore, etc.!

GENERAL Note: Some parts of publication representations are already available as proxy base data. These are:
- unconstrained text form as commonly found inpubliched referende (i.e. not atomized belongs into the Label.
- URL location of the article on the web and DOI (digital object identifier) can be found in ObjectLinks)</xs:documentation>
      </xs:annotation>
      <xs:group ref="PublicationInterface_LinnCore_DivWorkbenchProposal"/>
      <xs:group ref="PublicationInterface_MinimizedProposal"/>
    </xs:choice>
  </xs:group>
  <xs:group name="PublicationInterface_LinnCore_DivWorkbenchProposal">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
PublicationProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation>This structure is based on the Linnean Core proposal and checked against the DiversityReferences and ReferenceManager(TM) data structures. It would provide a relatively satisfying full structure usable in the absence of other literature management systems.

Note: Many aspects of reference managers such as keywords, abstracts, availability, or reference types are not supported in the current data interface. However, they may be added and managed inside the generic extension mechanism, see "CustomExtensions" above, .

@@Open question: How to reference a software?</xs:documentation>
      </xs:annotation>
      <xs:element name="Year" type="xs:gYear" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Year as appearing on the publication. Compare TruePublicationDate below.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TruePublicationDate" type="CompositeDate" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Effective date of publication; may be different from year stated on/in the publication. Important for taxonomic or other priority.
[ATTR: year (required), month, day (optional). Typed as gYear, gMonth, gDay; note that gMonth requires '01' instead of '1' for 'Jan.')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Series" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Series of books or articles (the latter may be published in edited books. journals, or on the web).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Title" type="TextWithTranslations" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Series title</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Editors" type="AgentNames" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Series editors</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:choice>
        <xs:element name="Book" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Printed book:
monograph or
edited book with
articles</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Title" type="TextWithTranslations" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Book title (monograph or edited book)</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="EditorsOrAuthors" type="AgentNames" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Book creators are authors if Book is used alone or in combination with Series or Chapter, but editors if used in combination with article</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="VolPartInSeries" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Volume or part in a series</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Pages" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Total range of pages, including foreword, appendices, index and plates/figures.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ISBN" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">International Standard Book Number</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Edition" type="xs:positiveInteger" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Number of the edition of a book.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ReprintData" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Publisher, reprint year, note, etc. for historical books that are reissued.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Periodical" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Periodical/magazine
/journal information</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Title" type="TextWithTranslations" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">We really need BPH and TL2 as standard dictionaries to drive these titles</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="AbbreviatedTitle" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Standardized abbreviated form of title</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Publishers" type="xs:string" minOccurs="0"/>
              <xs:element name="PublicationPlace" type="xs:string" minOccurs="0"/>
              <xs:element name="ISSN" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">International Standard Serial Number</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element name="Publishers" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Publishers of a book, periodical,
or independently published article.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Publisher" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">The name of the publisher (publishing company or institution, including universities or scientific societies).</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PublicationPlace" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">The location where the item being referenced was published, such as a city and state.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Article" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Articles may, e. g., be published in periodicals, edited books, the internet.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Title" type="TextWithTranslations" minOccurs="0"/>
            <xs:element name="Authors" type="AgentNames" minOccurs="0"/>
            <xs:element name="PeriodicalVolume" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Volume of periodical
(empty if article appears in edited book)</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PeriodicalPart" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Part or issue of a periodical volume
(empty if article appears in edited book)</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Pages" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Pages of article. This may include table, or figure numbers for the reference. Examples:  '23-41', '341 pp.', or '20, 22-24, 32' (for non-consecutive pages).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Part" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Optional information about a chapter, section, etc. that has the same authors as the publication in which it is contained. Compare Article for authored chapters in edited books.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Title" type="TextWithTranslations" minOccurs="0"/>
            <xs:element name="Number" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Number of chapter, section, etc.
as used in the publication.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Pages" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Pages of current part ('22-34')</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="PublicationInterface_MinimizedProposal">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
PublicationProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation>This structure is less satisfying in the absence of a literature management system, but it provides some atomization helpful in finding or filtering local proxy data and in associating locally recorded data with external databases at a later time.</xs:documentation>
      </xs:annotation>
      <xs:element name="Creators" type="AgentNames" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">For article, chapter, or monographic book the authors, for an entire edited book the editors. The editors of the book in which an chapter appears are not listed here, but as part of the Source text string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Title" type="TextWithTranslations" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Title of the immediate publication (i.e. title of authored chapter, but not of source book or journal).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Year" type="xs:positiveInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Year as appearing on the publication. Compare TruePublicationDate below.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TruePublicationDate" type="CompositeDate" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">True date of publication, especially if different from stated year. Important for taxonomic or other priority.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Source" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">All remaining information, including Periodical/Volume for articles, or edited book for articles and chapters in a book, with the exceptions of the separate Pages (see below).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Pages" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Pages of article. This may include table, or figure numbers for the reference. Examples:  '23-41', '341 pp.', or '20, 22-24, 32' (for non-consecutive pages).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ISBN" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">International Standard Book Number. @@Although this is an ideal key, this element may be dropped from the selective structure! Only very few references are covered by entire books with ISBN. Articles in journals are far more frequent and it would be more valuable to be better support those.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="PublicationRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Defines an element with a ref attribute pointing to a Publication (ExternalDataInterface/Publications/Publication)</xs:documentation>
    </xs:annotation>
    <xs:attribute name="ref" type="RelationID" use="required"/>
    <xs:attributeGroup ref="debugrefAttribute"/>
  </xs:complexType>
  <xs:complexType name="PublicationRefs">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A collection of elements of PublicationRef type.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Publication" type="PublicationRef" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">[ATTR: ref]</xs:documentation>
        </xs:annotation>
        <xs:keyref name="PublicationProxyKeyref" refer="PublicationProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">--- The following types build on the PublicationProxy infrastructure:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="Citation">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Combines a publication resource reference with a detail location within that reference (esp. page number)</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Publication" type="PublicationRef" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Refers to a publication as defined under ExternalDataInterface/Publications
[ATTR: ref]</xs:documentation>
        </xs:annotation>
        <xs:keyref name="PublicationProxyKeyref_Descr" refer="PublicationProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
      <xs:element name="Location" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Location within publication where the cited data can be found: Page, table, figure number, database record, html document bookmark, etc.
(Note: this is not the page range of
the entire article!).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LastVerified" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">If publication is a non-persistent web resource that may change or disappear, the date at which the citation was verified to be appropriate should be recorded. It may later be updated, but not through a link checker verifying only technical access: the semantics of the citation have to be verified!</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InvalidSince" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">If publication is a non-persistent web resource that can not longer be verified, the date it was found to have disappeared (or became semantically inappropriate) may be recorded.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="__ClassNameInSource" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Verbatim name as it appears in citation. 'sub name xy'
@@ Do we need this? I think the use case may be considered an extension to the Location element. Example: "p. 3, sub Ustilago"@@</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Citations">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A collection of Citation-type elements</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Citation" type="Citation" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">=== Agents (persons, organization, software agent):</xs:documentation>
  </xs:annotation>
  <xs:complexType name="AgentProxy">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Used for Agent documentation (an Agent is a person, project, organization, or software agent). Currently used for authors, editors, contributors, and translators. Ideally it connects to an outside definition or documentation of the Agent.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProxyBase">
        <xs:group ref="AgentInterface"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:group name="AgentInterface">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extensions of 
ProxyBase
specific to 
AgentProxy</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">(The Agent-specific proxy
extension is partly modeled
after elements defined in
vCard 3.0 and Jabber,
see http://www.jabber.org
/jeps/jep-0054.html.)</xs:documentation>
      </xs:annotation>
      <xs:element name="Organisation" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(Mostly vCard:Org)</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Name" type="Label">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Full organization or corporate name in multiple languages (en: 'Botanical Garden of ...', de: 'Botanischer Garten von ...').
(vCard:Org.OrgName)

The standard Label mechanism also supports acronyms/abbreviations
(no vCard equivalent!). For collections, the organisation abbreviation maps to Darwin Core 2: Institution Code.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Units" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">If Agent contains no person definition: the unit within the organization the agent represents, else a list of the various organisational units to which a person may belong. (vCard:OrgUnit)</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Unit" type="StringL" maxOccurs="unbounded">
                    <xs:annotation>
                      <xs:documentation xml:lang="en-us">(vCard:OrgUnit)</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:choice>
        <xs:element name="Person" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">(There is no equivalent to
vCard:FN/full name here,
this is already covered by
proxy Label above).

For the problems involved in atomizing names from different cultures compare
http://dublincore.org/documents/1998/
02/03/name-representation/ See also http://efgblade.cs.umb.edu/twiki/bin/ view/SDD/ProxyDataAgentProxy on our own WIKI.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:choice>
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">@@ To be decided
before schema can
be published! @@</xs:documentation>
                </xs:annotation>
                <xs:group ref="PersonNameProposal1"/>
                <xs:group ref="PersonNameProposal2"/>
              </xs:choice>
              <xs:element name="SortingName" type="String255" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">The full name in preferred sorting sequence, i. e. with main name first. Use case: sorting, reporting in sorted lists.
Examples: 'Duarte, Amália Mourinha' (pt), 'Pina de Morales, Ana Maria' (es).
(vCard:Sort-String)</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Title" type="Label" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Professional or academic title of
individual person (prefer using Role for job titles!) (vCard:Title)</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Sex" type="BasicSexCodeEnum" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Enumeration of male, female, unknown
(vCard no equivalent)</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Birthdate" type="xs:dateTime" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Birthday of person.
(vCard:BDay, may include time)</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Deathdate" type="xs:dateTime" minOccurs="0">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">Death date of a deceased person.
(vCard: not surprisingly no equivalent)</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Software" minOccurs="0">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">(Software agents are
not handled by vCard!)</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Name" type="String255">
                <xs:annotation>
                  <xs:documentation xml:lang="en-us">(Software agents probably need to be extended in future versions.)</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element name="Role" type="Label" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Role of Person or Organization in context. This element can be used to provide a title such as "Database Administrator" or "Curator" even when no individual person is named.
(vCard:Role)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Contact" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">@@Note gh: I see a problem with the unparsed address proposals in the original ABCD model and in two of the alternatives presented here, in that the Label for the Agent often requires the addition of city/country to disambiguate multiple agents with the same name</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Addresses" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">(vCard:Adr)</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:choice>
                  <xs:annotation>
                    <xs:documentation xml:lang="en-us">@@ To be decided
before schema can
be published! @@</xs:documentation>
                  </xs:annotation>
                  <xs:group ref="ContactAddressProposal1"/>
                  <xs:group ref="ContactAddressProposal2"/>
                  <xs:group ref="ContactAddressProposal3"/>
                </xs:choice>
              </xs:complexType>
            </xs:element>
            <xs:element name="Telephones" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Telephone/fax/modem
numbers (vCard:Tel)</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Telephone" type="TelephoneNumber" maxOccurs="unbounded">
                    <xs:annotation>
                      <xs:documentation xml:lang="en-us">[ATTR: number = should be provided in the ITU Recommendation E.164 international format ("+CountryCode AreaCode Number") (vCard:Tel.Number)
ATTR: devicetype = voice, fax, mobile, pager, modem (identical with vCard:Tel.Voice etc.; if several are on a single phone number list the phone number with each device type!)
ATTR: usagenote = free-form text for constraints on use e. g. "weekdays only" or "home number" (partly: vCard:Tel.Home/Work flags)
ATTR: preferred = preferred number, may occur multiple times for different device types (vCard:Tel.Pref)]</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="Emails" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">E-mail addresses
(vCard:Email)</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="EmailAddress" type="StringP255" maxOccurs="unbounded">
                    <xs:annotation>
                      <xs:documentation xml:lang="en-us">E-mail address for contact
(vCard:Email.UserID; this also has Home/Work flags not supported here)
[ATTR: preferred (vCard:Email.Pref)]</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="URIs" minOccurs="0">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">URI pointing to a homepage with further information. Note: If the Agent has a permanent URN representation, it is expected in ObjectLink in the base type.
(vCard:URL, vCard supports only 1 URL)</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="URI" type="anyUriP" maxOccurs="unbounded">
                    <xs:annotation>
                      <xs:documentation xml:lang="en-us">URL for person or organization
[ATTR: preferred]</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LogoURL" type="xs:anyURI" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">URL of logo or icon image; usually of organization but may also be used by a person. (vCard:Logo)

(Note: vCard:Note maps to Annotation
in the base type!)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="PersonNameProposal1">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided!</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">PROPOSAL 1:
Atomized structure</xs:documentation>
      </xs:annotation>
      <xs:element name="InheritedName" type="String255">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Family names, generational names, clan name, parents/grandparents personal names, etc. This (= last name in western cultures) may be compound ('Fischer von Waldheim', 'da Selva', 'Silvano Morales'). Depending on culture it is not necessarily the name of the parents nor common to the married couple and children, thus 'family name' should be avoided even though used in vCard.  (vCard:N.Family)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Prefix" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Prefix to name that should be output before name, but is usually not included in sorting. Examples: 'Prof.', 'Dr.', 'von', 'Lord'. (vCard:N.Prefix)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Suffix" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Suffix to name that should be output after name, regardless whether it is in sorting sequence (Inherited, Given) or not. Examples: 'Jun.', 'III.'. (vCard:N.Suffix)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GivenNames" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">The name given to a person as a personal name (= first or christian name in western cultures, including 'middle initials') may contain several words ('Ana Maria', 'Jerry B.'). Applicable only to persons. (vCard:N.Given + vCard:N.Middle)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PreferredName" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">May differ from the first given name: second given name, nickname ('Bob' for 'Robert'), etc. (vCard:Nickname)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="PersonNameProposal2">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided!</xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">PROPOSAL 2:
Name-variant
structure
@@ Seq.
temporarily
made
optional @@</xs:documentation>
      </xs:annotation>
      <xs:element name="FormalFullName" type="String255">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Preferred version of complete name in forward sequence as defined by the culture of the name-bearer. Use case: reporting. Examples: 'Maria Amália Mourinha Duarte' (pt), 'Ana Maria Pina de Morales' (es),</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InformalFullName" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">A version of the name in forward sequence used in informal usage. Use case: reporting. Example: 'Bob Morris' for 'Prof. Dr. Robert Morris', 'Amália Mourinha Duarte' (pt), 'Ana Pina de Morales' (es).</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="ContactAddressProposal1">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided!</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Proposal 1:
ABCD-style
single string</xs:documentation>
      </xs:annotation>
      <xs:element name="Address" type="StringLP" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Contact address.
Each element should be one address; do not use multiple elements for each line!
(vCard:Adr.POBox + .ExtAdr + .Street + .Locality + .Region + .PCode + .Ctry)
[ATTR: language, preferred (vCard:Pref)]

@@vCard defines further attributes:
Home/Work, Postal/Parcel, Dom/Intl
Also, vCard atomizes the address, see proposal 2 below.
Perhaps at least the country should be specified in ISO 2-letter codes?</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="ContactAddressProposal2">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided!</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Proposal 2:
Similar to
ABCD-style,
but using
UDDI-style
address lines</xs:documentation>
      </xs:annotation>
      <xs:element name="Address" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">Contact address.
(vCard:Adr.POBox + .ExtAdr + .Street + .Locality + .Region + .PCode + .Ctry)
[ATTR: language, preferred (vCard:Pref)]</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line" type="String255" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation xml:lang="en-us">Address line</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="languageOptionalAttribute"/>
          <xs:attributeGroup ref="preferredOptionalAttribute"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="ContactAddressProposal3">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">### To be decided!</xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Proposal 3: model
following the
atomized vCard
fields 1:1.</xs:documentation>
      </xs:annotation>
      <xs:element name="POBox" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.POBox)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtAdr" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.ExtAdr)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Street" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.Street)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Locality" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.Locality)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Region" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.Region)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostalCode" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.PCode)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Country" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(vCard:Adr.Ctry)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="__Note" type="String255" minOccurs="0">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">@@vCard defines further attributes:
Home/Work, Postal/Parcel, Dom/Intl</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="AgentRefBase" abstract="true">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Abstract base type for AgentRef and MicroAgent. The ref attribute is optional here!</xs:documentation>
    </xs:annotation>
    <xs:attribute name="ref" type="RelationID" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="en-us">Reference to a Agents (ExternalDataInterface/Agents/Agent)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="debugrefAttribute"/>
  </xs:complexType>
  <xs:complexType name="MicroAgent">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Provides a minimalized local Agent definition together with an optional Agent reference (ref attribute). In principle this is derived from AgentRef, but to properly do it</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="AgentRefBase">
        <xs:sequence>
          <xs:element name="Name" type="String255">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">Person or role name
(e. g., 'head of departement')</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Email" type="String255" minOccurs="0"/>
          <xs:element name="Phone" type="String255" minOccurs="0">
            <xs:annotation>
              <xs:documentation xml:lang="en-us">(voice phone)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Address" type="String" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AgentRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Defines an element with a required ref attribute pointing to an Agent (ExternalDataInterface/Agents/Agent)</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="AgentRefBase">
        <xs:attribute name="ref" type="RelationID" use="required">
          <xs:annotation>
            <xs:documentation xml:lang="en-us">Makes the optional base type attribute required.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AgentRefs">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">A collection of AgentRef-type elements, i. e. Agents forming a team like an author team.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Agent" type="AgentRef" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation xml:lang="en-us">(The sequence of elements
in instance documents
is informative!) [ATTR: ref]</xs:documentation>
        </xs:annotation>
        <xs:keyref name="AgentProxyKeyref" refer="AgentProxyKey">
          <xs:selector xpath="."/>
          <xs:field xpath="@ref"/>
        </xs:keyref>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en-us">--- The following types build on the AgentProxy infrastructure:</xs:documentation>
  </xs:annotation>
  <xs:complexType name="RichAgentRef">
    <xs:annotation>
      <xs:documentation xml:lang="en-us">Extension of AgentRef with a role attribute and three attributes recording object-specific contributions.</xs:documentation>
    </xs:annotation>
    <x