<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by University Innsbruck / Department of Computer Science (University Innsbruck / Department of Computer Science) -->
<xs:schema targetNamespace="http://www.wsmo.org/wsml/wsml-syntax#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.wsmo.org/wsml/wsml-syntax#" elementFormDefault="qualified" attributeFormDefault="unqualified">
		<xs:annotation>
				<xs:documentation>
		date: $Date: 2008-07-23 09:43:30 $
		author: Jos de Bruijn, Reto Krummenacher, Ioan Toma

		this document provides an XML Schema for the XML version of the WSML syntax
		The syntax presented in this document can be used for all WSML variants. The WSML variant is 
		identified through the 'variant' attribute of the root element 'wsml'.

		A modular approach has been chosen when creating this schema. This schema contains the conceptual syntax. 
		Separate schemas have been developed for the WSML identifiers and for the WSML logical expressions. 
		These schemas are therefore included in this schema.
				</xs:documentation>
		</xs:annotation>
		<!-- the following schema contains the definitions for the logical expression syntax-->
		<xs:include schemaLocation="http://www.wsmo.org/TR/d36/v0.1/xml-syntax/wsml_expr.xsd"/>
		<!--<xs:include schemaLocation="wsml-expr.xsd"/>-->	
		<!-- the following schema contains the definitions for the auxiliary identifiers -->
		<xs:include schemaLocation="http://www.wsmo.org/TR/d36/v0.1//xml-syntax/wsml_identifiers.xsd"/>
		<!--<xs:include schemaLocation="wsml-identifiers.xsd"/>-->	
		<!-- import the Dublin Core schema -->
		<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
		<!-- start of the global elements, to be used by all parts of the schema -->
		<xs:element name="wsml">
				<xs:annotation>
						<xs:documentation>
								The element 'wsml' is the preferred root element for any WSML specification.
								It allows the user to explicity specify, through the 'variant' attribute, which WSML variant is used. 
								If the WSML variant has not been specified, the application has to "guess" the variant and in the worst case, 
								WSML-Full will be assumed.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence minOccurs="0" maxOccurs="unbounded">
								<xs:any/>
						</xs:sequence>
						<xs:attribute name="variant" type="wsmlIRI"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="importsOntology" type="wsmlIRI">
				<xs:annotation>
						<xs:documentation>
								This element is used for indicating which WSML, RDFS, and OWL DL ontologies to import. 
								Importing ontologies is the most basic (and inflexible) modularization mechanism. 
								The result of the import is merely the union of the axioms in the importing and the imported ontology.
						</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="usesMediator" type="wsmlIRI">
				<xs:annotation>
						<xs:documentation>
								Mediators can be used to mediate between any top-level WSMO elements, i.e. ontologies, goals, and web services. 
								The most frequent use of mediators is to resolve heterogeneity between ontologies. 
								Thus, mediators provide a more flexible way for modularization of ontologies.                           
						</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="sharedVariables">
				<xs:annotation>
						<xs:documentation>A list of shared variables for the capability</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="variable" type="wsmlVariable" minOccurs="1" maxOccurs="unbounded"/>
						</xs:sequence>
				</xs:complexType>
		</xs:element>
		<xs:element name="precondition" type="axiomType">
				<xs:annotation>
						<xs:documentation>A pre-condition is an axiom describing the state of the information space before executing the web service.</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="assumption" type="axiomType">
				<xs:annotation>
						<xs:documentation>An assumption is an axiom describing the state of the world before executing the web service.</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="postcondition" type="axiomType">
				<xs:annotation>
						<xs:documentation>A post-condition is an axiom describing the state of the information space after executing the web service.</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="effect" type="axiomType">
				<xs:annotation>
						<xs:documentation>An effect is an axiom describing the state of the world after executing the web service.</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="orchestration" type="wsmlIRI">
				<xs:annotation>
						<xs:documentation>A reference to an orchestration description.</xs:documentation>
				</xs:annotation>
		</xs:element>
		<xs:element name="goal">
				<xs:annotation>
						<xs:documentation>A goal specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
							              <xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element ref="capability"/>
								<xs:element ref="interface" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<!-- start of the annotations part -->
	               <xs:element name="annotations">
				<xs:annotation>
						<xs:documentation>
								Any element can be used inside the annotations.  
								The recommended set of annotations is the set of elements offered by Dublin Core. 
								WSML further defines one element, named 'version'  and 'owner'
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="attributeValue" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
				</xs:complexType>
		</xs:element>
	               <!-- end of the annotations part -->
		<!-- start of the nonFunctionalProperties part -->
		<xs:element name="nonFunctionalProperty">
			<xs:annotation>
				<xs:documentation>
					A goal, web service, mediator, capability and interface are elements that can have 
					one or many non-functional properties.
				</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="annotations" minOccurs="0"/>					
					<xs:element ref="value" minOccurs="0" maxOccurs="unbounded"/>					
					<xs:element ref="logicalDefinition" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
			</xs:complexType>
		</xs:element>
		
		<!-- end of the nonFunctionalProperties part -->
		
		<!-- start of the Web Services part -->
		<xs:element name="webService">
				<xs:annotation>
						<xs:documentation>A web service specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
							               <xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element ref="capability" minOccurs="0" maxOccurs="1"/>
								<xs:element ref="interface" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="capability">
				<xs:annotation>
						<xs:documentation>A web service capability specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element ref="sharedVariables" minOccurs="0"/>
								<xs:element ref="precondition" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="assumption" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="postcondition" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="effect" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="interface">
				<xs:annotation>
						<xs:documentation>A web service interface specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element ref="choreography" minOccurs="0" maxOccurs="1"/>
								<xs:element ref="orchestration" minOccurs="0" maxOccurs="1"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
	
		<xs:element name="choreography">
			<xs:annotation>
				<xs:documentation>A web service choreography specification.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="annotations" minOccurs="0"/>
					<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>							
					<xs:element ref="statesignature" minOccurs="0" maxOccurs="1"/>
					<xs:element ref="transitions" minOccurs="0" maxOccurs="1"/>
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
			</xs:complexType>
		</xs:element>
	
		<xs:element name="statesignature">
			<xs:annotation>
				<xs:documentation>A web service statesignature specification.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="annotations" minOccurs="0"/>
					<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>							
					<xs:element ref="mode" minOccurs="0" maxOccurs="unbounded"/>				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
			</xs:complexType>
		</xs:element>
	
		<xs:element name="mode">
			<xs:annotation>
				<xs:documentation>A web service mode specification.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>	
					<xs:choice>					
						<xs:element name="static"/>
						<xs:element name="in"/>
						<xs:element name="out"/>					
						<xs:element name="shared"/>
						<xs:element name="controlled"/>					
					</xs:choice>
					<xs:choice>					
						<xs:element name="concept"/>
						<xs:element name="relation"/>
					</xs:choice>					
					<xs:element name="iri" type="wsmlIRI"/>					
					<xs:element name="grounding" type="wsmlIRI" minOccurs="0" maxOccurs="unbounded"/>										
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
			</xs:complexType>
		</xs:element>
				
		<xs:element name="transitions">
			<xs:annotation>
				<xs:documentation>A web service transition rules specification.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="annotations" minOccurs="0"/>
					<xs:element ref="rule" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
			</xs:complexType>
		</xs:element>

		<xs:element name="rule">
			<xs:annotation>
				<xs:documentation>A web service transition rule specification.</xs:documentation>
			</xs:annotation>	
			<xs:complexType>
				<xs:sequence>
					<xs:choice>
						<xs:sequence>
							<xs:element name="if" type="ruleType"/>
							<xs:element ref="condition"/>
							<xs:element name="then" type="ruleType"/>	
							<xs:element ref="rule" minOccurs="1" maxOccurs="unbounded"/>					
							<xs:element name="endif" type="ruleType"/>							
						</xs:sequence>
						<xs:sequence>
							<xs:element name="for" type="ruleType"/>					
							<xs:element name="variable" type="wsmlVariable" minOccurs="1" maxOccurs="unbounded"/>										
							<xs:element name="with" type="ruleType"/>
							<xs:element ref="condition"/>
							<xs:element name="do" type="ruleType"/>					
							<xs:element ref="rule" minOccurs="1" maxOccurs="unbounded"/>					
							<xs:element name="endforall" type="ruleType"/>												
						</xs:sequence>		
						<xs:sequence>
							<xs:element name="choose" type="ruleType"/>					
							<xs:element name="variable" type="wsmlVariable" minOccurs="1" maxOccurs="unbounded"/>										
							<xs:element name="with" type="ruleType"/>
							<xs:element ref="condition"/>
							<xs:element name="do" type="ruleType"/>					
							<xs:element ref="rule" minOccurs="1" maxOccurs="unbounded"/>					
							<xs:element name="endchoose" type="ruleType"/>							
						</xs:sequence>		
						<xs:sequence>
							<xs:choice>					
								<xs:element name="add"/>
								<xs:element name="delete"/>					
							</xs:choice>												
							<xs:element ref="fact"/>
						</xs:sequence>											
					</xs:choice>										
				</xs:sequence>
			</xs:complexType>	
		</xs:element>
	
	<xs:complexType name="ruleType">
			<xs:annotation>
				<xs:documentation>
					A rule keyword can be: if, then, endif, forall, with, do, endforall, choose or endchoose 
				</xs:documentation>
			</xs:annotation>
		</xs:complexType>	
	
		<xs:element name="condition">
			<xs:annotation>
				<xs:documentation>A condition which can appear in a if transition rule.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element name="expression" type="logicalExpressionType"/>
				</xs:sequence>
			</xs:complexType>
		</xs:element>

		<xs:element name="piped_rule">
			<xs:annotation>
				<xs:documentation>A piped rule specification.</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence minOccurs="0" maxOccurs="unbounded">
					<xs:sequence minOccurs="1" maxOccurs="1">
						<xs:element ref="rule"/>										
					</xs:sequence>
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:element ref="pipe"/>					
						<xs:element ref="rule"/>										
					</xs:sequence>
				</xs:sequence>
			</xs:complexType>
		</xs:element>
	
		<xs:element name="pipe">
			<xs:complexType>
				<xs:annotation>
					<xs:documentation>
						Pipe | used in a piped rule specification 
					</xs:documentation>
				</xs:annotation>
			</xs:complexType>
		</xs:element>
	
	<xs:element name="fact">
		<xs:annotation>
			<xs:documentation>A fact specification.</xs:documentation>
		</xs:annotation>
	</xs:element>
		
		<!-- End of the Web Services part -->
		<!-- start of the mediator part -->
		<xs:element name="ooMediator">
				<xs:annotation>
						<xs:documentation>
								The element ooMediator is used for both declaration of ooMediators and reference to existing ooMediators. 
								In case no elements are nested inside the ooMediator, the element is interpreted as a reference to the ooMediator 
								indicated with the attribute 'name'. 
								If elements are nested inside the ooMediator, it is interpreted as a specification of a new ooMediator whose 
								identifier is specified in the attribute 'name'.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element name="source" type="wsmlIRI" minOccurs="1" maxOccurs="unbounded"/>
								<xs:element name="target" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="usesService" type="wsmlIRI" minOccurs="0"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="ggMediator">
				<xs:annotation>
						<xs:documentation>A ggMediator specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element name="source" type="wsmlIRI" minOccurs="1" maxOccurs="unbounded"/>
								<xs:element name="target" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="usesService" type="wsmlIRI" minOccurs="0"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="wgMediator">
				<xs:annotation>
						<xs:documentation>A wgMediator specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence minOccurs="0">
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element name="source" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="target" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="usesService" type="wsmlIRI" minOccurs="0"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="wwMediator">
				<xs:annotation>
						<xs:documentation>A wwMediator specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="importsOntology" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="usesMediator" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="nonFunctionalProperty" minOccurs="0" maxOccurs="unbounded"/>							
								<xs:element name="source" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="target" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="usesService" type="wsmlIRI" minOccurs="0"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<!-- end of the mediator part -->
		<!-- start of the ontology part -->
		<xs:element name="ontology">
				<xs:annotation>
						<xs:documentation>An ontology specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:choice minOccurs="0" maxOccurs="unbounded">
										<xs:element ref="annotations"/>
										<xs:element ref="importsOntology"/>
										<xs:element ref="usesMediator"/>
										<xs:element ref="concept"/>
										<xs:element ref="relation"/>
										<xs:element ref="instance"/>
										<xs:element ref="relationInstance"/>
										<xs:element ref="axiom"/>
								</xs:choice>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="axiom" type="axiomType"/>
		<xs:complexType name="axiomType">
				<xs:annotation>
						<xs:documentation>
								An axiom reference or specification. 
								In case no elements are nested inside the axiom, it is merely a reference to an axiom definition.
								Otherwise, it is an axiom specification, consisting of a number of annotations and the actual 
								logical expression, contained in the definedBy keyword.
						</xs:documentation>
				</xs:annotation>
				<xs:sequence minOccurs="0">
						<xs:element ref="annotations" minOccurs="0"/>
						<xs:element name="definedBy" type="logicalExpressionType"/>
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="optional"/>
		</xs:complexType>
		<xs:element name="logicalDefinition">
			<xs:annotation>
				<xs:documentation>
					An logical  definition specification consisting of a set of logical expressions previously followed by the definedBy keyword.
				</xs:documentation>
			</xs:annotation>			
			<xs:complexType>							
				<xs:sequence minOccurs="0">
					<xs:element name="definedBy" type="logicalExpressionType"/>
				</xs:sequence>
			</xs:complexType>
		</xs:element>
			
		<xs:element name="concept">
				<xs:annotation>
						<xs:documentation>A concept specification or reference. In case no elements are nested inside the concept, it is a reference to the concept identified by the name. Otherwise, it is a concept specification.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="superConcept" type="wsmlIRI" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="required"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="attribute">
				<xs:annotation>
						<xs:documentation>A concept can have zero or more attributes. The type of the attribute can be inferring or constraining. A constraining attribute (corresponding to 'ofType') is used to check the type of parameter values; an inferring parameter (corresponding to 'impliesType') is used to derive the type of attribute values. By default an attribute is constraining. Furthermore, an attribute can be symmetric, transitive, reflexive or the inverse of another attribute. Finally, it is possible to specify the minimal and maximal cardinality of an attribute. By default the minimal cardinality is 0 and the maximal cardinality is n (i.e. not restricted).
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="range" type="wsmlIRI" minOccurs="0"/>
								<xs:element name="symmetric" minOccurs="0"/>
								<xs:element name="transitive" minOccurs="0"/>
								<xs:element name="reflexive" minOccurs="0"/>
								<xs:element name="inverseOf" type="wsmlID" minOccurs="0"/>
								<xs:element name="minCardinality" type="xs:integer" minOccurs="0"/>
								<xs:element name="maxCardinality" type="xs:integer" minOccurs="0"/>
								<xs:element ref="annotations" minOccurs="0"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="required"/>
						<xs:attribute name="type" default="constraining">
								<xs:simpleType>
										<xs:restriction base="xs:string">
												<xs:enumeration value="constraining"/>
												<xs:enumeration value="inferring"/>
										</xs:restriction>
								</xs:simpleType>
						</xs:attribute>
				</xs:complexType>
		</xs:element>
		<xs:element name="relation">
			<xs:annotation>
				<xs:documentation>
					A relation specification or reference. 
					In case no elements are nested inside the relation, it is a reference to the relation identified by the name. 
					Otherwise, it is a relation specification.
				</xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element name="superRelation" type="wsmlIRI" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="parameters" minOccurs="0"/>
					<xs:element ref="annotations" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="name" type="wsmlIRI" use="required"/>
				<xs:attribute name="arity" type="xs:integer" use="optional"/>
			</xs:complexType>			
		</xs:element>	
		<xs:element name="parameters">
				<xs:annotation>
						<xs:documentation>The ordered list of parameter types</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
										<xs:complexType>
												<xs:sequence>
														<xs:element name="range" type="wsmlIRI" maxOccurs="unbounded"/>
												</xs:sequence>
												<xs:attribute name="type" default="constraining">
														<xs:simpleType>
																<xs:restriction base="xs:string">
																		<xs:enumeration value="constraining"/>
																		<xs:enumeration value="inferring"/>
																</xs:restriction>
														</xs:simpleType>
												</xs:attribute>
										</xs:complexType>
								</xs:element>
						</xs:sequence>
				</xs:complexType>
		</xs:element>
		<xs:element name="instance">
				<xs:annotation>
						<xs:documentation>
								An instance can be member of zero or more concepts. 
								Furthermore, zero or more attribute values can be associated with this particular instance.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="memberOf" type="wsmlIRI" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="attributeValue" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="attributeValue">
				<xs:annotation>
						<xs:documentation>
								The value of an attribute is either the identifier of another WSML element or a literal.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
						<xs:sequence>
								<xs:element name="value" type="wsmlAnyValue" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="required"/>
				</xs:complexType>
		</xs:element>
	

		<xs:element name="relationInstance">
				<xs:complexType>
						<xs:annotation>
								<xs:documentation>
								An instance of a relation corresponds with a tuple in the extension of the relation. 
								The values of the parameters are explicitly specified. 
								In case the relation does not have named parameters, the parameter values only have a value and not a name. 
								The order of the XML elements then corresponds with the order of the arguments of the relation.
						</xs:documentation>
						</xs:annotation>
						<xs:sequence>
								<xs:element name="memberOf" type="wsmlIRI" minOccurs="0" maxOccurs="unbounded"/>
								<xs:element ref="annotations" minOccurs="0"/>
								<xs:element ref="parameterValue" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="wsmlIRI" use="optional"/>
				</xs:complexType>
		</xs:element>
		<xs:element name="parameterValue">
				<xs:complexType>
						<xs:choice>
								<xs:element name="value" type="wsmlAnyValue" maxOccurs="unbounded"/>
						</xs:choice>
				</xs:complexType>
		</xs:element>
		<!-- End of the ontology part -->
</xs:schema>

