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 Graph Modeling 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 Graph Modeling 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>