<?xml version="1.1" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
		   xmlns="http://schemas.openehr.org/v2" targetNamespace="http://schemas.openehr.org/v2" elementFormDefault="qualified"
		   id="Rules.xsd" version="v2.0.6"
		   xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
	<!-- dependencies -->
	
	<xs:complexType name="RULE_ELEMENT" abstract="true">
		<xs:attribute name="type" type="xs:string"/>
	</xs:complexType>
	
	<xs:complexType name="RULE_STATEMENT">
		<xs:complexContent>
			<xs:extension base="RULE_ELEMENT"/>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="ASSERTION">
		<xs:complexContent>
			<xs:extension base="RULE_STATEMENT">
				<xs:sequence>
					<xs:element name="expression" type="EXPR_ITEM"/>
				</xs:sequence>
				<xs:attribute name="tag" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="EXPR_ITEM" abstract="true">
		<xs:complexContent>
			<xs:extension base="RULE_ELEMENT"/>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="ASSERTION_VARIABLE">
		<xs:sequence>
			<xs:element name="definition" type="xs:string"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
	</xs:complexType>
	
	<xs:complexType name="EXPR_LEAF">
		<xs:complexContent>
			<xs:extension base="EXPR_ITEM">
				<xs:sequence>
					<xs:element name="item" type="xs:anyType"/>
				</xs:sequence>
				<xs:attribute name="reference_type" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="EXPR_OPERATOR" abstract="true">
		<xs:complexContent>
			<xs:extension base="EXPR_ITEM">
				<xs:sequence>
					<xs:element name="operator" type="OPERATOR_KIND"/>
				</xs:sequence>
				<xs:attribute name="precedence_overridden" type="xs:boolean"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="EXPR_UNARY_OPERATOR">
		<xs:complexContent>
			<xs:extension base="EXPR_OPERATOR">
				<xs:sequence>
					<xs:element name="operand" type="EXPR_ITEM"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EXPR_BINARY_OPERATOR">
		<xs:complexContent>
			<xs:extension base="EXPR_OPERATOR">
				<xs:sequence>
					<xs:element name="left_operand" type="EXPR_ITEM"/>
					<xs:element name="right_operand" type="EXPR_ITEM"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:simpleType name="OperatorValueType">
		<xs:restriction base="xs:integer">
			<xs:enumeration value="2001" id="equal"/>
			<xs:enumeration value="2002" id="not_equal"/>
			<xs:enumeration value="2003" id="less_than_or_equal"/>
			<xs:enumeration value="2004" id="less_than"/>
			<xs:enumeration value="2005" id="greater_than_or_equal"/>
			<xs:enumeration value="2006" id="greater_than"/>
			<xs:enumeration value="2007" id="matches"/>
			<xs:enumeration value="2010" id="not"/>
			<xs:enumeration value="2011" id="and"/>
			<xs:enumeration value="2012" id="or"/>
			<xs:enumeration value="2013" id="xor"/>
			<xs:enumeration value="2014" id="implies"/>
			<xs:enumeration value="2015" id="for_all"/>
			<xs:enumeration value="2016" id="exists"/>
			<xs:enumeration value="2020" id="plus"/>
			<xs:enumeration value="2021" id="minus"/>
			<xs:enumeration value="2022" id="multiply"/>
			<xs:enumeration value="2023" id="divide"/>
			<xs:enumeration value="2024" id="exponent"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="OPERATOR_KIND">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="value" type="OperatorValueType" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	
</xs:schema>
