Full Details Report
Generates a list of all concepts in alphabetical order along with their metadata and relations to other concepts. 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>FullDetails</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/> SELECT ?concept ?label ?date ?updated ?changeNote ?type ?altTerm ?broaderTerm ?narrowerTerm ?relatedTerm WHERE { { ?concept a ?type. ?concept skos:prefLabel ?label. FILTER (lang(?label) = "%%%Language%%%") OPTIONAL { ?concept dcterms:date ?date. } OPTIONAL { ?concept dcterms:modified ?updated. } OPTIONAL { ?concept skos:altLabel ?altTerm. FILTER (lang(?altTerm) = "%%%Language%%%") } OPTIONAL { ?concept skos:hiddenLabel ?altTerm. FILTER (lang(?altTerm) = "%%%Language%%%") } OPTIONAL { ?concept skos:changeNote ?changeNote. } } UNION { ?concept skos:prefLabel ?label. FILTER (lang(?label) = "%%%Language%%%") ?concept skos:broader ?b. ?b skos:prefLabel ?broaderTerm. FILTER (lang(?broaderTerm) = "%%%Language%%%") } UNION { ?concept skos:prefLabel ?label. FILTER (lang(?label) = "%%%Language%%%") ?concept skos:narrower ?n. ?n skos:prefLabel ?narrowerTerm. FILTER (lang(?narrowerTerm) = "%%%Language%%%") } UNION { ?concept skos:prefLabel ?label. FILTER (lang(?label) = "%%%Language%%%") ?concept skos:related ?r. ?r skos:prefLabel ?relatedTerm. FILTER (lang(?relatedTerm) = "%%%Language%%%") } } ORDER BY ?label ?concept ?relatedTerm ?narrowerTerm ?broaderTerm ?altTerm </sparqlQueryTemplate> </value> </entry> ... </namedQueries>
The velocity template for the report looks like the following:
FULL CONCEPT DETAILS REPORT --------------------------- #set($total = 0) ## Iterate through the results #foreach($r in $result) #if (!$r.get("concept").equals($currConcept)) ####### Term ####### #set($total = $total + 1) $r.get("label").getLabel() Term ID $r.get("concept") #set($currConcept = $r.get("concept")) #set($changeNote = false) #set($status = false) #set($date = false) #set($updated = false) #set($altTerms = false) #set($altTerm = '') #set($broaderTerms = false) #set($broaderTerm = '') #set($narrowerTerms = false) #set($narrowerTerm = '') #set($relatedTerms = false) #set($relatedTerm = '') #end ####### Change Note ####### #if (!$changeNote && $r.get("changeNote")) Change Note $r.get("changeNote").getLabel() #set($changeNote = true) #end ####### Input Date ####### #if (!$date && $r.get("date")) Input Date $r.get("date").calendarValue().getDay()/$r.get("date").calendarValue().getMonth()/$r.get("date").calendarValue().getYear() #set($date = true) #end ####### Last Updated ####### #if (!$updated && $r.get("updated")) Last Updated $r.get("updated").calendarValue().getDay()/$r.get("updated").calendarValue().getMonth()/$r.get("updated").calendarValue().getYear() #set($updated = true) #end ####### Status ####### #if (!$status && $r.get("type")) Status #if ($r.get("type").stringValue().equals("http://www.w3.org/2004/02/skos/core#Concept")) Approved #else Free #end #set($status = true) #end ####### Alternative Terms ####### #if (!$altTerms && $r.get("altTerm")) Alternative Term #set($altTerms = true) #end #if($r.get("altTerm") && !$altTerm.equals($r.get("altTerm").getLabel())) $r.get("altTerm").getLabel() #set($altTerm = $r.get("altTerm").getLabel()) #end ####### Broader Term ####### #if (!$broaderTerms && $r.get("broaderTerm")) Broader Term #set($broaderTerms = true) #end #if($r.get("broaderTerm") && !$broaderTerm.equals($r.get("broaderTerm").getLabel())) $r.get("broaderTerm").getLabel() #set($broaderTerm = $r.get("broaderTerm").getLabel()) #end ####### Narrower Term ####### #if (!$narrowerTerms && $r.get("narrowerTerm")) Narrower Term #set($narrowerTerms = true) #end #if($r.get("narrowerTerm") && !$narrowerTerm.equals($r.get("narrowerTerm").getLabel())) $r.get("narrowerTerm").getLabel() #set($narrowerTerm = $r.get("narrowerTerm").getLabel()) #end ####### Related Term ####### #if (!$relatedTerms && $r.get("relatedTerm")) Related Term #set($relatedTerms = true) #end #if($r.get("relatedTerm") && !$relatedTerm.equals($r.get("relatedTerm").getLabel())) $r.get("relatedTerm").getLabel() #set($relatedTerm = $r.get("relatedTerm").getLabel()) #end #end --------------------------------------- $total concepts
The report entry in the PoolParty configuration (SesameSetup.xml
) for the report looks like the following:
<reports> ... <entry> <key>Full Details Report</key> <value> <contentType>text/plain</contentType> <namedQuery>FullDetails</namedQuery> <template>fulldetails.vm</template> </value> </entry> ... </reports>