NIHVIVO-2717 fixed graph keyword tokenization bug and switched WebappDaoFactorySDBPrep to set SDB union graph as JenaOntModel
This commit is contained in:
parent
8170eadaa3
commit
1dd7d3c1d1
6 changed files with 29 additions and 29 deletions
|
@ -151,18 +151,13 @@ public class SparqlQueryServlet extends BaseEditController {
|
||||||
|
|
||||||
String queryParam = vreq.getParameter("query");
|
String queryParam = vreq.getParameter("query");
|
||||||
boolean graphPresent = false;
|
boolean graphPresent = false;
|
||||||
StringTokenizer tokenizer = new StringTokenizer(queryParam, " ");
|
String[] tokens = queryParam.split("\\s");
|
||||||
while(tokenizer.hasMoreTokens()){
|
for(int i = 0; i < tokens.length; i++){
|
||||||
if("graph".equalsIgnoreCase(tokenizer.nextToken())){
|
if("graph".equalsIgnoreCase(tokens[i])){
|
||||||
graphPresent = true;
|
return vreq.getDataset();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Dataset dataset = vreq.getDataset();
|
|
||||||
if (dataset != null && graphPresent) {
|
|
||||||
return dataset;
|
|
||||||
}
|
|
||||||
|
|
||||||
DataSource dataSource = DatasetFactory.create();
|
DataSource dataSource = DatasetFactory.create();
|
||||||
dataSource.setDefaultModel(vreq.getJenaOntModel());
|
dataSource.setDefaultModel(vreq.getJenaOntModel());
|
||||||
return dataSource;
|
return dataSource;
|
||||||
|
|
|
@ -70,6 +70,10 @@ public class VitroRequest extends HttpServletRequestWrapper {
|
||||||
setAttribute("dataset", dataset);
|
setAttribute("dataset", dataset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setJenaOntModel(OntModel ontModel) {
|
||||||
|
setAttribute("jenaOntModel", ontModel);
|
||||||
|
}
|
||||||
|
|
||||||
/** gets assertions + inferences WebappDaoFactory with no filtering **/
|
/** gets assertions + inferences WebappDaoFactory with no filtering **/
|
||||||
public WebappDaoFactory getFullWebappDaoFactory() {
|
public WebappDaoFactory getFullWebappDaoFactory() {
|
||||||
Object webappDaoFactoryAttr = _req.getAttribute("fullWebappDaoFactory");
|
Object webappDaoFactoryAttr = _req.getAttribute("fullWebappDaoFactory");
|
||||||
|
@ -106,6 +110,10 @@ public class VitroRequest extends HttpServletRequestWrapper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public OntModel getJenaOntModel() {
|
public OntModel getJenaOntModel() {
|
||||||
|
Object ontModel = getAttribute("jenaOntModel");
|
||||||
|
if (ontModel instanceof OntModel) {
|
||||||
|
return (OntModel) ontModel;
|
||||||
|
}
|
||||||
OntModel jenaOntModel = (OntModel)_req.getSession().getAttribute( JenaBaseDao.JENA_ONT_MODEL_ATTRIBUTE_NAME );
|
OntModel jenaOntModel = (OntModel)_req.getSession().getAttribute( JenaBaseDao.JENA_ONT_MODEL_ATTRIBUTE_NAME );
|
||||||
if ( jenaOntModel == null ) {
|
if ( jenaOntModel == null ) {
|
||||||
jenaOntModel = (OntModel)_req.getSession().getServletContext().getAttribute( JenaBaseDao.JENA_ONT_MODEL_ATTRIBUTE_NAME );
|
jenaOntModel = (OntModel)_req.getSession().getServletContext().getAttribute( JenaBaseDao.JENA_ONT_MODEL_ATTRIBUTE_NAME );
|
||||||
|
|
|
@ -334,13 +334,7 @@ public class IndividualController extends FreemarkerHttpServlet {
|
||||||
private ResponseValues doRdf(VitroRequest vreq, Individual individual,
|
private ResponseValues doRdf(VitroRequest vreq, Individual individual,
|
||||||
ContentType rdfFormat) throws IOException, ServletException {
|
ContentType rdfFormat) throws IOException, ServletException {
|
||||||
|
|
||||||
OntModel ontModel = null;
|
OntModel ontModel = vreq.getJenaOntModel();
|
||||||
HttpSession session = vreq.getSession(false);
|
|
||||||
if( session != null )
|
|
||||||
ontModel = (OntModel)session.getAttribute("jenaOntModel");
|
|
||||||
if( ontModel == null)
|
|
||||||
ontModel = (OntModel)getServletContext().getAttribute("jenaOntModel");
|
|
||||||
|
|
||||||
|
|
||||||
String[] includes = vreq.getParameterValues("include");
|
String[] includes = vreq.getParameterValues("include");
|
||||||
Model newModel = getRDF(individual,ontModel,ModelFactory.createDefaultModel(),0,includes);
|
Model newModel = getRDF(individual,ontModel,ModelFactory.createDefaultModel(),0,includes);
|
||||||
|
|
|
@ -933,21 +933,18 @@ public class IndividualSDB extends IndividualImpl implements Individual {
|
||||||
if (ind.getModel().contains((Resource) null, RDF.type, (RDFNode) null)){
|
if (ind.getModel().contains((Resource) null, RDF.type, (RDFNode) null)){
|
||||||
tempModel = ind.getModel();
|
tempModel = ind.getModel();
|
||||||
} else {
|
} else {
|
||||||
|
String[] graphVars = { "?g" };
|
||||||
String getTypes =
|
String getTypes =
|
||||||
"CONSTRUCT{ <" + this.individualURI + "> <" + RDF.type +
|
"CONSTRUCT{ <" + this.individualURI + "> <" + RDF.type +
|
||||||
"> ?types }\n" +
|
"> ?types }\n" +
|
||||||
"WHERE{ GRAPH " +
|
"WHERE{ GRAPH ?g"
|
||||||
((direct)
|
+ " { <" + this.individualURI +"> <" +RDF.type+ "> ?types } \n"
|
||||||
? "<http://vitro.mannlib.cornell.edu/default/vitro-kb-2>"
|
+ WebappDaoFactorySDB.getFilterBlock(
|
||||||
: "?g")
|
graphVars, (direct
|
||||||
+ " { <" + this.individualURI +"> <" +RDF.type+ "> ?types } \n" ;
|
? WebappDaoFactorySDB.SDBDatasetMode
|
||||||
|
.ASSERTIONS_ONLY
|
||||||
if (!direct) {
|
: datasetMode))
|
||||||
String[] graphVars = { "?g" };
|
+ "} \n";
|
||||||
getTypes += WebappDaoFactorySDB.getFilterBlock(graphVars, datasetMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
getTypes += "} \n";
|
|
||||||
DatasetWrapper w = getDatasetWrapper();
|
DatasetWrapper w = getDatasetWrapper();
|
||||||
Dataset dataset = w.getDataset();
|
Dataset dataset = w.getDataset();
|
||||||
dataset.getLock().enterCriticalSection(Lock.READ);
|
dataset.getLock().enterCriticalSection(Lock.READ);
|
||||||
|
|
|
@ -23,6 +23,7 @@ import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
|
||||||
|
|
||||||
public class WebappDaoFactorySDB extends WebappDaoFactoryJena {
|
public class WebappDaoFactorySDB extends WebappDaoFactoryJena {
|
||||||
|
|
||||||
|
public static final String UNION_GRAPH = "urn:x-arq:UnionGraph";
|
||||||
private SDBDatasetMode datasetMode = SDBDatasetMode.ASSERTIONS_AND_INFERENCES;
|
private SDBDatasetMode datasetMode = SDBDatasetMode.ASSERTIONS_AND_INFERENCES;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,7 +21,9 @@ import org.apache.commons.dbcp.BasicDataSource;
|
||||||
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.ontology.OntModelSpec;
|
||||||
import com.hp.hpl.jena.query.Dataset;
|
import com.hp.hpl.jena.query.Dataset;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||||
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;
|
||||||
|
@ -106,6 +108,9 @@ public class WebappDaoFactorySDBPrep implements Filter {
|
||||||
vreq.setWebappDaoFactory(wadf);
|
vreq.setWebappDaoFactory(wadf);
|
||||||
vreq.setFullWebappDaoFactory(wadf);
|
vreq.setFullWebappDaoFactory(wadf);
|
||||||
vreq.setDataset(dataset);
|
vreq.setDataset(dataset);
|
||||||
|
vreq.setJenaOntModel(ModelFactory.createOntologyModel(
|
||||||
|
OntModelSpec.OWL_MEM, dataset.getNamedModel(
|
||||||
|
WebappDaoFactorySDB.UNION_GRAPH)));
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
log.error("Unable to filter request to set up SDB connection", t);
|
log.error("Unable to filter request to set up SDB connection", t);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue