diff --git a/webapp/src/main/webapp/config/listViewConfig-default.xml b/webapp/src/main/webapp/config/listViewConfig-default.xml
index 8404ca7e..3aaa19f1 100644
--- a/webapp/src/main/webapp/config/listViewConfig-default.xml
+++ b/webapp/src/main/webapp/config/listViewConfig-default.xml
@@ -20,12 +20,11 @@
?label
?localName
?type
- ?objectType
+ ?specificObjectType
?title
WHERE
{
?subject ?property ?object .
- ?object a ?objectType .
LET (?localName := afn:localname(?object))
OPTIONAL
@@ -33,6 +32,11 @@
?object rdfs:label ?label .
}
+ OPTIONAL
+ {
+ ?object vitro:mostSpecificType ?specificObjectType .
+ }
+
OPTIONAL
{
# Get mostSpecificType only for Persons
@@ -72,7 +76,6 @@
CONSTRUCT
{
?subject ?property ?object .
- ?object a ?objectType .
?object rdfs:label ?label .
?object vitro:mostSpecificType ?subclass .
?subclass rdfs:label ?type .
@@ -84,7 +87,6 @@
{
{
?subject ?property ?object .
- ?object a ?objectType .
}
UNION
{
@@ -92,6 +94,11 @@
?object rdfs:label ?label .
}
UNION
+ {
+ ?subject ?property ?object .
+ ?object vitro:mostSpecificType ?subclass .
+ }
+ UNION
{
?subject ?property ?object .
?object vitro:mostSpecificType ?subclass .
diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl
index 7891a72e..ec1540b1 100644
--- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl
+++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl
@@ -6,14 +6,15 @@
is also used to generate the property statement during a deletion.
-->
<#import "lib-datetime.ftl" as dt>
+<#import "lib-meta-tags.ftl" as lmt>
<#if property.rangeDatatypeURI?? && property.rangeDatatypeURI?contains("#")>
<#assign datatype = property.rangeDatatypeURI?substring(property.rangeDatatypeURI?last_index_of("#")+1) />
<#else>
<#assign datatype = "none" />
#if>
-<@showStatement statement datatype />
+<@showStatement statement property datatype />
-<#macro showStatement statement datatype>
+<#macro showStatement statement property datatype>
<#assign theValue = statement.value />
<#if theValue?contains("
") >
@@ -43,7 +44,8 @@
<#else>
${theValue} <#if !datatype?contains("none")> <@validateFormat theValue datatype/> #if>
#if>
-#macro>
+ <@lmt.addCitationMetaTag uri=(property.uri!) content=(theValue!) />
+#macro>
<#macro validateFormat value datatype >
<#if datatype?? >
<#switch datatype>
diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dateTimeValue.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dateTimeValue.ftl
index dd3ea835..d56cca3c 100644
--- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dateTimeValue.ftl
+++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dateTimeValue.ftl
@@ -7,10 +7,12 @@
-->
<#import "lib-datetime.ftl" as dt>
+<#import "lib-meta-tags.ftl" as lmt>
<#-- No core:dateTime data property assigned. Display a link to the core:DateTimeValue object -->
<#if ! statement.dateTime??>
${i18n().incomplete_date_time_value}
<#else>
${dt.formatXsdDateTimeLong(statement.dateTime, statement.precision!)}
+ <@lmt.addCitationMetaTag uri="http://vivoweb.org/ontology/core#dateTimeValue" content=dt.formatXsdDateTimeLong(statement.dateTime, statement.precision!) />
#if>
\ No newline at end of file
diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-default.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-default.ftl
index a51d1a68..4488a96c 100644
--- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-default.ftl
+++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-default.ftl
@@ -6,6 +6,8 @@
is also used to generate the property statement during a deletion.
-->
+<#import "lib-meta-tags.ftl" as lmt>
+
<@showStatement statement />
<#macro showStatement statement>
@@ -15,4 +17,5 @@
<#else>
${statement.label!statement.localName!} ${statement.title!statement.type!}
#if>
+ <@lmt.addCitationMetaTag uri=(statement.specificObjectType) content=(statement.label!) />
#macro>
\ No newline at end of file
diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-doi.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-doi.ftl
index 8c69ff2d..557a4c1f 100644
--- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-doi.ftl
+++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-doi.ftl
@@ -5,10 +5,13 @@
This template must be self-contained and not rely on other variables set for the individual page, because it
is also used to generate the property statement during a deletion.
-->
-<@showStatement statement />
+<#import "lib-meta-tags.ftl" as lmt>
-<#macro showStatement statement>
+<@showStatement statement property />
+
+<#macro showStatement statement property>
${statement.value!}
+ <@lmt.addCitationMetaTag uri=(property.uri!) content=(statement.value!) />
#macro>
diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-informationResourceInAuthorship.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-informationResourceInAuthorship.ftl
index a24a0262..6de9d7ca 100644
--- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-informationResourceInAuthorship.ftl
+++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-informationResourceInAuthorship.ftl
@@ -7,6 +7,8 @@
-->
<#import "lib-sequence.ftl" as s>
+<#import "lib-meta-tags.ftl" as lmt>
+
<@showAuthorship statement />
<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the
@@ -22,6 +24,7 @@
<#else>
${statement.authorName}
#if>
+ <@lmt.addCitationMetaTag uri="http://vivoweb.org/ontology/core#Authorship" content=statement.authorName />
<#else>
<#-- This shouldn't happen, but we must provide for it -->
${i18n().missing_author}