<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
	<!ENTITY xslns 'http://www.w3.org/1999/XSL/Transform'>
	<!ENTITY dcns 'http://purl.org/dc/elements/1.1/'>
	<!ENTITY rdfns 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
	<!ENTITY rdfsns 'http://www.w3.org/2000/01/rdf-schema#'>
	<!ENTITY esdns 'http://www.esd.org.uk/standards'>
	<!ENTITY lgtlns 'http://www.esd.org.uk/standards/lgtl/0.01/lgtl-schema#'>
	<!ENTITY egmsns 'http://www.esd.org.uk/standards/egms/3.0/egms-schema#'>
]>
<xsl:stylesheet version="1.0" xmlns:xsl="&xslns;" xmlns:dc="&dcns;" xmlns:rdf="&rdfns;" xmlns:rdfs="&rdfsns;" xmlns:lgtl="&lgtlns;" xmlns:esd="&esdns;" xmlns:egms="&egmsns;">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:include href="rdfs.xslt"/>
	<xsl:namespace-alias stylesheet-prefix="esd" result-prefix="rdf"/>
	<xsl:template match="esd:ControlledList">
		<rdf:RDF>
			<rdf:Property rdf:about="&lgtlns;useItem">
				<rdfs:label>Use Item</rdfs:label>
				<rdfs:subPropertyOf rdf:resource="&dcns;relation"/>
				<rdfs:comment>Use the related item in preference to this one</rdfs:comment>
				<rdfs:isDefinedBy rdf:resource="&lgtlns;"/>
			</rdf:Property>
			<rdf:Property rdf:about="&lgtlns;conceptId">
				<rdfs:label>Concept Id</rdfs:label>
				<rdfs:subPropertyOf rdf:resource="&dcns;identity"/>
				<rdfs:comment>The concept Id of this item</rdfs:comment>
				<rdfs:isDefinedBy rdf:resource="&lgtlns;"/>
			</rdf:Property>
			<xsl:comment>This property would limit values of dc.type to those of lgtl.TypeClass.</xsl:comment>
			<xsl:comment>
&lt;rdf:Description rdf:about="&dcns;type"&gt;
   &lt;rdfs:range rdf:resource="&lgtlns;TypeClass"/&gt;
&lt;/rdf:Description&gt;
</xsl:comment>
			<rdfs:Class rdf:about="&lgtlns;TypeClass">
				<rdfs:label>Resource Type Value Class</rdfs:label>
				<rdfs:comment>The class for values of the DC Resource Type property.</rdfs:comment>
				<rdfs:subClassOf rdf:resource="&egmsns;EGMSValueClass"/>
				<rdfs:isDefinedBy rdf:resource="&lgtlns;"/>
			</rdfs:Class>
			<xsl:apply-templates select="esd:Item"/>
		</rdf:RDF>
	</xsl:template>
	<xsl:template match="esd:Item">
		<xsl:variable name="Name">
			<xsl:call-template name="ToUpperCamel">
				<xsl:with-param name="Word" select="esd:Name"/>
			</xsl:call-template>
		</xsl:variable>
		<rdfs:Class rdf:about="&lgtlns;{$Name}">
			<xsl:apply-templates select="esd:Name"/>
			<xsl:apply-templates select="esd:ScopeNotes"/>
			<rdfs:isDefinedBy rdf:resource="&lgtlns;"/>
			<xsl:call-template name="BroaderItem">
				<xsl:with-param name="Default">&lgtlns;TypeClass</xsl:with-param>
			</xsl:call-template>
			<xsl:apply-templates select="esd:UseItem"/>
			<xsl:apply-templates select="esd:RelatedItem"/>
			<dc:identifier>
				<xsl:value-of select="@Id"/>
			</dc:identifier>
			<xsl:if test="@ConceptId != ''">
				<lgtl:conceptId>
					<xsl:value-of select="@ConceptId"/>
				</lgtl:conceptId>
			</xsl:if>
		</rdfs:Class>
	</xsl:template>
	<xsl:template match="esd:BroaderItem">
		<xsl:variable name="Name">
			<xsl:call-template name="ToUpperCamel">
				<xsl:with-param name="Word" select="."/>
			</xsl:call-template>
		</xsl:variable>
		<rdfs:subClassOf rdf:resource="&lgtlns;{$Name}"/>
	</xsl:template>
	<xsl:template match="esd:UseItem">
		<xsl:variable name="Name">
			<xsl:call-template name="ToUpperCamel">
				<xsl:with-param name="Word" select="."/>
			</xsl:call-template>
		</xsl:variable>
		<lgtl:useItem rdf:resource="&lgtlns;{$Name}"/>
	</xsl:template>
	<xsl:template match="esd:RelatedItem">
		<xsl:variable name="Name">
			<xsl:call-template name="ToUpperCamel">
				<xsl:with-param name="Word" select="."/>
			</xsl:call-template>
		</xsl:variable>
		<dc:relation rdf:resource="&lgtlns;{$Name}"/>
	</xsl:template>
</xsl:stylesheet>
