From a9523b0e8d073e6453c85c6afa840ee8898ec517 Mon Sep 17 00:00:00 2001 From: sjm222 Date: Mon, 29 Nov 2010 18:28:36 +0000 Subject: [PATCH] review revisions to development for NIHVIVO-1414 --- .../servlet/setup/JenaDataSourceSetupSDB.java | 75 ++++++++----------- 1 file changed, 31 insertions(+), 44 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupSDB.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupSDB.java index f4f94e759..b09cbefa6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupSDB.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupSDB.java @@ -20,8 +20,6 @@ import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; -import com.hp.hpl.jena.rdf.model.Property; -import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.ResourceFactory; import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.StmtIterator; @@ -130,28 +128,27 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j // JenaPersistentDataSourceSetup.java // In the code below, note that the current getABoxModel() methods on // the OntModelSelectors return a graph with both ABox and TBox data. - - JenaModelUtils modelUtils = new JenaModelUtils(); - + + OntModel submodels = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC); + readOntologyFilesInPathSet(SUBMODELS, sce.getServletContext(), submodels); + Model tboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_TBOX_ASSERTIONS_MODEL); - tboxAssertions.add(getTBoxAssertions(memModel, sce.getServletContext(), modelUtils)); - + getTBoxModel(memModel, submodels, tboxAssertions); + Model tboxInferences = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_TBOX_INF_MODEL); - tboxInferences.add(modelUtils.extractTBox(inferenceModel)); - + getTBoxModel(inferenceModel, submodels, tboxInferences); Model aboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_DB_MODEL); - aboxAssertions.add(subtractModel(tboxAssertions,memModel)); + copyDifference(memModel, tboxAssertions, aboxAssertions); Model aboxInferences = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_INF_MODEL); - aboxInferences.add(subtractModel(tboxInferences,inferenceModel)); + copyDifference(inferenceModel, tboxInferences, aboxInferences); // The code below, which sets up the OntModelSelectors, controls whether each // model is maintained in memory, in the DB, or both while the application // is running. } - sce.getServletContext().setAttribute("kbStore", store); //store.getTableFormatter().dropIndexes(); @@ -421,51 +418,41 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j log.debug(((System.currentTimeMillis()-startTime)/1000)+" seconds to read ontology files "); ontModel.add(initialDataModel); } - - private OntModel getTBoxAssertions(OntModel memModel, ServletContext ctx, JenaModelUtils modelUtils) { - - OntModel tboxAssertions = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC); - - OntModel submodels = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC); - readOntologyFilesInPathSet(SUBMODELS, ctx, submodels); - - Model tempUnion = ModelFactory.createUnion(memModel, submodels); - Model tempTBox = modelUtils.extractTBox(tempUnion); - - /* - Model nonMem = subtractModel(tempTBox, memModel); - tboxAssertions.add(subtractModel(nonMem, tempTBox)); - */ - - StmtIterator iter = tempTBox.listStatements(); + private void getTBoxModel(Model fullModel, Model submodels, Model tboxModel) { + + JenaModelUtils modelUtils = new JenaModelUtils(); + + Model tempModel = ModelFactory.createUnion(fullModel, submodels); + Model tempTBoxModel = modelUtils.extractTBox(tempModel); + + // copy intersection of tempTBoxModel and fullModel to tboxModel. + StmtIterator iter = tempTBoxModel.listStatements(); while (iter.hasNext()) { Statement stmt = iter.next(); - if (memModel.contains(stmt)) { - tboxAssertions.add(stmt); + if (fullModel.contains(stmt)) { + tboxModel.add(stmt); } } - - return tboxAssertions; + + return; } /* - * returns a model containing all the statements from model 2 that are not in model 1 + * Copy all statements from model 1 that are not in model 2 to model 3. */ - private Model subtractModel(Model model1, Model model2) { - - Model difference = ModelFactory.createDefaultModel(); - - StmtIterator iter = model2.listStatements(); + private void copyDifference(Model model1, Model model2, Model model3) { + + StmtIterator iter = model1.listStatements(); while (iter.hasNext()) { Statement stmt = iter.next(); - if (!model1.contains(stmt)) { - difference.add(stmt); + if (!model2.contains(stmt)) { + model3.add(stmt); } } - return difference; - } -} + return; + } + }