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