VIVO-82 Use ModelAccess to get or set the BaseOntModel

a.k.a the Base Full model, or AssertionsModel
This commit is contained in:
j2blake 2013-05-17 13:19:46 -04:00
parent 6a4c7ba6fc
commit 9b7f6c92e6
13 changed files with 37 additions and 76 deletions

View file

@ -191,11 +191,7 @@ public class VitroRequest extends HttpServletRequestWrapper {
public OntModel getAssertionsOntModel() { public OntModel getAssertionsOntModel() {
OntModel jenaOntModel = (OntModel)_req.getSession().getAttribute( JenaBaseDao.ASSERTIONS_ONT_MODEL_ATTRIBUTE_NAME ); return ModelAccess.on(getSession()).getBaseOntModel();
if ( jenaOntModel == null ) {
jenaOntModel = (OntModel)_req.getSession().getServletContext().getAttribute( JenaBaseDao.ASSERTIONS_ONT_MODEL_ATTRIBUTE_NAME );
}
return jenaOntModel;
} }
public OntModel getInferenceOntModel() { public OntModel getInferenceOntModel() {

View file

@ -7,7 +7,6 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -40,7 +39,6 @@ import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.shared.InvalidPropertyURIException; import com.hp.hpl.jena.shared.InvalidPropertyURIException;
import com.hp.hpl.jena.shared.Lock; import com.hp.hpl.jena.shared.Lock;
import com.hp.hpl.jena.util.ResourceUtils; import com.hp.hpl.jena.util.ResourceUtils;
import com.hp.hpl.jena.util.iterator.ClosableIterator;
import com.hp.hpl.jena.util.iterator.ExtendedIterator; import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDF;
@ -50,6 +48,7 @@ import edu.cornell.mannlib.vedit.controller.BaseEditController;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext;
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.FileGraphSetup; import edu.cornell.mannlib.vitro.webapp.servlet.setup.FileGraphSetup;
@ -74,7 +73,7 @@ public class RefactorOperationController extends BaseEditController {
request.setAttribute("title","Check Datatype Properties"); request.setAttribute("title","Check Datatype Properties");
request.setAttribute("css", "<link rel=\"stylesheet\" type=\"text/css\" href=\""+vreq.getAppBean().getThemeDir()+"css/edit.css\"/>"); request.setAttribute("css", "<link rel=\"stylesheet\" type=\"text/css\" href=\""+vreq.getAppBean().getThemeDir()+"css/edit.css\"/>");
OntModel ontModel = (OntModel) getServletContext().getAttribute("baseOntModel"); OntModel ontModel = ModelAccess.on(getServletContext()).getBaseOntModel();
ontModel.enterCriticalSection(Lock.WRITE); ontModel.enterCriticalSection(Lock.WRITE);
ArrayList<String> results = new ArrayList<String>(); ArrayList<String> results = new ArrayList<String>();
@ -330,7 +329,7 @@ public class RefactorOperationController extends BaseEditController {
private void doMovePropertyStatements(VitroRequest request, HttpServletResponse response, EditProcessObject epo) { private void doMovePropertyStatements(VitroRequest request, HttpServletResponse response, EditProcessObject epo) {
String userURI = LoginStatusBean.getBean(request).getUserURI(); String userURI = LoginStatusBean.getBean(request).getUserURI();
OntModel ontModel = ModelContext.getBaseOntModel(getServletContext()); OntModel ontModel = ModelAccess.on(getServletContext()).getBaseOntModel();
Model tempRetractModel = ModelFactory.createDefaultModel(); Model tempRetractModel = ModelFactory.createDefaultModel();
Model tempAddModel = ModelFactory.createDefaultModel(); Model tempAddModel = ModelFactory.createDefaultModel();
@ -414,7 +413,7 @@ public class RefactorOperationController extends BaseEditController {
private void doMoveInstances(VitroRequest request, HttpServletResponse response, EditProcessObject epo) { private void doMoveInstances(VitroRequest request, HttpServletResponse response, EditProcessObject epo) {
String userURI = LoginStatusBean.getBean(request).getUserURI(); String userURI = LoginStatusBean.getBean(request).getUserURI();
OntModel ontModel = ModelContext.getBaseOntModel(getServletContext()); OntModel ontModel = ModelAccess.on(getServletContext()).getBaseOntModel();
String oldClassURIStr = (String) epo.getAttribute("VClassURI"); String oldClassURIStr = (String) epo.getAttribute("VClassURI");
String newClassURIStr = (String) request.getParameter("NewVClassURI"); String newClassURIStr = (String) request.getParameter("NewVClassURI");

View file

@ -94,7 +94,7 @@ public class JenaAdminActions extends BaseEditController {
* @param response * @param response
*/ */
private void outputTbox(HttpServletResponse response) { private void outputTbox(HttpServletResponse response) {
OntModel memoryModel = (OntModel) getServletContext().getAttribute("baseOntModel"); OntModel memoryModel = ModelAccess.on(getServletContext()).getBaseOntModel();
try { try {
OntModel tempOntModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM); OntModel tempOntModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
Property DescriptionProp = ResourceFactory.createProperty(VitroVocabulary.DESCRIPTION_ANNOT); Property DescriptionProp = ResourceFactory.createProperty(VitroVocabulary.DESCRIPTION_ANNOT);
@ -306,7 +306,7 @@ public class JenaAdminActions extends BaseEditController {
if (actionStr.equals("output")) { if (actionStr.equals("output")) {
OntModel memoryModel = null; OntModel memoryModel = null;
if (request.getParameter("assertionsOnly") != null) { if (request.getParameter("assertionsOnly") != null) {
memoryModel = (OntModel) getServletContext().getAttribute("baseOntModel"); memoryModel = ModelAccess.on(getServletContext()).getBaseOntModel();
System.out.println("baseOntModel"); System.out.println("baseOntModel");
} else if (request.getParameter("inferences") != null) { } else if (request.getParameter("inferences") != null) {
memoryModel = (OntModel) getServletContext().getAttribute("inferenceOntModel"); memoryModel = (OntModel) getServletContext().getAttribute("inferenceOntModel");
@ -375,7 +375,7 @@ public class JenaAdminActions extends BaseEditController {
ClosableIterator ooIt = persistentModel.listObjects(); ClosableIterator ooIt = persistentModel.listObjects();
clean(oIt,persistentModel); clean(oIt,persistentModel);
} else if (actionStr.equals("outputTaxonomy")) { } else if (actionStr.equals("outputTaxonomy")) {
OntModel ontModel = (OntModel) getServletContext().getAttribute("baseOntModel"); OntModel ontModel = ModelAccess.on(getServletContext()).getBaseOntModel();
Model taxonomyModel = extractTaxonomy(ontModel); Model taxonomyModel = extractTaxonomy(ontModel);
try { try {
taxonomyModel.write(response.getOutputStream()); taxonomyModel.write(response.getOutputStream());

View file

@ -283,7 +283,6 @@ public class JenaExportController extends BaseEditController {
} }
} }
static final String ASSERTIONS_ONT_MODEL_ATTR = "baseOntModel";
static final String INFERENCES_ONT_MODEL_ATTR = "inferenceOntModel"; static final String INFERENCES_ONT_MODEL_ATTR = "inferenceOntModel";
static final String FULL_GRAPH = "?g"; static final String FULL_GRAPH = "?g";
static final String ASSERTIONS_GRAPH = "<http://vitro.mannlib.cornell.edu/default/vitro-kb-2>"; static final String ASSERTIONS_GRAPH = "<http://vitro.mannlib.cornell.edu/default/vitro-kb-2>";

View file

@ -661,8 +661,7 @@ public class JenaIngestController extends BaseEditController {
/* /*
* get baseOnt and infOnt models * get baseOnt and infOnt models
*/ */
OntModel baseOntModel = ModelContext.getBaseOntModel( OntModel baseOntModel = ModelAccess.on(getServletContext()).getBaseOntModel();
getServletContext());
OntModel tboxOntModel = ModelContext.getUnionOntModelSelector( OntModel tboxOntModel = ModelContext.getUnionOntModelSelector(
getServletContext()).getTBoxModel(); getServletContext()).getTBoxModel();
@ -1314,12 +1313,7 @@ public class JenaIngestController extends BaseEditController {
if ("vitro:jenaOntModel".equals(name)) { if ("vitro:jenaOntModel".equals(name)) {
return ModelAccess.on(request.getSession()).getJenaOntModel(); return ModelAccess.on(request.getSession()).getJenaOntModel();
} else if ("vitro:baseOntModel".equals(name)) { } else if ("vitro:baseOntModel".equals(name)) {
Object sessionOntModel = request.getSession().getAttribute("baseOntModel"); return ModelAccess.on(request.getSession()).getBaseOntModel();
if (sessionOntModel != null && sessionOntModel instanceof OntModel) {
return (OntModel) sessionOntModel;
} else {
return (OntModel) context.getAttribute("baseOntModel");
}
} else if ("vitro:inferenceOntModel".equals(name)) { } else if ("vitro:inferenceOntModel".equals(name)) {
Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel"); Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel");
if (sessionOntModel != null && sessionOntModel instanceof OntModel) { if (sessionOntModel != null && sessionOntModel instanceof OntModel) {

View file

@ -106,18 +106,14 @@ public class ModelAccess {
return getOntModel(ModelID.UNION_FULL); return getOntModel(ModelID.UNION_FULL);
} }
public void setBaseOntModel(OntModel m) {
// /** Is this the same as Assertions model? */ setOntModel(ModelID.BASE_FULL, m);
// // public OntModel getBaseOntModel() { }
// // throw new RuntimeException(
// // "ModelAccess.getBaseOntModel not implemented."); public OntModel getBaseOntModel() {
// // } return getOntModel(ModelID.BASE_FULL);
// }
// public OntModel getAssertionsOntModel() {
// throw new RuntimeException(
// "ModelAccess.getAssertionsOntModel not implemented.");
// }
//
// public OntModel getDisplayTboxOntModel() { // public OntModel getDisplayTboxOntModel() {
// throw new RuntimeException( // throw new RuntimeException(
// "ModelAccess.getDisplayTboxOntModel not implemented."); // "ModelAccess.getDisplayTboxOntModel not implemented.");
@ -233,14 +229,6 @@ public class ModelAccess {
* ctx.setAttribute(INFERENCE_ONT_MODEL_SELECTOR, oms); * ctx.setAttribute(INFERENCE_ONT_MODEL_SELECTOR, oms);
* } * }
* *
* public static OntModel getBaseOntModel(ServletContext ctx) {
* return (OntModel) ctx.getAttribute(BASE_ONT_MODEL);
* }
*
* public static void setBaseOntModel(OntModel ontModel, ServletContext ctx) {
* ctx.setAttribute(BASE_ONT_MODEL, ontModel);
* }
*
* public static OntModel getInferenceOntModel(ServletContext ctx) { * public static OntModel getInferenceOntModel(ServletContext ctx) {
* return (OntModel) ctx.getAttribute(INFERENCE_ONT_MODEL); * return (OntModel) ctx.getAttribute(INFERENCE_ONT_MODEL);
* } * }

View file

@ -54,7 +54,6 @@ public class JenaBaseDao extends JenaBaseDaoCon {
public static final boolean KEEP_ONLY_IF_TRUE = true; //used for updatePropertyBooleanValue() public static final boolean KEEP_ONLY_IF_TRUE = true; //used for updatePropertyBooleanValue()
public static final boolean KEEP_ONLY_IF_FALSE = false; //used for updatePropertyBooleanValue() public static final boolean KEEP_ONLY_IF_FALSE = false; //used for updatePropertyBooleanValue()
public static final String ASSERTIONS_ONT_MODEL_ATTRIBUTE_NAME = "baseOntModel";
public static final String INFERENCE_ONT_MODEL_ATTRIBUTE_NAME = "inferenceOntModel"; public static final String INFERENCE_ONT_MODEL_ATTRIBUTE_NAME = "inferenceOntModel";
protected static final Log log = LogFactory.getLog(JenaBaseDao.class.getName()); protected static final Log log = LogFactory.getLog(JenaBaseDao.class.getName());

View file

@ -22,7 +22,6 @@ public class ModelContext {
private static final String BASE_ONT_MODEL_SELECTOR = "baseOntModelSelector"; private static final String BASE_ONT_MODEL_SELECTOR = "baseOntModelSelector";
private static final String INFERENCE_ONT_MODEL_SELECTOR = "inferenceOntModelSelector"; private static final String INFERENCE_ONT_MODEL_SELECTOR = "inferenceOntModelSelector";
private static final String BASE_ONT_MODEL = "baseOntModel";
private static final String INFERENCE_ONT_MODEL = "inferenceOntModel"; private static final String INFERENCE_ONT_MODEL = "inferenceOntModel";
public ModelContext() {} public ModelContext() {}
@ -59,14 +58,6 @@ public class ModelContext {
ctx.setAttribute(INFERENCE_ONT_MODEL_SELECTOR, oms); ctx.setAttribute(INFERENCE_ONT_MODEL_SELECTOR, oms);
} }
public static OntModel getBaseOntModel(ServletContext ctx) {
return (OntModel) ctx.getAttribute(BASE_ONT_MODEL);
}
public static void setBaseOntModel(OntModel ontModel, ServletContext ctx) {
ctx.setAttribute(BASE_ONT_MODEL, ontModel);
}
public static OntModel getInferenceOntModel(ServletContext ctx) { public static OntModel getInferenceOntModel(ServletContext ctx) {
return (OntModel) ctx.getAttribute(INFERENCE_ONT_MODEL); return (OntModel) ctx.getAttribute(INFERENCE_ONT_MODEL);
} }

View file

@ -314,12 +314,7 @@ public class VitroJenaModelMaker implements ModelMaker {
if ("vitro:jenaOntModel".equals(modelName)) { if ("vitro:jenaOntModel".equals(modelName)) {
return ModelAccess.on(request.getSession()).getJenaOntModel(); return ModelAccess.on(request.getSession()).getJenaOntModel();
} else if ("vitro:baseOntModel".equals(modelName)) { } else if ("vitro:baseOntModel".equals(modelName)) {
Object sessionOntModel = request.getSession().getAttribute("baseOntModel"); return ModelAccess.on(request.getSession()).getBaseOntModel();
if (sessionOntModel != null && sessionOntModel instanceof OntModel) {
return (OntModel) sessionOntModel;
} else {
return (OntModel) request.getSession().getServletContext().getAttribute("baseOntModel");
}
} else if ("vitro:inferenceOntModel".equals(modelName)) { } else if ("vitro:inferenceOntModel".equals(modelName)) {
Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel"); Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel");
if (sessionOntModel != null && sessionOntModel instanceof OntModel) { if (sessionOntModel != null && sessionOntModel instanceof OntModel) {

View file

@ -119,12 +119,7 @@ public class VitroJenaSpecialModelMaker implements ModelMaker {
if ("vitro:jenaOntModel".equals(modelName)) { if ("vitro:jenaOntModel".equals(modelName)) {
return ModelAccess.on(request.getSession()).getJenaOntModel(); return ModelAccess.on(request.getSession()).getJenaOntModel();
} else if ("vitro:baseOntModel".equals(modelName)) { } else if ("vitro:baseOntModel".equals(modelName)) {
Object sessionOntModel = request.getSession().getAttribute("baseOntModel"); return ModelAccess.on(request.getSession()).getBaseOntModel();
if (sessionOntModel != null && sessionOntModel instanceof OntModel) {
return (OntModel) sessionOntModel;
} else {
return (OntModel) request.getSession().getServletContext().getAttribute("baseOntModel");
}
} else if ("vitro:inferenceOntModel".equals(modelName)) { } else if ("vitro:inferenceOntModel".equals(modelName)) {
Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel"); Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel");
if (sessionOntModel != null && sessionOntModel instanceof OntModel) { if (sessionOntModel != null && sessionOntModel instanceof OntModel) {

View file

@ -22,6 +22,7 @@ import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator; import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDF;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelSynchronizer; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelSynchronizer;
/** /**
@ -42,14 +43,7 @@ public class AssembleModelsSetup implements ServletContextListener {
private String SYNTAX = "N3"; private String SYNTAX = "N3";
public void contextInitialized(ServletContextEvent sce) { public void contextInitialized(ServletContextEvent sce) {
OntModel jenaOntModel = ModelAccess.on(sce.getServletContext()).getBaseOntModel();
OntModel jenaOntModel = null;
try {
jenaOntModel = (OntModel) sce.getServletContext().getAttribute("baseOntModel");
} catch (Exception e) {
log.error("No baseOntModel found to which to attach assembled models");
return;
}
// read assemblers out of assemblers directory // read assemblers out of assemblers directory
Set pathSet = sce.getServletContext().getResourcePaths(ASSEMBLERS_DIR_PATH); Set pathSet = sce.getServletContext().getResourcePaths(ASSEMBLERS_DIR_PATH);
for (String path : (Set<String>)pathSet) { for (String path : (Set<String>)pathSet) {

View file

@ -90,8 +90,20 @@ public class ContentModelSetup extends JenaDataSourceSetupBase
OntModel baseFullModel = createCombinedBulkUpdatingModel(baseABoxModel, baseTBoxModel); OntModel baseFullModel = createCombinedBulkUpdatingModel(baseABoxModel, baseTBoxModel);
OntModel inferenceFullModel = createCombinedModel(inferenceABoxModel, inferenceTBoxModel); OntModel inferenceFullModel = createCombinedModel(inferenceABoxModel, inferenceTBoxModel);
OntModel unionFullModel = ModelFactory.createOntologyModel(DB_ONT_MODEL_SPEC, dataset.getDefaultModel()); OntModel unionFullModel = ModelFactory.createOntologyModel(DB_ONT_MODEL_SPEC, dataset.getDefaultModel());
ModelAccess.on(ctx).setOntModel(ModelID.APPLICATION_METADATA, applicationMetadataModel);
ModelAccess.on(ctx).setOntModel(ModelID.USER_ACCOUNTS, userAccountsModel);
ModelAccess.on(ctx).setOntModel(ModelID.DISPLAY, displayModel);
ModelAccess.on(ctx).setOntModel(ModelID.BASE_ABOX, baseABoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.BASE_TBOX, baseTBoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.BASE_FULL, baseFullModel);
ModelAccess.on(ctx).setOntModel(ModelID.INFERRED_ABOX, inferenceABoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.INFERRED_TBOX, inferenceTBoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.INFERRED_FULL, inferenceFullModel);
ModelAccess.on(ctx).setOntModel(ModelID.UNION_ABOX, unionABoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.UNION_TBOX, unionTBoxModel);
ModelAccess.on(ctx).setOntModel(ModelID.UNION_FULL, unionFullModel);
ModelContext.setBaseOntModel(baseFullModel, ctx);
ModelContext.setInferenceOntModel(inferenceFullModel, ctx); ModelContext.setInferenceOntModel(inferenceFullModel, ctx);
checkForNamespaceMismatch( applicationMetadataModel, ctx ); checkForNamespaceMismatch( applicationMetadataModel, ctx );
@ -127,8 +139,6 @@ public class ContentModelSetup extends JenaDataSourceSetupBase
log.info("Setting up DAO factories"); log.info("Setting up DAO factories");
ModelAccess.on(ctx).setJenaOntModel(unionFullModel);
WebappDaoFactoryConfig config = new WebappDaoFactoryConfig(); WebappDaoFactoryConfig config = new WebappDaoFactoryConfig();
config.setDefaultNamespace(getDefaultNamespace(ctx)); config.setDefaultNamespace(getDefaultNamespace(ctx));

View file

@ -28,6 +28,7 @@ import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.util.ResourceUtils; import com.hp.hpl.jena.util.ResourceUtils;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
public class RunSparqlConstructs implements ServletContextListener { public class RunSparqlConstructs implements ServletContextListener {
@ -46,7 +47,7 @@ public class RunSparqlConstructs implements ServletContextListener {
String namespace = (wadf != null && wadf.getDefaultNamespace() != null) String namespace = (wadf != null && wadf.getDefaultNamespace() != null)
? wadf.getDefaultNamespace() : DEFAULT_DEFAULT_NAMESPACE; ? wadf.getDefaultNamespace() : DEFAULT_DEFAULT_NAMESPACE;
OntModel baseOntModel = (OntModel) sce.getServletContext().getAttribute("baseOntModel"); OntModel baseOntModel = ModelAccess.on(sce.getServletContext()).getBaseOntModel();
Model anonModel = ModelFactory.createDefaultModel(); Model anonModel = ModelFactory.createDefaultModel();
Model namedModel = ModelFactory.createDefaultModel(); Model namedModel = ModelFactory.createDefaultModel();