diff --git a/public/ontology/emblem.rdf b/public/ontology/emblem.rdf index 36d082603e6215f5aca6bf77dcd06df27a612227..9237e7deb90b333c8c9dddc5922f82dc7044d137 100644 --- a/public/ontology/emblem.rdf +++ b/public/ontology/emblem.rdf @@ -3,15 +3,17 @@ xmlns:cnt="http://www.w3.org/2011/content#" 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:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#"> <rdf:Description rdf:about="http://uri.hab.de/ontology/emblem"> - <dct:title xml:lang="en">Wolfenbüttel Core Emblem Ontology (beta)</dct:title> + <dct:title xml:lang="en">Wolfenbüttel Core Emblem Ontology</dct:title> <dct:creator> <foaf:Person> <foaf:name>Monika Biel</foaf:name> - <foaf:email rdf:resource="mailto:biel@hab.de"/> + <foaf:mbox rdf:resource="mailto:biel@hab.de"/> </foaf:Person> </dct:creator> <dct:creator> @@ -20,26 +22,52 @@ <foaf:mbox rdf:resource="mailto:maus@hab.de"/> </foaf:Person> </dct:creator> - <dct:creator> - <foaf:Person rdf:about="https://orcid.org/0000-0002-1509-6960"> - <foaf:name>Thomas Stäcker</foaf:name> - <foaf:mbox rdf:resource="mailto:staecker@hab.de"/> - </foaf:Person> - </dct:creator> - <rdfs:seeAlso rdf:parseType="Resource"> + <dct:relation rdf:parseType="Resource"> <foaf:homepage rdf:resource="http://diglib.hab.de?link=016"/> <dct:title>Project "Linked Open Emblem Data" (2015-2017)</dct:title> - </rdfs:seeAlso> - <rdfs:seeAlso rdf:parseType="Resource"> + </dct:relation> + <dct:relation rdf:parseType="Resource"> <foaf:homepage rdf:resource="http://diglib.hab.de/rules/schema/emblem"/> <dct:title>Emblem Schema Namespace Document</dct:title> - </rdfs:seeAlso> - <rdfs:seeAlso rdf:parseType="Resource"> + </dct:relation> + <dct:relation rdf:parseType="Resource"> <foaf:homepage rdf:resource="http://dx.doi.org/10.1108/LHT-11-2016-0126"/> <dct:title> Cole, Timothy W., Myung-Ja K. Han, Maria Janina Sarol, Monika Biel, and David Maus. “Using Linked Open Data to Enhance the Discoverability, Functionality & Impact of Emblematica Online.†Library Hi Tech 35, no. 1 (January 31, 2017) </dct:title> - </rdfs:seeAlso> + </dct:relation> + <dct:relation rdf:parseType="Resource"> + <foaf:homepage rdf:resource="http://diglib.hab.de/edoc/ed000256/start.htm"/> + <dct:title> + Datenabzüge: Linked Open Emblem Data / Herausgegeben von Herzog August Bibliothek Wolfenbüttel - Wolfenbüttel : + Herzog August Bibliothek, 2018–. + </dct:title> + </dct:relation> + <dct:publisher> + <foaf:Organization rdf:about="http://uri.hab.de/instance/organization/habwf"> + <skos:prefLabel>Herzog August Bibliothek Wolfenbüttel</skos:prefLabel> + </foaf:Organization> + </dct:publisher> + <dct:license> + <dct:LicenseDocument> + <owl:sameAs rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/> + <skos:prefLabel>CC0 1.0 Universal</skos:prefLabel> + </dct:LicenseDocument> + </dct:license> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2018-01-29</dct:modified> + <dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2018-01-29</dct:created> + <dct:subject> + <skos:Concept> + <owl:sameAs rdf:resource="http://d-nb.info/gnd/7863462-3"/> + <skos:prefLabel>Linked Data</skos:prefLabel> + </skos:Concept> + </dct:subject> + <dct:subject> + <skos:Concept> + <owl:sameAs rdf:resource="http://d-nb.info/gnd/4152065-8"/> + <skos:prefLabel xml:lang="de">Emblematik <Emblemliteratur></skos:prefLabel> + </skos:Concept> + </dct:subject> </rdf:Description> <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#Emblem"> @@ -64,13 +92,13 @@ </rdfs:comment> </rdfs:Class> - <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#EmblemPart"/> - <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#EmblemTextPart"> - <rdfs:subClassOf rdf:resource="http://uri.hab.de/ontology/emblem#EmblemPart"/> + <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#EmblemPart"> + <rdfs:label xml:lang="de">Teil eines Emblems</rdfs:label> + <rdfs:label xml:lang="en">Emblem part</rdfs:label> </rdfs:Class> <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#Motto"> - <rdfs:subClassOf rdf:resource="http://uri.hab.de/ontology/emblem#EmblemTextPart"/> + <rdfs:subClassOf rdf:resource="http://uri.hab.de/ontology/emblem#EmblemPart"/> <rdfs:label>Motto</rdfs:label> <rdfs:comment xml:lang="de"> Motto (Inscriptio, Lemma) ist ein kurzer Sinnspruch aus kanonischen Texten antiker Schriftsteller oder der Bibel. @@ -81,7 +109,7 @@ </rdfs:Class> <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#Subscriptio"> - <rdfs:subClassOf rdf:resource="http://uri.hab.de/ontology/emblem#EmblemTextPart"/> + <rdfs:subClassOf rdf:resource="http://uri.hab.de/ontology/emblem#EmblemPart"/> <rdfs:label>Subscriptio</rdfs:label> <rdfs:comment xml:lang="de"> Die Subscriptio oder Epigram ist ein meist metrischer Text (häufig in epigrammatischer Form), der als Verbindung @@ -106,25 +134,34 @@ </rdfs:comment> </rdfs:Class> - <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#TextSegment"/> + <rdfs:Class rdf:about="http://uri.hab.de/ontology/emblem#TextSegment"> + <rdfs:label xml:lang="en">Text segment</rdfs:label> + <rdfs:label xml:lang="de">Textsegment</rdfs:label> + </rdfs:Class> <rdfs:Property rdf:about="http://uri.hab.de/ontology/emblem#hasPart"> + <rdfs:label xml:lang="en">Has Part</rdfs:label> + <rdfs:label xml:lang="de">Teil von</rdfs:label> <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/terms/hasPart"/> <rdfs:range rdf:resource="http://uri.hab.de/ontology/emblem#EmblemPart"/> <rdfs:domain rdf:resource="http://uri.hab.de/ontology/emblem#Emblem"/> </rdfs:Property> - <rdf:Property rdf:about="http://uri.hab.de/ontology/emblem#hasTextSegment"> + <rdfs:Property rdf:about="http://uri.hab.de/ontology/emblem#hasTextSegment"> + <rdfs:label xml:lang="en">Has text segment</rdfs:label> + <rdfs:label xml:lang="de">Besitzt Textsegment</rdfs:label> <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/terms/hasPart"/> - <rdfs:domain rdf:resource="http://uri.hab.de/ontology/emblem#EmblemTextPart"/> + <rdfs:domain rdf:resource="http://uri.hab.de/ontology/emblem#EmblemPart"/> <rdfs:range rdf:resource="http://uri.hab.de/ontology/emblem#TextSegment"/> - </rdf:Property> + </rdfs:Property> <rdfs:Property rdf:about="http://uri.hab.de/ontology/emblem#isShownBy"> + <rdfs:label xml:lang="en">Is shown by</rdfs:label> <rdfs:seeAlso rdf:resource="http://www.europeana.eu/schemas/edm/isShownBy"/> </rdfs:Property> <rdfs:Property rdf:about="http://uri.hab.de/ontology/emblem#isShownAt"> + <rdfs:label xml:lang="en">Is shown at</rdfs:label> <rdfs:seeAlso rdf:resource="http://www.europeana.eu/schemas/edm/isShownAt"/> </rdfs:Property> diff --git a/public/ontology/emblem.xsl b/public/ontology/emblem.xsl index b0a650b14518a75ff5204233b33f9c3ca36aa696..a06bd3c8e6d7590fb638f81f0d683c1c1be5ccff 100644 --- a/public/ontology/emblem.xsl +++ b/public/ontology/emblem.xsl @@ -1,147 +1,151 @@ <xsl:transform version="1.0" 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" indent="yes"/> + <xsl:output method="html" encoding="utf-8"/> <xsl:template match="rdf:RDF"> <html> <head> - <title><xsl:value-of select="rdf:Description/dct:title"/></title> + <title><xsl:value-of select="rdf:Description/dct:title[1]"/></title> <style type="text/css"> - body { max-width: 60em; margin: 0 auto; } - table { border-collapse: collapse; width: 100%; border: thin dotted grey; margin-bottom: 1em; } - th, td { text-align: left; vertical-align: top; } - tbody th { width: 15em; } - thead th { background-color: black; color: white; } - tr[lang=de] { font-size: small; } + 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> - <h1><xsl:value-of select="rdf:Description/dct:title"/></h1> - <ul> - <xsl:for-each select="rdf:Description/dct:creator/foaf:Person"> - <li> - <xsl:value-of select="foaf:name"/>, Herzog August Bibliothek Wolfenbüttel - </li> - </xsl:for-each> - </ul> + <xsl:apply-templates select="rdf:Description"/> <h2>Classes</h2> - <xsl:for-each select="rdfs:Class"> - <xsl:sort select="@rdf:about"/> - <table id="{substring-after(@rdf:about, '#')}"> - <thead> - <tr> - <th colspan="2"><xsl:value-of select="@rdf:about"/></th> - </tr> - </thead> - <tbody> - <xsl:if test="rdfs:subClassOf"> - <tr> - <th>Sub class of</th> - <td> - <a href="{rdfs:subClassOf/@rdf:resource}"> - <xsl:value-of select="rdfs:subClassOf/@rdf:resource"/> - </a> - </td> - </tr> - </xsl:if> - <tr lang="en"> - <th/> - <td> - <xsl:value-of select="rdfs:comment[@xml:lang = 'en']"/> - </td> - </tr> - <tr lang="de"> - <th/> - <td> - <xsl:value-of select="rdfs:comment[@xml:lang = 'de']"/> - </td> - </tr> - </tbody> - </table> - </xsl:for-each> - + <xsl:apply-templates select="rdfs:Class"/> <h2>Properties</h2> - <xsl:for-each select="rdfs:Property"> - <xsl:sort select="@rdf:about"/> - <table id="{substring-after(@rdf:about, '#')}"> - <thead> - <tr> - <th colspan="2"><xsl:value-of select="@rdf:about"/></th> - </tr> - </thead> - <tbody> - <xsl:if test="rdfs:subPropertyOf"> - <tr> - <th>Sub property of</th> - <td> - <a href="{rdfs:subPropertyOf/@rdf:resource}"> - <xsl:value-of select="rdfs:subPropertyOf/@rdf:resource"/> - </a> - </td> - </tr> - </xsl:if> - <tr lang="en"> - <th/> - <td> - <xsl:value-of select="rdfs:comment[@xml:lang = 'en']"/> - </td> - </tr> - <tr lang="de"> - <th/> - <td> - <xsl:value-of select="rdfs:comment[@xml:lang = 'de']"/> - </td> - </tr> - <xsl:if test="rdfs:domain"> - <tr> - <th>Domain</th> - <td> - <a href="{rdfs:domain/@rdf:resource}"> - <xsl:value-of select="rdfs:domain/@rdf:resource"/> - </a> - </td> - </tr> - </xsl:if> - <xsl:if test="rdfs:range"> - <tr> - <th>Range</th> - <td> - <a href="{rdfs:range/@rdf:resource}"> - <xsl:value-of select="rdfs:range/@rdf:resource"/> - </a> - </td> - </tr> - </xsl:if> - <xsl:if test="rdfs:seeAlso"> - <tr> - <th>See also</th> - <td> - <a href="{rdfs:seeAlso/@rdf:resource}"> - <xsl:value-of select="rdfs:seeAlso/@rdf:resource"/> - </a> - </td> - </tr> - </xsl:if> - </tbody> - </table> - </xsl:for-each> - <h2>See also</h2> - <ul> - <xsl:for-each select="rdf:Description/rdfs:seeAlso"> - <li> - <a href="{foaf:homepage/@rdf:resource}"> - <xsl:value-of select="dct:title"/> - </a> - </li> - </xsl:for-each> - </ul> + <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(' <', substring-after(foaf:mbox/@rdf:resource, 'mailto:'), '>')"/> + </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() > 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() > 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>