diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseObjectPropertyDataPostProcessor.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseObjectPropertyDataPostProcessor.java index 3ef869c00..a1ca1fdf4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseObjectPropertyDataPostProcessor.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseObjectPropertyDataPostProcessor.java @@ -50,6 +50,9 @@ public abstract class BaseObjectPropertyDataPostProcessor implements /** The SPARQL query results may contain duplicate rows for a single object, if there are multiple solutions * to the entire query. Remove duplicates here by arbitrarily selecting only the first row returned. + * Note that in the case of a collated query, the query has filtered out inferred subclasses, but if there + * are multiple asserted subclasses, all will be returned. This method will arbitrarily remove all but the + * first one returned. * @param List> data */ protected void removeDuplicates(List> data) { @@ -59,7 +62,7 @@ public abstract class BaseObjectPropertyDataPostProcessor implements return; } List foundObjects = new ArrayList(); - log.debug("Processing property: " + objectPropertyTemplateModel.getUri()); + log.debug("Removing duplicates from property: " + objectPropertyTemplateModel.getUri()); Iterator> dataIterator = data.iterator(); while (dataIterator.hasNext()) { Map map = dataIterator.next(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java index 7da7f8c7b..f4fcf7cf4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java @@ -67,6 +67,10 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM List currentList = null; for (Map map : statementData) { String subclassUri = map.get("subclass"); + // Rows with no subclass are put into a subclass map with an empty name. + if (subclassUri == null) { + subclassUri = ""; + } if (!subclassUri.equals(currentSubclassUri)) { currentSubclassUri = subclassUri; currentList = new ArrayList(); @@ -79,9 +83,15 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM } private String getSubclassName(String subclassUri, VitroRequest vreq) { - VClassDao vclassDao = vreq.getWebappDaoFactory().getVClassDao(); - VClass vclass = vclassDao.getVClassByURI(subclassUri); - return vclass.getName(); + String subclassName = null; + if (subclassUri.isEmpty()) { + subclassName = ""; + } else { + VClassDao vclassDao = vreq.getWebappDaoFactory().getVClassDao(); + VClass vclass = vclassDao.getVClassByURI(subclassUri); + subclassName = vclass.getName(); + } + return subclassName; } @Override