From 965f4c399b3c335c912c8742761d3c23b9ca4789 Mon Sep 17 00:00:00 2001 From: sjm222 Date: Sat, 13 Nov 2010 00:00:01 +0000 Subject: [PATCH] beginning infrastructure for NIHVIVO-590, migrating Date/Time representation --- .../ontology/update/DateTimeMigration.java | 63 +++++++++++++++++++ .../ontology/update/OntologyUpdater.java | 3 + 2 files changed, 66 insertions(+) create mode 100644 webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java new file mode 100644 index 000000000..c2396852d --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java @@ -0,0 +1,63 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.ontology.update; + +import com.hp.hpl.jena.ontology.OntModel; +import com.hp.hpl.jena.rdf.model.Model; +import com.hp.hpl.jena.rdf.model.ModelFactory; +import com.hp.hpl.jena.shared.Lock; + +/** +* Performs knowledge base updates to the abox to align with the new +* 1.2 Date/Time representation. +* +*/ +public class DateTimeMigration { + + private OntModel aboxModel; + private OntologyChangeLogger logger; + private OntologyChangeRecord record; + + /** + * Constructor + * + * @param aboxModel - the knowledge base to be updated + * @param logger - for writing to the change log + * and the error log. + * @param record - for writing to the additions model + * and the retractions model. + */ + public DateTimeMigration(OntModel aboxModel,OntologyChangeLogger logger, OntologyChangeRecord record) { + + this.aboxModel = aboxModel; + this.logger = logger; + this.record = record; + } + + /** + * + * Update a knowledge base to align with changes in the Date/Time class + * and property definitions in the transition from version 1.1 to 1.2. + * + */ + public void updateABox() { + + aboxModel.enterCriticalSection(Lock.WRITE); + + try { + + Model additions = ModelFactory.createDefaultModel(); + Model retractions = ModelFactory.createDefaultModel(); + + + + aboxModel.remove(retractions); + record.recordRetractions(retractions); + aboxModel.add(additions); + record.recordAdditions(additions); + + } finally { + aboxModel.leaveCriticalSection(); + } + } +} \ No newline at end of file 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 383f9e655..98eb5dbb1 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 @@ -80,6 +80,9 @@ public class OntologyUpdater { private void performUpdate() throws IOException { + DateTimeMigration dtMigration = new DateTimeMigration(settings.getOntModelSelector().getABoxModel(), logger, record); + dtMigration.updateABox(); + performSparqlConstructAdditions(settings.getSparqlConstructAdditionsDir(), settings.getOntModelSelector().getABoxModel()); performSparqlConstructRetractions(settings.getSparqlConstructDeletionsDir(), settings.getOntModelSelector().getABoxModel());