<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xsd:element name="GEML">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="header" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="contact_list" minOccurs="0">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="contact" maxOccurs="unbounded">
											<xsd:complexType>
												<xsd:sequence>
													<xsd:element name="organization" type="xsd:string"/>
													<xsd:element name="contact_person" type="xsd:string" minOccurs="0"/>
													<xsd:element name="contact_person_phone" type="xsd:string" minOccurs="0"/>
													<xsd:element name="contact_person_email" type="xsd:string" minOccurs="0"/>
													<xsd:element name="org_phone" type="xsd:string" minOccurs="0"/>
													<xsd:element name="org_email" type="xsd:string" minOccurs="0"/>
													<xsd:element name="url" type="xsd:string" minOccurs="0"/>
												</xsd:sequence>
												<xsd:attribute name="id" type="xsd:ID" use="required"/>
												<xsd:attribute name="type" type="xsd:string" use="required"/>
											</xsd:complexType>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="species_list" minOccurs="0">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="species" maxOccurs="unbounded">
											<xsd:complexType>
												<xsd:sequence>
													<xsd:element name="scientific_aliases" type="xsd:string"/>
													<xsd:element name="common_names" type="xsd:string"/>
													<xsd:element name="genome_size" type="xsd:string"/>
													<xsd:element name="relevant_urls" type="xsd:string" nillable="true"/>
													<xsd:element name="comments" type="xsd:string" minOccurs="0"/>
													<xsd:element name="chromosome_list" minOccurs="0">
														<xsd:complexType>
															<xsd:sequence>
																<xsd:element name="chromosome" maxOccurs="unbounded">
																	<xsd:complexType>
																		<xsd:attribute name="name" type="xsd:string" use="required"/>
																		<xsd:attribute name="length" type="xsd:string" use="required"/>
																	</xsd:complexType>
																</xsd:element>
															</xsd:sequence>
														</xsd:complexType>
													</xsd:element>
												</xsd:sequence>
												<xsd:attribute name="id" type="xsd:ID" use="required"/>
												<xsd:attribute name="primary_scientific_name" type="xsd:string" use="required"/>
												<xsd:attribute name="is_sequenced_genome" type="xsd:string" use="required"/>
												<xsd:attribute name="is_circular_genome" type="xsd:string" use="required"/>
												<xsd:attribute name="general_classification" type="xsd:string" use="required"/>
												<xsd:attribute name="num_chromosomes" type="xsd:string"/>
												<xsd:attribute name="cell_structure" type="xsd:string"/>
											</xsd:complexType>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="exp_set" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="exp_set_header" minOccurs="0">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="biology_desc" type="xsd:string" nillable="true"/>
										<xsd:element name="analysis_desc" type="xsd:string" nillable="true"/>
										<xsd:element name="exp_factors_list" minOccurs="0">
											<xsd:complexType>
												<xsd:sequence>
													<xsd:element name="exp_factor" maxOccurs="unbounded">
														<xsd:complexType>
															<xsd:attribute name="id" type="xsd:ID" use="required"/>
															<xsd:attribute name="factor_name" type="xsd:string" use="required"/>
															<xsd:attribute name="factor_units" type="xsd:string"/>
															<xsd:attribute name="major_category" type="xsd:string" use="optional"/>
															<xsd:attribute name="minor_category" type="xsd:string" use="optional"/>
														</xsd:complexType>
													</xsd:element>
												</xsd:sequence>
											</xsd:complexType>
										</xsd:element>
										<xsd:element name="treatment_list" minOccurs="0">
											<xsd:complexType>
												<xsd:sequence maxOccurs="unbounded">
													<xsd:element name="treatment">
														<xsd:complexType>
															<xsd:sequence>
																<xsd:element name="treat_array_list">
																	<xsd:complexType>
																		<xsd:sequence>
																			<xsd:element name="treat_array" minOccurs="0" maxOccurs="unbounded">
																				<xsd:complexType>
																					<xsd:attribute name="measurement_id" type="xsd:IDREF" use="required"/>
																				</xsd:complexType>
																			</xsd:element>
																		</xsd:sequence>
																	</xsd:complexType>
																</xsd:element>
																<xsd:element name="treat_factor_list">
																	<xsd:complexType>
																		<xsd:sequence>
																			<xsd:element name="treat_factor" minOccurs="0" maxOccurs="unbounded">
																				<xsd:complexType>
																					<xsd:attribute name="factor_id" type="xsd:IDREF" use="required"/>
																					<xsd:attribute name="value" type="xsd:string" use="required"/>
																					<xsd:attribute name="ref_value" type="xsd:string" use="required"/>
																				</xsd:complexType>
																			</xsd:element>
																		</xsd:sequence>
																	</xsd:complexType>
																</xsd:element>
															</xsd:sequence>
															<xsd:attribute name="id" type="xsd:ID" use="required"/>
															<xsd:attribute name="ratio_am_id" type="xsd:IDREF"/>
															<xsd:attribute name="treatment_name" type="xsd:string" use="required"/>
														</xsd:complexType>
													</xsd:element>
												</xsd:sequence>
											</xsd:complexType>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
								<xsd:key name="k1">
									<xsd:selector xpath="./exp_factors_list/exp_factor"/>
									<xsd:field xpath="id"/>
								</xsd:key>
								<xsd:keyref name="fk1" refer="k1">
									<xsd:selector xpath="./treatment_list/treatment/treat_factor_list/treat_factor"/>
									<xsd:field xpath="factor_id"/>
								</xsd:keyref>
							</xsd:element>
							<xsd:element name="array" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="spotter_sw_params" type="xsd:string" minOccurs="0"/>
										<xsd:element name="spotter_hw_params" type="xsd:string" minOccurs="0"/>
										<xsd:element name="image_an_params" type="xsd:string" minOccurs="0"/>
										<xsd:element name="am_list" minOccurs="0">
											<xsd:complexType>
												<xsd:sequence>
													<xsd:element name="array_measurement" maxOccurs="unbounded">
														<xsd:complexType>
															<xsd:sequence>
																<xsd:element name="description" type="xsd:string" minOccurs="0"/>
																<xsd:element name="equation" minOccurs="0">
																	<xsd:complexType>
																		<xsd:attribute name="type" type="xsd:string" use="required"/>
																		<xsd:attribute name="value" type="xsd:string" use="required"/>
																	</xsd:complexType>
																</xsd:element>
															</xsd:sequence>
															<xsd:attribute name="type" type="xsd:string" use="required"/>
															<xsd:attribute name="channel_id" type="xsd:IDREF"/>
															<xsd:attribute name="file_name" type="xsd:string"/>
															<xsd:attribute name="id" type="xsd:ID" use="required"/>
														</xsd:complexType>
													</xsd:element>
												</xsd:sequence>
											</xsd:complexType>
											<xsd:key name="arr_id">
												<xsd:selector xpath="./array_measurement"/>
												<xsd:field xpath="id"/>
											</xsd:key>
										</xsd:element>
									</xsd:sequence>
									<xsd:attribute name="name" type="xsd:string"/>
									<xsd:attribute name="spotter_sw_id" type="xsd:IDREF"/>
									<xsd:attribute name="spotter_hw_id" type="xsd:IDREF"/>
									<xsd:attribute name="image_an_id" type="xsd:IDREF"/>
									<xsd:attribute name="identifier_code" type="xsd:string"/>
									<xsd:attribute name="release_date" type="xsd:string" use="optional"/>
									<xsd:attribute name="group_id" type="xsd:IDREF"/>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="id" type="xsd:ID" use="required"/>
						<xsd:attribute name="owner_contact_id" type="xsd:IDREF"/>
						<xsd:attribute name="group_id" type="xsd:IDREF"/>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="local_accession" type="xsd:string"/>
						<xsd:attribute name="release_date" type="xsd:string" use="required"/>
					</xsd:complexType>
					<xsd:keyref name="arr_fk" refer="arr_id">
						<xsd:selector xpath="./exp_set_header/treatment_list/treatment/treat_array_list/treat_array"/>
						<xsd:field xpath="measurement_id"/>
					</xsd:keyref>
				</xsd:element>
			</xsd:sequence>
			<xsd:attribute name="date" type="xsd:string"/>
			<xsd:attribute name="cvs_id" type="xsd:string"/>
			<xsd:attribute name="version" type="xsd:string"/>
		</xsd:complexType>
		<xsd:key name="cont_key">
			<xsd:selector xpath="./header/contact_list/contact"/>
			<xsd:field xpath="id"/>
		</xsd:key>
		<xsd:keyref name="cont_fk" refer="cont_key">
			<xsd:selector xpath="./exp_set"/>
			<xsd:field xpath="owner_contact_id"/>
		</xsd:keyref>
	</xsd:element>
</xsd:schema>
