<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://www.wsmo.org/wsml/wsml-syntax#" xmlns="http://www.wsmo.org/wsml/wsml-syntax#"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation>
			date: $Date: 2008-07-23 07:43:50 $
			author: Jos de Bruijn, Ioan Toma
		
			this schema is a module, which belongs to the WSML/XML schema specification.
			This schema provides the necessary definitions for the identifiers in WSML/XML. 
		</xs:documentation>
	</xs:annotation>
	<xs:simpleType name="wsmlIRI">
		<xs:annotation>
			<xs:documentation>
				The basic kind of identifier in WSML: an IRI. 
				Note that when translating the standard WSML syntax to XML, Qualified names are resolved to full IRIs.
			</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="xs:anyURI" />
	</xs:simpleType>
	<xs:complexType name="wsmlAnyValue" mixed="true">
		<xs:annotation>
			<xs:documentation>
				A data value in WSML. A data value could be an elementary data value, which is an integer,
				decimal, or a string (corresponding to the lexical spaces of the integer,
				decimal, and string datatypes), or a constructed data value:
				given an n-ary datatype wrapper w and d1; ... ; dn elementary data values,
				then w(d1;...; dn) is a constructed data value.
				The type is required. Because we allow complex constructed data values, a data value can have multiple arguments. The arguments are strictly ordered.
				The content is mixed; it is thus possible to use both regular text and tags which represent the arguments. Regular text is interpreted as the first argument.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="argument" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute name="type" type="wsmlIRI" use="required" />
	</xs:complexType>
	<xs:complexType name="wsmlID">
		<xs:annotation>
			<xs:documentation>wsmlID corresponds with either an IRI or an anonymous identifier. The type of the identifier is indicated in the attribute 'type'. The IRIs identifying the types IRI, string, integer and decimal correspond with the IRIs of the datatypes as defined in Appendix B of the WSML specification. The type variable is identified with the IRI http://www.wsmo.org/2004/wsml#variable, the type anonymousID is identified with http://www.wsmo.org/2004/wsml#anonymousID.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="type" type="wsmlIRI" use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="wsmlAnyID">
		<xs:annotation>
			<xs:documentation>wsmlAnyID corresponds with either an anonymousID, wsmlIRI or a data value.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="type" type="wsmlIRI" use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>	
	<xs:complexType name="wsmlVariable">
		<xs:annotation>
			<xs:documentation>A variable in a WSML logical expression.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="name" type="xs:string" use="required"/>
	</xs:complexType>
	<!-- end of the helper types for identifiers -->
</xs:schema>
