diff --git a/webapp/config/web.xml b/webapp/config/web.xml
index 7e2863c67..e5f2f3aca 100644
--- a/webapp/config/web.xml
+++ b/webapp/config/web.xml
@@ -72,18 +72,19 @@
edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetup
+
+
+
+
+ edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase
+
+
edu.cornell.mannlib.vitro.webapp.servlet.setup.AttachSubmodels
-
-
-
- edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase
-
-
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java
index 2915b5849..fa8110560 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java
@@ -84,7 +84,7 @@ public class OntologyUpdater {
AtomicOntologyChangeLists changes =
new AtomicOntologyChangeLists(rawChanges,
- settings.getOntModelSelector().getTBoxModel(),
+ settings.getNewTBoxModel(),
settings.getOldTBoxModel());
//updateTBox(changes);
@@ -186,7 +186,7 @@ public class OntologyUpdater {
private void updateTBoxAnnotations() throws IOException {
(new TBoxUpdater(settings.getOldTBoxAnnotationsModel(),
settings.getNewTBoxAnnotationsModel(),
- settings.getOntModelSelector().getTBoxModel(), logger, record))
+ settings.getOntModelSelector().getABoxModel(), logger, record))
.updateVitroPropertyDefaultValues();
}
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/SimpleOntologyChangeRecord.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/SimpleOntologyChangeRecord.java
index f5c58c98f..4e8418047 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/SimpleOntologyChangeRecord.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/SimpleOntologyChangeRecord.java
@@ -46,12 +46,16 @@ public class SimpleOntologyChangeRecord implements OntologyChangeRecord {
public void recordAdditions(Model incrementalAdditions) {
additionsModel.add(incrementalAdditions);
- write(additionsModel, additionsFile);
+ if (additionsModel.size() > 0) {
+ write(additionsModel, additionsFile);
+ }
}
public void recordRetractions(Model incrementalRetractions) {
retractionsModel.add(incrementalRetractions);
- write(retractionsModel, retractionsFile);
+ if (retractionsModel.size() > 0) {
+ write(retractionsModel, retractionsFile);
+ }
}
private void write(Model model, File file) {
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/TBoxUpdater.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/TBoxUpdater.java
index 78b4ed7f3..ff32b825a 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/TBoxUpdater.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/TBoxUpdater.java
@@ -122,7 +122,11 @@ public class TBoxUpdater {
if (!newObject.equals(oldObject)) {
objects = siteModel.listObjectsOfProperty(subject,predicate);
-
+
+ if (!objects.hasNext()) {
+ continue;
+ }
+
RDFNode siteObject = objects.next();
if (objects.hasNext()) {
logger.logError("Warning: found " + objects.toList().size() +
@@ -163,18 +167,18 @@ public class TBoxUpdater {
}
}
- siteModel.add(additions);
- record.recordAdditions(additions);
- siteModel.remove(retractions);
- record.recordRetractions(retractions);
+ Model actualAdditions = additions.difference(retractions);
+ siteModel.add(actualAdditions);
+ record.recordAdditions(actualAdditions);
+ Model actualRetractions = retractions.difference(additions);
+ siteModel.remove(actualRetractions);
+ record.recordRetractions(actualRetractions);
// log summary of changes
- StmtIterator addedIter = additions.listStatements();
logger.log("Updated the default vitro annotation value for " +
- addedIter.toList().size() + " statments in the knowledge base.");
+ actualAdditions.size() + " statments in the knowledge base.");
- StmtIterator removedIter = retractions.listStatements();
- int numRemoved = removedIter.toList().size() - addedIter.toList().size();
+ long numRemoved = actualRetractions.size() - actualAdditions.size();
logger.log("Removed " + numRemoved +
" superfluous vitro annotation property settings from the knowledge base.");
@@ -183,15 +187,21 @@ public class TBoxUpdater {
//
Model newAnnotationSettings = newTboxModel.difference(oldTboxModel);
- siteModel.add(newAnnotationSettings);
- record.recordAdditions(newAnnotationSettings);
+ Model newAnnotationSettingsToAdd = ModelFactory.createDefaultModel();
+ StmtIterator newStmtIt = newAnnotationSettings.listStatements();
+ while (newStmtIt.hasNext()) {
+ Statement stmt = newStmtIt.next();
+ if (!siteModel.contains(stmt)) {
+ newAnnotationSettingsToAdd.add(stmt);
+ }
+ }
+ siteModel.add(newAnnotationSettingsToAdd);
+ record.recordAdditions(newAnnotationSettingsToAdd);
// log the additions
- iter = newAnnotationSettings.listStatements();
-
//summary
- logger.log("Added " + iter.toList().size() + " new annotation property settings to the knowledge base. This includes " +
- "exsiting annotation properties applied to exsiting classes where they weren't applied before, or existing " +
+ logger.log("Added " + newAnnotationSettingsToAdd.size() + " new annotation property settings to the knowledge base. This includes " +
+ "existing annotation properties applied to existing classes where they weren't applied before, or existing " +
"properties applied to new classes. No new annotation properties have been introduced.");
//details
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java
index 29d561917..76b2718d5 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java
@@ -60,6 +60,7 @@ public class UpdateKnowledgeBase implements ServletContextListener {
private final String SPARQL_CONSTRUCTS_DIR = DATA_DIR + "sparqlConstructs/";
private final String MISC_REPLACEMENTS_FILE = DATA_DIR + "miscReplacements.rdf";
private final String OLD_TBOX_MODEL_DIR = DATA_DIR + "oldVersion/";
+ private final String NEW_TBOX_MODEL_DIR = "/WEB-INF/submodels/";
private final String OLD_TBOX_ANNOTATIONS_DIR = DATA_DIR + "oldAnnotations/";
private final String NEW_TBOX_ANNOTATIONS_DIR = "/WEB-INF/ontologies/user";
@@ -91,7 +92,8 @@ public class UpdateKnowledgeBase implements ServletContextListener {
settings.setOntModelSelector(oms);
OntModel oldTBoxModel = loadModelFromDirectory(ctx.getRealPath(OLD_TBOX_MODEL_DIR));
settings.setOldTBoxModel(oldTBoxModel);
- settings.setNewTBoxModel(oms.getTBoxModel());
+ OntModel newTBoxModel = loadModelFromDirectory(ctx.getRealPath(NEW_TBOX_MODEL_DIR));
+ settings.setNewTBoxModel(newTBoxModel);
OntModel oldTBoxAnnotationsModel = loadModelFromDirectory(ctx.getRealPath(OLD_TBOX_ANNOTATIONS_DIR));
settings.setOldTBoxAnnotationsModel(oldTBoxAnnotationsModel);
OntModel newTBoxAnnotationsModel = loadModelFromDirectory(ctx.getRealPath(NEW_TBOX_ANNOTATIONS_DIR));