<?xml version="1.0" encoding="UTF-8"?>
<!--
   PLEASE DO NOT EDIT THIS CODE!
   This code was generated by the Eclipse Acceleo module UCMIS M2T on 2025-01-25 15:34:53.
   Target language is 'XML Schema' ('xsd') generated on the basis of the model 'DDICDIModels'.
-->
<!--

XML Schema generated on the basis of the UML model DDI-CDI.

Acronym:       DDI-CDI 
Title:         DDI Cross Domain Integration
Subtitle:      Release
Major version: 1
Minor version: 0
URI:           http://ddialliance.org/Specification/DDI-CDI/1.0/

-->
<xs:schema xmlns="http://ddialliance.org/Specification/DDI-CDI/1.0/XMLSchema/"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
           targetNamespace="http://ddialliance.org/Specification/DDI-CDI/1.0/XMLSchema/"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           version="1.0"
           vc:minVersion="1.1">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="xml.xsd"/>
  <xs:group name="AllElementsDerivedFromClasses">
    <xs:annotation>
      <xs:documentation>This group comprehends all elements which are based on classes in the UML model.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1"
                 maxOccurs="unbounded">
        <xs:element ref="Activity" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Agent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AgentListing" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AgentPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AgentRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AgentStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AllenIntervalAlgebra" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AttributeComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="AuthorizationSource" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Category" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CategoryPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CategoryRelationStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CategoryRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CategorySet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CategoryStatistic" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationFamily" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationIndex" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationIndexEntry" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationIndexEntryPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationItem" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationItemPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationItemRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationItemStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationSeries" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ClassificationSeriesStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Code" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CodeList" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CodeListStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CodePosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CodeRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ComponentPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Concept" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptMap" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptSystem" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptSystemCorrespondence" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptualDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptualValue" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConceptualVariable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ConditionalControlLogic" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ContextualComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ControlLogic" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="CorrespondenceTable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Curator" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataPoint" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataPointPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataPointRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataStore" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DataStructureComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Datum" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Descriptor" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DescriptorValueDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DescriptorVariable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DeterministicImperative" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionGroup" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalDataSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalDataStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalKeyDefinition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalKeyDefinitionMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="DimensionalKeyMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="EnumerationDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ForeignKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ForeignKeyComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="IdentifierComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Individual" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="InformationFlowDefinition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="InstanceKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="InstanceValue" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="InstanceVariable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="InstanceVariableMap" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Key" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="KeyDefinition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="KeyDefinitionMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="KeyMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="KeyValueDataStore" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="KeyValueStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Level" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LevelStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LogicalRecord" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LogicalRecordPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LogicalRecordRelationStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LogicalRecordRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LongDataSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LongDataStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LongKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="LongMainKeyMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Machine" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="MainKeyMember" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="MeasureComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="NonDeterministicDeclarative" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Notation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Organization" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Parameter" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalDataSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalDataSetStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalLayoutRelationStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalRecordSegment" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalRecordSegmentPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalRecordSegmentRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalRecordSegmentStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalSegmentLayout" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PhysicalSegmentLocation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Population" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PrimaryKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="PrimaryKeyComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ProcessingAgent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ProductionEnvironment" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="QualifiedMeasure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="RecordRelation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ReferenceValue" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ReferenceValueDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ReferenceVariable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="RepresentedVariable" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="RevisableDatum" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Revision" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="RuleBasedScheduling" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="RuleSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ScopedMeasure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SegmentByText" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SentinelConceptualDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SentinelValueDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Sequence" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SequencePosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Service" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="StatisticalClassification" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="StatisticalClassificationRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Step" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SubstantiveConceptualDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SubstantiveValueDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="SyntheticIdComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="TemporalConstraints" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="TemporalControlConstruct" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Unit" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="UnitSegmentLayout" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="UnitType" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="Universe" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ValueAndConceptDescription" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ValueDomain" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ValueMapping" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ValueMappingPosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="ValueMappingRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariableCollection" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariableDescriptorComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariablePosition" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariableRelationship" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariableStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="VariableValueComponent" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="WideDataSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="WideDataStructure" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="WideKey" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="WideKeyMember" minOccurs="0" maxOccurs="unbounded"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:element name="DDICDIModels"
              type="DDICDIModelsXsdType"
              xml:id="DDICDIModels">
    <xs:annotation>
      <xs:documentation>DDI-CDI Specification
            =====================
            
            The DDI-Cross Domain Integration (DDI-CDI) specification provides a
            model for working with a wide variety of research data across many
            scientific and policy domains. It provides a level of detail which
            supports machine-actionable processing of data, both within and between
            systems, and is designed to be easily aligned with other standards.
            
            It focuses on the key elements of the data management challenges facing
            research today: an exact understanding of data in a wide variety of
            formats, coming from many different sources. Two elements are critical
            for dealing with these challenges: a flexible means of describing data
            that can reveal the connections between the same data existing in
            different formats, and a means of describing the provenance of the data
            at a detailed (but comprehensible) level: the processes which produced
            it must be transparent.
            
            DDI-CDI covers these areas in a fashion intended to make it optimally
            useful to modern systems, which often employ a variety of models, and
            comply with a range of related specifications for both functions related
            to data description and process/provenance. The model is designed to be
            easy to fit into such systems, by aligning with relevant external
            standards, and to be align-able with them into the future.
            
            The core model field-level documentation is available in the section
            :ref:`DDICDIModels::DDICDILibrary`.
            
            The corresponding Git repository can be found at
            https://github.com/ddi-cdi/ddi-cdi. 
            
            Further information on DDI-CDI is available at the
            related DDI Alliance web page https://ddialliance.org/Specification/DDI-CDI/.
            
            Purpose
            -------
            
            The DDI-CDI specification describes a model and supporting elements for
            implementing it in the areas of data description and process/provenance.
            It is not intended to supplant existing specifications for these
            purposes, but to fill in the information which such specifications often
            do not capture. For data, this is the description of a single bit of
            information – a datum – which can be used to play different roles in
            different data structures and formats. For provenance and process, this
            is the packaging of specific machine-level processes, which may be
            described in many different ways, into a structure which relates them to
            the business processes described at a level understandable to human
            users.
            
            In order to serve this purpose, the DDI-CDI specification uses a Unified
            Modeling Language (UML) formalization so that it can be mapped against
            other models within systems more easily. Several different syntax
            expressions of the model are made available to support implementation.
            
            Several important features of the specification can be highlighted, to
            show how it serves this purpose:
            
            -  Domain-independence
            
            -  Datum-Oriented Data Description
            
            -  Provenance and Process Description
            
            -  Foundational Metadata
            
            -  Interoperability, Sustainability, and Alignment with Other Standards
            
            Each of these will be addressed in more detail, and an outline of the
            specification documents is presented.
            
            Key Features of the Specification
            ---------------------------------
            
            **Domain Independence**
            
            DDI-CDI is designed to be used with research data from any domain. In
            order to do this, it is fundamentally based on the structure and other
            generic aspects of the things it describes. It does not attempt to be a
            domain model of semantics, nor a model specific to the life-cycle of a
            particular domain of science or research. (Historically, DDI has focused
            on the Social, behavioral, and Economic [SBE] sciences and some types of
            health research – to see how DDI-CDI relates to other DDI
            specifications, see below.)
            
            DDI-CDI is intended to be complimentary to (and used in combination
            with) other standards and models which focus more on domain-specific
            aspects (such as semantics and life-cycle models). Such generic elements
            such as classifications and variables are given a detailed formal
            treatment but are agnostic as to the domain. It is left to the user to
            employ whatever domain semantics are demanded by the data with which
            they are working.
            
            This feature of the specification makes it well-suited to combining data
            coming from more than one domain or system, to allow a description that
            supports systems which perform data integration, harmonization, and
            similar functions. Cross-domain data sharing is becoming increasingly
            common, and DDI-CDI is intended to provide support for this type of
            application.
            
            **Datum-Oriented Data Description**
            
            DDI-CDI embraces a form of data description which is based on its atomic
            components: individual datums. Any given datum can play different roles
            in different formatting of the same data set, depending on how it is
            processed and transformed. In order to retain the continuity of a given
            datum across different formats and throughout a series of processes,
            DDI-CDI allows it to be described playing different roles in different
            structures.
            
            DDI-CDI provides four basic types of structural description for data
            sets: wide data, long data, dimensional data, and key-value data. These
            four types (and their sub-types) provide coverage for many common data
            formats today. While not comprehensive, they cover the majority of cases
            that the developers of this specification have seen. These include many
            of the newer forms of data such as streaming data, "big" data,
            registers, and instrument data. The underlying approach is one which
            could – and may be – expanded in future. By assigning appropriate roles
            to the variables which contain the datums across each of these different
            formats, however, it is possible to understand how data passes from one
            form to another.
            
            **Provenance and Process Description**
            
            If we are to fully understand data, we also need to know how it has been
            processed and transformed. Given our ability to describe how a different
            datum can be used in different data sets, it becomes desirable to
            understand also how those data sets relate to one another in terms of
            the processes which use them. This can be understood as an important
            aspect of data provenance.
            
            There are many different ways of describing process and provenance.
            Popular models include the Business Process Modelling and Notation
            (BPMN) standard and the PROV Ontology (from W3C). There are a multitude
            of syntaxes for driving data transformation, cleaning, and analysis in
            packages such as R, SAS, Stata, MATLab, SPSS, Python, and so on. There
            are also some emerging standard models for specifically describing such
            processes (e.g., Structured Data Transformation Language
            [SDTL], https://ddialliance.org/products/sdtl/1.0, Validation and
            Transformation Language [VTL], https://sdmx.org/?page_id=5096).
            
            DDI-CDI attempts to do something which complements the use of such
            models, by connecting specific processes interpretable by machines at
            the lowest level (described in a package-specific syntax or language)
            with the higher-level flows which combine these into human-readable
            documentation of business processes. Both traditional linear
            (deterministic) processing and the newer declarative (non-deterministic)
            processing approaches are supported.
            
            **Foundational Metadata**
            
            In order to formally describe data at a detailed level, there are many
            component elements which themselves must be modelled. Concepts used for
            statistical data but also widely applicable – including categories and
            variables – are a core part of this, but the range is broad. These
            components are included in DDI-CDI as "foundational metadata."
            
            Terminology for such constructs varies widely across domains. DDI-CDI
            has attempted to provide common terms for these components, and to adopt
            common models from other standards where it seemed useful.
            
            One area which deserves particular attention is the "variable cascade" –
            a model for how data are described at different points in their
            creation, processing, and use, which is designed to optimize reuse.
            While many different models have a "variable" of some form, the one
            presented in DDI-CDI reflects the experience of working with this
            important construct in many of the specifications and standards which
            have preceded it. It is a nuanced view of how variables relate and are
            understood across different systems, and – although not simple – it is a
            powerful model which helps solve some of the commonly encountered
            problems in data description and management.
            
            **Interoperability, Sustainability, and Alignment with Other Standards**
            
            DDI-CDI is fundamentally a model which is intended to be implemented
            across a wide variety of technology platforms, and in combination with
            many other standards, models, and specifications. To support this use,
            it is formalized using a limited subset of the Unified Modelling
            Language (UML) class diagram part. The model is provided in the form of
            Canonical XMI (restricted XML Metadata Interchange) – an interchange
            format for UML models supporting the import into many different
            modelling and development tools. Further, a syntax representation is
            provided in XML Schema, so that direct implementation of the model is
            possible if needed.
            
            The platform-independence of the model makes it more easily applicable
            across a broad range of applications and helps ensure that it will be
            sustainable even as the technology landscape evolves.
            
            DDI-CDI builds on many other standard models and is aligned with them
            where appropriate. This is shown in the model itself, where
            formalizations from other models and specifications are refined,
            extended, or directly used. The specification includes a description of
            what these other standards and models are, and how they are used in DDI-CDI.
            
            High-Level Documentation
            ------------------------
            Further details are described in the `high-level documentation &lt;/high-level-documentation/DDI-CDI_Model_Specification.pdf&gt;`_, which is also available on the corresponding DDI Alliance webpage https://ddialliance.org/Specification/DDI-CDI/.
            
            Credits
            -------
            
            Members of the Cross Domain Integration (CDI) Working Group shepherded the standard into its final form and produced the final documentation. Listed in alphabetical order they are: 
            
            -  Arofan Gregory (chair)
            -  Dan Gillman
            -  Flavio Rizzolo
            -  Hilde Orten
            -  Jay Greenfield
            -  Joachim Wackerow
            -  Larry Hoyle
            -  Oliver Hopt
            -  Wendy Lee Thomas (Technical Committee contact)
            
            Over 100 people have contributed to the development of the Data Documentation Initiative Cross Domain Integration (DDI-CDI) specification. A more complete description of their contribution to the work can be found at https://github.com/ddi-cdi/ddi-cdi/blob/main/CREDITS.md.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DDICDIModelsXsdType"
                  xml:id="DDICDIModelsXsdType">
    <xs:annotation>
      <xs:documentation>DDI-CDI Specification
            =====================
            
            The DDI-Cross Domain Integration (DDI-CDI) specification provides a
            model for working with a wide variety of research data across many
            scientific and policy domains. It provides a level of detail which
            supports machine-actionable processing of data, both within and between
            systems, and is designed to be easily aligned with other standards.
            
            It focuses on the key elements of the data management challenges facing
            research today: an exact understanding of data in a wide variety of
            formats, coming from many different sources. Two elements are critical
            for dealing with these challenges: a flexible means of describing data
            that can reveal the connections between the same data existing in
            different formats, and a means of describing the provenance of the data
            at a detailed (but comprehensible) level: the processes which produced
            it must be transparent.
            
            DDI-CDI covers these areas in a fashion intended to make it optimally
            useful to modern systems, which often employ a variety of models, and
            comply with a range of related specifications for both functions related
            to data description and process/provenance. The model is designed to be
            easy to fit into such systems, by aligning with relevant external
            standards, and to be align-able with them into the future.
            
            The core model field-level documentation is available in the section
            :ref:`DDICDIModels::DDICDILibrary`.
            
            The corresponding Git repository can be found at
            https://github.com/ddi-cdi/ddi-cdi. 
            
            Further information on DDI-CDI is available at the
            related DDI Alliance web page https://ddialliance.org/Specification/DDI-CDI/.
            
            Purpose
            -------
            
            The DDI-CDI specification describes a model and supporting elements for
            implementing it in the areas of data description and process/provenance.
            It is not intended to supplant existing specifications for these
            purposes, but to fill in the information which such specifications often
            do not capture. For data, this is the description of a single bit of
            information – a datum – which can be used to play different roles in
            different data structures and formats. For provenance and process, this
            is the packaging of specific machine-level processes, which may be
            described in many different ways, into a structure which relates them to
            the business processes described at a level understandable to human
            users.
            
            In order to serve this purpose, the DDI-CDI specification uses a Unified
            Modeling Language (UML) formalization so that it can be mapped against
            other models within systems more easily. Several different syntax
            expressions of the model are made available to support implementation.
            
            Several important features of the specification can be highlighted, to
            show how it serves this purpose:
            
            -  Domain-independence
            
            -  Datum-Oriented Data Description
            
            -  Provenance and Process Description
            
            -  Foundational Metadata
            
            -  Interoperability, Sustainability, and Alignment with Other Standards
            
            Each of these will be addressed in more detail, and an outline of the
            specification documents is presented.
            
            Key Features of the Specification
            ---------------------------------
            
            **Domain Independence**
            
            DDI-CDI is designed to be used with research data from any domain. In
            order to do this, it is fundamentally based on the structure and other
            generic aspects of the things it describes. It does not attempt to be a
            domain model of semantics, nor a model specific to the life-cycle of a
            particular domain of science or research. (Historically, DDI has focused
            on the Social, behavioral, and Economic [SBE] sciences and some types of
            health research – to see how DDI-CDI relates to other DDI
            specifications, see below.)
            
            DDI-CDI is intended to be complimentary to (and used in combination
            with) other standards and models which focus more on domain-specific
            aspects (such as semantics and life-cycle models). Such generic elements
            such as classifications and variables are given a detailed formal
            treatment but are agnostic as to the domain. It is left to the user to
            employ whatever domain semantics are demanded by the data with which
            they are working.
            
            This feature of the specification makes it well-suited to combining data
            coming from more than one domain or system, to allow a description that
            supports systems which perform data integration, harmonization, and
            similar functions. Cross-domain data sharing is becoming increasingly
            common, and DDI-CDI is intended to provide support for this type of
            application.
            
            **Datum-Oriented Data Description**
            
            DDI-CDI embraces a form of data description which is based on its atomic
            components: individual datums. Any given datum can play different roles
            in different formatting of the same data set, depending on how it is
            processed and transformed. In order to retain the continuity of a given
            datum across different formats and throughout a series of processes,
            DDI-CDI allows it to be described playing different roles in different
            structures.
            
            DDI-CDI provides four basic types of structural description for data
            sets: wide data, long data, dimensional data, and key-value data. These
            four types (and their sub-types) provide coverage for many common data
            formats today. While not comprehensive, they cover the majority of cases
            that the developers of this specification have seen. These include many
            of the newer forms of data such as streaming data, "big" data,
            registers, and instrument data. The underlying approach is one which
            could – and may be – expanded in future. By assigning appropriate roles
            to the variables which contain the datums across each of these different
            formats, however, it is possible to understand how data passes from one
            form to another.
            
            **Provenance and Process Description**
            
            If we are to fully understand data, we also need to know how it has been
            processed and transformed. Given our ability to describe how a different
            datum can be used in different data sets, it becomes desirable to
            understand also how those data sets relate to one another in terms of
            the processes which use them. This can be understood as an important
            aspect of data provenance.
            
            There are many different ways of describing process and provenance.
            Popular models include the Business Process Modelling and Notation
            (BPMN) standard and the PROV Ontology (from W3C). There are a multitude
            of syntaxes for driving data transformation, cleaning, and analysis in
            packages such as R, SAS, Stata, MATLab, SPSS, Python, and so on. There
            are also some emerging standard models for specifically describing such
            processes (e.g., Structured Data Transformation Language
            [SDTL], https://ddialliance.org/products/sdtl/1.0, Validation and
            Transformation Language [VTL], https://sdmx.org/?page_id=5096).
            
            DDI-CDI attempts to do something which complements the use of such
            models, by connecting specific processes interpretable by machines at
            the lowest level (described in a package-specific syntax or language)
            with the higher-level flows which combine these into human-readable
            documentation of business processes. Both traditional linear
            (deterministic) processing and the newer declarative (non-deterministic)
            processing approaches are supported.
            
            **Foundational Metadata**
            
            In order to formally describe data at a detailed level, there are many
            component elements which themselves must be modelled. Concepts used for
            statistical data but also widely applicable – including categories and
            variables – are a core part of this, but the range is broad. These
            components are included in DDI-CDI as "foundational metadata."
            
            Terminology for such constructs varies widely across domains. DDI-CDI
            has attempted to provide common terms for these components, and to adopt
            common models from other standards where it seemed useful.
            
            One area which deserves particular attention is the "variable cascade" –
            a model for how data are described at different points in their
            creation, processing, and use, which is designed to optimize reuse.
            While many different models have a "variable" of some form, the one
            presented in DDI-CDI reflects the experience of working with this
            important construct in many of the specifications and standards which
            have preceded it. It is a nuanced view of how variables relate and are
            understood across different systems, and – although not simple – it is a
            powerful model which helps solve some of the commonly encountered
            problems in data description and management.
            
            **Interoperability, Sustainability, and Alignment with Other Standards**
            
            DDI-CDI is fundamentally a model which is intended to be implemented
            across a wide variety of technology platforms, and in combination with
            many other standards, models, and specifications. To support this use,
            it is formalized using a limited subset of the Unified Modelling
            Language (UML) class diagram part. The model is provided in the form of
            Canonical XMI (restricted XML Metadata Interchange) – an interchange
            format for UML models supporting the import into many different
            modelling and development tools. Further, a syntax representation is
            provided in XML Schema, so that direct implementation of the model is
            possible if needed.
            
            The platform-independence of the model makes it more easily applicable
            across a broad range of applications and helps ensure that it will be
            sustainable even as the technology landscape evolves.
            
            DDI-CDI builds on many other standard models and is aligned with them
            where appropriate. This is shown in the model itself, where
            formalizations from other models and specifications are refined,
            extended, or directly used. The specification includes a description of
            what these other standards and models are, and how they are used in DDI-CDI.
            
            High-Level Documentation
            ------------------------
            Further details are described in the `high-level documentation &lt;/high-level-documentation/DDI-CDI_Model_Specification.pdf&gt;`_, which is also available on the corresponding DDI Alliance webpage https://ddialliance.org/Specification/DDI-CDI/.
            
            Credits
            -------
            
            Members of the Cross Domain Integration (CDI) Working Group shepherded the standard into its final form and produced the final documentation. Listed in alphabetical order they are: 
            
            -  Arofan Gregory (chair)
            -  Dan Gillman
            -  Flavio Rizzolo
            -  Hilde Orten
            -  Jay Greenfield
            -  Joachim Wackerow
            -  Larry Hoyle
            -  Oliver Hopt
            -  Wendy Lee Thomas (Technical Committee contact)
            
            Over 100 people have contributed to the development of the Data Documentation Initiative Cross Domain Integration (DDI-CDI) specification. A more complete description of their contribution to the work can be found at https://github.com/ddi-cdi/ddi-cdi/blob/main/CREDITS.md.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:group ref="AllElementsDerivedFromClasses"
                minOccurs="1"
                maxOccurs="1">
      </xs:group>
      <xs:element ref="Wrapper" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Wrapper"
              type="WrapperXsdType"
              xml:id="Wrapper">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Information structured according to the DDI-CDI model for a specific purpose or purposes within a system or community.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WrapperXsdType"
                  xml:id="WrapperXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Information structured according to the DDI-CDI model for a specific purpose or purposes within a system or community.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Wrapper-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supportingInformation"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Wrapper-supportingInformation">
        <xs:annotation>
          <xs:documentation>Information structured according to a non-DDI-CDI specification which is relevant to the understanding and/or processing of the content of Wrapper.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:group ref="AllElementsDerivedFromClasses"
                minOccurs="1"
                maxOccurs="1">
      </xs:group>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Activity"
              type="ActivityXsdType"
              xml:id="Activity">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Activity -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An activity is a task described at a conceptual level. It is not parameterized and as such is less reusable. For more logical/physical, fine-grained, reusable description there is a sub-type called step.  
            
            Examples 
            ========== 
            Phases and sub-processes of the Generic Statistical Business Process Model (GSBPM) are examples of activity.  
            
            Explanatory notes 
            =================== 
            An activity is invoked by control logic. It may use and/or produce information objects referenced with the entityUsed and entityProduced attributes.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ActivityXsdType"
                  xml:id="ActivityXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An activity is a task described at a conceptual level. It is not parameterized and as such is less reusable. For more logical/physical, fine-grained, reusable description there is a sub-type called step.  
            
            Examples 
            ========== 
            Phases and sub-processes of the Generic Statistical Business Process Model (GSBPM) are examples of activity.  
            
            Explanatory notes 
            =================== 
            An activity is invoked by control logic. It may use and/or produce information objects referenced with the entityUsed and entityProduced attributes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="definition"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Activity-definition">
        <xs:annotation>
          <xs:documentation>Natural language statement conveying the meaning of a concept, differentiating it from other concepts. Supports the use of multiple languages and structured text. 'externalDefinition' can't be used if 'definition' is used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Activity-description">
        <xs:annotation>
          <xs:documentation>A description of the Activity in human-readable language.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="entityProduced"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity-entityProduced">
        <xs:annotation>
          <xs:documentation>The thing resulting from the activity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="entityUsed"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity-entityUsed">
        <xs:annotation>
          <xs:documentation>A thing employed in the activity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Activity-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="standardModelMapping"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity-standardModelMapping">
        <xs:annotation>
          <xs:documentation>A reference to a standard process model from which the Activity is taken, such as The Generic Statistical Business Process Model (GSBPM), the Generic Longitudinal Business Process Model (GLBPM), Open Archive Information System (OAIS) model, etc. The model and step or sub-step corresponding to the Activity is noted here using the Paired External Controlled Vocabulary Entry. Enter the name of the model in "term" and the step, sub-step, or specific portion of the model in "extent".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Activity_hasInternal_ControlLogic"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity_hasInternal_ControlLogic">
        <xs:annotation>
          <xs:documentation>An activity is embedded in the control construct which launches it.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Activity_hasInternal_ControlLogic-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Activity_hasInternal_ControlLogic-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AllenIntervalAlgebra"/>
                      <xs:enumeration value="ConditionalControlLogic"/>
                      <xs:enumeration value="ControlLogic"/>
                      <xs:enumeration value="DeterministicImperative"/>
                      <xs:enumeration value="NonDeterministicDeclarative"/>
                      <xs:enumeration value="RuleBasedScheduling"/>
                      <xs:enumeration value="Sequence"/>
                      <xs:enumeration value="TemporalConstraints"/>
                      <xs:enumeration value="TemporalControlConstruct"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Activity_hasSubActivity_Activity"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity_hasSubActivity_Activity">
        <xs:annotation>
          <xs:documentation>An Activity is a container for SubActivities.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Activity_hasSubActivity_Activity-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Activity_hasSubActivity_Activity-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Activity"/>
                      <xs:enumeration value="Step"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Activity_has_Step"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Activity_has_Step">
        <xs:annotation>
          <xs:documentation>Activities may be broken out into Steps. Steps are also a subtype of Activity.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Activity_has_Step-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Activity_has_Step-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Step"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Agent"
              type="AgentXsdType"
              xml:id="Agent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::Agent -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Actor that performs a role in relation to a process or product.
            
            Examples
            ========
            Analyst performing edits on data, interviewer conducting an interview, a relational database management system managing data, organization publishing data on a regular basis, creator or contributor of a publication.
            
            Explanatory notes
            =================
            foaf:Agent is: An agent (eg. person, group, software or physical artifact). prov:Agent is: An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentXsdType"
                  xml:id="AgentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Actor that performs a role in relation to a process or product.
            
            Examples
            ========
            Analyst performing edits on data, interviewer conducting an interview, a relational database management system managing data, organization publishing data on a regular basis, creator or contributor of a publication.
            
            Explanatory notes
            =================
            foaf:Agent is: An agent (eg. person, group, software or physical artifact). prov:Agent is: An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Agent-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Agent-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="image"
                  type="PrivateImageXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Agent-image">
        <xs:annotation>
          <xs:documentation>Information regarding image associated with the agent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Agent-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AgentListing"
              type="AgentListingXsdType"
              xml:id="AgentListing">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::AgentListing -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Listing of agents of any type who may be organized to describe relationships between agents.  
            
            Examples 
            ========== 
            Organizations contributing to a project. Individuals within an agency. All organizations, individuals, and machines identified within the collections of an archive. A listing of organizations contributing to a network for the purposes of providing data.
            
            Explanatory notes 
            =================== 
            Relationships between agents are fluid and reflect effective dates of the relationship. An agent may have multiple relationships which may be sequential or concurrent. Relationships may or may not be hierarchical in nature. All Agents are serialized individually and brought into relationships as appropriate.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentListingXsdType"
                  xml:id="AgentListingXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Listing of agents of any type who may be organized to describe relationships between agents.  
            
            Examples 
            ========== 
            Organizations contributing to a project. Individuals within an agency. All organizations, individuals, and machines identified within the collections of an archive. A listing of organizations contributing to a network for the purposes of providing data.
            
            Explanatory notes 
            =================== 
            Relationships between agents are fluid and reflect effective dates of the relationship. An agent may have multiple relationships which may be sequential or concurrent. Relationships may or may not be hierarchical in nature. All Agents are serialized individually and brought into relationships as appropriate.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="AgentListing-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical "bag" permits duplicates and is unordered - a "set" does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentListing-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentListing-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentListing-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AgentListing_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentListing_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentListing_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentListing_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AgentListing_isMaintainedBy_Agent"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentListing_isMaintainedBy_Agent">
        <xs:annotation>
          <xs:documentation>The unit or group of persons within the organization responsible for the agent listing (i.e., for adding, changing or deleting agent entries).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentListing_isMaintainedBy_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentListing_isMaintainedBy_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AgentListing_has_AgentPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentListing_has_AgentPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentListing_has_AgentPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="AgentListing_has_AgentPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AgentPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AgentListing_has_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentListing_has_Agent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentListing_has_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentListing_has_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AgentPosition"
              type="AgentPositionXsdType"
              xml:id="AgentPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::AgentPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a sequence number to an agent in an agent listing.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentPositionXsdType"
                  xml:id="AgentPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a sequence number to an agent in an agent listing.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="AgentPosition-value">
        <xs:annotation>
          <xs:documentation>The index of the agent within an agent listing.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AgentPosition_indexes_Agent"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentPosition_indexes_Agent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentPosition_indexes_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentPosition_indexes_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AgentRelationship"
              type="AgentRelationshipXsdType"
              xml:id="AgentRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::AgentRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Defines the relation of an agent within a structure.  
            
            Examples 
            ========== 
            An organization (source/parent) employing an individual (target/child); An individual (source/parent) supervisory to an individual (target/child); An organization (source/parent) overseeing a project (organization) (target/child). Select appropriate relationship using the controlled vocabulary available through the semantics attribute.   
            
            Explanatory notes 
            =================== 
            Used to define the relations of agents in a hierarchical structure, or in other networks. Projects can be understood as temporary organizations.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentRelationshipXsdType"
                  xml:id="AgentRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Defines the relation of an agent within a structure.  
            
            Examples 
            ========== 
            An organization (source/parent) employing an individual (target/child); An individual (source/parent) supervisory to an individual (target/child); An organization (source/parent) overseeing a project (organization) (target/child). Select appropriate relationship using the controlled vocabulary available through the semantics attribute.   
            
            Explanatory notes 
            =================== 
            Used to define the relations of agents in a hierarchical structure, or in other networks. Projects can be understood as temporary organizations.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentRelationship-effectiveDates">
        <xs:annotation>
          <xs:documentation>Effective dates of the relationship expressed as a start and end Date (using ISO and/or non-ISO date structures).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AgentRelationship_hasSource_Agent"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="AgentRelationship_hasSource_Agent">
        <xs:annotation>
          <xs:documentation>The subject in the description of a paired relationship – for example the Parent agent in the hierarchical Parent of Child relationship.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentRelationship_hasSource_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentRelationship_hasSource_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AgentRelationship_hasTarget_Agent"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="AgentRelationship_hasTarget_Agent">
        <xs:annotation>
          <xs:documentation>The object in the description of a paired relationship – for example the Object agent in the hierarchical Parent of Child relationship.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentRelationship_hasTarget_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentRelationship_hasTarget_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AgentStructure"
              type="AgentStructureXsdType"
              xml:id="AgentStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::AgentStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Defines the relationships between agents in a collection for a specified period and purpose.  
            
            Examples 
            ========== 
            Individual employed by an organization. A unit or project (organization) within another organization. Individual supervised by another individual.  
            
            Explanatory notes 
            =================== 
            Can describe relations between agents rather than roles within a project or in relationship to a product. Roles are defined by the parent class and relationship name that uses an agent as a target.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentStructureXsdType"
                  xml:id="AgentStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Defines the relationships between agents in a collection for a specified period and purpose.  
            
            Examples 
            ========== 
            Individual employed by an organization. A unit or project (organization) within another organization. Individual supervised by another individual.  
            
            Explanatory notes 
            =================== 
            Can describe relations between agents rather than roles within a project or in relationship to a product. Roles are defined by the parent class and relationship name that uses an agent as a target.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-effectiveDates">
        <xs:annotation>
          <xs:documentation>The effective start and end date of the relationship.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-privacy">
        <xs:annotation>
          <xs:documentation>Level of privacy regarding this relationship.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AgentStructure_structures_AgentListing"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentStructure_structures_AgentListing">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentStructure_structures_AgentListing-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AgentStructure_structures_AgentListing-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AgentListing"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AgentStructure_has_AgentRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentStructure_has_AgentRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AgentStructure_has_AgentRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="AgentStructure_has_AgentRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AgentRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AllenIntervalAlgebra"
              type="AllenIntervalAlgebraXsdType"
              xml:id="AllenIntervalAlgebra">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::AllenIntervalAlgebra -->
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Control logic where the execution flow is determined by the satisfaction of temporal constraints specified with Allen's Interval Algebra over time intervals. Allen's interval algebra consists of thirteen temporal interval relations and the operations defined on them. Together these relations are distinct (any pair of definite intervals are described by one and only one of the relations), exhaustive (any pair of definite intervals are described by one of the relations), and qualitative (no numeric time spans are considered). See https://www.ics.uci.edu/~alspaugh/cls/shr/allen.html.
            
            Examples
            ========
            An Allen overlap indicates that within a sequence two procedures overlap in time. 
            
            Explanatory notes
            =================
            Allen's intervals are pairwise.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AllenIntervalAlgebraXsdType"
                  xml:id="AllenIntervalAlgebraXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Control logic where the execution flow is determined by the satisfaction of temporal constraints specified with Allen's Interval Algebra over time intervals. Allen's interval algebra consists of thirteen temporal interval relations and the operations defined on them. Together these relations are distinct (any pair of definite intervals are described by one and only one of the relations), exhaustive (any pair of definite intervals are described by one of the relations), and qualitative (no numeric time spans are considered). See https://www.ics.uci.edu/~alspaugh/cls/shr/allen.html.
            
            Examples
            ========
            An Allen overlap indicates that within a sequence two procedures overlap in time. 
            
            Explanatory notes
            =================
            Allen's intervals are pairwise.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="TemporalConstraintsXsdType">
        <xs:sequence>
          <xs:element name="temporalIntervalRelation"
                      type="TemporalRelationXsdType"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="AllenIntervalAlgebra-temporalIntervalRelation">
            <xs:annotation>
              <xs:documentation>Temporal constraint specified as an Allen's interval relation.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="AttributeComponent"
              type="AttributeComponentXsdType"
              xml:id="AttributeComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::AttributeComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to qualify observations or provide other types of supplementary information.  
            
            Examples 
            ========== 
            The publication status of an observation (e.g. provisional, final, revised).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AttributeComponentXsdType"
                  xml:id="AttributeComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to qualify observations or provide other types of supplementary information.  
            
            Examples 
            ========== 
            The publication status of an observation (e.g. provisional, final, revised).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        <xs:sequence>
          <xs:element name="AttributeComponent_qualifies_DataStructureComponent"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="AttributeComponent_qualifies_DataStructureComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="AttributeComponent_qualifies_DataStructureComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="AttributeComponent_qualifies_DataStructureComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="AttributeComponent"/>
                          <xs:enumeration value="ContextualComponent"/>
                          <xs:enumeration value="DataStructure"/>
                          <xs:enumeration value="DataStructureComponent"/>
                          <xs:enumeration value="DimensionComponent"/>
                          <xs:enumeration value="DimensionalDataStructure"/>
                          <xs:enumeration value="IdentifierComponent"/>
                          <xs:enumeration value="KeyValueStructure"/>
                          <xs:enumeration value="LongDataStructure"/>
                          <xs:enumeration value="MeasureComponent"/>
                          <xs:enumeration value="QualifiedMeasure"/>
                          <xs:enumeration value="SyntheticIdComponent"/>
                          <xs:enumeration value="VariableDescriptorComponent"/>
                          <xs:enumeration value="VariableValueComponent"/>
                          <xs:enumeration value="WideDataStructure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="AuthorizationSource"
              type="AuthorizationSourceXsdType"
              xml:id="AuthorizationSource">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::AuthorizationSource -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Identifies the authorizing agency and allows for the full text of the authorization (law, regulation, or other form of authorization).  
            
            Examples 
            ========== 
            May be used to list authorizations from oversight committees and other regulatory agencies.  
            
            Explanatory notes 
            =================== 
            Supports requirements for some statistical offices to identify the agency or law authorizing the collection or management of data or metadata.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AuthorizationSourceXsdType"
                  xml:id="AuthorizationSourceXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Identifies the authorizing agency and allows for the full text of the authorization (law, regulation, or other form of authorization).  
            
            Examples 
            ========== 
            May be used to list authorizations from oversight committees and other regulatory agencies.  
            
            Explanatory notes 
            =================== 
            Supports requirements for some statistical offices to identify the agency or law authorizing the collection or management of data or metadata.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="authorizationDate"
                  type="CombinedDateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-authorizationDate">
        <xs:annotation>
          <xs:documentation>Identifies the date of authorization.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="legalMandate"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-legalMandate">
        <xs:annotation>
          <xs:documentation>Provide a legal citation to a law authorizing the study/data collection. For example, a legal citation for a law authorizing a country's census.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statementOfAuthorization"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AuthorizationSource-statementOfAuthorization">
        <xs:annotation>
          <xs:documentation>Text of the authorization (law, mandate, approved business case).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AuthorizationSource_has_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AuthorizationSource_has_Agent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="AuthorizationSource_has_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="AuthorizationSource_has_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Category"
              type="CategoryXsdType"
              xml:id="Category">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::Category -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Concept whose role is to define and measure a characteristic.  
            
            Examples 
            ========== 
            The category "Male" is used to define or measure "Sex" or "Gender", which are characteristics. In turn, they are also variables. "Extremely Satisfied" is a category in an agreement scale. This can be used for many kinds of variables.  
            
            
            Explanatory notes 
            =================== 
            A category is a concept, typically associated with a code in the representation of a variable value. Categories are most often used in the allowed values for qualitative, i.e., nominal and ordinal, variables. A set of categories, say "Male" and "Female" for characteristics "Sex" or "Gender," helps define those characteristics. For describing location of measurement station, you might have categories "Urban", "Suburban", "Rural", etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategoryXsdType"
                  xml:id="CategoryXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Concept whose role is to define and measure a characteristic.  
            
            Examples 
            ========== 
            The category "Male" is used to define or measure "Sex" or "Gender", which are characteristics. In turn, they are also variables. "Extremely Satisfied" is a category in an agreement scale. This can be used for many kinds of variables.  
            
            
            Explanatory notes 
            =================== 
            A category is a concept, typically associated with a code in the representation of a variable value. Categories are most often used in the allowed values for qualitative, i.e., nominal and ordinal, variables. A set of categories, say "Male" and "Female" for characteristics "Sex" or "Gender," helps define those characteristics. For describing location of measurement station, you might have categories "Urban", "Suburban", "Rural", etc.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptXsdType">
        <xs:sequence>
          <xs:element name="descriptiveText"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Category-descriptiveText">
            <xs:annotation>
              <xs:documentation>A short natural language account of the characteristics of the object.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="CategoryPosition"
              type="CategoryPositionXsdType"
              xml:id="CategoryPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::CategoryPosition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to a category within a list.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategoryPositionXsdType"
                  xml:id="CategoryPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to a category within a list.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="CategoryPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CategoryPosition_indexes_Category"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="CategoryPosition_indexes_Category">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryPosition_indexes_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryPosition_indexes_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CategoryRelationStructure"
              type="CategoryRelationStructureXsdType"
              xml:id="CategoryRelationStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::CategoryRelationStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Description of the relationships between and among categories within a collection.  
            
            Examples 
            ========== 
            The category of "student" might be described as having sub-types of "primary school student" and "high school student".  
            
            
            Explanatory notes 
            =================== 
            The category relation structure employs a set of category relations to describe the relationship among concepts. Each category relation is a one to many description of connections between categories. Together they might commonly describe relationships as complex as a hierarchy or graph. This is a kind of a concept structure restricted to categories (which are concepts). Allows for the specification of complex relationships among categories.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategoryRelationStructureXsdType"
                  xml:id="CategoryRelationStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Description of the relationships between and among categories within a collection.  
            
            Examples 
            ========== 
            The category of "student" might be described as having sub-types of "primary school student" and "high school student".  
            
            
            Explanatory notes 
            =================== 
            The category relation structure employs a set of category relations to describe the relationship among concepts. Each category relation is a one to many description of connections between categories. Together they might commonly describe relationships as complex as a hierarchy or graph. This is a kind of a concept structure restricted to categories (which are concepts). Allows for the specification of complex relationships among categories.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CategoryRelationStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CategoryRelationStructure_structures_CategorySet"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationStructure_structures_CategorySet">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryRelationStructure_structures_CategorySet-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryRelationStructure_structures_CategorySet-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategorySet"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CategoryRelationStructure_has_CategoryRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CategoryRelationStructure_has_CategoryRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryRelationStructure_has_CategoryRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="CategoryRelationStructure_has_CategoryRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategoryRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CategoryRelationship"
              type="CategoryRelationshipXsdType"
              xml:id="CategoryRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::CategoryRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Source-to-target relationship between categories in a structure.   
            
            Examples 
            ========== 
            In the International Standard Industrial Classification of All Economic Activities (ISIC) Revision 4 (https://unstats.un.org/unsd/demographic-social/census/documents/isic_rev4.pdf), the super-type/sub-type relation is used throughout. The super-type "Manufacturing Sector" has among its sub-types "Manufacture of Rubber and Plastics Products" (division 22). In this example, the super-type is the source (Manufacturing Sector") and the sub-type is the target. The semantics attribute will provide the type of the relationship.
            
            Explanatory notes 
            =================== 
            Relationships between pairs of categories are linkages between them. The meaning of the linkage is determined by the relation.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategoryRelationshipXsdType"
                  xml:id="CategoryRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Source-to-target relationship between categories in a structure.   
            
            Examples 
            ========== 
            In the International Standard Industrial Classification of All Economic Activities (ISIC) Revision 4 (https://unstats.un.org/unsd/demographic-social/census/documents/isic_rev4.pdf), the super-type/sub-type relation is used throughout. The super-type "Manufacturing Sector" has among its sub-types "Manufacture of Rubber and Plastics Products" (division 22). In this example, the super-type is the source (Manufacturing Sector") and the sub-type is the target. The semantics attribute will provide the type of the relationship.
            
            Explanatory notes 
            =================== 
            Relationships between pairs of categories are linkages between them. The meaning of the linkage is determined by the relation.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CategoryRelationship_hasSource_Category"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CategoryRelationship_hasSource_Category">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryRelationship_hasSource_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryRelationship_hasSource_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CategoryRelationship_hasTarget_Category"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CategoryRelationship_hasTarget_Category">
        <xs:annotation>
          <xs:documentation>Second member in a relationship. Note that this can be realized as a collection to support tuples.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryRelationship_hasTarget_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryRelationship_hasTarget_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CategorySet"
              type="CategorySetXsdType"
              xml:id="CategorySet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::CategorySet -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Concept system where the underlying concepts are categories.
            
            Examples
            ==========
            "Male" and "Female" categories in a category set named "Gender".
            
            Explanatory notes
            ===================
            The categories in a category set help define the meaning of the category set. Gender can be defined as "male or female" - see example above. A category set can be used directly by questions to express a set of response choices.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategorySetXsdType"
                  xml:id="CategorySetXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Concept system where the underlying concepts are categories.
            
            Examples
            ==========
            "Male" and "Female" categories in a category set named "Gender".
            
            Explanatory notes
            ===================
            The categories in a category set help define the meaning of the category set. Gender can be defined as "male or female" - see example above. A category set can be used directly by questions to express a set of response choices.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptSystemXsdType">
        <xs:sequence>
          <xs:element name="CategorySet_has_Category"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="CategorySet_has_Category">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="CategorySet_has_Category-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="CategorySet_has_Category-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Category"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="CategorySet_has_CategoryPosition"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="CategorySet_has_CategoryPosition">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="CategorySet_has_CategoryPosition-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="CategorySet_has_CategoryPosition-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="CategoryPosition"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="CategoryStatistic"
              type="CategoryStatisticXsdType"
              xml:id="CategoryStatistic">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CategoryStatistic -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Statistics related to a specific category of an instance variable within a data set.  
            
            Examples 
            ========== 
            The percentage of females from a demographic data set.   
            
            Explanatory notes 
            =================== 
            Statistics at the data set are used as indicators during assessment of the appropriateness of using a some data for a particular purpose.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CategoryStatisticXsdType"
                  xml:id="CategoryStatisticXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Statistics related to a specific category of an instance variable within a data set.  
            
            Examples 
            ========== 
            The percentage of females from a demographic data set.   
            
            Explanatory notes 
            =================== 
            Statistics at the data set are used as indicators during assessment of the appropriateness of using a some data for a particular purpose.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryStatistic-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statistic"
                  type="StatisticXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CategoryStatistic-statistic">
        <xs:annotation>
          <xs:documentation>The value of the identified type of statistic for the category. May be repeated to provide unweighted or weighted values and different computation bases.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfCategoryStatistic"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryStatistic-typeOfCategoryStatistic">
        <xs:annotation>
          <xs:documentation>Indicates the type of information about the appearance of categories within the instance variable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CategoryStatistic_appliesTo_InstanceVariable"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="CategoryStatistic_appliesTo_InstanceVariable">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryStatistic_appliesTo_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryStatistic_appliesTo_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CategoryStatistic_for_Category"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CategoryStatistic_for_Category">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CategoryStatistic_for_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CategoryStatistic_for_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationFamily"
              type="ClassificationFamilyXsdType"
              xml:id="ClassificationFamily">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationFamily -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of classification series related by being based on a common concept
            
            Examples
            ==========
            A set of classification series (e.g., International Standard Industrial Classification (ISIC) and North American Industrial Classification System (NAICS)) based on the same concept - economic activity or industry.
            
            Explanatory notes
            ===================
            Different classification databases may use different types of classification families and have different names for the families, as no standard has been agreed upon. [GSIM1.1] This is documented by the definingConcept relationship   (e.g. economic activity).[GSIM1.1].</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationFamilyXsdType"
                  xml:id="ClassificationFamilyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of classification series related by being based on a common concept
            
            Examples
            ==========
            A set of classification series (e.g., International Standard Industrial Classification (ISIC) and North American Industrial Classification System (NAICS)) based on the same concept - economic activity or industry.
            
            Explanatory notes
            ===================
            Different classification databases may use different types of classification families and have different names for the families, as no standard has been agreed upon. [GSIM1.1] This is documented by the definingConcept relationship   (e.g. economic activity).[GSIM1.1].</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationFamily-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationFamily-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationFamily-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationFamily-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationFamily_uses_ClassificationIndex"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationFamily_uses_ClassificationIndex">
        <xs:annotation>
          <xs:documentation>Classification indexes associated to the classification family.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationFamily_uses_ClassificationIndex-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationFamily_uses_ClassificationIndex-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationIndex"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationFamily_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationFamily_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationFamily_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationFamily_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationFamily_groups_ClassificationSeries"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationFamily_groups_ClassificationSeries">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationFamily_groups_ClassificationSeries-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationFamily_groups_ClassificationSeries-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationSeries"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationIndex"
              type="ClassificationIndexXsdType"
              xml:id="ClassificationIndex">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationIndex -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Ordered list of classification index entries. 
            
            Examples 
            ========== 
            An alphabetical index of a topically ordered statistical classification.  
            
            Explanatory notes 
            =================== 
            A classification index shows the relationship between text found in statistical data sources (responses to survey questionnaires, administrative records) and one or more statistical classifications.  A classification index may be used to assign the codes for classification items to observations in statistical collections. Note that a GenericStatistical Information Model (GSIM) Node is the equivalent of a DDI-CDI Member, and a GSIM Node Set is a DDI-CDI Collection. A classification index can relate to one particular or to several statistical classifications. (See the GSIM Statistical Classification Model: https://statswiki.unece.org/display/gsim/Statistical+Classification+Model.)</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationIndexXsdType"
                  xml:id="ClassificationIndexXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Ordered list of classification index entries. 
            
            Examples 
            ========== 
            An alphabetical index of a topically ordered statistical classification.  
            
            Explanatory notes 
            =================== 
            A classification index shows the relationship between text found in statistical data sources (responses to survey questionnaires, administrative records) and one or more statistical classifications.  A classification index may be used to assign the codes for classification items to observations in statistical collections. Note that a GenericStatistical Information Model (GSIM) Node is the equivalent of a DDI-CDI Member, and a GSIM Node Set is a DDI-CDI Collection. A classification index can relate to one particular or to several statistical classifications. (See the GSIM Statistical Classification Model: https://statswiki.unece.org/display/gsim/Statistical+Classification+Model.)</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationIndex-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="availableLanguage"
                  type="xs:language"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex-availableLanguage">
        <xs:annotation>
          <xs:documentation>A list of languages in which the Statistical Classification is available. If a Classification Index exists in several languages, the number of entries in each language may be different, as the number of terms describing any given phenomenon can change from one language to another. However, the same phenomena should be described in each language. Supports the indication of multiple languages within a single property. Supports use of codes defined by the RFC 1766.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndex-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="codingInstruction"
                  type="CommandCodeXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex-codingInstruction">
        <xs:annotation>
          <xs:documentation>Additional information which drives the coding process for all entries in a Classification Index.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="corrections"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex-corrections">
        <xs:annotation>
          <xs:documentation>Verbal summary description of corrections, which have occurred within the Classification Index. Corrections include changing the item code associated with a classification index entry.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndex-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndex-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="releaseDate"
                  type="CombinedDateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndex-releaseDate">
        <xs:annotation>
          <xs:documentation>Date when the current version of the classification index was released.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationIndex_isMaintainedBy_Agent"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndex_isMaintainedBy_Agent">
        <xs:annotation>
          <xs:documentation>The unit or group of persons within the organization responsible for the classification index (i.e., for adding, changing or deleting classification index entries).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_isMaintainedBy_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationIndex_isMaintainedBy_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationIndex_hasContact_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex_hasContact_Agent">
        <xs:annotation>
          <xs:documentation>Person(s) who may be contacted for additional information about the classification index.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_hasContact_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationIndex_hasContact_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationIndex_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationIndex_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationIndex_has_ClassificationIndexEntryPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex_has_ClassificationIndexEntryPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_has_ClassificationIndexEntryPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_has_ClassificationIndexEntryPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationIndexEntryPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationIndex_has_ClassificationIndexEntry"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationIndex_has_ClassificationIndexEntry">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndex_has_ClassificationIndexEntry-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationIndex_has_ClassificationIndexEntry-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationIndexEntry"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationIndexEntry"
              type="ClassificationIndexEntryXsdType"
              xml:id="ClassificationIndexEntry">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationIndexEntry -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Word or a short phrase corresponding to a classification item in a statistical classification, together with the code of the corresponding classification item.
            
            Examples
            ==========
            The name of a locality, an economic activity, or an occupational title with the associated code from a corresponding classification item.
            
            Explanatory notes
            ===================
            Each Classification Index Entry (CIE) typically corresponds to one item of a Statistical Classification (SC). Although a CIE may be associated with a Classification Item (CI) at any Level of a SC, CIEs are normally associated with items at the lowest Level.
            A CIE corresponds to a CI if the CI classifies the CIE with respect to the SC of which the CI is a member.
            CIEs typically come from responses to survey questions or are verbatim descriptions in administrative records.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationIndexEntryXsdType"
                  xml:id="ClassificationIndexEntryXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Word or a short phrase corresponding to a classification item in a statistical classification, together with the code of the corresponding classification item.
            
            Examples
            ==========
            The name of a locality, an economic activity, or an occupational title with the associated code from a corresponding classification item.
            
            Explanatory notes
            ===================
            Each Classification Index Entry (CIE) typically corresponds to one item of a Statistical Classification (SC). Although a CIE may be associated with a Classification Item (CI) at any Level of a SC, CIEs are normally associated with items at the lowest Level.
            A CIE corresponds to a CI if the CI classifies the CIE with respect to the SC of which the CI is a member.
            CIEs typically come from responses to survey questions or are verbatim descriptions in administrative records.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntry-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="codingInstruction"
                  type="CommandCodeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntry-codingInstruction">
        <xs:annotation>
          <xs:documentation>Additional information which drives the coding process for the Index Entry. Required when coding is dependent upon one or many other factors.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="entry"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntry-entry">
        <xs:annotation>
          <xs:documentation>Text describing the type of object/unit or object property.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntry-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntry-validDates">
        <xs:annotation>
          <xs:documentation>The dates describing the validity period of the object. The date from which the object became valid must be defined if the map belongs to a "floating" construct. The date at which the object became invalid must be defined if the map belongs to a "floating" construct and is no longer valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationIndexEntryPosition"
              type="ClassificationIndexEntryPositionXsdType"
              xml:id="ClassificationIndexEntryPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationIndexEntryPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Member indicator for use with member type classification index entry.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationIndexEntryPositionXsdType"
                  xml:id="ClassificationIndexEntryPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Member indicator for use with member type classification index entry.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntryPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntryPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationIndexEntryPosition_indexes_ClassificationIndexEntry"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationIndexEntryPosition_indexes_ClassificationIndexEntry">
        <xs:annotation>
          <xs:documentation>Restricts member target class to classification index entry.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationIndexEntryPosition_indexes_ClassificationIndexEntry-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationIndexEntryPosition_indexes_ClassificationIndexEntry-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationIndexEntry"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationItem"
              type="ClassificationItemXsdType"
              xml:id="ClassificationItem">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationItem -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A space for a category within a statistical classification.   
            
            Examples 
            ========== 
            In the 2012 North American Industry Classification System (NAICS) one classification item has the category "construction", and has the Code 23, which designates construction in NAICS.
            
            Explanatory notes 
            =================== 
            A classification item defines the content and the borders of the category. A unit can be classified to one and only one item at each level of a statistical classification. As such a classification item is a placeholder for a position in a statistical classification. It contains a designation, for which code is a common kind; a category; and possibly other things.   This differentiates it from code which is a only kind of designation, in particular if it is an alphanumeric string assigned to stand in place of a category. Statistical classifications often have multiple levels. A level is defined as a set of classification items each the same number of relationships from the top or root classification item.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationItemXsdType"
                  xml:id="ClassificationItemXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A space for a category within a statistical classification.   
            
            Examples 
            ========== 
            In the 2012 North American Industry Classification System (NAICS) one classification item has the category "construction", and has the Code 23, which designates construction in NAICS.
            
            Explanatory notes 
            =================== 
            A classification item defines the content and the borders of the category. A unit can be classified to one and only one item at each level of a statistical classification. As such a classification item is a placeholder for a position in a statistical classification. It contains a designation, for which code is a common kind; a category; and possibly other things.   This differentiates it from code which is a only kind of designation, in particular if it is an alphanumeric string assigned to stand in place of a category. Statistical classifications often have multiple levels. A level is defined as a set of classification items each the same number of relationships from the top or root classification item.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="changeFromPreviousVersion"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-changeFromPreviousVersion">
        <xs:annotation>
          <xs:documentation>Describes the changes, which the item has been subject to from the previous version to the actual statistical classification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="changeLog"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-changeLog">
        <xs:annotation>
          <xs:documentation>Describes the changes, which the item has been subject to during the life time of the actual statistical classification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="explanatoryNotes"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItem-explanatoryNotes">
        <xs:annotation>
          <xs:documentation>A classification item may be associated with explanatory notes, which further describe and clarify the contents of the category. Explanatory notes consist of: General note: Contains either additional information about the category, or a general description of the category, which is not structured according to the "includes", "includes also", "excludes" pattern. Includes: Specifies the contents of the category. Includes also: A list of borderline cases, which belong to the described category. Excludes: A list of borderline cases, which do not belong to the described category. Excluded cases may contain a reference to the classification items to which the excluded cases belong.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="futureNotes"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItem-futureNotes">
        <xs:annotation>
          <xs:documentation>The future events describe an intended or implemented change (or a number of changes) related to an invalid item (e.g., these changes may have turned the now invalid item into one or several successor items). This allows for the possibility of following successors of the item in the future.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isGenerated"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-isGenerated">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the item has been generated to make the level to which it belongs complete.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isValid"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-isValid">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the item is currently valid. If updates are allowed in the Statistical Classification, an item may be restricted in its validity, i.e. it may become valid or invalid after the Statistical Classification has been released.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItem-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage. A Classification Item has an official name as provided by the owner or maintenance unit. The name describes the content of the category. The name is unique within the Statistical Classification to which the item belongs, except for categories that are identical at more than one level in a hierarchical classification. Use the context attribute to differentiate official names or alternate names for the Classification Item.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItem-validDates">
        <xs:annotation>
          <xs:documentation>The dates describing the validity period of the object. The date from which the object became valid must be defined if the map belongs to a "floating" construct. The date at which the object became invalid must be defined if the map belongs to a "floating" construct and is no longer valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationItem_excludes_ClassificationItem"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItem_excludes_ClassificationItem">
        <xs:annotation>
          <xs:documentation>Classification items to which the excluded cases belong (as described in explanatory notes).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItem_excludes_ClassificationItem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItem_excludes_ClassificationItem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationItem_denotes_Category"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationItem_denotes_Category">
        <xs:annotation>
          <xs:documentation>A definition for the code. Specialization of denotes for categories.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItem_denotes_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItem_denotes_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationItem_uses_Notation"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationItem_uses_Notation">
        <xs:annotation>
          <xs:documentation>Classification item uses a notation.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItem_uses_Notation-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItem_uses_Notation-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Notation"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationItem_hasRulingBy_AuthorizationSource"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItem_hasRulingBy_AuthorizationSource">
        <xs:annotation>
          <xs:documentation>Case law rulings related to the classification item.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItem_hasRulingBy_AuthorizationSource-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItem_hasRulingBy_AuthorizationSource-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AuthorizationSource"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationItemPosition"
              type="ClassificationItemPositionXsdType"
              xml:id="ClassificationItemPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationItemPosition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides a classification item with an index conveying the order of the classification item within a sequence, expressed as an integer, progressing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationItemPositionXsdType"
                  xml:id="ClassificationItemPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides a classification item with an index conveying the order of the classification item within a sequence, expressed as an integer, progressing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationItemPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationItemPosition_indexes_ClassificationItem"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemPosition_indexes_ClassificationItem">
        <xs:annotation>
          <xs:documentation>Classification item position indexes zero to one classification items. The member containing the designation of the classification item.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItemPosition_indexes_ClassificationItem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItemPosition_indexes_ClassificationItem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationItemRelationship"
              type="ClassificationItemRelationshipXsdType"
              xml:id="ClassificationItemRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationItemRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Source-target relationship between classification items in a classification item relation structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationItemRelationshipXsdType"
                  xml:id="ClassificationItemRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Source-target relationship between classification items in a classification item relation structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationItemRelationship_hasSource_ClassificationItem"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItemRelationship_hasSource_ClassificationItem">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItemRelationship_hasSource_ClassificationItem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItemRelationship_hasSource_ClassificationItem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationItemRelationship_hasTarget_ClassificationItem"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItemRelationship_hasTarget_ClassificationItem">
        <xs:annotation>
          <xs:documentation>Note that this can be realized as a collection to support tuples.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItemRelationship_hasTarget_ClassificationItem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItemRelationship_hasTarget_ClassificationItem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationItemStructure"
              type="ClassificationItemStructureXsdType"
              xml:id="ClassificationItemStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationItemStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Complex relation structure for use with statistical classification.  
            
            Examples 
            ========== 
            A classification item structure for the International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) would describe each of the major classifications as a parent of its sub-classifications. 1 Managers, for example would be listed as a parent of four sub groups: 11 Chief Executives, Senior Officials and Legislators; 12 Chief Executives, Senior Officials and Legislators; 13 Production and Specialized Services Managers; and 14 Hospitality, Retail and Other Services Managers.   
            
            Explanatory notes 
            =================== 
            The classification item structure has a set of classification item relationships which are basically adjacency lists. A source classification item has a described relationship to a target list of classification items. The semantic might be, for example, "parentOf", or "contains", etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationItemStructureXsdType"
                  xml:id="ClassificationItemStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Complex relation structure for use with statistical classification.  
            
            Examples 
            ========== 
            A classification item structure for the International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) would describe each of the major classifications as a parent of its sub-classifications. 1 Managers, for example would be listed as a parent of four sub groups: 11 Chief Executives, Senior Officials and Legislators; 12 Chief Executives, Senior Officials and Legislators; 13 Production and Specialized Services Managers; and 14 Hospitality, Retail and Other Services Managers.   
            
            Explanatory notes 
            =================== 
            The classification item structure has a set of classification item relationships which are basically adjacency lists. A source classification item has a described relationship to a target list of classification items. The semantic might be, for example, "parentOf", or "contains", etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItemStructure-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItemStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationItemStructure_structures_StatisticalClassification"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationItemStructure_structures_StatisticalClassification">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItemStructure_structures_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationItemStructure_structures_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationItemStructure_has_ClassificationItemRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationItemStructure_has_ClassificationItemRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationItemStructure_has_ClassificationItemRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ClassificationItemStructure_has_ClassificationItemRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItemRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationPosition"
              type="ClassificationPositionXsdType"
              xml:id="ClassificationPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============
            The index of a classification within a classification family expressed as an integer, progressing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationPositionXsdType"
                  xml:id="ClassificationPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============
            The index of a classification within a classification family expressed as an integer, progressing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationPosition_indexes_StatisticalClassification"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationPosition_indexes_StatisticalClassification">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationPosition_indexes_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationPosition_indexes_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationSeries"
              type="ClassificationSeriesXsdType"
              xml:id="ClassificationSeries">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationSeries -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Ensemble of one or more statistical classifications, based on the same concept, and related to each other as versions or updates.
            
            Examples
            ==========
            ISIC or ISCO
            SIC (with different published versions related to the publication year).
            
            Explanatory notes
            ===================
            Typically, these statistical classifications have the same name.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationSeriesXsdType"
                  xml:id="ClassificationSeriesXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Ensemble of one or more statistical classifications, based on the same concept, and related to each other as versions or updates.
            
            Examples
            ==========
            ISIC or ISCO
            SIC (with different published versions related to the publication year).
            
            Explanatory notes
            ===================
            Typically, these statistical classifications have the same name.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="context"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-context">
        <xs:annotation>
          <xs:documentation>Classification series can be designed in a specific context of use. This property indicates that context, and supports the use of an external controlled vocabulary for this purpose.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="keyword"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries-keyword">
        <xs:annotation>
          <xs:documentation>A classification series can be associated with one or a number of keywords.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="objectsOrUnitsClassified"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-objectsOrUnitsClassified">
        <xs:annotation>
          <xs:documentation>A classification series is designed to classify a specific type of object/unit according to a specific attribute.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeries-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="subject"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries-subject">
        <xs:annotation>
          <xs:documentation>Scientific domains, disciplines, or areas of statistics in which the classification series is implemented.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationSeries_isOwnedBy_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries_isOwnedBy_Agent">
        <xs:annotation>
          <xs:documentation>The statistical office or other authority, which created and maintains the statistical classification(s) related to the classification series. A classification series may have several owners.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_isOwnedBy_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationSeries_isOwnedBy_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationSeries_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationSeries_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationSeries_has_StatisticalClassification"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries_has_StatisticalClassification">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_has_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_has_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationSeries_has_ClassificationPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeries_has_ClassificationPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_has_ClassificationPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ClassificationSeries_has_ClassificationPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ClassificationSeriesStructure"
              type="ClassificationSeriesStructureXsdType"
              xml:id="ClassificationSeriesStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ClassificationSeriesStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure for describing the complex relationships between statistical classifications in a classification series.
            
            Examples
            ==========
            A classification series that branches into separately versioned classifications.
            
            Explanatory notes
            ===================
            Can use relation specification information to more fully describe the relationship between members such as parent/child, whole/part, general/specific, equivalence, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ClassificationSeriesStructureXsdType"
                  xml:id="ClassificationSeriesStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure for describing the complex relationships between statistical classifications in a classification series.
            
            Examples
            ==========
            A classification series that branches into separately versioned classifications.
            
            Explanatory notes
            ===================
            Can use relation specification information to more fully describe the relationship between members such as parent/child, whole/part, general/specific, equivalence, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeriesStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassificationSeriesStructure_structures_ClassificationSeries"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ClassificationSeriesStructure_structures_ClassificationSeries">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeriesStructure_structures_ClassificationSeries-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ClassificationSeriesStructure_structures_ClassificationSeries-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationSeries"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ClassificationSeriesStructure_has_StatisticalClassificationRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ClassificationSeriesStructure_has_StatisticalClassificationRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ClassificationSeriesStructure_has_StatisticalClassificationRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ClassificationSeriesStructure_has_StatisticalClassificationRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassificationRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Code"
              type="CodeXsdType"
              xml:id="Code">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::Code -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            The characters used as a symbol to designate a category within a codelist or classification. (Formally, a sign for which the signifier is non-linguistic alphanumeric string.)   
            
            Examples 
            ========== 
            The letter M might stand for the category "Male" in the codeList called "Gender".  
            
            Explanatory notes 
            =================== 
            A non-linguistic alphanumeric string is one which does not correspond to a word in natural language. For use in a codelist. The representation property (value) is expressed as it would be found in a data file. Multiple representations may relate to the same category but should be expressed as separate codes.  It should not be confused with a classification item which is a placeholder for a position in a statistical classification.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CodeXsdType"
                  xml:id="CodeXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            The characters used as a symbol to designate a category within a codelist or classification. (Formally, a sign for which the signifier is non-linguistic alphanumeric string.)   
            
            Examples 
            ========== 
            The letter M might stand for the category "Male" in the codeList called "Gender".  
            
            Explanatory notes 
            =================== 
            A non-linguistic alphanumeric string is one which does not correspond to a word in natural language. For use in a codelist. The representation property (value) is expressed as it would be found in a data file. Multiple representations may relate to the same category but should be expressed as separate codes.  It should not be confused with a classification item which is a placeholder for a position in a statistical classification.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Code-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Code_denotes_Category"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="Code_denotes_Category">
        <xs:annotation>
          <xs:documentation>A definition for the code. Specialization of denotes for categories.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Code_denotes_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Code_denotes_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Code_uses_Notation"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="Code_uses_Notation">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Code_uses_Notation-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Code_uses_Notation-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Notation"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CodeList"
              type="CodeListXsdType"
              xml:id="CodeList">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CodeList -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            List of codes and associated categories.  
            
            Examples 
            ========== 
            The codes "M" and "F" could point to "Male" and "Female" categories respectively.  A code list for an occupational classification system like the International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) could use a classification relation structure to describe a hierarchy (Chief Executives and Administrative and Commercial Managers as subtypes of Managers).   
            
            Explanatory notes 
            =================== 
            List may be flat or hierarchical. A hierarchical structure may have an indexed order for intended presentation even though the content within levels of the hierarchy are conceptually unordered. For hierarchical structures classification item structure is used to provide additional information on the structure and organization of the categories. Note that a category set can be structured by a classification relation structure without the need for associating any codes with the categories. This allows for the creation of a category set, for example for a response domain, without an associated codelist.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CodeListXsdType"
                  xml:id="CodeListXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            List of codes and associated categories.  
            
            Examples 
            ========== 
            The codes "M" and "F" could point to "Male" and "Female" categories respectively.  A code list for an occupational classification system like the International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) could use a classification relation structure to describe a hierarchy (Chief Executives and Administrative and Commercial Managers as subtypes of Managers).   
            
            Explanatory notes 
            =================== 
            List may be flat or hierarchical. A hierarchical structure may have an indexed order for intended presentation even though the content within levels of the hierarchy are conceptually unordered. For hierarchical structures classification item structure is used to provide additional information on the structure and organization of the categories. Note that a category set can be structured by a classification relation structure without the need for associating any codes with the categories. This allows for the creation of a category set, for example for a response domain, without an associated codelist.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="EnumerationDomainXsdType">
        <xs:sequence>
          <xs:element name="allowsDuplicates"
                      type="xs:boolean"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="CodeList-allowsDuplicates">
            <xs:annotation>
              <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodeList_has_CodePosition"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="CodeList_has_CodePosition">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="CodeList_has_CodePosition-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="CodeList_has_CodePosition-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="CodePosition"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="CodeList_has_Code"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="CodeList_has_Code">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="CodeList_has_Code-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="CodeList_has_Code-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Code"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="CodeListStructure"
              type="CodeListStructureXsdType"
              xml:id="CodeListStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CodeListStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relation structure of codes within a codelist.
            
            Explanatory notes
            ===================
            Allows for the specification of complex relationships among codes. The code list structure employs a set of code relationips to describe the relationship among concepts. Each code relationship is a one to many description of connections between codes. Together they might commonly describe relationships as complex as a hierarchy.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CodeListStructureXsdType"
                  xml:id="CodeListStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relation structure of codes within a codelist.
            
            Explanatory notes
            ===================
            Allows for the specification of complex relationships among codes. The code list structure employs a set of code relationips to describe the relationship among concepts. Each code relationship is a one to many description of connections between codes. Together they might commonly describe relationships as complex as a hierarchy.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CodeListStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="CodeListStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodeListStructure_structures_CodeList"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeListStructure_structures_CodeList">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodeListStructure_structures_CodeList-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodeListStructure_structures_CodeList-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CodeList"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CodeListStructure_has_CodeRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CodeListStructure_has_CodeRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodeListStructure_has_CodeRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="CodeListStructure_has_CodeRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CodeRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CodePosition"
              type="CodePositionXsdType"
              xml:id="CodePosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CodePosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An index within an order intended for presentation (even though the content within levels of the hierarchy may be conceptually unordered). Expressed as an integer counting upward from 01 or 1.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CodePositionXsdType"
                  xml:id="CodePositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An index within an order intended for presentation (even though the content within levels of the hierarchy may be conceptually unordered). Expressed as an integer counting upward from 01 or 1.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodePosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="CodePosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodePosition_indexes_Code"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodePosition_indexes_Code">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodePosition_indexes_Code-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CodePosition_indexes_Code-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Code"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CodeRelationship"
              type="CodeRelationshipXsdType"
              xml:id="CodeRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CodeRelationship -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Source target relationship between codes in a code relation structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CodeRelationshipXsdType"
                  xml:id="CodeRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Source target relationship between codes in a code relation structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CodeRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodeRelationship_hasTarget_Code"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CodeRelationship_hasTarget_Code">
        <xs:annotation>
          <xs:documentation>Note that this can be realized as a collection to support tuples.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodeRelationship_hasTarget_Code-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CodeRelationship_hasTarget_Code-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Code"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CodeRelationship_hasSource_Code"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CodeRelationship_hasSource_Code">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CodeRelationship_hasSource_Code-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CodeRelationship_hasSource_Code-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Code"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ComponentPosition"
              type="ComponentPositionXsdType"
              xml:id="ComponentPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::ComponentPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Indexes the components in a data structure using integers with a position indicated by incrementing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ComponentPositionXsdType"
                  xml:id="ComponentPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Indexes the components in a data structure using integers with a position indicated by incrementing upward from 0 or 1.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ComponentPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ComponentPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ComponentPosition_indexes_DataStructureComponent"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ComponentPosition_indexes_DataStructureComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ComponentPosition_indexes_DataStructureComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ComponentPosition_indexes_DataStructureComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AttributeComponent"/>
                      <xs:enumeration value="ContextualComponent"/>
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DataStructureComponent"/>
                      <xs:enumeration value="DimensionComponent"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="IdentifierComponent"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="MeasureComponent"/>
                      <xs:enumeration value="QualifiedMeasure"/>
                      <xs:enumeration value="SyntheticIdComponent"/>
                      <xs:enumeration value="VariableDescriptorComponent"/>
                      <xs:enumeration value="VariableValueComponent"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Concept"
              type="ConceptXsdType"
              xml:id="Concept">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::Concept -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Unit of thought differentiated by characteristics (from the Generic Statistical Information Model version 1.2: https://statswiki.unece.org/display/clickablegsim/Concept).  
            
            Examples 
            ========== 
            Velocity, Distance, Poverty, Income, Household Relationship, Family, Gender, Business Establishment, Satisfaction, Mass, Air Quality, etc.
            
            
            Explanatory notes 
            =================== 
            Many DDI-CDI classes are subtypes of the concept class including category, universe, unit type, conceptual variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptXsdType"
                  xml:id="ConceptXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Unit of thought differentiated by characteristics (from the Generic Statistical Information Model version 1.2: https://statswiki.unece.org/display/clickablegsim/Concept).  
            
            Examples 
            ========== 
            Velocity, Distance, Poverty, Income, Household Relationship, Family, Gender, Business Establishment, Satisfaction, Mass, Air Quality, etc.
            
            
            Explanatory notes 
            =================== 
            Many DDI-CDI classes are subtypes of the concept class including category, universe, unit type, conceptual variable.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Concept-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="definition"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Concept-definition">
        <xs:annotation>
          <xs:documentation>Natural language statement conveying the meaning of a concept, differentiating it from other concepts. Supports the use of multiple languages and structured text. 'externalDefinition' can't be used if 'definition' is used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Concept-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="externalDefinition"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Concept-externalDefinition">
        <xs:annotation>
          <xs:documentation>A reference to an external definition of a concept (that is, a concept which is described outside the content of the DDI-CDI metadata description). An example is a SKOS concept. The definition property is assumed to duplicate the external one referenced if externalDefinition is used. Other corresponding properties are assumed to be included unchanged if used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Concept-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Concept-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Concept_uses_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Concept_uses_Concept">
        <xs:annotation>
          <xs:documentation>The uses association is intended to describe specific relationships between Concepts and several of its sub-classes. This is documented in section VII.D.5 of the "DDI-Cross Domain Integration: Detailed Model" document.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Concept_uses_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Concept_uses_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptMap"
              type="ConceptMapXsdType"
              xml:id="ConceptMap">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptMap -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Correspondence between concepts in a correspondence table.  
            
            Examples 
            ========== 
            A simple example might map the following 2 martial status category sets:  MS1: single, married, widowed, divorced. MS2: single, married.  So, a correspondence table between these 2 category sets might look like this: MS1 single - MS2 single; MS1 widowed - MS2 single; MS1 divorced - MS2 single; MS1 married - MS2 married. 
            
            Explanatory notes 
            =================== 
            A concept map is the pairing of similar concepts. Each concept in the map belongs to a different collection. The collection of maps for all the concepts in corresponding collections is a correspondence table.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptMapXsdType"
                  xml:id="ConceptMapXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Correspondence between concepts in a correspondence table.  
            
            Examples 
            ========== 
            A simple example might map the following 2 martial status category sets:  MS1: single, married, widowed, divorced. MS2: single, married.  So, a correspondence table between these 2 category sets might look like this: MS1 single - MS2 single; MS1 widowed - MS2 single; MS1 divorced - MS2 single; MS1 married - MS2 married. 
            
            Explanatory notes 
            =================== 
            A concept map is the pairing of similar concepts. Each concept in the map belongs to a different collection. The collection of maps for all the concepts in corresponding collections is a correspondence table.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="correspondence"
                  type="CorrespondenceDefinitionXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptMap-correspondence">
        <xs:annotation>
          <xs:documentation>Type of correspondence in terms of commonalities and differences between two members.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptMap-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptMap-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="usage"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptMap-usage">
        <xs:annotation>
          <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptMap-validDates">
        <xs:annotation>
          <xs:documentation>The dates describing the validity period of the object. The date from which the object became valid must be defined if the map belongs to a "floating" construct. The date at which the object became invalid must be defined if the map belongs to a "floating" construct and is no longer valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptMap_hasSource_Concept"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="ConceptMap_hasSource_Concept">
        <xs:annotation>
          <xs:documentation>Concept map has one to many source concepts.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptMap_hasSource_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptMap_hasSource_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptMap_hasTarget_Concept"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="ConceptMap_hasTarget_Concept">
        <xs:annotation>
          <xs:documentation>Concept map has one to many target concepts.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptMap_hasTarget_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptMap_hasTarget_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptRelationship"
              type="ConceptRelationshipXsdType"
              xml:id="ConceptRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between a pair of concepts in a collection of concepts. Use controlled vocabulary provided in semantics to identify the type of relationship (relation, e.g. ParentChild, WholePart, etc.)  
            
            Examples 
            ========== 
            Apple (a specialized concept) is a kind of fruit (a generic concept). A wheel (a partitive concept) is part of a car (a whole concept).  
            
            Explanatory notes 
            =================== 
            The idea is similar to category relationship, except it applies generally and not just for categories.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptRelationshipXsdType"
                  xml:id="ConceptRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between a pair of concepts in a collection of concepts. Use controlled vocabulary provided in semantics to identify the type of relationship (relation, e.g. ParentChild, WholePart, etc.)  
            
            Examples 
            ========== 
            Apple (a specialized concept) is a kind of fruit (a generic concept). A wheel (a partitive concept) is part of a car (a whole concept).  
            
            Explanatory notes 
            =================== 
            The idea is similar to category relationship, except it applies generally and not just for categories.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptRelationship_hasSource_Concept"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ConceptRelationship_hasSource_Concept">
        <xs:annotation>
          <xs:documentation>Restricts source object to concept for the relationship.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptRelationship_hasSource_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptRelationship_hasSource_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptRelationship_hasTarget_Concept"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ConceptRelationship_hasTarget_Concept">
        <xs:annotation>
          <xs:documentation>Restricts target object to concept for the relationship.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptRelationship_hasTarget_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptRelationship_hasTarget_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptStructure"
              type="ConceptStructureXsdType"
              xml:id="ConceptStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relations of concepts within a collection.  
            
            Examples 
            ========== 
            A concept of vacation might be described as having sub-types of beach vacation and mountain vacation.  
            
            Explanatory notes 
            =================== 
            The concept structure employs a set of concept relationships to describe the relationship among concepts. Each concept relationship is a one to many description of connections between concepts. Together they can describe relationships as complex as a hierarchy or even a complete cyclical network as in a concept map. Allows for the specification of complex relationships among concepts.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptStructureXsdType"
                  xml:id="ConceptStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relations of concepts within a collection.  
            
            Examples 
            ========== 
            A concept of vacation might be described as having sub-types of beach vacation and mountain vacation.  
            
            Explanatory notes 
            =================== 
            The concept structure employs a set of concept relationships to describe the relationship among concepts. Each concept relationship is a one to many description of connections between concepts. Together they can describe relationships as complex as a hierarchy or even a complete cyclical network as in a concept map. Allows for the specification of complex relationships among concepts.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptStructure_structures_ConceptSystem"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptStructure_structures_ConceptSystem">
        <xs:annotation>
          <xs:documentation>Concept structure structures concept system.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptStructure_structures_ConceptSystem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptStructure_structures_ConceptSystem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategorySet"/>
                      <xs:enumeration value="ConceptSystem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptStructure_has_ConceptRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptStructure_has_ConceptRelationship">
        <xs:annotation>
          <xs:documentation>Concept structure has zero to many concept relationships.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptStructure_has_ConceptRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ConceptStructure_has_ConceptRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptSystem"
              type="ConceptSystemXsdType"
              xml:id="ConceptSystem">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptSystem -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of concepts structured by the relations among them [GSIM 1.1].
            
            Examples
            ==========
            1) Concept of Sex: Male, Female, Other. 
            2) Concept of Household Relationship: Household Head, Spouse of Household Head, Child of Household Head, Unrelated Household Member, etc.
            
            Explanatory notes
            ===================
            Note that this class can be used with concepts, classifications, universes, populations, unit types and any other class that extends from concept.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptSystemXsdType"
                  xml:id="ConceptSystemXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of concepts structured by the relations among them [GSIM 1.1].
            
            Examples
            ==========
            1) Concept of Sex: Male, Female, Other. 
            2) Concept of Household Relationship: Household Head, Spouse of Household Head, Child of Household Head, Unrelated Household Member, etc.
            
            Explanatory notes
            ===================
            Note that this class can be used with concepts, classifications, universes, populations, unit types and any other class that extends from concept.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ConceptSystem-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystem-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="externalDefinition"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystem-externalDefinition">
        <xs:annotation>
          <xs:documentation>A reference to an external definition of a concept (that is, a concept which is described outside the content of the DDI-CDI metadata description). An example is a SKOS concept. The definition property is assumed to duplicate the external one referenced if externalDefinition is used. Other corresponding properties are assumed to be included unchanged if used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystem-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystem-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystem-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptSystem_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystem_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>Concept system is defined by zero to many concepts. The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptSystem_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptSystem_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptSystem_has_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystem_has_Concept">
        <xs:annotation>
          <xs:documentation>Concept system has zero to many concepts.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptSystem_has_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptSystem_has_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptSystemCorrespondence"
              type="ConceptSystemCorrespondenceXsdType"
              xml:id="ConceptSystemCorrespondence">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptSystemCorrespondence -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between 2 or more concept systems described through mapping similarity relationships between their member concepts.  
            
            Examples 
            ========== 
            Correspondence between the concepts used to define the amount of salt dissolved in a body of water: the concepts "salinity" and "saltiness" might be described as equivalent, for example.
            
            Explanatory notes 
            =================== 
            Describes correspondence with one or more maps which identify a source and target concept and defines their commonality and difference using descriptive text and controlled vocabularies.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptSystemCorrespondenceXsdType"
                  xml:id="ConceptSystemCorrespondenceXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between 2 or more concept systems described through mapping similarity relationships between their member concepts.  
            
            Examples 
            ========== 
            Correspondence between the concepts used to define the amount of salt dissolved in a body of water: the concepts "salinity" and "saltiness" might be described as equivalent, for example.
            
            Explanatory notes 
            =================== 
            Describes correspondence with one or more maps which identify a source and target concept and defines their commonality and difference using descriptive text and controlled vocabularies.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystemCorrespondence-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystemCorrespondence-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystemCorrespondence-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystemCorrespondence-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="usage"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptSystemCorrespondence-usage">
        <xs:annotation>
          <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptSystemCorrespondence_maps_ConceptSystem"
                  minOccurs="2"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystemCorrespondence_maps_ConceptSystem">
        <xs:annotation>
          <xs:documentation>Concept system correspondence maps two to many concept systems. Realization of structures in symmetric relation. When concepts of a single concept system are mapped, the Concept has to appear twice as target.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptSystemCorrespondence_maps_ConceptSystem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptSystemCorrespondence_maps_ConceptSystem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategorySet"/>
                      <xs:enumeration value="ConceptSystem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptSystemCorrespondence_has_ConceptMap"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptSystemCorrespondence_has_ConceptMap">
        <xs:annotation>
          <xs:documentation>Concept system correspondence has zero to many concept maps.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptSystemCorrespondence_has_ConceptMap-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptSystemCorrespondence_has_ConceptMap-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptMap"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptualDomain"
              type="ConceptualDomainXsdType"
              xml:id="ConceptualDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptualDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of concepts, where each concept is intended to be used as the meaning (signified) for a datum.  
            
            Examples 
            ========== 
            Substantive: Housing Unit Tenure - Owned, Rented, Vacant. Sentinel: Non-response - Refused, Don't Know, Not Applicable   
            
            Explanatory notes 
            =================== 
            Intent of a conceptual domain is defining a set of concepts used to measure a broader concept. For effective use they should be discrete (non-overlapping) and provide exhaustive coverage of the broader concept. The constituent concepts can be either sentinel or substantive,  The set can be described by either enumeration or by an expression.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptualDomainXsdType"
                  xml:id="ConceptualDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of concepts, where each concept is intended to be used as the meaning (signified) for a datum.  
            
            Examples 
            ========== 
            Substantive: Housing Unit Tenure - Owned, Rented, Vacant. Sentinel: Non-response - Refused, Don't Know, Not Applicable   
            
            Explanatory notes 
            =================== 
            Intent of a conceptual domain is defining a set of concepts used to measure a broader concept. For effective use they should be discrete (non-overlapping) and provide exhaustive coverage of the broader concept. The constituent concepts can be either sentinel or substantive,  The set can be described by either enumeration or by an expression.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptualDomain-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ConceptualDomain-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptualDomain-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConceptualDomain_isDescribedBy_ValueAndConceptDescription"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptualDomain_isDescribedBy_ValueAndConceptDescription">
        <xs:annotation>
          <xs:documentation>A description of the concepts in the domain. A numeric domain might use a logical expression to be machine actionable; a text domain might use a regular expression to describe strings that describe the concepts.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptualDomain_isDescribedBy_ValueAndConceptDescription-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptualDomain_isDescribedBy_ValueAndConceptDescription-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueAndConceptDescription"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConceptualDomain_takesConceptsFrom_ConceptSystem"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ConceptualDomain_takesConceptsFrom_ConceptSystem">
        <xs:annotation>
          <xs:documentation>Conceptual domain takes concept from zero to one concept system.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ConceptualDomain_takesConceptsFrom_ConceptSystem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ConceptualDomain_takesConceptsFrom_ConceptSystem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategorySet"/>
                      <xs:enumeration value="ConceptSystem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ConceptualValue"
              type="ConceptualValueXsdType"
              xml:id="ConceptualValue">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::ConceptualValue -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Concept (with a notion of equality defined) being observed, captured, or derived which is associated to a single data instance.   
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The instance value for that measurement in this paragraph is the character string "122". The associated measured concept (a blood pressure at that level) is the conceptual value.  The conceptual value comes from a conceptual domain associated with a conceptual variable.   
            
            Explanatory notes 
            =================== 
            This is the concept associated to the actual instance of data that is stored in a data point (the signified of a datum in the signification pattern).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptualValueXsdType"
                  xml:id="ConceptualValueXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Concept (with a notion of equality defined) being observed, captured, or derived which is associated to a single data instance.   
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The instance value for that measurement in this paragraph is the character string "122". The associated measured concept (a blood pressure at that level) is the conceptual value.  The conceptual value comes from a conceptual domain associated with a conceptual variable.   
            
            Explanatory notes 
            =================== 
            This is the concept associated to the actual instance of data that is stored in a data point (the signified of a datum in the signification pattern).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptXsdType">
        <xs:sequence>
          <xs:element name="ConceptualValue_hasConceptFrom_ConceptualDomain"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="ConceptualValue_hasConceptFrom_ConceptualDomain">
            <xs:annotation>
              <xs:documentation>Conceptual value has concept from one conceptual domain.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ConceptualValue_hasConceptFrom_ConceptualDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ConceptualValue_hasConceptFrom_ConceptualDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ConceptualDomain"/>
                          <xs:enumeration value="SentinelConceptualDomain"/>
                          <xs:enumeration value="SubstantiveConceptualDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ConceptualVariable"
              type="ConceptualVariableXsdType"
              xml:id="ConceptualVariable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::ConceptualVariable -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A variable at the highest level of abstraction.
              
            Examples 
            ========== 
            A gender variable defining two categories – "male" and "female" allowing relating each of these to concepts having description of how these categories are decided.
            
            Explanatory notes 
            =================== 
            The conceptual variable allows for describing the domain of concepts it can take on as well as the type of unit that can be measured. A conceptual variable for blood pressure might, for example describe the conditions under which the pressure is to be taken (sitting as opposed to standing) and a conceptual value domain as height of mercury – without units. One represented variable would further refine this by specifying inches as the unit of measurement for the height. Another might specify that the height be represented in centimeters. Both represented variables could reference the same conceptual variable to indicate in what way they are comparable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConceptualVariableXsdType"
                  xml:id="ConceptualVariableXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A variable at the highest level of abstraction.
              
            Examples 
            ========== 
            A gender variable defining two categories – "male" and "female" allowing relating each of these to concepts having description of how these categories are decided.
            
            Explanatory notes 
            =================== 
            The conceptual variable allows for describing the domain of concepts it can take on as well as the type of unit that can be measured. A conceptual variable for blood pressure might, for example describe the conditions under which the pressure is to be taken (sitting as opposed to standing) and a conceptual value domain as height of mercury – without units. One represented variable would further refine this by specifying inches as the unit of measurement for the height. Another might specify that the height be represented in centimeters. Both represented variables could reference the same conceptual variable to indicate in what way they are comparable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptXsdType">
        <xs:sequence>
          <xs:element name="descriptiveText"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ConceptualVariable-descriptiveText">
            <xs:annotation>
              <xs:documentation>A short natural language account of the characteristics of the object.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="unitOfMeasureKind"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ConceptualVariable-unitOfMeasureKind">
            <xs:annotation>
              <xs:documentation>Kind of unit of measure, so that it may be prone to translation to equivalent UOMs. Example values include "acceleration," "temperature," "salinity", etc. This description exists at the conceptual level, indicating a limitation on the type of representations which may be used for the variable as it is made more concrete.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ConceptualVariable_takesSentinelConceptsFrom_SentinelConceptualDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ConceptualVariable_takesSentinelConceptsFrom_SentinelConceptualDomain">
            <xs:annotation>
              <xs:documentation>Identifies the conceptual domain containing the set of sentinel concepts used to describe the conceptual variable.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ConceptualVariable_takesSentinelConceptsFrom_SentinelConceptualDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ConceptualVariable_takesSentinelConceptsFrom_SentinelConceptualDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SentinelConceptualDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="ConceptualVariable_takesSubstantiveConceptsFrom_SubstantiveConceptualDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ConceptualVariable_takesSubstantiveConceptsFrom_SubstantiveConceptualDomain">
            <xs:annotation>
              <xs:documentation>Identifies the substantive conceptual domain containing the set of substantive concepts used to describe the conceptual variable.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ConceptualVariable_takesSubstantiveConceptsFrom_SubstantiveConceptualDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ConceptualVariable_takesSubstantiveConceptsFrom_SubstantiveConceptualDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SubstantiveConceptualDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="ConceptualVariable_measures_UnitType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ConceptualVariable_measures_UnitType">
            <xs:annotation>
              <xs:documentation>The measures association is intended to describe specific relationships between the ConceptualVariable and UnitType classes, and similar relationships between their sub-classes. This is documented in section VII.D.5 of the "DDI-Cross Domain Integration: Detailed Model" document.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ConceptualVariable_measures_UnitType-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ConceptualVariable_measures_UnitType-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Population"/>
                          <xs:enumeration value="UnitType"/>
                          <xs:enumeration value="Universe"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ConditionalControlLogic"
              type="ConditionalControlLogicXsdType"
              xml:id="ConditionalControlLogic">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ConditionalControlLogic -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A set of decision points which determine the flow between the steps used to perform an activity. 
            
            Examples 
            ========== 
            Loop, IfThenElse, RepeatWhile, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ConditionalControlLogicXsdType"
                  xml:id="ConditionalControlLogicXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A set of decision points which determine the flow between the steps used to perform an activity. 
            
            Examples 
            ========== 
            Loop, IfThenElse, RepeatWhile, etc.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DeterministicImperativeXsdType">
        <xs:sequence>
          <xs:element name="condition"
                      type="CommandCodeXsdType"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="ConditionalControlLogic-condition">
            <xs:annotation>
              <xs:documentation>A condition associated with the construct property of the ConditionalControlLogic. It is a logical expression which can be evaluated as either true or false to determine the specific execution of the associated  construct.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="construct"
                      type="ControlConstructXsdType"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="ConditionalControlLogic-construct">
            <xs:annotation>
              <xs:documentation>controlConstruct is an enumeration of type ControlConstructType. The enumeration consists of IfThen, Else, Loop, RepeatUntil and RepeatWhile.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ContextualComponent"
              type="ContextualComponentXsdType"
              xml:id="ContextualComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::ContextualComponent -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Encapsulates contextual information of the key-value datastore to provide a scope to the instance key. The instance key is unique within the scope.
            
            Examples
            ==========
            A partition, cluster name and any other key-value datastore organization information. 
            
            Explanatory notes
            ===================
            A key-value datastore can be organized into multiple contextual components. 
            Other data structure components that are part of the instance key, e.g. identifier and dimension components, guarantee uniqueness only within the scope of a contextual component. 
            Synthetic id components do guarantee global uniqueness, but they might complex to setup and maintain in many organizations. 
            Contextual components provide a simple mechanism to achieve uniqueness within a single key-value datastore. 
            When a key-value datastore is organized in contextual components, a contextual component prefix is added to the instance key to make it unique across the entire key-value datastore.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ContextualComponentXsdType"
                  xml:id="ContextualComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Encapsulates contextual information of the key-value datastore to provide a scope to the instance key. The instance key is unique within the scope.
            
            Examples
            ==========
            A partition, cluster name and any other key-value datastore organization information. 
            
            Explanatory notes
            ===================
            A key-value datastore can be organized into multiple contextual components. 
            Other data structure components that are part of the instance key, e.g. identifier and dimension components, guarantee uniqueness only within the scope of a contextual component. 
            Synthetic id components do guarantee global uniqueness, but they might complex to setup and maintain in many organizations. 
            Contextual components provide a simple mechanism to achieve uniqueness within a single key-value datastore. 
            When a key-value datastore is organized in contextual components, a contextual component prefix is added to the instance key to make it unique across the entire key-value datastore.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ControlLogic"
              type="ControlLogicXsdType"
              xml:id="ControlLogic">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Control logic is a program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  
            
            Examples 
            ========== 
            A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  
            
            Explanatory notes 
            =================== 
            DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ControlLogicXsdType"
                  xml:id="ControlLogicXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Control logic is a program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  
            
            Examples 
            ========== 
            A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  
            
            Explanatory notes 
            =================== 
            DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlLogic-description">
        <xs:annotation>
          <xs:documentation>A description of the control logic in human-readable language.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlLogic-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="workflow"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlLogic-workflow">
        <xs:annotation>
          <xs:documentation>Reference to the system or standard from which the workflow was taken.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ControlLogic_informs_ProcessingAgent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic_informs_ProcessingAgent">
        <xs:annotation>
          <xs:documentation>Control logic informs a processing agent. The information may be deterministic or non-deterministic.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ControlLogic_informs_ProcessingAgent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ControlLogic_informs_ProcessingAgent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ControlLogic_invokes_Activity"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic_invokes_Activity">
        <xs:annotation>
          <xs:documentation>Control logic invokes an activity deterministically (either conditionally or unconditionally) or non-derministically (based on temporal constraints or rule-based scheduling).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ControlLogic_invokes_Activity-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ControlLogic_invokes_Activity-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Activity"/>
                      <xs:enumeration value="Step"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ControlLogic_hasSubControlLogic_ControlLogic"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic_hasSubControlLogic_ControlLogic">
        <xs:annotation>
          <xs:documentation>Control logic is a container of control logic which is in turn a container of control logic ad infinitum so that it is able to represent the structure of a program.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ControlLogic_hasSubControlLogic_ControlLogic-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ControlLogic_hasSubControlLogic_ControlLogic-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AllenIntervalAlgebra"/>
                      <xs:enumeration value="ConditionalControlLogic"/>
                      <xs:enumeration value="ControlLogic"/>
                      <xs:enumeration value="DeterministicImperative"/>
                      <xs:enumeration value="NonDeterministicDeclarative"/>
                      <xs:enumeration value="RuleBasedScheduling"/>
                      <xs:enumeration value="Sequence"/>
                      <xs:enumeration value="TemporalConstraints"/>
                      <xs:enumeration value="TemporalControlConstruct"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ControlLogic_has_InformationFlowDefinition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlLogic_has_InformationFlowDefinition">
        <xs:annotation>
          <xs:documentation>A control construct has zero or more information flow definitions each of which provides the control construct with zero or more input and output parameters used or produced in the step/sub-step with which it is associated.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ControlLogic_has_InformationFlowDefinition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ControlLogic_has_InformationFlowDefinition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="InformationFlowDefinition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CorrespondenceTable"
              type="CorrespondenceTableXsdType"
              xml:id="CorrespondenceTable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::CorrespondenceTable -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of relationships between the members within or between statistical classifications.  
            
            Examples 
            ========== 
            Correspondence between the U.S. Standard Industrial Classification (SIC) and North American Industrial Classification System (NAICS).  
            
            Explanatory notes 
            =================== 
            Correspondence tables are used with statistical classifications. For instance, it can relate two versions from the same classification series; statistical classifications from different classification series; a variant and the version on which it is based; or different versions of a variant. In the first and last examples, the correspondence table facilitates comparability over time.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CorrespondenceTableXsdType"
                  xml:id="CorrespondenceTableXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of relationships between the members within or between statistical classifications.  
            
            Examples 
            ========== 
            Correspondence between the U.S. Standard Industrial Classification (SIC) and North American Industrial Classification System (NAICS).  
            
            Explanatory notes 
            =================== 
            Correspondence tables are used with statistical classifications. For instance, it can relate two versions from the same classification series; statistical classifications from different classification series; a variant and the version on which it is based; or different versions of a variant. In the first and last examples, the correspondence table facilitates comparability over time.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable-effectiveDates">
        <xs:annotation>
          <xs:documentation>Effective period of validity of the correspondence table. The correspondence table expresses the relationships between the two classifications as they existed on the period specified in the table.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CorrespondenceTable_hasSource_Level"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable_hasSource_Level">
        <xs:annotation>
          <xs:documentation>Level from which the correspondence is made. Correspondences might be restricted to a specified level in the node set. In this case, target items are assigned only to source items on the given level. If no level is indicated, source items can be assigned to any level of the target node set.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_hasSource_Level-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_hasSource_Level-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Level"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_hasTarget_Level"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable_hasTarget_Level">
        <xs:annotation>
          <xs:documentation>Level to which the correspondence is made. Correspondences might be restricted to a specified Level in the node set. In this case, target items are assigned only to source items on the given level. If no level is indicated, target items can be assigned to any level of the source node set.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_hasTarget_Level-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_hasTarget_Level-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Level"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_isOwnedBy_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CorrespondenceTable_isOwnedBy_Agent">
        <xs:annotation>
          <xs:documentation>The statistical office, other authority or section that created and maintains the correspondence table. A correspondence table may have several owners.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_isOwnedBy_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_isOwnedBy_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_mapsTo_StatisticalClassification"
                  minOccurs="2"
                  maxOccurs="unbounded"
                  xml:id="CorrespondenceTable_mapsTo_StatisticalClassification">
        <xs:annotation>
          <xs:documentation>The statistical classification(s) from which the correspondence is made.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_mapsTo_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_mapsTo_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_hasContact_Agent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CorrespondenceTable_hasContact_Agent">
        <xs:annotation>
          <xs:documentation>The person(s) who may be contacted for additional information about the correspondence table. Can be an individual or organization.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_hasContact_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_hasContact_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_isMaintainedBy_Agent"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceTable_isMaintainedBy_Agent">
        <xs:annotation>
          <xs:documentation>The unit or group of persons who are responsible for the correspondence table (i.e., for maintaining and updating it).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_isMaintainedBy_Agent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="CorrespondenceTable_isMaintainedBy_Agent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Agent"/>
                      <xs:enumeration value="Curator"/>
                      <xs:enumeration value="Individual"/>
                      <xs:enumeration value="Machine"/>
                      <xs:enumeration value="Organization"/>
                      <xs:enumeration value="ProcessingAgent"/>
                      <xs:enumeration value="Service"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CorrespondenceTable_has_ConceptMap"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CorrespondenceTable_has_ConceptMap">
        <xs:annotation>
          <xs:documentation>Correspondence table has zero to many concept maps.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_has_ConceptMap-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="CorrespondenceTable_has_ConceptMap-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptMap"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Curator"
              type="CuratorXsdType"
              xml:id="Curator">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Curator -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Curator is a software agent that uses techniques such as natural language processing to map facts in the research data store to the condition part of a rule.  
            
            Examples 
            ========== 
            Domain-specific curators are available as both open source and commercial products.   
            
            Explanatory notes 
            =================== 
            The curator assists in identifying the rules that are currently in play in the rule set.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CuratorXsdType"
                  xml:id="CuratorXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Curator is a software agent that uses techniques such as natural language processing to map facts in the research data store to the condition part of a rule.  
            
            Examples 
            ========== 
            Domain-specific curators are available as both open source and commercial products.   
            
            Explanatory notes 
            =================== 
            The curator assists in identifying the rules that are currently in play in the rule set.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProcessingAgentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DataPoint"
              type="DataPointXsdType"
              xml:id="DataPoint">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::DataPoint -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Container for an instance value.
            
            Examples
            ==========
            A cell in a data cube or a table. 
            
            Explanatory notes
            ===================
            A data point could be empty. It exists independently of the instance value to be stored in it.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataPointXsdType"
                  xml:id="DataPointXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Container for an instance value.
            
            Examples
            ==========
            A cell in a data cube or a table. 
            
            Explanatory notes
            ===================
            A data point could be empty. It exists independently of the instance value to be stored in it.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPoint-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPoint-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataPoint_correspondsTo_DataStructureComponent"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataPoint_correspondsTo_DataStructureComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataPoint_correspondsTo_DataStructureComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataPoint_correspondsTo_DataStructureComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AttributeComponent"/>
                      <xs:enumeration value="ContextualComponent"/>
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DataStructureComponent"/>
                      <xs:enumeration value="DimensionComponent"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="IdentifierComponent"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="MeasureComponent"/>
                      <xs:enumeration value="QualifiedMeasure"/>
                      <xs:enumeration value="SyntheticIdComponent"/>
                      <xs:enumeration value="VariableDescriptorComponent"/>
                      <xs:enumeration value="VariableValueComponent"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataPoint_isDescribedBy_InstanceVariable"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="DataPoint_isDescribedBy_InstanceVariable">
        <xs:annotation>
          <xs:documentation>The instance variable delimits the values which can populate a data point. Data point is described by one instance variable.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataPoint_isDescribedBy_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataPoint_isDescribedBy_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataPointPosition"
              type="DataPointPositionXsdType"
              xml:id="DataPointPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::DataPointPosition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Indexed location of the associated member within the associated list.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataPointPositionXsdType"
                  xml:id="DataPointPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Indexed location of the associated member within the associated list.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPointPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="DataPointPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataPointPosition_indexes_DataPoint"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPointPosition_indexes_DataPoint">
        <xs:annotation>
          <xs:documentation>Data point position indexes zero to one data point.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataPointPosition_indexes_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataPointPosition_indexes_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataPointRelationship"
              type="DataPointRelationshipXsdType"
              xml:id="DataPointRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::DataPointRelationship -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relations used by the data point relation structure of a logical record to describe specific source-target data points and their relationship.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataPointRelationshipXsdType"
                  xml:id="DataPointRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relations used by the data point relation structure of a logical record to describe specific source-target data points and their relationship.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPointRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataPointRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataPointRelationship_hasTarget_DataPoint"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataPointRelationship_hasTarget_DataPoint">
        <xs:annotation>
          <xs:documentation>Data point relationship has zero to many target data points.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataPointRelationship_hasTarget_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataPointRelationship_hasTarget_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataPointRelationship_hasSource_DataPoint"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataPointRelationship_hasSource_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataPointRelationship_hasSource_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataPointRelationship_hasSource_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataSet"
              type="DataSetXsdType"
              xml:id="DataSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::DataSet -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Organized collection of data based on keys.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataSetXsdType"
                  xml:id="DataSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Organized collection of data based on keys.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataSet-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataSet-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataSet_isStructuredBy_DataStructure"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataSet_isStructuredBy_DataStructure">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataSet_isStructuredBy_DataStructure-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataSet_isStructuredBy_DataStructure-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataSet_has_DataPoint"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataSet_has_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataSet_has_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="DataSet_has_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataSet_has_Key"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataSet_has_Key">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataSet_has_Key-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="DataSet_has_Key-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DimensionalKey"/>
                      <xs:enumeration value="InstanceKey"/>
                      <xs:enumeration value="Key"/>
                      <xs:enumeration value="LongKey"/>
                      <xs:enumeration value="WideKey"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataStore"
              type="DataStoreXsdType"
              xml:id="DataStore">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::DataStore -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of logical records.  
            
            Examples 
            ========== 
            The data lineage of an individual business process or an entire data pipeline are both examples of a logical record relation structures. In a data lineage we can observe how logical records are connected within a business process or across business processes.  
            
            Explanatory notes 
            =================== 
            Keep in mind that a logical records are definitions, not a "datasets". Logical records organized in a structured collection is called a logical record relation structure. Instances of logical records instantiated as organizations of data points hosting data are described in format description. A data store is reusable across studies. Each study has at most one data store.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataStoreXsdType"
                  xml:id="DataStoreXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of logical records.  
            
            Examples 
            ========== 
            The data lineage of an individual business process or an entire data pipeline are both examples of a logical record relation structures. In a data lineage we can observe how logical records are connected within a business process or across business processes.  
            
            Explanatory notes 
            =================== 
            Keep in mind that a logical records are definitions, not a "datasets". Logical records organized in a structured collection is called a logical record relation structure. Instances of logical records instantiated as organizations of data points hosting data are described in format description. A data store is reusable across studies. Each study has at most one data store.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="aboutMissing"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-aboutMissing">
        <xs:annotation>
          <xs:documentation>General information about missing data, e.g., that missing data have been standardized across the collection, missing data are present because of merging, etc.-  corresponds to DDI2.5 dataMsng.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="DataStore-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="characterSet"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-characterSet">
        <xs:annotation>
          <xs:documentation>Default character set used in the Data Store.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="dataStoreType"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-dataStoreType">
        <xs:annotation>
          <xs:documentation>The type of datastore. Could be delimited file, fixed record length file, relational database, etc. Points to an external definition which can be part of a controlled vocabulary maintained by the DDI Alliance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataStore-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recordCount"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore-recordCount">
        <xs:annotation>
          <xs:documentation>The number of records in the Data Store.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataStore_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataStore_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataStore_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataStore_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataStore_has_LogicalRecordPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataStore_has_LogicalRecordPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataStore_has_LogicalRecordPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="DataStore_has_LogicalRecordPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecordPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataStore_has_LogicalRecord"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataStore_has_LogicalRecord">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataStore_has_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataStore_has_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DataStore_has_RecordRelation"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStore_has_RecordRelation">
        <xs:annotation>
          <xs:documentation>The record relation that defines the relationship and linking requirements between logical records in the data store.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataStore_has_RecordRelation-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataStore_has_RecordRelation-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="RecordRelation"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DataStructure"
              type="DataStructureXsdType"
              xml:id="DataStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::DataStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============
            Data organization based on reusable data structure components.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataStructureXsdType"
                  xml:id="DataStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============
            Data organization based on reusable data structure components.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        <xs:sequence>
          <xs:element name="DataStructure_has_ForeignKey"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DataStructure_has_ForeignKey">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DataStructure_has_ForeignKey-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="DataStructure_has_ForeignKey-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ForeignKey"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="DataStructure_has_DataStructureComponent"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DataStructure_has_DataStructureComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DataStructure_has_DataStructureComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DataStructure_has_DataStructureComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="AttributeComponent"/>
                          <xs:enumeration value="ContextualComponent"/>
                          <xs:enumeration value="DataStructure"/>
                          <xs:enumeration value="DataStructureComponent"/>
                          <xs:enumeration value="DimensionComponent"/>
                          <xs:enumeration value="DimensionalDataStructure"/>
                          <xs:enumeration value="IdentifierComponent"/>
                          <xs:enumeration value="KeyValueStructure"/>
                          <xs:enumeration value="LongDataStructure"/>
                          <xs:enumeration value="MeasureComponent"/>
                          <xs:enumeration value="QualifiedMeasure"/>
                          <xs:enumeration value="SyntheticIdComponent"/>
                          <xs:enumeration value="VariableDescriptorComponent"/>
                          <xs:enumeration value="VariableValueComponent"/>
                          <xs:enumeration value="WideDataStructure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="DataStructure_has_ComponentPosition"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DataStructure_has_ComponentPosition">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DataStructure_has_ComponentPosition-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="DataStructure_has_ComponentPosition-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ComponentPosition"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="DataStructure_has_PrimaryKey"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="DataStructure_has_PrimaryKey">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DataStructure_has_PrimaryKey-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="DataStructure_has_PrimaryKey-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="PrimaryKey"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DataStructureComponent"
              type="DataStructureComponentXsdType"
              xml:id="DataStructureComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::DataStructureComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure.  
            
            Explanatory notes 
            =================== 
            A represented variable can have different roles in different data structures. For instance, the variable sex can be a measure in a wide data structure and a dimension in a dimensional data structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DataStructureComponentXsdType"
                  xml:id="DataStructureComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure.  
            
            Explanatory notes 
            =================== 
            A represented variable can have different roles in different data structures. For instance, the variable sex can be a measure in a wide data structure and a dimension in a dimensional data structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStructureComponent-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantic"
                  type="PairedControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DataStructureComponent-semantic">
        <xs:annotation>
          <xs:documentation>Qualifies the purpose or use expressed as a paired external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specialization"
                  type="SpecializationRoleXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStructureComponent-specialization">
        <xs:annotation>
          <xs:documentation>The role played by the component for the data set for purposes of harmonization and integration, typically regarding geography, time, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataStructureComponent_isDefinedBy_RepresentedVariable"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DataStructureComponent_isDefinedBy_RepresentedVariable">
        <xs:annotation>
          <xs:documentation>Data structure component is defined by zero to one represented variable.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DataStructureComponent_isDefinedBy_RepresentedVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DataStructureComponent_isDefinedBy_RepresentedVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Datum"
              type="DatumXsdType"
              xml:id="Datum">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Datum -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Correspondence of a data instance to the concept it represents.  
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The single data instance (instance value) for that measurement is the character string "122". The datum in this case is the association of the conceptual value, i.e. the underlying measured concept (a blood pressure at that level), with the instance value.    
            if a datum represents the conceptual value “married” with a code “M,” it is not the same datum where that conceptual value is represented with a code “1”. If the datum which uses the code “M” is present in more than one data set, it is still the same datum.
            
            Explanatory notes 
            =================== 
            The datum is a reification of the association between instance value and conceptual value. It is a designation (a representation of a concept by a sign) in the signification pattern. The data instance (instance value) is the signifier and the concept it represents (conceptual value) is the signified. The datum has an association with an instance variable which allows the attachment of a unit of measurement, a datatype, and a population. These instance variable attributes are critical for interpreting the signifier.  NOTE: This is NOT datum as defined in The Data Documentation Initiative Lifecycle specification, which is more limited in breadth. This specification takes a little more formal (semiotic) description of a datum using the signification pattern.
            The datum is reusable, and may appear in more than one data set, carrying with it its full contextualized meaning and identity. The instance variables and instance values with which it is associated will therefore be functionally similar or identical across its appearance in different data instances. Instance variable and instance value are specific to a single data set instance – datum is not.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DatumXsdType"
                  xml:id="DatumXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Correspondence of a data instance to the concept it represents.  
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The single data instance (instance value) for that measurement is the character string "122". The datum in this case is the association of the conceptual value, i.e. the underlying measured concept (a blood pressure at that level), with the instance value.    
            if a datum represents the conceptual value “married” with a code “M,” it is not the same datum where that conceptual value is represented with a code “1”. If the datum which uses the code “M” is present in more than one data set, it is still the same datum.
            
            Explanatory notes 
            =================== 
            The datum is a reification of the association between instance value and conceptual value. It is a designation (a representation of a concept by a sign) in the signification pattern. The data instance (instance value) is the signifier and the concept it represents (conceptual value) is the signified. The datum has an association with an instance variable which allows the attachment of a unit of measurement, a datatype, and a population. These instance variable attributes are critical for interpreting the signifier.  NOTE: This is NOT datum as defined in The Data Documentation Initiative Lifecycle specification, which is more limited in breadth. This specification takes a little more formal (semiotic) description of a datum using the signification pattern.
            The datum is reusable, and may appear in more than one data set, carrying with it its full contextualized meaning and identity. The instance variables and instance values with which it is associated will therefore be functionally similar or identical across its appearance in different data instances. Instance variable and instance value are specific to a single data set instance – datum is not.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Datum-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Datum-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Datum_uses_Notation"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Datum_uses_Notation">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Datum_uses_Notation-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Datum_uses_Notation-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Notation"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Datum_denotes_ConceptualValue"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="Datum_denotes_ConceptualValue">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Datum_denotes_ConceptualValue-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Datum_denotes_ConceptualValue-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Datum_uses_InstanceValue"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="Datum_uses_InstanceValue">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Datum_uses_InstanceValue-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Datum_uses_InstanceValue-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Descriptor"/>
                      <xs:enumeration value="DimensionalKeyMember"/>
                      <xs:enumeration value="InstanceValue"/>
                      <xs:enumeration value="KeyMember"/>
                      <xs:enumeration value="LongMainKeyMember"/>
                      <xs:enumeration value="MainKeyMember"/>
                      <xs:enumeration value="ReferenceValue"/>
                      <xs:enumeration value="WideKeyMember"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Datum_isBoundedBy_InstanceVariable"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="Datum_isBoundedBy_InstanceVariable">
        <xs:annotation>
          <xs:documentation>A datum is bounded by an instance variable. The datum is drawn from a set of values, either substantive or sentinel described by the value domain of the instance variable.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Datum_isBoundedBy_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Datum_isBoundedBy_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Descriptor"
              type="DescriptorXsdType"
              xml:id="Descriptor">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::Descriptor -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Use of a code for variable identification in the context of a data structure and a variable descriptor component.
            
            Examples
            ========
            Consider two variables, i.e. income and age, with values appearing in the same column. Codes "income" and "age" are descriptors. They appear multiple time in a variable descriptor component, one for each value in the variable value component. Each descriptor references one of those values. This way it's possible to identify which values correspond to income and which ones to age.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DescriptorXsdType"
                  xml:id="DescriptorXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Use of a code for variable identification in the context of a data structure and a variable descriptor component.
            
            Examples
            ========
            Consider two variables, i.e. income and age, with values appearing in the same column. Codes "income" and "age" are descriptors. They appear multiple time in a variable descriptor component, one for each value in the variable value component. Each descriptor references one of those values. This way it's possible to identify which values correspond to income and which ones to age.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyMemberXsdType">
        <xs:sequence>
          <xs:element name="Descriptor_refersTo_ReferenceValue"
                      minOccurs="1"
                      maxOccurs="unbounded"
                      xml:id="Descriptor_refersTo_ReferenceValue">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Descriptor_refersTo_ReferenceValue-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="Descriptor_refersTo_ReferenceValue-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ReferenceValue"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="Descriptor_identifies_ReferenceVariable"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="Descriptor_identifies_ReferenceVariable">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Descriptor_identifies_ReferenceVariable-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Descriptor_identifies_ReferenceVariable-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ReferenceVariable"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="Descriptor_hasValueFrom_DescriptorValueDomain"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="Descriptor_hasValueFrom_DescriptorValueDomain">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Descriptor_hasValueFrom_DescriptorValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Descriptor_hasValueFrom_DescriptorValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DescriptorValueDomain"
              type="DescriptorValueDomainXsdType"
              xml:id="DescriptorValueDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::DescriptorValueDomain -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of permissible values for a variable playing the role of a variable descriptor component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column. 
            Codes "income" and "age" are descriptors that appear in the descriptor value domain corresponding to the descriptor variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DescriptorValueDomainXsdType"
                  xml:id="DescriptorValueDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of permissible values for a variable playing the role of a variable descriptor component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column. 
            Codes "income" and "age" are descriptors that appear in the descriptor value domain corresponding to the descriptor variable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SubstantiveValueDomainXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DescriptorVariable"
              type="DescriptorVariableXsdType"
              xml:id="DescriptorVariable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::DescriptorVariable -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Variable that provides codes for variable identification in the context of a data structure.
            Variable playing the role of a variable descriptor component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values apearing in the same column. 
            Codes "income" and "age" are descriptors that appear in the descriptor value domain corresponding to the descriptor variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DescriptorVariableXsdType"
                  xml:id="DescriptorVariableXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Variable that provides codes for variable identification in the context of a data structure.
            Variable playing the role of a variable descriptor component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values apearing in the same column. 
            Codes "income" and "age" are descriptors that appear in the descriptor value domain corresponding to the descriptor variable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InstanceVariableXsdType">
        <xs:sequence>
          <xs:element name="DescriptorVariable_takesSubstantiveValuesFrom_DescriptorValueDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="DescriptorVariable_takesSubstantiveValuesFrom_DescriptorValueDomain">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DescriptorVariable_takesSubstantiveValuesFrom_DescriptorValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="DescriptorVariable_takesSubstantiveValuesFrom_DescriptorValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DeterministicImperative"
              type="DeterministicImperativeXsdType"
              xml:id="DeterministicImperative">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::DeterministicImperative -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Deterministic imperative is a subtype of control logic. Deterministic control logic consists of control constructs.   
            
            Examples 
            ========== 
            A Loop control construct is deterministic control logic. A script is deterministic control logic.  
            
            Explanatory notes 
            =================== 
            Because control logic covers both deterministic and non-deterministic forms, it has been divided into the appropriate subtypes.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DeterministicImperativeXsdType"
                  xml:id="DeterministicImperativeXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Deterministic imperative is a subtype of control logic. Deterministic control logic consists of control constructs.   
            
            Examples 
            ========== 
            A Loop control construct is deterministic control logic. A script is deterministic control logic.  
            
            Explanatory notes 
            =================== 
            Because control logic covers both deterministic and non-deterministic forms, it has been divided into the appropriate subtypes.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ControlLogicXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionComponent"
              type="DimensionComponentXsdType"
              xml:id="DimensionComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::DimensionComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a dimensional data structure to identify the universes associated with data points. The variable acts as a field in the compound identifier (the key structure) to disambiguate the cells in the multi-dimensional "cube".  
            
            Explanatory notes 
            =================== 
            The categories from each dimension often are used in combination to identify a cell. The meaning of the combination of the categories supplies meaning to the cell.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionComponentXsdType"
                  xml:id="DimensionComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a dimensional data structure to identify the universes associated with data points. The variable acts as a field in the compound identifier (the key structure) to disambiguate the cells in the multi-dimensional "cube".  
            
            Explanatory notes 
            =================== 
            The categories from each dimension often are used in combination to identify a cell. The meaning of the combination of the categories supplies meaning to the cell.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        <xs:sequence>
          <xs:element name="categoricalAdditivity"
                      type="xs:boolean"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="DimensionComponent-categoricalAdditivity">
            <xs:annotation>
              <xs:documentation>Indicates whether categories at a specific level can be combined to provide the value for their shared parent category. Value is True if categories can be added together (collapsed) to create higher-level categories.  
        
        An example would be age categories. Five-year age categories can be collapsed into 10-year age categories.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DimensionComponent_isStructuredBy_ValueDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="DimensionComponent_isStructuredBy_ValueDomain">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionComponent_isStructuredBy_ValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="DimensionComponent_isStructuredBy_ValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorValueDomain"/>
                          <xs:enumeration value="ReferenceValueDomain"/>
                          <xs:enumeration value="SentinelValueDomain"/>
                          <xs:enumeration value="SubstantiveValueDomain"/>
                          <xs:enumeration value="ValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionGroup"
              type="DimensionGroupXsdType"
              xml:id="DimensionGroup">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionGroup -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of dimensions that can be reused across multiple dimensional structures.
            
            Examples
            ==========
            Sex, Province and Marital Status is a common set of dimensions used across a variety of dimensional data structures and might need to be maintained separately.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionGroupXsdType"
                  xml:id="DimensionGroupXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of dimensions that can be reused across multiple dimensional structures.
            
            Examples
            ==========
            Sex, Province and Marital Status is a common set of dimensions used across a variety of dimensional data structures and might need to be maintained separately.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DimensionGroup-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="DimensionGroup-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DimensionGroup_has_DimensionComponent"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="DimensionGroup_has_DimensionComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="DimensionGroup_has_DimensionComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="DimensionGroup_has_DimensionComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DimensionComponent"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DimensionalDataSet"
              type="DimensionalDataSetXsdType"
              xml:id="DimensionalDataSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalDataSet -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of multidimensional data. It is structured by a dimensional data structure.
            
            Examples
            ==========
            A dimensional dataset with Income values in each data point, where the dimensions organizing the data points are Sex and Marital Status.
            
            Explanatory notes
            ===================
            Similar to Structural N-Cube.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalDataSetXsdType"
                  xml:id="DimensionalDataSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of multidimensional data. It is structured by a dimensional data structure.
            
            Examples
            ==========
            A dimensional dataset with Income values in each data point, where the dimensions organizing the data points are Sex and Marital Status.
            
            Explanatory notes
            ===================
            Similar to Structural N-Cube.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataSetXsdType">
        <xs:sequence>
          <xs:element name="name"
                      type="ObjectNameXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DimensionalDataSet-name">
            <xs:annotation>
              <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DimensionalDataSet_represents_ScopedMeasure"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DimensionalDataSet_represents_ScopedMeasure">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionalDataSet_represents_ScopedMeasure-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="DimensionalDataSet_represents_ScopedMeasure-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ScopedMeasure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionalDataStructure"
              type="DimensionalDataStructureXsdType"
              xml:id="DimensionalDataStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalDataStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a dimensional data set (organized collection of multidimensional data). It is described by dimension, measure and attribute components.
            
            Examples
            ==========
            The structure described by [City, Average Income, Total Population] where City is a dimension and Average Income and Total Population are measures.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalDataStructureXsdType"
                  xml:id="DimensionalDataStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a dimensional data set (organized collection of multidimensional data). It is described by dimension, measure and attribute components.
            
            Examples
            ==========
            The structure described by [City, Average Income, Total Population] where City is a dimension and Average Income and Total Population are measures.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureXsdType">
        <xs:sequence>
          <xs:element name="DimensionalDataStructure_uses_DimensionGroup"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="DimensionalDataStructure_uses_DimensionGroup">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionalDataStructure_uses_DimensionGroup-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="DimensionalDataStructure_uses_DimensionGroup-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DimensionGroup"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionalKey"
              type="DimensionalKeyXsdType"
              xml:id="DimensionalKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of data instances that uniquely identify a collection of data points in a dimensional dataset.
            
            Examples
            ==========
            Collection of "male", "Ontario" and "married" strings in a dimensional dataset where data points are identified by Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalKeyXsdType"
                  xml:id="DimensionalKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of data instances that uniquely identify a collection of data points in a dimensional dataset.
            
            Examples
            ==========
            Collection of "male", "Ontario" and "married" strings in a dimensional dataset where data points are identified by Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionalKeyDefinition"
              type="DimensionalKeyDefinitionXsdType"
              xml:id="DimensionalKeyDefinition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalKeyDefinition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of concepts that uniquely defines a collection of data points in a dimensional dataset.
            
            Examples
            ==========
            Collection of [Male], [Ontario] and [Married] categories in a dimensional dataset where data points are defined by Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalKeyDefinitionXsdType"
                  xml:id="DimensionalKeyDefinitionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of concepts that uniquely defines a collection of data points in a dimensional dataset.
            
            Examples
            ==========
            Collection of [Male], [Ontario] and [Married] categories in a dimensional dataset where data points are defined by Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyDefinitionXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionalKeyDefinitionMember"
              type="DimensionalKeyDefinitionMemberXsdType"
              xml:id="DimensionalKeyDefinitionMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalKeyDefinitionMember -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single concept that is part of a dimensional key definition.
            
            Examples
            ==========
            The [Ontario] category in a dimensional dataset where data points are defined by Province and other dimensions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalKeyDefinitionMemberXsdType"
                  xml:id="DimensionalKeyDefinitionMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single concept that is part of a dimensional key definition.
            
            Examples
            ==========
            The [Ontario] category in a dimensional dataset where data points are defined by Province and other dimensions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptualValueXsdType">
        <xs:sequence>
          <xs:element name="DimensionalKeyDefinitionMember_isRepresentedBy_DimensionalKeyMember"
                      minOccurs="1"
                      maxOccurs="unbounded"
                      xml:id="DimensionalKeyDefinitionMember_isRepresentedBy_DimensionalKeyMember">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionalKeyDefinitionMember_isRepresentedBy_DimensionalKeyMember-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionalKeyDefinitionMember_isRepresentedBy_DimensionalKeyMember-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DimensionalKeyMember"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="DimensionalKeyMember"
              type="DimensionalKeyMemberXsdType"
              xml:id="DimensionalKeyMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::DimensionalKeyMember -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single data instance that is part of a dimensional key. 
            
            Examples
            ==========
            The "Ontario" string in a dimensional dataset where data points are identified by Province and other dimensions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DimensionalKeyMemberXsdType"
                  xml:id="DimensionalKeyMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single data instance that is part of a dimensional key. 
            
            Examples
            ==========
            The "Ontario" string in a dimensional dataset where data points are identified by Province and other dimensions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyMemberXsdType">
        <xs:sequence>
          <xs:element name="DimensionalKeyMember_hasValueFrom_CodeList"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="DimensionalKeyMember_hasValueFrom_CodeList">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="DimensionalKeyMember_hasValueFrom_CodeList-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="DimensionalKeyMember_hasValueFrom_CodeList-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="CodeList"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="EnumerationDomain"
              type="EnumerationDomainXsdType"
              xml:id="EnumerationDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::EnumerationDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A base class acting as an extension point to allow all codifications (codelist, statistical classification, etc.) to be understood as enumerated value domains.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="EnumerationDomainXsdType"
                  xml:id="EnumerationDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A base class acting as an extension point to allow all codifications (codelist, statistical classification, etc.) to be understood as enumerated value domains.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="EnumerationDomain-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="EnumerationDomain-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="EnumerationDomain-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnumerationDomain_uses_LevelStructure"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="EnumerationDomain_uses_LevelStructure">
        <xs:annotation>
          <xs:documentation>Has meaningful level to which members belong.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="EnumerationDomain_uses_LevelStructure-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="EnumerationDomain_uses_LevelStructure-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LevelStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="EnumerationDomain_references_CategorySet"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="EnumerationDomain_references_CategorySet">
        <xs:annotation>
          <xs:documentation>Category set associated with the enumeration.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="EnumerationDomain_references_CategorySet-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="EnumerationDomain_references_CategorySet-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="CategorySet"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="EnumerationDomain_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="EnumerationDomain_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="EnumerationDomain_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="EnumerationDomain_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ForeignKey"
              type="ForeignKeyXsdType"
              xml:id="ForeignKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::ForeignKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a set of data structure components for content referencing purposes
            
            Explanatory notes
            ===================
            Equivalent to foreign key in the relational model.
            It can be used in conjunction with primary key to link data structures and their related data sets.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ForeignKeyXsdType"
                  xml:id="ForeignKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a set of data structure components for content referencing purposes
            
            Explanatory notes
            ===================
            Equivalent to foreign key in the relational model.
            It can be used in conjunction with primary key to link data structures and their related data sets.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ForeignKey-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ForeignKey_isComposedOf_ForeignKeyComponent"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="ForeignKey_isComposedOf_ForeignKeyComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ForeignKey_isComposedOf_ForeignKeyComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ForeignKey_isComposedOf_ForeignKeyComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ForeignKeyComponent"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ForeignKeyComponent"
              type="ForeignKeyComponentXsdType"
              xml:id="ForeignKeyComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::ForeignKeyComponent -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a data structure component for content referencing purposes
            
            Explanatory notes
            ===================
            Equivalent to a foreign key attribute (i.e. column) in the relational model.
            It can be used in conjunction with a primary key component to link data structures and their related data sets.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ForeignKeyComponentXsdType"
                  xml:id="ForeignKeyComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a data structure component for content referencing purposes
            
            Explanatory notes
            ===================
            Equivalent to a foreign key attribute (i.e. column) in the relational model.
            It can be used in conjunction with a primary key component to link data structures and their related data sets.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ForeignKeyComponent-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ForeignKeyComponent_references_PrimaryKeyComponent"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ForeignKeyComponent_references_PrimaryKeyComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ForeignKeyComponent_references_PrimaryKeyComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ForeignKeyComponent_references_PrimaryKeyComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PrimaryKeyComponent"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ForeignKeyComponent_correspondsTo_DataStructureComponent"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ForeignKeyComponent_correspondsTo_DataStructureComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ForeignKeyComponent_correspondsTo_DataStructureComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ForeignKeyComponent_correspondsTo_DataStructureComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AttributeComponent"/>
                      <xs:enumeration value="ContextualComponent"/>
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DataStructureComponent"/>
                      <xs:enumeration value="DimensionComponent"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="IdentifierComponent"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="MeasureComponent"/>
                      <xs:enumeration value="QualifiedMeasure"/>
                      <xs:enumeration value="SyntheticIdComponent"/>
                      <xs:enumeration value="VariableDescriptorComponent"/>
                      <xs:enumeration value="VariableValueComponent"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="IdentifierComponent"
              type="IdentifierComponentXsdType"
              xml:id="IdentifierComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::IdentifierComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a long or wide data structure to identify the units associated to data points, and in dimensional and key value data structures to provide identifying fields for the instance values.  
            
            Examples 
            ========== 
            The personal identification number of a Swedish citizen for unit data or the name of a country in the European Union for dimensional data.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="IdentifierComponentXsdType"
                  xml:id="IdentifierComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a long or wide data structure to identify the units associated to data points, and in dimensional and key value data structures to provide identifying fields for the instance values.  
            
            Examples 
            ========== 
            The personal identification number of a Swedish citizen for unit data or the name of a country in the European Union for dimensional data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Individual"
              type="IndividualXsdType"
              xml:id="Individual">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::Individual -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A person. (See for example the W3C Friend of a Friend Ontology - http://xmlns.com/foaf/spec/#term_Person).
            
            Examples 
            ========== 
            Individual employed by an organization. A person within a unit or project (organization). Albert Einstein, Bugs Bunny, Harry Potter, Ashley G. Williams, Gandalf.  
            
            Explanatory notes 
            =================== 
            Describes people referred to in the description of data and process. Similar to the concept found in Schema.org, the W3C ORG Ontology, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="IndividualXsdType"
                  xml:id="IndividualXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A person. (See for example the W3C Friend of a Friend Ontology - http://xmlns.com/foaf/spec/#term_Person).
            
            Examples 
            ========== 
            Individual employed by an organization. A person within a unit or project (organization). Albert Einstein, Bugs Bunny, Harry Potter, Ashley G. Williams, Gandalf.  
            
            Explanatory notes 
            =================== 
            Describes people referred to in the description of data and process. Similar to the concept found in Schema.org, the W3C ORG Ontology, etc.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="AgentXsdType">
        <xs:sequence>
          <xs:element name="contactInformation"
                      type="ContactInformationXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Individual-contactInformation">
            <xs:annotation>
              <xs:documentation>Contact information for the individual including location specification, address, URL, phone numbers, and other means of communication access. Sets of information can be repeated and date-stamped.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="individualName"
                      type="IndividualNameXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Individual-individualName">
            <xs:annotation>
              <xs:documentation>Name of an individual broken out into its component parts of prefix, first/given name, middle name, last/family/surname, and suffix.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="InformationFlowDefinition"
              type="InformationFlowDefinitionXsdType"
              xml:id="InformationFlowDefinition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::InformationFlowDefinition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            The relationships between parameters across steps is described by the information flow definition. Each relationship creates a pathway for an information object to follow.  
            
            Examples 
            ========== 
            The output of one parameter might be the input of another one. Think of a Business Process Model and Notation (BPMN) diagram or an extract, transform, and load (ETL) pipeline definition as the sum of these relationships.  
            
            Explanatory notes 
            =================== 
            In DDI Lifecycle an information flow definition was referred to in terms of a "binding".</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InformationFlowDefinitionXsdType"
                  xml:id="InformationFlowDefinitionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            The relationships between parameters across steps is described by the information flow definition. Each relationship creates a pathway for an information object to follow.  
            
            Examples 
            ========== 
            The output of one parameter might be the input of another one. Think of a Business Process Model and Notation (BPMN) diagram or an extract, transform, and load (ETL) pipeline definition as the sum of these relationships.  
            
            Explanatory notes 
            =================== 
            In DDI Lifecycle an information flow definition was referred to in terms of a "binding".</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InformationFlowDefinition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InformationFlowDefinition_from_Parameter"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InformationFlowDefinition_from_Parameter">
        <xs:annotation>
          <xs:documentation>From parameters are the outputs from a control construct produced in its step/sub-step.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InformationFlowDefinition_from_Parameter-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="InformationFlowDefinition_from_Parameter-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Parameter"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="InformationFlowDefinition_to_Parameter"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="InformationFlowDefinition_to_Parameter">
        <xs:annotation>
          <xs:documentation>To parameters are the inputs to a control construct used in its step/sub-step.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InformationFlowDefinition_to_Parameter-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="InformationFlowDefinition_to_Parameter-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Parameter"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="InstanceKey"
              type="InstanceKeyXsdType"
              xml:id="InstanceKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::InstanceKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single-valued key representation produced from the merge of the representations of all key members and a descriptor. 
            
            Examples
            ==========
            The string "cluster:income_distribution:unitid:20:period:2020/02:income", where "cluster:income_distribution" is a key member based on a contextual component, "unitid:20" is based on an identifier component, "period:2020/02" is based on a component with a time role and "income" is based on a descriptor.
            
            
            Explanatory notes
            ===================
            For value strings, the merge is the string concatenation operation.
            For other classes, an appropriate merge representation can be defined.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InstanceKeyXsdType"
                  xml:id="InstanceKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single-valued key representation produced from the merge of the representations of all key members and a descriptor. 
            
            Examples
            ==========
            The string "cluster:income_distribution:unitid:20:period:2020/02:income", where "cluster:income_distribution" is a key member based on a contextual component, "unitid:20" is based on an identifier component, "period:2020/02" is based on a component with a time role and "income" is based on a descriptor.
            
            
            Explanatory notes
            ===================
            For value strings, the merge is the string concatenation operation.
            For other classes, an appropriate merge representation can be defined.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyXsdType">
        <xs:sequence>
          <xs:element name="InstanceKey_has_InstanceValue"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="InstanceKey_has_InstanceValue">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="InstanceKey_has_InstanceValue-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="InstanceKey_has_InstanceValue-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Descriptor"/>
                          <xs:enumeration value="DimensionalKeyMember"/>
                          <xs:enumeration value="InstanceValue"/>
                          <xs:enumeration value="KeyMember"/>
                          <xs:enumeration value="LongMainKeyMember"/>
                          <xs:enumeration value="MainKeyMember"/>
                          <xs:enumeration value="ReferenceValue"/>
                          <xs:enumeration value="WideKeyMember"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="InstanceKey_refersTo_ReferenceValue"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="InstanceKey_refersTo_ReferenceValue">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="InstanceKey_refersTo_ReferenceValue-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="InstanceKey_refersTo_ReferenceValue-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ReferenceValue"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="InstanceValue"
              type="InstanceValueXsdType"
              xml:id="InstanceValue">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::InstanceValue -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance corresponding to a concept (with a notion of equality defined) being observed, captured, or derived.  
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The single data instance (instance value) for that measurement is the character string "122". The associated measured concept (a blood pressure at that level) is the conceptual value.     
            
            Explanatory notes 
            =================== 
            This is the actual instance of data that populates a data point (the signifier of a datum in the signification pattern). The instance value comes from a value domain associated with an instance variable which allows the attachment of a unit of measurement, a datatype, and a population.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InstanceValueXsdType"
                  xml:id="InstanceValueXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance corresponding to a concept (with a notion of equality defined) being observed, captured, or derived.  
            
            Examples 
            ========== 
            A systolic blood pressure of 122 is measured. The single data instance (instance value) for that measurement is the character string "122". The associated measured concept (a blood pressure at that level) is the conceptual value.     
            
            Explanatory notes 
            =================== 
            This is the actual instance of data that populates a data point (the signifier of a datum in the signification pattern). The instance value comes from a value domain associated with an instance variable which allows the attachment of a unit of measurement, a datatype, and a population.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="content"
                  type="TypedStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceValue-content">
        <xs:annotation>
          <xs:documentation>The content of this value expressed as a string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceValue-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="whiteSpace"
                  type="WhiteSpaceRuleXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceValue-whiteSpace">
        <xs:annotation>
          <xs:documentation>The usual setting "collapse" states that leading and trailing white space will be removed and multiple adjacent white spaces will be treated as a single white space. When setting to "replace" all occurrences of #x9 (tab), #xA (line feed) and #xD (carriage return) are replaced with #x20 (space) but leading and trailing spaces will be retained. If the existence of any of these white spaces is critical to the understanding of the content, change the value of this attribute to "preserve".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InstanceValue_hasValueFrom_ValueDomain"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InstanceValue_hasValueFrom_ValueDomain">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceValue_hasValueFrom_ValueDomain-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="InstanceValue_hasValueFrom_ValueDomain-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorValueDomain"/>
                      <xs:enumeration value="ReferenceValueDomain"/>
                      <xs:enumeration value="SentinelValueDomain"/>
                      <xs:enumeration value="SubstantiveValueDomain"/>
                      <xs:enumeration value="ValueDomain"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="InstanceValue_isStoredIn_DataPoint"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceValue_isStoredIn_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceValue_isStoredIn_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceValue_isStoredIn_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="InstanceValue_represents_ConceptualValue"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceValue_represents_ConceptualValue">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceValue_represents_ConceptualValue-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="unbounded"
                            xml:id="InstanceValue_represents_ConceptualValue-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="InstanceVariable"
              type="InstanceVariableXsdType"
              xml:id="InstanceVariable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::InstanceVariable -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Use of a represented variable within a data set.  
            
            Examples
            ======== 
            1. Gender: Dan Gillman has gender &lt;m, male&gt;, Arofan Gregory has gender &lt;m, male&gt;, etc.
            2. Number of employees: Microsoft has 90,000 employees; IBM has 433,000 employees, etc.
            3. Endowment: Johns Hopkins has endowment of &lt;3, $1,000,000 and above&gt;, Yale has endowment of &lt;3, $1,000,000 and above&gt;, etc.
            4. A tornado near Winterset, Iowa, had a peak wind speed of 170 mph. Two instance variables of a person's height reference the same represented variable. This indicates that they are intended to: be measured with the same unit of measurement, have the same intended data type, have the same substantive value domain, use a sentinel value domain drawn from the same set of sentinel value domains, have the same sentinel (missing value) concepts, and draw their population from the same universe. In other words, the two instance variables should be comparable.
            
            Explanatory notes
            ================= 
            The instance variable class inherits all of the properties and relationships of the represented variable class and, in turn, the conceptual variable class. This means that an instance variable can be completely populated without the need to create an associated represented variable or conceptual variable. If, however, a user wishes to indicate that a particular instance variable is patterned after a particular represented variable or a particular conceptual variable that may be indicated by including a relationship to the represented variable and/or conceptual variable. Including these references is an important method of indicating that multiple instance variables have the same representation, measure the same concept, and are drawn from the same universe. If two instance variables of a person's height reference the same represented variable. This indicates that they are intended to: be measured with the same unit of measurement, have the same intended data type, have the same substantive value domain, use a sentinel value domain drawn from the same set of sentinel value domains, have the same sentinel (missing value) concepts, and draw their population from the same universe. In other words, the two instance variables should be comparable. The instance variable describes actual instances of data that have been collected.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InstanceVariableXsdType"
                  xml:id="InstanceVariableXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Use of a represented variable within a data set.  
            
            Examples
            ======== 
            1. Gender: Dan Gillman has gender &lt;m, male&gt;, Arofan Gregory has gender &lt;m, male&gt;, etc.
            2. Number of employees: Microsoft has 90,000 employees; IBM has 433,000 employees, etc.
            3. Endowment: Johns Hopkins has endowment of &lt;3, $1,000,000 and above&gt;, Yale has endowment of &lt;3, $1,000,000 and above&gt;, etc.
            4. A tornado near Winterset, Iowa, had a peak wind speed of 170 mph. Two instance variables of a person's height reference the same represented variable. This indicates that they are intended to: be measured with the same unit of measurement, have the same intended data type, have the same substantive value domain, use a sentinel value domain drawn from the same set of sentinel value domains, have the same sentinel (missing value) concepts, and draw their population from the same universe. In other words, the two instance variables should be comparable.
            
            Explanatory notes
            ================= 
            The instance variable class inherits all of the properties and relationships of the represented variable class and, in turn, the conceptual variable class. This means that an instance variable can be completely populated without the need to create an associated represented variable or conceptual variable. If, however, a user wishes to indicate that a particular instance variable is patterned after a particular represented variable or a particular conceptual variable that may be indicated by including a relationship to the represented variable and/or conceptual variable. Including these references is an important method of indicating that multiple instance variables have the same representation, measure the same concept, and are drawn from the same universe. If two instance variables of a person's height reference the same represented variable. This indicates that they are intended to: be measured with the same unit of measurement, have the same intended data type, have the same substantive value domain, use a sentinel value domain drawn from the same set of sentinel value domains, have the same sentinel (missing value) concepts, and draw their population from the same universe. In other words, the two instance variables should be comparable. The instance variable describes actual instances of data that have been collected.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="RepresentedVariableXsdType">
        <xs:sequence>
          <xs:element name="physicalDataType"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="InstanceVariable-physicalDataType">
            <xs:annotation>
              <xs:documentation>The data type of this variable. Supports the optional use of an external controlled vocabulary.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="platformType"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="InstanceVariable-platformType">
            <xs:annotation>
              <xs:documentation>Describes the application or technical system context in which the variable has been realized. Typically a statistical processing package or other processing environment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="source"
                      type="ReferenceXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="InstanceVariable-source">
            <xs:annotation>
              <xs:documentation>Reference capturing provenance information.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="variableFunction"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="InstanceVariable-variableFunction">
            <xs:annotation>
              <xs:documentation>Immutable characteristic of the variable such as geographic designator, weight, temporal designation, etc.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="InstanceVariable_has_PhysicalSegmentLayout"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="InstanceVariable_has_PhysicalSegmentLayout">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="InstanceVariable_has_PhysicalSegmentLayout-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="InstanceVariable_has_PhysicalSegmentLayout-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="PhysicalSegmentLayout"/>
                          <xs:enumeration value="UnitSegmentLayout"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="InstanceVariable_has_ValueMapping"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="InstanceVariable_has_ValueMapping">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="InstanceVariable_has_ValueMapping-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="InstanceVariable_has_ValueMapping-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ValueMapping"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="InstanceVariableMap"
              type="InstanceVariableMapXsdType"
              xml:id="InstanceVariableMap">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::InstanceVariableMap -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Key value relationship for two or more logical records where the key is one or more equivalent instance variables and the value is a defined relationship or a relationship to a set value.  
            
            Explanatory notes 
            =================== 
            The instance variable map identifies the variables which are used to connect two data sets, as when persons in one structure are associated with households in another structure. For logical records Household and Person, the keys are Household ID (HHID in Household Record), and Person ID (HHIDP in Person Record). Their value relationship is Equal, and set value is n.a. For each person in the person record, the value of HHIDP will be exactly the same as the value of HHID in the household record for the household to which they belong. (Correspondence type refers to the variables themselves rather than the value of the variables concerned.) In this context correspondence type will normally be set to ExactMatch.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InstanceVariableMapXsdType"
                  xml:id="InstanceVariableMapXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Key value relationship for two or more logical records where the key is one or more equivalent instance variables and the value is a defined relationship or a relationship to a set value.  
            
            Explanatory notes 
            =================== 
            The instance variable map identifies the variables which are used to connect two data sets, as when persons in one structure are associated with households in another structure. For logical records Household and Person, the keys are Household ID (HHID in Household Record), and Person ID (HHIDP in Person Record). Their value relationship is Equal, and set value is n.a. For each person in the person record, the value of HHIDP will be exactly the same as the value of HHID in the household record for the household to which they belong. (Correspondence type refers to the variables themselves rather than the value of the variables concerned.) In this context correspondence type will normally be set to ExactMatch.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comparison"
                  type="ComparisonOperatorXsdType"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InstanceVariableMap-comparison">
        <xs:annotation>
          <xs:documentation>Relationship between the source and target instance variables or to the setValue if provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="correspondence"
                  type="CorrespondenceDefinitionXsdType"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InstanceVariableMap-correspondence">
        <xs:annotation>
          <xs:documentation>Describes the relationship between the source and target members using both controlled vocabularies and descriptive text. In this context the correspondence refers to the two instance variables, not their value. The relationship would normally be ExactMatch.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InstanceVariableMap-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="setValue"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InstanceVariableMap-setValue">
        <xs:annotation>
          <xs:documentation>A fixed value for the key source Instance Variables.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InstanceVariableMap_hasTarget_InstanceVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="InstanceVariableMap_hasTarget_InstanceVariable">
        <xs:annotation>
          <xs:documentation>Target instance variables if a directional relation is used.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceVariableMap_hasTarget_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="InstanceVariableMap_hasTarget_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="InstanceVariableMap_hasSource_InstanceVariable"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="InstanceVariableMap_hasSource_InstanceVariable">
        <xs:annotation>
          <xs:documentation>The source instance variable for the relationship.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="InstanceVariableMap_hasSource_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="InstanceVariableMap_hasSource_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Key"
              type="KeyXsdType"
              xml:id="Key">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Key -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of data instances that uniquely identify a collection of data points in a dataset.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyXsdType"
                  xml:id="KeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of data instances that uniquely identify a collection of data points in a dataset.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Key-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Key_correspondsTo_Unit"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Key_correspondsTo_Unit">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_correspondsTo_Unit-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Key_correspondsTo_Unit-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Unit"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Key_represents_KeyDefinition"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Key_represents_KeyDefinition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_represents_KeyDefinition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="unbounded"
                            xml:id="Key_represents_KeyDefinition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DimensionalKeyDefinition"/>
                      <xs:enumeration value="KeyDefinition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Key_identifies_DataPoint"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="Key_identifies_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_identifies_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_identifies_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Key_correspondsTo_Universe"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Key_correspondsTo_Universe">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_correspondsTo_Universe-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Key_correspondsTo_Universe-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Key_has_KeyMember"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Key_has_KeyMember">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_has_KeyMember-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Key_has_KeyMember-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Descriptor"/>
                      <xs:enumeration value="DimensionalKeyMember"/>
                      <xs:enumeration value="KeyMember"/>
                      <xs:enumeration value="LongMainKeyMember"/>
                      <xs:enumeration value="MainKeyMember"/>
                      <xs:enumeration value="WideKeyMember"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="KeyDefinition"
              type="KeyDefinitionXsdType"
              xml:id="KeyDefinition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyDefinition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of concepts that uniquely defines a collection of data points in a dataset.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyDefinitionXsdType"
                  xml:id="KeyDefinitionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of concepts that uniquely defines a collection of data points in a dataset.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="KeyDefinition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="KeyDefinition_correspondsTo_Universe"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="KeyDefinition_correspondsTo_Universe">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="KeyDefinition_correspondsTo_Universe-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="KeyDefinition_correspondsTo_Universe-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="KeyDefinition_correspondsTo_Unit"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="KeyDefinition_correspondsTo_Unit">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="KeyDefinition_correspondsTo_Unit-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="KeyDefinition_correspondsTo_Unit-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Unit"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="KeyDefinition_has_KeyDefinitionMember"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="KeyDefinition_has_KeyDefinitionMember">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="KeyDefinition_has_KeyDefinitionMember-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="KeyDefinition_has_KeyDefinitionMember-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="KeyDefinitionMember"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="KeyDefinitionMember"
              type="KeyDefinitionMemberXsdType"
              xml:id="KeyDefinitionMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyDefinitionMember -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single concept that is part of the structure of a key definition.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyDefinitionMemberXsdType"
                  xml:id="KeyDefinitionMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single concept that is part of the structure of a key definition.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptualValueXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="KeyMember"
              type="KeyMemberXsdType"
              xml:id="KeyMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyMember -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance that is part of a key.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyMemberXsdType"
                  xml:id="KeyMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance that is part of a key.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InstanceValueXsdType">
        <xs:sequence>
          <xs:element name="KeyMember_isBasedOn_DataStructureComponent"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="KeyMember_isBasedOn_DataStructureComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="KeyMember_isBasedOn_DataStructureComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="KeyMember_isBasedOn_DataStructureComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="AttributeComponent"/>
                          <xs:enumeration value="ContextualComponent"/>
                          <xs:enumeration value="DataStructure"/>
                          <xs:enumeration value="DataStructureComponent"/>
                          <xs:enumeration value="DimensionComponent"/>
                          <xs:enumeration value="DimensionalDataStructure"/>
                          <xs:enumeration value="IdentifierComponent"/>
                          <xs:enumeration value="KeyValueStructure"/>
                          <xs:enumeration value="LongDataStructure"/>
                          <xs:enumeration value="MeasureComponent"/>
                          <xs:enumeration value="QualifiedMeasure"/>
                          <xs:enumeration value="SyntheticIdComponent"/>
                          <xs:enumeration value="VariableDescriptorComponent"/>
                          <xs:enumeration value="VariableValueComponent"/>
                          <xs:enumeration value="WideDataStructure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="KeyValueDataStore"
              type="KeyValueDataStoreXsdType"
              xml:id="KeyValueDataStore">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::KeyValueDataStore -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of key-value data. It is structured by a key value structure.
            
            Examples
            ==========
            A unit key-value datastore where each instance key corresponds to a data point capturing a different characteristic of a unit.
            
            Explanatory notes
            ===================
            A key-value datastore is just a collection of key-value pairs, i.e. instance keys and reference values. 
            Each instance key encodes all relevant information about the context, the unit of interest and the variable associated with the reference value of a given data point.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyValueDataStoreXsdType"
                  xml:id="KeyValueDataStoreXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of key-value data. It is structured by a key value structure.
            
            Examples
            ==========
            A unit key-value datastore where each instance key corresponds to a data point capturing a different characteristic of a unit.
            
            Explanatory notes
            ===================
            A key-value datastore is just a collection of key-value pairs, i.e. instance keys and reference values. 
            Each instance key encodes all relevant information about the context, the unit of interest and the variable associated with the reference value of a given data point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataSetXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="KeyValueStructure"
              type="KeyValueStructureXsdType"
              xml:id="KeyValueStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::KeyValueStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a key-value datastore (organized collection of key-value data). It is described by identifier, contextual, synthetic id, dimension, variable descriptor and variable value components.
            
            Examples
            ==========
            The structure described by [Income distribution, Unit id, Period, Income] where Income distribution is the contextual component, Unit id identifies a statistical unit, period is a effective period and Income is the variable of interest.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="KeyValueStructureXsdType"
                  xml:id="KeyValueStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a key-value datastore (organized collection of key-value data). It is described by identifier, contextual, synthetic id, dimension, variable descriptor and variable value components.
            
            Examples
            ==========
            The structure described by [Income distribution, Unit id, Period, Income] where Income distribution is the contextual component, Unit id identifies a statistical unit, period is a effective period and Income is the variable of interest.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Level"
              type="LevelXsdType"
              xml:id="Level">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::Level -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of all classification items the same number of relationships from the root (or top) classification item.
            
            Examples
            ==========
            ISCO-08: index='1' label of associated category 'Major', index='2' label of associated category 'Sub-Major',  index='3' label of associated category 'Minor', 
            
            Explanatory notes
            ===================
            Provides level information for the members of the level structure. levelNumber provides the level number which may or may not be associated with a category which defines level.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LevelXsdType"
                  xml:id="LevelXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of all classification items the same number of relationships from the root (or top) classification item.
            
            Examples
            ==========
            ISCO-08: index='1' label of associated category 'Major', index='2' label of associated category 'Sub-Major',  index='3' label of associated category 'Minor', 
            
            Explanatory notes
            ===================
            Provides level information for the members of the level structure. levelNumber provides the level number which may or may not be associated with a category which defines level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Level-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Level-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="levelNumber"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="Level-levelNumber">
        <xs:annotation>
          <xs:documentation>Provides an association between a level number and optional concept which defines it within an ordered array. Use is required.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Level_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Level_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>A concept or concept sub-type which describes the level.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Level_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Level_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Level_groups_ClassificationItem"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Level_groups_ClassificationItem">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Level_groups_ClassificationItem-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Level_groups_ClassificationItem-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ClassificationItem"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LevelStructure"
              type="LevelStructureXsdType"
              xml:id="LevelStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::LevelStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Nesting structure of a hierarchical collection.   
            
            Examples 
            ========== 
            The International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) Major, Sub-Major, and Minor or the North American Industry Classification System (NAICS: https://www.census.gov/naics/) 2 digit sector codes, 3 digit subsector code list, 4 digit industry group code list, and 5 digit industry code list.
            
            Explanatory notes 
            =================== 
            The levels within the structure begin at the root level '1' and continue as an ordered array through each level of nesting. Levels are used to organize a hierarchy. Usually, a hierarchy contains one root member at the top, though it could contain several. These are the first level. All members directly related to those  in the first level compose the second level. The third and subsequent levels are defined similarly.  A level often is associated with a concept, which defines it. These correspond to kinds of aggregates. For example, in the US Standard Occupational Classification (2010), the level below the top is called Major Occupation Groups, and the next level is called Minor Occupational Groups. These ideas convey the structure. In particular, Health Care Practitioners (a major group) can be broken into Chiropractors, Dentists, Physicians, Vets, Therapists, etc. (minor groups) The categories in the nodes at the lower level aggregate to the category in node above them.  "Classification schemes are frequently organized in nested levels of increasing detail. ISCO-08, for example, has four levels: at the top level are ten major groups, each of which contain sub-major groups, which in turn are subdivided in minor groups, which contain unit groups. Even when a classification is not structured in levels ("flat classification"), the usual convention, which is adopted here, is to consider that it contains one unique level." (From the W3C Simple Knowlegde Organization System: http://rdf-vocabulary.ddialliance.org/xkos.html#) Individual classification items organized in a hierarchy may be associated with a specific level.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LevelStructureXsdType"
                  xml:id="LevelStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Nesting structure of a hierarchical collection.   
            
            Examples 
            ========== 
            The International Standard Classification of Occupations (ISCO-08: https://www.ilo.org/public/english/bureau/stat/isco/isco08/) Major, Sub-Major, and Minor or the North American Industry Classification System (NAICS: https://www.census.gov/naics/) 2 digit sector codes, 3 digit subsector code list, 4 digit industry group code list, and 5 digit industry code list.
            
            Explanatory notes 
            =================== 
            The levels within the structure begin at the root level '1' and continue as an ordered array through each level of nesting. Levels are used to organize a hierarchy. Usually, a hierarchy contains one root member at the top, though it could contain several. These are the first level. All members directly related to those  in the first level compose the second level. The third and subsequent levels are defined similarly.  A level often is associated with a concept, which defines it. These correspond to kinds of aggregates. For example, in the US Standard Occupational Classification (2010), the level below the top is called Major Occupation Groups, and the next level is called Minor Occupational Groups. These ideas convey the structure. In particular, Health Care Practitioners (a major group) can be broken into Chiropractors, Dentists, Physicians, Vets, Therapists, etc. (minor groups) The categories in the nodes at the lower level aggregate to the category in node above them.  "Classification schemes are frequently organized in nested levels of increasing detail. ISCO-08, for example, has four levels: at the top level are ten major groups, each of which contain sub-major groups, which in turn are subdivided in minor groups, which contain unit groups. Even when a classification is not structured in levels ("flat classification"), the usual convention, which is adopted here, is to consider that it contains one unique level." (From the W3C Simple Knowlegde Organization System: http://rdf-vocabulary.ddialliance.org/xkos.html#) Individual classification items organized in a hierarchy may be associated with a specific level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LevelStructure-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LevelStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LevelStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="usage"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LevelStructure-usage">
        <xs:annotation>
          <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validDateRange"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LevelStructure-validDateRange">
        <xs:annotation>
          <xs:documentation>The period for which the level object is valid, expressed as a start and end date (supports both ISO-standard and non-ISO date formats).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LevelStructure_has_Level"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LevelStructure_has_Level">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LevelStructure_has_Level-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LevelStructure_has_Level-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Level"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LogicalRecord"
              type="LogicalRecordXsdType"
              xml:id="LogicalRecord">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::LogicalRecord -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of instance variables.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LogicalRecordXsdType"
                  xml:id="LogicalRecordXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Collection of instance variables.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecord-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LogicalRecord_organizes_DataSet"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecord_organizes_DataSet">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecord_organizes_DataSet-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecord_organizes_DataSet-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataSet"/>
                      <xs:enumeration value="DimensionalDataSet"/>
                      <xs:enumeration value="KeyValueDataStore"/>
                      <xs:enumeration value="LongDataSet"/>
                      <xs:enumeration value="WideDataSet"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="LogicalRecord_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecord_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecord_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecord_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="LogicalRecord_has_InstanceVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecord_has_InstanceVariable">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecord_has_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecord_has_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LogicalRecordPosition"
              type="LogicalRecordPositionXsdType"
              xml:id="LogicalRecordPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::LogicalRecordPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a position of the logical record within the data store.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LogicalRecordPositionXsdType"
                  xml:id="LogicalRecordPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a position of the logical record within the data store.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="LogicalRecordPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LogicalRecordPosition_indexes_LogicalRecord"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="LogicalRecordPosition_indexes_LogicalRecord">
        <xs:annotation>
          <xs:documentation>Logical record position indexes a logical record.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecordPosition_indexes_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecordPosition_indexes_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LogicalRecordRelationStructure"
              type="LogicalRecordRelationStructureXsdType"
              xml:id="LogicalRecordRelationStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::LogicalRecordRelationStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structuring of relationships between logical records in a data store.
            
            Examples
            ==========
            A data store with a Household, Family, and Person logical record type. Allows for describing parent/child, whole/part, or other relationships as appropriate.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LogicalRecordRelationStructureXsdType"
                  xml:id="LogicalRecordRelationStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structuring of relationships between logical records in a data store.
            
            Examples
            ==========
            A data store with a Household, Family, and Person logical record type. Allows for describing parent/child, whole/part, or other relationships as appropriate.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecordRelationStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LogicalRecordRelationStructure_structures_DataStore"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecordRelationStructure_structures_DataStore">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecordRelationStructure_structures_DataStore-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecordRelationStructure_structures_DataStore-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataStore"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="LogicalRecordRelationStructure_has_LogicalRecordRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecordRelationStructure_has_LogicalRecordRelationship">
        <xs:annotation>
          <xs:documentation>LogicalRecordRelationStructure has zero to many LogicalRecordRelationships.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecordRelationStructure_has_LogicalRecordRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="LogicalRecordRelationStructure_has_LogicalRecordRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecordRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LogicalRecordRelationship"
              type="LogicalRecordRelationshipXsdType"
              xml:id="LogicalRecordRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::LogicalRecordRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationships between logical records.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LogicalRecordRelationshipXsdType"
                  xml:id="LogicalRecordRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationships between logical records.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LogicalRecordRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LogicalRecordRelationship_hasTarget_LogicalRecord"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecordRelationship_hasTarget_LogicalRecord">
        <xs:annotation>
          <xs:documentation>Note that this can be realized as a collection to support tuples.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecordRelationship_hasTarget_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecordRelationship_hasTarget_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="LogicalRecordRelationship_hasSource_LogicalRecord"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LogicalRecordRelationship_hasSource_LogicalRecord">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="LogicalRecordRelationship_hasSource_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="LogicalRecordRelationship_hasSource_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LongDataSet"
              type="LongDataSetXsdType"
              xml:id="LongDataSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::LongDataSet -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of long data. It is structured by a long data structure.
            
            Examples
            ==========
            A unit dataset where each row corresponds to a set of data points capturing different characteristics of a unit, some of which can be transposed into variable descriptor and variable value components.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LongDataSetXsdType"
                  xml:id="LongDataSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of long data. It is structured by a long data structure.
            
            Examples
            ==========
            A unit dataset where each row corresponds to a set of data points capturing different characteristics of a unit, some of which can be transposed into variable descriptor and variable value components.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataSetXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LongDataStructure"
              type="LongDataStructureXsdType"
              xml:id="LongDataStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::LongDataStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a long dataset (organized collection of long data). It is described by identifier, measure, attribute, variable descriptor and variable value components.
            
            Examples
            ==========
            The structure described by [Unit id, Income, Province, Variable name, Variable value] where Unit id identifies a statistical unit, Income and Province are two instance variables capturing characteristics, and other instance variables are represented by Variable name (a variable descriptor component) and Variable Value (a variable value component).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LongDataStructureXsdType"
                  xml:id="LongDataStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structure of a long dataset (organized collection of long data). It is described by identifier, measure, attribute, variable descriptor and variable value components.
            
            Examples
            ==========
            The structure described by [Unit id, Income, Province, Variable name, Variable value] where Unit id identifies a statistical unit, Income and Province are two instance variables capturing characteristics, and other instance variables are represented by Variable name (a variable descriptor component) and Variable Value (a variable value component).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LongKey"
              type="LongKeyXsdType"
              xml:id="LongKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::LongKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of data instances that uniquely identify a collection of data points in a long dataset.
            
            Examples
            ==========
            Collection containing the single "K1Z1C1" string in a long dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LongKeyXsdType"
                  xml:id="LongKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Collection of data instances that uniquely identify a collection of data points in a long dataset.
            
            Examples
            ==========
            Collection containing the single "K1Z1C1" string in a long dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LongMainKeyMember"
              type="LongMainKeyMemberXsdType"
              xml:id="LongMainKeyMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::LongMainKeyMember -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single data instance that is part of a long key. 
            
            Examples
            ==========
            The "K1Z1C1" string in a long dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LongMainKeyMemberXsdType"
                  xml:id="LongMainKeyMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Single data instance that is part of a long key. 
            
            Examples
            ==========
            The "K1Z1C1" string in a long dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyMemberXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Machine"
              type="MachineXsdType"
              xml:id="Machine">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::Machine -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Mechanism or computer program used to perform an act.
            
            Examples
            ==========
            SAS program, photocopier
            
            Explanatory notes
            ===================
            May be used as a target to identify the agent who performed an action. Used to define hardware or software that act as agents in data capture, data processing, or other related actions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="MachineXsdType"
                  xml:id="MachineXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Mechanism or computer program used to perform an act.
            
            Examples
            ==========
            SAS program, photocopier
            
            Explanatory notes
            ===================
            May be used as a target to identify the agent who performed an action. Used to define hardware or software that act as agents in data capture, data processing, or other related actions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="AgentXsdType">
        <xs:sequence>
          <xs:element name="accessLocation"
                      type="AccessLocationXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Machine-accessLocation">
            <xs:annotation>
              <xs:documentation>Location of the machine for the purpose of access.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="function"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Machine-function">
            <xs:annotation>
              <xs:documentation>The business function of the machine according to a classification or typology.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="machineInterface"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Machine-machineInterface">
            <xs:annotation>
              <xs:documentation>Reference to the type of the machine interface according to a classification or typology.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="name"
                      type="ObjectNameXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Machine-name">
            <xs:annotation>
              <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ownerOperatorContact"
                      type="ContactInformationXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Machine-ownerOperatorContact">
            <xs:annotation>
              <xs:documentation>Contact information for the owner/operator including location specification, address, URL, phone numbers, and other means of communication access. Sets of information can be repeated and date-stamped.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="typeOfMachine"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Machine-typeOfMachine">
            <xs:annotation>
              <xs:documentation>Describes the type of non-human actor (e.g., software, hardware, web service, etc.).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="MainKeyMember"
              type="MainKeyMemberXsdType"
              xml:id="MainKeyMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::MainKeyMember -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifies the unit of interest, either a statistical unit or a population, via identifier or dimension components, respectively, plus an optional contextual component. 
            If neither identifier nor dimension components are present, then a synthetic id component is used. 
            
            Examples
            ==========
            The string "income_distribution:male:Ontario:married" in a dimensional key-value datastore, where instance key members are defined by context plus Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="MainKeyMemberXsdType"
                  xml:id="MainKeyMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifies the unit of interest, either a statistical unit or a population, via identifier or dimension components, respectively, plus an optional contextual component. 
            If neither identifier nor dimension components are present, then a synthetic id component is used. 
            
            Examples
            ==========
            The string "income_distribution:male:Ontario:married" in a dimensional key-value datastore, where instance key members are defined by context plus Sex, Province and Marital Status dimensions.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyMemberXsdType">
        <xs:sequence>
          <xs:element name="MainKeyMember_hasValueFrom_SubstantiveValueDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="MainKeyMember_hasValueFrom_SubstantiveValueDomain">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="MainKeyMember_hasValueFrom_SubstantiveValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="MainKeyMember_hasValueFrom_SubstantiveValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorValueDomain"/>
                          <xs:enumeration value="SubstantiveValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="MeasureComponent"
              type="MeasureComponentXsdType"
              xml:id="MeasureComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::MeasureComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to hold the observed/derived values.  
            
            Examples 
            ========== 
            Height of a person in a wide or long dataset or number of citizens in a country in a dataset for multiple countries (dimensional dataset).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="MeasureComponentXsdType"
                  xml:id="MeasureComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to hold the observed/derived values.  
            
            Examples 
            ========== 
            Height of a person in a wide or long dataset or number of citizens in a country in a dataset for multiple countries (dimensional dataset).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        <xs:sequence>
          <xs:element name="name"
                      type="ObjectNameXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="MeasureComponent-name">
            <xs:annotation>
              <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="NonDeterministicDeclarative"
              type="NonDeterministicDeclarativeXsdType"
              xml:id="NonDeterministicDeclarative">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::NonDeterministicDeclarative -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Non-deterministic control logic is a subtype of control logic. Non-deterministic (or declarative) control logic is constraint- and/or rule-based.  
            
            Examples 
            ========== 
            Rule based scheduling is declarative control logic.  
            
            Explanatory notes 
            =================== 
            Unlike DDI Lifecycle, DDI-CDI describes non-deterministic activity and step controls.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="NonDeterministicDeclarativeXsdType"
                  xml:id="NonDeterministicDeclarativeXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Non-deterministic control logic is a subtype of control logic. Non-deterministic (or declarative) control logic is constraint- and/or rule-based.  
            
            Examples 
            ========== 
            Rule based scheduling is declarative control logic.  
            
            Explanatory notes 
            =================== 
            Unlike DDI Lifecycle, DDI-CDI describes non-deterministic activity and step controls.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ControlLogicXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Notation"
              type="NotationXsdType"
              xml:id="Notation">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Notation -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Representation of a category in the context of a code or a classification item, as opposed of the corresponding instance value which would appear when used in a dataset. 
            
            Examples 
            ========== 
            The number "334" used as a code for the "Computer and electronic product manufacturing" category in the North American Industry Classification System (NAICS).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="NotationXsdType"
                  xml:id="NotationXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Representation of a category in the context of a code or a classification item, as opposed of the corresponding instance value which would appear when used in a dataset. 
            
            Examples 
            ========== 
            The number "334" used as a code for the "Computer and electronic product manufacturing" category in the North American Industry Classification System (NAICS).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="content"
                  type="TypedStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Notation-content">
        <xs:annotation>
          <xs:documentation>The actual content of this value as a string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Notation-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="whiteSpace"
                  type="WhiteSpaceRuleXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Notation-whiteSpace">
        <xs:annotation>
          <xs:documentation>The usual setting "collapse" states that leading and trailing white space will be removed and multiple adjacent white spaces will be treated as a single white space. When setting to "replace" all occurrences of #x9 (tab), #xA (line feed) and #xD (carriage return) are replaced with #x20 (space) but leading and trailing spaces will be retained. If the existence of any of these white spaces is critical to the understanding of the content, change the value of this attribute to "preserve".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Notation_represents_Category"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Notation_represents_Category">
        <xs:annotation>
          <xs:documentation>Notation represents zero to many categories.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Notation_represents_Category-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="unbounded"
                            xml:id="Notation_represents_Category-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Organization"
              type="OrganizationXsdType"
              xml:id="Organization">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Agents::Organization -->
    <xs:annotation>
      <xs:documentation>Definition 
            ========== 
            Collection of people organized within a framework of authority that can perform an act or be associated with another agent.  
            
            Examples 
            ========== 
            Commonwealth Scientific and Industrial Research Organisation (CSIRO), U.S. Census Bureau, University of Michigan/Institute for Social Research, Research Data Alliance Agrisemantics Working Group.  
            
            Explanatory notes 
            =================
            The W3C Organization Ontology (https://www.w3.org/TR/vocab-org/#organizational_structure) definition: "Represents a collection of people organized together into a community or other social, commercial or political structure. The group has some common purpose or reason for existence which goes beyond the set of people belonging to it and can act as an agent. Organizations are often decomposable into hierarchical structures."</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="OrganizationXsdType"
                  xml:id="OrganizationXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ========== 
            Collection of people organized within a framework of authority that can perform an act or be associated with another agent.  
            
            Examples 
            ========== 
            Commonwealth Scientific and Industrial Research Organisation (CSIRO), U.S. Census Bureau, University of Michigan/Institute for Social Research, Research Data Alliance Agrisemantics Working Group.  
            
            Explanatory notes 
            =================
            The W3C Organization Ontology (https://www.w3.org/TR/vocab-org/#organizational_structure) definition: "Represents a collection of people organized together into a community or other social, commercial or political structure. The group has some common purpose or reason for existence which goes beyond the set of people belonging to it and can act as an agent. Organizations are often decomposable into hierarchical structures."</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="AgentXsdType">
        <xs:sequence>
          <xs:element name="contactInformation"
                      type="ContactInformationXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Organization-contactInformation">
            <xs:annotation>
              <xs:documentation>Contact information for the organization including location specification, address, URL, phone numbers, and other means of communication access. Sets of information can be repeated and date-stamped.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="organizationName"
                      type="OrganizationNameXsdType"
                      minOccurs="1"
                      maxOccurs="unbounded"
                      xml:id="Organization-organizationName">
            <xs:annotation>
              <xs:documentation>Names by which the organization is known.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Parameter"
              type="ParameterXsdType"
              xml:id="Parameter">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Parameter -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An input or output to control logic and the step/sub-step it invokes. Parameters may take the form of any information object, including data sets and structured metadata as well as configuration information for the step/sub-step.  
            
            Examples 
            ========== 
            A dimensional data set; a long data structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ParameterXsdType"
                  xml:id="ParameterXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            An input or output to control logic and the step/sub-step it invokes. Parameters may take the form of any information object, including data sets and structured metadata as well as configuration information for the step/sub-step.  
            
            Examples 
            ========== 
            A dimensional data set; a long data structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="entityBound"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Parameter-entityBound">
        <xs:annotation>
          <xs:documentation>Specification of the object being used as a parameter, typically as a reference to a class in the DDI-CDI model, but may also be a specific instance of a class.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Parameter-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Parameter-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalDataSet"
              type="PhysicalDataSetXsdType"
              xml:id="PhysicalDataSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalDataSet -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information needed for understanding the physical structure of data coming from a file or other source.
            
            Examples
            ==========
            The physical data set is the entry point for information about a file or other source. It includes information about the name of a file, the structure of segments in a file.
            
            Explanatory notes
            ===================
            Multiple styles of structural description are supported: including describing files as unit-record (unit segment layout) files; describing cubes; and describing event-history (spell) data.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalDataSetXsdType"
                  xml:id="PhysicalDataSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information needed for understanding the physical structure of data coming from a file or other source.
            
            Examples
            ==========
            The physical data set is the entry point for information about a file or other source. It includes information about the name of a file, the structure of segments in a file.
            
            Explanatory notes
            ===================
            Multiple styles of structural description are supported: including describing files as unit-record (unit segment layout) files; describing cubes; and describing event-history (spell) data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical "bag" permits duplicates and is unordered - a "set" does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="numberOfSegments"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-numberOfSegments">
        <xs:annotation>
          <xs:documentation>The number of distinct segments (e.g., segments patterns with different structures, identified separately) in a physical dataset.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="overview"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-overview">
        <xs:annotation>
          <xs:documentation>Short natural language account of the information obtained from the combination of properties and relationships associated with an object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="physicalFileName"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-physicalFileName">
        <xs:annotation>
          <xs:documentation>Use when multiple physical segments are stored in a single file.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalDataSet_correspondsTo_DataSet"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSet_correspondsTo_DataSet">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_correspondsTo_DataSet-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSet_correspondsTo_DataSet-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataSet"/>
                      <xs:enumeration value="DimensionalDataSet"/>
                      <xs:enumeration value="KeyValueDataStore"/>
                      <xs:enumeration value="LongDataSet"/>
                      <xs:enumeration value="WideDataSet"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSet_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSet_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSet_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSet_formats_DataStore"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSet_formats_DataStore">
        <xs:annotation>
          <xs:documentation>Data store physically represented by the structure description.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_formats_DataStore-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSet_formats_DataStore-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataStore"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSet_has_InstanceVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSet_has_InstanceVariable">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_has_InstanceVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSet_has_InstanceVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSet_has_PhysicalRecordSegment"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSet_has_PhysicalRecordSegment">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_has_PhysicalRecordSegment-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSet_has_PhysicalRecordSegment-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegment"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSet_has_PhysicalRecordSegmentPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSet_has_PhysicalRecordSegmentPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_has_PhysicalRecordSegmentPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalDataSet_has_PhysicalRecordSegmentPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegmentPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalDataSetStructure"
              type="PhysicalDataSetStructureXsdType"
              xml:id="PhysicalDataSetStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalDataSetStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Ordering for physical record segments, which map to a logical record.
            
            Explanatory notes 
            =================== 
            The same logical record layout may be the source member in several adjacency lists. This can happen when physical record segments are also population specific. In this instance each adjacency list associated with a logical record layout is associated with a different population.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalDataSetStructureXsdType"
                  xml:id="PhysicalDataSetStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Ordering for physical record segments, which map to a logical record.
            
            Explanatory notes 
            =================== 
            The same logical record layout may be the source member in several adjacency lists. This can happen when physical record segments are also population specific. In this instance each adjacency list associated with a logical record layout is associated with a different population.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalDataSetStructure_correspondsTo_DataStructure"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure_correspondsTo_DataStructure">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSetStructure_correspondsTo_DataStructure-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSetStructure_correspondsTo_DataStructure-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSetStructure_structures_PhysicalDataSet"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalDataSetStructure_structures_PhysicalDataSet">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSetStructure_structures_PhysicalDataSet-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalDataSetStructure_structures_PhysicalDataSet-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalDataSet"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalDataSetStructure_has_PhysicalRecordSegmentRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalDataSetStructure_has_PhysicalRecordSegmentRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalDataSetStructure_has_PhysicalRecordSegmentRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalDataSetStructure_has_PhysicalRecordSegmentRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegmentRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalLayoutRelationStructure"
              type="PhysicalLayoutRelationStructureXsdType"
              xml:id="PhysicalLayoutRelationStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalLayoutRelationStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Realization of relation structure that is used to describe the sequence of value mappings in a physical layout.  
            
            Examples
            ======== 
            The W3C Tabular Data on the Web specification section 4.5 Cells (https://www.w3.org/TR/tabular-data-model/#content-type) allows for a list datatype within cells. In the example below there are three top level instance variables: PersonID - the person identifier; AgeYr - age in years; BpSys_Dia - blood pressure (a list containing Systolic and Diastolic values). There are two variables at a secondary level of the hierarchy: Systolic - the systolic pressure; Diastolic - the diastolic pressure. The delimited file below uses the comma to separate "columns" and forward slash to separate elements of a blood pressure list. ::
            
               PersonID, AgeYr, BpSys_Dia  
               1,22,119/67  
               2,68,122/70  
            
            The physical relation structure in this case would describe a BpSys_Dia list variable as containing an ordered sequence of the Systolic and Diastolic instance variables.   
            
            Explanatory notes
            =================
            This can be more complex than a simple sequence.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalLayoutRelationStructureXsdType"
                  xml:id="PhysicalLayoutRelationStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Realization of relation structure that is used to describe the sequence of value mappings in a physical layout.  
            
            Examples
            ======== 
            The W3C Tabular Data on the Web specification section 4.5 Cells (https://www.w3.org/TR/tabular-data-model/#content-type) allows for a list datatype within cells. In the example below there are three top level instance variables: PersonID - the person identifier; AgeYr - age in years; BpSys_Dia - blood pressure (a list containing Systolic and Diastolic values). There are two variables at a secondary level of the hierarchy: Systolic - the systolic pressure; Diastolic - the diastolic pressure. The delimited file below uses the comma to separate "columns" and forward slash to separate elements of a blood pressure list. ::
            
               PersonID, AgeYr, BpSys_Dia  
               1,22,119/67  
               2,68,122/70  
            
            The physical relation structure in this case would describe a BpSys_Dia list variable as containing an ordered sequence of the Systolic and Diastolic instance variables.   
            
            Explanatory notes
            =================
            This can be more complex than a simple sequence.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="criteria"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-criteria">
        <xs:annotation>
          <xs:documentation>Intentional definition of the order criteria (e.g. alphabetical, numerical, increasing, decreasing, etc.).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalLayoutRelationStructure-name">
        <xs:annotation>
          <xs:documentation>A linguistic signifier. Human understandable name (word, phrase, or mnemonic) that reflects the ISO/IEC 11179-5 naming principles. If more than one name is provided then a context to differentiate usage must be provided as well.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalLayoutRelationStructure_structures_PhysicalSegmentLayout"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalLayoutRelationStructure_structures_PhysicalSegmentLayout">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalLayoutRelationStructure_structures_PhysicalSegmentLayout-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalLayoutRelationStructure_structures_PhysicalSegmentLayout-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalSegmentLayout"/>
                      <xs:enumeration value="UnitSegmentLayout"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalLayoutRelationStructure_has_ValueMappingRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalLayoutRelationStructure_has_ValueMappingRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalLayoutRelationStructure_has_ValueMappingRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalLayoutRelationStructure_has_ValueMappingRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMappingRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalRecordSegment"
              type="PhysicalRecordSegmentXsdType"
              xml:id="PhysicalRecordSegment">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalRecordSegment -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Description of each physical storage segment required to completely cover a physical record representing the logical record.
            
            Examples
            ========
            The file below has four instance variables: PersonId, SegmentId, AgeYr, and HeightCm. The data for each person (identified by PersonId) is recorded in two segments (identified by SegmentId), "a" and "b". AgeYr is on physical segment a, and HeightCm is on segment b. These are the same data as described in the unit segment layout documentation. ::
            
               1 a  22  
               1 b 183  
               2 a  45
               2 b 175  
            
            Explanatory notes
            =================
            A logical record may be stored in one or more segments housed hierarchically in a single file or in separate data files. All logical records have at least one segment.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalRecordSegmentXsdType"
                  xml:id="PhysicalRecordSegmentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Description of each physical storage segment required to completely cover a physical record representing the logical record.
            
            Examples
            ========
            The file below has four instance variables: PersonId, SegmentId, AgeYr, and HeightCm. The data for each person (identified by PersonId) is recorded in two segments (identified by SegmentId), "a" and "b". AgeYr is on physical segment a, and HeightCm is on segment b. These are the same data as described in the unit segment layout documentation. ::
            
               1 a  22  
               1 b 183  
               2 a  45
               2 b 175  
            
            Explanatory notes
            =================
            A logical record may be stored in one or more segments housed hierarchically in a single file or in separate data files. All logical records have at least one segment.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegment-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="physicalFileName"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment-physicalFileName">
        <xs:annotation>
          <xs:documentation>Use when each physical segment is stored in its own file.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_represents_Population"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment_represents_Population">
        <xs:annotation>
          <xs:documentation>A record segment may represent a specific population or sub-population within a larger set of segments. Allows for the identification of this filter for membership in the segment.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_represents_Population-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegment_represents_Population-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Population"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegment_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegment_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_has_PhysicalSegmentLayout"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment_has_PhysicalSegmentLayout">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_has_PhysicalSegmentLayout-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegment_has_PhysicalSegmentLayout-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalSegmentLayout"/>
                      <xs:enumeration value="UnitSegmentLayout"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_mapsTo_LogicalRecord"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegment_mapsTo_LogicalRecord">
        <xs:annotation>
          <xs:documentation>Every data record has zero to many physical record segments. It is possible to describe a physical data product and its record segment(s) without reference to a data record.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_mapsTo_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegment_mapsTo_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_has_DataPointPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegment_has_DataPointPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_has_DataPointPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_has_DataPointPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPointPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegment_has_DataPoint"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegment_has_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegment_has_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegment_has_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalRecordSegmentPosition"
              type="PhysicalRecordSegmentPositionXsdType"
              xml:id="PhysicalRecordSegmentPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalRecordSegmentPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a position of the physical record segment within the whole physical record. For example in what order does this 80 character segment fall within an 800 character record.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalRecordSegmentPositionXsdType"
                  xml:id="PhysicalRecordSegmentPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Assigns a position of the physical record segment within the whole physical record. For example in what order does this 80 character segment fall within an 800 character record.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalRecordSegmentPosition_indexes_PhysicalRecordSegment"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentPosition_indexes_PhysicalRecordSegment">
        <xs:annotation>
          <xs:documentation>Assigns a position to a physical record segment within a physical record.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentPosition_indexes_PhysicalRecordSegment-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegmentPosition_indexes_PhysicalRecordSegment-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegment"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalRecordSegmentRelationship"
              type="PhysicalRecordSegmentRelationshipXsdType"
              xml:id="PhysicalRecordSegmentRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalRecordSegmentRelationship -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structured relationship between physical record segments.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalRecordSegmentRelationshipXsdType"
                  xml:id="PhysicalRecordSegmentRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Structured relationship between physical record segments.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalRecordSegmentRelationship_hasTarget_PhysicalRecordSegment"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegmentRelationship_hasTarget_PhysicalRecordSegment">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentRelationship_hasTarget_PhysicalRecordSegment-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegmentRelationship_hasTarget_PhysicalRecordSegment-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegment"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegmentRelationship_hasSource_PhysicalRecordSegment"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentRelationship_hasSource_PhysicalRecordSegment">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentRelationship_hasSource_PhysicalRecordSegment-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegmentRelationship_hasSource_PhysicalRecordSegment-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegment"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalRecordSegmentStructure"
              type="PhysicalRecordSegmentStructureXsdType"
              xml:id="PhysicalRecordSegmentStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalRecordSegmentStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Means for describing the complex relational structure of data points in a physical record representing the logical record.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalRecordSegmentStructureXsdType"
                  xml:id="PhysicalRecordSegmentStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Means for describing the complex relational structure of data points in a physical record representing the logical record.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-name">
        <xs:annotation>
          <xs:documentation>A linguistic signifier. Human understandable name (word, phrase, or mnemonic) that reflects the ISO/IEC 11179-5 naming principles.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalRecordSegmentStructure_structures_PhysicalRecordSegment"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalRecordSegmentStructure_structures_PhysicalRecordSegment">
        <xs:annotation>
          <xs:documentation>There may be cases where there is a more complex structure to a sequence of data points. A cell containing a list, for example, might be considered to have nested data points that are the elements of the list. (For simplicity's sake, each element of the list should be modeled as a data point if this is possible.)</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentStructure_structures_PhysicalRecordSegment-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalRecordSegmentStructure_structures_PhysicalRecordSegment-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalRecordSegment"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalRecordSegmentStructure_has_DataPointRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalRecordSegmentStructure_has_DataPointRelationship">
        <xs:annotation>
          <xs:documentation>PhysicalRecordSegmentStructure has zero to many DataPointRelationships.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentStructure_has_DataPointRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalRecordSegmentStructure_has_DataPointRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPointRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalSegmentLayout"
              type="PhysicalSegmentLayoutXsdType"
              xml:id="PhysicalSegmentLayout">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalSegmentLayout -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Used as an extension point in the description of the different layout styles of data structure descriptions.  
            
            Examples 
            ========== 
            Examples include unit segment layouts, event data layouts, and cube layouts (e.g. summary data).  
            
            Explanatory notes 
            =================== 
            A physical segment layout is a physical description (e.g. unit segment layout) of the associated logical record Layout consisting of a collection of value mappings describing the physical interrelationship of each related value mapping and associated instance variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalSegmentLayoutXsdType"
                  xml:id="PhysicalSegmentLayoutXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Used as an extension point in the description of the different layout styles of data structure descriptions.  
            
            Examples 
            ========== 
            Examples include unit segment layouts, event data layouts, and cube layouts (e.g. summary data).  
            
            Explanatory notes 
            =================== 
            A physical segment layout is a physical description (e.g. unit segment layout) of the associated logical record Layout consisting of a collection of value mappings describing the physical interrelationship of each related value mapping and associated instance variable.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="arrayBase"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-arrayBase">
        <xs:annotation>
          <xs:documentation>The starting value for the numbering of cells, rows, columns, etc. when they constitute an ordered sequence (an array). Note that in DDI, this is typically either 0 or 1. In related W3C work (Model for Tabular Data and Metadata on the Web), they appear to standardize on 1 (see https://www.w3.org/TR/tabular-data-model/ 4.3 [Columns] and 4.4 [Rows]: "number - the position of the column amongst the columns for the associated table, starting from 1.")</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="commentPrefix"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-commentPrefix">
        <xs:annotation>
          <xs:documentation>A string used to indicate that an input line is a comment, a string which precedes a comment in the data file. From https://www.w3.org/TR/tabular-metadata/ 5.9 Dialect  commentPrefix: 'An atomic property that sets the comment prefix flag to the single provided value, which MUST be a string. The default is "#".'</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="delimiter"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-delimiter">
        <xs:annotation>
          <xs:documentation>The Delimiting character in the data. Must be used if isDelimited is True. "The separator between cells, set by the delimiter property of a dialect description. The default is ,. See the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-data-model/#encoding). From the "CSV Dialect" specification (https://specs.frictionlessdata.io/csv-dialect/#specification): "delimiter: specifies a one-character string to use as the field separator. Default = ,."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="encoding"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-encoding">
        <xs:annotation>
          <xs:documentation>The character encoding of the represented data. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "encoding - An atomic property that sets the encoding flag to the single provided string value, which MUST be a defined in [encoding]. The default is 'utf-8'." From the same W3C recommendation 7.2 Encoding: "CSV files should be encoded using UTF-8, and should be in Unicode Normal Form C as defined in [UAX15]. If a CSV file is not encoded using UTF-8, the encoding should be specified through the charset parameter in the Content-Type header."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="escapeCharacter"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-escapeCharacter">
        <xs:annotation>
          <xs:documentation>"The string that is used to escape the quote character within escaped cells, or null" see https://www.w3.org/TR/tabular-data-model/#encoding. From https://www.w3.org/TR/tabular-metadata/ 5.9 Dialect "doubleQuote: A boolean atomic property that, if true, sets the escape character flag to ". If false, to \. The default is true." From http://specs.frictionlessdata.io/csv-dialect/ "doubleQuote: controls the handling of quotes inside fields. If true, two consecutive quotes should be interpreted as one. Default = true".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="hasHeader"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-hasHeader">
        <xs:annotation>
          <xs:documentation>True if the file contains a header containing column names. From https://www.w3.org/TR/tabular-metadata/ 5.9 Dialect "header: A boolean atomic property that, if true, sets the header row count flag to 1, and if false to 0, unless headerRowCount is provided, in which case the value provided for the header property is ignored. The default is true." From http://specs.frictionlessdata.io/csv-dialect/ "header: indicates whether the file includes a header row. If true the first row in the file is a header row, not data. Default = true".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="headerIsCaseSensitive"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-headerIsCaseSensitive">
        <xs:annotation>
          <xs:documentation>If True, the case of the labels in the header is significant. From the "CSV Dialect" specification (http://specs.frictionlessdata.io/csv-dialect/): "caseSensitiveHeader: indicates that case in the header is meaningful. For example, columns CAT and Cat should not be equated. Default = false."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="headerRowCount"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-headerRowCount">
        <xs:annotation>
          <xs:documentation>The number of lines in the header From https://www.w3.org/TR/tabular-metadata/ 5.9 Dialect "headerRowCount: A numeric atomic property that sets the header row count flag to the single provided value, which MUST be a non-negative integer. The default is 1."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isDelimited"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-isDelimited">
        <xs:annotation>
          <xs:documentation>Indicates whether the data are in a delimited format. If "true," the format is delimited, and the isFixedWidth property must be set to "false." If not set to "true," the property isFixedWitdh must be set to "true."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isFixedWidth"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-isFixedWidth">
        <xs:annotation>
          <xs:documentation>Set to true if the file is fixed-width. If true, isDelimited must be set to false.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="lineTerminator"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalSegmentLayout-lineTerminator">
        <xs:annotation>
          <xs:documentation>The strings that can be used at the end of a row, set by the lineTerminators property of a dialect description. The default is [CRLF, LF]. See the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-data-model/#encoding) 5.9 Dialect "lineTerminators: An atomic property that sets the line terminators flag to either an array containing the single provided string value, or the provided array. The default is ['rn', 'n']." Also, from the "CSV Dialect" specification (http://specs.frictionlessdata.io/csv-dialect/): "lineTerminator: specifies the character sequence which should terminate rows. Default = rn."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalSegmentLayout-name">
        <xs:annotation>
          <xs:documentation>A linguistic signifier. Human understandable name (word, phrase, or mnemonic) that reflects the ISO/IEC 11179-5 naming principles. If more than one name is provided provide a context to differentiate usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nullSequence"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-nullSequence">
        <xs:annotation>
          <xs:documentation>A string indicating a null value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 4.3: "null: the string or strings which cause the value of cells having string value matching any of these values to be null." From the same source, Inherited 5.7: "null: An atomic property giving the string or strings used for null values within the data. If the string value of the cell is equal to any one of these values, the cell value is null. See Parsing Cells in [tabular-data-model] for more details. If not specified, the default for the null property is the empty string ''. The value of this property becomes the null annotation for the described column."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="overview"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-overview">
        <xs:annotation>
          <xs:documentation>Short natural language account of the information obtained from the combination of properties and relationships associated with an object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="quoteCharacter"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-quoteCharacter">
        <xs:annotation>
          <xs:documentation>"The string that is used around escaped cells, or null, set by the quoteChar property of a dialect description. The default is ".". See W3C Recommendation "Model for Tabular Data and Metadata on the Web", https://www.w3.org/TR/tabular-data-model/#parsing. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "quoteChar: An atomic property that sets the quote character flag to the single provided value, which MUST be a string or null. If the value is null, the escape character flag is also set to null. The default is '"'." From the CSV Dialect specification (http://specs.frictionlessdata.io/csv-dialect/): "quoteChar: specifies a one-character string to use as the quoting character. Default = "."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="skipBlankRows"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-skipBlankRows">
        <xs:annotation>
          <xs:documentation>If the value is True, blank rows are ignored. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "skipBlankRows: A boolean atomic property that sets the skip blank rows flag to the single provided boolean value. The default is false."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="skipDataColumns"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-skipDataColumns">
        <xs:annotation>
          <xs:documentation>The number of columns to skip at the beginning of the row. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "skipColumns: A numeric atomic property that sets the skip columns flag to the single provided numeric value, which MUST be a non-negative integer. The default is 0." A value other than 0 will mean that the source numbers of columns will be different from their numbers.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="skipInitialSpace"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-skipInitialSpace">
        <xs:annotation>
          <xs:documentation>If the value is True, skip whitespace at the beginning of a line or following a delimiter. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "skipInitialSpace: A boolean atomic property that, if true, sets the trim flag to 'start' and if false, to false. If the trim property is provided, the skipInitialSpace property is ignored. The default is false." From the CSV Dialect specification (http://specs.frictionlessdata.io/csv-dialect/): "skipInitialSpace: specifies how to interpret whitespace which immediately follows a delimiter; if false, it means that whitespace immediately after a delimiter should be treated as part of the following field. Default = true."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="skipRows"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-skipRows">
        <xs:annotation>
          <xs:documentation>Number of input rows to skip preceding the header or data. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "skipRows: A numeric atomic property that sets the skip rows flag to the single provided numeric value, which MUST be a non-negative integer. The default is 0." A value greater than 0 will mean that the source numbers of rows will be different from their numbers.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tableDirection"
                  type="TableDirectionValuesXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-tableDirection">
        <xs:annotation>
          <xs:documentation>Indicates the direction in which columns are arranged in each row. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/)  5.3.2: "tableDirection: An atomic property that MUST have a single string value that is one of 'rtl', 'ltr', or 'auto'. Indicates whether the tables in the group should be displayed with the first column on the right, on the left, or based on the first character in the table that has a specific direction. The value of this property becomes the value of the table direction annotation for all the tables in the table group. See Bidirectional Tables in [tabular-data-model] for details. The default value for this property is 'auto'."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textDirection"
                  type="TextDirectionValuesXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-textDirection">
        <xs:annotation>
          <xs:documentation>Indicates the reading order of text within cells. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) Inherited 5.7: "textDirection: An atomic property that MUST have a single string value that is one of 'ltr', 'rtl', 'auto' or 'inherit' (the default). Indicates whether the text within cells should be displayed as left-to-right text (ltr), as right-to-left text (rtl), according to the content of the cell (auto) or in the direction inherited from the table direction annotation of the table. The value of this property determines the text direction annotation for the column, and the text direction annotation for the cells within that column: if the value is inherit then the value of the text direction annotation is the value of the table direction annotation on the table, otherwise it is the value of this property. See Bidirectional Tables in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="treatConsecutiveDelimitersAsOne"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-treatConsecutiveDelimitersAsOne">
        <xs:annotation>
          <xs:documentation>If the value is True, consecutive (adjacent) delimiters are treated as a single delimiter; if the value is False consecutive (adjacent) delimiters indicate a missing value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="trim"
                  type="TrimValuesXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout-trim">
        <xs:annotation>
          <xs:documentation>Specifies which spaces to remove from a data value (start, end, both, neither) From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.9 Dialect: "trim: An atomic property that, if the boolean true, sets the trim flag to true and if the boolean false to false. If the value provided is a string, sets the trim flag to the provided value, which MUST be one of 'true', 'false', 'start', or 'end'. The default is true."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhysicalSegmentLayout_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalSegmentLayout_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalSegmentLayout_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalSegmentLayout_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalSegmentLayout_formats_LogicalRecord"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLayout_formats_LogicalRecord">
        <xs:annotation>
          <xs:documentation>Logical record physically represented by the physical layout.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalSegmentLayout_formats_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalSegmentLayout_formats_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalSegmentLayout_has_ValueMapping"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalSegmentLayout_has_ValueMapping">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalSegmentLayout_has_ValueMapping-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="PhysicalSegmentLayout_has_ValueMapping-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMapping"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhysicalSegmentLayout_has_ValueMappingPosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="PhysicalSegmentLayout_has_ValueMappingPosition">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PhysicalSegmentLayout_has_ValueMappingPosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PhysicalSegmentLayout_has_ValueMappingPosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMappingPosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PhysicalSegmentLocation"
              type="PhysicalSegmentLocationXsdType"
              xml:id="PhysicalSegmentLocation">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::PhysicalSegmentLocation -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Location of a data point in a physical segment.  
            
            Examples 
            ========== 
            A segment of text in a plain text file beginning at character 3 and ending at character 123. The location of the representation of a variable in a text file.  
            
            Explanatory notes 
            =================== 
            While this has no properties or relationships of its own, it is useful as a target of relationships where its extensions may serve. This is an extension point since there are many different ways to describe the location of a segment - character counts, start and end times, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PhysicalSegmentLocationXsdType"
                  xml:id="PhysicalSegmentLocationXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Location of a data point in a physical segment.  
            
            Examples 
            ========== 
            A segment of text in a plain text file beginning at character 3 and ending at character 123. The location of the representation of a variable in a text file.  
            
            Explanatory notes 
            =================== 
            While this has no properties or relationships of its own, it is useful as a target of relationships where its extensions may serve. This is an extension point since there are many different ways to describe the location of a segment - character counts, start and end times, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLocation-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PhysicalSegmentLocation-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Population"
              type="PopulationXsdType"
              xml:id="Population">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::Population -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Universe with time and geography specified.
            
            Examples
            ==========
            1. Canadian adult persons residing in Canada on 13 November 1956.
            2. US computer companies at the end of 2012.  
            3. Universities in Denmark 1 January 2011.
            
            Explanatory notes
            ===================
            Population is the most specific in the conceptually narrowing hierarchy of unit type, universe and population. Several populations having differing time and or geography may specialize the same universe.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PopulationXsdType"
                  xml:id="PopulationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Universe with time and geography specified.
            
            Examples
            ==========
            1. Canadian adult persons residing in Canada on 13 November 1956.
            2. US computer companies at the end of 2012.  
            3. Universities in Denmark 1 January 2011.
            
            Explanatory notes
            ===================
            Population is the most specific in the conceptually narrowing hierarchy of unit type, universe and population. Several populations having differing time and or geography may specialize the same universe.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="UniverseXsdType">
        <xs:sequence>
          <xs:element name="timePeriodOfPopulation"
                      type="DateRangeXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Population-timePeriodOfPopulation">
            <xs:annotation>
              <xs:documentation>The time period associated with the population.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Population_isComposedOf_Unit"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Population_isComposedOf_Unit">
            <xs:annotation>
              <xs:documentation>A unit in the population.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Population_isComposedOf_Unit-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Population_isComposedOf_Unit-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Unit"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="PrimaryKey"
              type="PrimaryKeyXsdType"
              xml:id="PrimaryKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::PrimaryKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a set of data structure components for content linkage purposes
            
            Explanatory notes
            ===================
            Equivalent to primary key in the relational model.
            A primary key essentially indicates which data structure components correspond to key members.
            It can also be used in conjunction with foreign key to link data structures and their related datasets.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PrimaryKeyXsdType"
                  xml:id="PrimaryKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a set of data structure components for content linkage purposes
            
            Explanatory notes
            ===================
            Equivalent to primary key in the relational model.
            A primary key essentially indicates which data structure components correspond to key members.
            It can also be used in conjunction with foreign key to link data structures and their related datasets.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PrimaryKey-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PrimaryKey_isComposedOf_PrimaryKeyComponent"
                  minOccurs="1"
                  maxOccurs="unbounded"
                  xml:id="PrimaryKey_isComposedOf_PrimaryKeyComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PrimaryKey_isComposedOf_PrimaryKeyComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="PrimaryKey_isComposedOf_PrimaryKeyComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PrimaryKeyComponent"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PrimaryKeyComponent"
              type="PrimaryKeyComponentXsdType"
              xml:id="PrimaryKeyComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::PrimaryKeyComponent -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a data structure component for content identification purposes
            
            Explanatory notes
            ===================
            Equivalent to a primary key attribute (i.e. column) in the relational model.
            It can be used in conjunction with a foreign key component to link data structures and their related datasets.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PrimaryKeyComponentXsdType"
                  xml:id="PrimaryKeyComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Role of a data structure component for content identification purposes
            
            Explanatory notes
            ===================
            Equivalent to a primary key attribute (i.e. column) in the relational model.
            It can be used in conjunction with a foreign key component to link data structures and their related datasets.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PrimaryKeyComponent-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PrimaryKeyComponent_correspondsTo_DataStructureComponent"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PrimaryKeyComponent_correspondsTo_DataStructureComponent">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PrimaryKeyComponent_correspondsTo_DataStructureComponent-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="PrimaryKeyComponent_correspondsTo_DataStructureComponent-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="AttributeComponent"/>
                      <xs:enumeration value="ContextualComponent"/>
                      <xs:enumeration value="DataStructure"/>
                      <xs:enumeration value="DataStructureComponent"/>
                      <xs:enumeration value="DimensionComponent"/>
                      <xs:enumeration value="DimensionalDataStructure"/>
                      <xs:enumeration value="IdentifierComponent"/>
                      <xs:enumeration value="KeyValueStructure"/>
                      <xs:enumeration value="LongDataStructure"/>
                      <xs:enumeration value="MeasureComponent"/>
                      <xs:enumeration value="QualifiedMeasure"/>
                      <xs:enumeration value="SyntheticIdComponent"/>
                      <xs:enumeration value="VariableDescriptorComponent"/>
                      <xs:enumeration value="VariableValueComponent"/>
                      <xs:enumeration value="WideDataStructure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ProcessingAgent"
              type="ProcessingAgentXsdType"
              xml:id="ProcessingAgent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ProcessingAgent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A processing agent orchestrates the production of information objects in a production environment. There are processing agents which perform data capture, data editing/processing, and data analysis (etc.), each in the appropriate production environments. The processing agent performs an activity based on the control logic.  
            
            Examples 
            ========== 
            A processing agent initiates a data capture sequence, obtaining readings from a sensor. A processing agent initiates rule based scheduling. A processing agent is informed by control logic to invoke an imputation activity.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ProcessingAgentXsdType"
                  xml:id="ProcessingAgentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A processing agent orchestrates the production of information objects in a production environment. There are processing agents which perform data capture, data editing/processing, and data analysis (etc.), each in the appropriate production environments. The processing agent performs an activity based on the control logic.  
            
            Examples 
            ========== 
            A processing agent initiates a data capture sequence, obtaining readings from a sensor. A processing agent initiates rule based scheduling. A processing agent is informed by control logic to invoke an imputation activity.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="AgentXsdType">
        <xs:sequence>
          <xs:element name="ProcessingAgent_performs_Activity"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="ProcessingAgent_performs_Activity">
            <xs:annotation>
              <xs:documentation>A processing agent performs an activity at the direction of control logic.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ProcessingAgent_performs_Activity-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ProcessingAgent_performs_Activity-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Activity"/>
                          <xs:enumeration value="Step"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="ProcessingAgent_operatesOn_ProductionEnvironment"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="ProcessingAgent_operatesOn_ProductionEnvironment">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ProcessingAgent_operatesOn_ProductionEnvironment-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ProcessingAgent_operatesOn_ProductionEnvironment-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ProductionEnvironment"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ProductionEnvironment"
              type="ProductionEnvironmentXsdType"
              xml:id="ProductionEnvironment">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ProductionEnvironment -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Production environments consume and produce information objects by way of processing pipelines orchestrated by the processing agent.  
            
            Examples 
            ========== 
            Data processing platforms and data analysis platforms are types of production environments. Each of these platforms may have subtypes.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ProductionEnvironmentXsdType"
                  xml:id="ProductionEnvironmentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Production environments consume and produce information objects by way of processing pipelines orchestrated by the processing agent.  
            
            Examples 
            ========== 
            Data processing platforms and data analysis platforms are types of production environments. Each of these platforms may have subtypes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ProductionEnvironment-description">
        <xs:annotation>
          <xs:documentation>A description of the control logic in human-readable language.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ProductionEnvironment-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ProductionEnvironment-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ProductionEnvironment-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QualifiedMeasure"
              type="QualifiedMeasureXsdType"
              xml:id="QualifiedMeasure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::QualifiedMeasure -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A measure having a specific production method. 
            
            Examples
            ==========
            Seasonally adjusted monthly income.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="QualifiedMeasureXsdType"
                  xml:id="QualifiedMeasureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A measure having a specific production method. 
            
            Examples
            ==========
            Seasonally adjusted monthly income.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="MeasureComponentXsdType">
        <xs:sequence>
          <xs:element name="QualifiedMeasure_refines_MeasureComponent"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="QualifiedMeasure_refines_MeasureComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="QualifiedMeasure_refines_MeasureComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="QualifiedMeasure_refines_MeasureComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="MeasureComponent"/>
                          <xs:enumeration value="QualifiedMeasure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RecordRelation"
              type="RecordRelationXsdType"
              xml:id="RecordRelation">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::RecordRelation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relationships among record types within and between logical records.
            
            Examples
            ==========
            One logical record containing a PersonIdentifier and a PersonName and another logical record containing a MeasurementID, a PersonID, a SystolicPressure, and a DiastolicPressure could be linked by a record relation. The record relation could employ an instance variable value map to describe the linkage between  PersonIdentifier and PersonID.
            
            A household-level logical record might contain an instance variable called HouseholdID and a person-level logical record might contain an instance variable called HID. Describing a link between HouseholdID and HID would allow the linking of a person-level LogicalRecord to their corresponding household-level logical record.
            
            Explanatory notes
            ===================
            For instance variables existing in a logical record with multiple record layouts, pairs of instance variables may function as paired keys to permit the expression of hierarchical links between records of different types. These links between keys in different record types could also be used to link records in a relational structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RecordRelationXsdType"
                  xml:id="RecordRelationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Relationships among record types within and between logical records.
            
            Examples
            ==========
            One logical record containing a PersonIdentifier and a PersonName and another logical record containing a MeasurementID, a PersonID, a SystolicPressure, and a DiastolicPressure could be linked by a record relation. The record relation could employ an instance variable value map to describe the linkage between  PersonIdentifier and PersonID.
            
            A household-level logical record might contain an instance variable called HouseholdID and a person-level logical record might contain an instance variable called HID. Describing a link between HouseholdID and HID would allow the linking of a person-level LogicalRecord to their corresponding household-level logical record.
            
            Explanatory notes
            ===================
            For instance variables existing in a logical record with multiple record layouts, pairs of instance variables may function as paired keys to permit the expression of hierarchical links between records of different types. These links between keys in different record types could also be used to link records in a relational structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RecordRelation-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="RecordRelation-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RecordRelation-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RecordRelation-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="usage"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RecordRelation-usage">
        <xs:annotation>
          <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RecordRelation_maps_LogicalRecord"
                  minOccurs="2"
                  maxOccurs="unbounded"
                  xml:id="RecordRelation_maps_LogicalRecord">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="RecordRelation_maps_LogicalRecord-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="RecordRelation_maps_LogicalRecord-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="LogicalRecord"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="RecordRelation_has_InstanceVariableMap"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="RecordRelation_has_InstanceVariableMap">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="RecordRelation_has_InstanceVariableMap-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="RecordRelation_has_InstanceVariableMap-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="InstanceVariableMap"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ReferenceValue"
              type="ReferenceValueXsdType"
              xml:id="ReferenceValue">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::ReferenceValue -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Recorded value in a variable value component. 
            Value referenced by a descriptor.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column, e.g. 100000, 45, 85000, 34, etc. 
            Codes "income" and "age" are descriptors whereas 100000, 45, 85000, 34 are reference values.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ReferenceValueXsdType"
                  xml:id="ReferenceValueXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Recorded value in a variable value component. 
            Value referenced by a descriptor.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column, e.g. 100000, 45, 85000, 34, etc. 
            Codes "income" and "age" are descriptors whereas 100000, 45, 85000, 34 are reference values.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InstanceValueXsdType">
        <xs:sequence>
          <xs:element name="ReferenceValue_correspondsTo_VariableValueComponent"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="ReferenceValue_correspondsTo_VariableValueComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ReferenceValue_correspondsTo_VariableValueComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ReferenceValue_correspondsTo_VariableValueComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="VariableValueComponent"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="ReferenceValue_hasValueFrom_ReferenceValueDomain"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="ReferenceValue_hasValueFrom_ReferenceValueDomain">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ReferenceValue_hasValueFrom_ReferenceValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ReferenceValue_hasValueFrom_ReferenceValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ReferenceValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ReferenceValueDomain"
              type="ReferenceValueDomainXsdType"
              xml:id="ReferenceValueDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::ReferenceValueDomain -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of permissible values for a variable playing the role of a variable value component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column. A reference variable in this case would be a type of represented variable that can take on values from both income and age. A long data structure might have a column that takes on values from this reference variable. A descriptor variable would then have values paired with the values from the reference variable, pointing to either the income or age variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ReferenceValueDomainXsdType"
                  xml:id="ReferenceValueDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of permissible values for a variable playing the role of a variable value component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column. A reference variable in this case would be a type of represented variable that can take on values from both income and age. A long data structure might have a column that takes on values from this reference variable. A descriptor variable would then have values paired with the values from the reference variable, pointing to either the income or age variable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ValueDomainXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ReferenceVariable"
              type="ReferenceVariableXsdType"
              xml:id="ReferenceVariable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Long::ReferenceVariable -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Variable that records values of multiple variables in the context of a data structure.
            Variable playing the role of a variable value component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column, e.g. 100000, 45, 85000, 34, etc. 
            Values 100000, 45, 85000, 34 are reference values in the reference value domain corresponding to the reference variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ReferenceVariableXsdType"
                  xml:id="ReferenceVariableXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Variable that records values of multiple variables in the context of a data structure.
            Variable playing the role of a variable value component.
            
            Examples
            ==========
            Consider two variables, i.e. income and age, with values appearing in the same column, e.g. 100000, 45, 85000, 34, etc. 
            Values 100000, 45, 85000, 34 are reference values in the reference value domain corresponding to the reference variable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InstanceVariableXsdType">
        <xs:sequence>
          <xs:element name="ReferenceVariable_takesValuesFrom_ReferenceValueDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ReferenceVariable_takesValuesFrom_ReferenceValueDomain">
            <xs:annotation>
              <xs:documentation>Points to a value domain that contains values that may be drawn from the domains of multiple simple variables.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="ReferenceVariable_takesValuesFrom_ReferenceValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="ReferenceVariable_takesValuesFrom_ReferenceValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ReferenceValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RepresentedVariable"
              type="RepresentedVariableXsdType"
              xml:id="RepresentedVariable">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::RepresentedVariable -->
    <xs:annotation>
      <xs:documentation>Definition 
            ========== 
            Conceptual variable with a substantive value domain specified.   
            
            Examples 
            ========== 
            The pair (Number of Employees, Integer), where "Number of Employees" is the characteristic of the population (variable) and "Integer" is how that measure will be represented (value domain).  
            
            Explanatory notes 
            =================== 
            Extends from conceptual variable and can contain all descriptive fields without creating a conceptual variable. By referencing a conceptual variable it can indicate a common relationship with represented variables expressing the same characteristic of a universe measured in another way, such as Age of Persons in hours rather than years. Represented variable constrains the coverage of the unit type to a specific universe. In the above case the universe with the measurement of Age in hours may be constrained to Persons under 5 days (120 hours old). Represented variable can define sentinel values for multiple storage systems which have the same conceptual domain but specialized value domains.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RepresentedVariableXsdType"
                  xml:id="RepresentedVariableXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ========== 
            Conceptual variable with a substantive value domain specified.   
            
            Examples 
            ========== 
            The pair (Number of Employees, Integer), where "Number of Employees" is the characteristic of the population (variable) and "Integer" is how that measure will be represented (value domain).  
            
            Explanatory notes 
            =================== 
            Extends from conceptual variable and can contain all descriptive fields without creating a conceptual variable. By referencing a conceptual variable it can indicate a common relationship with represented variables expressing the same characteristic of a universe measured in another way, such as Age of Persons in hours rather than years. Represented variable constrains the coverage of the unit type to a specific universe. In the above case the universe with the measurement of Age in hours may be constrained to Persons under 5 days (120 hours old). Represented variable can define sentinel values for multiple storage systems which have the same conceptual domain but specialized value domains.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptualVariableXsdType">
        <xs:sequence>
          <xs:element name="describedUnitOfMeasure"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="RepresentedVariable-describedUnitOfMeasure">
            <xs:annotation>
              <xs:documentation>The unit in which the data values are measured (kg, pound, euro), expressed as a value from a controlled system of entries (i.e., QDT). Supports the provision of an identifier for the entry in the authoritative source (a URI, etc.), and the specific vocabulary.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="hasIntendedDataType"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="RepresentedVariable-hasIntendedDataType">
            <xs:annotation>
              <xs:documentation>The data type intended to be used by this variable. Supports the optional use of an external controlled vocabulary.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="simpleUnitOfMeasure"
                      type="xs:string"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="RepresentedVariable-simpleUnitOfMeasure">
            <xs:annotation>
              <xs:documentation>The unit in which the data values are measured (kg, pound, euro), expressed as a simple string, in cases where no additional information is available (in the legacy system) or needed (as in the case of broad agreement within the community of use [i.e., ISO country codes, currencies, etc. in SDMX])</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RepresentedVariable_takesSentinelValuesFrom_SentinelValueDomain"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="RepresentedVariable_takesSentinelValuesFrom_SentinelValueDomain">
            <xs:annotation>
              <xs:documentation>A represented variable may have more than one sets of sentinel value domains, one for each type of software platform on which related instance variables might be instantiated. All of the sentinel value domains must have sentinel conceptual domains that correspond exactly. This allows codes for missing values to be explicitly matched across platforms.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RepresentedVariable_takesSentinelValuesFrom_SentinelValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="RepresentedVariable_takesSentinelValuesFrom_SentinelValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SentinelValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="RepresentedVariable_takesSubstantiveValuesFrom_SubstantiveValueDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="RepresentedVariable_takesSubstantiveValuesFrom_SubstantiveValueDomain">
            <xs:annotation>
              <xs:documentation>The substantive representation (substantive value domain) of the variable. This is equivalent to the relationship "Measures" in the Generic Statistical Information Model (GSIM) although GSIM makes no distinction between substantive and sentinel values.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RepresentedVariable_takesSubstantiveValuesFrom_SubstantiveValueDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="RepresentedVariable_takesSubstantiveValuesFrom_SubstantiveValueDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorValueDomain"/>
                          <xs:enumeration value="SubstantiveValueDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RevisableDatum"
              type="RevisableDatumXsdType"
              xml:id="RevisableDatum">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::RevisableDatum -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A datum that can be qualified by a revision.
            
            Examples
            ==========
            The April datum for Income revised in June.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RevisableDatumXsdType"
                  xml:id="RevisableDatumXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A datum that can be qualified by a revision.
            
            Examples
            ==========
            The April datum for Income revised in June.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DatumXsdType">
        <xs:sequence>
          <xs:element name="vintage"
                      type="xs:integer"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="RevisableDatum-vintage">
            <xs:annotation>
              <xs:documentation>A revision sequence number for a datum.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RevisableDatum_correspondsTo_Revision"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="RevisableDatum_correspondsTo_Revision">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RevisableDatum_correspondsTo_Revision-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="RevisableDatum_correspondsTo_Revision-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Revision"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Revision"
              type="RevisionXsdType"
              xml:id="Revision">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::Revision -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Algorithm applied to produce a revised datum.
            
            Examples
            ==========
            An adjustment to monthly employment numbers to adjust for errors (sampling or non-sampling) in the underlying data.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RevisionXsdType"
                  xml:id="RevisionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Algorithm applied to produce a revised datum.
            
            Examples
            ==========
            An adjustment to monthly employment numbers to adjust for errors (sampling or non-sampling) in the underlying data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="algorithm"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Revision-algorithm">
        <xs:annotation>
          <xs:documentation>Actual code or reference to specific algorithm</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Revision-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="overview"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Revision-overview">
        <xs:annotation>
          <xs:documentation>Short natural language account of the information obtained from the combination of properties and relationships associated with an object.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Rule"
              type="RuleXsdType"
              xml:id="Rule">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Rule -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A rule has a condition part and an action part. A rule takes the form of: If [Condition} Then [Action]. A rule belongs to a rule set which is a component of rule based scheduling performed by the processing agent  
            
            Examples 
            ========== 
            If Exists [InformationObject] Then Perform [Activity]</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RuleXsdType"
                  xml:id="RuleXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A rule has a condition part and an action part. A rule takes the form of: If [Condition} Then [Action]. A rule belongs to a rule set which is a component of rule based scheduling performed by the processing agent  
            
            Examples 
            ========== 
            If Exists [InformationObject] Then Perform [Activity]</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Rule-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Rule_hasPrecondition_ConditionalControlLogic"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Rule_hasPrecondition_ConditionalControlLogic">
        <xs:annotation>
          <xs:documentation>The condition part of a rule is associated with conditonal control logic.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Rule_hasPrecondition_ConditionalControlLogic-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Rule_hasPrecondition_ConditionalControlLogic-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConditionalControlLogic"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RuleBasedScheduling"
              type="RuleBasedSchedulingXsdType"
              xml:id="RuleBasedScheduling">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::RuleBasedScheduling -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Rule based scheduling performs a fact check on rules from the rule set, testing their condition part against the facts in the research data store. Fact checking may be assisted by a curator who can semantically compare the condition part of each candidate rule with the facts. The fact checker returns the next activity which rule based scheduling performs according to the following function: factcheck (RuleSet, ResearchDataStore, Curator): Activity.
            
            Examples 
            ========== 
            One real-life situation in which rule-based scheduling is performed involves data virtualization. Here the research datastore has a catalog of views available for use. Rule based scheduling might explore the catalog to determine the rule(s) in the rule set that currently apply. A software curator might assist in the decision in case there was no exact match between a rule and its condition(s) and given the current state of the research datastore. The curator typically uses natural language processing. 
            
            Explanatory notes 
            =================== 
            Rule based scheduling is guided by its scheduling strategy. This is described by an enumeration that consists of "forwardChaining" and "backwardChaining".</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RuleBasedSchedulingXsdType"
                  xml:id="RuleBasedSchedulingXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Rule based scheduling performs a fact check on rules from the rule set, testing their condition part against the facts in the research data store. Fact checking may be assisted by a curator who can semantically compare the condition part of each candidate rule with the facts. The fact checker returns the next activity which rule based scheduling performs according to the following function: factcheck (RuleSet, ResearchDataStore, Curator): Activity.
            
            Examples 
            ========== 
            One real-life situation in which rule-based scheduling is performed involves data virtualization. Here the research datastore has a catalog of views available for use. Rule based scheduling might explore the catalog to determine the rule(s) in the rule set that currently apply. A software curator might assist in the decision in case there was no exact match between a rule and its condition(s) and given the current state of the research datastore. The curator typically uses natural language processing. 
            
            Explanatory notes 
            =================== 
            Rule based scheduling is guided by its scheduling strategy. This is described by an enumeration that consists of "forwardChaining" and "backwardChaining".</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="NonDeterministicDeclarativeXsdType">
        <xs:sequence>
          <xs:element name="schedulingType"
                      type="SchedulingStrategyXsdType"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="RuleBasedScheduling-schedulingType">
            <xs:annotation>
              <xs:documentation>Indicated if rule-based scheduling is forward-chaining or backward-chaining.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RuleBasedScheduling_has_RuleSet"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="RuleBasedScheduling_has_RuleSet">
            <xs:annotation>
              <xs:documentation>Rule sets are a component of rule based scheduling.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RuleBasedScheduling_has_RuleSet-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RuleBasedScheduling_has_RuleSet-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="RuleSet"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="RuleBasedScheduling_has_Curator"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="RuleBasedScheduling_has_Curator">
            <xs:annotation>
              <xs:documentation>Rule based scheduling has one or more curators. The curators may be commercial/off-the-shelf, open source and/or home grown. They are likely to be domain-specific which is why rule based scheduling might employ many.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RuleBasedScheduling_has_Curator-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="RuleBasedScheduling_has_Curator-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Curator"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RuleSet"
              type="RuleSetXsdType"
              xml:id="RuleSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::RuleSet -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A rule set is a collection of rules. A rule set is a component of rule based scheduling.  
            
            Examples 
            ========== 
            If [A overlaps B] Then [X] If [B occurs before C] Then [Y] If [C equals D] Then [Z]  It might take a curator to understand what these rules mean in the context of a research data store.
            
            Explanatory notes 
            =================== 
            Rule based scheduling might have multiple rule sets each of which are domain-specific. The processing agent often helps with the selection of rule sets.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RuleSetXsdType"
                  xml:id="RuleSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A rule set is a collection of rules. A rule set is a component of rule based scheduling.  
            
            Examples 
            ========== 
            If [A overlaps B] Then [X] If [B occurs before C] Then [Y] If [C equals D] Then [Z]  It might take a curator to understand what these rules mean in the context of a research data store.
            
            Explanatory notes 
            =================== 
            Rule based scheduling might have multiple rule sets each of which are domain-specific. The processing agent often helps with the selection of rule sets.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RuleSet-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RuleSet_has_Rule"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="RuleSet_has_Rule">
        <xs:annotation>
          <xs:documentation>A rule is a member of a rule set.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="RuleSet_has_Rule-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="RuleSet_has_Rule-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Rule"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ScopedMeasure"
              type="ScopedMeasureXsdType"
              xml:id="ScopedMeasure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Dimensional::ScopedMeasure -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A qualified measure whose domain is a universe as an aggregate, i.e. a measure with a specific production method applied to a specific cell in a cube.
            
            Examples
            ========
            Seasonally adjusted income for Single, Ontarians, Females.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ScopedMeasureXsdType"
                  xml:id="ScopedMeasureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A qualified measure whose domain is a universe as an aggregate, i.e. a measure with a specific production method applied to a specific cell in a cube.
            
            Examples
            ========
            Seasonally adjusted income for Single, Ontarians, Females.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="frequency"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ScopedMeasure-frequency">
        <xs:annotation>
          <xs:documentation>Time interval between successive measurements (i.e. applications) of a Scoped Measure.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ScopedMeasure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ScopedMeasure_circumscribes_DimensionalKeyDefinition"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ScopedMeasure_circumscribes_DimensionalKeyDefinition">
        <xs:annotation>
          <xs:documentation>A universe is specific to the specific cell associated with a scoped measure.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ScopedMeasure_circumscribes_DimensionalKeyDefinition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ScopedMeasure_circumscribes_DimensionalKeyDefinition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DimensionalKeyDefinition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ScopedMeasure_restricts_QualifiedMeasure"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ScopedMeasure_restricts_QualifiedMeasure">
        <xs:annotation>
          <xs:documentation>A scoped measure resticts a qualified measure to a particular cell.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ScopedMeasure_restricts_QualifiedMeasure-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ScopedMeasure_restricts_QualifiedMeasure-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="QualifiedMeasure"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ScopedMeasure_generates_RevisableDatum"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ScopedMeasure_generates_RevisableDatum">
        <xs:annotation>
          <xs:documentation>Scoped measure generates one revisable datum.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ScopedMeasure_generates_RevisableDatum-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ScopedMeasure_generates_RevisableDatum-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="RevisableDatum"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="SegmentByText"
              type="SegmentByTextXsdType"
              xml:id="SegmentByText">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::SegmentByText -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Location of a segment of text through character or line counts.  
            
            Examples 
            ========== 
            The segment beginning at line 3, character 4 and ending at line 27 character 13. Alternatively the segment beginning at character 257 and ending at character 1350 of the whole body of text. StartLine of 10, endLine of 12, startCharacterPosition of 1, endCharacterPosition of 0 means all of lines 10, 11, and 12.  An endCharacterPosition of 0 indicates that whole lines are specified.  
            
            Explanatory notes 
            =================== 
            An adequate description will always include a startCharacterPosition and then may include an endCharacterPosition or a characterLength. If StartLine is specified, the character counts begin within that line.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SegmentByTextXsdType"
                  xml:id="SegmentByTextXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Location of a segment of text through character or line counts.  
            
            Examples 
            ========== 
            The segment beginning at line 3, character 4 and ending at line 27 character 13. Alternatively the segment beginning at character 257 and ending at character 1350 of the whole body of text. StartLine of 10, endLine of 12, startCharacterPosition of 1, endCharacterPosition of 0 means all of lines 10, 11, and 12.  An endCharacterPosition of 0 indicates that whole lines are specified.  
            
            Explanatory notes 
            =================== 
            An adequate description will always include a startCharacterPosition and then may include an endCharacterPosition or a characterLength. If StartLine is specified, the character counts begin within that line.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="PhysicalSegmentLocationXsdType">
        <xs:sequence>
          <xs:element name="characterLength"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SegmentByText-characterLength">
            <xs:annotation>
              <xs:documentation>The number of characters in the segment. The segment may include text from multiple lines of the resource. If it does, the length includes any line termination characters.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="endCharacterPosition"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SegmentByText-endCharacterPosition">
            <xs:annotation>
              <xs:documentation>The character position of the last character of the segment.  If endLine is specified, the count begins at character 1 of endLine. If startLine and endLine are not specified, the count begins at character 1 of the first line of the resource and the count includes any line termination characters. The resulting segment may include text from multiple lines of the resource.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="endLine"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SegmentByText-endLine">
            <xs:annotation>
              <xs:documentation>The last line on which to count characters. If missing this defaults to startLine.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="startCharacterPosition"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SegmentByText-startCharacterPosition">
            <xs:annotation>
              <xs:documentation>The character position of the first character of the segment, with the count beginning at character 1 of startLine.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="startLine"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SegmentByText-startLine">
            <xs:annotation>
              <xs:documentation>The line number, where 1 is the first line, on which to begin counting characters. If missing this defaults to 1 (the first line).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SentinelConceptualDomain"
              type="SentinelConceptualDomainXsdType"
              xml:id="SentinelConceptualDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::SentinelConceptualDomain -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Conceptual domain of sentinel concepts.
            
            Examples
            ========
            
            - Refused 
            - Don't know
            - Lost in processing
            
            Explanatory notes
            =================
            Sentinel values are intended for processing purposes whereas substantive values are used for subject matter concerns.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SentinelConceptualDomainXsdType"
                  xml:id="SentinelConceptualDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Conceptual domain of sentinel concepts.
            
            Examples
            ========
            
            - Refused 
            - Don't know
            - Lost in processing
            
            Explanatory notes
            =================
            Sentinel values are intended for processing purposes whereas substantive values are used for subject matter concerns.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptualDomainXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SentinelValueDomain"
              type="SentinelValueDomainXsdType"
              xml:id="SentinelValueDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::SentinelValueDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Value domain for a sentinel conceptual domain.   
            
            Examples 
            ========== 
            Missing categories expressed as codes: -9, refused; -8, Don't Know; for a numeric variable with values greater than zero.    
            
            Explanatory notes 
            =================== 
            Sentinel values are defined in ISO 11404 as "element of a value space that is not completely consistent with a datatype's properties and characterizing operations...". A common example would be codes for missing values. Sentinel values are used for processing, not to describe subject matter. Typical examples include missing values or invalid entry codes. Sentinel value domains are typically of the enumerated type, but they can be the described type, too. This is not to say that sentinel values carry no information. Data on gender might be enumerated by "0, male" and "1, female". These are the substantive values (see substantive value domain). However, there may be the need to include missing values along with that data, such as "m, missing" and "r, refused". These are sentinel values.  ISO/IEC 11404 - General Purpose Datatypes, defines sentinel values in terms of how that standard defines datatypes. But, the fact that the sentinels don't fit in terms of the calculations and statistics one would perform on the "clean" data is a distinguishing characteristic. In the example above, one would not include missing or refused data in calculating a ratio of females to the total population. Sentinel values may be described rather than enumerated. For instance, there might be a range of values, each representing an out of range value, but there could be too many to enumerate. It is easier to describe the range.  In some software missing values are represented as values not in the datatype of the valid values. R has values of NA, NaN, Inf, and -Inf. SAS and Stata have values displayed as ".", ".A" through ".Z", and "._"  Other software might use values like 999 for missing that would otherwise be the same datatype as valid values but outside the parameters of the domain. In the gender example above: For SPSS the sentinel values might be represented as: 998 = "refused" 999 = "not recorded"  For SAS or Stata the sentinel values might be represented as: .R = "refused" .N = "not recorded"  Sentinel values can also be used for other purposes beyond missing. For a numeric variable "A" might represent a value somewhere in a defined range to prevent disclosure of information about an individual. This might be considered a "semi-missing value". In SAS or Stata for example: .A = "greater than or equal to 100 and less than 1000 ".</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SentinelValueDomainXsdType"
                  xml:id="SentinelValueDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Value domain for a sentinel conceptual domain.   
            
            Examples 
            ========== 
            Missing categories expressed as codes: -9, refused; -8, Don't Know; for a numeric variable with values greater than zero.    
            
            Explanatory notes 
            =================== 
            Sentinel values are defined in ISO 11404 as "element of a value space that is not completely consistent with a datatype's properties and characterizing operations...". A common example would be codes for missing values. Sentinel values are used for processing, not to describe subject matter. Typical examples include missing values or invalid entry codes. Sentinel value domains are typically of the enumerated type, but they can be the described type, too. This is not to say that sentinel values carry no information. Data on gender might be enumerated by "0, male" and "1, female". These are the substantive values (see substantive value domain). However, there may be the need to include missing values along with that data, such as "m, missing" and "r, refused". These are sentinel values.  ISO/IEC 11404 - General Purpose Datatypes, defines sentinel values in terms of how that standard defines datatypes. But, the fact that the sentinels don't fit in terms of the calculations and statistics one would perform on the "clean" data is a distinguishing characteristic. In the example above, one would not include missing or refused data in calculating a ratio of females to the total population. Sentinel values may be described rather than enumerated. For instance, there might be a range of values, each representing an out of range value, but there could be too many to enumerate. It is easier to describe the range.  In some software missing values are represented as values not in the datatype of the valid values. R has values of NA, NaN, Inf, and -Inf. SAS and Stata have values displayed as ".", ".A" through ".Z", and "._"  Other software might use values like 999 for missing that would otherwise be the same datatype as valid values but outside the parameters of the domain. In the gender example above: For SPSS the sentinel values might be represented as: 998 = "refused" 999 = "not recorded"  For SAS or Stata the sentinel values might be represented as: .R = "refused" .N = "not recorded"  Sentinel values can also be used for other purposes beyond missing. For a numeric variable "A" might represent a value somewhere in a defined range to prevent disclosure of information about an individual. This might be considered a "semi-missing value". In SAS or Stata for example: .A = "greater than or equal to 100 and less than 1000 ".</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ValueDomainXsdType">
        <xs:sequence>
          <xs:element name="platformType"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SentinelValueDomain-platformType">
            <xs:annotation>
              <xs:documentation>The type of platform under which sentinel codes will be used. Statistical software platforms use different sets of codes to indicate missing values. The external controlled vocabulary should list platform types and a description of the allowed missing value types. A sample list would be: 
        
        - BlankString - A Blank string indicates missing. Comparison is based on lexical order.  
        - EmptyString - An empty string indicates missing. Use in comparisons returns missing.   
        - Rstyle - Codes drawn from  NA and the IEEE 754 values of NaN  -Inf   +Inf.   Comparisons return NA.   
        - SASNumeric - codes drawn from . ._ .A .B .C .D .E .F .G .H .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z    Sentinel code treated as less than any substantive value   
        - SPSSstyle - System missing (a dot) a set of individual values drawn from the same datatype as the SubstantiveValueDomain, and a range of values  drawn from the same datatype as the SubstantiveValueDomain. Comparisons return system missing. Some functions substitute with valid values (e.g. SUM replaces missing values with 0).  
        - StataNumeric - codes drawn from . ._ .A .B .C .D .E .F .G .H .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z  Sentinel code treated as greater than any substantive value  - Unrestricted - No restrictions on codes for sentinel values. Use in comparisons is indeterminate.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SentinelValueDomain_takesConceptsFrom_SentinelConceptualDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SentinelValueDomain_takesConceptsFrom_SentinelConceptualDomain">
            <xs:annotation>
              <xs:documentation>Corresponding conceptual definition given by a sentinel conceptual domain.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SentinelValueDomain_takesConceptsFrom_SentinelConceptualDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SentinelValueDomain_takesConceptsFrom_SentinelConceptualDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SentinelConceptualDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="SentinelValueDomain_takesValuesFrom_EnumerationDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SentinelValueDomain_takesValuesFrom_EnumerationDomain">
            <xs:annotation>
              <xs:documentation>Any subtype of an enumeration domain enumerating the set of valid values.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SentinelValueDomain_takesValuesFrom_EnumerationDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SentinelValueDomain_takesValuesFrom_EnumerationDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="CodeList"/>
                          <xs:enumeration value="EnumerationDomain"/>
                          <xs:enumeration value="StatisticalClassification"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="SentinelValueDomain_isDescribedBy_ValueAndConceptDescription"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SentinelValueDomain_isDescribedBy_ValueAndConceptDescription">
            <xs:annotation>
              <xs:documentation>A formal description of the set of valid values - for described value domains.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SentinelValueDomain_isDescribedBy_ValueAndConceptDescription-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SentinelValueDomain_isDescribedBy_ValueAndConceptDescription-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ValueAndConceptDescription"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Sequence"
              type="SequenceXsdType"
              xml:id="Sequence">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Sequence -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A sequence controls the order of activities or steps by defining a simple sequence. 
            
            Examples 
            ========== 
            A sequence might contain two subordinate sequences of activity - one for Round 1 activity of the research and the second for Round 2.
            
            Explanatory notes 
            =================== 
            Unlike temporal constraints, sequence is NOT pairwise. However, a group of temporal constraints can specify an order with more precision than a sequence.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SequenceXsdType"
                  xml:id="SequenceXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            A sequence controls the order of activities or steps by defining a simple sequence. 
            
            Examples 
            ========== 
            A sequence might contain two subordinate sequences of activity - one for Round 1 activity of the research and the second for Round 2.
            
            Explanatory notes 
            =================== 
            Unlike temporal constraints, sequence is NOT pairwise. However, a group of temporal constraints can specify an order with more precision than a sequence.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DeterministicImperativeXsdType">
        <xs:sequence>
          <xs:element name="Sequence_has_SequencePosition"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Sequence_has_SequencePosition">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Sequence_has_SequencePosition-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="Sequence_has_SequencePosition-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SequencePosition"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SequencePosition"
              type="SequencePositionXsdType"
              xml:id="SequencePosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::SequencePosition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to an activity within a sequence.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SequencePositionXsdType"
                  xml:id="SequencePositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to an activity within a sequence.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="SequencePosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="SequencePosition-value">
        <xs:annotation>
          <xs:documentation>Indexes the activities in a sequence using integers with a position indicated by incrementing upward from 0 or 1.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SequencePosition_indexes_Activity"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="SequencePosition_indexes_Activity">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="SequencePosition_indexes_Activity-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="SequencePosition_indexes_Activity-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Activity"/>
                      <xs:enumeration value="Step"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Service"
              type="ServiceXsdType"
              xml:id="Service">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Service -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Service is a type of processing agent. Services are atomic. They execute acts which have input and output parameters.  
            
            Examples 
            ========== 
            Given a location as input, a weather service provides weather data as output.  
            
            Explanatory notes 
            =================== 
            A service binds information objects to parameters at runtime.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ServiceXsdType"
                  xml:id="ServiceXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Service is a type of processing agent. Services are atomic. They execute acts which have input and output parameters.  
            
            Examples 
            ========== 
            Given a location as input, a weather service provides weather data as output.  
            
            Explanatory notes 
            =================== 
            A service binds information objects to parameters at runtime.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ProcessingAgentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="StatisticalClassification"
              type="StatisticalClassificationXsdType"
              xml:id="StatisticalClassification">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::StatisticalClassification -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of categories represented by classification items where the subset of immediate children categories for any given parent category are mutually exclusive and jointly exhaustive with respect to that parent.
            
            Examples
            ==========
            ISIC rev 4; NAICS 2017, SOC 2018
            
            Explanatory notes
            ===================
            A statistical classification may have a flat, linear structure or may be hierarchically structured, such that all categories at lower levels are sub-categories of categories at the next Level up. (Source: GSIM StatisticalClassification)
            Each classification item represents a category. Every category is a member of a level within a statistical classification. The categories are defined with reference to one or more characteristics of a particular universe of units of observation.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StatisticalClassificationXsdType"
                  xml:id="StatisticalClassificationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of categories represented by classification items where the subset of immediate children categories for any given parent category are mutually exclusive and jointly exhaustive with respect to that parent.
            
            Examples
            ==========
            ISIC rev 4; NAICS 2017, SOC 2018
            
            Explanatory notes
            ===================
            A statistical classification may have a flat, linear structure or may be hierarchically structured, such that all categories at lower levels are sub-categories of categories at the next Level up. (Source: GSIM StatisticalClassification)
            Each classification item represents a category. Every category is a member of a level within a statistical classification. The categories are defined with reference to one or more characteristics of a particular universe of units of observation.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="EnumerationDomainXsdType">
        <xs:sequence>
          <xs:element name="allowsDuplicates"
                      type="xs:boolean"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-allowsDuplicates">
            <xs:annotation>
              <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="availableLanguage"
                      type="xs:language"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification-availableLanguage">
            <xs:annotation>
              <xs:documentation>A list of languages in which the Statistical Classification is available. Supports the indication of multiple languages within a single property. Supports use of codes defined by the RFC 1766.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="catalogDetails"
                      type="CatalogDetailsXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-catalogDetails">
            <xs:annotation>
              <xs:documentation>Bundles the information useful for a data catalog entry. 
        
        Examples would be creator, contributor, title, copyright, embargo, and license information
        
        A set of information useful for attribution, data discovery, and access.
        This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="changeFromBase"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-changeFromBase">
            <xs:annotation>
              <xs:documentation>Describes the relationship between the variant and its base Statistical Classification, including regroupings, aggregations added and extensions. (Source: GSIM StatisticalClassification/Changes from base Statistical Classification).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="copyright"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification-copyright">
            <xs:annotation>
              <xs:documentation>Copyright of the statistical classification.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="displayLabel"
                      type="LabelForDisplayXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification-displayLabel">
            <xs:annotation>
              <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="isCurrent"
                      type="xs:boolean"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-isCurrent">
            <xs:annotation>
              <xs:documentation>Indicates if the statistical classification is currently valid.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="isFloating"
                      type="xs:boolean"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-isFloating">
            <xs:annotation>
              <xs:documentation>Indicates if the Statistical Classification is a floating classification. In a floating statistical classification, a validity period should be defined for all classification Items which will allow the display of the item structure and content at different points of time. (Source: GSIM StatisticalClassification/Floating).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="purposeOfVariant"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-purposeOfVariant">
            <xs:annotation>
              <xs:documentation>If the Statistical Classification is a variant, notes the specific purpose for which it was developed. (Source: GSIM StatisticalClassification/Purpose of variant).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="rationale"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-rationale">
            <xs:annotation>
              <xs:documentation>Explanation of the reason(s) some decision was made or some object exists.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="releaseDate"
                      type="CombinedDateXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-releaseDate">
            <xs:annotation>
              <xs:documentation>Date when the current version of the Statistical Classification was released.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="updateChanges"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification-updateChanges">
            <xs:annotation>
              <xs:documentation>Summary description of changes which have occurred since the most recent classification version or classification update came into force.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="usage"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-usage">
            <xs:annotation>
              <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="validDates"
                      type="DateRangeXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification-validDates">
            <xs:annotation>
              <xs:documentation>The dates describing the validity period of the object. The date from which the object became valid must be defined if the map belongs to a "floating" construct. The date at which the object became invalid must be defined if the map belongs to a "floating" construct and is no longer valid. Per the Generic Statistical Information Model, Statistical Classification: "The date the statistical classification enters production use and the date on which the Statistical Classification was superseded by a successor version or otherwise ceased to be valid."</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="StatisticalClassification_isMaintainedBy_Organization"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_isMaintainedBy_Organization">
            <xs:annotation>
              <xs:documentation>Organization, agency, or group within an agency responsible for the maintenance and upkeep of the statistical classification.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_isMaintainedBy_Organization-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_isMaintainedBy_Organization-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Organization"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_isIndexedBy_ClassificationIndex"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_isIndexedBy_ClassificationIndex">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_isIndexedBy_ClassificationIndex-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_isIndexedBy_ClassificationIndex-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ClassificationIndex"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_isVariantOf_StatisticalClassification"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification_isVariantOf_StatisticalClassification">
            <xs:annotation>
              <xs:documentation>Statistical classification on which the current variant is based, and any subsequent versions of that statistical classification to which it is also applicable.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_isVariantOf_StatisticalClassification-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_isVariantOf_StatisticalClassification-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="StatisticalClassification"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_isSuccessorOf_StatisticalClassification"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_isSuccessorOf_StatisticalClassification">
            <xs:annotation>
              <xs:documentation>Statistical classification preceded by the actual statistical classification (for those statistical classifications that are versions or updates).</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_isSuccessorOf_StatisticalClassification-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_isSuccessorOf_StatisticalClassification-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="StatisticalClassification"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_isPredecessorOf_StatisticalClassification"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_isPredecessorOf_StatisticalClassification">
            <xs:annotation>
              <xs:documentation>Statistical classification preceded by the actual statistical classification (for those statistical classifications that are versions or updates).</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_isPredecessorOf_StatisticalClassification-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_isPredecessorOf_StatisticalClassification-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="StatisticalClassification"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_has_ClassificationItemPosition"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_has_ClassificationItemPosition">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_has_ClassificationItemPosition-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_has_ClassificationItemPosition-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ClassificationItemPosition"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_has_ClassificationItem"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="StatisticalClassification_has_ClassificationItem">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_has_ClassificationItem-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_has_ClassificationItem-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ClassificationItem"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="StatisticalClassification_has_LevelStructure"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="StatisticalClassification_has_LevelStructure">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="StatisticalClassification_has_LevelStructure-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="StatisticalClassification_has_LevelStructure-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="LevelStructure"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="StatisticalClassificationRelationship"
              type="StatisticalClassificationRelationshipXsdType"
              xml:id="StatisticalClassificationRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::StatisticalClassificationRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Specifies the statistical classifications for the source and target of a complex relationship and defines the relationship.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StatisticalClassificationRelationshipXsdType"
                  xml:id="StatisticalClassificationRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Specifies the statistical classifications for the source and target of a complex relationship and defines the relationship.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="StatisticalClassificationRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="StatisticalClassificationRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StatisticalClassificationRelationship_hasTarget_StatisticalClassification"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="StatisticalClassificationRelationship_hasTarget_StatisticalClassification">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="StatisticalClassificationRelationship_hasTarget_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="StatisticalClassificationRelationship_hasTarget_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="StatisticalClassificationRelationship_hasSource_StatisticalClassification"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="StatisticalClassificationRelationship_hasSource_StatisticalClassification">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="StatisticalClassificationRelationship_hasSource_StatisticalClassification-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="StatisticalClassificationRelationship_hasSource_StatisticalClassification-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="StatisticalClassification"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Step"
              type="StepXsdType"
              xml:id="Step">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::Step -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Step is a reusable, parameterized activity associated to information flows. One or more steps perform an sctivity.
            
            Examples
            ==========
            An editing activity resolves into one or more steps. A transformation of a wide data set to a long data set takes a single step on an ETL (extract, transform, load) platform like Pentaho.
            
            Explanatory notes
            ===================
            Steps can be broken out into a sequence of sub steps ad infinitum.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StepXsdType"
                  xml:id="StepXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Step is a reusable, parameterized activity associated to information flows. One or more steps perform an sctivity.
            
            Examples
            ==========
            An editing activity resolves into one or more steps. A transformation of a wide data set to a long data set takes a single step on an ETL (extract, transform, load) platform like Pentaho.
            
            Explanatory notes
            ===================
            Steps can be broken out into a sequence of sub steps ad infinitum.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ActivityXsdType">
        <xs:sequence>
          <xs:element name="script"
                      type="CommandCodeXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Step-script">
            <xs:annotation>
              <xs:documentation>The executable code for performing a process step, expressed in a formal language.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="scriptingLanguage"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Step-scriptingLanguage">
            <xs:annotation>
              <xs:documentation>The formal language used by the script associated with the process step.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Step_produces_Parameter"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Step_produces_Parameter">
            <xs:annotation>
              <xs:documentation>The Step creates Parameter as an output.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Step_produces_Parameter-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Step_produces_Parameter-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Parameter"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="Step_receives_Parameter"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Step_receives_Parameter">
            <xs:annotation>
              <xs:documentation>The Step uses Parameter as an input.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Step_receives_Parameter-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Step_receives_Parameter-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Parameter"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="Step_hasSubStep_Step"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="Step_hasSubStep_Step">
            <xs:annotation>
              <xs:documentation>A step can be broken out into steps ad infinitum.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="Step_hasSubStep_Step-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="Step_hasSubStep_Step-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="Step"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SubstantiveConceptualDomain"
              type="SubstantiveConceptualDomainXsdType"
              xml:id="SubstantiveConceptualDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::SubstantiveConceptualDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Conceptual domain of substantive concepts.  
            
            Examples 
            ======== 
            An enumeration of concepts for a categorical variable like "male" and "female" for gender, or "ozone" and "particulate matter less than 2.5 microns in diameter" for pollutant in an air quality measure.  
            
            Explanatory notes 
            =================
            A conceptual variable links a unit type to a substantive conceptual domain. The latter can be an enumeration or description of the values that the variable may take on. In the enumerated case these are the categories in a category set that can be values, not the codes that represent the values. An example might be the conceptual domain for a variable representing self-identified gender. An enumeration might include the concept of "male" and the concept of "female". These, in turn, would be represented in a substantive value domain by codes in a code list like "m" and "f", or "0" and "1". A conceptual domain might be described through a value and concept description's description property of "a real number greater than 0" or through a more formal logical expression of "all reals x such that x &gt; 0". Even in the described case, what is being described are conceptual, not the symbols used to represent the values. This may be a subtle distinction, but allows specifying that the same numeric value might be represented by 32 bits or by 64 bits or by an Arabic numeral or a Roman numeral.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SubstantiveConceptualDomainXsdType"
                  xml:id="SubstantiveConceptualDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Conceptual domain of substantive concepts.  
            
            Examples 
            ======== 
            An enumeration of concepts for a categorical variable like "male" and "female" for gender, or "ozone" and "particulate matter less than 2.5 microns in diameter" for pollutant in an air quality measure.  
            
            Explanatory notes 
            =================
            A conceptual variable links a unit type to a substantive conceptual domain. The latter can be an enumeration or description of the values that the variable may take on. In the enumerated case these are the categories in a category set that can be values, not the codes that represent the values. An example might be the conceptual domain for a variable representing self-identified gender. An enumeration might include the concept of "male" and the concept of "female". These, in turn, would be represented in a substantive value domain by codes in a code list like "m" and "f", or "0" and "1". A conceptual domain might be described through a value and concept description's description property of "a real number greater than 0" or through a more formal logical expression of "all reals x such that x &gt; 0". Even in the described case, what is being described are conceptual, not the symbols used to represent the values. This may be a subtle distinction, but allows specifying that the same numeric value might be represented by 32 bits or by 64 bits or by an Arabic numeral or a Roman numeral.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptualDomainXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SubstantiveValueDomain"
              type="SubstantiveValueDomainXsdType"
              xml:id="SubstantiveValueDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::SubstantiveValueDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Value domain for a substantive conceptual domain. Typically a description and/or enumeration of allowed values of interest.  
            
            Examples 
            ========
            All real decimal numbers relating to the subject matter of interest between 0 and 1 specified in Arabic numerals. (From the Generic Statistical Information Model [GSIM] 1.1). The codes "M" male and "F" for female .   
            
            Explanatory notes 
            =================
            In DDI-CDI the value domain for a variable is separated into "substantive" and "sentinel" values. Substantive values are the values of primary interest. Sentinel values are additional values that may carry supplementary information, such as reasons for missing. This duality is described in ISO 11404. Substantive values for height might be real numbers expressed in meters. The full value domain might also include codes for different kinds of missing values - one code for "refused" and another for "don’t know". Sentinel values may also convey some substantive information and at the same time represent missing values.
            
            An example might be where a numeric variable like number of employees be sometimes a count and sometimes a code representing a range of counts in order to avoid disclosure of information about a specific entity. The substantive value domain may use either a value description, for described values, or a codelist for enumerated values, or both. A value domain may consist of substantive values or sentinel values. Substantive values are those associated directly with some subject matter area. They do not address concerns around processing, such as missing values. Substantive values are called "regular values" in ISO/IEC 11404 - General Purpose Datatypes. The enumerated case is one where all values are listed.
            
            An example is the categorical values for gender: the conceptual domain could consist of the concept of male and the concept of female. These might be represented in codes and associated labels as 1 ("Male") 2 ("Female"). The described case is one where some description is needed to define the set of values. Take the following description for height in meters: "a real number between 0 and 3, represented to two Arabic decimal places". This description might be structured in some way to be machine actionable (datatype="double”, min="0", max="3", decimals="2").</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SubstantiveValueDomainXsdType"
                  xml:id="SubstantiveValueDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Value domain for a substantive conceptual domain. Typically a description and/or enumeration of allowed values of interest.  
            
            Examples 
            ========
            All real decimal numbers relating to the subject matter of interest between 0 and 1 specified in Arabic numerals. (From the Generic Statistical Information Model [GSIM] 1.1). The codes "M" male and "F" for female .   
            
            Explanatory notes 
            =================
            In DDI-CDI the value domain for a variable is separated into "substantive" and "sentinel" values. Substantive values are the values of primary interest. Sentinel values are additional values that may carry supplementary information, such as reasons for missing. This duality is described in ISO 11404. Substantive values for height might be real numbers expressed in meters. The full value domain might also include codes for different kinds of missing values - one code for "refused" and another for "don’t know". Sentinel values may also convey some substantive information and at the same time represent missing values.
            
            An example might be where a numeric variable like number of employees be sometimes a count and sometimes a code representing a range of counts in order to avoid disclosure of information about a specific entity. The substantive value domain may use either a value description, for described values, or a codelist for enumerated values, or both. A value domain may consist of substantive values or sentinel values. Substantive values are those associated directly with some subject matter area. They do not address concerns around processing, such as missing values. Substantive values are called "regular values" in ISO/IEC 11404 - General Purpose Datatypes. The enumerated case is one where all values are listed.
            
            An example is the categorical values for gender: the conceptual domain could consist of the concept of male and the concept of female. These might be represented in codes and associated labels as 1 ("Male") 2 ("Female"). The described case is one where some description is needed to define the set of values. Take the following description for height in meters: "a real number between 0 and 3, represented to two Arabic decimal places". This description might be structured in some way to be machine actionable (datatype="double”, min="0", max="3", decimals="2").</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ValueDomainXsdType">
        <xs:sequence>
          <xs:element name="SubstantiveValueDomain_takesValuesFrom_EnumerationDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SubstantiveValueDomain_takesValuesFrom_EnumerationDomain">
            <xs:annotation>
              <xs:documentation>Any subtype of an enumeration domain enumerating the set of valid values.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SubstantiveValueDomain_takesValuesFrom_EnumerationDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SubstantiveValueDomain_takesValuesFrom_EnumerationDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="CodeList"/>
                          <xs:enumeration value="EnumerationDomain"/>
                          <xs:enumeration value="StatisticalClassification"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="SubstantiveValueDomain_isDescribedBy_ValueAndConceptDescription"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SubstantiveValueDomain_isDescribedBy_ValueAndConceptDescription">
            <xs:annotation>
              <xs:documentation>A formal description of the set of valid values - for described value domains.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SubstantiveValueDomain_isDescribedBy_ValueAndConceptDescription-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SubstantiveValueDomain_isDescribedBy_ValueAndConceptDescription-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="ValueAndConceptDescription"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="SubstantiveValueDomain_takesConceptsFrom_SubstantiveConceptualDomain"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="SubstantiveValueDomain_takesConceptsFrom_SubstantiveConceptualDomain">
            <xs:annotation>
              <xs:documentation>Corresponding conceptual definition given by an substantive conceptual domain.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="SubstantiveValueDomain_takesConceptsFrom_SubstantiveConceptualDomain-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="SubstantiveValueDomain_takesConceptsFrom_SubstantiveConceptualDomain-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="SubstantiveConceptualDomain"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SyntheticIdComponent"
              type="SyntheticIdComponentXsdType"
              xml:id="SyntheticIdComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::KeyValue::SyntheticIdComponent -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Persistent and unique identifier (PIDs) to provide standarized, long-lasting identification. 
            
            Examples
            ==========
            UUIDs, GUIDs, DOIs, URNs or any other unique id generation framework.
            
            Explanatory notes
            ===================
            This PIDs either complement or replace identifier and dimension components. 
            They complement them when there is a need for having a globally unique identifier as part of an instance key. They replace them when identier components are not available (e.g. after de-identification for confidentiality).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SyntheticIdComponentXsdType"
                  xml:id="SyntheticIdComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Persistent and unique identifier (PIDs) to provide standarized, long-lasting identification. 
            
            Examples
            ==========
            UUIDs, GUIDs, DOIs, URNs or any other unique id generation framework.
            
            Explanatory notes
            ===================
            This PIDs either complement or replace identifier and dimension components. 
            They complement them when there is a need for having a globally unique identifier as part of an instance key. They replace them when identier components are not available (e.g. after de-identification for confidentiality).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="TemporalConstraints"
              type="TemporalConstraintsXsdType"
              xml:id="TemporalConstraints">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::TemporalConstraints -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Temporal constraints provide a mechanism for expressing concurrency control and synchronization
            
            Examples
            ==========
            Allen's Interval Algebra is a set of temporal constraints. So are the Split and SplitJoin ControlConstructs
            
            Explanatory notes
            ===================
            Allen's interval algebra is a calculus for temporal reasoning that was introduced in 1983. Reasoning with qualitative time in Allen's full interval algebra is nondeterministic polynomial time (NP) complete. Research since 1995 identified maximal tractable subclasses of this algebra via exhaustive computer search and also other ad-hoc methods. In 2003, the full classification of complexity for satisfiability problems over constraints in Allen's interval algebra was established algebraically.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TemporalConstraintsXsdType"
                  xml:id="TemporalConstraintsXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Temporal constraints provide a mechanism for expressing concurrency control and synchronization
            
            Examples
            ==========
            Allen's Interval Algebra is a set of temporal constraints. So are the Split and SplitJoin ControlConstructs
            
            Explanatory notes
            ===================
            Allen's interval algebra is a calculus for temporal reasoning that was introduced in 1983. Reasoning with qualitative time in Allen's full interval algebra is nondeterministic polynomial time (NP) complete. Research since 1995 identified maximal tractable subclasses of this algebra via exhaustive computer search and also other ad-hoc methods. In 2003, the full classification of complexity for satisfiability problems over constraints in Allen's interval algebra was established algebraically.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="NonDeterministicDeclarativeXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="TemporalControlConstruct"
              type="TemporalControlConstructXsdType"
              xml:id="TemporalControlConstruct">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::TemporalControlConstruct -->
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Declarative control flow operator where the continuation of the execution flow depends on the finalization of one or more preceding activities/steps.
            
            - XORJoin: Given three activities A, B and C, if XORJoin(A, B) -&gt; C, then C is executed after either A or B finishes executing. XORJoin is sometimes referred to as simple merge.
            - ANDJoin: Given three activities A, B and C, if ANDJoin(A, B) -&gt; C, then C is executed after both A and B finish executing. ANDJoin is sometimes referred to as synchronization.
            - XORSplit: Given three activities A, B and C, if XORSplit(A) -&gt; (B, C), then either B or C is executed, not both, after A finishes executing. XORSplit is sometimes referred to as exclusive choice.
            - ANDSplit: Given three activities A, B and C, if ANDSplit(A) -&gt; (B, C), then both B and C are executed after A finishes executing.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TemporalControlConstructXsdType"
                  xml:id="TemporalControlConstructXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Declarative control flow operator where the continuation of the execution flow depends on the finalization of one or more preceding activities/steps.
            
            - XORJoin: Given three activities A, B and C, if XORJoin(A, B) -&gt; C, then C is executed after either A or B finishes executing. XORJoin is sometimes referred to as simple merge.
            - ANDJoin: Given three activities A, B and C, if ANDJoin(A, B) -&gt; C, then C is executed after both A and B finish executing. ANDJoin is sometimes referred to as synchronization.
            - XORSplit: Given three activities A, B and C, if XORSplit(A) -&gt; (B, C), then either B or C is executed, not both, after A finishes executing. XORSplit is sometimes referred to as exclusive choice.
            - ANDSplit: Given three activities A, B and C, if ANDSplit(A) -&gt; (B, C), then both B and C are executed after A finishes executing.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="TemporalConstraintsXsdType">
        <xs:sequence>
          <xs:element name="temporalControl"
                      type="TemporalOperatorXsdType"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="TemporalControlConstruct-temporalControl">
            <xs:annotation>
              <xs:documentation>TemporalControl is a property of type TemporalControlConstructType. There are four members of this enumeration: AND-split, XOR-split, AND-join and XOR-join.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Unit"
              type="UnitXsdType"
              xml:id="Unit">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::Unit -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Individual object of interest for some statistical activity, such as data collection.
            
            Examples
            ========
            Here are 3 examples:
            
            1. Individual US person (i.e., Arofan Gregory, Dan Gillman, Barack Obama, etc.)
            2. Individual US computer companies (i.e., Microsoft, Apple, IBM, etc.)
            3. Individual US universities (i.e., Johns Hopkins, University of Maryland, Yale, etc.) [GSIM 1.1]
            
            Explanatory notes
            =================
            In a traditional data table each column might represent some variable (measurement). Each row would represent the entity (Unit)  to which those variables relate. Height measurements might be made on persons (unit type) of primary school age (Universe) at Pinckney Elementary School on September 1, 2005 (population). The height for Mary Roe (Unit)  might be 139 cm.
            
            The Unit is not invariably tied to some value. A median income might be calculated for a block in the U.S. but then used as an attribute of a person residing on that block. For the initial measurement the Unit was the block. In the reuse the unit would be that specific person to which the value was applied.
            
            In a big data table each row represents a unit/variable double. Together a unit identifier and a variable identifier define the key. And for each key there is just one value – the measure of the unit on the variable.
            
            A big data table is sometimes referred to as a column-oriented data store whereas a traditional database is sometimes referred to as a row-oriented data store. The unit plays an identifier role in both types of data stores.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UnitXsdType"
                  xml:id="UnitXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Individual object of interest for some statistical activity, such as data collection.
            
            Examples
            ========
            Here are 3 examples:
            
            1. Individual US person (i.e., Arofan Gregory, Dan Gillman, Barack Obama, etc.)
            2. Individual US computer companies (i.e., Microsoft, Apple, IBM, etc.)
            3. Individual US universities (i.e., Johns Hopkins, University of Maryland, Yale, etc.) [GSIM 1.1]
            
            Explanatory notes
            =================
            In a traditional data table each column might represent some variable (measurement). Each row would represent the entity (Unit)  to which those variables relate. Height measurements might be made on persons (unit type) of primary school age (Universe) at Pinckney Elementary School on September 1, 2005 (population). The height for Mary Roe (Unit)  might be 139 cm.
            
            The Unit is not invariably tied to some value. A median income might be calculated for a block in the U.S. but then used as an attribute of a person residing on that block. For the initial measurement the Unit was the block. In the reuse the unit would be that specific person to which the value was applied.
            
            In a big data table each row represents a unit/variable double. Together a unit identifier and a variable identifier define the key. And for each key there is just one value – the measure of the unit on the variable.
            
            A big data table is sometimes referred to as a column-oriented data store whereas a traditional database is sometimes referred to as a row-oriented data store. The unit plays an identifier role in both types of data stores.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Unit-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. Examples would be creator, contributor, title, copyright, embargo, and license information. A set of information useful for attribution, data discovery, and access. This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="definition"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Unit-definition">
        <xs:annotation>
          <xs:documentation>Natural language statement conveying the meaning of a concept, differentiating it from other concepts. Supports the use of multiple languages and structured text.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Unit-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Unit-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Unit-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Unit_has_UnitType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Unit_has_UnitType">
        <xs:annotation>
          <xs:documentation>The unit type of the unit.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="Unit_has_UnitType-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="Unit_has_UnitType-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UnitSegmentLayout"
              type="UnitSegmentLayoutXsdType"
              xml:id="UnitSegmentLayout">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::UnitSegmentLayout -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Description of unit-record ("wide") data sets, where each row in the data set provides the same group of values for variables all relating to a single unit.
            
            Examples
            ========
            A simple spreadsheet. Commonly the first row of the table will contain variable names or descriptions.
            
            The following CSV file has a rectangular layout and would import into a simple table in a spreadsheet::
            
               PersonId,AgeYr,HeightCm
               1,22,183,
               2,45,175,
            
            Explanatory notes
            =================
            This is the classic rectangular data table used by most statistical packages, with rows/cases/observations and columns/variables/measurements. Each cell (DataPoint) in the table is the intersection of a Unit (row) and an InstanceVariable. Each logical column will contain data relating to the values for a single variable.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UnitSegmentLayoutXsdType"
                  xml:id="UnitSegmentLayoutXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Description of unit-record ("wide") data sets, where each row in the data set provides the same group of values for variables all relating to a single unit.
            
            Examples
            ========
            A simple spreadsheet. Commonly the first row of the table will contain variable names or descriptions.
            
            The following CSV file has a rectangular layout and would import into a simple table in a spreadsheet::
            
               PersonId,AgeYr,HeightCm
               1,22,183,
               2,45,175,
            
            Explanatory notes
            =================
            This is the classic rectangular data table used by most statistical packages, with rows/cases/observations and columns/variables/measurements. Each cell (DataPoint) in the table is the intersection of a Unit (row) and an InstanceVariable. Each logical column will contain data relating to the values for a single variable.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="PhysicalSegmentLayoutXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="UnitType"
              type="UnitTypeXsdType"
              xml:id="UnitType">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::UnitType -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Unit type is a type or class of objects of interest (units).
            
            Examples
            ========
            Person, Establishment, Household, State, Country, Dog, Automobile, Neutrino.
            
            Explanatory notes
            =================
            Unit type is the most general in the hierarchy of unit type, universe, and population. It is a description of the basic characteristics for a general set of Units. A universe is a set of entities defined by a specialization of a unit type. A Population further narrows the specification to a specific time and geography.
            
            A unit type is used to describe a class or group of Units based on a single characteristic with no specification of time and geography. For example, the unit type of "Person" groups together a set of Units based on the characteristic that they are "Persons".
            
            It concerns not only unit types used in dissemination, but anywhere in the statistical process. E.g. using administrative data might involve the use of a fiscal unit. [GSIM 1.1].</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UnitTypeXsdType"
                  xml:id="UnitTypeXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Unit type is a type or class of objects of interest (units).
            
            Examples
            ========
            Person, Establishment, Household, State, Country, Dog, Automobile, Neutrino.
            
            Explanatory notes
            =================
            Unit type is the most general in the hierarchy of unit type, universe, and population. It is a description of the basic characteristics for a general set of Units. A universe is a set of entities defined by a specialization of a unit type. A Population further narrows the specification to a specific time and geography.
            
            A unit type is used to describe a class or group of Units based on a single characteristic with no specification of time and geography. For example, the unit type of "Person" groups together a set of Units based on the characteristic that they are "Persons".
            
            It concerns not only unit types used in dissemination, but anywhere in the statistical process. E.g. using administrative data might involve the use of a fiscal unit. [GSIM 1.1].</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ConceptXsdType">
        <xs:sequence>
          <xs:element name="descriptiveText"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="UnitType-descriptiveText">
            <xs:annotation>
              <xs:documentation>A short natural language account of the characteristics of the object.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Universe"
              type="UniverseXsdType"
              xml:id="Universe">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::Universe -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specialized unit type, with the specialization based upon characteristics other than time and geography.
            
            Examples
            ==========
            1. Canadian adults (not limited to those residing in Canada)
            2. Computer companies 
            3. Universities
            
            Explanatory notes
            ===================
            Universe sits in a hierarchy between unit type and population, with unit type being most general and Population most specific. A universe is a set of entities defined by a more narrow specification than that of an underlying unit type. A population further narrows the specification to a specific time and geography.
            
            If the Universe consists of people, a number of factors may be used in defining membership in the Universe, such as age, sex, residence, income, veteran status, criminal convictions, etc. The universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. A universe may be described as "inclusive" or "exclusive". 
            
            Not to be confused with Population, which includes the specification of time and geography.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UniverseXsdType"
                  xml:id="UniverseXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specialized unit type, with the specialization based upon characteristics other than time and geography.
            
            Examples
            ==========
            1. Canadian adults (not limited to those residing in Canada)
            2. Computer companies 
            3. Universities
            
            Explanatory notes
            ===================
            Universe sits in a hierarchy between unit type and population, with unit type being most general and Population most specific. A universe is a set of entities defined by a more narrow specification than that of an underlying unit type. A population further narrows the specification to a specific time and geography.
            
            If the Universe consists of people, a number of factors may be used in defining membership in the Universe, such as age, sex, residence, income, veteran status, criminal convictions, etc. The universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. A universe may be described as "inclusive" or "exclusive". 
            
            Not to be confused with Population, which includes the specification of time and geography.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="UnitTypeXsdType">
        <xs:sequence>
          <xs:element name="isInclusive"
                      type="xs:boolean"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="Universe-isInclusive">
            <xs:annotation>
              <xs:documentation>Default value is True. The description statement of a universe is generally stated in inclusive terms such as "All persons with university degree". Occasionally a universe is defined by what it excludes, i.e., "All persons except those with university degree". In this case the value would be changed to False.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ValueAndConceptDescription"
              type="ValueAndConceptDescriptionXsdType"
              xml:id="ValueAndConceptDescription">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ValueAndConceptDescription -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Formal description of a set of values.  
            
            Examples
            ========
            
            1. The integers between 1 and 10, inclusive. The values of x satisfying the logicalExpression property: " (1 less than or equal to X less than or equalto 10) AND mod(x,10)=0" Also described with minimumValueInclusive = 1 and maximumValueInclusive = 10 (and datatype of integer).
            2. The upper case letters A through C and X described with the regularExpression "/[A-CX]/".
            3. A date-time described with the Unicode Locale Data Markup Language pattern yyyy.MM.dd G 'at' HH:mm:ss zzz.   
            
            Explanatory notes
            =================
            The value and concept description may be used to describe either a value domain or a conceptual domain. For a value domain, the value and concept description contains the details for a described" domain (as opposed to an enumerated domain). There are a number of properties which can be used for the description. The description could be just text such as: "an even number greater than zero", or a more formal logical expression like "x&gt;0 and mod(x,2)=0". A regular expression might be useful for describing a textual domain. It could also employ a format pattern from the Unicode Locale Data Markup Language (LDML: http://www.unicode.org/reports/tr35/tr35.html). Some conceptual domains might be described with just a narrative. Others, though, might be described in much the same way as a value domain depending on the specificity of the concept. In ISO 11404 a value domain may be described either through enumeration or description, or both. This class provides the facility for that description. It may be just a text description, but a description through a logical expression is machine actionable and might, for example, be rendered as an integrity constraint. If both text and a logical expression are provided the logical expression is to be taken as the canonical description. The logical expression could conform to an expression syntax like that of the Validation and Transformation Language (VTL: https://sdmx.org/?page_id=5096) or the Structured Data Transformation Language (SDTL: https://ddialliance.org/products/sdtl/1.0).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValueAndConceptDescriptionXsdType"
                  xml:id="ValueAndConceptDescriptionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Formal description of a set of values.  
            
            Examples
            ========
            
            1. The integers between 1 and 10, inclusive. The values of x satisfying the logicalExpression property: " (1 less than or equal to X less than or equalto 10) AND mod(x,10)=0" Also described with minimumValueInclusive = 1 and maximumValueInclusive = 10 (and datatype of integer).
            2. The upper case letters A through C and X described with the regularExpression "/[A-CX]/".
            3. A date-time described with the Unicode Locale Data Markup Language pattern yyyy.MM.dd G 'at' HH:mm:ss zzz.   
            
            Explanatory notes
            =================
            The value and concept description may be used to describe either a value domain or a conceptual domain. For a value domain, the value and concept description contains the details for a described" domain (as opposed to an enumerated domain). There are a number of properties which can be used for the description. The description could be just text such as: "an even number greater than zero", or a more formal logical expression like "x&gt;0 and mod(x,2)=0". A regular expression might be useful for describing a textual domain. It could also employ a format pattern from the Unicode Locale Data Markup Language (LDML: http://www.unicode.org/reports/tr35/tr35.html). Some conceptual domains might be described with just a narrative. Others, though, might be described in much the same way as a value domain depending on the specificity of the concept. In ISO 11404 a value domain may be described either through enumeration or description, or both. This class provides the facility for that description. It may be just a text description, but a description through a logical expression is machine actionable and might, for example, be rendered as an integrity constraint. If both text and a logical expression are provided the logical expression is to be taken as the canonical description. The logical expression could conform to an expression syntax like that of the Validation and Transformation Language (VTL: https://sdmx.org/?page_id=5096) or the Structured Data Transformation Language (SDTL: https://ddialliance.org/products/sdtl/1.0).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="classificationLevel"
                  type="CategoryRelationCodeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-classificationLevel">
        <xs:annotation>
          <xs:documentation>Indicates the type of relationship, nominal, ordinal, interval, ratio, or continuous. Use where appropriate for the representation type.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-description">
        <xs:annotation>
          <xs:documentation>A formal description of the set of values in human-readable language.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="formatPattern"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-formatPattern">
        <xs:annotation>
          <xs:documentation>A pattern for a number as described in Unicode Locale Data Markup Language (LDML) (http://www.unicode.org/reports/tr35/tr35.html) Part 3: Numbers  (http://www.unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns) and Part 4. Dates (http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns) . Examples would be    #,##0.### to describe the pattern for a decimal number, or yyyy.MM.dd G 'at' HH:mm:ss zzz for a datetime pattern.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="logicalExpression"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-logicalExpression">
        <xs:annotation>
          <xs:documentation>A logical expression where the values of "x" making the expression true are the members of the set of valid values.  For example, "(all reals x such that  x > 0)" describes the real numbers greater than 0.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maximumValueExclusive"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-maximumValueExclusive">
        <xs:annotation>
          <xs:documentation>A string denoting the maximum possible value (excluding this value). From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.11.2: "maxExclusive: An atomic property that contains a single number or string that is the maximum valid value (exclusive). The value of this property becomes the maximum exclusive annotation for the described datatype. See Value Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maximumValueInclusive"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-maximumValueInclusive">
        <xs:annotation>
          <xs:documentation>A string denoting the maximum possible value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.11.2: "maximum: An atomic property that contains a single number or string that is the maximum valid value (inclusive); equivalent to maxInclusive. The value of this property becomes the maximum annotation for the described datatype. See Value Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minimumValueExclusive"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-minimumValueExclusive">
        <xs:annotation>
          <xs:documentation>A string denoting the minimum possible value (excluding this value). From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.11.2: "minExclusive: An atomic property that contains a single number or string that is the minimum valid value (exclusive). The value of this property becomes the minimum exclusive annotation for the described datatype. See Value Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minimumValueInclusive"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-minimumValueInclusive">
        <xs:annotation>
          <xs:documentation>A string denoting the minimum possible value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.11.2: "minimum: An atomic property that contains a single number or string that is the minimum valid value (inclusive); equivalent to minInclusive. The value of this property becomes the minimum annotation for the described datatype. See Value Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="regularExpression"
                  type="TypedStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueAndConceptDescription-regularExpression">
        <xs:annotation>
          <xs:documentation>A regular expression where strings matching the expression belong to the set of valid values. Use typeOfContent to specify the syntax of the regularExpression found in content.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ValueDomain"
              type="ValueDomainXsdType"
              xml:id="ValueDomain">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Representations::ValueDomain -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of permissible values for a variable (adapted from ISO/IEC 11179).  
            
            Examples 
            ========== 
            Age categories with a numeric code list; Age in years; Young, Middle-aged and Old.  
            
            Explanatory notes 
            =================== 
            The values can be described by enumeration or by an expression. Value domains can be either substantive/sentinel, or described/enumeration.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValueDomainXsdType"
                  xml:id="ValueDomainXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Set of permissible values for a variable (adapted from ISO/IEC 11179).  
            
            Examples 
            ========== 
            Age categories with a numeric code list; Age in years; Young, Middle-aged and Old.  
            
            Explanatory notes 
            =================== 
            The values can be described by enumeration or by an expression. Value domains can be either substantive/sentinel, or described/enumeration.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="catalogDetails"
                  type="CatalogDetailsXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueDomain-catalogDetails">
        <xs:annotation>
          <xs:documentation>Bundles the information useful for a data catalog entry. 
    
    Examples would be creator, contributor, title, copyright, embargo, and license information
    
    A set of information useful for attribution, data discovery, and access.
    This is information that is tied to the identity of the object. If this information changes the version of the associated object changes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ValueDomain-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueDomain-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recommendedDataType"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ValueDomain-recommendedDataType">
        <xs:annotation>
          <xs:documentation>The data types that are recommended for use with this domain.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ValueMapping"
              type="ValueMappingXsdType"
              xml:id="ValueMapping">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::ValueMapping -->
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Physical characteristics for the value of an instance variable stored in a data point as part of a physical segment layout.
            
            Examples 
            ========
            A variable "age" might be represented in a file as a string with a maximum length of 5 characters and a number pattern of ##0.0  
            
            Explanatory notes 
            =================
            An instance variable has details of value domain and data type, but will not have the final details of how a value is physically represented in a data file. A variable for height, for example, may be represented as a real number, but may be represented as a string in multiple ways. The decimal separator might be, for example a period or a comma. The string representing the value of a payment might be preceded by a currency symbol. The same numeric value might be written as "1,234,567" or "1.234567". A missing value might be written as ".", "NA", ".R" or as "R". The value mapping describes how the value of an instance variable is physically expressed. The properties of the value mapping as intended to be compatible with the W3C Metadata Vocabulary for Tabular Data (https://www.w3.org/TR/tabular-metadata/) as well as common programming languages and statistical packages. The 'format' property, for example, can draw from an external controlled vocabulary such as the set of formats for Stata, SPSS, or SAS.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValueMappingXsdType"
                  xml:id="ValueMappingXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ==========
            Physical characteristics for the value of an instance variable stored in a data point as part of a physical segment layout.
            
            Examples 
            ========
            A variable "age" might be represented in a file as a string with a maximum length of 5 characters and a number pattern of ##0.0  
            
            Explanatory notes 
            =================
            An instance variable has details of value domain and data type, but will not have the final details of how a value is physically represented in a data file. A variable for height, for example, may be represented as a real number, but may be represented as a string in multiple ways. The decimal separator might be, for example a period or a comma. The string representing the value of a payment might be preceded by a currency symbol. The same numeric value might be written as "1,234,567" or "1.234567". A missing value might be written as ".", "NA", ".R" or as "R". The value mapping describes how the value of an instance variable is physically expressed. The properties of the value mapping as intended to be compatible with the W3C Metadata Vocabulary for Tabular Data (https://www.w3.org/TR/tabular-metadata/) as well as common programming languages and statistical packages. The 'format' property, for example, can draw from an external controlled vocabulary such as the set of formats for Stata, SPSS, or SAS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="decimalPositions"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-decimalPositions">
        <xs:annotation>
          <xs:documentation>The number of decimal positions expressed as an integer. Used when the decimal position is implied (no decimal separator is present) See DDI 3.2 ManagedNumericRepresentation_decimalPositions</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="defaultDecimalSeparator"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-defaultDecimalSeparator">
        <xs:annotation>
          <xs:documentation>Default value is "." (period). The character separating the integer part from the fractional part of a decimal or real number. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 6.4.2: "decimalChar: A string whose value is used to represent a decimal point within the number. If the supplied value is not a string, implementations MUST issue a warning and proceed as if the property had not been specified."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="defaultDigitGroupSeparator"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-defaultDigitGroupSeparator">
        <xs:annotation>
          <xs:documentation>Default value is null. A character separating groups of digits (for readability). In W3C part of the datatype format From https://www.w3.org/TR/tabular-metadata/ tabular 6.4.2 groupChar: "A string whose value is used to group digits within the number. If the supplied value is not a string, implementations MUST issue a warning and proceed as if the property had not been specified."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="defaultValue"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ValueMapping-defaultValue">
        <xs:annotation>
          <xs:documentation>A default string indicating the value to substitute for an empty string. From https://www.w3.org/TR/tabular-metadata/ Inherited 5.7  "default - An atomic property holding a single string that is used to create a default value for the cell in cases where the original string value is an empty string. See Parsing Cells in [tabular-data-model] for more details. If not specified, the default for the default property is the empty string, "". The value of this property becomes the default annotation for the described column."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="format"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-format">
        <xs:annotation>
          <xs:documentation>This defines the format of the physical representation of the value. From https://www.w3.org/TR/tabular-metadata/ 5.11.2 format: "An atomic property that contains either a single string or an object that defines the format of a value of this type, used when parsing a string value as described in Parsing Cells in [tabular-data-model]. The value of this property becomes the format annotation for the described datatype." See https://www.w3.org/TR/tabular-metadata/ Tabular 6.4.2 "Formats for numeric datatypes" this may include decimalChar, groupChar, pattern "By default, numeric values must be in the formats defined in [xmlschema11-2]. It is not uncommon for numbers within tabular data to be formatted for human consumption, which may involve using commas for decimal points, grouping digits in the number using commas, or adding percent signs to the number." See https://www.w3.org/TR/tabular-metadata/ Tabular 6.4. Formats for Booleans " Boolean values may be represented in many ways aside from the standard 1 and 0 or true and false." See https://www.w3.org/TR/tabular-metadata/ 6.4.4. Formats for dates and times "By default, dates and times are assumed to be in the format defined in [xmlschema11-2]. However dates and times are commonly represented in tabular data in other formats." See https://www.w3.org/TR/tabular-metadata/ 6.4.5 Formats for durations "Durations MUST be formatted and interpreted as defined in [xmlschema11-2], using the [ISO8601] format -?PnYnMnDTnHnMnS. For example, the duration P1Y1D is used for a year and a day; the duration PT2H30M for 2 hours and 30 minutes." See https://www.w3.org/TR/tabular-metadata/ 6.4.6 Formats for other types "If the datatype base is not numeric, boolean, a date/time type, or a duration type, the datatype format annotation provides a regular expression for the string values, with syntax and processing defined by [ECMASCRIPT]. If the supplied value is not a valid regular expression, implementations MUST issue a warning and proceed as if no format had been provided." From DDI3.2 ManagedNumericRepresentation@format "A format for number expressed as a string." From DDI3.2 ManagedDateTimeRepresentation_DateFieldFormat "Describes the format of the date field, in formats such as YYYY/MM or MM-DD-YY, etc. If this element is omitted, then the format is assumed to be the XML Schema format corresponding to the type attribute value."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isRequired"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-isRequired">
        <xs:annotation>
          <xs:documentation>If the value of this property is True indicates that a value is required for the referenced instance variable. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.7 Inherited Properties: "required: A boolean atomic property taking a single value which indicates whether the cell value can be null. See Parsing Cells in [tabular-data-model] for more details. The default is false, which means cells can have null values. The value of this property becomes the required annotation for the described column."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="length"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-length">
        <xs:annotation>
          <xs:documentation>The length in characters of the physical representation of the value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/)  5.11.2 "length: A numeric atomic property that contains a single integer that is the exact length of the value. The value of this property becomes the length annotation for the described datatype. See Length Constraints in [tabular-data-model] for details." Corresponds to DDI2.5 var/location/width and DDI 3.2 PhysicalLocation/Width.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maximumLength"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-maximumLength">
        <xs:annotation>
          <xs:documentation>The largest possible value of the length of the physical representation of the value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 5.11.2: "maxLength: A numeric atomic property that contains a single integer that is the maximum length of the value. The value of this property becomes the maximum length annotation for the described datatype. See Length Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minimumLength"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-minimumLength">
        <xs:annotation>
          <xs:documentation>The smallest possible value for the length of the physical representation of the value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/)  5.11.2: "minLength: An atomic property that contains a single integer that is the minimum length of the value. The value of this property becomes the minimum length annotation for the described datatype. See Length Constraints in [tabular-data-model] for details."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nullSequence"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-nullSequence">
        <xs:annotation>
          <xs:documentation>A string indicating a null value. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) 4.3: "null: the string or strings which cause the value of cells having string value matching any of these values to be null." From the same source, Inherited 5.7: "null: An atomic property giving the string or strings used for null values within the data. If the string value of the cell is equal to any one of these values, the cell value is null. See Parsing Cells in [tabular-data-model] for more details. If not specified, the default for the null property is the empty string ''. The value of this property becomes the null annotation for the described column."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="numberPattern"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-numberPattern">
        <xs:annotation>
          <xs:documentation>A pattern description of the format of a numeric value. In W3C part of the datatype format From https://www.w3.org/TR/tabular-metadata/ tabular 6.4.2 pattern: "A number format pattern as defined in [UAX35] http://www.unicode.org/reports/tr35/tr35-31/tr35-numbers.html#Number_Format_Patterns. Implementations MUST recognise number format patterns containing the symbols 0, #, the specified decimalChar (or "." if unspecified), the specified groupChar (or "," if unspecified), E, +, % and ‰. Implementations MAY additionally recognise number format patterns containing other special pattern characters defined in [UAX35]. If the supplied value is not a string, or if it contains an invalid number format pattern or uses special pattern characters that the implementation does not recognise, implementations MUST issue a warning and proceed as if the property had not been specified. If the datatype format annotation is a single string, this is interpreted in the same way as if it were an object with a pattern property whose value is that string. If the groupChar is specified, but no pattern is supplied, when parsing the string value of a cell against this format specification, implementations MUST recognise and parse numbers that consist of: an optional + or - sign, …  Implementations MAY also recognise numeric values that are in any of the standard-decimal, standard-percent or standard-scientific formats listed in the Unicode Common Locale Data Repository. …"</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="physicalDataType"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-physicalDataType">
        <xs:annotation>
          <xs:documentation>The base datatype of the physical representation. An integer InstanceVariable might, for example, be stored as a floating point number. From the W3C Recommendation "Metadata Vocabulary for Tabular Data" (https://www.w3.org/TR/tabular-metadata/) Inherited 5.7: "datatype: An atomic property that contains either a single string that is the main datatype of the values of the cell or a datatype description object. If the value of this property is a string, it MUST be the name of one of the built-in datatypes defined in section 5.11.1 Built-in Datatypes and this value is normalized to an object whose base property is the original string value. If it is an object then it describes a more specialized datatype. If a cell contains a sequence (i.e. the separator property is specified and not null) then this property specifies the datatype of each value within that sequence. See 5.11 Datatypes and Parsing Cells in [tabular-data-model] for more details.  The normalized value of this property becomes the datatype annotation for the described column."</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="scale"
                  type="xs:integer"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping-scale">
        <xs:annotation>
          <xs:documentation>The scale of the number expressed as an integer. A multiplier to be used in combination with the value to determine the measurement. (E.g., a number expressed in 100's with a value of 5 and a scale of 100 would be 500).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValueMapping_formats_DataPoint"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ValueMapping_formats_DataPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ValueMapping_formats_DataPoint-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="ValueMapping_formats_DataPoint-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="DataPoint"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ValueMapping_uses_PhysicalSegmentLocation"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMapping_uses_PhysicalSegmentLocation">
        <xs:annotation>
          <xs:documentation>Uses a physical segment location to describe where in the physical record a segment representing the data point is. This could be, for example, described as a start position and end position value for characters in a text record via the segment by text extension of physical segment location.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ValueMapping_uses_PhysicalSegmentLocation-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ValueMapping_uses_PhysicalSegmentLocation-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="PhysicalSegmentLocation"/>
                      <xs:enumeration value="SegmentByText"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ValueMappingPosition"
              type="ValueMappingPositionXsdType"
              xml:id="ValueMappingPosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::ValueMappingPosition -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Denotes the position of a value mapping in a sequence.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValueMappingPositionXsdType"
                  xml:id="ValueMappingPositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Denotes the position of a value mapping in a sequence.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMappingPosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ValueMappingPosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValueMappingPosition_indexes_ValueMapping"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ValueMappingPosition_indexes_ValueMapping">
        <xs:annotation>
          <xs:documentation>Assigns a position to a value mapping within a physical segment.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ValueMappingPosition_indexes_ValueMapping-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ValueMappingPosition_indexes_ValueMapping-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMapping"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ValueMappingRelationship"
              type="ValueMappingRelationshipXsdType"
              xml:id="ValueMappingRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::FormatDescription::ValueMappingRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationships among data points in a physical layout.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValueMappingRelationshipXsdType"
                  xml:id="ValueMappingRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationships among data points in a physical layout.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMappingRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ValueMappingRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValueMappingRelationship_hasTarget_ValueMapping"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ValueMappingRelationship_hasTarget_ValueMapping">
        <xs:annotation>
          <xs:documentation>Specialization of target to variable mapping. Restricts cardinality.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ValueMappingRelationship_hasTarget_ValueMapping-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ValueMappingRelationship_hasTarget_ValueMapping-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMapping"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ValueMappingRelationship_hasSource_ValueMapping"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ValueMappingRelationship_hasSource_ValueMapping">
        <xs:annotation>
          <xs:documentation>Specialization of source to variable mapping.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="ValueMappingRelationship_hasSource_ValueMapping-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="ValueMappingRelationship_hasSource_ValueMapping-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ValueMapping"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VariableCollection"
              type="VariableCollectionXsdType"
              xml:id="VariableCollection">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::VariableCollection -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Group of any type of variable within the variable cascade (conceptual, represented, instance).
            
            Examples
            ========
            1. Variables within a specific section of a study
            2. Variables related to a specific subject or keyword
            3. Variables at a specified level of development or review
            
            Explanatory notes
            ================= 
            A simple ordered or unordered list of variables can be described via a set of variable position parameters. An optional variable structure can describe a more complex structure for the collection. We might, for example, use the variable structure to group variables by content within a single collection of data or a wave of on-going data collection. For the purposes of management, conceptualization or anything other than organizing a logical record or physical layout.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariableCollectionXsdType"
                  xml:id="VariableCollectionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Group of any type of variable within the variable cascade (conceptual, represented, instance).
            
            Examples
            ========
            1. Variables within a specific section of a study
            2. Variables related to a specific subject or keyword
            3. Variables at a specified level of development or review
            
            Explanatory notes
            ================= 
            A simple ordered or unordered list of variables can be described via a set of variable position parameters. An optional variable structure can describe a more complex structure for the collection. We might, for example, use the variable structure to group variables by content within a single collection of data or a wave of on-going data collection. For the purposes of management, conceptualization or anything other than organizing a logical record or physical layout.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="allowsDuplicates"
                  type="xs:boolean"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="VariableCollection-allowsDuplicates">
        <xs:annotation>
          <xs:documentation>If value is False, the members are unique within the collection - if True, there may be duplicates. (Note that a mathematical “bag” permits duplicates and is unordered - a “set” does not have duplicates and may be ordered.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="displayLabel"
                  type="LabelForDisplayXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableCollection-displayLabel">
        <xs:annotation>
          <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="groupingSemantic"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableCollection-groupingSemantic">
        <xs:annotation>
          <xs:documentation>A semantic term defining the factor used for defining this group.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableCollection-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableCollection-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableCollection-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="usage"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableCollection-usage">
        <xs:annotation>
          <xs:documentation>Explanation of the ways in which the object is employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VariableCollection_isDefinedBy_Concept"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableCollection_isDefinedBy_Concept">
        <xs:annotation>
          <xs:documentation>The conceptual basis for the collection of members.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableCollection_isDefinedBy_Concept-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariableCollection_isDefinedBy_Concept-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="Category"/>
                      <xs:enumeration value="Concept"/>
                      <xs:enumeration value="ConceptualValue"/>
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="DimensionalKeyDefinitionMember"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="KeyDefinitionMember"/>
                      <xs:enumeration value="Population"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                      <xs:enumeration value="UnitType"/>
                      <xs:enumeration value="Universe"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="VariableCollection_has_ConceptualVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableCollection_has_ConceptualVariable">
        <xs:annotation>
          <xs:documentation>Variable collection has zero to many conceptual variables.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableCollection_has_ConceptualVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariableCollection_has_ConceptualVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="VariableCollection_has_VariablePosition"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableCollection_has_VariablePosition">
        <xs:annotation>
          <xs:documentation>Variable collection has zero to many variable positions.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableCollection_has_VariablePosition-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="VariableCollection_has_VariablePosition-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="VariablePosition"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VariableDescriptorComponent"
              type="VariableDescriptorComponentXsdType"
              xml:id="VariableDescriptorComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::VariableDescriptorComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to provide codes for variable identification.   
            
            Examples 
            ========== 
            Consider {"income", "age"} to be the value domain of the represented variable working as a variable descriptor component.  The two codes, i.e. those designating "income" and "age", are descriptors used to identify which values in the variable value component correspond to income and which ones to age.   
            
            Explanatory notes 
            =================== 
            Whenever more than one variable appears in the same column, we need a mechanism to distinguish which values correspond to which variable. This mechanism is provided by the variable descriptor component, which contains the codes used to link the variables to their values.  This structure provides a flexible mechanism avoiding the need for a formal pointer.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariableDescriptorComponentXsdType"
                  xml:id="VariableDescriptorComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to provide codes for variable identification.   
            
            Examples 
            ========== 
            Consider {"income", "age"} to be the value domain of the represented variable working as a variable descriptor component.  The two codes, i.e. those designating "income" and "age", are descriptors used to identify which values in the variable value component correspond to income and which ones to age.   
            
            Explanatory notes 
            =================== 
            Whenever more than one variable appears in the same column, we need a mechanism to distinguish which values correspond to which variable. This mechanism is provided by the variable descriptor component, which contains the codes used to link the variables to their values.  This structure provides a flexible mechanism avoiding the need for a formal pointer.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        <xs:sequence>
          <xs:element name="VariableDescriptorComponent_isDefinedBy_DescriptorVariable"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="VariableDescriptorComponent_isDefinedBy_DescriptorVariable">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="VariableDescriptorComponent_isDefinedBy_DescriptorVariable-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="0"
                                maxOccurs="unbounded"
                                xml:id="VariableDescriptorComponent_isDefinedBy_DescriptorVariable-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="DescriptorVariable"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="VariableDescriptorComponent_refersTo_VariableValueComponent"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="VariableDescriptorComponent_refersTo_VariableValueComponent">
            <xs:annotation>
              <xs:documentation></xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:complexContent>
                <xs:restriction base="AssociationReferenceXsdType">
                  <xs:sequence>
                    <xs:element name="ddiReference"
                                type="InternationalRegistrationDataIdentifierXsdType"
                                minOccurs="0"
                                maxOccurs="1"
                                xml:id="VariableDescriptorComponent_refersTo_VariableValueComponent-ddiReference"/>
                    <xs:element name="validType"
                                minOccurs="1"
                                maxOccurs="1"
                                xml:id="VariableDescriptorComponent_refersTo_VariableValueComponent-validType">
                      <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                          <xs:enumeration value="VariableValueComponent"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:restriction>
              </xs:complexContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="VariablePosition"
              type="VariablePositionXsdType"
              xml:id="VariablePosition">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::VariablePosition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to a variable within a list.
            
            Explanatory notes
            ===================
            Variable position allows a list of variables to be ordered.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariablePositionXsdType"
                  xml:id="VariablePositionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Assigns a sequence number to a variable within a list.
            
            Explanatory notes
            ===================
            Variable position allows a list of variables to be ordered.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariablePosition-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="VariablePosition-value">
        <xs:annotation>
          <xs:documentation>Index value of the member in an ordered array.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VariablePosition_indexes_ConceptualVariable"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="VariablePosition_indexes_ConceptualVariable">
        <xs:annotation>
          <xs:documentation>Variable position indexes a conceptual variable.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariablePosition_indexes_ConceptualVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariablePosition_indexes_ConceptualVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VariableRelationship"
              type="VariableRelationshipXsdType"
              xml:id="VariableRelationship">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::VariableRelationship -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between any variables in the variable cascade (conceptual, represented, instance), based on an ordered relation.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariableRelationshipXsdType"
                  xml:id="VariableRelationshipXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relationship between any variables in the variable cascade (conceptual, represented, instance), based on an ordered relation.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableRelationship-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableRelationship-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VariableRelationship_hasTarget_ConceptualVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableRelationship_hasTarget_ConceptualVariable">
        <xs:annotation>
          <xs:documentation>Note that this can be realized as a collection to support tuples.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableRelationship_hasTarget_ConceptualVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariableRelationship_hasTarget_ConceptualVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="VariableRelationship_hasSource_ConceptualVariable"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableRelationship_hasSource_ConceptualVariable">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableRelationship_hasSource_ConceptualVariable-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariableRelationship_hasSource_ConceptualVariable-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="ConceptualVariable"/>
                      <xs:enumeration value="DescriptorVariable"/>
                      <xs:enumeration value="InstanceVariable"/>
                      <xs:enumeration value="ReferenceVariable"/>
                      <xs:enumeration value="RepresentedVariable"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VariableStructure"
              type="VariableStructureXsdType"
              xml:id="VariableStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Conceptual::VariableStructure -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relation structure for use with any set of variables in the variable cascade (conceptual, represented, instance).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariableStructureXsdType"
                  xml:id="VariableStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Relation structure for use with any set of variables in the variable cascade (conceptual, represented, instance).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifier"
                  type="IdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-identifier">
        <xs:annotation>
          <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="OrganizationNameXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableStructure-name">
        <xs:annotation>
          <xs:documentation>Human understandable name (liguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="purpose"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-purpose">
        <xs:annotation>
          <xs:documentation>Intent or reason for the object/the description of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-semantics">
        <xs:annotation>
          <xs:documentation>Specifies the semantics of the object in reference to a vocabulary, ontology, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specification"
                  type="StructureSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-specification">
        <xs:annotation>
          <xs:documentation>Provides information on reflexivity, transitivity, and symmetry of relationship using a descriptive term from an enumerated list. Use if all relations within this relation structure are of the same specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="topology"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-topology">
        <xs:annotation>
          <xs:documentation>Indicates the form of the associations among members of the collection. Specifies the way in which constituent parts are interrelated or arranged.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="totality"
                  type="StructureExtentXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure-totality">
        <xs:annotation>
          <xs:documentation>Indicates whether the related collections are comprehensive in terms of their coverage.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VariableStructure_structures_VariableCollection"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="VariableStructure_structures_VariableCollection">
        <xs:annotation>
          <xs:documentation>Variable structure structures zero to one variable collection.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableStructure_structures_VariableCollection-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="0"
                            maxOccurs="unbounded"
                            xml:id="VariableStructure_structures_VariableCollection-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="VariableCollection"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="VariableStructure_has_VariableRelationship"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="VariableStructure_has_VariableRelationship">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:restriction base="AssociationReferenceXsdType">
              <xs:sequence>
                <xs:element name="ddiReference"
                            type="InternationalRegistrationDataIdentifierXsdType"
                            minOccurs="0"
                            maxOccurs="1"
                            xml:id="VariableStructure_has_VariableRelationship-ddiReference"/>
                <xs:element name="validType"
                            minOccurs="1"
                            maxOccurs="1"
                            xml:id="VariableStructure_has_VariableRelationship-validType">
                  <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                      <xs:enumeration value="VariableRelationship"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:restriction>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VariableValueComponent"
              type="VariableValueComponentXsdType"
              xml:id="VariableValueComponent">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Components::VariableValueComponent -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to record values of multiple variables.   
            
            Examples 
            ========== 
            Consider two variables, i.e. income and age, with their values living together in different entries in the same column.  The values of those two variables are now in the value domain of a single variable (the one working as a variable value component).  Another column, based on a variable descriptor component, use codes for "income" and "age" to distinguish income values from age values.   
            
            Explanatory notes 
            =================== 
            A variable value component captures the values of multiple variables that have been transposed into a single column.  The variable descriptor component provides a mechanism to identify which of those values correspond to which variable.   This structure provides a flexible mechanism avoiding the need for a formal pointer.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="VariableValueComponentXsdType"
                  xml:id="VariableValueComponentXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Role given to a represented variable in the context of a data structure to record values of multiple variables.   
            
            Examples 
            ========== 
            Consider two variables, i.e. income and age, with their values living together in different entries in the same column.  The values of those two variables are now in the value domain of a single variable (the one working as a variable value component).  Another column, based on a variable descriptor component, use codes for "income" and "age" to distinguish income values from age values.   
            
            Explanatory notes 
            =================== 
            A variable value component captures the values of multiple variables that have been transposed into a single column.  The variable descriptor component provides a mechanism to identify which of those values correspond to which variable.   This structure provides a flexible mechanism avoiding the need for a formal pointer.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureComponentXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="WideDataSet"
              type="WideDataSetXsdType"
              xml:id="WideDataSet">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Wide::WideDataSet -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of wide data. It is structured by a wide data structure.
            
            Examples
            ==========
            A unit dataset where each row corresponds to a set of data points capturing different characteristics of a unit.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WideDataSetXsdType"
                  xml:id="WideDataSetXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Organized collection of wide data. It is structured by a wide data structure.
            
            Examples
            ==========
            A unit dataset where each row corresponds to a set of data points capturing different characteristics of a unit.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataSetXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="WideDataStructure"
              type="WideDataStructureXsdType"
              xml:id="WideDataStructure">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Wide::WideDataStructure -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Structure of a wide dataset (organized collection of wide data). It is described by identifier, measure and attribute components.
            
            Examples
            ==========
            The structure described by [Unit id, Income, Province] where Unit id identifies a statistical unit and Income and Province are two instance variables capturing characteristics.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WideDataStructureXsdType"
                  xml:id="WideDataStructureXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Structure of a wide dataset (organized collection of wide data). It is described by identifier, measure and attribute components.
            
            Examples
            ==========
            The structure described by [Unit id, Income, Province] where Unit id identifies a statistical unit and Income and Province are two instance variables capturing characteristics.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="DataStructureXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="WideKey"
              type="WideKeyXsdType"
              xml:id="WideKey">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Wide::WideKey -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Collection of data instances that uniquely identify a collection of data points in a wide dataset.
            
            Examples
            ==========
            Collection containing the single "1A2B3C" string in a wide dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WideKeyXsdType"
                  xml:id="WideKeyXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Collection of data instances that uniquely identify a collection of data points in a wide dataset.
            
            Examples
            ==========
            Collection containing the single "1A2B3C" string in a wide dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="WideKeyMember"
              type="WideKeyMemberXsdType"
              xml:id="WideKeyMember">
    <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::DataDescription::Wide::WideKeyMember -->
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance that is part of a wide key.   
            
            Examples 
            ========== 
            The "1A2B3C" string in a wide dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WideKeyMemberXsdType"
                  xml:id="WideKeyMemberXsdType">
    <xs:annotation>
      <xs:documentation>Definition 
            ============ 
            Single data instance that is part of a wide key.   
            
            Examples 
            ========== 
            The "1A2B3C" string in a wide dataset where rows are identified by postal code representations.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="KeyMemberXsdType">
        
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="CategoryRelationCodeXsdType"
                 xml:id="CategoryRelationCodeXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::CategoryRelationCode -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Indicates the type of relationship, nominal, ordinal, interval, ratio, or continuous. Use where appropriate for the representation type.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Continuous">
        <xs:annotation>
          <xs:documentation>May be used to identify both interval and ratio classification levels, when more precise information is not available.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Interval">
        <xs:annotation>
          <xs:documentation>The categories in the domain are in rank order and have a consistent interval between each category so that differences between arbitrary pairs of measurements can be meaningfully compared.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Nominal">
        <xs:annotation>
          <xs:documentation>A relationship of less than, or greater than, cannot be established among the included categories. This type of relationship is also called categorical or discrete.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Ordinal">
        <xs:annotation>
          <xs:documentation>The categories in the domain have a rank order.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Ratio">
        <xs:annotation>
          <xs:documentation>The categories have all the features of interval measurement and also have meaningful ratios between arbitrary pairs of numbers.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ComparisonOperatorXsdType"
                 xml:id="ComparisonOperatorXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::ComparisonOperator -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Defines the relationship between values in key/value pair.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Equal">
        <xs:annotation>
          <xs:documentation>The value the key's in the source and target must be equal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GreaterThan">
        <xs:annotation>
          <xs:documentation>The value the key in the source must be greater than the key in the target.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GreaterThanOrEqualTo">
        <xs:annotation>
          <xs:documentation>The value the key in the source must be greater than or equal to the key in the target.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LessThan">
        <xs:annotation>
          <xs:documentation>The value the key in the source must be less than the key in the target.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LessThanOrEqualTo">
        <xs:annotation>
          <xs:documentation>The value the key in the source must be less than or equal to the key in the target.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NotEqual">
        <xs:annotation>
          <xs:documentation>The value the key's in the source and target must be unequal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ComputationBaseListXsdType"
                 xml:id="ComputationBaseListXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::ComputationBaseList -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Defines the cases included in determining the statistic.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="MissingOnly">
        <xs:annotation>
          <xs:documentation>Only missing (invalid) cases included in the calculation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Total">
        <xs:annotation>
          <xs:documentation>All cases, both valid and missing (invalid).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ValidOnly">
        <xs:annotation>
          <xs:documentation>Only valid values, missing (invalid) are not included in the calculation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ControlConstructXsdType"
                 xml:id="ControlConstructXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::ControlConstruct -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Type of control construct used by the conditional control logic related to an activity.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Else">
        <xs:annotation>
          <xs:documentation>Describes an Else type of control construct.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IfThen">
        <xs:annotation>
          <xs:documentation>Describes an IfThen type of control construct.  If the stated condition is met, the Then clause is triggered.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Loop">
        <xs:annotation>
          <xs:documentation>Describes a Loop type of control construct (loops until a limiting condition is met).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RepeatUntil">
        <xs:annotation>
          <xs:documentation>Describes an RepeatUntil type of control construct (to be repeated until a specified condition is met).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RepeatWhile">
        <xs:annotation>
          <xs:documentation>Describes a RepeatWhile type of control construct (to be repeated while a specified condition is met).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MatchingCriterionXsdType"
                 xml:id="MatchingCriterionXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::MatchingCriterion -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Supports mapping comparative relationships by type of match. Not used for causative, sequential, temporal or special relations.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="CloseMatch">
        <xs:annotation>
          <xs:documentation>The identified objects (source and target) are not exact but are similar. Equivalent to SKOS closeMatch - see the W3C Recommendation "SKOS Simple Knowledge Organization System Reference" - 10. Mapping Properties (https://www.w3.org/TR/skos-reference/#L4186).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Disjoint">
        <xs:annotation>
          <xs:documentation>The identified objects are do not have a close or exact match. Equivalent to disjoint objects in SKOS  - see the W3C Recommendation "SKOS Simple Knowledge Organization System Reference" (https://www.w3.org/TR/skos-reference/#L4186).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ExactMatch">
        <xs:annotation>
          <xs:documentation>The identified objects (source and target) are identical. Equivalent to SKOS exactMatch - see the W3C Recommendation "SKOS Simple Knowledge Organization System Reference" - 10. Mapping Properties (https://www.w3.org/TR/skos-reference/#L4186).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MemberRelationshipScopeXsdType"
                 xml:id="MemberRelationshipScopeXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::MemberRelationshipScope -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A vocabulary for the specification of how much of a collection is referenced. All, some or none of the collection may be indicated.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="All">
        <xs:annotation>
          <xs:documentation>Every member of the collection is indicated.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="None">
        <xs:annotation>
          <xs:documentation>This indicates that no member of the collection is indicated, e.g. None of the relationships are symmetric.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Some">
        <xs:annotation>
          <xs:documentation>Some, but not necessarily all of the members of the collection are indicated.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PointFormatXsdType"
                 xml:id="PointFormatXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::PointFormat -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides an enumerated list of valid point format types for capturing a coordinate point.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="DecimalDegree">
        <xs:annotation>
          <xs:documentation>Value is expressed as a decimal degree.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DecimalMinutes">
        <xs:annotation>
          <xs:documentation>Value is expressed as decimal minutes.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DegreesMinutesSeconds">
        <xs:annotation>
          <xs:documentation>Value is expressed as degrees-minutes-seconds.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Feet">
        <xs:annotation>
          <xs:documentation>Value is expressed in feet.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Meters">
        <xs:annotation>
          <xs:documentation>Value is expressed in meters.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SchedulingStrategyXsdType"
                 xml:id="SchedulingStrategyXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::SchedulingStrategy -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Enumeration that consists of forward chaining and backward chaining. Rule based scheduling is guided by its scheduling strategy.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="BackwardChaining">
        <xs:annotation>
          <xs:documentation>Backward chaining is a strategy of first identifying the goal/completion date and working backward in time from there to achieve it.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ForwardChaining">
        <xs:annotation>
          <xs:documentation>Forward chaining is a strategy of planning to complete each step as soon as possible to reach the goal at the earliest date.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SexSpecificationXsdType"
                 xml:id="SexSpecificationXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::SexSpecification -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Sex specification is limited to the purpose of determining the proper pronoun to use in addressing the individual. This may be based on conventional usage or personal preference.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Feminine">
        <xs:annotation>
          <xs:documentation>Use the feminine pronoun (equivalent of English she, her, her's).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GenderNeutral">
        <xs:annotation>
          <xs:documentation>Use a gender neutral or non-specified pronoun. (equivalent of English they, them, theirs).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Masculine">
        <xs:annotation>
          <xs:documentation>Use the masculine pronoun (equivalent of English he, him, his).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StructureExtentXsdType"
                 xml:id="StructureExtentXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::StructureExtent -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Type of relation in terms of totality with respect to an associated collection.  The totality type is given by the controlled vocabulary {total, partial}.
            
            Examples
            ==========
            A binary relation R on a collection C is total if all members of C are related to each other in R. The relation is partial otherwise.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Partial">
        <xs:annotation>
          <xs:documentation>Some members of a collection C are not related to each other.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Total">
        <xs:annotation>
          <xs:documentation>All members of a collection C are related to each other.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TableDirectionValuesXsdType"
                 xml:id="TableDirectionValuesXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::TableDirectionValues -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Indicates whether the tables in the group should be displayed with the first column on the right, on the left, or based on the first character in the table that has a specific direction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Auto">
        <xs:annotation>
          <xs:documentation>Display table based on the first character in the table that has a specific direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Ltr">
        <xs:annotation>
          <xs:documentation>Display table with first column on the left.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Rtl">
        <xs:annotation>
          <xs:documentation>Display table with first column on the right.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TemporalOperatorXsdType"
                 xml:id="TemporalOperatorXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::TemporalOperator -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Set of control flow operators where the continuation of the execution flow depends on the finalization of one or more preceding activities.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="AndJoin">
        <xs:annotation>
          <xs:documentation>Given three activities A, B and C, if ANDJoin(A, B) -&gt; C, then C is executed after both A and B finish executing. ANDJoin is sometimes referred to as synchronization.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AndSplit">
        <xs:annotation>
          <xs:documentation>Given three activities A, B and C, if ANDSplit(A) -&gt; (B, C), then both B and C are executed after A finishes executing.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="XorJoin">
        <xs:annotation>
          <xs:documentation>Given three activities A, B and C, if XORJoin(A, B) -&gt; C, then C is executed after either A or B finishes executing. XORJoin is sometimes referred to as simple merge.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="XorSplit">
        <xs:annotation>
          <xs:documentation>Given three activities A, B and C, if XORSplit(A) -&gt; (B, C), then either B or C is executed, not both, after A finishes executing. XORSplit is sometimes referred to as exclusive choice.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TemporalRelationXsdType"
                 xml:id="TemporalRelationXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::TemporalRelation -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Set of thirteen Allen's interval relations defined as Contains, Finishes, Meets, Overlaps, Precedes, Starts (and their converses), plus Equals. These are jointly exhaustive and pairwise disjoint binary relations representing temporal relationships between pairs of time intervals.
            
            Explanatory notes
            =================
            Here are the relations in Allen's interval algebra:
            
            - a precedes b (p) and b is preceded by a (P)
            - a meets b (m) and b is met by a (M)
            - a overlaps b (o) and b is overlapped by a (O)
            - a is finished by b (F) and b finishes a (f)
            - a contains B (D) and b is during a (d)
            - a starts b (s) and b is started by a (S)
            - a and b equal (e) each other</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Contains">
        <xs:annotation>
          <xs:documentation>A contains interval relation. Representation of the contains relation in Allen's interval algebra. We say that an interval A contains another interval B if and only if A begins before B but finishes after it. More precisely, A.start &lt; B.start &lt; B.end &lt; A.end. Instead of saying that A contains B we can also say that B is during A (converse). An asymmetric relationship: anti-reflexive, anti-symmetric, transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Equals">
        <xs:annotation>
          <xs:documentation>An equals interval relation. Representation of the equals relation in Allen's interval algebra. We say that an interval A equals another interval B if and only if they both begin and finish at the same time. More precisely, A.start = B.start &lt; A.end = B.end. Instead of saying that A equals B we can also say the B equals A (reflexive). An equivalence symmetric relationship: reflexive, symmetric, transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Finishes">
        <xs:annotation>
          <xs:documentation>A finishes interval relation. Representation of the finishes relation in Allen's interval algebra. We say that an interval A finishes another interval B if and only if A begins after B but both finish at the same time. More precisely, B.start &lt; A.start &lt; B.end = A.end. Instead of saying that A finishes B we can also say that B is finished by A (converse). An asymmetric relationship: anti-reflexive, anti-symmetric, transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Meets">
        <xs:annotation>
          <xs:documentation>A meets interval relation. Representation of the meets relation in Allen's interval algebra. We say that an interval A meets another interval B if and only if A finishes when B begins. More precisely, A.ends = B.start. Instead of saying that A meets B we can also say that B is met by A (converse). An immediate-precedence relationship: anti-reflexive, anti-symmetric, anti-transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Overlaps">
        <xs:annotation>
          <xs:documentation>A overlaps interval relation. Representation of the overlaps relation in Allen's interval algebra. We say that an interval A overlaps another interval B if and only if A begins before B but finishes during B. More precisely, A.start &lt; B.start &lt; A.end &lt; B.end. Instead of saying that A overlaps B we can also say that B is overlapped by A (converse). An acyclic precedence relationship: anti-reflexive, anti-symmetric, neither.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Precedes">
        <xs:annotation>
          <xs:documentation>A precedes interval relation. Representation of the precedes relation in Allen's interval algebra. We say that an interval A precedes another interval B if and only if A finishes before B begins. More precisely, A.end &lt; B.start. Instead of saying that A precedes B we can also say that B is preceded by A (converse). An asymmetric relationship: anti-reflexive, anti-symmetric, transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Starts">
        <xs:annotation>
          <xs:documentation>A starts interval relation. Representation of the starts relation in Allen's interval algebra. We say that an interval A starts another interval B if and only if they both start at the same time but A finishes first. More precisely, A.start = B.start &lt; A.end. An asymmetric relationship: anti-reflexive, anti-symmetric, transitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TextDirectionValuesXsdType"
                 xml:id="TextDirectionValuesXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::TextDirectionValues -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Indicates whether the text within cells should be displayed as left-to-right text (ltr), as right-to-left text (rtl), according to the content of the cell (auto) or in the direction inherited from the table direction annotation of the table.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Auto">
        <xs:annotation>
          <xs:documentation>Text in the cells should be according to the content of the cell (auto).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Inherit">
        <xs:annotation>
          <xs:documentation>Text in the cells should inherit its direction from the table direction annotation of the table.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Ltr">
        <xs:annotation>
          <xs:documentation>Text in cells should be displayed left-to-right (ltr).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Rtl">
        <xs:annotation>
          <xs:documentation>Text in cells should be displayed right-to-left (rtl).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TrimValuesXsdType"
                 xml:id="TrimValuesXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::TrimValues -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specifies which spaces to remove from a data value (start, end, both, neither).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Both">
        <xs:annotation>
          <xs:documentation>Trim whitespace characters from both the start and the end of the value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="End">
        <xs:annotation>
          <xs:documentation>Trim whitespace characters from the end of the value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Neither">
        <xs:annotation>
          <xs:documentation>Trim whitespace characters from neither the start nor the end of the value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Start">
        <xs:annotation>
          <xs:documentation>Trim whitespce characters from the start of the value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="WhiteSpaceRuleXsdType"
                 xml:id="WhiteSpaceRuleXsdType">
    <!-- based on the UML enumeration DDICDIModels::DDICDILibrary::DataTypes::Enumerations::WhiteSpaceRule -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            WhiteSpace constrains the value space of types derived from string.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="Collapse">
        <xs:annotation>
          <xs:documentation>After the processing implied by the replace, contiguous sequences of Unicode hexadecimal #x20's are collapsed to a single #x20, and any #x20 at the start or end of the string is then removed.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Preserve">
        <xs:annotation>
          <xs:documentation>No normalization is done, the value is not changed (this is the behavior required by XML for element content).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Replace">
        <xs:annotation>
          <xs:documentation>All occurrences of Unicode hexadecimal #x9 (tab), #xA (line feed) and #xD (carriage return) are replaced with #x20 (space).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="AccessInformation"
              type="AccessInformationXsdType"
              xml:id="AccessInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::AccessInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of information important for understanding access conditions. Examples include license, embargo details.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AccessInformationXsdType"
                  xml:id="AccessInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of information important for understanding access conditions. Examples include license, embargo details.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="copyright"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessInformation-copyright">
        <xs:annotation>
          <xs:documentation>The copyright statement.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="embargo"
                  type="EmbargoInformationXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessInformation-embargo">
        <xs:annotation>
          <xs:documentation>Specific information about any relevant embargo</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="license"
                  type="LicenseInformationXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessInformation-license">
        <xs:annotation>
          <xs:documentation>Information about any relevant license</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="rights"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessInformation-rights">
        <xs:annotation>
          <xs:documentation>Information about rights held in and over the resource. Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AccessLocation"
              type="AccessLocationXsdType"
              xml:id="AccessLocation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::AccessLocation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of access information for a machine including URI, mime type, and physical location.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AccessLocationXsdType"
                  xml:id="AccessLocationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of access information for a machine including URI, mime type, and physical location.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="mimeType"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AccessLocation-mimeType">
        <xs:annotation>
          <xs:documentation>The MIME type. MIME stands for "Multipurpose Internet Mail Extensions. It's a way of identifying files on the Internet according to their nature and format. Supports the use of an controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="physicalLocation"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessLocation-physicalLocation">
        <xs:annotation>
          <xs:documentation>The physical location of the machine.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:anyURI"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AccessLocation-uri">
        <xs:annotation>
          <xs:documentation>A Uniform Resource Identifier (URI) is a string of characters that unambiguously identifies a particular resource. A URI is normally expressed as a URL.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Address"
              type="AddressXsdType"
              xml:id="Address">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Address -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Location address identifying each part of the address as separate elements, identifying the type of address, the level of privacy associated with the release of the address, and a flag to identify the preferred address for contact.
            
            Examples
            ========
            For example:
            
            1. OFFICE, ABS HOUSE, 45 Benjamin Way, Belconnen, Canberra, ACT, 2617, AU
            2. OFFICE, Institute of Education, 20 Bedford Way, London, WC1H 0AL, UK</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AddressXsdType"
                  xml:id="AddressXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Location address identifying each part of the address as separate elements, identifying the type of address, the level of privacy associated with the release of the address, and a flag to identify the preferred address for contact.
            
            Examples
            ========
            For example:
            
            1. OFFICE, ABS HOUSE, 45 Benjamin Way, Belconnen, Canberra, ACT, 2617, AU
            2. OFFICE, Institute of Education, 20 Bedford Way, London, WC1H 0AL, UK</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="cityPlaceLocal"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-cityPlaceLocal">
        <xs:annotation>
          <xs:documentation>City, place, or local area used as part of an address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="countryCode"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-countryCode">
        <xs:annotation>
          <xs:documentation>Country of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-effectiveDates">
        <xs:annotation>
          <xs:documentation>Clarifies when the identification information is accurate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="geographicPoint"
                  type="SpatialPointXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-geographicPoint">
        <xs:annotation>
          <xs:documentation>Geographic coordinates corresponding to the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-isPreferred">
        <xs:annotation>
          <xs:documentation>Set to True if this is the preferred location for contacting the organization or individual.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="line"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Address-line">
        <xs:annotation>
          <xs:documentation>Number and street including office or suite number. May use multiple lines.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="locationName"
                  type="ObjectNameXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-locationName">
        <xs:annotation>
          <xs:documentation>Name of the location if applicable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="postalCode"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-postalCode">
        <xs:annotation>
          <xs:documentation>Postal or ZIP Code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-privacy">
        <xs:annotation>
          <xs:documentation>Specify the level privacy for the address as public, restricted, or private. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="regionalCoverage"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-regionalCoverage">
        <xs:annotation>
          <xs:documentation>The region covered by the agent at this address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="stateProvince"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-stateProvince">
        <xs:annotation>
          <xs:documentation>A major sub-national division such as a state or province used to identify a major region within an address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeZone"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-timeZone">
        <xs:annotation>
          <xs:documentation>Time zone of the location expressed as code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfAddress"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-typeOfAddress">
        <xs:annotation>
          <xs:documentation>Indicates address type (i.e. home, office, mailing, etc.).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfLocation"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Address-typeOfLocation">
        <xs:annotation>
          <xs:documentation>The type or purpose of the location (i.e. regional office, distribution center, home).</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AgentInRole"
              type="AgentInRoleXsdType"
              xml:id="AgentInRole">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::AgentInRole -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A reference to an agent (organization, individual, or machine) including a role for that agent in the context of this specific reference.
            
            Examples
            ========
            Reference to John Doe as the lead author.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AgentInRoleXsdType"
                  xml:id="AgentInRoleXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A reference to an agent (organization, individual, or machine) including a role for that agent in the context of this specific reference.
            
            Examples
            ========
            Reference to John Doe as the lead author.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="agentName"
                  type="BibliographicNameXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentInRole-agentName">
        <xs:annotation>
          <xs:documentation>Full name of the contributor. Language equivalents should be expressed within the international string structure.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reference"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="AgentInRole-reference">
        <xs:annotation>
          <xs:documentation>Reference to an agent described in DDI or some other platform.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="role"
                  type="PairedControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="AgentInRole-role">
        <xs:annotation>
          <xs:documentation>Role of the of the agent within the context of the parent property name.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="BibliographicName"
              type="BibliographicNameXsdType"
              xml:id="BibliographicName">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::BibliographicName -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Personal names should be listed surname or family name first, followed by forename or given name. When in doubt, give the name as it appears, and do not invert. In the case of organizations where there is clearly a hierarchy present, list the parts of the hierarchy from largest to smallest, separated by full stops and a space. If it is not clear whether there is a hierarchy present, or unclear which is the larger or smaller portion of the body, give the name as it appears in the item. The name may be provided in one or more languages.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="BibliographicNameXsdType"
                  xml:id="BibliographicNameXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Personal names should be listed surname or family name first, followed by forename or given name. When in doubt, give the name as it appears, and do not invert. In the case of organizations where there is clearly a hierarchy present, list the parts of the hierarchy from largest to smallest, separated by full stops and a space. If it is not clear whether there is a hierarchy present, or unclear which is the larger or smaller portion of the body, give the name as it appears in the item. The name may be provided in one or more languages.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InternationalStringXsdType">
        <xs:sequence>
          <xs:element name="affiliation"
                      type="xs:string"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="BibliographicName-affiliation">
            <xs:annotation>
              <xs:documentation>The affiliation of this person to an organization. This is generally an organization or sub-organization name and should be related to the specific role within which the individual is being listed.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="CatalogDetails"
              type="CatalogDetailsXsdType"
              xml:id="CatalogDetails">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::CatalogDetails -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of information useful for attribution, data discovery, and access.
            
            Examples
            ==========
            Creator, contributor, title, copyright, license information.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CatalogDetailsXsdType"
                  xml:id="CatalogDetailsXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A set of information useful for attribution, data discovery, and access.
            
            Examples
            ==========
            Creator, contributor, title, copyright, license information.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="access"
                  type="AccessInformationXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-access">
        <xs:annotation>
          <xs:documentation>Information important for understanding access conditions.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alternativeTitle"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-alternativeTitle">
        <xs:annotation>
          <xs:documentation>An alternative title by which a data collection is commonly referred, or an abbreviation for the title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="contributor"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-contributor">
        <xs:annotation>
          <xs:documentation>The name of a contributing author or creator, who worked in support of the primary creator given above.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="creator"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-creator">
        <xs:annotation>
          <xs:documentation>Person, corporate body, or agency responsible for the substantive and intellectual content of the described object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="date"
                  type="CombinedDateXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-date">
        <xs:annotation>
          <xs:documentation>A date associated with the annotated object (not the coverage period). Use typeOfDate to specify the type of date such as Version, Publication, Submitted, Copyrighted, Accepted, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="identifier"
                  type="InternationalIdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CatalogDetails-identifier">
        <xs:annotation>
          <xs:documentation>An identifier or locator. Contains identifier and Managing agency (ISBN, ISSN, DOI, local archive). Indicates if it is a URI.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="informationSource"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-informationSource">
        <xs:annotation>
          <xs:documentation>The name or identifier of source information for the annotated object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="languageOfObject"
                  type="xs:language"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-languageOfObject">
        <xs:annotation>
          <xs:documentation>Language of the intellectual content of the described object. Multiple languages are supported by the structure itself as defined in the transformation to specific bindings. Use language codes supported by xs:language which include the 2 and 3 character and extended structures defined by RFC4646 or its successors. Supports multiple language codes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="provenance"
                  type="ProvenanceInformationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CatalogDetails-provenance">
        <xs:annotation>
          <xs:documentation>Information about the origins of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="publisher"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-publisher">
        <xs:annotation>
          <xs:documentation>Person or organization responsible for making the resource available in its present form.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="relatedResource"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-relatedResource">
        <xs:annotation>
          <xs:documentation>Provide the identifier, managing agency, and type of resource related to this object. Use to specify related resources similar to Dublin Core isPartOf and hasPart to indicate collection/series membership for objects where there is an identifiable record. If not an identified object use the relationship to ExternalMaterial using a type that indicates a series description.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="subTitle"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-subTitle">
        <xs:annotation>
          <xs:documentation>Secondary or explanatory title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="summary"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CatalogDetails-summary">
        <xs:annotation>
          <xs:documentation>A summary description (abstract) of the annotated object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="title"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CatalogDetails-title">
        <xs:annotation>
          <xs:documentation>Full authoritative title. List any additional titles for this item as alternativeTitle.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfResource"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CatalogDetails-typeOfResource">
        <xs:annotation>
          <xs:documentation>Provide the type of the resource. This supports the use of a controlled vocabulary. It should be appropriate to the level of the annotation.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CombinedDate"
              type="CombinedDateXsdType"
              xml:id="CombinedDate">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::CombinedDate -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides the structure of a single Date expressed in an ISO date structure along with equivalent expression in any number of non-ISO formats. While it supports the use of the ISO time interval structure this should only be used when the exact date is unclear (i.e. occurring at some point in time between the two specified dates) or in specified applications. Ranges with specified start and end dates should use the DateRange as a datatype. Commonly uses property names include: eventDate, issueDate, and releaseDate.
            
            Explanatory notes
            ===================
            Date allows one of a set of date-time (YYYY-MM-DDThh:mm:ss), date (YYYY-MM-DD), year-month (YYYY-MM), year (YYYY), time (hh:mm:ss) and duration (PnYnMnDnHnMnS), or time interval (YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss, YYYY-MM-DDThh:mm:ss/PnYnMnDnHnMnS, PnYnMnDnHnMnS/ YYYY-MM-DDThh:mm:ss) which is formatted according to ISO 8601 and backed supported by regular expressions in the BaseDateType. Time Zone designation and negative/positive prefixes are allowed as are dates before and after 0000 through 9999.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CombinedDateXsdType"
                  xml:id="CombinedDateXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides the structure of a single Date expressed in an ISO date structure along with equivalent expression in any number of non-ISO formats. While it supports the use of the ISO time interval structure this should only be used when the exact date is unclear (i.e. occurring at some point in time between the two specified dates) or in specified applications. Ranges with specified start and end dates should use the DateRange as a datatype. Commonly uses property names include: eventDate, issueDate, and releaseDate.
            
            Explanatory notes
            ===================
            Date allows one of a set of date-time (YYYY-MM-DDThh:mm:ss), date (YYYY-MM-DD), year-month (YYYY-MM), year (YYYY), time (hh:mm:ss) and duration (PnYnMnDnHnMnS), or time interval (YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss, YYYY-MM-DDThh:mm:ss/PnYnMnDnHnMnS, PnYnMnDnHnMnS/ YYYY-MM-DDThh:mm:ss) which is formatted according to ISO 8601 and backed supported by regular expressions in the BaseDateType. Time Zone designation and negative/positive prefixes are allowed as are dates before and after 0000 through 9999.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="isoDate"
                  type="xs:date"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CombinedDate-isoDate">
        <xs:annotation>
          <xs:documentation>Strongly recommend that ALL dates be expressed in an ISO format at a minimum. A single point in time expressed in an ISO standard structure. Note that while it supports an ISO date range structure this should be used in Date only when the single date is unclear i.e. occurring at some time between two dates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nonIsoDate"
                  type="NonIsoDateXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CombinedDate-nonIsoDate">
        <xs:annotation>
          <xs:documentation>A simple date expressed in a non-ISO date format, including a specification of the date format and calendar used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantics"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CombinedDate-semantics">
        <xs:annotation>
          <xs:documentation>Use to specify the type of date. This may reflect the refinements of dc:date such as dateAccepted, dateCopyrighted, dateSubmitted, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Command"
              type="CommandXsdType"
              xml:id="Command">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Command -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides the following information on the command: The content of the command and the programming language used.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CommandXsdType"
                  xml:id="CommandXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides the following information on the command: The content of the command and the programming language used.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="commandContent"
                  type="TypedStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Command-commandContent">
        <xs:annotation>
          <xs:documentation>Content of the command itself expressed in the language designated in programming language.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="programLanguage"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Command-programLanguage">
        <xs:annotation>
          <xs:documentation>Designates the programming language used for the command. Supports the use of a controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CommandCode"
              type="CommandCodeXsdType"
              xml:id="CommandCode">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::CommandCode -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Contains information on the command used for processing data. Contains a description of the command which should clarify for the user the purpose and process of the command, an in-line provision of the command itself, and a reference to an external version of the command such as a coding script.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CommandCodeXsdType"
                  xml:id="CommandCodeXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Contains information on the command used for processing data. Contains a description of the command which should clarify for the user the purpose and process of the command, an in-line provision of the command itself, and a reference to an external version of the command such as a coding script.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="command"
                  type="CommandXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CommandCode-command">
        <xs:annotation>
          <xs:documentation>This is an in-line provision of the command itself. It provides the programming language used as well as the command.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="commandFile"
                  type="CommandFileXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CommandCode-commandFile">
        <xs:annotation>
          <xs:documentation>Identifies and provides a link to an external copy of the command, for example, a SAS Command Code script. Designates the programming language of the command file as well as the URI for the file.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CommandCode-description">
        <xs:annotation>
          <xs:documentation>A description of the purpose and use of the command code provided. Supports multiple languages.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CommandFile"
              type="CommandFileXsdType"
              xml:id="CommandFile">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::CommandFile -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifies and provides a link to an external copy of the command, for example, a SAS Command Code script. Designates the programming language of the command file, a description of the location of the file , and a URN or URL for the command file.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CommandFileXsdType"
                  xml:id="CommandFileXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifies and provides a link to an external copy of the command, for example, a SAS Command Code script. Designates the programming language of the command file, a description of the location of the file , and a URN or URL for the command file.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="location"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CommandFile-location">
        <xs:annotation>
          <xs:documentation>A description of the location of the file. This may not be machine actionable. It supports a description expressed in multiple languages.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:anyURI"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CommandFile-uri">
        <xs:annotation>
          <xs:documentation>The URL or URN of the command file.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInformation"
              type="ContactInformationXsdType"
              xml:id="ContactInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ContactInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Contact information for the individual or organization including location specification, address, web site, phone numbers, and other means of communication access. Address, location, telephone, and other means of communication can be repeated to express multiple means of a single type or change over time. Each major piece of contact information contains the element effectiveDates in order to date stamp the period for which the information is valid.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ContactInformationXsdType"
                  xml:id="ContactInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Contact information for the individual or organization including location specification, address, web site, phone numbers, and other means of communication access. Address, location, telephone, and other means of communication can be repeated to express multiple means of a single type or change over time. Each major piece of contact information contains the element effectiveDates in order to date stamp the period for which the information is valid.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="address"
                  type="AddressXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ContactInformation-address">
        <xs:annotation>
          <xs:documentation>The address for contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="email"
                  type="EmailXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ContactInformation-email">
        <xs:annotation>
          <xs:documentation>Email contact information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="emessaging"
                  type="ElectronicMessageSystemXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ContactInformation-emessaging">
        <xs:annotation>
          <xs:documentation>Electronic messaging other than email.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="telephone"
                  type="TelephoneXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ContactInformation-telephone">
        <xs:annotation>
          <xs:documentation>Telephone for contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="website"
                  type="WebLinkXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ContactInformation-website">
        <xs:annotation>
          <xs:documentation>The URL of the Agent's website.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ControlledVocabularyEntry"
              type="ControlledVocabularyEntryXsdType"
              xml:id="ControlledVocabularyEntry">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ControlledVocabularyEntry -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Allows for unstructured content which may be an entry from an externally maintained controlled vocabulary.If the content is from a controlled vocabulary provide the code value of the entry, as well as a reference to the controlled vocabulary from which the value is taken. Provide as many of the identifying attributes as needed to adequately identify the controlled vocabulary. Note that DDI has published a number of controlled vocabularies applicable to several locations using the external controlled vocabulary entry structure. If the code portion of the controlled vocabulary entry is language specific (i.e. a list of keywords or subject headings) use language to specify that language. In most cases the code portion of an entry is not language specific although the description and usage may be managed in one or more languages. Use of shared controlled vocabularies helps support interoperability and machine actionability.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ControlledVocabularyEntryXsdType"
                  xml:id="ControlledVocabularyEntryXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Allows for unstructured content which may be an entry from an externally maintained controlled vocabulary.If the content is from a controlled vocabulary provide the code value of the entry, as well as a reference to the controlled vocabulary from which the value is taken. Provide as many of the identifying attributes as needed to adequately identify the controlled vocabulary. Note that DDI has published a number of controlled vocabularies applicable to several locations using the external controlled vocabulary entry structure. If the code portion of the controlled vocabulary entry is language specific (i.e. a list of keywords or subject headings) use language to specify that language. In most cases the code portion of an entry is not language specific although the description and usage may be managed in one or more languages. Use of shared controlled vocabularies helps support interoperability and machine actionability.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="entryReference"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlledVocabularyEntry-entryReference">
        <xs:annotation>
          <xs:documentation>A reference to the specific item in the vocabulary referenced in the vocabulary attribute, using a URI or other resolvable identifier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="entryValue"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ControlledVocabularyEntry-entryValue">
        <xs:annotation>
          <xs:documentation>The value of the entry of the controlled vocabulary. If no controlled vocabulary is used the term is entered here and none of the properties defining the controlled vocabulary location are used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlledVocabularyEntry-name">
        <xs:annotation>
          <xs:documentation>The name of the code list (controlled vocabulary).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="valueForOther"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlledVocabularyEntry-valueForOther">
        <xs:annotation>
          <xs:documentation>If the value of the string is "Other" or the equivalent from the codelist, this attribute can provide a more specific value not found in the codelist.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vocabulary"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ControlledVocabularyEntry-vocabulary">
        <xs:annotation>
          <xs:documentation>A reference to the external controlled vocabulary, using a URI or other resolvable identifier.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CorrespondenceDefinition"
              type="CorrespondenceDefinitionXsdType"
              xml:id="CorrespondenceDefinition">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::CorrespondenceDefinition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Describes the commonalities and differences between two members using a textual description of both commonalities and differences plus an optional coding of the type of commonality.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CorrespondenceDefinitionXsdType"
                  xml:id="CorrespondenceDefinitionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Describes the commonalities and differences between two members using a textual description of both commonalities and differences plus an optional coding of the type of commonality.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="commonality"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceDefinition-commonality">
        <xs:annotation>
          <xs:documentation>A description of the common features of the two items. Supports multiple language versions of the same content as well as optional formatting of the content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="commonalityCode"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="CorrespondenceDefinition-commonalityCode">
        <xs:annotation>
          <xs:documentation>Commonality expressed as a term or code. Supports the use of an external controlled vocabulary. If repeated, clarify each external controlled vocabulary used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="difference"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceDefinition-difference">
        <xs:annotation>
          <xs:documentation>A description of the differences between the two items. Supports multiple language versions of the same content as well as optional formatting of the content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="matching"
                  type="MatchingCriterionXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="CorrespondenceDefinition-matching">
        <xs:annotation>
          <xs:documentation>Allows specification of exact match, close match, or disjoint. These relationships can be further defined by describing commonalities or differences or providing additional controlled vocabulary descriptions of relationships.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="DateRange"
              type="DateRangeXsdType"
              xml:id="DateRange">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::DateRange -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Expresses a date/time range using a start date and end date (both with the structure of Date and supporting the use of ISO and non-ISO date structures). Use in all locations where a range of dates is required, i.e. validFor, embargoPeriod, collectionPeriod, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DateRangeXsdType"
                  xml:id="DateRangeXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Expresses a date/time range using a start date and end date (both with the structure of Date and supporting the use of ISO and non-ISO date structures). Use in all locations where a range of dates is required, i.e. validFor, embargoPeriod, collectionPeriod, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="endDate"
                  type="CombinedDateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DateRange-endDate">
        <xs:annotation>
          <xs:documentation>The date (time) designating the end of the period or range.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="startDate"
                  type="CombinedDateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="DateRange-startDate">
        <xs:annotation>
          <xs:documentation>The date (time) designating the beginning of the period or range.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ElectronicMessageSystem"
              type="ElectronicMessageSystemXsdType"
              xml:id="ElectronicMessageSystem">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ElectronicMessageSystem -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Any non-email means of relaying a message electronically. This would include text messaging, Skype, Twitter, ICQ, or other emerging means of electronic message conveyance. 
            
            Examples
            ==========
            Skype account, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ElectronicMessageSystemXsdType"
                  xml:id="ElectronicMessageSystemXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Any non-email means of relaying a message electronically. This would include text messaging, Skype, Twitter, ICQ, or other emerging means of electronic message conveyance. 
            
            Examples
            ==========
            Skype account, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="contactAddress"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ElectronicMessageSystem-contactAddress">
        <xs:annotation>
          <xs:documentation>Account identification for contacting.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ElectronicMessageSystem-effectiveDates">
        <xs:annotation>
          <xs:documentation>Time period during which the account is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ElectronicMessageSystem-isPreferred">
        <xs:annotation>
          <xs:documentation>Set to True if this is the preferred address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ElectronicMessageSystem-privacy">
        <xs:annotation>
          <xs:documentation>Specify the level privacy for the address as public, restricted, or private. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfService"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ElectronicMessageSystem-typeOfService">
        <xs:annotation>
          <xs:documentation>Indicates the type of service used. Supports the use of a controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Email"
              type="EmailXsdType"
              xml:id="Email">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Email -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            An e-mail address which conforms to the internet format (RFC 822) including its type and time period for which it is valid.
            
            Examples
            ==========
            info@ddialliance.org; ex.ample@somewhere.org</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="EmailXsdType"
                  xml:id="EmailXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            An e-mail address which conforms to the internet format (RFC 822) including its type and time period for which it is valid.
            
            Examples
            ==========
            info@ddialliance.org; ex.ample@somewhere.org</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Email-effectiveDates">
        <xs:annotation>
          <xs:documentation>Time period for which the e-mail address is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="internetEmail"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Email-internetEmail">
        <xs:annotation>
          <xs:documentation>The email address expressed as a string (should follow the Internet format specification - RFC 5322) e.g. user@server.ext, more complex and flexible examples are also supported by the format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Email-isPreferred">
        <xs:annotation>
          <xs:documentation>Set to True if this is the preferred email.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Email-privacy">
        <xs:annotation>
          <xs:documentation>Indicates the level of privacy.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfEmail"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Email-typeOfEmail">
        <xs:annotation>
          <xs:documentation>Code indicating the type of e-mail address. Supports the use of an external controlled vocabulary. (e.g. home, office).</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EmbargoInformation"
              type="EmbargoInformationXsdType"
              xml:id="EmbargoInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::EmbargoInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specific information about any relevant embargo.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="EmbargoInformationXsdType"
                  xml:id="EmbargoInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specific information about any relevant embargo.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="EmbargoInformation-description">
        <xs:annotation>
          <xs:documentation>A text description of the terms of an embargo on the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="period"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="EmbargoInformation-period">
        <xs:annotation>
          <xs:documentation>The time range(s) for embargo of the object</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="FundingInformation"
              type="FundingInformationXsdType"
              xml:id="FundingInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::FundingInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information regarding the source of funds used to develop or support the resource being described.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="FundingInformationXsdType"
                  xml:id="FundingInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information regarding the source of funds used to develop or support the resource being described.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="fundingAgent"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="FundingInformation-fundingAgent">
        <xs:annotation>
          <xs:documentation>A reference to the agent (e.g. organization) that provided funding for a grant.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="grantNumber"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="FundingInformation-grantNumber">
        <xs:annotation>
          <xs:documentation>The identification number for the grant at least partly provided by the funding agent.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GeoRole"
              type="GeoRoleXsdType"
              xml:id="GeoRole">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::GeoRole -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Geography-specific role given to a represented variable in the context of a data structure. The specific characterization of the role (e.g. reference, coordinates, etc.) may be given by a controlled vocabulary.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="GeoRoleXsdType"
                  xml:id="GeoRoleXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Geography-specific role given to a represented variable in the context of a data structure. The specific characterization of the role (e.g. reference, coordinates, etc.) may be given by a controlled vocabulary.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SpecializationRoleXsdType">
        <xs:sequence>
          <xs:element name="geography"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="GeoRole-geography">
            <xs:annotation>
              <xs:documentation>Function in relation to the specification of a place or physical area or feature, ideally drawn from a controlled vocabulary.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Identifier"
              type="IdentifierXsdType"
              xml:id="Identifier">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Identifier -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="IdentifierXsdType"
                  xml:id="IdentifierXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ddiIdentifier"
                  type="InternationalRegistrationDataIdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-ddiIdentifier">
        <xs:annotation>
          <xs:documentation>A globally unique identifier. The values of the three attributes can be used to create a DDI URN.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isDdiIdentifierPersistent"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-isDdiIdentifierPersistent">
        <xs:annotation>
          <xs:documentation>Default value is False indicating that the content of the current version may change (may be in development mode). Set to True when the content of this version will no longer change.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isDdiIdentifierUniversallyUnique"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-isDdiIdentifierUniversallyUnique">
        <xs:annotation>
          <xs:documentation>Default value is False. If the id of the object was created as a Universally Unique ID (UUID) set to True.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nonDdiIdentifier"
                  type="NonDdiIdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Identifier-nonDdiIdentifier">
        <xs:annotation>
          <xs:documentation>Any identifier other than a DDI identifier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:anyURI"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-uri">
        <xs:annotation>
          <xs:documentation>A Universal Resource Identifier, valid according to the W3C XML Schema specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="versionDate"
                  type="xs:date"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-versionDate">
        <xs:annotation>
          <xs:documentation>Date and time the object was changed expressed in standard ISO formats.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="versionRationale"
                  type="RationaleDefinitionXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-versionRationale">
        <xs:annotation>
          <xs:documentation>Reason for making a new version of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="versionResponsibility"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Identifier-versionResponsibility">
        <xs:annotation>
          <xs:documentation>Contributor who has the ownership and responsibility for the current version.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="IndividualName"
              type="IndividualNameXsdType"
              xml:id="IndividualName">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::IndividualName -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The name of an individual broken out into its component parts of prefix, first/given name, middle name, last/family/surname, and suffix. The preferred compilation of the name parts may also be provided. The legal or formal name of the individual should have the isFormal attribute set to true. The preferred name should be noted with the isPreferred attribute. The attribute sex provides information to assist in the appropriate use of pronouns.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="IndividualNameXsdType"
                  xml:id="IndividualNameXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The name of an individual broken out into its component parts of prefix, first/given name, middle name, last/family/surname, and suffix. The preferred compilation of the name parts may also be provided. The legal or formal name of the individual should have the isFormal attribute set to true. The preferred name should be noted with the isPreferred attribute. The attribute sex provides information to assist in the appropriate use of pronouns.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="abbreviation"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-abbreviation">
        <xs:annotation>
          <xs:documentation>An abbreviation or acronym for the name. This may be expressed in multiple languages. It is assumed that if only a single language is provided that it may be used in any of the other languages within which the name itself is expressed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="context"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-context">
        <xs:annotation>
          <xs:documentation>A name may be specific to a particular context, i.e. common usage, business, social, etc.. Identify the context related to the specified name. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-effectiveDates">
        <xs:annotation>
          <xs:documentation>Clarifies when the name information is accurate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="firstGiven"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-firstGiven">
        <xs:annotation>
          <xs:documentation>First (given) name of the individual.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="fullName"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-fullName">
        <xs:annotation>
          <xs:documentation>This provides a means of providing a full name as a single object for display or print such as identification badges etc. For example a person with the name of William Grace for official use may prefer a display name of Bill Grace on a name tag or other informal publication.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isFormal"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-isFormal">
        <xs:annotation>
          <xs:documentation>The legal or formal name of the individual should have the isFormal attribute set to True. To avoid confusion only one individual name should have the isFormal attribute set to True. Use the TypeOfIndividualName to further differentiate the type and applied usage when multiple names are provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-isPreferred">
        <xs:annotation>
          <xs:documentation>If more than one name for the object is provided, use the isPreferred attribute to indicate which is the preferred name content. All other names should be set to isPreferred=False.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="lastFamily"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-lastFamily">
        <xs:annotation>
          <xs:documentation>Last (family) name /surname of the individual.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="middle"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="IndividualName-middle">
        <xs:annotation>
          <xs:documentation>Middle name or initial of the individual.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefix"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-prefix">
        <xs:annotation>
          <xs:documentation>Title that precedes the name of the individual, such as Ms., or Dr.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="sex"
                  type="SexSpecificationXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-sex">
        <xs:annotation>
          <xs:documentation>Sex allows for the specification of male, female or neutral. The purpose of providing this information is to assist others in the appropriate use of pronouns when addressing the individual. Note that many countries/languages may offer a neutral pronoun form.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="suffix"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-suffix">
        <xs:annotation>
          <xs:documentation>Title that follows the name of the individual, such as Esq. (abbreviation for Esquire. This is usually a courtesy title).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfIndividualName"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="IndividualName-typeOfIndividualName">
        <xs:annotation>
          <xs:documentation>The type of individual name provided. the use of a controlled vocabulary is strongly recommended. At minimum his should include, e.g. PreviousFormalName, Nickname (or CommonName), Other.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="InternationalIdentifier"
              type="InternationalIdentifierXsdType"
              xml:id="InternationalIdentifier">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::InternationalIdentifier -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            An identifier whose scope of uniqueness is broader than the local archive. Common forms of an international identifier are ISBN, ISSN, DOI or similar designator. Provides both the value of the identifier and the agency who manages it.
            
            Explanatory notes
            ===================
            For use in annotation or other citation format.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InternationalIdentifierXsdType"
                  xml:id="InternationalIdentifierXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            An identifier whose scope of uniqueness is broader than the local archive. Common forms of an international identifier are ISBN, ISSN, DOI or similar designator. Provides both the value of the identifier and the agency who manages it.
            
            Explanatory notes
            ===================
            For use in annotation or other citation format.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="identifierContent"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InternationalIdentifier-identifierContent">
        <xs:annotation>
          <xs:documentation>An identifier as it should be listed for identification purposes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isURI"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InternationalIdentifier-isURI">
        <xs:annotation>
          <xs:documentation>Set to True if Identifier is a URI.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="managingAgency"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="InternationalIdentifier-managingAgency">
        <xs:annotation>
          <xs:documentation>The identification of the Agency which assigns and manages the identifier, i.e., ISBN, ISSN, DOI, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="InternationalRegistrationDataIdentifier"
              type="InternationalRegistrationDataIdentifierXsdType"
              xml:id="InternationalRegistrationDataIdentifier">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::InternationalRegistrationDataIdentifier -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Persistent, globally unique object identifier aligned with ISO/IEC 11179-6:2015, Information technology - Metadata registries (MDR) - Part 6: Registration, Annex A, Identifiers based on ISO/IEC 6523, http://standards.iso.org/ittf/PubliclyAvailableStandards/c060342_ISO_IEC_11179-6_2015.zip.
            The uniqueness of an InternationalRegistrationDataIdentifier (IRDI) is determined by the combination of the values of three identifying attributes.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InternationalRegistrationDataIdentifierXsdType"
                  xml:id="InternationalRegistrationDataIdentifierXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Persistent, globally unique object identifier aligned with ISO/IEC 11179-6:2015, Information technology - Metadata registries (MDR) - Part 6: Registration, Annex A, Identifiers based on ISO/IEC 6523, http://standards.iso.org/ittf/PubliclyAvailableStandards/c060342_ISO_IEC_11179-6_2015.zip.
            The uniqueness of an InternationalRegistrationDataIdentifier (IRDI) is determined by the combination of the values of three identifying attributes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="dataIdentifier"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InternationalRegistrationDataIdentifier-dataIdentifier">
        <xs:annotation>
          <xs:documentation>Identifier assigned to an Administered Item within a Registration Authority, hereafter called Data Identifier (DI). The DI is called 'id' in DDI-Codebook and DDI-Lifecycle.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="registrationAuthorityIdentifier"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InternationalRegistrationDataIdentifier-registrationAuthorityIdentifier">
        <xs:annotation>
          <xs:documentation>Identifier assigned to a Registration Authority, hereafter called Registration Authority Identifier (RAI). The RAI is called 'agency' in DDI-Codebook and DDI-Lifecycle.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="versionIdentifier"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="InternationalRegistrationDataIdentifier-versionIdentifier">
        <xs:annotation>
          <xs:documentation>Identifier assigned to a version under which an Administered Item registration is submitted or updated hereafter called Version Identifier (VI). The VI is called "version" in DDI-Codebook and DDI-Lifecycle.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="InternationalString"
              type="InternationalStringXsdType"
              xml:id="InternationalString">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::InternationalString -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Packaging structure for multilingual versions of the same string content, represented by a set of LanguageString. Only one LanguageString per language/scope type is allowed. Where an element of this type (InternationalString) is repeatable, the expectation is that each repetition contains a different content, each of which can be expressed in multiple languages.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InternationalStringXsdType"
                  xml:id="InternationalStringXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Packaging structure for multilingual versions of the same string content, represented by a set of LanguageString. Only one LanguageString per language/scope type is allowed. Where an element of this type (InternationalString) is repeatable, the expectation is that each repetition contains a different content, each of which can be expressed in multiple languages.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="languageSpecificString"
                  type="LanguageStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="InternationalString-languageSpecificString">
        <xs:annotation>
          <xs:documentation>A non-formatted string of text with an attribute that designates the language of the text. Repeat this object to express the same content in another language.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LabelForDisplay"
              type="LabelForDisplayXsdType"
              xml:id="LabelForDisplay">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::LabelForDisplay -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A structured display label. Label provides display content of a fully human readable display for the identification of the object.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LabelForDisplayXsdType"
                  xml:id="LabelForDisplayXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A structured display label. Label provides display content of a fully human readable display for the identification of the object.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="InternationalStringXsdType">
        <xs:sequence>
          <xs:element name="locationVariant"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="LabelForDisplay-locationVariant">
            <xs:annotation>
              <xs:documentation>Indicate the locality specification for content that is specific to a geographic area. May be a country code, sub-country code, or area name.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="maxLength"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="LabelForDisplay-maxLength">
            <xs:annotation>
              <xs:documentation>A positive integer indicating the maximum number of characters in the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="validDates"
                      type="DateRangeXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="LabelForDisplay-validDates">
            <xs:annotation>
              <xs:documentation>Allows for the specification of a starting date and ending date for the period that this label is valid.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="LanguageString"
              type="LanguageStringXsdType"
              xml:id="LanguageString">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::LanguageString -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A data type which describes a string specific to a language/scope combination. It contains the following attributes: language to designate the language, isTranslated with a default value of false to designate if an object is a translation of another language, isTranslatable with a default value of true to designate if the content can be translated, translationSourceLanguage to indicate the source languages used in creating this translation, translationDate, and scope which can be used to define intended audience or use such as internal, external, etc.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LanguageStringXsdType"
                  xml:id="LanguageStringXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A data type which describes a string specific to a language/scope combination. It contains the following attributes: language to designate the language, isTranslated with a default value of false to designate if an object is a translation of another language, isTranslatable with a default value of true to designate if the content can be translated, translationSourceLanguage to indicate the source languages used in creating this translation, translationDate, and scope which can be used to define intended audience or use such as internal, external, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="content"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="LanguageString-content">
        <xs:annotation>
          <xs:documentation>The content of the string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isTranslatable"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-isTranslatable">
        <xs:annotation>
          <xs:documentation>Indicates whether content is translatable (True) or not (False). An example of something that is not translatable would be a MNEMONIC of an object or a number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isTranslated"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-isTranslated">
        <xs:annotation>
          <xs:documentation>Indicates whether content is a translation (True) or an original (False).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="language"
                  type="xs:language"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-language">
        <xs:annotation>
          <xs:documentation>Indicates the natural language of content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="scope"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-scope">
        <xs:annotation>
          <xs:documentation>Supports specification of scope for the contained content. Use with the language specification to filter application of content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="structureUsed"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-structureUsed">
        <xs:annotation>
          <xs:documentation>The structure type used. Examples are HTML or restructured text.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="translationDate"
                  type="xs:date"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="LanguageString-translationDate">
        <xs:annotation>
          <xs:documentation>The date the content was translated. Provision of translation date allows user to verify if translation was available during data collection or other time linked activity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="translationSourceLanguage"
                  type="xs:language"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LanguageString-translationSourceLanguage">
        <xs:annotation>
          <xs:documentation>Lists the natural language(s) of the source. Repeat if source is in multiple languages.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LicenseInformation"
              type="LicenseInformationXsdType"
              xml:id="LicenseInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::LicenseInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information about any relevant license.
            
            Examples
            ==========
            Licensed under Creative Commons Attribution 2.0 Generic (CC BY 2.0).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="LicenseInformationXsdType"
                  xml:id="LicenseInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Information about any relevant license.
            
            Examples
            ==========
            Licensed under Creative Commons Attribution 2.0 Generic (CC BY 2.0).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="contact"
                  type="ContactInformationXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LicenseInformation-contact">
        <xs:annotation>
          <xs:documentation>Information on whom to contact for details on licensing.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LicenseInformation-description">
        <xs:annotation>
          <xs:documentation>A description of licensing terms.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="licenseAgent"
                  type="AgentInRoleXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LicenseInformation-licenseAgent">
        <xs:annotation>
          <xs:documentation>Points to a description of an agent with information about, or responsible for licensing of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="licenseReference"
                  type="ReferenceXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="LicenseInformation-licenseReference">
        <xs:annotation>
          <xs:documentation>Points to published license terms, such as to a specific Creative Commons license.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ModelIdentification"
              type="ModelIdentificationXsdType"
              xml:id="ModelIdentification">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::ModelIdentification -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Attributes for the model identification with constant values.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ModelIdentificationXsdType"
                  xml:id="ModelIdentificationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Attributes for the model identification with constant values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="acronym"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-acronym">
        <xs:annotation>
          <xs:documentation>Acronym of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="language"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-language">
        <xs:annotation>
          <xs:documentation>Language of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="majorVersion"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-majorVersion">
        <xs:annotation>
          <xs:documentation>Major version number of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minorVersion"
                  type="xs:integer"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-minorVersion">
        <xs:annotation>
          <xs:documentation>Minor version number of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="subtitle"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-subtitle">
        <xs:annotation>
          <xs:documentation>Subtitle of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="title"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-title">
        <xs:annotation>
          <xs:documentation>Title of the model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="ModelIdentification-uri">
        <xs:annotation>
          <xs:documentation>URI of the specification.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="NonDdiIdentifier"
              type="NonDdiIdentifierXsdType"
              xml:id="NonDdiIdentifier">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::NonDdiIdentifier -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A unique set of attributes, not conforming to the DDI identifier structure nor structured as a URI, used to identify some entity.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="NonDdiIdentifierXsdType"
                  xml:id="NonDdiIdentifierXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A unique set of attributes, not conforming to the DDI identifier structure nor structured as a URI, used to identify some entity.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="managingAgency"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="NonDdiIdentifier-managingAgency">
        <xs:annotation>
          <xs:documentation>The authority which maintains the identification scheme.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="type"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="NonDdiIdentifier-type">
        <xs:annotation>
          <xs:documentation>The scheme of identifier, as distinct from a URI or a DDI-conforming identifier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="value"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="NonDdiIdentifier-value">
        <xs:annotation>
          <xs:documentation>The identifier, structured according to the specified type.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="version"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="NonDdiIdentifier-version">
        <xs:annotation>
          <xs:documentation>The version of the object being identified, according to the versioning system provided by the identified scheme.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="NonIsoDate"
              type="NonIsoDateXsdType"
              xml:id="NonIsoDate">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::NonIsoDate -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Used to preserve an historical date, formatted in a non-ISO fashion.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="NonIsoDateXsdType"
                  xml:id="NonIsoDateXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Used to preserve an historical date, formatted in a non-ISO fashion.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="calendar"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="NonIsoDate-calendar">
        <xs:annotation>
          <xs:documentation>Specifies the type of calendar used (e.g., Gregorian, Julian, Jewish).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="dateContent"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="NonIsoDate-dateContent">
        <xs:annotation>
          <xs:documentation>This is the date expressed in a non-ISO compliant structure. Primarily used to retain legacy content or to express non-Gregorian calendar dates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nonIsoDateFormat"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="NonIsoDate-nonIsoDateFormat">
        <xs:annotation>
          <xs:documentation>Indicate the structure of the date provided in NonISODate. For example if the NonISODate contained 4/1/2000 the Historical Date Format would be mm/dd/yyyy. The use of a controlled vocabulary is strongly recommended to support interoperability.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ObjectAttributeSelector"
              type="ObjectAttributeSelectorXsdType"
              xml:id="ObjectAttributeSelector">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ObjectAttributeSelector -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A resource which describes a specific attribute of an object. It is defined in the style of selectors of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/. The selector can be nested dependent on the structure of the referenced object.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ObjectAttributeSelectorXsdType"
                  xml:id="ObjectAttributeSelectorXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A resource which describes a specific attribute of an object. It is defined in the style of selectors of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/. The selector can be nested dependent on the structure of the referenced object.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SelectorXsdType">
        <xs:sequence>
          <xs:element name="refinedBy"
                      type="ObjectAttributeSelectorXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ObjectAttributeSelector-refinedBy">
            <xs:annotation>
              <xs:documentation>Nested object attribute selector.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="refinedByOrderNumber"
                      type="xs:integer"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ObjectAttributeSelector-refinedByOrderNumber">
            <xs:annotation>
              <xs:documentation>Order number of the specific attribute.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="value"
                      type="xs:string"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="ObjectAttributeSelector-value">
            <xs:annotation>
              <xs:documentation>Name of the attribute.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="ObjectName"
              type="ObjectNameXsdType"
              xml:id="ObjectName">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ObjectName -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A standard means of expressing a name for a class object. A linguistic signifier. Human understandable name (word, phrase, or mnemonic) that reflects the ISO/IEC 11179-5 naming principles.
            
            Explanatory notes
            =================
            Use in model: In general the property name should be "name" as it is the name of the class object of which it is an attribute. Use a specific name (i.e. xxxName) only when naming something other than the class object of which it is an attribute.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ObjectNameXsdType"
                  xml:id="ObjectNameXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A standard means of expressing a name for a class object. A linguistic signifier. Human understandable name (word, phrase, or mnemonic) that reflects the ISO/IEC 11179-5 naming principles.
            
            Explanatory notes
            =================
            Use in model: In general the property name should be "name" as it is the name of the class object of which it is an attribute. Use a specific name (i.e. xxxName) only when naming something other than the class object of which it is an attribute.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="context"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ObjectName-context">
        <xs:annotation>
          <xs:documentation>A name may be specific to a particular context, i.e., a type of software, or a section of a registry. Identify the context related to the specified name.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="name"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ObjectName-name">
        <xs:annotation>
          <xs:documentation>The expressed name of the object.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OrganizationName"
              type="OrganizationNameXsdType"
              xml:id="OrganizationName">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::OrganizationName -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Names by which the organization is known. Use the attribute isFormal with a value of True to designate the legal or formal name of the organization. Names may be typed with typeOfOrganizationName to indicate their appropriate usage.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="OrganizationNameXsdType"
                  xml:id="OrganizationNameXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Names by which the organization is known. Use the attribute isFormal with a value of True to designate the legal or formal name of the organization. Names may be typed with typeOfOrganizationName to indicate their appropriate usage.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ObjectNameXsdType">
        <xs:sequence>
          <xs:element name="abbreviation"
                      type="InternationalStringXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="OrganizationName-abbreviation">
            <xs:annotation>
              <xs:documentation>An abbreviation or acronym for the name. This may be expressed in multiple languages. It is assumed that if only a single language is provided that it may be used in any of the other languages within which the name itself is expressed.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="effectiveDates"
                      type="DateRangeXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="OrganizationName-effectiveDates">
            <xs:annotation>
              <xs:documentation>The time period for which this name is accurate and in use.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="isFormal"
                      type="xs:boolean"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="OrganizationName-isFormal">
            <xs:annotation>
              <xs:documentation>The legal or formal name of the organization should have the isFormal attribute set to True. To avoid confusion only one organization name should have the isFormal attribute set to True. Use the typeOfOrganizationName to further differentiate the type and applied usage when multiple names are provided.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="typeOfOrganizationName"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="OrganizationName-typeOfOrganizationName">
            <xs:annotation>
              <xs:documentation>The type of organization name provided. the use of a controlled vocabulary is strongly recommended. At minimum this should include, e.g. PreviousFormalName, Nickname (or CommonName), Other.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="PairedControlledVocabularyEntry"
              type="PairedControlledVocabularyEntryXsdType"
              xml:id="PairedControlledVocabularyEntry">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::PairedControlledVocabularyEntry -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A tightly bound pair of items from an external controlled vocabulary. The extent property describes the extent to which the parent term applies for the specific case.
            
            Examples
            ========
            When used to assign a role to an actor within a specific activity this term would express the degree of contribution. Contributor with term (role) "Editor" and extent "Lead".
            
            Alternatively the term might be a controlled vocabulary from a list of controlled vocabularies, e.g. the Generic Longitudinal Business Process Model (GLBPM) in a list that could include other business process model frameworks. In this context the extent becomes the name of a business process model task, e.g. "integrate data" from the GLBPM.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PairedControlledVocabularyEntryXsdType"
                  xml:id="PairedControlledVocabularyEntryXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A tightly bound pair of items from an external controlled vocabulary. The extent property describes the extent to which the parent term applies for the specific case.
            
            Examples
            ========
            When used to assign a role to an actor within a specific activity this term would express the degree of contribution. Contributor with term (role) "Editor" and extent "Lead".
            
            Alternatively the term might be a controlled vocabulary from a list of controlled vocabularies, e.g. the Generic Longitudinal Business Process Model (GLBPM) in a list that could include other business process model frameworks. In this context the extent becomes the name of a business process model task, e.g. "integrate data" from the GLBPM.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="extent"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PairedControlledVocabularyEntry-extent">
        <xs:annotation>
          <xs:documentation>Describes the extent to which the parent term applies for the specific case using an external controlled vocabulary. When associated with a role from the CASRAI Contributor Roles Taxonomy an appropriate vocabulary should be specified as either "lead", "equal", or "supporting".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="term"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="PairedControlledVocabularyEntry-term">
        <xs:annotation>
          <xs:documentation>The term attributed to the parent class, for example the role of a contributor.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PrivateImage"
              type="PrivateImageXsdType"
              xml:id="PrivateImage">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::PrivateImage -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            References an image using the standard Image description. In addition to the standard attributes provides an effective date (period) and a privacy ranking.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PrivateImageXsdType"
                  xml:id="PrivateImageXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            References an image using the standard Image description. In addition to the standard attributes provides an effective date (period) and a privacy ranking.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PrivateImage-effectiveDates">
        <xs:annotation>
          <xs:documentation>The period for which this image is effective/valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="PrivateImage-privacy">
        <xs:annotation>
          <xs:documentation>Specify the level privacy for the image as public, restricted, or private. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProvenanceInformation"
              type="ProvenanceInformationXsdType"
              xml:id="ProvenanceInformation">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::ProvenanceInformation -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Basic information about the provenance of the object. Includes a simple description, but not detailed modeling of a process.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ProvenanceInformationXsdType"
                  xml:id="ProvenanceInformationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Basic information about the provenance of the object. Includes a simple description, but not detailed modeling of a process.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="funding"
                  type="FundingInformationXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ProvenanceInformation-funding">
        <xs:annotation>
          <xs:documentation>Information about a funding source.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="provenanceStatement"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="ProvenanceInformation-provenanceStatement">
        <xs:annotation>
          <xs:documentation>A statement of any changes in ownership and custody of the resource since its creation that are significant for its authenticity, integrity, and interpretation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recordCreationDate"
                  type="xs:date"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ProvenanceInformation-recordCreationDate">
        <xs:annotation>
          <xs:documentation>Date the record was created.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recordLastRevisionDate"
                  type="xs:date"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="ProvenanceInformation-recordLastRevisionDate">
        <xs:annotation>
          <xs:documentation>Date the record was last revised.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RationaleDefinition"
              type="RationaleDefinitionXsdType"
              xml:id="RationaleDefinition">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::RationaleDefinition -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Textual description of the rationale/purpose for the version change and a coded value to provide an internal processing flag within and organization or system.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RationaleDefinitionXsdType"
                  xml:id="RationaleDefinitionXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Textual description of the rationale/purpose for the version change and a coded value to provide an internal processing flag within and organization or system.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="rationaleCode"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RationaleDefinition-rationaleCode">
        <xs:annotation>
          <xs:documentation>Rationale  ode is primarily for internal processing flags within an organization or system. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="rationaleDescription"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="RationaleDefinition-rationaleDescription">
        <xs:annotation>
          <xs:documentation>Textual description of the rationale/purpose for the version change to inform users as to the extent and implication of the version change. May be expressed in multiple languages.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Reference"
              type="ReferenceXsdType"
              xml:id="Reference">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Reference -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides a way of pointing to resources outside of the information described in the set of DDI-CDI metadata.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ReferenceXsdType"
                  xml:id="ReferenceXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides a way of pointing to resources outside of the information described in the set of DDI-CDI metadata.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ddiReference"
                  type="InternationalRegistrationDataIdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-ddiReference">
        <xs:annotation>
          <xs:documentation>A DDI type reference to a DDI object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="deepLink"
                  type="SelectorXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-deepLink">
        <xs:annotation>
          <xs:documentation>The selector refers to the object identifier by the ddiReference and has deep linking purposes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-description">
        <xs:annotation>
          <xs:documentation>Human-readable description of the reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="location"
                  type="InternationalStringXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-location">
        <xs:annotation>
          <xs:documentation>The location of the referenced resource, as appropriate to support retrieval.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nonDdiReference"
                  type="NonDdiIdentifierXsdType"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Reference-nonDdiReference">
        <xs:annotation>
          <xs:documentation>A non-DDI reference to any object using a system of identification which is not supported by a URI.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semantic"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-semantic">
        <xs:annotation>
          <xs:documentation>External qualifier to describe the purpose or meaning of the reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:anyURI"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Reference-uri">
        <xs:annotation>
          <xs:documentation>A URI to any object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validType"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="unbounded"
                  xml:id="Reference-validType">
        <xs:annotation>
          <xs:documentation>The expected type of the reference (e.g., the class or element according to the schema of the referenced resource).</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AssociationReference"
              type="AssociationReferenceXsdType"
              xml:id="AssociationReference">
    <!-- related to the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Reference -->
    <xs:annotation>
      <xs:documentation>AssociationReference Definition
            ============
            Provides a way of pointing to resources outside of the information described in the set of DDI-CDI metadata.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AssociationReferenceXsdType"
                  xml:id="AssociationReferenceXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Provides a way of pointing to resources outside of the information described in the set of DDI-CDI metadata.</xs:documentation>
    </xs:annotation>
        <xs:sequence>
          <xs:element name="ddiReference"
                      type="InternationalRegistrationDataIdentifierXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="AssociationReference-ddiReference">
            <xs:annotation>
              <xs:documentation>A DDI type reference to a DDI object.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="validType"
                      type="xs:string"
                      minOccurs="0"
                      maxOccurs="unbounded"
                      xml:id="AssociationReference-validType">
            <xs:annotation>
              <xs:documentation>The expected type of the reference (e.g., the class or element according to the schema of the referenced resource).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="isAssociationReference"
                      type="xs:boolean"
                      fixed="true"
                      xml:id="isAssociationReference"/>
  </xs:complexType>
  <xs:element name="Selector"
              type="SelectorXsdType"
              xml:id="Selector">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Selector -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A resource which describes the segment of interest in a representation of a resource. This class is not used directly, only its subclasses. It is defined accordingly the related selector of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/#selector.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SelectorXsdType"
                  xml:id="SelectorXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            A resource which describes the segment of interest in a representation of a resource. This class is not used directly, only its subclasses. It is defined accordingly the related selector of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/#selector.</xs:documentation>
    </xs:annotation>
    
  </xs:complexType>

  <xs:element name="SpatialCoordinate"
              type="SpatialCoordinateXsdType"
              xml:id="SpatialCoordinate">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::SpatialCoordinate -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Lists the value and format type for the coordinate value. Note that this is a single value (X coordinate or Y coordinate) rather than a coordinate pair.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SpatialCoordinateXsdType"
                  xml:id="SpatialCoordinateXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Lists the value and format type for the coordinate value. Note that this is a single value (X coordinate or Y coordinate) rather than a coordinate pair.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="content"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="SpatialCoordinate-content">
        <xs:annotation>
          <xs:documentation>The value of the coordinate expressed as a string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="coordinateType"
                  type="PointFormatXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="SpatialCoordinate-coordinateType">
        <xs:annotation>
          <xs:documentation>Identifies the type of point coordinate system using a controlled vocabulary. Point formats include decimal degree, degrees minutes seconds, decimal minutes, meters, and feet.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SpatialPoint"
              type="SpatialPointXsdType"
              xml:id="SpatialPoint">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::SpatialPoint -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A geographic point consisting of an X and Y coordinate. Each coordinate value is expressed separately providing its value and format.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SpatialPointXsdType"
                  xml:id="SpatialPointXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A geographic point consisting of an X and Y coordinate. Each coordinate value is expressed separately providing its value and format.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="xCoordinate"
                  type="SpatialCoordinateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="SpatialPoint-xCoordinate">
        <xs:annotation>
          <xs:documentation>An X coordinate (latitudinal equivalent) value and format expressed using the Spatial Coordinate structure.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="yCoordinate"
                  type="SpatialCoordinateXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="SpatialPoint-yCoordinate">
        <xs:annotation>
          <xs:documentation>A Y coordinate (longitudinal equivalent) value and format expressed using the Spatial Coordinate structure.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SpecializationRole"
              type="SpecializationRoleXsdType"
              xml:id="SpecializationRole">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::SpecializationRole -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specific roles played by represented variables in terms of time, geography, and other concepts which are important for the harmonization and integration of data.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SpecializationRoleXsdType"
                  xml:id="SpecializationRoleXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Specific roles played by represented variables in terms of time, geography, and other concepts which are important for the harmonization and integration of data.</xs:documentation>
    </xs:annotation>
    
  </xs:complexType>

  <xs:element name="Statistic"
              type="StatisticXsdType"
              xml:id="Statistic">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Statistic -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The value of the statistic expressed as a decimal, float and/or double. Indicates whether it is weighted value and the computation base.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StatisticXsdType"
                  xml:id="StatisticXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The value of the statistic expressed as a decimal, float and/or double. Indicates whether it is weighted value and the computation base.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="computationBase"
                  type="ComputationBaseListXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Statistic-computationBase">
        <xs:annotation>
          <xs:documentation>Defines the cases included in determining the statistic. The options are total = all cases, valid and missing (invalid); validOnly = Only valid values, missing (invalid) are not included in the calculation; missingOnly = Only missing (invalid) cases included in the calculation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="content"
                  type="xs:double"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Statistic-content">
        <xs:annotation>
          <xs:documentation>The value of the statistic expressed as a real number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isWeighted"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Statistic-isWeighted">
        <xs:annotation>
          <xs:documentation>Set to True if the statistic is weighted.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfNumericValue"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Statistic-typeOfNumericValue">
        <xs:annotation>
          <xs:documentation>Indicate the type of numeric value as decimal, float, double.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="StructureSpecification"
              type="StructureSpecificationXsdType"
              xml:id="StructureSpecification">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::StructureSpecification -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The mathematical properties of the structure.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StructureSpecificationXsdType"
                  xml:id="StructureSpecificationXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            The mathematical properties of the structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="reflexive"
                  type="MemberRelationshipScopeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="StructureSpecification-reflexive">
        <xs:annotation>
          <xs:documentation>Members of the selected scope of the collection are related to themselves.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="symmetric"
                  type="MemberRelationshipScopeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="StructureSpecification-symmetric">
        <xs:annotation>
          <xs:documentation>For pairs of members, a, b in the indicated scope of the associated collection, whenever a is related to b then also b is related to a.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transitive"
                  type="MemberRelationshipScopeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="StructureSpecification-transitive">
        <xs:annotation>
          <xs:documentation>For members a, b, c in the indicated scope of the associated collection, whenever a is related to b and b is related to c then a is also related to c.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Telephone"
              type="TelephoneXsdType"
              xml:id="Telephone">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::Telephone -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Details of a telephone number including the number, type of telephone number, a privacy setting and an indication of whether this is the preferred contact number.
            
            Examples
            ==========
            +12 345 67890123</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TelephoneXsdType"
                  xml:id="TelephoneXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Details of a telephone number including the number, type of telephone number, a privacy setting and an indication of whether this is the preferred contact number.
            
            Examples
            ==========
            +12 345 67890123</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Telephone-effectiveDates">
        <xs:annotation>
          <xs:documentation>Time period during which the telephone number is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Telephone-isPreferred">
        <xs:annotation>
          <xs:documentation>Set to True if this is the preferred telephone number for contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Telephone-privacy">
        <xs:annotation>
          <xs:documentation>Specify the level privacy for the telephone number as public, restricted, or private. Supports the use of an external controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="telephoneNumber"
                  type="xs:string"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Telephone-telephoneNumber">
        <xs:annotation>
          <xs:documentation>The telephone number including country code if appropriate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfTelephone"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="Telephone-typeOfTelephone">
        <xs:annotation>
          <xs:documentation>Indicates type of telephone number provided (home, fax, office, cell, etc.). Supports the use of a controlled vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TextPositionSelector"
              type="TextPositionSelectorXsdType"
              xml:id="TextPositionSelector">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::TextPositionSelector -->
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Describes a range of text by recording the start and end positions of the selection in the object. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on. It is defined accordingly the related selector of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/#textpositionselector.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TextPositionSelectorXsdType"
                  xml:id="TextPositionSelectorXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ==========
            Describes a range of text by recording the start and end positions of the selection in the object. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on. It is defined accordingly the related selector of the Web Annotation Vocabulary, see https://www.w3.org/TR/annotation-vocab/#textpositionselector.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SelectorXsdType">
        <xs:sequence>
          <xs:element name="end"
                      type="xs:integer"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="TextPositionSelector-end">
            <xs:annotation>
              <xs:documentation>Position of the last character of the selection. Position 8 would be the end of the word "Position" of the previous sentence.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="start"
                      type="xs:integer"
                      minOccurs="1"
                      maxOccurs="1"
                      xml:id="TextPositionSelector-start">
            <xs:annotation>
              <xs:documentation>Position of the first character of the selection. Position 0 would be the start of the word "Position" of the previous sentence.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="TimeRole"
              type="TimeRoleXsdType"
              xml:id="TimeRole">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::TimeRole -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Time-specific role given to a represented variable in the context of a data structure. The specific characterization of the role (e.g. event, valid, transaction, reference, etc.) may be given by a controlled vocabulary.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TimeRoleXsdType"
                  xml:id="TimeRoleXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            Time-specific role given to a represented variable in the context of a data structure. The specific characterization of the role (e.g. event, valid, transaction, reference, etc.) may be given by a controlled vocabulary.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SpecializationRoleXsdType">
        <xs:sequence>
          <xs:element name="time"
                      type="ControlledVocabularyEntryXsdType"
                      minOccurs="0"
                      maxOccurs="1"
                      xml:id="TimeRole-time">
            <xs:annotation>
              <xs:documentation>Holds a value from an external controlled vocabulary defining the time role.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="TypedString"
              type="TypedStringXsdType"
              xml:id="TypedString">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::TypedString -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            TypedString combines a type with content defined as a simple string. May be used wherever a simple string needs to support a type definition to clarify its content.
            
            Examples
            ==========
            Content is a regular expression and the typeOfContent attribute is used to define the syntax of the regular expression content.
            
            Explanatory notes
            ===================
            This is a generic type + string where property name and documentation should be used to define any specification for the content. If international structured string content is required use TypedStructuredString.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TypedStringXsdType"
                  xml:id="TypedStringXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            TypedString combines a type with content defined as a simple string. May be used wherever a simple string needs to support a type definition to clarify its content.
            
            Examples
            ==========
            Content is a regular expression and the typeOfContent attribute is used to define the syntax of the regular expression content.
            
            Explanatory notes
            ===================
            This is a generic type + string where property name and documentation should be used to define any specification for the content. If international structured string content is required use TypedStructuredString.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="content"
                  type="xs:string"
                  minOccurs="1"
                  maxOccurs="1"
                  xml:id="TypedString-content">
        <xs:annotation>
          <xs:documentation>Content of the property expressed as a simple string.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfContent"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="TypedString-typeOfContent">
        <xs:annotation>
          <xs:documentation>Optional use of a controlled vocabulary to specifically type the associated content.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="WebLink"
              type="WebLinkXsdType"
              xml:id="WebLink">
    <!-- based on the UML data type DDICDIModels::DDICDILibrary::DataTypes::StructuredDataTypes::WebLink -->
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A web site (normally a URL) with information on type of site, privacy flag, and effective dates.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="WebLinkXsdType"
                  xml:id="WebLinkXsdType">
    <xs:annotation>
      <xs:documentation>Definition
            ============
            A web site (normally a URL) with information on type of site, privacy flag, and effective dates.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="effectiveDates"
                  type="DateRangeXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="WebLink-effectiveDates">
        <xs:annotation>
          <xs:documentation>The period for which this URL is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="isPreferred"
                  type="xs:boolean"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="WebLink-isPreferred">
        <xs:annotation>
          <xs:documentation>Set to True if this is the preferred URL.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="privacy"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="WebLink-privacy">
        <xs:annotation>
          <xs:documentation>Indicates the privacy level of this URL.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfWebsite"
                  type="ControlledVocabularyEntryXsdType"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="WebLink-typeOfWebsite">
        <xs:annotation>
          <xs:documentation>The type of Website URL, for example personal, project, organization, division, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="uri"
                  type="xs:anyURI"
                  minOccurs="0"
                  maxOccurs="1"
                  xml:id="WebLink-uri">
        <xs:annotation>
          <xs:documentation>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. Normally a URL.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
