diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java index 762e39ae0..ea243fad2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java @@ -70,6 +70,11 @@ public class DataProperty extends Property implements Comparable, public String getDomainClassURI() { return domainClassURI; } + + @Override + public String getDomainVClassURI() { + return domainClassURI; + } public void setDomainClassURI(String domainClassURI) { this.domainClassURI = domainClassURI; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/DatapropEditController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/DatapropEditController.java index b1e622498..bec10ecd8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/DatapropEditController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/DatapropEditController.java @@ -28,6 +28,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao; import edu.cornell.mannlib.vitro.webapp.dao.PropertyGroupDao; +import edu.cornell.mannlib.vitro.webapp.dao.VClassDao; public class DatapropEditController extends BaseEditController { @@ -45,7 +46,13 @@ public class DatapropEditController extends BaseEditController { String datapropURI = request.getParameter("uri"); DataPropertyDao dpDao = vreq.getUnfilteredWebappDaoFactory().getDataPropertyDao(); + DataPropertyDao dpDaoLangNeut = vreq.getLanguageNeutralWebappDaoFactory().getDataPropertyDao(); + VClassDao vcDao = vreq.getLanguageNeutralWebappDaoFactory().getVClassDao(); + VClassDao vcDaoWLang = vreq.getUnfilteredWebappDaoFactory().getVClassDao(); + DataProperty dp = dpDao.getDataPropertyByURI(datapropURI); + DataProperty pLangNeut = dpDaoLangNeut.getDataPropertyByURI(request.getParameter("uri")); + PropertyGroupDao pgDao = vreq.getUnfilteredWebappDaoFactory().getPropertyGroupDao(); ArrayList results = new ArrayList(); @@ -98,14 +105,21 @@ public class DatapropEditController extends BaseEditController { //String parentPropertyStr = "(datatype properties are not yet modeled in a property hierarchy)"; // TODO - need multiple inheritance //results.add(parentPropertyStr); - // TODO - need unionOf/intersectionOf-style domains for domain class - String domainStr=""; - try { - VClass domainClass = getWebappDaoFactory().getVClassDao().getVClassByURI(dp.getDomainClassURI()); - String domainLinkAnchor = (domainClass != null) ? domainClass.getPickListName() : dp.getDomainClassURI(); - domainStr = (dp.getDomainClassURI() == null) ? "" : ""+domainLinkAnchor+""; - } catch (UnsupportedEncodingException e) { - log.error(e, e); + String domainStr = ""; + if (pLangNeut.getDomainVClassURI() != null) { + VClass domainClass = vcDao.getVClassByURI(pLangNeut.getDomainVClassURI()); + VClass domainWLang = vcDaoWLang.getVClassByURI(pLangNeut.getDomainVClassURI()); + if (domainClass != null && domainClass.getURI() != null && domainClass.getPickListName() != null) { + try { + if (domainClass.isAnonymous()) { + domainStr = domainClass.getPickListName(); + } else { + domainStr = ""+domainWLang.getPickListName()+""; + } + } catch (UnsupportedEncodingException e) { + log.error(e, e); + } + } } results.add(domainStr); // column 6 diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ListDatatypePropertiesController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ListDatatypePropertiesController.java index 6272cd553..bd0243fd3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ListDatatypePropertiesController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ListDatatypePropertiesController.java @@ -20,6 +20,7 @@ import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.beans.DataProperty; import edu.cornell.mannlib.vitro.webapp.beans.Datatype; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; @@ -57,7 +58,9 @@ public class ListDatatypePropertiesController extends FreemarkerHttpServlet { String ontologyUri = vreq.getParameter("ontologyUri"); DataPropertyDao dao = vreq.getUnfilteredWebappDaoFactory().getDataPropertyDao(); + DataPropertyDao dpDaoLangNeut = vreq.getLanguageNeutralWebappDaoFactory().getDataPropertyDao(); VClassDao vcDao = vreq.getUnfilteredWebappDaoFactory().getVClassDao(); + VClassDao vcDaoLangNeut = vreq.getLanguageNeutralWebappDaoFactory().getVClassDao(); DatatypeDao dDao = vreq.getUnfilteredWebappDaoFactory().getDatatypeDao(); PropertyGroupDao pgDao = vreq.getUnfilteredWebappDaoFactory().getPropertyGroupDao(); @@ -132,8 +135,11 @@ public class ListDatatypePropertiesController extends FreemarkerHttpServlet { } } */ - VClass vc = (prop.getDomainClassURI() != null) ? vcDao.getVClassByURI(prop.getDomainClassURI()) : null; - String domainStr = (vc != null) ? vc.getPickListName() : ""; + DataProperty dpLangNeut = dpDaoLangNeut.getDataPropertyByURI(prop.getURI()); + if(dpLangNeut == null) { + dpLangNeut = prop; + } + String domainStr = getVClassNameFromURI(dpLangNeut.getDomainVClassURI(), vcDao, vcDaoLangNeut); json += "\"domainVClass\": " + JSONUtils.quote(domainStr) + ", " ; Datatype rangeDatatype = dDao.getDatatypeByURI(prop.getRangeDatatypeURI()); @@ -156,4 +162,20 @@ public class ListDatatypePropertiesController extends FreemarkerHttpServlet { } return new TemplateResponseValues(TEMPLATE_NAME, body); } + + private String getVClassNameFromURI(String vclassURI, VClassDao vcDao, VClassDao vcDaoLangNeut) { + if(vclassURI == null) { + return ""; + } + VClass vclass = vcDaoLangNeut.getVClassByURI(vclassURI); + if(vclass == null) { + return ""; + } + if(vclass.isAnonymous()) { + return vclass.getPickListName(); + } else { + VClass vclassWLang = vcDao.getVClassByURI(vclassURI); + return (vclassWLang != null) ? vclassWLang.getPickListName() : vclass.getPickListName(); + } + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ShowDataPropertyHierarchyController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ShowDataPropertyHierarchyController.java index e37d461ba..1f8b58cff 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ShowDataPropertyHierarchyController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ShowDataPropertyHierarchyController.java @@ -21,6 +21,7 @@ import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.beans.DataProperty; import edu.cornell.mannlib.vitro.webapp.beans.Datatype; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; @@ -40,7 +41,9 @@ public class ShowDataPropertyHierarchyController extends FreemarkerHttpServlet { private int MAXDEPTH = 5; private DataPropertyDao dpDao = null; + private DataPropertyDao dpDaoLangNeut = null; private VClassDao vcDao = null; + private VClassDao vcDaoLangNeut = null; private PropertyGroupDao pgDao = null; private DatatypeDao dDao = null; @@ -77,7 +80,9 @@ public class ShowDataPropertyHierarchyController extends FreemarkerHttpServlet { body.put("propertyType", "data"); dpDao = vreq.getUnfilteredAssertionsWebappDaoFactory().getDataPropertyDao(); + dpDaoLangNeut = vreq.getLanguageNeutralWebappDaoFactory().getDataPropertyDao(); vcDao = vreq.getUnfilteredAssertionsWebappDaoFactory().getVClassDao(); + vcDaoLangNeut = vreq.getLanguageNeutralWebappDaoFactory().getVClassDao(); pgDao = vreq.getUnfilteredAssertionsWebappDaoFactory().getPropertyGroupDao(); dDao = vreq.getUnfilteredAssertionsWebappDaoFactory().getDatatypeDao(); @@ -217,15 +222,14 @@ public class ShowDataPropertyHierarchyController extends FreemarkerHttpServlet { tempString += "\"data\": { \"internalName\": " + JSONUtils.quote( dp.getPickListName()) + ", "; - VClass tmp = null; + DataProperty dpLangNeut = dpDaoLangNeut.getDataPropertyByURI(dp.getURI()); + if(dpLangNeut == null) { + dpLangNeut = dp; + } + String domainStr = getVClassNameFromURI(dpLangNeut.getDomainVClassURI(), vcDao, vcDaoLangNeut); + try { - tempString += "\"domainVClass\": " + JSONUtils.quote( - ((tmp = vcDao.getVClassByURI(dp.getDomainClassURI())) != null - && (tmp.getPickListName() == null)) - ? "" - : vcDao.getVClassByURI( - dp.getDomainClassURI()) - .getPickListName()) + ", " ; + tempString += "\"domainVClass\": " + JSONUtils.quote(domainStr) + ", " ; } catch (NullPointerException e) { tempString += "\"domainVClass\": \"\","; } @@ -249,4 +253,20 @@ public class ShowDataPropertyHierarchyController extends FreemarkerHttpServlet { return tempString; } + private String getVClassNameFromURI(String vclassURI, VClassDao vcDao, VClassDao vcDaoLangNeut) { + if(vclassURI == null) { + return ""; + } + VClass vclass = vcDaoLangNeut.getVClassByURI(vclassURI); + if(vclass == null) { + return ""; + } + if(vclass.isAnonymous()) { + return vclass.getPickListName(); + } else { + VClass vclassWLang = vcDao.getVClassByURI(vclassURI); + return (vclassWLang != null) ? vclassWLang.getPickListName() : vclass.getPickListName(); + } + } + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java index 71714fae7..674a3497e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java @@ -183,7 +183,7 @@ public class DataPropertyDaoJena extends PropertyDaoJena implements dp.setPickListName(getWebappDaoFactory().makePickListName(dp)); Resource dRes = op.getDomain(); if (dRes != null) { - dp.setDomainClassURI(dRes.getURI()); + dp.setDomainClassURI(dRes.isAnon()? PSEUDO_BNODE_NS + dRes.getId().toString() : dRes.getURI()); } Resource rRes = op.getRange(); if (rRes != null) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassDaoJena.java index 3c038ba13..65b466146 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassDaoJena.java @@ -192,6 +192,7 @@ public class VClassDaoJena extends JenaBaseDao implements VClassDao { return getLabelOrId(cls); } } catch (Exception e) { + log.error(e, e); return "???"; } finally { cls.getModel().leaveCriticalSection();