<?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 lgclns 'http://www.esd.org.uk/standards/lgcl/1.04/lgcl-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:lgcl="&lgclns;" 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="&lgclns;useItem">
        <rdfs:label>Use Item</rdfs:label>
        <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/relation"/>
        <rdfs:comment>Use the related item in preference to this one</rdfs:comment>
        <rdfs:isDefinedBy rdf:resource="&lgclns;"/>
      </rdf:Property>
      <rdf:Property rdf:about="&lgclns;conceptId">
        <rdfs:label>Concept Id</rdfs:label>
        <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/identity"/>
        <rdfs:comment>The concept Id of this item</rdfs:comment>
        <rdfs:isDefinedBy rdf:resource="&lgclns;"/>
      </rdf:Property>
      <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="&lgclns;{$Name}">
      <xsl:apply-templates select="esd:Name"/>
      <xsl:apply-templates select="esd:ScopeNotes"/>
      <rdfs:isDefinedBy rdf:resource="&lgclns;"/>
      <xsl:call-template name="BroaderItem">
        <xsl:with-param name="Default">&egmsns;SubjectCategoryClass</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 != ''">
        <lgcl:conceptId>
          <xsl:value-of select="@ConceptId"/>
        </lgcl: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="&lgclns;{$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>
    <lgcl:useItem rdf:resource="&lgclns;{$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="&lgclns;{$Name}"/>
  </xsl:template>
</xsl:stylesheet>
