NIHVIVO-2804 individuals deleted in error during kb migration

This commit is contained in:
stellamit 2011-07-07 15:40:55 +00:00
parent 8ad216644b
commit 45ff2441c6
4 changed files with 10 additions and 56 deletions

View file

@ -344,46 +344,21 @@ public class ABoxUpdater {
Model retractions = ModelFactory.createDefaultModel(); Model retractions = ModelFactory.createDefaultModel();
// Remove statements where the deleted class is the subject (e.g. statements with vitro annotation properties as the predicate)
aboxModel.enterCriticalSection(Lock.WRITE);
try {
int count = 0;
StmtIterator iter = aboxModel.listStatements(deletedClass, (Property) null, (RDFNode) null);
while (iter.hasNext()) {
Statement oldStatement = iter.next();
count++;
retractions.add(oldStatement);
//logChange(oldStatement, false);
}
if (count > 0) {
logger.log("Removed " + count + " subject reference" + ((count > 1) ? "s" : "") + " to the " + deletedClass.getURI() + " class");
}
} finally {
aboxModel.leaveCriticalSection();
}
// Remove instances of the deleted class // Remove instances of the deleted class
aboxModel.enterCriticalSection(Lock.WRITE); aboxModel.enterCriticalSection(Lock.WRITE);
try { try {
int count = 0; int count = 0;
StmtIterator iter = aboxModel.listStatements((Resource) null, RDF.type, deletedClass); StmtIterator iter = aboxModel.listStatements((Resource) null, RDF.type, deletedClass);
while (iter.hasNext()) { while (iter.hasNext()) {
count++; count++;
Statement typeStmt = iter.next(); Statement typeStmt = iter.next();
retractions.add(typeStmt); retractions.add(typeStmt);
}
StmtIterator iter2 = aboxModel.listStatements(typeStmt.getSubject(), (Property) null, (RDFNode) null);
while (iter2.hasNext()) {
retractions.add(iter2.next());
}
}
//log summary of changes //log summary of changes
if (count > 0) { if (count > 0) {
logger.log("Removed " + count + " instance" + ((count > 1) ? "s" : "") + " of the " + deletedClass.getURI() + " class"); logger.log("Removed " + count + " " + deletedClass.getURI() + " type assertion" + ((count > 1) ? "s" : ""));
} }
aboxModel.remove(retractions); aboxModel.remove(retractions);
@ -392,30 +367,6 @@ public class ABoxUpdater {
} finally { } finally {
aboxModel.leaveCriticalSection(); aboxModel.leaveCriticalSection();
} }
// Remove other object references to the deleted class - what would these be? nothing, I think.
aboxModel.enterCriticalSection(Lock.WRITE);
try {
int count = 0;
StmtIterator iter = aboxModel.listStatements((Resource) null, (Property) null, deletedClass);
while (iter.hasNext()) {
count++;
Statement oldStatement = iter.next();
retractions.add(oldStatement);
//logChange(oldStatement, false);
}
//log summary of changes
if (count > 0) {
logger.log("Removed " + count + " object reference" + ((count > 1) ? "s" : "") + " to the " + deletedClass.getURI() + " class");
}
aboxModel.remove(retractions);
record.recordRetractions(retractions);
} finally {
aboxModel.leaveCriticalSection();
}
} }
public void processPropertyChanges(List<AtomicOntologyChange> changes) throws IOException { public void processPropertyChanges(List<AtomicOntologyChange> changes) throws IOException {

View file

@ -91,7 +91,7 @@ public class KnowledgeBaseUpdater {
log.info("\tperforming SPARQL construct additions (abox)"); log.info("\tperforming SPARQL construct additions (abox)");
performSparqlConstructAdditions(settings.getSparqlConstructAdditionsDir(), settings.getAssertionOntModelSelector().getABoxModel()); performSparqlConstructAdditions(settings.getSparqlConstructAdditionsDir(), settings.getAssertionOntModelSelector().getABoxModel());
log.info("\tperforming SPARQL construct deletions (infenences)"); log.info("\tperforming SPARQL construct deletions (inferences)");
performSparqlConstructRetractions(settings.getSparqlConstructDeletionsDir(), settings.getInferenceOntModelSelector().getABoxModel()); performSparqlConstructRetractions(settings.getSparqlConstructDeletionsDir(), settings.getInferenceOntModelSelector().getABoxModel());
List<AtomicOntologyChange> rawChanges = getAtomicOntologyChanges(); List<AtomicOntologyChange> rawChanges = getAtomicOntologyChanges();

View file

@ -933,6 +933,7 @@ public class SimpleReasoner extends StatementListener {
setMostSpecificTypes(stmt.getSubject(), inferenceRebuildModel); setMostSpecificTypes(stmt.getSubject(), inferenceRebuildModel);
} }
/*
log.info("Computing property-based ABox inferences"); log.info("Computing property-based ABox inferences");
iter = tboxModel.listStatements((Resource) null, RDFS.subPropertyOf, (RDFNode) null); iter = tboxModel.listStatements((Resource) null, RDFS.subPropertyOf, (RDFNode) null);
int numStmts = 0; int numStmts = 0;
@ -974,6 +975,7 @@ public class SimpleReasoner extends StatementListener {
log.info("Still computing property-based ABox inferences..."); log.info("Still computing property-based ABox inferences...");
} }
} }
*/
} catch (Exception e) { } catch (Exception e) {
log.error("Exception while recomputing ABox inference model", e); log.error("Exception while recomputing ABox inference model", e);
inferenceRebuildModel.removeAll(); // don't do this in the finally, it's needed in the case inferenceRebuildModel.removeAll(); // don't do this in the finally, it's needed in the case
@ -985,6 +987,7 @@ public class SimpleReasoner extends StatementListener {
inferenceRebuildModel.leaveCriticalSection(); inferenceRebuildModel.leaveCriticalSection();
} }
// reflect the recomputed inferences into the application inference // reflect the recomputed inferences into the application inference
// model. // model.
inferenceRebuildModel.enterCriticalSection(Lock.WRITE); inferenceRebuildModel.enterCriticalSection(Lock.WRITE);

View file

@ -245,7 +245,7 @@ public class UpdateKnowledgeBase implements ServletContextListener {
private static String timestampedFileName(String prefix, String suffix) { private static String timestampedFileName(String prefix, String suffix) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-sss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-sss");
return prefix + "." + sdf.format(new Date()) + suffix; return prefix + "." + sdf.format(new Date()) + "." + suffix;
} }
private class ModelDirectoryNotFoundException extends RuntimeException { private class ModelDirectoryNotFoundException extends RuntimeException {