<?xml version="1.0" encoding="UTF-8"?>
<!---->
<!--################################################################################       -->
<!--# Redfish Schema:  MemoryMetrics  v1.1.4-->
<!--#                                                                                      -->
<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
<!--# available at http://www.dmtf.org/standards/redfish                                   -->
<!--# Copyright 2014-2018 DMTF.                                                            -->
<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
<!--################################################################################       -->
<!---->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
    <edmx:Include Namespace="Resource.v1_0_0"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
    <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Measures.V1.xml">
    <edmx:Include Namespace="Org.OData.Measures.V1" Alias="Measures"/>
  </edmx:Reference>

  <edmx:DataServices>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>

      <EntityType Name="MemoryMetrics" BaseType="Resource.v1_0_0.Resource" Abstract="true">
        <Annotation Term="OData.Description" String="MemoryMetrics contains usage and health statistics for a single Memory module or device instance."/>
        <Annotation Term="OData.LongDescription" String="This resource shall be used to represent the Memory Metrics for a single Memory device in a Redfish implementation."/>
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record>
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record>
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record>
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Redfish.Uris">
          <Collection>
            <String>/redfish/v1/Systems/{ComputerSystemId}/Memory/{MemoryId}/MemoryMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Memory/{MemoryId}/MemoryMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Memory/{MemoryId}/MemoryMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Memory/{MemoryId}/MemoryMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Memory/{MemoryId}/MemoryMetrics</String>
          </Collection>
        </Annotation>
      </EntityType>

      <Action Name="ClearCurrentPeriod" IsBound="true">
        <Parameter Name="MemoryMetrics" Type="MemoryMetrics.v1_0_0.Actions"/>
        <Annotation Term="OData.Description" String="This sets the CurrentPeriod object values to zero."/>
        <Annotation Term="OData.LongDescription" String="This action shall set the CurrentPeriod object property values to zero."/>
      </Action>

    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_0_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="2016.1"/>

      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.MemoryMetrics">
        <Property Name="BlockSizeBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Block size in bytes."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the block size in bytes of all stucture elements."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="CurrentPeriod" Type="MemoryMetrics.v1_0_0.CurrentPeriod" Nullable="false">
          <Annotation Term="OData.Description" String="This object contains the Memory metrics since last reset or ClearCurrentPeriod action."/>
          <Annotation Term="OData.LongDescription" String="This object shall contain properties which describe the CurrentPeriod metrics for the current resource."/>
        </Property>
        <Property Name="LifeTime" Type="MemoryMetrics.v1_0_0.LifeTime" Nullable="false">
          <Annotation Term="OData.Description" String="This object contains the Memory metrics for the lifetime of the Memory."/>
          <Annotation Term="OData.LongDescription" String="This object shall contain properties which describe the LifeTime metrics for the current resource."/>
        </Property>
        <Property Name="HealthData" Type="MemoryMetrics.v1_0_0.HealthData" Nullable="false">
          <Annotation Term="OData.Description" String="This object describes the health information of the memory."/>
          <Annotation Term="OData.LongDescription" String="This object shall contain properties which describe the HealthData metrics for the current resource."/>
        </Property>
        <Property Name="Actions" Type="MemoryMetrics.v1_0_0.Actions" Nullable="false">
          <Annotation Term="OData.Description" String="The available actions for this resource."/>
          <Annotation Term="OData.LongDescription" String="The Actions property shall contain the available actions for this resource."/>
        </Property>
      </EntityType>

      <ComplexType Name="CurrentPeriod">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Property Name="BlocksRead" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Number of blocks read since reset."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be number of blocks read since reset."/>
        </Property>
        <Property Name="BlocksWritten" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Number of blocks written since reset."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be mumber of blocks written since reset."/>
        </Property>
        <Annotation Term="OData.Description" String="This object contains the Memory metrics since last reset or ClearCurrentPeriod action."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe the metrics of the memory since last time the ClearCurrentPeriod Action was performed or the system reset."/>
      </ComplexType>

      <ComplexType Name="LifeTime">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Property Name="BlocksRead" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Number of blocks read for the lifetime of the Memory."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be number of blocks read for the lifetime of the Memory."/>
        </Property>
        <Property Name="BlocksWritten" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Number of blocks written for the lifetime of the Memory."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be number of blocks written for the lifetime of the Memory."/>
        </Property>
        <Annotation Term="OData.Description" String="This object contains the Memory metrics for the lifetime of the Memory."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe the metrics of the memory since manufacturing."/>
      </ComplexType>

      <ComplexType Name="HealthData">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="This type describes the health information of the memory."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain properties which describe the HealthData metrics for the current resource."/>
        <Property Name="RemainingSpareBlockPercentage" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Remaining spare blocks in percentage."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the remaining spare blocks in percentage."/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
        <Property Name="LastShutdownSuccess" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Status of last shutdown."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the status ofthe  last shutdown, with true indicating success."/>
        </Property>
        <Property Name="DataLossDetected" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Data loss detection status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be data loss detection status, with true indicating data loss detected."/>
        </Property>
        <Property Name="PerformanceDegraded" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Performance degraded mode status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be performance degraded mode status, with true indicating perfomance degraded."/>
        </Property>
        <Property Name="AlarmTrips" Type="MemoryMetrics.v1_0_0.AlarmTrips" Nullable="false">
          <Annotation Term="OData.Description" String="Alarm trip information about the memory."/>
          <Annotation Term="OData.LongDescription" String="This object shall contain properties describe the types of alarms that have been raised by the memory."/>
        </Property>
      </ComplexType>

      <ComplexType Name="AlarmTrips">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="Alarm trip information about the memory.  These alarms are reset when the system resets.  Note that if they are re-discovered they can be reasserted."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain properties describing the types of alarms that have been raised by the memory.  These alarams shall be reset when the system resets.  Note that if they are re-discovered they can be reasserted."/>
        <Property Name="Temperature" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Temperature threshold crossing alarm trip detected status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be true if a temperature threshold alarm trip was detected."/>
        </Property>
        <Property Name="SpareBlock" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Spare block capacity crossing alarm trip detected status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be true if the spare block capacity crossing alarm trip was detected."/>
        </Property>
        <Property Name="UncorrectableECCError" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Uncorrectable data error threshold crossing alarm trip detected status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be true if the uncorrectable error threshold alarm trip was detected."/>
        </Property>
        <Property Name="CorrectableECCError" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Correctable data error threshold crossing alarm trip detected status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be true if the correctable error threshold crossing alarm trip was detected."/>
        </Property>
        <Property Name="AddressParityError" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="Address parity error detected status."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be true if an Address Parity Error was detected which could not be corrected by retry."/>
        </Property>
      </ComplexType>

      <ComplexType Name="Actions">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="The available actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
        <Property Name="Oem" Type="MemoryMetrics.v1_0_0.OemActions" Nullable="false">
          <Annotation Term="OData.Description" String="This property contains the available OEM specific actions for this resource."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain any additional OEM actions for this resource."/>
        </Property>
      </ComplexType>

      <ComplexType Name="OemActions">
        <Annotation Term="OData.AdditionalProperties" Bool="true"/>
        <Annotation Term="OData.Description" String="The available OEM specific actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain any additional OEM actions for this resource."/>
      </ComplexType>

    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_0_1">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show annotations in previous namespaces were updated."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_0_0.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_0_2">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show BlocksWritten in CurrentPeriod and LifeTime ComplexTypes, and annotations in previous namespaces were updated."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_0_1.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_0_3">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that AlarmTrips was modified to add semantics about AlarmTrip resets upon system reset."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_0_2.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_0_4">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to force the regeneration of JSON Schema so that OData properties are marked as required, and integer properties are marked as integer rather than number.  It was also created to add missing percent units onto existing properties."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_0_3.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_1_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="2016.2"/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_0_0.MemoryMetrics"/>

      <ComplexType Name="HealthData" BaseType="MemoryMetrics.v1_0_0.HealthData">
        <Property Name="PredictedMediaLifeLeftPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The percentage of reads and writes that are predicted to still be available for the media."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain an indicator of the percentage of life remaining in the media."/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
      </ComplexType>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_1_1">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show annotations in previous namespaces were updated."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_1_0.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_1_2">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show BlocksWritten in CurrentPeriod and LifeTime ComplexTypes, and annotations in previous namespaces were updated."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_1_1.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_1_3">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that AlarmTrips was modified to add semantics about AlarmTrip resets upon system reset."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_1_2.MemoryMetrics"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MemoryMetrics.v1_1_4">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to force the regeneration of JSON Schema so that OData properties are marked as required, and integer properties are marked as integer rather than number.  It was also created to add missing percent units onto existing properties."/>
      <EntityType Name="MemoryMetrics" BaseType="MemoryMetrics.v1_1_3.MemoryMetrics"/>
    </Schema>

  </edmx:DataServices>
</edmx:Edmx>
