<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by ICT (Stichting Deltares) -->
<!--Delft FEWS (Copyright 2003 WL | Delft Hydraulics) -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:fews="http://www.wldelft.nl/fews" targetNamespace="http://www.wldelft.nl/fews" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<include schemaLocation="sharedTypes.xsd"/>
	<!--Performance Indicator Schema with element  performanceIndicatorSets-->
	<element name="performanceIndicatorSets" type="fews:PerformanceIndicatorSetsComplexType">
		<annotation>
			<documentation>Performance Indicator Sets element</documentation>
		</annotation>
	</element>
	<!--Complex Types definitions for different types of Performance Indicator-->
	<!--PerformanceIndicatorSets-->
	<complexType name="PerformanceIndicatorSetsComplexType">
		<annotation>
			<documentation>Performance Indicator Sets contains one or more Performance Indicator Set </documentation>
		</annotation>
		<sequence>
			<element name="logLevel" type="fews:logLevelEnumStringType" default="INFO" minOccurs="0">
				<annotation>
					<documentation>Indicate the Logging Level : Five levels are available - (in order of increasing severity)  Debug, Info, Warn, Error and Fatal: If the user would not like to see DEBUG messages then the logLevel here should be set to INFO. This means that all INFO, WARN. ERROR and FATAL will be written but no DEBUG message. Since DENIG message is of low severity then INFO messages.</documentation>
				</annotation>
			</element>
			<element name="performanceIndicatorSet" type="fews:PerformanceIndicatorSetComplexType" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="version" type="fews:versionStringType" use="required" fixed="1.1"/>
		<attribute name="debugLevel" type="int" use="optional" fixed="0"/>
	</complexType>
	<!--Performance IndicatorSet-->
	<complexType name="PerformanceIndicatorSetComplexType">
		<annotation>
			<documentation>Performance Indicator Set defines input + output time series set and choice of performance indicator type</documentation>
		</annotation>
		<sequence>
			<element name="inputVariable" type="fews:VariableComplexType" maxOccurs="unbounded"/>
			<choice minOccurs="0">
				<element name="forecastSelectionPeriod" type="fews:RelativePeriodComplexType">
					<annotation>
						<documentation>Use this period to make selection of (Simulated) Forecast TimeSeries. All forecasts with T0 within this period will be selected.</documentation>
					</annotation>
				</element>
				<element name="observedSelectionPeriod" type="fews:RelativePeriodComplexType">
					<annotation>
						<documentation>Use this period to make selection of (Simulated) Forecast TimeSeries. All forecasts with data within this period will be selected.</documentation>
					</annotation>
				</element>
			</choice>
			<choice>
				<element name="modulePerformanceIndicator" type="fews:ModulePerformanceComplexType" maxOccurs="unbounded"/>
				<element name="leadTimeAccuracyIndicator" type="fews:LeadTimeAccuracyComplexType" maxOccurs="unbounded"/>
				<element name="thresholdTimingIndicator" type="fews:ThresholdTimingAccuracyComplexType" maxOccurs="unbounded"/>
				<element name="precipitationPerformanceIndicator" type="fews:PrecipitationPerformanceComplexType" maxOccurs="unbounded"/>
				<element name="peaksAccuracyIndicator" type="fews:PeaksAccuracyComplexType" maxOccurs="unbounded"/>
			</choice>
			<element name="outputVariable" type="fews:VariableComplexType" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="performanceIndicatorId" type="fews:idStringType" use="optional"/>
	</complexType>
	<!--ModulePerformance-->
	<complexType name="ModulePerformanceComplexType">
		<sequence minOccurs="0">
			<element name="additionalCriteria" type="fews:CriteriaComplexType" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="indicatorType" type="fews:modulePerformanceEnumStringType" use="required"/>
		<attribute name="calculatedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="observedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="required"/>
		<attribute name="sampleOutputVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2021.01  When configured then the total number of values (samples) used for the analysis will be written to the output time series </documentation>
			</annotation>
		</attribute>
		<attribute name="analysedCalculatedVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2021.01  When configured then exactly that part of the calculated series, which was used for the analysis, will be written to the output series referenced with this variable Id</documentation>
			</annotation>
		</attribute>
		<attribute name="analysedObservedVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2021.01 When configured then exactly that part of the observed series, which was used for the analysis, will be written to the output series referenced with this variable Id</documentation>
			</annotation>
		</attribute>
	</complexType>
	<!--Lead Time Accuracy-->
	<complexType name="LeadTimeAccuracyComplexType">
		<sequence>
			<element name="additionalCriteria" type="fews:CriteriaComplexType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="classBreaks" type="fews:ThresholdClassBreaksComplexType" minOccurs="0"/>
			<choice>
				<element name="leadTimes" type="fews:LeadTimesComplexType"/>
				<element name="leadTimePeriods" type="fews:LeadTimePeriodsComplexType">
					<annotation>
						<documentation>Since 2014.02.  Periods  the indicator should be computed for</documentation>
					</annotation>
				</element>
			</choice>
		</sequence>
		<attribute name="indicatorType" type="fews:leadTimeAccuracyEnumStringType" use="required"/>
		<attribute name="calculatedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="observedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional"/>
		<attribute name="sampleOutputVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2017.02  When configured then the total number of values (samples) used for the analysis will be written to the output time series </documentation>
			</annotation>
		</attribute>
		<attribute name="intermediateValuesVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2017.02  When configured then the intermediate values (as visible in log file if debug is on) will be written to the output series referenced with this variable Id. Only applicable if  leadTimePeriods  are configured.</documentation>
			</annotation>
		</attribute>
		<attribute name="analysedCalculatedVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2017.02  When configured then exactly that part of the calculated series, which was used for the analysis, will be written to the output series referenced with this variable Id. Only applicable if  leadTimePeriods  are configured.</documentation>
			</annotation>
		</attribute>
		<attribute name="analysedObservedVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2017.02  When configured then exactly that part of the observed series, which was used for the analysis, will be written to the output series referenced with this variable Id. Only applicable if  leadTimePeriods  are configured.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<!--Threshold Timing Accuracy -->
	<complexType name="ThresholdTimingAccuracyComplexType">
		<sequence minOccurs="0">
			<element name="additionalCriteria" type="fews:CriteriaComplexType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="thresholdIds" type="fews:ThresholdIdsComplexType"/>
		</sequence>
		<attribute name="indicatorType" type="fews:thresholdTimingAccuracyEnumStringType" use="required"/>
		<attribute name="calculatedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="observedVariableId" type="fews:idStringType" use="required"/>
	</complexType>
	<!--PrecipitationPerformance-->
	<complexType name="PrecipitationPerformanceComplexType">
		<sequence>
			<element name="additionalCriteria" type="fews:CriteriaComplexType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="accumulationPeriod" type="fews:RelativePeriodComplexType"/>
			<element name="assessmentInterval" type="fews:TimeSpanComplexType"/>
		</sequence>
		<attribute name="indicatorType" type="fews:precipitationPerformanceEnumStringType" use="required"/>
		<attribute name="observedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="forecastVariableId" type="fews:idStringType" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="required"/>
	</complexType>
	<!--Peaks Accuracy-->
	<complexType name="PeaksAccuracyComplexType">
		<sequence>
			<element name="additionalCriteria" type="fews:CriteriaComplexType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Use additionalCriteria  to configure special PeakAccuracy indicators:  1.  "timewindowinseconds" :  indicator will be computed for the time range around the peak. Use "timewindowinseconds"  to configured time span before and after the peaks.  2. "timeshiftwindowinseconds" :  the time difference of simulated and observed peaks will be computed over the time range around the peak. To compute the time difference, the simulated time series are temporally shifted to find the  minimum error.  Use "timeshiftwindowinseconds"  to configured time span before and after the peaks.  Also, use "timeshiftwindowinseconds" only together with statistical function RMSE or MSE.  The special peak indicators as mentioned under 1 and 2 are applicable only for single simulated time series.  If several simulated time series  are found in the forecastSelectionPeriod, the latest one will be used.</documentation>
				</annotation>
			</element>
			<element name="selectPeaks" type="fews:SelectPeaksComplexType"/>
		</sequence>
		<attribute name="indicatorType" type="fews:peakAccuracyEnumStringType" use="required"/>
		<attribute name="calculatedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="observedVariableId" type="fews:idStringType" use="required"/>
		<attribute name="referenceVariableId" type="fews:idStringType" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional"/>
	</complexType>
	<!-- -->
	<complexType name="CriteriaComplexType">
		<sequence minOccurs="0">
			<element name="description" type="string"/>
		</sequence>
		<attribute name="criteria" type="fews:criteriaEnumStringType" use="required"/>
		<attribute name="value" type="string" use="required"/>
		<attribute name="violationOfCriteriaFaggedAs" type="fews:flagEnumStringType" use="optional" default="doubtful"/>
	</complexType>
	<!--LeadTimesComplexType  -->
	<complexType name="LeadTimesComplexType">
		<sequence>
			<element name="leadTime" type="fews:LeadTimeComplexType" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="unit" type="fews:timeStepUnitEnumStringType" use="required"/>
		<attribute name="divider" type="int" use="optional" default="1"/>
		<attribute name="multiplier" type="int" use="optional" default="1"/>
	</complexType>
	<!-- -->
	<complexType name="LeadTimeComplexType">
		<attribute name="time" type="int" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional"/>
	</complexType>
	<!-- -->
	<complexType name="LeadTimePeriodsComplexType">
		<sequence>
			<element name="leadTimePeriod" type="fews:LeadTimePeriodComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Period  the indicator should be computed for</documentation>
				</annotation>
			</element>
		</sequence>
		<attribute name="unit" type="fews:timeStepUnitEnumStringType" use="required">
			<annotation>
				<documentation>Time unit  used for start and end of the periods</documentation>
			</annotation>
		</attribute>
		<attribute name="divider" type="int" use="optional" default="1">
			<annotation>
				<documentation>Time unit  used for start and end of the periods</documentation>
			</annotation>
		</attribute>
		<attribute name="multiplier" type="int" use="optional" default="1">
			<annotation>
				<documentation>Time unit  used for start and end of the periods</documentation>
			</annotation>
		</attribute>
	</complexType>
	<!-- -->
	<complexType name="LeadTimePeriodComplexType">
		<attribute name="start" type="int" use="required">
			<annotation>
				<documentation>Start of  the period in units configured with attribute "unit"</documentation>
			</annotation>
		</attribute>
		<attribute name="end" type="int" use="required">
			<annotation>
				<documentation>End of  the period in units configured with attribute "unit"</documentation>
			</annotation>
		</attribute>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Id of the timeSeriesSet the indicator for this  period should be writte to</documentation>
			</annotation>
		</attribute>
		<attribute name="sampleOutputVariableId" type="fews:idStringType" use="optional">
			<annotation>
				<documentation>Since 2017.02. Id of the timeSeriesSet the number of samples in  this period should be writte to</documentation>
			</annotation>
		</attribute>
	</complexType>
	<!-- -->
	<!--PeaksComplexType  -->
	<complexType name="SelectPeaksComplexType">
		<sequence>
			<element name="selectPeak" type="fews:SelectPeakComplexType" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<!-- -->
	<complexType name="SelectPeakComplexType">
		<attribute name="peak" type="int" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional"/>
	</complexType>
	<!-- -->
	<complexType name="ThresholdIdsComplexType">
		<sequence>
			<element name="thresholdId" type="fews:ThresholdIdComplexType" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<!-- -->
	<complexType name="ThresholdIdComplexType">
		<attribute name="intId" type="fews:idIntType" use="required"/>
		<attribute name="outputVariableId" type="fews:idStringType" use="optional"/>
	</complexType>
	<!-- -->
	<complexType name="ThresholdClassBreaksComplexType">
		<choice>
			<element name="thresholdId" type="fews:idIntType" maxOccurs="unbounded"/>
			<element name="classValue" type="float" maxOccurs="unbounded"/>
		</choice>
	</complexType>
	<!-- -->
	<!--Enumeration values Performance Indicator-->
	<!--Enumeration for Module Performance-->
	<simpleType name="modulePerformanceEnumStringType">
		<restriction base="string">
			<enumeration value="bias"/>
			<enumeration value="meanabsoluteerror"/>
			<enumeration value="meansquareerror"/>
			<enumeration value="nashsutcliffeefficiency"/>
			<enumeration value="peakmeansquareerror"/>
			<enumeration value="volumeerror"/>
			<enumeration value="MAE"/>
			<enumeration value="MSE"/>
			<enumeration value="NSE"/>
			<enumeration value="PeakMSE"/>
			<enumeration value="PercVol"/>
			<enumeration value="RMSE"/>
			<enumeration value="RMSF"/>
			<enumeration value="CorrelationCoeffient"/>
			<enumeration value="R2"/>
			<enumeration value="OverPredictionRate"/>
			<enumeration value="UnderPredictionRate"/>
			<enumeration value="standarddeviation"/>
		</restriction>
	</simpleType>
	<!--Enumeration for Lead Time Accuracy -->
	<simpleType name="leadTimeAccuracyEnumStringType">
		<restriction base="string">
			<enumeration value="bias"/>
			<enumeration value="meanabsoluteerror"/>
			<enumeration value="meansquareerror"/>
			<enumeration value="MAE"/>
			<enumeration value="MSE"/>
			<enumeration value="RMSE"/>
			<enumeration value="RMSF"/>
			<enumeration value="CorrelationCoeffient"/>
			<enumeration value="R2"/>
			<enumeration value="OverPredictionRate"/>
			<enumeration value="UnderPredictionRate"/>
			<enumeration value="BrierScore"/>
			<enumeration value="RPS"/>
			<enumeration value="RankedProbabilityScore"/>
			<enumeration value="standarddeviation"/>
		</restriction>
	</simpleType>
	<!--Enumeration for Peak Accuracy -->
	<simpleType name="peakAccuracyEnumStringType">
		<restriction base="string">
			<enumeration value="bias"/>
			<enumeration value="meanabsoluteerror"/>
			<enumeration value="meansquareerror"/>
			<enumeration value="MAE"/>
			<enumeration value="MSE"/>
			<enumeration value="RMSE"/>
			<enumeration value="RMSF"/>
			<enumeration value="CorrelationCoeffient"/>
			<enumeration value="R2"/>
			<enumeration value="standarddeviation"/>
		</restriction>
	</simpleType>
	<!--Enumeration forThreshold Timing Accurracy-->
	<simpleType name="thresholdTimingAccuracyEnumStringType">
		<restriction base="string">
			<enumeration value="bias"/>
			<enumeration value="meanabsoluteerror"/>
			<enumeration value="MAE"/>
		</restriction>
	</simpleType>
	<!--Enumeration for Precipitation Performance-->
	<simpleType name="precipitationPerformanceEnumStringType">
		<restriction base="string">
			<enumeration value="bias"/>
			<enumeration value="RMSE"/>
			<enumeration value="RMSF"/>
		</restriction>
	</simpleType>
	<!-- -->
	<simpleType name="criteriaEnumStringType">
		<restriction base="string">
			<enumeration value="minnumberofforecasts"/>
			<enumeration value="timewindowinseconds"/>
			<enumeration value="timeshiftwindowinseconds"/>
			<enumeration value="thresholdvaluesetid"/>
			<enumeration value="peakthresholdvalue"/>
			<enumeration value="maximumgapbetweenpeaksinseconds"/>
			<enumeration value="minimumrecessionbetweenpeaks"/>
			<enumeration value="minimumValue"/>
		</restriction>
	</simpleType>
</schema>
