diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoSDB.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoSDB.java index a31cb4533..a93ab8ee0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoSDB.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoSDB.java @@ -52,10 +52,10 @@ public class ObjectPropertyStatementDaoSDB extends " ?o <" + RDFS.label.getURI() + "> ?oLabel . \n" + " ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker \n" + "} WHERE { GRAPH ?g { \n" + - " <" + entity.getURI() + "> ?p ?o . \n" + - " ?o a ?oType \n" + - " OPTIONAL { ?o <" + RDFS.label.getURI() + "> ?oLabel } \n" + - " OPTIONAL { ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker } \n" + + " <" + entity.getURI() + "> ?p ?o \n" + + " OPTIONAL { GRAPH ?h { ?o a ?oType } } \n" + + " OPTIONAL { GRAPH ?i { ?o <" + RDFS.label.getURI() + "> ?oLabel } } \n" + + " OPTIONAL { GRAPH ?j { ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker } } \n" + "} }"; long startTime = System.currentTimeMillis(); Model m = null; @@ -85,7 +85,6 @@ public class ObjectPropertyStatementDaoSDB extends try { while (propIt.hasNext()) { Statement st = (Statement) propIt.next(); - if (st.getObject().isResource() && !(NONUSER_NAMESPACES.contains(st.getPredicate().getNameSpace()))) { try { ObjectPropertyStatement objPropertyStmt = new ObjectPropertyStatementImpl(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/PropertyInstanceDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/PropertyInstanceDaoJena.java index 2b52a24c4..245cf538c 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/PropertyInstanceDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/PropertyInstanceDaoJena.java @@ -44,7 +44,7 @@ public class PropertyInstanceDaoJena extends JenaBaseDao implements } public void deleteObjectPropertyStatement(String subjectURI, String propertyURI, String objectURI) { - deleteObjectPropertyStatement(subjectURI, propertyURI, objectURI, getOntModelSelector().getABoxModel()); + deleteObjectPropertyStatement(subjectURI, propertyURI, objectURI, getOntModelSelector().getFullModel()); } public void deleteObjectPropertyStatement(String subjectURI, String propertyURI, String objectURI, OntModel ontModel) { @@ -316,35 +316,42 @@ public class PropertyInstanceDaoJena extends JenaBaseDao implements } public int insertProp(PropertyInstanceIface prop) { - return insertProp(prop, getOntModelSelector().getABoxModel()); + return insertProp(prop, getOntModelSelector()); } - public int insertProp(PropertyInstanceIface prop, OntModel ontModel) { + public int insertProp(PropertyInstanceIface prop, OntModelSelector oms) { + OntModel ontModel = oms.getABoxModel(); + OntModel tboxModel = oms.getTBoxModel(); ontModel.enterCriticalSection(Lock.WRITE); try { - Resource subjRes = ontModel.getResource(prop.getSubjectEntURI()); - OntProperty pred = ontModel.getOntProperty(prop.getPropertyURI()); - Resource objRes = ontModel.getResource(prop.getObjectEntURI()); - if ( (subjRes != null) && (pred != null) && (objRes != null) ) { - getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getSubjectEntURI())); - try { - ontModel.add(subjRes,pred,objRes); - updatePropertyDateTimeValue(subjRes,MODTIME,Calendar.getInstance().getTime(),getOntModel()); - } finally { - getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,prop.getSubjectEntURI())); - } - OntProperty invPred = pred.getInverse(); - if (invPred != null) { - getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getObjectEntURI())); - try { - ontModel.add(objRes,invPred,subjRes); - updatePropertyDateTimeValue(objRes,MODTIME,Calendar.getInstance().getTime(),getOntModel()); - } finally { - getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,prop.getSubjectEntURI())); + tboxModel.enterCriticalSection(Lock.READ); + try { + Resource subjRes = ontModel.getResource(prop.getSubjectEntURI()); + OntProperty pred = tboxModel.getOntProperty(prop.getPropertyURI()); + Resource objRes = ontModel.getResource(prop.getObjectEntURI()); + if ( (subjRes != null) && (pred != null) && (objRes != null) ) { + getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getSubjectEntURI())); + try { + ontModel.add(subjRes,pred,objRes); + updatePropertyDateTimeValue(subjRes,MODTIME,Calendar.getInstance().getTime(),getOntModel()); + } finally { + getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,prop.getSubjectEntURI())); + } + OntProperty invPred = pred.getInverse(); + if (invPred != null) { + getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getObjectEntURI())); + try { + ontModel.add(objRes,invPred,subjRes); + updatePropertyDateTimeValue(objRes,MODTIME,Calendar.getInstance().getTime(),getOntModel()); + } finally { + getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,prop.getSubjectEntURI())); + } } } + return 0; + } finally { + tboxModel.leaveCriticalSection(); } - return 0; } finally { ontModel.leaveCriticalSection(); }