diff --git a/src/xslt/emblem.xsl b/src/xslt/emblem.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..d4eefa2939b1ad31acd8df1a688a9c58bfb6f418
--- /dev/null
+++ b/src/xslt/emblem.xsl
@@ -0,0 +1,152 @@
+<xsl:transform version="2.0"
+               exclude-result-prefixes="#all"
+               xmlns:dct="http://purl.org/dc/terms/"
+               xmlns:foaf="http://xmlns.com/foaf/0.1/"
+               xmlns:owl="http://www.w3.org/2002/07/owl#"
+               xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+               xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+               xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output method="html" encoding="utf-8"/>
+
+  <xsl:template match="rdf:RDF">
+    <html>
+      <head>
+        <title><xsl:value-of select="rdf:Description/dct:title[1]"/></title>
+        <style type="text/css">
+          body { max-width: 60em; margin: 0 auto; font-family: "Open Sans", sans-serif; }
+          table, tr, th, td { border-collapse: collapse; }
+          th { text-align: left; vertical-align: top; }
+          th, td { padding: 0.25em 0.5em; }
+        </style>
+        <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+        <xsl:for-each select="rdf:Description/dct:*">
+          <xsl:if test="normalize-space()">
+            <meta name="DCTERMS.{local-name()}" content="{normalize-space()}"/>
+          </xsl:if>
+          <xsl:for-each select="owl:sameAs | foaf:page | foaf:homepage">
+            <link rel="DCT.{local-name(..)}" href="{@rdf:resource}"/>
+          </xsl:for-each>
+        </xsl:for-each>
+      </head>
+      <body>
+        <xsl:apply-templates select="rdf:Description"/>
+        <h2>Classes</h2>
+        <xsl:apply-templates select="rdfs:Class"/>
+        <h2>Properties</h2>
+        <xsl:apply-templates select="rdfs:Property"/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="rdf:Description">
+    <h1><xsl:value-of select="dct:title[1]"/></h1>
+    <ul>
+      <xsl:for-each select="dct:creator/foaf:Person">
+        <xsl:sort select="foaf:name"/>
+        <li>
+          <xsl:value-of select="foaf:name"/>
+          <xsl:if test="foaf:mbox">
+            <xsl:value-of select="concat(' &lt;', substring-after(foaf:mbox/@rdf:resource, 'mailto:'), '&gt;')"/>
+          </xsl:if>
+        </li>
+      </xsl:for-each>
+    </ul>
+    <h2>See also</h2>
+    <ul>
+      <xsl:for-each select="dct:relation">
+        <li>
+          <a href="{foaf:homepage/@rdf:resource}" target="_blank">
+            <xsl:value-of select="dct:title[1]"/>
+          </a>
+        </li>
+      </xsl:for-each>
+    </ul>
+  </xsl:template>
+
+  <xsl:template match="rdfs:Class">
+    <h3 id="{substring-after(@rdf:about, '#')}"><xsl:value-of select="rdfs:label[not(@xml:lang) or @xml:lang = 'en']"/></h3>
+    <table>
+      <tbody>
+        <xsl:call-template name="common-properties"/>
+        <xsl:if test="../rdfs:Class/rdfs:subClassOf[@rdf:resource = current()/@rdf:about]">
+          <tr>
+            <th>Subclasses</th>
+            <td>
+              <xsl:for-each select="../rdfs:Class[rdfs:subClassOf[@rdf:resource = current()/@rdf:about]]">
+                <xsl:if test="position() &gt; 1">
+                  <xsl:text>, </xsl:text>
+                </xsl:if>
+                <xsl:call-template name="uri-to-link">
+                  <xsl:with-param name="target" select="@rdf:about"/>
+                </xsl:call-template>
+              </xsl:for-each>
+            </td>
+          </tr>
+        </xsl:if>
+        <xsl:if test="../rdfs:Property/rdfs:domain[@rdf:resource = current()/@rdf:about]">
+          <tr>
+            <th>Properties</th>
+            <td>
+              <xsl:for-each select="../rdfs:Property[rdfs:domain[@rdf:resource = current()/@rdf:about]]">
+                <xsl:if test="position() &gt; 1">
+                  <xsl:text>, </xsl:text>
+                </xsl:if>
+                <xsl:call-template name="uri-to-link">
+                  <xsl:with-param name="target" select="@rdf:about"/>
+                </xsl:call-template>
+              </xsl:for-each>
+            </td>
+          </tr>
+        </xsl:if>
+      </tbody>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="rdfs:Property">
+    <h3 id="{substring-after(@rdf:about, '#')}"><xsl:value-of select="rdfs:label[not(@xml:lang) or @xml:lang = 'en']"/></h3>
+    <table>
+      <tbody>
+        <xsl:call-template name="common-properties"/>
+      </tbody>
+    </table>
+  </xsl:template>
+
+  <xsl:template name="uri-to-link">
+    <xsl:param name="target" select="@rdf:resource"/>
+    <xsl:choose>
+      <xsl:when test="starts-with($target, 'http://uri.hab.de/ontology/emblem#')">
+        <a href="#{substring-after($target, '#')}">
+          <xsl:value-of select="substring-after($target, '#')"/>
+        </a>
+      </xsl:when>
+      <xsl:otherwise>
+        <a href="{$target}" target="_blank">
+          <xsl:value-of select="$target"/>
+        </a>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template name="common-properties">
+    <tr>
+      <th>URI</th><td><xsl:value-of select="@rdf:about"/></td>
+    </tr>
+    <xsl:for-each select="rdfs:*[not(@xml:lang) or @xml:lang = 'en'][not(local-name() = 'label')]">
+      <tr>
+        <th><xsl:value-of select="local-name()"/></th>
+        <td>
+          <xsl:choose>
+            <xsl:when test="@rdf:resource">
+              <xsl:value-of select="@rdf:resource"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="normalize-space()"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </td>
+      </tr>
+    </xsl:for-each>
+  </xsl:template>
+
+</xsl:transform>