review revisions to development for NIHVIVO-1414

This commit is contained in:
sjm222 2010-11-29 18:28:36 +00:00
parent d4b8a638af
commit a9523b0e8d

View file

@ -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.Literal;
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory; 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.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.rdf.model.StmtIterator;
@ -131,27 +129,26 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
// In the code below, note that the current getABoxModel() methods on // In the code below, note that the current getABoxModel() methods on
// the OntModelSelectors return a graph with both ABox and TBox data. // 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); 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); 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); 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); 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 // The code below, which sets up the OntModelSelectors, controls whether each
// model is maintained in memory, in the DB, or both while the application // model is maintained in memory, in the DB, or both while the application
// is running. // is running.
} }
sce.getServletContext().setAttribute("kbStore", store); sce.getServletContext().setAttribute("kbStore", store);
//store.getTableFormatter().dropIndexes(); //store.getTableFormatter().dropIndexes();
@ -422,50 +419,40 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
ontModel.add(initialDataModel); ontModel.add(initialDataModel);
} }
private OntModel getTBoxAssertions(OntModel memModel, ServletContext ctx, JenaModelUtils modelUtils) { private void getTBoxModel(Model fullModel, Model submodels, Model tboxModel) {
OntModel tboxAssertions = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC); JenaModelUtils modelUtils = new JenaModelUtils();
OntModel submodels = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC); Model tempModel = ModelFactory.createUnion(fullModel, submodels);
readOntologyFilesInPathSet(SUBMODELS, ctx, submodels); Model tempTBoxModel = modelUtils.extractTBox(tempModel);
Model tempUnion = ModelFactory.createUnion(memModel, submodels); // copy intersection of tempTBoxModel and fullModel to tboxModel.
StmtIterator iter = tempTBoxModel.listStatements();
Model tempTBox = modelUtils.extractTBox(tempUnion);
/*
Model nonMem = subtractModel(tempTBox, memModel);
tboxAssertions.add(subtractModel(nonMem, tempTBox));
*/
StmtIterator iter = tempTBox.listStatements();
while (iter.hasNext()) { while (iter.hasNext()) {
Statement stmt = iter.next(); Statement stmt = iter.next();
if (memModel.contains(stmt)) { if (fullModel.contains(stmt)) {
tboxAssertions.add(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) { private void copyDifference(Model model1, Model model2, Model model3) {
Model difference = ModelFactory.createDefaultModel(); StmtIterator iter = model1.listStatements();
StmtIterator iter = model2.listStatements();
while (iter.hasNext()) { while (iter.hasNext()) {
Statement stmt = iter.next(); Statement stmt = iter.next();
if (!model1.contains(stmt)) { if (!model2.contains(stmt)) {
difference.add(stmt); model3.add(stmt);
} }
} }
return difference; return;
} }
} }