Skip to content

Freemarker dataGetter directive

Georgy Litvinov requested to merge github/fork/litvinovg/dataGetterDirective into main

Mentioned in VIVO GitHub issue

What does this pull request do?

Adds new Freemarker directive to execute DataGetters with provided parameters and save results as Freemarker variables.

What's new?

  • Added new directive to FreemarkerConfiguration
  • Fixed substitutions in SparqlQueryDataGetter
  • New data properties to specify types of substituted variables
  • Added more tests for SparqlQueryDataGetter
  • Removed unreachable case in DataGetterBase
  • Removed SparqlQueryDataGetterTest.java from checkstyle suppressions

How should this be tested?

SparqlQueryDataGetter improvements covered by tests. New directive could be tested by calling test data getter in Freemarker template:

<@dataGetter uri = "test:dataGetter" var = "labels" parameters = {"object": "http://purl.org/ontology/bibo/AcademicArticle"} />
<#if labels?has_content><p>Label returned by data getter: ${labels[0].label}</p></#if>

Data getter configuration:

<test:dataGetter>
    a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter> ;
    display:saveToVar "result" ;
    display:uri "object";
    display:query """
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    SELECT ?label
        WHERE {
          ?object rdfs:label ?label .
        } LIMIT 1
     """ .

Interested parties

@VIVO-project/vivo-committers

Merge request reports