<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:icsy:venice:types:dependability" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:basic="urn:icsy:venice:types:basic" xmlns:domain="urn:icsy:venice:types:domain" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:icsy:venice:types:dependability">
	<import namespace="urn:icsy:venice:types:basic" schemaLocation="http://www.v-grid.info/types/basic.xsd"/>
	<import namespace="urn:icsy:venice:types:domain" schemaLocation="http://www.v-grid.info/types/domain.xsd"/>
	<simpleType name="Algorithm">
		<annotation>
			<documentation>An algorithm for determining dependability information.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="none"/>
			<enumeration value="manual"/>
			<enumeration value="internal"/>
		</restriction>
	</simpleType>
	<simpleType name="CryptoAlgorithm">
		<annotation>
			<documentation>An algorithm for some cryptographic operation.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="none"/>
			<enumeration value="irrelevant"/>
			<enumeration value="MD2"/>
			<enumeration value="MD4"/>
			<enumeration value="MD5"/>
			<enumeration value="SHA1"/>
			<enumeration value="SHA256"/>
			<enumeration value="SHA384"/>
			<enumeration value="SHA512"/>
			<enumeration value="RIPEMD160"/>
			<enumeration value="DES"/>
			<enumeration value="3DES"/>
			<enumeration value="AES"/>
			<enumeration value="IDEA"/>
			<enumeration value="IDEANXT"/>
			<enumeration value="Blowfish"/>
			<enumeration value="Twofish"/>
			<enumeration value="FEAL"/>
			<enumeration value="SHACAL1"/>
			<enumeration value="SHACAL2"/>
		</restriction>
	</simpleType>
	<complexType name="CryptoInformation">
		<sequence>
			<element name="algorithm" type="tns:CryptoAlgorithm">
				<annotation>
					<documentation>The cryptographic algorithm used.</documentation>
				</annotation>
			</element>
			<element name="next" type="tns:CryptoInformation" minOccurs="0">
				<annotation>
					<documentation>If there are more algorithms involved, this will be the next cryptographic algorithm.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="AbstractDependabilityInformation" abstract="true">
		<annotation>
			<documentation>The abstract base for the dependability information data types.</documentation>
		</annotation>
		<sequence>
			<element name="timestamp" type="dateTime">
				<annotation>
					<documentation>The date and time when this dependability information has been assigned.</documentation>
				</annotation>
			</element>
			<element name="algorithm" type="tns:Algorithm" default="internal">
				<annotation>
					<documentation>The algorithm used to determine the dependability information:
- none = no algorithm, value guessed
- internal = provider internal algorithm</documentation>
				</annotation>
			</element>
			<element name="approvedBy" type="anyURI" minOccurs="0">
				<annotation>
					<documentation>URI of the issuer of the dependability attribute.</documentation>
				</annotation>
			</element>
			<element name="approvalID" type="basic:UUID" minOccurs="0">
				<annotation>
					<documentation>The ID of the attribute at the issuer site.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<element name="AbstractDependabilityInformation" type="tns:AbstractDependabilityInformation"/>
	<complexType name="DependabilityInformation">
		<annotation>
			<documentation>All dependability information.</documentation>
		</annotation>
		<all>
			<element name="availabilityInformation" type="tns:AvailabilityInformation" minOccurs="0"/>
			<element name="reliabilityInformation" type="tns:ReliabilityInformation" minOccurs="0"/>
			<element name="safetyInformation" type="tns:SafetyInformation" minOccurs="0"/>
			<element name="confidentialityInformation" type="tns:ConfidentialityInformation" minOccurs="0"/>
			<element name="integrityInformation" type="tns:IntegrityInformation" minOccurs="0"/>
			<element name="maintainabilityInformation" type="tns:MaintainabilityInformation" minOccurs="0"/>
		</all>
	</complexType>
	<element name="DependabilityInformation" type="tns:DependabilityInformation"/>
	<complexType name="AvailabilityInformation">
		<annotation>
			<documentation>Represents a service's availability.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation">
				<sequence>
					<element name="value" type="double" default="0">
						<annotation>
							<documentation>The numerical value of the availability attribute.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="AvailabilityInformation" type="tns:AvailabilityInformation"/>
	<complexType name="ReliabilityInformation">
		<annotation>
			<documentation>Represents a service's reliability.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation">
				<sequence>
					<element name="value" type="double" default="0">
						<annotation>
							<documentation>The numerical value of the reliability attribute.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="ReliabilityInformation" type="tns:ReliabilityInformation"/>
	<complexType name="SafetyInformation">
		<annotation>
			<documentation>Represents a service's safety.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation"/>
		</complexContent>
	</complexType>
	<element name="SafetyInformation" type="tns:SafetyInformation"/>
	<complexType name="ConfidentialityInformation">
		<annotation>
			<documentation>Represents a service's confidentiality.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation">
				<sequence>
					<element name="communication" type="tns:CryptoInformation">
						<annotation>
							<documentation>The algorithm(s) that are used while communicating with other services.</documentation>
						</annotation>
					</element>
					<element name="processing" type="tns:CryptoInformation">
						<annotation>
							<documentation>The algorithm(s) used while processing data inside the service.</documentation>
						</annotation>
					</element>
					<element name="storage" type="tns:CryptoInformation">
						<annotation>
							<documentation>The algorithm(s) used while storing data in the service's long term storage.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="ConfidentialityInformation" type="tns:ConfidentialityInformation"/>
	<complexType name="IntegrityInformation">
		<annotation>
			<documentation>Represents a service's integrity.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation">
				<sequence>
					<element name="communication" type="tns:CryptoInformation"/>
					<element name="processing" type="tns:CryptoInformation"/>
					<element name="storage" type="tns:CryptoInformation"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="IntegrityInformation" type="tns:IntegrityInformation"/>
	<complexType name="MaintainabilityInformation">
		<annotation>
			<documentation>Represents a service's maintainability.</documentation>
		</annotation>
		<complexContent>
			<extension base="tns:AbstractDependabilityInformation"/>
		</complexContent>
	</complexType>
	<element name="MaintainabilityInformation" type="tns:MaintainabilityInformation"/>
</schema>

