<?xml version="1.0" encoding="UTF-8"?>
<!-- Created by Richie Wang and Bill Hazard Feb 14 2006 -->
<xs:schema xmlns="http://www.thedataweb.org/mifNewInstance" 
 xmlns:xs="http://www.w3.org/2001/XMLSchema" 
 targetNamespace="http://www.thedataweb.org/mifNewInstance" 
 elementFormDefault="qualified" 
 attributeFormDefault="unqualified">
    <xs:element name="mifSet">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
                <xs:element ref="mif"/>
            </xs:sequence>
            <xs:attribute name="version" type="xs:decimal" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="mif">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="documentDescription" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="producer" minOccurs="0">
                                <xs:complexType mixed="true">
                                    <xs:attribute name="prodDate" type="rightTruncatedIsoDateType" use="optional"/>
                                    <xs:attribute name="type" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="version" minOccurs="0">
                                <xs:complexType mixed="true">
                                    <xs:attribute name="modDate" type="rightTruncatedIsoDateType" use="optional"/>
                                    <xs:attribute name="versionnum" type="xs:decimal" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="notes" minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="dataSet">
                    <xs:complexType>
                        <xs:sequence>
                            <!-- these are inforation from an existing dataset -->
                            <xs:element name="component">
                                <xs:annotation>
                                    <xs:documentation>was "Component"</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:maxLength value="60"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="longName">
                                <xs:annotation>
                                    <xs:documentation>was "Long Name"</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:maxLength value="255"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="shortName">
                                <xs:annotation>
                                    <xs:documentation>was "ShortName"</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:maxLength value="12"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="subsurveyName" type="xs:string" minOccurs="0"/>

                            <!-- these are inforation for the new instance of the dataset -->
                            <xs:element name="instance">
                                <xs:annotation>
                                    <xs:documentation>new instance we are defining</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:maxLength value="100"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="insertInstanceAt">
                                <xs:annotation>
                                    <xs:documentation>where to insert the new instance</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="type" use="required">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:NMTOKEN">
                                                <xs:enumeration value="beginning"/>
                                                <xs:enumeration value="end"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="collectDate" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "dataSetCollectDate"</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="start" type="xs:string" use="required"/>
                                    <xs:attribute name="end" type="xs:string" use="required"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="refDate" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "dataSetRefDate"</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="start" type="xs:string" use="required"/>
                                    <xs:attribute name="end" type="xs:string" use="required"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="releaseDate" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "dataSetReleaseDate"</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="start" type="rightTruncatedIsoDateType" use="required"/>
                                    <xs:attribute name="end" type="rightTruncatedIsoDateType" use="required"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="virtualId" type="xs:string" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "VirtualId"</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="extractionHost">
                                <xs:complexType>
                                    <xs:attribute name="type" type="xs:integer" use="optional"/>
                                    <xs:attribute name="uri" type="xs:anyURI" use="required"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="tabulationHost">
                                <xs:complexType>
                                    <xs:attribute name="type" type="xs:integer" use="optional"/>
                                    <xs:attribute name="uri" type="xs:anyURI" use="required"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="keywords" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "dataSetKeywords"</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="keyword" maxOccurs="unbounded">
                                            <xs:annotation>
                                                <xs:documentation>was "dataKeyword"</xs:documentation>
                                            </xs:annotation>
                                            <xs:complexType mixed="true">
                                                <xs:attribute name="universe" type="xs:NMTOKEN"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
					<!-- changed from notesUrl maps to disclaim id on the component_instance table-->                           
                            <xs:element name="restriction" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>was "dataSetNotesUrl"</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="originaluri" type="xs:anyURI" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="variables" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">

					<!-- used only if we want to stop or redefine a start of 
					an existing item -->
                            <xs:element name="discontinueVar" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>variables that are being discontinued</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
						<xs:attribute name="id" type="xs:ID" use="required"/>
                                </xs:complexType>
                            </xs:element>

					<!-- we only need to put in a varible if it is newly 
					defined or if we wanted to stop an existing variable -->
                            <xs:element name="var" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
							<xs:element name="label" type="xs:string">
								<xs:annotation>
									<xs:documentation>was "varLabel" </xs:documentation>
								</xs:annotation>
							</xs:element>

							<xs:element name="concept" minOccurs="0">
								<xs:annotation>
									<xs:documentation>had attribute type</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="256"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>

                                        <xs:element name="embargo" minOccurs="0">
                                            <xs:complexType>
                                                <xs:attribute name="before" type="rightTruncatedIsoDateType" use="optional"/>
                                                <xs:attribute name="after" type="rightTruncatedIsoDateType" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="security">
                                            <xs:complexType>
                                                <xs:attribute name="level" default="public">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="public"/>
                                                            <xs:enumeration value="sponsor"/>
                                                            <xs:enumeration value="other"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="unit" minOccurs="0">
                                            <xs:complexType>
                                                <xs:attribute name="type" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="absolute"/>
                                                            <xs:enumeration value="average"/>
                                                            <xs:enumeration value="dollars"/>
                                                            <xs:enumeration value="minutes"/>
                                                            <xs:enumeration value="percent"/>
                                                            <xs:enumeration value="ratio"/>
										<xs:enumeration value="rate"/>
										<xs:enumeration value="inches"/>
										<xs:enumeration value="degrees"/>
                                                            <xs:enumeration value="squareMiles"/>
                                                            <xs:enumeration value="thousandsDollars"/>
										<xs:enumeration value="incidentPoint"/>
                                                            <xs:enumeration value="other"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="type">
                                            <xs:annotation>
                                                <xs:documentation>was "varType"</xs:documentation>
                                            </xs:annotation>
                                            <xs:complexType>
                                                <xs:attribute name="type" use="optional">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="aggregate"/>
                                                            <xs:enumeration value="microdata"/>
                                                            <xs:enumeration value="longitudinal"/>
                                                            <xs:enumeration value="timeseries"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="iterationgroup" type="xs:integer" use="optional"/>
                                                <xs:attribute name="datatype" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="numeric"/>
										<xs:enumeration value="floatingPoint"/>
                                                            <xs:enumeration value="character"/>
                                                            <xs:enumeration value="militaryTime"/>
                                                            <xs:enumeration value="impliedDecimal"/>
                                                            <xs:enumeration value="iso8602Date"/>
                                                            <xs:enumeration value="other"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="decimal" type="xs:integer" use="required"/>
                                                <xs:attribute name="geographyIndicator" use="optional">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="Y"/>
                                                            <xs:enumeration value="N"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="interval" use="optional">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="continuous"/>
                                                            <xs:enumeration value="discrete"/>
                                                            <xs:enumeration value="ordinal"/>
                                                            <xs:enumeration value="nominal"/>
                                                            <xs:enumeration value="percentage"/>
                                                            <xs:enumeration value="ratio"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="isweight" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="Y"/>
                                                            <xs:enumeration value="N"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="length" type="xs:integer" use="optional"/>
                                                <xs:attribute name="logicalType" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:NMTOKEN">
                                                            <xs:enumeration value="flag"/>
                                                            <xs:enumeration value="edited"/>
                                                            <xs:enumeration value="unedited"/>
                                                            <xs:enumeration value="weighting"/>
                                                            <xs:enumeration value="recode"/>
                                                            <xs:enumeration value="topcoded"/>
                                                            <xs:enumeration value="sampleControl"/>
                                                            <xs:enumeration value="geography"/>
                                                            <xs:enumeration value="replicateWeights"/>
                                                            <xs:enumeration value="recode"/>
                                                            <xs:enumeration value="other"/>
                                                            <xs:enumeration value="publicUse"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
								<!-- took away type="xs:IDREFS" because a weight might be a continuing variable. -->
                                                <xs:attribute name="weightvar" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="universe" minOccurs="0">
                                            <xs:complexType mixed="true">
                                                <xs:attribute name="type" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="values" minOccurs="0">
                                            <xs:complexType>
                                                <xs:choice maxOccurs="unbounded">
                                                    <xs:element name="range" maxOccurs="unbounded">
                                                        <xs:complexType mixed="true">
                                                            <xs:attribute name="max" type="xs:decimal" use="required"/>
                                                            <xs:attribute name="min" type="xs:decimal" use="required"/>
                                                            <xs:attribute name="missing" default="N">
                                                                <xs:simpleType>
                                                                    <xs:restriction base="xs:NMTOKEN">
                                                                        <xs:enumeration value="Y"/>
                                                                        <xs:enumeration value="N"/>
                                                                    </xs:restriction>
                                                                </xs:simpleType>
                                                            </xs:attribute>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="item" maxOccurs="unbounded">
                                                        <xs:complexType mixed="true">
                                                            <xs:attribute name="value" type="xs:string" use="required"/>
                                                            <xs:attribute name="missing" default="N">
                                                                <xs:simpleType>
                                                                    <xs:restriction base="xs:NMTOKEN">
                                                                        <xs:enumeration value="Y"/>
                                                                        <xs:enumeration value="N"/>
                                                                    </xs:restriction>
                                                                </xs:simpleType>
                                                            </xs:attribute>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:choice>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="longDscr" type="xs:string" minOccurs="0">
                                            <xs:annotation>
                                                <xs:documentation>was "longDescrp"</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                        <xs:element name="attachment" minOccurs="0">
                                            <xs:complexType mixed="true">
                                                <xs:attribute name="title" type="xs:string" use="required"/>
                                                <xs:attribute name="type" type="xs:string" use="required"/>
                                                <xs:attribute name="uri" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="synonyms" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="synonym" type="xs:string" maxOccurs="unbounded"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="notes" type="notesType" minOccurs="0" maxOccurs="unbounded"/>
                                    </xs:sequence>
						<!-- local attribute for each variable -->
                                    <xs:attribute name="name" use="optional"/>
						<!-- ID = actual column name also known as mnemonics -->
						<xs:attribute name="id" type="xs:ID" use="required"/>
						<xs:attribute name="continues" default="N" use="optional">
							<xs:simpleType>
								<xs:restriction base="xs:NMTOKEN">
									<xs:enumeration value="Y"/>
									<xs:enumeration value="N"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
				<!-- global attribute for all variables -->
				<xs:attribute name="continues" default="N" use="optional">
					<xs:simpleType>
						<xs:restriction base="xs:NMTOKEN">
							<xs:enumeration value="Y"/>
							<xs:enumeration value="N"/>
						</xs:restriction>
 					</xs:simpleType>
				</xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="version" type="xs:decimal" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="notesType" mixed="true">
        <xs:attribute name="author" use="required"/>
        <xs:attribute name="subject" use="required"/>
        <xs:attribute name="type" type="xs:NMTOKEN" use="required"/>
    </xs:complexType>
    <xs:simpleType name="rightTruncatedIsoDateType">
        <xs:union memberTypes="xs:date xs:gYear xs:gYearMonth"/>
    </xs:simpleType>
</xs:schema>
