Skip to main content

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:&lt;http://www.w3.org/2004/02/skos/core#&gt;
PREFIX dcterms:&lt;http://purl.org/dc/terms/&gt;
 
SELECT ?concept ?label ?date ?updated ?changeNote ?type ?altTerm ?broaderTerm ?narrowerTerm ?relatedTerm
WHERE {
{
  ?concept a ?type.
  ?concept skos:prefLabel ?label. FILTER (lang(?label) = &quot;%%%Language%%%&quot;)
OPTIONAL {
  ?concept dcterms:date ?date.
}
OPTIONAL {
  ?concept dcterms:modified ?updated.
}
OPTIONAL {
  ?concept skos:altLabel ?altTerm. FILTER (lang(?altTerm) = &quot;%%%Language%%%&quot;)
}
OPTIONAL {
  ?concept skos:hiddenLabel ?altTerm. FILTER (lang(?altTerm) = &quot;%%%Language%%%&quot;)
}
OPTIONAL {
  ?concept skos:changeNote ?changeNote.
}
}
UNION {
  ?concept skos:prefLabel ?label. FILTER (lang(?label) = &quot;%%%Language%%%&quot;)
  ?concept skos:broader ?b. ?b skos:prefLabel ?broaderTerm. FILTER (lang(?broaderTerm) = &quot;%%%Language%%%&quot;)
}
UNION {
  ?concept skos:prefLabel ?label. FILTER (lang(?label) = &quot;%%%Language%%%&quot;)
  ?concept skos:narrower ?n. ?n skos:prefLabel ?narrowerTerm. FILTER (lang(?narrowerTerm) = &quot;%%%Language%%%&quot;)
}
UNION {
  ?concept skos:prefLabel ?label. FILTER (lang(?label) = &quot;%%%Language%%%&quot;)
  ?concept skos:related ?r. ?r skos:prefLabel ?relatedTerm. FILTER (lang(?relatedTerm) = &quot;%%%Language%%%&quot;)
}
}
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>