You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/02/27 23:10:31 UTC
[11/24] jena git commit: Direct setting of the "Accept" header.
Direct setting of the "Accept" header.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/da1ccbc8
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/da1ccbc8
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/da1ccbc8
Branch: refs/heads/master
Commit: da1ccbc887fbcf75adad337b7727f6d99cc64640
Parents: f482aea
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Feb 20 19:21:17 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Feb 20 20:20:10 2018 +0000
----------------------------------------------------------------------
.../main/java/org/apache/jena/fuseki/DEF.java | 2 +-
.../jena/rdfconnection/RDFConnectionFuseki.java | 51 +++++++-------------
.../jena/rdfconnection/RDFConnectionRemote.java | 46 ++++++++----------
.../RDFConnectionRemoteBuilder.java | 33 ++++++-------
4 files changed, 54 insertions(+), 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/da1ccbc8/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
index 71eaf08..05e9bf9 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
@@ -89,7 +89,7 @@ public class DEF
) ;
// Offer for ASK
- // This include application/xml and application/json.
+ // This includes application/xml and application/json and excludes application/sparql-results+thrift
public static final AcceptList rsOfferBoolean = AcceptList.create(contentTypeResultsJSON,
contentTypeJSON,
contentTypeTextCSV,
http://git-wip-us.apache.org/repos/asf/jena/blob/da1ccbc8/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionFuseki.java
----------------------------------------------------------------------
diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionFuseki.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionFuseki.java
index 425450c..ece1987 100644
--- a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionFuseki.java
+++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionFuseki.java
@@ -26,11 +26,8 @@ import org.apache.jena.graph.Graph;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.Triple;
import org.apache.jena.query.Dataset;
-import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
-import org.apache.jena.query.QueryFactory;
import org.apache.jena.rdf.model.Model;
-import org.apache.jena.rdfconnection.RDFConnection;
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.RDFFormat;
import org.apache.jena.riot.WebContent;
@@ -73,6 +70,10 @@ public class RDFConnectionFuseki extends RDFConnectionRemote {
/** Fuseki settings */
private static RDFConnectionRemoteBuilder setupForFuseki(RDFConnectionRemoteBuilder builder) {
String ctRDFThrift = Lang.RDFTHRIFT.getContentType().getContentType();
+ String acceptHeaderSPARQL = String.join(","
+ , ResultSetLang.SPARQLResultSetThrift.getHeaderString()
+ , ResultSetLang.SPARQLResultSetJSON.getHeaderString()+";q=0.9"
+ , Lang.RDFTHRIFT.getHeaderString());
return
builder
.quadsFormat(RDFFormat.RDF_THRIFT)
@@ -81,7 +82,7 @@ public class RDFConnectionFuseki extends RDFConnectionRemote {
.acceptHeaderDataset(ctRDFThrift)
.acceptHeaderSelectQuery(ResultSetLang.SPARQLResultSetThrift.getHeaderString())
.acceptHeaderAskQuery(ResultSetLang.SPARQLResultSetJSON.getHeaderString())
- .acceptHeaderGraphQuery(ResultSetLang.SPARQLResultSetThrift.getHeaderString())
+ .acceptHeaderQuery(acceptHeaderSPARQL)
// Create object of this class.
.creator((b)->fusekiMaker(b));
}
@@ -99,18 +100,18 @@ public class RDFConnectionFuseki extends RDFConnectionRemote {
base.destination, base.queryURL, base.updateURL, base.gspURL,
base.outputQuads, base.outputTriples,
base.acceptDataset, base.acceptGraph,
- base.acceptSelectResult, base.acceptAskResult, base.acceptGraphResult);
+ base.acceptSparqlResults, base.acceptSelectResult, base.acceptAskResult);
}
protected RDFConnectionFuseki(Transactional txnLifecycle, HttpClient httpClient, HttpContext httpContext, String destination,
String queryURL, String updateURL, String gspURL, RDFFormat outputQuads, RDFFormat outputTriples,
- String acceptDataset, String acceptGraph, String acceptSelectResult, String acceptAskResult,
- String acceptGraphResult) {
+ String acceptDataset, String acceptGraph,
+ String acceptSparqlResults, String acceptSelectResult, String acceptAskResult) {
super(txnLifecycle, httpClient, httpContext,
destination, queryURL, updateURL, gspURL,
outputQuads, outputTriples,
acceptDataset, acceptGraph,
- acceptSelectResult, acceptAskResult, acceptGraphResult);
+ acceptSparqlResults, acceptSelectResult, acceptAskResult);
}
// Fuseki specific operations.
@@ -133,41 +134,25 @@ public class RDFConnectionFuseki extends RDFConnectionRemote {
// }
// }
- // Make sure all querygoes through query(String) or query(Query)
+ // Make sure all query goes through query(String) or query(Query)
@Override
public QueryExecution query(String queryString) {
checkQuery();
-
- Query queryLocal = QueryFactory.create(queryString);
- // XXX Kludge until QueryEngineHTTP.setAccept.
- // XXX Accept header builder.
- String acceptHeader = acceptSelectResult+","+acceptAskResult+";q=0.9,"+acceptGraphResult;
return exec(()-> {
QueryExecution qExec = new QueryEngineHTTP(svcQuery, queryString, httpClient, httpContext);
QueryEngineHTTP qEngine = (QueryEngineHTTP)qExec;
- // XXX qEngine.setAccept(acceptHeader);
- // Only one choice, not "Accept:"
- switch ( queryLocal.getQueryType() ) {
- case Query.QueryTypeSelect:
- qEngine.setSelectContentType(acceptSelectResult);
- break;
- case Query.QueryTypeAsk:
- qEngine.setAskContentType(acceptAskResult);
- break;
- case Query.QueryTypeDescribe:
- case Query.QueryTypeConstruct:
- qEngine.setModelContentType(acceptGraphResult);
- break;
+ // We do not know the kind of query unless we parse it locally.
+ if ( acceptSparqlResults != null )
+ qEngine.setAcceptHeader(super.acceptSparqlResults);
+ else {
+ qEngine.setSelectContentType(acceptSelectResult);
+ qEngine.setAskContentType(acceptAskResult);
+ qEngine.setModelContentType(acceptGraph);
+ qEngine.setDatasetContentType(acceptDataset);
}
return qEngine ;
});
-// // XXX Better!
-// String url = svcQuery+"?query="+queryString;
-// // XXX Better accept.
-// TypedInputStream in = exec(()->HttpOp.execHttpGet(url, acceptSelectResult, this.httpClient,this.httpContext));
-// QueryExecution qExec =
-// return qExec;
}
/**
http://git-wip-us.apache.org/repos/asf/jena/blob/da1ccbc8/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
----------------------------------------------------------------------
diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
index cf17c49..d0a797a 100644
--- a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
+++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
@@ -77,9 +77,9 @@ public class RDFConnectionRemote implements RDFConnection {
protected final RDFFormat outputTriples;
protected final String acceptGraph;
protected final String acceptDataset;
+ protected final String acceptSparqlResults;
protected final String acceptSelectResult;
protected final String acceptAskResult;
- protected final String acceptGraphResult;
/** Create a {@link RDFConnectionRemoteBuilder}. */
public static RDFConnectionRemoteBuilder create() {
@@ -159,15 +159,16 @@ public class RDFConnectionRemote implements RDFConnection {
this(null, httpClient, null, destination, sQuery, sUpdate, sGSP,
RDFFormat.NQUADS, RDFFormat.NTRIPLES,
WebContent.defaultGraphAcceptHeader, WebContent.defaultDatasetAcceptHeader,
- QueryEngineHTTP.defaultSelectHeader(), QueryEngineHTTP.defaultAskHeader(), QueryEngineHTTP.defaultConstructHeader()
- );
+ null,
+ QueryEngineHTTP.defaultSelectHeader(), QueryEngineHTTP.defaultAskHeader());
}
// Used by the builder.
protected RDFConnectionRemote(Transactional txnLifecycle, HttpClient httpClient, HttpContext httpContext, String destination,
String queryURL, String updateURL, String gspURL, RDFFormat outputQuads, RDFFormat outputTriples,
- String acceptDataset, String acceptGraph, String acceptSelectResult, String acceptAskResult,
- String acceptGraphResult) {
+ String acceptDataset, String acceptGraph,
+ String acceptSparqlResults,
+ String acceptSelectResult, String acceptAskResult) {
this.httpClient = httpClient;
this.httpContext = httpContext;
this.destination = destination;
@@ -181,9 +182,9 @@ public class RDFConnectionRemote implements RDFConnection {
this.outputTriples = outputTriples;
this.acceptDataset = acceptDataset;
this.acceptGraph = acceptGraph;
+ this.acceptSparqlResults = acceptSparqlResults;
this.acceptSelectResult = acceptSelectResult;
this.acceptAskResult = acceptAskResult;
- this.acceptGraphResult = acceptGraphResult;
}
/** Return the {@link HttpClient} in-use. */
@@ -204,32 +205,23 @@ public class RDFConnectionRemote implements RDFConnection {
@Override
public QueryExecution query(Query query) {
checkQuery();
- // XXX ResultSetFormat
-
-
-
return exec(()-> {
QueryExecution qExec = QueryExecutionFactory.sparqlService(svcQuery, query, this.httpClient, this.httpContext);
QueryEngineHTTP qEngine = (QueryEngineHTTP)qExec;
-
- // Set general HTTP header.
-
-// // Only one choice, not "Accept:"
-// switch ( query.getQueryType() ) {
-// case Query.QueryTypeSelect:
-// qEngine.setSelectContentType("");
-// break;
-// case Query.QueryTypeAsk:
-// qEngine.setAskContentType("");
-// break;
-// case Query.QueryTypeDescribe:
-// case Query.QueryTypeConstruct:
-// qEngine.setModelContentType("");
-// break;
-// }
+ if ( acceptSparqlResults != null )
+ qEngine.setAcceptHeader(acceptSparqlResults);
+ else {
+ if ( query.isSelectType() && acceptSelectResult != null )
+ qEngine.setAcceptHeader(acceptSelectResult);
+ if ( query.isAskType() && acceptAskResult != null )
+ qEngine.setAcceptHeader(acceptAskResult);
+ if ( ( query.isConstructType() || query.isDescribeType() ) && acceptGraph != null )
+ qEngine.setAcceptHeader(acceptGraph);
+ if ( query.isConstructQuad() )
+ qEngine.setDatasetContentType(acceptDataset);
+ }
return qExec ;
});
-
}
@Override
http://git-wip-us.apache.org/repos/asf/jena/blob/da1ccbc8/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemoteBuilder.java
----------------------------------------------------------------------
diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemoteBuilder.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemoteBuilder.java
index e77e738..3b5de7f 100644
--- a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemoteBuilder.java
+++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemoteBuilder.java
@@ -25,7 +25,6 @@ import java.util.function.Function;
import org.apache.http.client.HttpClient;
import org.apache.http.protocol.HttpContext;
-import org.apache.jena.rdfconnection.RDFConnection;
import org.apache.jena.riot.*;
import org.apache.jena.sparql.core.Transactional;
import org.apache.jena.sparql.core.TransactionalLock;
@@ -56,7 +55,8 @@ public class RDFConnectionRemoteBuilder {
protected String acceptSelectResult = QueryEngineHTTP.defaultSelectHeader();
protected String acceptAskResult = QueryEngineHTTP.defaultAskHeader();
- protected String acceptGraphResult = QueryEngineHTTP.defaultConstructHeader();
+ // All-purpose head that works for any query type (but is quite long!)
+ protected String acceptSparqlResults = null;
RDFConnectionRemoteBuilder() {
// Default settings are the meber declarations.
@@ -81,7 +81,6 @@ public class RDFConnectionRemoteBuilder {
acceptSelectResult = base.acceptSelectResult;
acceptAskResult = base.acceptAskResult;
- acceptGraphResult = base.acceptGraphResult;
}
/** URL of the remote SPARQL endpoint.
@@ -235,7 +234,7 @@ public class RDFConnectionRemoteBuilder {
this.acceptGraph = acceptGraph;
return this;
}
-
+
/** Set the HTTP {@code Accept:} header used to fetch RDF datasets using HTTP GET operations. */
public RDFConnectionRemoteBuilder acceptHeaderDataset(String acceptDataset) {
this.acceptDataset = acceptDataset;
@@ -254,16 +253,11 @@ public class RDFConnectionRemoteBuilder {
return this;
}
- /** Set the HTTP {@code Accept:} header used to when making a SPARQL Protocol CONSTRUCT or DESCRIBE query. */
- public RDFConnectionRemoteBuilder acceptHeaderGraphQuery(String acceptGraphResultHeader) {
- this.acceptGraphResult = acceptGraphResultHeader;
- return this;
- }
-
- // XXX Alternative:
- /** Set the HTTP {@code Accept:} header used to when making a SPARQL Protocol query. */
- public RDFConnectionRemoteBuilder acceptHeaderQuery(String acceptHeaderQuery) {
- System.err.println("NOT YET IMPLEMENTED");
+ /** Set the HTTP {@code Accept:} header used to when making a
+ * SPARQL Protocol query if no query type specific setting available.
+ */
+ public RDFConnectionRemoteBuilder acceptHeaderQuery(String acceptHeader) {
+ this.acceptSparqlResults = acceptHeader;
return this;
}
@@ -295,8 +289,13 @@ public class RDFConnectionRemoteBuilder {
updateURL = LibRDFConn.formServiceURL(destination, sUpdate);
gspURL = LibRDFConn.formServiceURL(destination, sGSP);
- // XXX Sort out SPARQL Accept headers.
-
+// if ( acceptSparqlResults == null ) {
+// if ( acceptSelectResult != acceptAskResult )
+// acceptSparqlResults = String.join(",", acceptSelectResult, acceptAskResult, acceptGraphResult);
+// else
+// acceptSparqlResults = String.join(",", acceptSelectResult, acceptGraphResult);
+// }
+//
return maker.apply(this);
}
@@ -305,6 +304,6 @@ public class RDFConnectionRemoteBuilder {
destination, queryURL, updateURL, gspURL,
outputQuads, outputTriples,
acceptDataset, acceptGraph,
- acceptSelectResult, acceptAskResult, acceptGraphResult);
+ acceptSparqlResults, acceptSelectResult, acceptAskResult);
}
}
\ No newline at end of file