LDPath implements an extension of the FreeMarker template engine that allows constructing templates with LDPath statements for inserting and iterating over values.
<@namespace rdfs="http://www.w3.org/2000/01/rdf-schema#" /> <html> <head> <title><@ldpath path="rdfs:label[@en]"/></title> </head> <body> <h1><@ldpath path="rdfs:label[@en]"/></h1> <p> <@ldpath path="rdfs:comment[@en]"/> </p> <ul> <@ldpath path="fn:sort(rdf:type)"> <#if evalLDPath("rdfs:label[@en] :: xsd:string")??> <li><@ldpath path="rdfs:label[@en] :: xsd:string"/></li> </#if> </@ldpath> </ul> </body> </html>
To use this templating mechanism you would need to include the following artifact in your Maven build file:
<dependency> <groupId>org.apache.marmotta</groupId> <artifactId>ldpath-template</artifactId> <version>3.3.0</version> </dependency>
This is the basic Java code for rendering LDPath templates:
final RepositoryConnection conn = ...getConnection(); try { conn.begin(); final URI subject = conn.getValueFactory().createURI(uri); final SesameConnectionBackend backend = SesameConnectionBackend.withConnection(conn); final TemplateEngine<Value> engine = new TemplateEngine<Value>(backend); engine.setDirectoryForTemplateLoading(new File("/path/to/templates")); OutputStreamWriter writer = new OutputStreamWriter(System.out, Charset.forName("utf-8")); engine.processFileTemplate(subject, "example.ftl", writer); } finally { conn.commit(); conn.close(); }