<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by Nicolas Cochard (Porism Limited) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.bs8723.org/XmlSchema/" xmlns:bs8723="http://schemas.bs8723.org/XmlSchema/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:eGMS="http://www.govtalk.gov.uk/CM/gms" targetNamespace="http://schemas.bs8723.org/XmlSchema/" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.govtalk.gov.uk/CM/gms" schemaLocation="DD8723-5-eGms.xsd"/>
	<xs:import namespace="http://purl.org/dc/terms/" schemaLocation="DD8723-5-DCTerms.xsd"/>
	<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="DD8723-5-DC.xsd"/>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
	<xs:element name="Thesaurus" type="ThesaurusStructure">
		<xs:annotation>
			<xs:documentation>Root element of the XML file containing the Thesaurus data.</xs:documentation>
		</xs:annotation>
		<xs:unique name="CustomAttributeIdentifier">
			<xs:annotation>
				<xs:documentation>Makes the identifier of the custom attributes unique.</xs:documentation>
			</xs:annotation>
			<xs:selector xpath="bs8723:CustomAttribute"/>
			<xs:field xpath="@dc:identifier"/>
		</xs:unique>
		<xs:unique name="ThesaurusConceptArrayIdentifier">
			<xs:annotation>
				<xs:documentation>Makes the identifier of the concepts and arrays unique.</xs:documentation>
			</xs:annotation>
			<xs:selector xpath="bs8723:ThesaurusConcept|bs8723:ThesaurusArray"/>
			<xs:field xpath="@dc:identifier"/>
		</xs:unique>
		<xs:unique name="ThesaurusConceptIdentifier">
			<xs:annotation>
				<xs:documentation>Makes the identifier of the concepts unique.</xs:documentation>
			</xs:annotation>
			<xs:selector xpath="bs8723:ThesaurusConcept"/>
			<xs:field xpath="@dc:identifier"/>
		</xs:unique>
		<xs:unique name="ThesaurusArrayIdentifier">
			<xs:annotation>
				<xs:documentation>Makes the identifier of the arrays unique.</xs:documentation>
			</xs:annotation>
			<xs:selector xpath="bs8723:ThesaurusArray"/>
			<xs:field xpath="@dc:identifier"/>
		</xs:unique>
		<xs:unique name="ThesaurusTermIdentifier">
			<xs:annotation>
				<xs:documentation>Makes the identifier of the terms unique.</xs:documentation>
			</xs:annotation>
			<xs:selector xpath="bs8723:ThesaurusConcept/bs8723:PreferredTerm|bs8723:ThesaurusConcept/bs8723:NonPreferredTerm|bs8723:CompoundEquivalence/bs8723:CompoundNonPreferredTerm"/>
			<xs:field xpath="@dc:identifier"/>
		</xs:unique>
	</xs:element>
	<xs:complexType name="ThesaurusStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of the thesaurus</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="dc:identifier" maxOccurs="unbounded"/>
			<xs:element ref="dc:contributor" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:coverage" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:creator" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:date" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dcterms:created" minOccurs="0"/>
			<xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:description" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:format" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:language" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:publisher" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:relation" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:rights" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:source" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:subject" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:title" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ThesaurusArray" type="ThesaurusArrayStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Array of the thesaurus.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ThesaurusConcept" type="ThesaurusConceptStructure" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Concept contained in the Thesaurus</xs:documentation>
				</xs:annotation>
				<xs:unique name="TermIdentifier">
					<xs:annotation>
						<xs:documentation>Makes the identifier of the terms unique.</xs:documentation>
					</xs:annotation>
					<xs:selector xpath="bs8723:ThesaurusConcept/bs8723:PreferredTerm|bs8723:ThesaurusConcept/bs8723:NonPreferredTerm"/>
					<xs:field xpath="@dc:identifier"/>
				</xs:unique>
				<xs:unique name="PreferredTermIdentifier">
					<xs:annotation>
						<xs:documentation>Makes the identifier of the preferred terms unique.</xs:documentation>
					</xs:annotation>
					<xs:selector xpath="bs8723:ThesaurusConcept/bs8723:PreferredTerm"/>
					<xs:field xpath="@dc:identifier"/>
				</xs:unique>
				<xs:unique name="NonPreferredTermIdentifier">
					<xs:annotation>
						<xs:documentation>Makes the identifier of the non-preferred terms unique.</xs:documentation>
					</xs:annotation>
					<xs:selector xpath="bs8723:ThesaurusConcept/bs8723:NonPreferredTerm"/>
					<xs:field xpath="@dc:identifier"/>
				</xs:unique>
			</xs:element>
			<xs:element name="CompoundNonPreferredTerm" type="CompoundNonPreferredTermStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Details of the compound non-preferred term</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ThesaurusConceptStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of a concept in a Thesaurus.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="dcterms:created" minOccurs="0"/>
			<xs:element ref="dcterms:modified" minOccurs="0"/>
			<xs:element ref="Notation" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="eGMS:Status" minOccurs="0"/>
			<xs:element name="TopConcept" type="xs:boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Indicates whether this concept is a top concept</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ScopeNote" type="ScopeNoteStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Scope note of the concept.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HistoryNote" type="HistoryNoteStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>History note of the concept.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="PreferredTerm" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Preferred term of the concept. A concept may have only one preferred term per language.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="PreferredTermStructure"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="NonPreferredTerm" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Non-preferred term of the concept.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="SimpleNonPreferredTermStructure"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="HasAttribute" type="CustomAttributeStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Reference to an attribute defined by the thesaurus.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HasHierRelConcept" type="HierRelStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Reference to a broader or narrower concept of this concept.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HasRelatedConcept" type="AssociativeRelationshipStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Reference to the related concepts of this concept.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HasTopConcept" type="xs:string" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Contains the identifier of the top concept.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute ref="dc:identifier" use="required"/>
	</xs:complexType>
	<xs:complexType name="ThesaurusTermStructure" abstract="true">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a term in a Thesaurus.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="LexicalValue"/>
			<xs:element ref="dcterms:created" minOccurs="0"/>
			<xs:element ref="dcterms:modified" minOccurs="0"/>
			<xs:element ref="dc:source" minOccurs="0"/>
			<xs:element ref="eGMS:Status" minOccurs="0"/>
			<xs:element name="HistoryNote" type="HistoryNoteStructure" minOccurs="0">
				<xs:annotation>
					<xs:documentation>History note of the term.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Definition" type="DefinitionStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Definition of the term.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="EditorialNote" type="EditorialNoteStructure" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Editorial note about the term.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute ref="xml:lang"/>
		<xs:attribute ref="dc:identifier"/>
	</xs:complexType>
	<xs:complexType name="NoteStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of notes (scope notes, history notes, etc.).</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="LexicalValue">
				<xs:annotation>
					<xs:documentation>The notes may include references to other concepts.</xs:documentation>
				</xs:annotation>
				<xs:complexType mixed="true">
					<xs:sequence>
						<xs:element name="RefersTo" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element ref="dcterms:created" minOccurs="0"/>
			<xs:element ref="dcterms:modified" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="xml:lang"/>
	</xs:complexType>
	<xs:complexType name="ScopeNoteStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of scope notes. This complex type extends the generic structure of NoteStructure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="NoteStructure"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="HistoryNoteStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of history notes. This complex type extends the generic structure of NoteStructure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="NoteStructure"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DefinitionStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of definitions. This complex type extends the generic structure of NoteStructure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="NoteStructure">
				<xs:sequence>
					<xs:element ref="dc:source"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EditorialNoteStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of editorial notes. This complex type extends the generic structure of NoteStructure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="NoteStructure"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PreferredTermStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a preferred term.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ThesaurusTermStructure">
				<xs:sequence>
					<xs:element name="UF" type="UFRelationshipStructure" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>References the non-preferred terms of the concept or a compound non preferred term.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SimpleNonPreferredTermStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of non-preferred terms.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ThesaurusTermStructure">
				<xs:sequence>
					<xs:element name="USE" type="USERelationshipStructure">
						<xs:annotation>
							<xs:documentation>References the preferred term of the concept.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="NodeLabelStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of node labels</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="Notation" minOccurs="0"/>
			<xs:element ref="LexicalValue"/>
			<xs:element ref="dcterms:created" minOccurs="0"/>
			<xs:element ref="dcterms:modified" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="xml:lang"/>
	</xs:complexType>
	<xs:complexType name="ThesaurusArrayStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of arrays</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="IsLabelledBy" type="NodeLabelStructure" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Label given to the array.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HasSuperOrdinate" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Identifies the superordinate concepts or arrays.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="HasMember" type="xs:string" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Identifies the concepts or other arrays composing this array</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute ref="dc:identifier" use="required"/>
		<xs:attribute name="Ordered" type="xs:boolean" default="false">
			<xs:annotation>
				<xs:documentation>Indicates whether the order of the collection should be maintained.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="CompoundNonPreferredTermStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of non-preferred terms.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ThesaurusTermStructure">
				<xs:sequence>
					<xs:element name="USE" type="USEPlusRelationshipStructure" minOccurs="2" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="LexicalValue">
		<xs:annotation>
			<xs:documentation>Lexical value of a term or node label</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Notation" type="xs:string">
		<xs:annotation>
			<xs:documentation>Notation of the node label or concept</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="HierRelStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a BT and NT relationship</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Role" type="HierRelType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="HierRelType">
		<xs:annotation>
			<xs:documentation>Data type containing the list of common BT and NT relationships</xs:documentation>
		</xs:annotation>
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="BT"/>
					<xs:enumeration value="BT/BTG"/>
					<xs:enumeration value="BT/BTI"/>
					<xs:enumeration value="BT/BTP"/>
					<xs:enumeration value="NT"/>
					<xs:enumeration value="NT/NTG"/>
					<xs:enumeration value="NT/NTI"/>
					<xs:enumeration value="NT/NTP"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="AssociativeRelationshipStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of an associative relationship</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Role" type="AssociativeRelationshipType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="AssociativeRelationshipType">
		<xs:annotation>
			<xs:documentation>Data type containing the list of common RT relationships</xs:documentation>
		</xs:annotation>
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="RT"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="USERelationshipStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a USE relationship</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Role" type="USERelationshipType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="USERelationshipType">
		<xs:annotation>
			<xs:documentation>Data type containing the list of common USE relationship types</xs:documentation>
		</xs:annotation>
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="USE"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="USEPlusRelationshipStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a USE + relationship</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Role" type="USEPlusRelationshipType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="USEPlusRelationshipType">
		<xs:annotation>
			<xs:documentation>Data type containing the list of common USE + relationship types</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="USE +"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="UFRelationshipStructure">
		<xs:annotation>
			<xs:documentation>Data type defining the structure of a UF relationship</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Role" type="UFRelationshipType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="UFRelationshipType">
		<xs:annotation>
			<xs:documentation>Data type containing the list of common UF relationship types</xs:documentation>
		</xs:annotation>
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="UF"/>
					<xs:enumeration value="UF +"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="CustomAttributeStructure">
		<xs:annotation>
			<xs:documentation>Data type representing the structure of a custom attribute</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="LexicalValue"/>
			<xs:element name="CustomAttributeType" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>

