<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited with XMLSpy v2005 sp1 U (http://www.xmlspy.com) by Peter Peer (CEIT, Spain and University of Ljubljana, Slovenia) -->
<!-- Top class (tag CVRML) is followed by all other classes in alphabetical order -->
<!-- All classes are declared separately, then referred to with 'ref' -->
<!-- All names have the first word capitalised, with underscores -->
<!-- All times are assumed to be in milli seconds -->
<xs:schema xmlns="cvrml" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="cvrml" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="CVRML">
		<xs:annotation>
			<xs:documentation>Initial tag on which a data file is built</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Experiment_description" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Reveals basic logical relations between the gels in the experiment, the hypothesis behind it etc.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Gels_2D"/>
			</xs:sequence>
			<xs:attribute name="Version" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Version of the XML Schema</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Annotation_type">
		<xs:annotation>
			<xs:documentation>Annotation type related to this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Pairing_gel_id" type="xs:long">
					<xs:annotation>
						<xs:documentation>Related gel identification number</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:choice>
					<xs:annotation>
						<xs:documentation>Two options</xs:documentation>
					</xs:annotation>
					<xs:sequence>
						<xs:element name="Representative_spot" type="xs:boolean" fixed="true">
							<xs:annotation>
								<xs:documentation>Spot that is in both gels well and equally expressed (set to value true)</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element ref="Corresponding_spots"/>
					</xs:sequence>
					<xs:sequence>
						<xs:element name="Spot_of_interest" type="xs:boolean" fixed="true">
							<xs:annotation>
								<xs:documentation>Spots with qualitative or quantitative difference in the given gel pair (set to value true)</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element ref="Corresponding_spots" minOccurs="0"/>
					</xs:sequence>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Annotation_types">
		<xs:annotation>
			<xs:documentation>Summary tag for all annotation types related to this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Annotation_type" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Boundary_point">
		<xs:annotation>
			<xs:documentation>Boundary pixel of the spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Pixel_x_coordinate" type="xs:double">
					<xs:annotation>
						<xs:documentation>Coordinate x of the boundary pixel</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Pixel_y_coordinate" type="xs:double">
					<xs:annotation>
						<xs:documentation>Coordinate y of the boundary pixel</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Boundary_points">
		<xs:annotation>
			<xs:documentation>Summary tag for all boundary pixels of this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:annotation>
					<xs:documentation>Pixels must be ordered</xs:documentation>
				</xs:annotation>
				<xs:element ref="Boundary_point" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Circle">
		<xs:annotation>
			<xs:documentation>Spot modeled with the circle</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Radius" type="xs:double">
					<xs:annotation>
						<xs:documentation>Radius of the spot in pixels</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Corresponding_spot">
		<xs:annotation>
			<xs:documentation>Corresponding spot in the related gel related to this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Spot_id_in_gel" type="xs:long">
					<xs:annotation>
						<xs:documentation>Identifying number assigned to the corresponding spot in the related gel</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Probability" type="xs:double" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Probability that this corresponding spot is a true corresponding spot</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Corresponding_spots">
		<xs:annotation>
			<xs:documentation>Summary tag for all corresponding spots in the related gel related to this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Corresponding_spot" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Cv_algorithm">
		<xs:annotation>
			<xs:documentation>Description of a single computer vision algorithm applied to this gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Algorithm_id" type="xs:long">
					<xs:annotation>
						<xs:documentation>Identifying number assigned to the algorithm in the gel</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Algorithm_name" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Logical name of the algorithm</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Authors_of_algorithm" type="xs:string">
					<xs:annotation>
						<xs:documentation>Authors of this algorithm</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Authors_of_implementation" type="xs:string">
					<xs:annotation>
						<xs:documentation>Authors of algorithm implementation</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Contact_information" type="xs:string">
					<xs:annotation>
						<xs:documentation>Authors contact information</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="URI_to_description" type="xs:anyURI">
					<xs:annotation>
						<xs:documentation>Location (Universal Resource Identifier) where the description of the algorithm can be found</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Test_date" type="xs:date" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Date on which the test was performed</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Machine_type" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Description of the computer used for testing</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Spots_detection_time" type="xs:long" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Time needed to detect all the spots in milli seconds</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Representative_spots_detection_time" type="xs:long" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Time needed to detect all representative spots in milli seconds</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Spots_of_interest_detection_time" type="xs:long" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Time needed to detect all spots of interest in milli seconds</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Summary_of_results" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Summary of algorithm´s efficiency</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Comment" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Additional details about the algorithm</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Spots" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Cv_algorithms">
		<xs:annotation>
			<xs:documentation>Summary tag for all computer vision algorithms applied to this gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Cv_algorithm" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Ellipse">
		<xs:annotation>
			<xs:documentation>Spot modeled with the ellipse</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Size_of_big_axis" type="xs:double">
					<xs:annotation>
						<xs:documentation>Size of the ellipse's big axis in pixels </xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Size_of_small_axis" type="xs:double">
					<xs:annotation>
						<xs:documentation>Size of the ellipse's small axis in pixels </xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Rotation_angle" type="xs:double">
					<xs:annotation>
						<xs:documentation>Angle for which the ellipse is rotated</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Gaussian_model">
		<xs:annotation>
			<xs:documentation>Spot modeled with the Gaussian function</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Standard_deviation_in_x" type="xs:double">
					<xs:annotation>
						<xs:documentation>Standard deviation of the Gaussian model in x direction</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Standard_deviation_in_y" type="xs:double">
					<xs:annotation>
						<xs:documentation>Standard deviation of the Gaussian model in y direction</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Gel_2D">
		<xs:annotation>
			<xs:documentation>Description of a 2-DE gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Gel_id" type="xs:long">
					<xs:annotation>
						<xs:documentation>Gel identification number</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Image_URI" type="xs:anyURI">
					<xs:annotation>
						<xs:documentation>Location (Universal Resource Identifier) where the gel image is stored</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Ground_truth_author" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Name of the experimenter who produced the ground truth information</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Ground_truth_date" type="xs:date" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Date when the ground truth information was produced</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Sample_origin" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Reveals the tissue used (from species name downwards)</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Type" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Describes the experimental condition</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="Proteome"/>
							<xs:enumeration value="Control"/>
							<xs:enumeration value="Target"/>
							<xs:enumeration value="Wild type"/>
							<xs:enumeration value="Knock out"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="Stain" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Stain(s) used for identification of protein spots</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Comment" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Additional details about the gel</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Spots" minOccurs="0"/>
				<xs:element ref="Cv_algorithms" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Gels_2D">
		<xs:annotation>
			<xs:documentation>Summary tag for all 2-DE gels in the experiment</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Gel_2D" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Models_2D">
		<xs:annotation>
			<xs:documentation>Summary tag for all 2D models of this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Spot_surface" type="xs:double" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Surface of the spot in pixels</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Circle" minOccurs="0"/>
				<xs:element ref="Rectangle" minOccurs="0"/>
				<xs:element ref="Ellipse" minOccurs="0"/>
				<xs:element ref="Boundary_points" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Models_3D">
		<xs:annotation>
			<xs:documentation>Summary tag for all 3D models of this spot in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Spot_volume" type="xs:double" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Volume of the spot in voxels</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Gaussian_model" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Rectangle">
		<xs:annotation>
			<xs:documentation>Spot modeled with the rectangle</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Size_in_x" type="xs:double">
					<xs:annotation>
						<xs:documentation>Size of the spot in x direction in pixels </xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Size_in_y" type="xs:double">
					<xs:annotation>
						<xs:documentation>Size of the spot in y direction in pixels </xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Spot">
		<xs:annotation>
			<xs:documentation>Description of a single protein spot from the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Spot_id_in_gel" type="xs:long">
					<xs:annotation>
						<xs:documentation>Identifying number assigned to the spot in the gel</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Pixel_x_coordinate" type="xs:double">
					<xs:annotation>
						<xs:documentation>Coordinate x of the spot centre in pixels</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Pixel_y_coordinate" type="xs:double">
					<xs:annotation>
						<xs:documentation>Coordinate y of the spot centre in pixels</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Intensity" type="xs:double">
					<xs:annotation>
						<xs:documentation>Intensity of the spot at the given coordinate</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Probability" type="xs:double" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Probability that this spot is a true spot</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Comment" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Additional details about the spot</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="Annotation_types" minOccurs="0"/>
				<xs:element ref="Models_2D" minOccurs="0"/>
				<xs:element ref="Models_3D" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Spots">
		<xs:annotation>
			<xs:documentation>Summary tag for all protein spots in the gel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Spot" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
