merging SDB import/export changes to trunk with backward compatibility code

This commit is contained in:
bjl23 2010-11-22 19:46:38 +00:00
parent ef94f673d2
commit c149bc77d6
8 changed files with 183 additions and 93 deletions

View file

@ -132,6 +132,14 @@ public class VitroRequest implements HttpServletRequest {
return jenaOntModel; return jenaOntModel;
} }
public OntModel getInferenceOntModel() {
OntModel jenaOntModel = (OntModel)_req.getSession().getAttribute( JenaBaseDao.INFERENCE_ONT_MODEL_ATTRIBUTE_NAME );
if ( jenaOntModel == null ) {
jenaOntModel = (OntModel)_req.getSession().getServletContext().getAttribute( JenaBaseDao.INFERENCE_ONT_MODEL_ATTRIBUTE_NAME );
}
return jenaOntModel;
}
public Portal getPortal(){ public Portal getPortal(){
return(Portal) getAttribute("portalBean"); return(Portal) getAttribute("portalBean");
} }

View file

@ -14,13 +14,20 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
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.shared.Lock; import com.hp.hpl.jena.shared.Lock;
import com.hp.hpl.jena.vocabulary.RDFS;
import edu.cornell.mannlib.vedit.controller.BaseEditController; import edu.cornell.mannlib.vedit.controller.BaseEditController;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaModelUtils; import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaModelUtils;
public class JenaExportController extends BaseEditController { public class JenaExportController extends BaseEditController {
@ -75,6 +82,7 @@ public class JenaExportController extends BaseEditController {
} }
private void outputRDF( VitroRequest vreq, HttpServletResponse response ) { private void outputRDF( VitroRequest vreq, HttpServletResponse response ) {
Dataset dataset = vreq.getDataset();
JenaModelUtils xutil = new JenaModelUtils(); JenaModelUtils xutil = new JenaModelUtils();
String formatParam = vreq.getParameter("format"); String formatParam = vreq.getParameter("format");
String subgraphParam = vreq.getParameter("subgraph"); String subgraphParam = vreq.getParameter("subgraph");
@ -94,42 +102,32 @@ public class JenaExportController extends BaseEditController {
for(int i =0; i < uri.length-1;i++) for(int i =0; i < uri.length-1;i++)
ontologyURI = ontologyURI + uri[i]; ontologyURI = ontologyURI + uri[i];
} }
if ( "inferred".equals(assertedOrInferredParam) ) {
limitToInferred = true;
inferenceModel = getOntModelFromAttribute( INFERENCES_ONT_MODEL_ATTR, vreq );
model = inferenceModel;
} else if ( "full".equals(assertedOrInferredParam) ) {
model = getOntModelFromAttribute( FULL_ONT_MODEL_ATTR, vreq );
} else { // default
model = getOntModelFromAttribute( ASSERTIONS_ONT_MODEL_ATTR, vreq );
}
if ( "abox".equals(subgraphParam) ) {
if (limitToInferred) { if( "abox".equals(subgraphParam)){
Model fullModel = getOntModelFromAttribute( FULL_ONT_MODEL_ATTR, vreq ); model = ModelFactory.createDefaultModel();
model = xutil.extractABox( fullModel ); if("inferred".equals(assertedOrInferredParam)){
try { model = xutil.extractABox(dataset, INFERENCE_GRAPH);
inferenceModel.enterCriticalSection(Lock.READ);
model = model.intersection(inferenceModel);
} finally {
inferenceModel.leaveCriticalSection();
}
} else {
model = xutil.extractABox( model );
} }
} else if ( "tbox".equals(subgraphParam) ) { else if("full".equals(assertedOrInferredParam)){
if (limitToInferred) { model = xutil.extractABox(dataset, FULL_GRAPH);
Model fullModel = getOntModelFromAttribute( FULL_ONT_MODEL_ATTR, vreq );
model = xutil.extractTBox( fullModel, ontologyURI );
try {
inferenceModel.enterCriticalSection(Lock.READ);
model = model.intersection(inferenceModel);
} finally {
inferenceModel.leaveCriticalSection();
}
} else {
model = xutil.extractTBox( model, ontologyURI );
} }
else{
model = xutil.extractABox(dataset, ASSERTIONS_GRAPH);
}
}
else if("tbox".equals(subgraphParam)){
if("inferred".equals(assertedOrInferredParam)){
model = xutil.extractTBox(dataset, ontologyURI,INFERENCE_GRAPH);
}
else if("full".equals(assertedOrInferredParam)){
model = xutil.extractTBox(dataset, ontologyURI, FULL_GRAPH);
}
else{
model = xutil.extractTBox(dataset, ontologyURI, ASSERTIONS_GRAPH);
}
} }
if ( formatParam == null ) { if ( formatParam == null ) {
@ -178,6 +176,7 @@ public class JenaExportController extends BaseEditController {
} }
private OntModel getOntModelFromAttribute( String attributeName, VitroRequest vreq ) { private OntModel getOntModelFromAttribute( String attributeName, VitroRequest vreq ) {
Object o = vreq.getAttribute( attributeName ); Object o = vreq.getAttribute( attributeName );
if ( (o != null) && (o instanceof OntModel) ) { if ( (o != null) && (o instanceof OntModel) ) {
return (OntModel) o; return (OntModel) o;
@ -194,6 +193,9 @@ public class JenaExportController extends BaseEditController {
static final String FULL_ONT_MODEL_ATTR = "jenaOntModel"; static final String FULL_ONT_MODEL_ATTR = "jenaOntModel";
static final String ASSERTIONS_ONT_MODEL_ATTR = "baseOntModel"; 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 ASSERTIONS_GRAPH = "<http://vitro.mannlib.cornell.edu/default/vitro-kb-2>";
static final String INFERENCE_GRAPH = "<http://vitro.mannlib.cornell.edu/default/vitro-kb-inf>";
static Map<String,String> formatToExtension; static Map<String,String> formatToExtension;
static Map<String,String> formatToMimetype; static Map<String,String> formatToMimetype;

View file

@ -152,23 +152,42 @@ public class RDFUploadController extends BaseEditController {
} }
} }
/* ********** Do the model changes *********** */ /* ********** Do the model changes *********** */
long stmtCount = 0L; long tboxstmtCount = 0L;
long aboxstmtCount = 0L;
if( tempModel != null ){ if( tempModel != null ){
OntModel memModel=null; JenaModelUtils xutil = new JenaModelUtils();
OntModel tboxModel=null;
OntModel aboxModel=null;
OntModel tboxChangeModel=null;
Model aboxChangeModel=null;
try { try {
memModel = ((OntModelSelector) request.getSession() tboxModel = ((OntModelSelector) request.getSession()
.getAttribute("unionOntModelSelector")).getABoxModel(); .getAttribute("baseOntModelSelector")).getTBoxModel();
aboxModel = ((OntModelSelector) request.getSession()
.getAttribute("baseOntModelSelector")).getABoxModel();
} catch (Exception e) {} } catch (Exception e) {}
if (memModel==null) { if (tboxModel==null) {
memModel = ((OntModelSelector) getServletContext() tboxModel = ((OntModelSelector) getServletContext()
.getAttribute("unionOntModelSelector")).getABoxModel(); .getAttribute("baseOntModelSelector")).getTBoxModel();
} }
if (memModel != null) { if (aboxModel==null) {
stmtCount = operateOnModel(request.getFullWebappDaoFactory(), memModel,tempModel,remove,makeClassgroups,portalArray,loginBean.getUserURI()); aboxModel = ((OntModelSelector) getServletContext()
.getAttribute("baseOntModelSelector")).getABoxModel();
} }
if (tboxModel != null) {
tboxChangeModel = xutil.extractTBox(tempModel);
tboxstmtCount = operateOnModel(request.getFullWebappDaoFactory(), tboxModel,tboxChangeModel,remove,makeClassgroups,portalArray,loginBean.getUserURI());
}
if (aboxModel != null) {
aboxChangeModel = tempModel.remove(tboxChangeModel);
aboxstmtCount = operateOnModel(request.getFullWebappDaoFactory(), aboxModel,aboxChangeModel,remove,makeClassgroups,portalArray,loginBean.getUserURI());
}
} }
request.setAttribute("uploadDesc", uploadDesc + ". " + verb + " " + stmtCount + " statements."); request.setAttribute("uploadDesc", uploadDesc + ". " + verb + " " + (tboxstmtCount + aboxstmtCount) + " statements.");
RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP); RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP);
request.setAttribute("bodyJsp","/templates/edit/specific/upload_rdf_result.jsp"); request.setAttribute("bodyJsp","/templates/edit/specific/upload_rdf_result.jsp");

View file

@ -16,6 +16,8 @@ import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.OntClass; import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec; import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.query.DatasetFactory;
import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryExecutionFactory;
@ -145,38 +147,40 @@ public class JenaModelUtils {
private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM; private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
public OntModel extractTBox( Model inputModel ) { public OntModel extractTBox( Model inputModel) {
return extractTBox( inputModel, null ); Dataset dataset = DatasetFactory.create(inputModel);
return extractTBox( dataset,null,null );
} }
public OntModel extractTBox( Model inputModel, String namespace ) { public OntModel extractTBox( Dataset dataset, String namespace, String graphURI ) {
System.out.println(namespace);
System.out.println(graphURI);
OntModel tboxModel = ModelFactory.createOntologyModel(DEFAULT_ONT_MODEL_SPEC); OntModel tboxModel = ModelFactory.createOntologyModel(DEFAULT_ONT_MODEL_SPEC);
List<String> queryStrList = new LinkedList<String>(); List<String> queryStrList = new LinkedList<String>();
// Use SPARQL DESCRIBE queries to extract the RDF for named ontology entities // Use SPARQL DESCRIBE queries to extract the RDF for named ontology entities
queryStrList.add( makeDescribeQueryStr( OWL.Class.getURI(), namespace ) ); queryStrList.add( makeDescribeQueryStr( OWL.Class.getURI(), namespace, graphURI ) );
queryStrList.add( makeDescribeQueryStr( OWL.ObjectProperty.getURI(), namespace ) ); queryStrList.add( makeDescribeQueryStr( OWL.ObjectProperty.getURI(), namespace, graphURI ) );
queryStrList.add( makeDescribeQueryStr( OWL.DatatypeProperty.getURI(), namespace ) ); queryStrList.add( makeDescribeQueryStr( OWL.DatatypeProperty.getURI(), namespace, graphURI ) );
// if we're using to a hash namespace, the URI of the Ontology resource will be // if we're using to a hash namespace, the URI of the Ontology resource will be
// that namespace minus the final hash mark. // that namespace minus the final hash mark.
if ( namespace != null && namespace.endsWith("#") ) { if ( namespace != null && namespace.endsWith("#") ) {
queryStrList.add( makeDescribeQueryStr( OWL.Ontology.getURI(), namespace.substring(0,namespace.length()-2) ) ); queryStrList.add( makeDescribeQueryStr( OWL.Ontology.getURI(), namespace.substring(0,namespace.length()-2), graphURI ) );
} else { } else {
queryStrList.add( makeDescribeQueryStr( OWL.Ontology.getURI(), namespace ) ); queryStrList.add( makeDescribeQueryStr( OWL.Ontology.getURI(), namespace, graphURI ) );
} }
// Perform the SPARQL DESCRIBEs // Perform the SPARQL DESCRIBEs
for ( String queryStr : queryStrList ) { for ( String queryStr : queryStrList ) {
Query tboxSparqlQuery = QueryFactory.create(queryStr); Query tboxSparqlQuery = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(tboxSparqlQuery,inputModel); QueryExecution qe = QueryExecutionFactory.create(tboxSparqlQuery,dataset);
try { try {
inputModel.enterCriticalSection(Lock.READ); dataset.getLock().enterCriticalSection(Lock.READ);
qe.execDescribe(tboxModel); qe.execDescribe(tboxModel);
} finally { } finally {
inputModel.leaveCriticalSection(); dataset.getLock().leaveCriticalSection();
} }
} }
@ -185,12 +189,23 @@ private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
} }
private String makeDescribeQueryStr( String typeURI, String namespace ) { private String makeDescribeQueryStr( String typeURI, String namespace ) {
return makeDescribeQueryStr( typeURI, namespace, null );
}
private String makeDescribeQueryStr( String typeURI, String namespace, String graphURI ) {
StringBuffer describeQueryStrBuff = new StringBuffer() StringBuffer describeQueryStrBuff = new StringBuffer()
.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n") .append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n")
.append("PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#> \n") .append("PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#> \n")
.append("DESCRIBE ?res WHERE { \n") .append("DESCRIBE ?res WHERE { \n");
.append(" ?res rdf:type <").append(typeURI).append("> . \n") if (graphURI != null) {
describeQueryStrBuff
.append("GRAPH " + graphURI + "{ \n");
}
describeQueryStrBuff
.append(" ?res rdf:type <").append(typeURI).append("> . \n");
describeQueryStrBuff
.append(" FILTER (!isBlank(?res)) \n"); .append(" FILTER (!isBlank(?res)) \n");
if (namespace == null) { if (namespace == null) {
@ -216,6 +231,10 @@ private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
.append(namespace) .append(namespace)
.append("\") \n"); .append("\") \n");
} }
if (graphURI != null) {
describeQueryStrBuff
.append("} \n");
}
describeQueryStrBuff.append("} \n"); describeQueryStrBuff.append("} \n");
@ -223,7 +242,12 @@ private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
} }
public Model extractABox( Model inputModel ) { public Model extractABox(Model inputModel){
Dataset dataset = DatasetFactory.create(inputModel);
return extractABox(dataset, null);
}
public Model extractABox( Dataset dataset, String graphURI ) {
Model aboxModel = ModelFactory.createDefaultModel(); Model aboxModel = ModelFactory.createDefaultModel();
@ -232,27 +256,48 @@ private final OntModelSpec DEFAULT_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
// reasoning model: we could then simply describe all instances of // reasoning model: we could then simply describe all instances of
// owl:Thing. // owl:Thing.
OntModel ontModel = ( inputModel instanceof OntModel ) //OntModel ontModel = ( inputModel instanceof OntModel )
? (OntModel)inputModel //? (OntModel)inputModel
: ModelFactory.createOntologyModel( DEFAULT_ONT_MODEL_SPEC, inputModel ); //: ModelFactory.createOntologyModel( DEFAULT_ONT_MODEL_SPEC, inputModel );
OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
Model model = ModelFactory.createDefaultModel();
String getStatements =
"CONSTRUCT " +
"{ ?p ?o ?a \n" +
"} WHERE {" +
"GRAPH ?g { \n" +
"{ ?p ?o ?a } \n" +
"} \n" +
"}";
try{
dataset.getLock().enterCriticalSection(Lock.READ);
model = QueryExecutionFactory.create(QueryFactory.create(getStatements), dataset).execConstruct();
}
finally{
dataset.getLock().leaveCriticalSection();
}
ontModel.add(model.listStatements());
try { try {
ontModel.enterCriticalSection(Lock.READ); ontModel.enterCriticalSection(Lock.READ);
Iterator classIt = ontModel.listNamedClasses(); Iterator classIt = ontModel.listNamedClasses();
while ( classIt.hasNext() ) { while ( classIt.hasNext() ) {
OntClass ontClass = (OntClass) classIt.next(); OntClass ontClass = (OntClass) classIt.next();
if ( !(ontClass.getNameSpace().startsWith(OWL.getURI()) ) if ( !(ontClass.getNameSpace().startsWith(OWL.getURI()) )
&& !(ontClass.getNameSpace().startsWith(VitroVocabulary.vitroURI)) ) { && !(ontClass.getNameSpace().startsWith(VitroVocabulary.vitroURI)) ) {
String queryStr = makeDescribeQueryStr( ontClass.getURI(), null ); String queryStr = makeDescribeQueryStr( ontClass.getURI(), null, graphURI );
Query aboxSparqlQuery = QueryFactory.create(queryStr); Query aboxSparqlQuery = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(aboxSparqlQuery,inputModel); QueryExecution qe = QueryExecutionFactory.create(aboxSparqlQuery,dataset);
try { try {
inputModel.enterCriticalSection(Lock.READ); dataset.getLock().enterCriticalSection(Lock.READ);
qe.execDescribe(aboxModel); qe.execDescribe(aboxModel); // puts the statements about each resource into aboxModel.
} finally { } finally {
inputModel.leaveCriticalSection(); dataset.getLock().leaveCriticalSection();
} }
} }

View file

@ -20,6 +20,10 @@ import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import com.hp.hpl.jena.query.DataSource;
import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.query.DatasetFactory;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle; import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.SelfEditingIdentifierFactory; import edu.cornell.mannlib.vitro.webapp.auth.identifier.SelfEditingIdentifierFactory;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.SelfEditingIdentifierFactory.SelfEditing; import edu.cornell.mannlib.vitro.webapp.auth.identifier.SelfEditingIdentifierFactory.SelfEditing;
@ -40,6 +44,7 @@ import edu.cornell.mannlib.vitro.webapp.flags.FlagException;
import edu.cornell.mannlib.vitro.webapp.flags.PortalFlag; import edu.cornell.mannlib.vitro.webapp.flags.PortalFlag;
import edu.cornell.mannlib.vitro.webapp.flags.RequestToAuthFlag; import edu.cornell.mannlib.vitro.webapp.flags.RequestToAuthFlag;
import edu.cornell.mannlib.vitro.webapp.flags.SunsetFlag; import edu.cornell.mannlib.vitro.webapp.flags.SunsetFlag;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
/** /**
* This sets up several objects in the Request scope for each * This sets up several objects in the Request scope for each
@ -195,6 +200,15 @@ public class VitroRequestPrep implements Filter {
if( log.isDebugEnabled() ) log.debug("setting role-based WebappDaoFactory filter for role " + role.toString()); if( log.isDebugEnabled() ) log.debug("setting role-based WebappDaoFactory filter for role " + role.toString());
vreq.setWebappDaoFactory(wdf); vreq.setWebappDaoFactory(wdf);
// support for Dataset interface if using Jena in-memory model
if (vreq.getDataset() == null) {
DataSource dataset = DatasetFactory.create();
dataset.addNamedModel(JenaDataSourceSetupBase.JENA_DB_MODEL, vreq.getAssertionsOntModel());
dataset.addNamedModel(JenaDataSourceSetupBase.JENA_INF_MODEL, vreq.getInferenceOntModel());
vreq.setDataset(dataset);
}
request.setAttribute("VitroRequestPrep.setup", new Integer(1)); request.setAttribute("VitroRequestPrep.setup", new Integer(1));
chain.doFilter(request, response); chain.doFilter(request, response);
} }

View file

@ -80,27 +80,27 @@ public class WebappDaoFactorySDBPrep implements Filter {
SDBConnection conn = null; SDBConnection conn = null;
try { try {
if ( if (
request instanceof HttpServletRequest && request instanceof HttpServletRequest &&
_bds != null && _storeDesc != null && _oms != null) { _bds != null && _storeDesc != null && _oms != null) {
try { try {
conn = new SDBConnection(_bds.getConnection()) ; conn = new SDBConnection(_bds.getConnection()) ;
} catch (SQLException sqe) { } catch (SQLException sqe) {
throw new RuntimeException("Unable to connect to database", sqe); throw new RuntimeException("Unable to connect to database", sqe);
}
if (conn != null) {
Store store = SDBFactory.connectStore(conn, _storeDesc);
Dataset dataset = SDBFactory.connectDataset(store);
VitroRequest vreq = new VitroRequest((HttpServletRequest) request);
WebappDaoFactory wadf =
new WebappDaoFactorySDB(_oms, dataset, _defaultNamespace, null, null);
vreq.setWebappDaoFactory(wadf);
vreq.setFullWebappDaoFactory(wadf);
vreq.setDataset(dataset);
}
} }
if (conn != null) {
Store store = SDBFactory.connectStore(conn, _storeDesc);
Dataset dataset = SDBFactory.connectDataset(store);
VitroRequest vreq = new VitroRequest((HttpServletRequest) request);
WebappDaoFactory wadf =
new WebappDaoFactorySDB(_oms, dataset, _defaultNamespace, null, null);
vreq.setWebappDaoFactory(wadf);
vreq.setFullWebappDaoFactory(wadf);
vreq.setDataset(dataset);
}
}
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); log.error("Unable to filter request to set up SDB connection", t);
} }
request.setAttribute("WebappDaoFactorySDBPrep.setup", 1); request.setAttribute("WebappDaoFactorySDBPrep.setup", 1);

View file

@ -76,10 +76,12 @@ public class JenaDataSourceSetup extends JenaDataSourceSetupBase implements java
sce.getServletContext().setAttribute("baseOntModel", memModel); sce.getServletContext().setAttribute("baseOntModel", memModel);
WebappDaoFactory baseWadf = new WebappDaoFactoryJena(baseOms, defaultNamespace, null, null); WebappDaoFactory baseWadf = new WebappDaoFactoryJena(baseOms, defaultNamespace, null, null);
sce.getServletContext().setAttribute("assertionsWebappDaoFactory",baseWadf); sce.getServletContext().setAttribute("assertionsWebappDaoFactory",baseWadf);
sce.getServletContext().setAttribute("baseOntModelSelector", baseOms);
sce.getServletContext().setAttribute("inferenceOntModel", inferenceModel); sce.getServletContext().setAttribute("inferenceOntModel", inferenceModel);
WebappDaoFactory infWadf = new WebappDaoFactoryJena(inferenceOms, defaultNamespace, null, null); WebappDaoFactory infWadf = new WebappDaoFactoryJena(inferenceOms, defaultNamespace, null, null);
sce.getServletContext().setAttribute("deductionsWebappDaoFactory", infWadf); sce.getServletContext().setAttribute("deductionsWebappDaoFactory", infWadf);
sce.getServletContext().setAttribute("inferenceOntModelSelector", inferenceOms);
sce.getServletContext().setAttribute("jenaOntModel", unionModel); sce.getServletContext().setAttribute("jenaOntModel", unionModel);
WebappDaoFactory wadf = new WebappDaoFactoryJena(unionOms, defaultNamespace, null, null); WebappDaoFactory wadf = new WebappDaoFactoryJena(unionOms, defaultNamespace, null, null);

View file

@ -56,12 +56,12 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
// (queries and updates) with the ABox data from the DB - this model is not maintained // (queries and updates) with the ABox data from the DB - this model is not maintained
// in memory. For query performance reasons, there won't be any submodels for the ABox data. // in memory. For query performance reasons, there won't be any submodels for the ABox data.
static final String JENA_DB_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-2"; public static final String JENA_DB_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-2";
// ABox inferences. This is ABox data that is inferred, using VIVO's native simple, specific- // ABox inferences. This is ABox data that is inferred, using VIVO's native simple, specific-
// purpose reasoning based on the combination of the Abox (assertion and inferences) data // purpose reasoning based on the combination of the Abox (assertion and inferences) data
// and the TBox (assertions and inferences) data. // and the TBox (assertions and inferences) data.
static final String JENA_INF_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-inf"; public static final String JENA_INF_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-inf";
// TBox assertions. // TBox assertions.
// Some of these (the local extensions) are stored and maintained in a Jena database and // Some of these (the local extensions) are stored and maintained in a Jena database and
@ -69,17 +69,17 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
// Other parts of the TBox, the 'VIVO Core', are also backed by a Jena DB, but they are // Other parts of the TBox, the 'VIVO Core', are also backed by a Jena DB, but they are
// read fresh from files each time the application starts. While the application is running, // read fresh from files each time the application starts. While the application is running,
// they are kept in memory, as submodels of the in memory copy of this named graph. // they are kept in memory, as submodels of the in memory copy of this named graph.
static final String JENA_TBOX_ASSERTIONS_MODEL = "http://vitro.mannlib.cornell.edu/default/asserted-tbox"; public static final String JENA_TBOX_ASSERTIONS_MODEL = "http://vitro.mannlib.cornell.edu/default/asserted-tbox";
// Inferred TBox. This is TBox data that is inferred from the combination of VIVO core TBox // Inferred TBox. This is TBox data that is inferred from the combination of VIVO core TBox
// and any local extension TBox assertions. Pellet computes these inferences. // and any local extension TBox assertions. Pellet computes these inferences.
// These are stored in the DB. // These are stored in the DB.
static final String JENA_TBOX_INF_MODEL = "http://vitro.mannlib.cornell.edu/default/inferred-tbox"; public static final String JENA_TBOX_INF_MODEL = "http://vitro.mannlib.cornell.edu/default/inferred-tbox";
static final String JENA_AUDIT_MODEL = "http://vitro.mannlib.cornell.edu/ns/db/experimental/audit"; static final String JENA_AUDIT_MODEL = "http://vitro.mannlib.cornell.edu/ns/db/experimental/audit";
static final String JENA_USER_ACCOUNTS_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-userAccounts"; public static final String JENA_USER_ACCOUNTS_MODEL = "http://vitro.mannlib.cornell.edu/default/vitro-kb-userAccounts";
// This model doesn't exist yet. It's a placeholder for the application ontology. // This model doesn't exist yet. It's a placeholder for the application ontology.