<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://xml.vitalab.tuwien.ac.at/ns/taaf/MashupConfig"
	xmlns:tns="http://xml.vitalab.tuwien.ac.at/ns/taaf/MashupConfig"
	xmlns:cmm="http://xml.vitalab.tuwien.ac.at/ns/taaf/CapabilitiesMetaModel"
	elementFormDefault="qualified">
	
	<import
		namespace="http://xml.vitalab.tuwien.ac.at/ns/taaf/CapabilitiesMetaModel"
		schemaLocation="CapabilitiesMetaModel.xsd"/>		
	
	<element name="MashupConfig" type="tns:tMashupConfig"></element>
	<complexType name="tMashupConfig">
		<sequence>
			<element name="ProvidedService" type="tns:tServiceConfig" minOccurs="0" maxOccurs="unbounded"></element>
		</sequence>
		<attribute name="EnsembleURI" type="anyURI" use="required"></attribute>
	</complexType>
	
	<complexType name="tServiceConfig">
		<sequence>
			<element name="CapabilityConfig" type="tns:tCapabilityConfig" minOccurs="0" maxOccurs="unbounded"></element>
			<element name="RequirementsMatch" type="tns:tRequirementMatch" minOccurs="0" maxOccurs="unbounded"></element>			
		</sequence>
		<attribute name="ServiceProfileURI" type="anyURI" use="required"></attribute>
		<attribute name="ComponentURI" type="anyURI" use="required"></attribute>
	</complexType>
	
	<complexType name="tCapabilityConfig">
		<sequence>
			<element name="SelectableCapabilityType" type="anyURI" minOccurs="1" maxOccurs="1"></element>
			<element name="SelectedChoice" type="anyURI" minOccurs="1" maxOccurs="1"></element>
		</sequence>
	</complexType>
	
	<complexType name="tRequirementMatch">
		<sequence>
			<element name="RequirementsRef" type="anyURI" minOccurs="1" maxOccurs="1"></element>
			<element name="Match" type="tns:t0to1" minOccurs="1" maxOccurs="1"></element>
			<element name="Membership" type="tns:t0to1" minOccurs="1" maxOccurs="1"></element>
		</sequence>
	</complexType>
	
	<element name="EnsembleRequirements" type="tns:tEnsembleRequirements"></element>	
	<complexType name="tEnsembleRequirements">
		<sequence>
			<element name="RequirementsSet" type="tns:tRequirementSet" minOccurs="0" maxOccurs="unbounded"></element>
		</sequence>
		<attribute name="EnsembleURI" type="anyURI" use="required"></attribute>
	</complexType>
	
	<complexType name="tRequirementSet">
		<sequence>			
			<element name="Requirement" type="tns:tRequirement" minOccurs="0" maxOccurs="unbounded"></element>
		</sequence>				
	</complexType>
	
	<complexType name="tRequirement">
		<sequence>
			<element name="CapabilityType" type="anyURI" minOccurs="1" maxOccurs="1"></element>
			<element name="Importance" type="tns:tMinus1toPlus1" minOccurs="1" maxOccurs="1"></element>					
		</sequence>
		<attribute name="RequirementURI" type="anyURI"></attribute>
		<attribute name="UtilFctId" type="anyURI" use="required"></attribute>
		<attribute name="UtilFctTypeId" type="anyURI" use="required"></attribute>	
	</complexType>
	
	<complexType name="tCapabilityExistsRequirement">
		<complexContent>
			<extension base="tns:tRequirement">
				<sequence>					
					<element name="SelectionParameter" type="tns:t0to1"></element>					
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="tPropertyValueRequirement">
		<complexContent>
			<extension base="tns:tRequirement">				
				<attribute name="PropertyType" type="anyURI" use="required"></attribute>				
			</extension>						
		</complexContent>			
	</complexType>
	
	<complexType name="tCapabilitySelectionRequirement">
		<complexContent>
			<extension base="tns:tRequirement">
				<sequence>														
					<element name="SelectionParameters" type="string" minOccurs="0" maxOccurs="unbounded"></element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="tSimpleStringConstraint">		
		<complexContent>
			<extension base="tns:tPropertyValueRequirement">
				<sequence>					
					<element name="SelectionParameters" type="string" maxOccurs="unbounded" minOccurs="1"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>

	<complexType name="tSimpleTimestampConstraint">		
		<complexContent>
			<extension base="tns:tPropertyValueRequirement">
				<sequence>					
					<element name="SelectionParameters" type="dateTime" maxOccurs="unbounded" minOccurs="1"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>

	<complexType name="tSimpleIntConstraint">		
		<complexContent>
			<extension base="tns:tPropertyValueRequirement">
				<sequence>					
					<element name="SelectionParameters" type="integer" maxOccurs="unbounded" minOccurs="1"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>

	<complexType name="tSimpleBoolConstraint">		
		<complexContent>
			<extension base="tns:tPropertyValueRequirement">
				<sequence>					
					<element name="SelectionParameters" type="boolean" maxOccurs="unbounded" minOccurs="1"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>
	
	<complexType name="tSimpleDecimalConstraint">	
	<complexContent>
			<extension base="tns:tPropertyValueRequirement">	
				<sequence>					
					<element name="SelectionParameters" type="decimal" maxOccurs="unbounded" minOccurs="1"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>
	

	<complexType name="tFileSizeConstraint">	
	<complexContent>
			<extension base="tns:tPropertyValueRequirement">	
				<sequence>					
					<element name="SelectionParameters" type="cmm:ResourceSize" maxOccurs="unbounded" minOccurs="0"/>					
				</sequence>
				</extension>
		</complexContent>							
	</complexType>

	<simpleType name="tMinus1toPlus1">
		<restriction base="decimal">
			<minInclusive value="-1"/>
			<maxInclusive value="1"/>
		</restriction>
	</simpleType>
	
	<simpleType name="t0to1">
		<restriction base="decimal">
			<minInclusive value="0"/>
			<maxInclusive value="1"/>
		</restriction>
	</simpleType>		 

</schema>
