diff --git a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ef356c2039ca053544d4b17dcca475ed25f5540
--- /dev/null
+++ b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java
@@ -0,0 +1,59 @@
+package info.mathhub.uloapi.html;
+
+import org.eclipse.rdf4j.model.IRI;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Wrapper around {@link IRI} that provides additional
+ * methods for use in Freemarker templates.
+ */
+public class PrintableIRI implements IRI {
+    private final IRI original;
+
+    public PrintableIRI(IRI original) {
+        this.original = original;
+    }
+
+    /**
+     * Convert a list of {@link IRI} to {@link PrintableIRI}.
+     */
+    public static List<PrintableIRI> convert(List<IRI> originals) {
+        return originals.stream().map(PrintableIRI::new).collect(Collectors.toList());
+    }
+
+    @Override
+    public String toString() {
+        return this.original.toString();
+    }
+
+    @Override
+    public String getNamespace() {
+        return this.original.getNamespace();
+    }
+
+    @Override
+    public String getLocalName() {
+        return this.original.getLocalName();
+    }
+
+    @Override
+    public String stringValue() {
+        return this.original.stringValue();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return this.original.equals(o);
+    }
+
+    @Override
+    public int hashCode() {
+        return this.original.hashCode();
+    }
+
+    public String toBase64() {
+        return Base64.encode(this.toString());
+    }
+}
diff --git a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java
index a4fa55fe53094b4aed9ccee33eee75e5cb0eb4ae..9f1d9a6f56036776e9714d089f6b0f84d4c667a1 100644
--- a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java
+++ b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java
@@ -67,7 +67,7 @@ public class Routes {
         final Query query = Query.getSingleton();
 
         final String contributor = request.params("contributor");
-        final List<IRI> contributions = query.getContributions(contributor);
+        final List<PrintableIRI> contributions = PrintableIRI.convert(query.getContributions(contributor));
 
         final Map<String, Object> model = new HashMap<>();
         model.put("contributor", contributor);
@@ -82,7 +82,7 @@ public class Routes {
         final String base64uri = request.params("base64uri");
         final String uri = Base64.decode(base64uri);
 
-        final List<IRI> uses = query.getUses(uri);
+        final List<PrintableIRI> uses = PrintableIRI.convert(query.getUses(uri));
 
         final Map<String, Object> model = new HashMap<>();
         model.put("uri", uri);
diff --git a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt
index 8bb396b12a3507f8a9b4754e5994a559ffa377aa..1c0c2d7d3593c2c09b29e701c24066fbca5d0b7a 100644
--- a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt
+++ b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt
@@ -16,7 +16,9 @@
     <ul>
         <#list contributions as contribution>
             <li>
-                <code>${contribution}</code>
+                <a href="/explore/node/${contribution.toBase64()?url}">
+                    <code>${contribution}</code>
+                </a>
             </li>
         </#list>
     </ul>
diff --git a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt
index 61beef28689ea2d95e72a8c34cc19a497c051e48..7d2caae0d490b73c03c7f430bfed2e361b1060b3 100644
--- a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt
+++ b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt
@@ -24,7 +24,9 @@
     <ul>
         <#list uses as use>
             <li>
-                <code>${use}</code>
+                <a href="/explore/node/${use.toBase64()?url}">
+                    <code>${use}</code>
+                </a>
             </li>
         </#list>
     </ul>