Skip to main content

Thesaurus Hierarchy Report

Generates an overview of the thesauri in a project and their hierarchies displaying up to four levels. For multilingual thesauri you can choose the language for the report. The named query in the PoolParty configuration (SesameSetup.xml) for the report looks like the following:

 <namedQueries>
...
        <entry>
            <key>Hierarchy</key>
            <value>
                <sparqlQueryParameterMap>
                    <entry>
                        <key>Language</key>
                        <value>en</value>
                    </entry>
                </sparqlQueryParameterMap>
                <sparqlQueryTemplate>
PREFIX skos:&lt;http://www.w3.org/2004/02/skos/core#&gt;
PREFIX dcterms:&lt;http://purl.org/dc/terms/&gt;
PREFIX rdfs:&lt;http://www.w3.org/2000/01/rdf-schema#&gt;
 
SELECT ?scheme ?schemeLabel ?n1 ?n2 ?n3 ?n4 ?n5
WHERE {
{
  ?scheme a skos:ConceptScheme.
  ?scheme skos:hasTopConcept ?c1.
  ?c1 skos:prefLabel ?n1. FILTER (lang(?n1) = &quot;%%%Language%%%&quot;)
  ?scheme
 dcterms:title ?schemeLabel. FILTER (lang(?schemeLabel)=&quot;%%%Language%%%&quot;)
}
OPTIONAL {
  ?c1 skos:narrower ?c2.
  ?c2 skos:prefLabel ?n2. FILTER (lang(?n2) = &quot;%%%Language%%%&quot;)
  OPTIONAL {
    ?c2 skos:narrower ?c3.
    ?c3 skos:prefLabel ?n3. FILTER (lang(?n3) = &quot;%%%Language%%%&quot;)
    OPTIONAL {
      ?c3 skos:narrower ?c4.
      ?c4 skos:prefLabel ?n4. FILTER (lang(?n4) = &quot;%%%Language%%%&quot;)
      OPTIONAL {
        ?c4 skos:narrower ?c5.
        ?c5 skos:prefLabel ?n5. FILTER (lang(?n5) = &quot;%%%Language%%%&quot;)
      }
    }
  }
}
} ORDER BY ?schemeLabel ?n1 ?n2 ?n3 ?n4 ?n5
                </sparqlQueryTemplate>
            </value>
        </entry>
...
    </namedQueries>

The velocity template for the report looks like the following:

THESAURUS HIERARCHY REPORT
--------------------------
#set($total = 0)
#foreach($r in $result)
#if (!$currScheme.equals($r.get("scheme")))
#set($total = $total + 1)
#set($currScheme = $r.get("scheme"))
$r.get("schemeLabel").getLabel()
#set($n1 = '')
#set($n2 = '')
#set($n3 = '')
#set($n4 = '')
#set($n5 = '')
#end
#if($r.get("n1") && !$n1.equals($r.get("n1").getLabel()))
#set($n1 = $r.get("n1").getLabel())
      TOP: $n1
#end
#if($r.get("n2") && !$n2.equals($r.get("n2").getLabel()))
#set($n2 = $r.get("n2").getLabel())
        NT1: $n2
#end
#if($r.get("n3") && !$n3.equals($r.get("n3").getLabel()))
#set($n3 = $r.get("n3").getLabel())
          NT2: $n3
#end
#if($r.get("n4") && !$n4.equals($r.get("n4").getLabel()))
#set($n4 = $r.get("n4").getLabel())
            NT3: $n4
#end
#if($r.get("n5") && !$n5.equals($r.get("n5").getLabel()))
#set($n5 = $r.get("n5").getLabel())
              NT4: $n5
#end
#end
---------------------------------------
$total Thesauri

The report entry in the PoolParty configuration (SesameSetup.xml) for the report looks like the following:

<reports>
...
        <entry>
            <key>Thesaurus Hierarchy Report</key>
            <value>
                <contentType>text/plain</contentType>
                <namedQuery>Hierarchy</namedQuery>
                <template>hierarchy.vm</template>
            </value>
        </entry>
...
    </reports>