<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">

  <xs:element name="ResultsChemistryAndBiology" type="resultsChemistryAndBiology"/>

  <xs:element name="ResultsDomain" type="resultsDomain"/>

  <xs:element name="ResultsPhysics" type="resultsPhysics"/>

  <xs:element name="ResultsQuick" type="resultsQuick"/>

  <xs:element name="ResultsRadiation" type="resultsRadiation"/>

  <xs:element name="ResultsReferenceData" type="resultsReferenceData"/>

  <xs:element name="quickSearchCriteria" type="quickSearchCriteria"/>

  <xs:element name="searchCriteriaChemistryAndBiology" type="searchCriteriaChemistryAndBiology"/>

  <xs:element name="searchCriteriaPhysics" type="searchCriteriaPhysics"/>

  <xs:element name="searchCriteriaRadiation" type="searchCriteriaRadiation"/>

  <xs:complexType name="quickSearchCriteria">
    <xs:sequence>
      <xs:element name="page" type="xs:int"/>
      <xs:element name="pageSize" type="xs:int"/>
      <xs:element name="showTable" type="xs:boolean"/>
      <xs:element minOccurs="0" name="keywords" type="xs:string"/>
      <xs:element minOccurs="0" name="includedFilters">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="includedFilter" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="excludedFilters">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="excludedFilter" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="status" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="searchCriteriaChemistryAndBiology">
    <xs:complexContent>
      <xs:extension base="searchCriteriaCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="metrologyAreaLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="categoryLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="analyteLabel" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType abstract="true" name="searchCriteriaCommon">
    <xs:sequence>
      <xs:element name="page" type="xs:int"/>
      <xs:element name="pageSize" type="xs:int"/>
      <xs:element name="showTable" type="xs:boolean"/>
      <xs:element minOccurs="0" name="keywords" type="xs:string"/>
      <xs:element minOccurs="0" name="countries">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="countryLabel" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="publicDateFrom" type="xs:string"/>
      <xs:element minOccurs="0" name="publicDateTo" type="xs:string"/>
      <xs:element minOccurs="0" name="status" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="searchCriteriaPhysics">
    <xs:complexContent>
      <xs:extension base="searchCriteriaCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="metrologyAreaLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="branchLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="physicsCode" type="xs:string"/>
          <xs:element minOccurs="0" name="serviceLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="subServiceLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="individualServiceLabel" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="searchCriteriaRadiation">
    <xs:complexContent>
      <xs:extension base="searchCriteriaCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="metrologyAreaLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="branchLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="quantityLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="mediumLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="sourceLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="nuclideLabel" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultAggregation">
    <xs:sequence>
      <xs:element minOccurs="0" name="name" type="xs:string"/>
      <xs:element minOccurs="0" name="values">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="values" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultChemistryAndBiology">
    <xs:complexContent>
      <xs:extension base="resultCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="uncertaintyConvention" type="uncertaintyConversion"/>
          <xs:element minOccurs="0" name="categoryValue" type="xs:string"/>
          <xs:element minOccurs="0" name="categoryLabel" type="xs:int"/>
          <xs:element minOccurs="0" name="subCategoryValue" type="xs:string"/>
          <xs:element minOccurs="0" name="subCategoryLabel" type="xs:int"/>
          <xs:element minOccurs="0" name="kcdbServiceCategory" type="xs:string"/>
          <xs:element minOccurs="0" name="analyteMatrix" type="xs:string"/>
          <xs:element minOccurs="0" name="analyteValue" type="xs:string"/>
          <xs:element minOccurs="0" name="crm" type="resultUnit"/>
          <xs:element minOccurs="0" name="crmUncertainty" type="resultUnit"/>
          <xs:element minOccurs="0" name="mechanism" type="xs:string"/>
          <xs:element minOccurs="0" name="crmConfidenceLevel" type="xs:double"/>
          <xs:element minOccurs="0" name="crmCoverageFactor" type="xs:double"/>
          <xs:element minOccurs="0" name="crmUncertaintyEquation" type="resultEquation"/>
          <xs:element minOccurs="0" name="crmUncertaintyTable" type="resultTable"/>
          <xs:element minOccurs="0" name="crmUncertaintyMode" type="absoluteRelative"/>
          <xs:element minOccurs="0" name="measurmentTechnique" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultCommon">
    <xs:sequence>
      <xs:element minOccurs="0" name="id" type="xs:int"/>
      <xs:element minOccurs="0" name="status" type="xs:string"/>
      <xs:element minOccurs="0" name="statusDate" type="xs:string"/>
      <xs:element minOccurs="0" name="kcdbCode" type="xs:string"/>
      <xs:element minOccurs="0" name="domainCode" type="xs:string"/>
      <xs:element minOccurs="0" name="metrologyAreaLabel" type="xs:string"/>
      <xs:element minOccurs="0" name="rmo" type="xs:string"/>
      <xs:element minOccurs="0" name="countryValue" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiCode" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiName" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiIdentifier" type="xs:int"/>
      <xs:element minOccurs="0" name="nmiRorIdentifier" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiWikiDataIdentifier" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiServiceCode" type="xs:string"/>
      <xs:element minOccurs="0" name="nmiServiceLink" type="xs:string"/>
      <xs:element minOccurs="0" name="quantityValue" type="xs:string"/>
      <xs:element minOccurs="0" name="cmc" type="resultUnit"/>
      <xs:element minOccurs="0" name="cmcUncertainty" type="resultUnit"/>
      <xs:element minOccurs="0" name="cmcBaseUnit" type="resultUnit"/>
      <xs:element minOccurs="0" name="cmcUncertaintyBaseUnit" type="resultUnit"/>
      <xs:element minOccurs="0" name="confidenceLevel" type="xs:double"/>
      <xs:element minOccurs="0" name="coverageFactor" type="xs:double"/>
      <xs:element minOccurs="0" name="uncertaintyEquation" type="resultEquation"/>
      <xs:element minOccurs="0" name="uncertaintyTable" type="resultTable"/>
      <xs:element minOccurs="0" name="uncertaintyMode" type="absoluteRelative"/>
      <xs:element minOccurs="0" name="traceabilitySource" type="xs:string"/>
      <xs:element minOccurs="0" name="comments" type="xs:string"/>
      <xs:element minOccurs="0" name="groupIdentifier" type="xs:string"/>
      <xs:element minOccurs="0" name="publicationDate" type="xs:string"/>
      <xs:element minOccurs="0" name="approvalDate" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultUnit">
    <xs:sequence>
      <xs:element minOccurs="0" name="lowerLimit" type="xs:double"/>
      <xs:element minOccurs="0" name="upperLimit" type="xs:double"/>
      <xs:element minOccurs="0" name="unit" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultEquation">
    <xs:sequence>
      <xs:element minOccurs="0" name="equation" type="xs:string"/>
      <xs:element minOccurs="0" name="equationComment" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultTable">
    <xs:sequence>
      <xs:element minOccurs="0" name="tableName" type="xs:string"/>
      <xs:element name="tableRows" type="xs:int"/>
      <xs:element name="tableCols" type="xs:int"/>
      <xs:element minOccurs="0" name="tableComment" type="xs:string"/>
      <xs:element minOccurs="0" name="tableContents" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultPhysics">
    <xs:complexContent>
      <xs:extension base="resultCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="internationalStandard" type="xs:string"/>
          <xs:element minOccurs="0" name="branchValue" type="xs:string"/>
          <xs:element minOccurs="0" name="branchLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="serviceValue" type="xs:string"/>
          <xs:element minOccurs="0" name="subServiceValue" type="xs:string"/>
          <xs:element minOccurs="0" name="individualServiceValue" type="xs:string"/>
          <xs:element minOccurs="0" name="physicsCode" type="xs:string"/>
          <xs:element minOccurs="0" name="kcdbServiceCategory" type="xs:string"/>
          <xs:element minOccurs="0" name="instrument" type="xs:string"/>
          <xs:element minOccurs="0" name="instrumentMethod" type="xs:string"/>
          <xs:element minOccurs="0" name="parameters">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="parameters" type="resultParam"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultParam">
    <xs:sequence>
      <xs:element minOccurs="0" name="parameterName" type="xs:string"/>
      <xs:element minOccurs="0" name="parameterValue" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultRadiation">
    <xs:complexContent>
      <xs:extension base="resultCommon">
        <xs:sequence>
          <xs:element minOccurs="0" name="branchValue" type="xs:string"/>
          <xs:element minOccurs="0" name="branchLabel" type="xs:string"/>
          <xs:element minOccurs="0" name="instrument" type="xs:string"/>
          <xs:element minOccurs="0" name="instrumentMethod" type="xs:string"/>
          <xs:element minOccurs="0" name="sourceValue" type="xs:string"/>
          <xs:element minOccurs="0" name="mediumValue" type="xs:string"/>
          <xs:element minOccurs="0" name="nuclideValue" type="xs:string"/>
          <xs:element minOccurs="0" name="radiationSpecification" type="xs:string"/>
          <xs:element minOccurs="0" name="internationalStandard" type="xs:string"/>
          <xs:element minOccurs="0" name="referenceStandard" type="xs:string"/>
          <xs:element minOccurs="0" name="radiationCode" type="xs:string"/>
          <xs:element minOccurs="0" name="kcdbServiceCategory" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultFilter">
    <xs:sequence>
      <xs:element minOccurs="0" name="code" type="xs:string"/>
      <xs:element minOccurs="0" name="name" type="xs:string"/>
      <xs:element name="count" type="xs:long"/>
      <xs:element name="order" type="xs:int"/>
      <xs:element minOccurs="0" name="children">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="children" type="resultFilter"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType abstract="true" name="results">
    <xs:sequence>
      <xs:element minOccurs="0" name="versionApiKcdb" type="xs:string"/>
      <xs:element name="pageNumber" type="xs:int"/>
      <xs:element name="pageSize" type="xs:int"/>
      <xs:element name="numberOfElements" type="xs:int"/>
      <xs:element name="totalElements" type="xs:long"/>
      <xs:element name="totalPages" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultsChemistryAndBiology">
    <xs:complexContent>
      <xs:extension base="results">
        <xs:sequence>
          <xs:element minOccurs="0" name="data">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="data" type="resultChemistryAndBiology"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultsPhysics">
    <xs:complexContent>
      <xs:extension base="results">
        <xs:sequence>
          <xs:element minOccurs="0" name="data">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="data" type="resultPhysics"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultsQuick">
    <xs:sequence>
      <xs:element minOccurs="0" name="versionApiKcdb" type="xs:string"/>
      <xs:element name="pageNumber" type="xs:int"/>
      <xs:element name="pageSize" type="xs:long"/>
      <xs:element name="numberOfElements" type="xs:int"/>
      <xs:element name="totalElements" type="xs:long"/>
      <xs:element name="totalPages" type="xs:int"/>
      <xs:element minOccurs="0" name="data">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="data" type="xs:anyType"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="filtersList">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="filtersList" type="resultFilter"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="aggregations">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="aggregations" type="resultAggregation"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultsRadiation">
    <xs:complexContent>
      <xs:extension base="results">
        <xs:sequence>
          <xs:element minOccurs="0" name="data">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="data" type="resultRadiation"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="domain">
    <xs:sequence>
      <xs:element minOccurs="0" name="code" type="xs:string"/>
      <xs:element minOccurs="0" name="name" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="referenceData">
    <xs:sequence>
      <xs:element name="id" type="xs:int"/>
      <xs:element minOccurs="0" name="label" type="xs:string"/>
      <xs:element minOccurs="0" name="value" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultsDomain">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="domain" type="domain"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="resultsReferenceData">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="referenceData" type="referenceData"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="uncertaintyConversion">
    <xs:restriction base="xs:string">
      <xs:enumeration value="One"/>
      <xs:enumeration value="Two"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="absoluteRelative">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Absolute"/>
      <xs:enumeration value="Relative"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
