<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 XML/Schema for Name Space Id:ml  Version:1.2.1.1 - Fri May 24 21:25:07 UTC 2024 -->
  <!-- Generated from the PDS4 Information Model Version 1.22.0.0 - System Build 14.1 -->
  <!-- *** This PDS4 product schema is an operational deliverable. *** -->
  <!--                                                                           -->
  <!--               Dictionary Stack                                            -->
  <!-- 1.22.0.0 - pds: - Common Dictionary                                       -->
  <!-- 1.2.1.1 - ml: - Machine Learning Analysis                                 -->
  <!--                                                                           -->
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://pds.nasa.gov/pds4/ml/v1"
    xmlns:ml="http://pds.nasa.gov/pds4/ml/v1"
    xmlns:pds="http://pds.nasa.gov/pds4/pds/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.2.1.1">
 
    <xs:import namespace="http://pds.nasa.gov/pds4/pds/v1" schemaLocation="https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1M00.xsd"/>
 
  <xs:annotation>
    <xs:documentation>
This data dictionary enables the specification of metadata that
    describes products generated by the use of a machine learning
    model.  It captures information about how the model was trained
    and evaluated. 
  
    ## CHANGE LOG ##

    1.2.1.1 
    -Clean up defitions of classes and attributes for clarity and grammar. Update User's guide to include new classes and
    attributes. 
    1.2.1.0
    -Create new parameter classes for Optimiztaion Algorithm, Preprocessing Method, Augmentation Method, and Calibration Method. 
    -Update minimum and maximum occurences for several classes and attributes.
    
    1.2.0.0
    - Add several new classes: Optimization Algorithm; Augmentation Method; 
        Preprocessing Method; Trained Model Hyperparameter; 
        Trained Model Architecture; Calibration Method; Trained Model File.
    - Add trained_model_creation_date attribute to Trained Machine Learning Model class.
    - Add trained_model_objective_function_name and trained_model_objective_function_description to 
        Machine Learning Algorithm class. 
        
    1.1.0.0
    - Change data_set_size to data_set_count.
    - Expand attribute definitions.
    - Update steward name.
    
    1.0.1.0
    - Address Oxygen-flagged errors.
    - Make data_set_size a ASCII_NonNegative_Integer.
    - Update some attribute and class definitions.
    - Update README file per latest template.
    - Use PDS Information Model 1.18 (I).

    1.0.0.0
    - Initial release.
  
    </xs:documentation>
  </xs:annotation>
 
  <xs:element name="Machine_Learning" type="ml:Machine_Learning"> </xs:element>

  <xs:complexType name="Augmentation_Method">
    <xs:annotation>
      <xs:documentation>The Augmentation_Method class contains
        information about a data set's augmentation method, including
        name and description.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="augmentation_method_name" nillable="true" type="ml:augmentation_method_name" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="augmentation_method_description" nillable="true" type="ml:augmentation_method_description" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Augmentation_Method_Parameter">
    <xs:annotation>
      <xs:documentation>The Augmentation_Method_Parameter class contains
        information about a data set's parameters, including their names
        and associated values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="augmentation_method_parameter" nillable="true" type="ml:augmentation_method_parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="augmentation_method_parameter_value" nillable="true" type="ml:augmentation_method_parameter_value" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Calibration_Method">
    <xs:annotation>
      <xs:documentation>The Calibration_Method class describes the
        Calibration Method. An external reference to a citation, such as
        a DOI, is optional.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="calibration_method_name" type="ml:calibration_method_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_method_description" type="ml:calibration_method_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Calibration_Method_Parameter">
    <xs:annotation>
      <xs:documentation>The Calibration_Method_Parameter class describes
        the Calibration Method parameters, including their names and
        associated values. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="calibration_method_parameter" type="ml:calibration_method_parameter" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_method_parameter_value" type="ml:calibration_method_parameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Data_Set">
    <xs:annotation>
      <xs:documentation>The Data_Set class is the container for classes
        and attributes describing the count, version, augmentation
        method, and preprocessing methods of data sets used by the
        machine learning model.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Augmentation_Method_Parameter" type="ml:Augmentation_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Preprocessing_Method_Parameter" type="ml:Preprocessing_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Machine_Learning">
    <xs:annotation>
      <xs:documentation>The Machine_Learning class is a container for
        all machine learning information in the label.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Trained_Machine_Learning_Model" type="ml:Trained_Machine_Learning_Model" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Machine_Learning_Algorithm">
    <xs:annotation>
      <xs:documentation>The Machine_Learning_Algorithm class is a
        container for classes and and attributes describing the
        algorithm type and learning style used. An external reference to
        a citation for the algorithm is required.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="algorithm_learning_style" type="ml:algorithm_learning_style" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="algorithm_type" type="ml:algorithm_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="algorithm_name" type="ml:algorithm_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_objective_function_name" type="ml:trained_model_objective_function_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_objective_function_description" type="ml:trained_model_objective_function_description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="ml:algorithm_learning_style = ('Semisupervised_Learning', 'Supervised_Learning', 'Unsupervised_Learning')"/> -->
    <!-- <xs:assert test="ml:algorithm_type = ('Convolutional_Neural_Network_Classifier')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Optimization_Algorithm">
    <xs:annotation>
      <xs:documentation>The Optimization_Algorithm class describes the
        optimization algorithm used, including name and
        description.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="optimization_algorithm_name" type="ml:optimization_algorithm_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="optimization_algorithm_description" type="ml:optimization_algorithm_description" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Optimization_Algorithm_Parameter ">
    <xs:annotation>
      <xs:documentation>The Optimization_Algorithm_Parameter class
        describes the optimization algorithm parameters used, including
        their names and associated values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="optimization_algorithm_parameter" type="ml:optimization_algorithm_parameter" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="optimization_algorithm_parameter_value" type="ml:optimization_algorithm_parameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Preprocessing_Method">
    <xs:annotation>
      <xs:documentation>The Preprocessing_Method class contains
        information about a data set's preprocessing
        method.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="preprocessing_method_name" nillable="true" type="ml:preprocessing_method_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="preprocessing_method_description" nillable="true" type="ml:preprocessing_method_description" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Preprocessing_Method_Parameter">
    <xs:annotation>
      <xs:documentation>The Preprocessing_Method_Parameter class
        contains information about a data set's preprocessing method
        parameters, including their names and associated
        values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="preprocessing_method_parameter" nillable="true" type="ml:preprocessing_method_parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="preprocessing_method_parameter_value" nillable="true" type="ml:preprocessing_method_parameter_value" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Test_Performance">
    <xs:annotation>
      <xs:documentation>The Test_Performance class contains information
        about a trained model's performance on the test
        set.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="performance_measure" type="ml:performance_measure" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="performance_score" type="ml:performance_score" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Test_Set">
    <xs:annotation>
      <xs:documentation>The Test_Set class belongs to the Data_Set class
        family and contains attributes describing the size and version
        of the data set used to test the machine learning model (i.e.,
        in terms of generalization to previously unseen
        data).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Augmentation_Method_Parameter" type="ml:Augmentation_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method_Parameter" type="ml:Preprocessing_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Trained_Machine_Learning_Model">
    <xs:annotation>
      <xs:documentation>The Trained_Machine_Learning_Model class is a
        container for information about how a given model was trained
        and evaluated. Machine_Learning_Algorithm, Training_Set,
        Optimization_Algorithm, Optimization_Algorithm_Parameter,
        Trained_Model_Hyperparameter, and Trained_Model_File are
        required, while Validation_Set, Test_Set, Test_Performance,
        Trained_Model_Architecture, Calibration_Method, and
        Calibration_Method_Parameter are optional. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_version_id" type="ml:trained_model_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_name" type="ml:trained_model_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_creation_date" type="ml:trained_model_creation_date" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Machine_Learning_Algorithm" type="ml:Machine_Learning_Algorithm" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Training_Set" type="ml:Training_Set" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Validation_Set" type="ml:Validation_Set" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Test_Set" type="ml:Test_Set" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Test_Performance" type="ml:Test_Performance" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Optimization_Algorithm" type="ml:Optimization_Algorithm" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Optimization_Algorithm_Parameter " type="ml:Optimization_Algorithm_Parameter " minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_Hyperparameter" type="ml:Trained_Model_Hyperparameter" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_Architecture" type="ml:Trained_Model_Architecture" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Calibration_Method" type="ml:Calibration_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Calibration_Method_Parameter" type="ml:Calibration_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_File" type="ml:Trained_Model_File" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_Architecture">
    <xs:annotation>
      <xs:documentation>The Trained_Model_Architecture class describes
        the trained model architecture. An internal reference to the
        architecture is optional.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_architecture_name" type="ml:trained_model_architecture_name" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="trained_model_architecture_version_id" type="ml:trained_model_architecture_version_id" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="trained_model_architecture_description" type="ml:trained_model_architecture_description" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_File">
    <xs:annotation>
      <xs:documentation>The Trained_Model_File class describes the
        trained model file. An external reference for the trained model
        file is required.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_file_name" type="ml:trained_model_file_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_file_description" type="ml:trained_model_file_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_Hyperparameter">
    <xs:annotation>
      <xs:documentation>The Trained_Model_Hyperparameter class describes
        the trained model hyperparameters, including their names and
        associated values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_hyperparameter_name" type="ml:trained_model_hyperparameter_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_hyperparameter_value" type="ml:trained_model_hyperparameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Training_Set">
    <xs:annotation>
      <xs:documentation>The Training_Set class belongs to the Data_Set
        class family and contains attributes that describe the size and
        version of the data set used to train the machine learning
        model.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Augmentation_Method_Parameter" type="ml:Augmentation_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method_Parameter" type="ml:Preprocessing_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Validation_Set">
    <xs:annotation>
      <xs:documentation>The Validation_Set class belongs to the Data_Set
        class family and contains attributes that describe the size and
        version of the data set used to validate the machine learning
        model (e.g., to choose the best
        hyperparameters).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Augmentation_Method_Parameter" type="ml:Augmentation_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method_Parameter" type="ml:Preprocessing_Method_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

    <xs:annotation>
      <xs:documentation>This section contains the simpleTypes that provide more constraints
        than those at the base data type level. The simpleTypes defined here build on the base data
        types. This is another component of the common dictionary and therefore falls within the
        common namespace.
      </xs:documentation>
    </xs:annotation>

  <xs:simpleType name="algorithm_learning_style">
    <xs:annotation>
      <xs:documentation>The algorithm_learning_style attribute describes
        the type of learning style employed by the algorithm to solve a
        problem. Specifically, the learning style depends on whether
        labeled or unlabeled data was employed to train the model.
        Labeled data includes observations that are associated with a
        desired output such as a class or numeric
        value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="algorithm_name">
    <xs:annotation>
      <xs:documentation>The algorithm_name attribute specifies the name
        of the algorithm used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="algorithm_type">
    <xs:annotation>
      <xs:documentation>The algorithm_type attribute describes the kind
        of algorithm used, such as a regression model, neural network,
        tree, etc.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="augmentation_method_description">
    <xs:annotation>
      <xs:documentation>The augmentation_method_description attribute
        describes the augmentation method in more
        detail.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_name">
    <xs:annotation>
      <xs:documentation>The augmentation_method_name attribute names any
        method by which an image was augmented, e.g. 180 degrees
        counterclockwise rotation; horizontal flipping; brightness
        adjustment.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_parameter">
    <xs:annotation>
      <xs:documentation>The augmentation_method_parameter attribute
        names any parameters, e.g. gamma.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The augmentation_method_parameter_value
        attribute specifies the value of the named parameter, e.g. for a
        parameter "gamma," the value could be [0.5,
        1.5].</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="calibration_method_description">
    <xs:annotation>
      <xs:documentation>The calibration_method_description attribute
        specifies any additional details about the calibration method
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_name">
    <xs:annotation>
      <xs:documentation>The calibration_method_name attribute specifies
        the name of the calibration used, e.g. "temperature
        scaling."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_parameter">
    <xs:annotation>
      <xs:documentation>The calibration_method_parameter attribute
        specifies the name of the parameter used, e.g.
        "temperature."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The calibration_method_parameter_value attribute
        sepcifies the value of the named parameter, e.g. for a parameter
        "temperature," the value could be "1.31."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="data_set_count">
    <xs:annotation>
      <xs:documentation>The data_set_count attribute provides the number
        of items in the data set.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="data_set_version_id">
    <xs:annotation>
      <xs:documentation>The data_set_version_id attribute specifies the
        data set version number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_description">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_description attribute
        specifies any additional details about the optimization
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_name">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_name attribute
        specifies the name of the operation algorithm, e.g. "stochastic
        gradient descent."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_parameter">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_parameter attribute
        specifies the name of a parameter used, e.g. "conv1 learning
        rate," or "weight decay."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_parameter_value">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_parameter_value
        attribute specifies the value of the named parameter, e.g. for a
        parameter "conv1 learning rate," the value could be
        "0.001."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="performance_measure">
    <xs:annotation>
      <xs:documentation>The performance_measure attribute specifies the
        name of the measure (or metric) used to report performance of
        the model on the test set.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="performance_score">
    <xs:annotation>
      <xs:documentation>The performance_score attribute reports the
        numeric score the model achieved using performance_measure on
        the test set. Values are not constrained since the measure may
        not be a strict metric. Examples could include accuracy, loss,
        runtime, memory consumption, etc.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="preprocessing_method_description">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_description attribute
        describes the preprocessing method in more
        detail.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_name">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_name attribute names
        any method by which an image was preprocessed, e.g. center
        cropping.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_parameter">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_parameter attribute
        names any preprocessing parameters.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_parameter_value
        attribute specifies the value of the named preprocessing
        parameter.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="trained_model_architecture_description">
    <xs:annotation>
      <xs:documentation>The trained_model_architecture_description
        attribute specifies any additional details about the
        architecture.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_architecture_name">
    <xs:annotation>
      <xs:documentation>The trained_model_architecture_name attribute
        specifies the name of the architecture, e.g.
        "MSLNet."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_architecture_version_id">
    <xs:annotation>
      <xs:documentation> The trained_model_architecture_version_id
        attribute specifies the architecture version
        number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_creation_date">
    <xs:annotation>
      <xs:documentation>The trained_model_creation_date attribute
        specifies the date that the model was created, in Year/Month/Day
        format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_YMD">
  <!-- format="YYYY-MM-DD" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_file_description">
    <xs:annotation>
      <xs:documentation>The trained_model_file_description attribute
        specifies any additional details about the trained model file,
        e.g. the file format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_file_name">
    <xs:annotation>
      <xs:documentation>The trained_model_file_name attribute specifies
        the name of the trained model file.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_hyperparameter_name">
    <xs:annotation>
      <xs:documentation>The trained_model_hyperparameter_name attribute
        specifies the name of the hyperparameter, e.g. "batch size,"
        "normalization method," "number of epochs," "conv1 dropout
        rate," "conv2 dropout rate."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_hyperparameter_value">
    <xs:annotation>
      <xs:documentation>The trained_model_hyperparameter_value attribute
        specifies the value of the hyperparameter named, e.g."z-score"
        for normalization method, "100" for "number of
        epochs."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_name">
    <xs:annotation>
      <xs:documentation>The trained_model_name attribute specifies the
        name of the model used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_objective_function_description">
    <xs:annotation>
      <xs:documentation>The trained_model_objective_function_description
        attribute describes the objective function
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_objective_function_name">
    <xs:annotation>
      <xs:documentation>The trained_model_objective_function_name
        attribute specifies the name of the objective function
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_version_id">
    <xs:annotation>
      <xs:documentation>The trained_model_version_id attribute specifies
        the trained model version number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>
</xs:schema>
