intiial development for NIHVIVO-1414
This commit is contained in:
parent
bdfe0d018d
commit
d419af9bc8
2 changed files with 68 additions and 11 deletions
|
@ -46,6 +46,7 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
|
||||||
protected static String SYSTEMPATH = BASE+"system/";
|
protected static String SYSTEMPATH = BASE+"system/";
|
||||||
protected static String AUTHPATH = BASE+"auth/";
|
protected static String AUTHPATH = BASE+"auth/";
|
||||||
protected static String APPPATH = BASE+"app/";
|
protected static String APPPATH = BASE+"app/";
|
||||||
|
protected static String SUBMODELS = "/WEB-INF/submodels/";
|
||||||
|
|
||||||
String DB_USER = "jenatest"; // database user id
|
String DB_USER = "jenatest"; // database user id
|
||||||
String DB_PASSWD = "jenatest"; // database password
|
String DB_PASSWD = "jenatest"; // database password
|
||||||
|
|
|
@ -20,7 +20,11 @@ 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.StmtIterator;
|
||||||
import com.hp.hpl.jena.sdb.SDBFactory;
|
import com.hp.hpl.jena.sdb.SDBFactory;
|
||||||
import com.hp.hpl.jena.sdb.Store;
|
import com.hp.hpl.jena.sdb.Store;
|
||||||
import com.hp.hpl.jena.sdb.StoreDesc;
|
import com.hp.hpl.jena.sdb.StoreDesc;
|
||||||
|
@ -58,11 +62,13 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
|
||||||
// TODO: I would like to make this code (before the sdb try/catch conditional so
|
// TODO: I would like to make this code (before the sdb try/catch conditional so
|
||||||
// that it is not executed in a post-sdb-conversion environment.
|
// that it is not executed in a post-sdb-conversion environment.
|
||||||
OntModel memModel = (OntModel) sce.getServletContext().getAttribute("jenaOntModel");
|
OntModel memModel = (OntModel) sce.getServletContext().getAttribute("jenaOntModel");
|
||||||
|
|
||||||
if (memModel == null) {
|
if (memModel == null) {
|
||||||
memModel = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC);
|
memModel = ModelFactory.createOntologyModel(MEM_ONT_MODEL_SPEC);
|
||||||
log.warn("WARNING: no database connected. Changes will disappear after context restart.");
|
log.warn("WARNING: no database connected. Changes will disappear after context restart.");
|
||||||
sce.getServletContext().setAttribute("jenaOntModel",memModel);
|
sce.getServletContext().setAttribute("jenaOntModel",memModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
memModel.addSubModel((new JenaBaseDaoCon()).getConstModel()); // add the vitro tbox to the model
|
memModel.addSubModel((new JenaBaseDaoCon()).getConstModel()); // add the vitro tbox to the model
|
||||||
|
|
||||||
OntModel inferenceModel = ontModelFromContextAttribute(sce.getServletContext(), "inferenceOntModel");
|
OntModel inferenceModel = ontModelFromContextAttribute(sce.getServletContext(), "inferenceOntModel");
|
||||||
|
@ -78,14 +84,17 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
|
||||||
baseOms.setApplicationMetadataModel(memModel);
|
baseOms.setApplicationMetadataModel(memModel);
|
||||||
baseOms.setTBoxModel(memModel);
|
baseOms.setTBoxModel(memModel);
|
||||||
baseOms.setFullModel(memModel);
|
baseOms.setFullModel(memModel);
|
||||||
|
|
||||||
OntModelSelectorImpl inferenceOms = new OntModelSelectorImpl();
|
OntModelSelectorImpl inferenceOms = new OntModelSelectorImpl();
|
||||||
inferenceOms.setABoxModel(inferenceModel);
|
inferenceOms.setABoxModel(inferenceModel);
|
||||||
inferenceOms.setTBoxModel(inferenceModel);
|
inferenceOms.setTBoxModel(inferenceModel);
|
||||||
inferenceOms.setFullModel(inferenceModel);
|
inferenceOms.setFullModel(inferenceModel);
|
||||||
|
|
||||||
OntModelSelectorImpl unionOms = new OntModelSelectorImpl();
|
OntModelSelectorImpl unionOms = new OntModelSelectorImpl();
|
||||||
unionOms.setApplicationMetadataModel(unionModel);
|
unionOms.setApplicationMetadataModel(unionModel);
|
||||||
unionOms.setTBoxModel(unionModel);
|
unionOms.setTBoxModel(unionModel);
|
||||||
unionOms.setFullModel(unionModel);
|
unionOms.setFullModel(unionModel);
|
||||||
|
|
||||||
baseOms.setUserAccountsModel(userAccountsModel);
|
baseOms.setUserAccountsModel(userAccountsModel);
|
||||||
inferenceOms.setUserAccountsModel(userAccountsModel);
|
inferenceOms.setUserAccountsModel(userAccountsModel);
|
||||||
unionOms.setUserAccountsModel(userAccountsModel);
|
unionOms.setUserAccountsModel(userAccountsModel);
|
||||||
|
@ -124,20 +133,21 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
|
||||||
|
|
||||||
JenaModelUtils modelUtils = new JenaModelUtils();
|
JenaModelUtils modelUtils = new JenaModelUtils();
|
||||||
|
|
||||||
Model aboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_DB_MODEL);
|
|
||||||
aboxAssertions.add(modelUtils.extractABox(memModel));
|
|
||||||
|
|
||||||
Model aboxInferences = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_INF_MODEL);
|
|
||||||
aboxInferences.add(modelUtils.extractABox(inferenceModel));
|
|
||||||
|
|
||||||
Model tboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_TBOX_ASSERTIONS_MODEL);
|
Model tboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_TBOX_ASSERTIONS_MODEL);
|
||||||
tboxAssertions.add(modelUtils.extractTBox(memModel));
|
tboxAssertions.add(getTBoxAssertions(memModel, sce.getServletContext(), modelUtils));
|
||||||
|
|
||||||
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));
|
tboxInferences.add(modelUtils.extractTBox(inferenceModel));
|
||||||
|
|
||||||
|
|
||||||
|
Model aboxAssertions = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_DB_MODEL);
|
||||||
|
aboxAssertions.add(subtractModel(tboxAssertions,memModel));
|
||||||
|
|
||||||
|
Model aboxInferences = SDBFactory.connectNamedModel(store, JenaDataSourceSetupBase.JENA_INF_MODEL);
|
||||||
|
aboxInferences.add(subtractModel(tboxInferences,inferenceModel));
|
||||||
|
|
||||||
// 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.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,4 +422,50 @@ public class JenaDataSourceSetupSDB extends JenaDataSourceSetupBase implements j
|
||||||
ontModel.add(initialDataModel);
|
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();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Statement stmt = iter.next();
|
||||||
|
if (memModel.contains(stmt)) {
|
||||||
|
tboxAssertions.add(stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tboxAssertions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns a model containing all the statements from model 2 that are not in model 1
|
||||||
|
*/
|
||||||
|
private Model subtractModel(Model model1, Model model2) {
|
||||||
|
|
||||||
|
Model difference = ModelFactory.createDefaultModel();
|
||||||
|
|
||||||
|
StmtIterator iter = model2.listStatements();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Statement stmt = iter.next();
|
||||||
|
if (!model1.contains(stmt)) {
|
||||||
|
difference.add(stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return difference;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue