if (resource == null) return false;
Model descriptions = config.getDataSource().listPropertyValues(
controller.getAbsoluteIRI(), predicate, isInverse);
if (descriptions.isEmpty()) return false;
ResourceProperty property = new ResourceDescription(
controller, descriptions, config).getProperty(predicate, isInverse);
if (property == null) return false; // Can happen if prefix is declared in URI space of a data source rather than in web space
VelocityHelper template = new VelocityHelper(getServletContext(), response);
Context context = template.getVelocityContext();
context.put("project_name", config.getProjectName());
context.put("project_link", config.getProjectLink());
context.put("uri", resource.getURI());
context.put("server_base", config.getWebApplicationBaseURI());
context.put("title", resource.getTitle());
context.put("head_title", resource.getTitle() + " \u00BB " + property.getCompleteLabel());
context.put("property", property);
context.put("back_uri", controller.getBrowsableURL());
context.put("back_label", resource.getTitle());
context.put("rdf_link", isInverse ? controller.getInverseValuesDataURL(predicate) : controller.getValuesDataURL(predicate));
context.put("showLabels", config.showLabels());