NIHVIVO-1752 bugix for backend object property editing

This commit is contained in:
bjl23 2011-01-16 22:16:56 +00:00
parent 6883148154
commit ffdedd21bb
2 changed files with 34 additions and 28 deletions

View file

@ -52,10 +52,10 @@ public class ObjectPropertyStatementDaoSDB extends
" ?o <" + RDFS.label.getURI() + "> ?oLabel . \n" + " ?o <" + RDFS.label.getURI() + "> ?oLabel . \n" +
" ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker \n" + " ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker \n" +
"} WHERE { GRAPH ?g { \n" + "} WHERE { GRAPH ?g { \n" +
" <" + entity.getURI() + "> ?p ?o . \n" + " <" + entity.getURI() + "> ?p ?o \n" +
" ?o a ?oType \n" + " OPTIONAL { GRAPH ?h { ?o a ?oType } } \n" +
" OPTIONAL { ?o <" + RDFS.label.getURI() + "> ?oLabel } \n" + " OPTIONAL { GRAPH ?i { ?o <" + RDFS.label.getURI() + "> ?oLabel } } \n" +
" OPTIONAL { ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker } \n" + " OPTIONAL { GRAPH ?j { ?o <" + VitroVocabulary.MONIKER + "> ?oMoniker } } \n" +
"} }"; "} }";
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
Model m = null; Model m = null;
@ -85,7 +85,6 @@ public class ObjectPropertyStatementDaoSDB extends
try { try {
while (propIt.hasNext()) { while (propIt.hasNext()) {
Statement st = (Statement) propIt.next(); Statement st = (Statement) propIt.next();
if (st.getObject().isResource() && !(NONUSER_NAMESPACES.contains(st.getPredicate().getNameSpace()))) { if (st.getObject().isResource() && !(NONUSER_NAMESPACES.contains(st.getPredicate().getNameSpace()))) {
try { try {
ObjectPropertyStatement objPropertyStmt = new ObjectPropertyStatementImpl(); ObjectPropertyStatement objPropertyStmt = new ObjectPropertyStatementImpl();

View file

@ -44,7 +44,7 @@ public class PropertyInstanceDaoJena extends JenaBaseDao implements
} }
public void deleteObjectPropertyStatement(String subjectURI, String propertyURI, String objectURI) { 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) { public void deleteObjectPropertyStatement(String subjectURI, String propertyURI, String objectURI, OntModel ontModel) {
@ -316,14 +316,18 @@ public class PropertyInstanceDaoJena extends JenaBaseDao implements
} }
public int insertProp(PropertyInstanceIface prop) { 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); ontModel.enterCriticalSection(Lock.WRITE);
try {
tboxModel.enterCriticalSection(Lock.READ);
try { try {
Resource subjRes = ontModel.getResource(prop.getSubjectEntURI()); Resource subjRes = ontModel.getResource(prop.getSubjectEntURI());
OntProperty pred = ontModel.getOntProperty(prop.getPropertyURI()); OntProperty pred = tboxModel.getOntProperty(prop.getPropertyURI());
Resource objRes = ontModel.getResource(prop.getObjectEntURI()); Resource objRes = ontModel.getResource(prop.getObjectEntURI());
if ( (subjRes != null) && (pred != null) && (objRes != null) ) { if ( (subjRes != null) && (pred != null) && (objRes != null) ) {
getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getSubjectEntURI())); getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),true,prop.getSubjectEntURI()));
@ -345,6 +349,9 @@ public class PropertyInstanceDaoJena extends JenaBaseDao implements
} }
} }
return 0; return 0;
} finally {
tboxModel.leaveCriticalSection();
}
} finally { } finally {
ontModel.leaveCriticalSection(); ontModel.leaveCriticalSection();
} }