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:<http://www.w3.org/2004/02/skos/core#>
PREFIX dcterms:<http://purl.org/dc/terms/>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT ?scheme ?schemeLabel ?n1 ?n2 ?n3 ?n4 ?n5
WHERE {
{
?scheme a skos:ConceptScheme.
?scheme skos:hasTopConcept ?c1.
?c1 skos:prefLabel ?n1. FILTER (lang(?n1) = "%%%Language%%%")
?scheme
dcterms:title ?schemeLabel. FILTER (lang(?schemeLabel)="%%%Language%%%")
}
OPTIONAL {
?c1 skos:narrower ?c2.
?c2 skos:prefLabel ?n2. FILTER (lang(?n2) = "%%%Language%%%")
OPTIONAL {
?c2 skos:narrower ?c3.
?c3 skos:prefLabel ?n3. FILTER (lang(?n3) = "%%%Language%%%")
OPTIONAL {
?c3 skos:narrower ?c4.
?c4 skos:prefLabel ?n4. FILTER (lang(?n4) = "%%%Language%%%")
OPTIONAL {
?c4 skos:narrower ?c5.
?c5 skos:prefLabel ?n5. FILTER (lang(?n5) = "%%%Language%%%")
}
}
}
}
} 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 ThesauriThe 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>