NIHVIVO-3452 SPARQL 1.1 for SPARQL page and ingest tools
This commit is contained in:
parent
c800d0c877
commit
fb008e7410
4 changed files with 47 additions and 9 deletions
|
@ -14,7 +14,6 @@ import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.StringTokenizer;
|
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
@ -33,11 +32,9 @@ 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;
|
||||||
import com.hp.hpl.jena.query.QueryFactory;
|
|
||||||
import com.hp.hpl.jena.query.QuerySolution;
|
import com.hp.hpl.jena.query.QuerySolution;
|
||||||
import com.hp.hpl.jena.query.ResultSet;
|
import com.hp.hpl.jena.query.ResultSet;
|
||||||
import com.hp.hpl.jena.query.ResultSetFormatter;
|
import com.hp.hpl.jena.query.ResultSetFormatter;
|
||||||
import com.hp.hpl.jena.query.Syntax;
|
|
||||||
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;
|
||||||
|
@ -51,6 +48,7 @@ import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
|
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.SparqlQueryUtils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,8 +60,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
|
||||||
*/
|
*/
|
||||||
public class SparqlQueryServlet extends BaseEditController {
|
public class SparqlQueryServlet extends BaseEditController {
|
||||||
private static final Log log = LogFactory.getLog(SparqlQueryServlet.class.getName());
|
private static final Log log = LogFactory.getLog(SparqlQueryServlet.class.getName());
|
||||||
|
|
||||||
protected static final Syntax SYNTAX = Syntax.syntaxARQ;
|
|
||||||
|
|
||||||
protected static HashMap<String,ResultSetFormat>formatSymbols = new HashMap<String,ResultSetFormat>();
|
protected static HashMap<String,ResultSetFormat>formatSymbols = new HashMap<String,ResultSetFormat>();
|
||||||
static{
|
static{
|
||||||
|
@ -225,7 +221,7 @@ public class SparqlQueryServlet extends BaseEditController {
|
||||||
|
|
||||||
QueryExecution qe = null;
|
QueryExecution qe = null;
|
||||||
try{
|
try{
|
||||||
Query query = QueryFactory.create(queryParam, SYNTAX);
|
Query query = SparqlQueryUtils.create(queryParam);
|
||||||
qe = QueryExecutionFactory.create(query, dataset);
|
qe = QueryExecutionFactory.create(query, dataset);
|
||||||
if( query.isSelectType() ){
|
if( query.isSelectType() ){
|
||||||
ResultSet results = null;
|
ResultSet results = null;
|
||||||
|
|
|
@ -68,6 +68,7 @@ import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
|
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.SparqlQueryServlet;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaBaseDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaBaseDao;
|
||||||
|
@ -77,6 +78,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSDBModelMaker;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker;
|
||||||
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.JenaDataSourceSetup;
|
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetup;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.SparqlQueryUtils;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestWorkflowProcessor;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestWorkflowProcessor;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaOutputUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaOutputUtils;
|
||||||
|
@ -920,7 +922,7 @@ public class JenaIngestController extends BaseEditController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Model tempModel = ModelFactory.createDefaultModel();
|
Model tempModel = ModelFactory.createDefaultModel();
|
||||||
Query query = QueryFactory.create(queryStr, Syntax.syntaxARQ);
|
Query query = SparqlQueryUtils.create(queryStr);
|
||||||
QueryExecution qexec = QueryExecutionFactory.create(query,source);
|
QueryExecution qexec = QueryExecutionFactory.create(query,source);
|
||||||
try {
|
try {
|
||||||
qexec.execConstruct(tempModel);
|
qexec.execConstruct(tempModel);
|
||||||
|
|
|
@ -2,6 +2,15 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.utils;
|
package edu.cornell.mannlib.vitro.webapp.utils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.query.Query;
|
||||||
|
import com.hp.hpl.jena.query.QueryFactory;
|
||||||
|
import com.hp.hpl.jena.query.QueryParseException;
|
||||||
|
import com.hp.hpl.jena.query.Syntax;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Some utility methods that help when dealing with SPARQL queries.
|
* Some utility methods that help when dealing with SPARQL queries.
|
||||||
*/
|
*/
|
||||||
|
@ -12,6 +21,12 @@ public class SparqlQueryUtils {
|
||||||
*/
|
*/
|
||||||
private static final char[] REGEX_SPECIAL_CHARACTERS = "[\\^$.|?*+()]"
|
private static final char[] REGEX_SPECIAL_CHARACTERS = "[\\^$.|?*+()]"
|
||||||
.toCharArray();
|
.toCharArray();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of SPARQL syntaxes to try when parsing queries
|
||||||
|
*/
|
||||||
|
public static final List<Syntax> SUPPORTED_SYNTAXES = Arrays.asList(
|
||||||
|
Syntax.syntaxARQ , Syntax.syntaxSPARQL_11);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Escape any regex special characters in the string.
|
* Escape any regex special characters in the string.
|
||||||
|
@ -40,5 +55,28 @@ public class SparqlQueryUtils {
|
||||||
}
|
}
|
||||||
return clean.toString();
|
return clean.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience method to attempt parsing a query string with various syntaxes
|
||||||
|
* @param queryString
|
||||||
|
* @return Query
|
||||||
|
*/
|
||||||
|
public static Query create(String queryString) {
|
||||||
|
boolean parseSuccess = false;
|
||||||
|
Iterator<Syntax> syntaxIt = SUPPORTED_SYNTAXES.iterator();
|
||||||
|
Query query = null;
|
||||||
|
while (!parseSuccess && syntaxIt.hasNext()) {
|
||||||
|
Syntax syntax = syntaxIt.next();
|
||||||
|
try {
|
||||||
|
query = QueryFactory.create(queryString, syntax);
|
||||||
|
parseSuccess = true;
|
||||||
|
} catch (QueryParseException e) {
|
||||||
|
if (!syntaxIt.hasNext()) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
%>
|
%>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<textarea rows="16" cols="40" name="sparqlQueryStr" class="maxWidth"><c:choose>
|
<textarea rows="25" cols="40" name="sparqlQueryStr" class="maxWidth"><c:choose>
|
||||||
<c:when test="${param.sparqlQueryStr != null}">
|
<c:when test="${param.sparqlQueryStr != null}">
|
||||||
${param.sparqlQueryStr}
|
${param.sparqlQueryStr}
|
||||||
</c:when>
|
</c:when>
|
||||||
|
@ -83,10 +83,12 @@ if(prefixes != null){
|
||||||
String prefixText = (String) prefixItr.next();
|
String prefixText = (String) prefixItr.next();
|
||||||
if(prefixText.equals("(not yet specified)")){
|
if(prefixText.equals("(not yet specified)")){
|
||||||
count++;
|
count++;
|
||||||
prefixText = "j." + count.toString();
|
prefixText = "p." + count.toString();
|
||||||
}
|
}
|
||||||
String urlText = (String) prefixItr.next();%>
|
String urlText = (String) prefixItr.next();%>
|
||||||
PREFIX <%=prefixText%>: <<%=urlText%>><%}}%>
|
PREFIX <%=prefixText%>: <<%=urlText%>><%}}%>
|
||||||
|
|
||||||
|
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue