diff --git a/productMods/config/listViewConfig-authorInAuthorship.xml b/productMods/config/listViewConfig-authorInAuthorship.xml
index a51f1f03..042cef1a 100644
--- a/productMods/config/listViewConfig-authorInAuthorship.xml
+++ b/productMods/config/listViewConfig-authorInAuthorship.xml
@@ -9,28 +9,26 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?authorship
?infoResource ?infoResourceName
?dateTime WHERE {
- ?subject ?property ?authorship .
-
- OPTIONAL {
-
- ?authorship core:linkedInformationResource ?infoResource .
- ?infoResource rdfs:label ?infoResourceName
-
- OPTIONAL { ?subclass rdfs:subClassOf core:InformationResource .
- ?infoResource a ?subclass
- }
-
- OPTIONAL { ?infoResource core:dateTimeValue ?dateTimeValue .
- ?dateTimeValue core:dateTime ?dateTime
- }
-
+ ?subject ?property ?authorship
+ OPTIONAL { ?authorship core:linkedInformationResource ?infoResource .
+ ?infoResource rdfs:label ?infoResourceName
+
+ OPTIONAL { ?subclass rdfs:subClassOf core:InformationResource .
+ ?infoResource a ?subclass
+ }
+
+ OPTIONAL { ?infoResource core:dateTimeValue ?dateTimeValue .
+ ?dateTimeValue core:dateTime ?dateTime
+ }
}
-
- } ORDER BY ?subclass ?infoResourceName
+
+ FILTER ( bound(?infoResource) )
+
+ } ORDER BY ?subclass ?infoResourceName
diff --git a/productMods/config/listViewConfig-educationalTraining.xml b/productMods/config/listViewConfig-educationalTraining.xml
index f43f80f0..133db8aa 100644
--- a/productMods/config/listViewConfig-educationalTraining.xml
+++ b/productMods/config/listViewConfig-educationalTraining.xml
@@ -10,7 +10,7 @@
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?edTraining
?org ?orgName
?degreeName ?degreeAbbr
@@ -20,11 +20,11 @@
?subject ?property ?edTraining
OPTIONAL { ?edTraining core:trainingAtOrganization ?org .
?org rdfs:label ?orgName
-
+
OPTIONAL { ?subclass rdfs:subClassOf foaf:Organization .
?org a ?subclass
}
-
+
}
OPTIONAL { ?edTraining core:degreeEarned ?degree
OPTIONAL { ?degree rdfs:label ?degreeName }
@@ -40,7 +40,7 @@
OPTIONAL { ?dateTimeInterval core:end ?dateTimeEndValue .
?dateTimeEndValue core:dateTime ?dateTimeEnd
}
- }
+ }
} ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart)
diff --git a/productMods/config/listViewConfig-hasRole.xml b/productMods/config/listViewConfig-hasRole.xml
index 0ac5d78c..64657a5b 100644
--- a/productMods/config/listViewConfig-hasRole.xml
+++ b/productMods/config/listViewConfig-hasRole.xml
@@ -9,7 +9,7 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?role
?roleLabel
?activity ?activityName
@@ -18,11 +18,11 @@
OPTIONAL { ?role core:roleIn ?activity .
?activity rdfs:label ?activityName
}
-
+
OPTIONAL { ?role a ?subclass .
?subclass rdfs:subClassOf core:Role
}
-
+
OPTIONAL { ?role rdfs:label ?roleLabel }
OPTIONAL { ?role core:dateTimeInterval ?dateTimeInterval
OPTIONAL { ?dateTimeInterval core:start ?dateTimeStartValue .
@@ -31,8 +31,11 @@
OPTIONAL { ?dateTimeInterval core:end ?dateTimeEndValue .
?dateTimeEndValue core:dateTime ?dateTimeEnd
}
- }
- } ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart) ?activityName
+ }
+
+ FILTER ( bound(?activity) )
+
+ } ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart) ?activityName
diff --git a/productMods/config/listViewConfig-informationResourceInAuthorship.xml b/productMods/config/listViewConfig-informationResourceInAuthorship.xml
index 93069d9f..4404c409 100644
--- a/productMods/config/listViewConfig-informationResourceInAuthorship.xml
+++ b/productMods/config/listViewConfig-informationResourceInAuthorship.xml
@@ -10,20 +10,23 @@
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?authorship
?person ?personName WHERE {
?subject ?property ?authorship
OPTIONAL { ?authorship core:authorRank ?rank }
OPTIONAL { ?authorship core:linkedAuthor ?person .
?person rdfs:label ?personName
-
+
OPTIONAL { ?person a ?subclass .
?subclass rdfs:subClassOf foaf:Person
}
-
+
}
- } ORDER BY ?subclass ?rank ?personName
+
+ FILTER ( bound(?person) )
+
+ } ORDER BY ?subclass ?rank ?personName
diff --git a/productMods/config/listViewConfig-organizationForPosition.xml b/productMods/config/listViewConfig-organizationForPosition.xml
index 2e39f5ef..769835c8 100644
--- a/productMods/config/listViewConfig-organizationForPosition.xml
+++ b/productMods/config/listViewConfig-organizationForPosition.xml
@@ -9,7 +9,7 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?position
?positionTitle
?person ?personName
@@ -18,11 +18,11 @@
OPTIONAL { ?position core:positionForPerson ?person .
?person rdfs:label ?personName
}
-
+
OPTIONAL { ?position a ?subclass .
?subclass rdfs:subClassOf core:Position
}
-
+
OPTIONAL { ?position rdfs:label ?positionTitle }
OPTIONAL { ?position core:dateTimeInterval ?dateTimeInterval
OPTIONAL { ?dateTimeInterval core:start ?dateTimeStartValue .
@@ -31,10 +31,13 @@
OPTIONAL { ?dateTimeInterval core:end ?dateTimeEndValue .
?dateTimeEndValue core:dateTime ?dateTimeEnd
}
- # Current positions only: end date is either null or not in the past
+ # Get current positions only: end date is either null or not in the past
} FILTER ( !bound(?dateTimeEnd) ||
afn:substring(str(?dateTimeEnd), 0, 4) >= afn:substring(str(afn:now()), 0, 4) )
- } ORDER BY ?subclass ?personName
+
+ FILTER ( bound(?person) )
+
+ } ORDER BY ?subclass ?personName
diff --git a/productMods/config/listViewConfig-personInPosition.xml b/productMods/config/listViewConfig-personInPosition.xml
index 3a46b378..862ef3bb 100644
--- a/productMods/config/listViewConfig-personInPosition.xml
+++ b/productMods/config/listViewConfig-personInPosition.xml
@@ -9,7 +9,7 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?position
?positionTitle
?hrJobTitle
@@ -29,12 +29,15 @@
?dateTimeEndValue core:dateTime ?dateTimeEnd
}
}
-
+
OPTIONAL { ?position a ?subclass .
?subclass rdfs:subClassOf core:Position
}
-
- } ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart) ?orgName
+
+
+ FILTER ( bound(?org) )
+
+ } ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart) ?orgName
diff --git a/productMods/config/listViewConfig-relatedRole.xml b/productMods/config/listViewConfig-relatedRole.xml
index d9b119d9..afe691c4 100644
--- a/productMods/config/listViewConfig-relatedRole.xml
+++ b/productMods/config/listViewConfig-relatedRole.xml
@@ -9,7 +9,7 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
- SELECT DISTINCT ?subclass
+ SELECT DISTINCT ?subclass
?role
?roleLabel ?roleTypeLabel
?indivInRole (afn:localname(?indivInRole) AS ?indivName)
@@ -39,8 +39,10 @@
?dateTimeEndValue core:dateTime ?dateTimeEnd
}
}
-
- } ORDER BY ?subclass?indivName ?indivLabel ?roleLabel ?roleTypeLabel
+
+ FILTER ( bound(?indivInRole) )
+
+ } ORDER BY ?subclass ?indivLabel ?roleLabel ?roleTypeLabel ?indivName
diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-educationalTraining.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-educationalTraining.ftl
index 1e0e4670..fa519553 100644
--- a/productMods/templates/freemarker/body/partials/individual/propStatement-educationalTraining.ftl
+++ b/productMods/templates/freemarker/body/partials/individual/propStatement-educationalTraining.ftl
@@ -5,11 +5,11 @@
<#import "lib-sequence.ftl" as s>
<#import "lib-datetime.ftl" as dt>
-<@showEducationalTraining statement />
+<@showEducationalTraining statement individual />
<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the
next statement -->
-<#macro showEducationalTraining statement>
+<#macro showEducationalTraining statement individual>
<#local degree>
<#if statement.degreeName??>
@@ -25,12 +25,12 @@
<#local linkedIndividual>
<#if statement.org??>
${statement.orgName}
- <#else>
- <#-- This shouldn't happen, but we must provide for it -->
+ <#elseif individual.editable>
+ <#-- Show the link to the context node only if the user is editing the page. -->
missing organization
#if>
#local>
- <@s.join [ degree, linkedIndividual, statement.deptOrSchool!, statement.info! ] /> <@dt.yearIntervalSpan "${statement.dateTimeStart!}" "${statement.dateTimeEnd!}" false/>
+ <@s.join [ degree, linkedIndividual!, statement.deptOrSchool!, statement.info! ] /> <@dt.yearIntervalSpan "${statement.dateTimeStart!}" "${statement.dateTimeEnd!}" false/>
#macro>
\ No newline at end of file
diff --git a/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java b/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java
index d3f32844..cebb19c9 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java
@@ -2,9 +2,6 @@
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;