diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/exec/RowSet.java b/jena-arq/src/main/java/org/apache/jena/sparql/exec/RowSet.java index f905d5b0537..4ac53a69314 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/exec/RowSet.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/exec/RowSet.java @@ -79,8 +79,8 @@ public default Stream stream() { /** * Normally a RowSet is processed until complete which implicitly closes any - * underlying resources. This "close" operation exists to explicitly do this in - * cases where it does onto automatically. There is no need to close RowSets + * underlying resources. This "close" operation exists to explicitly end use of the RowSet + * in cases where it does happen. There is no need to close RowSets * normally - it is the {@link QueryExec} that should be closed. */ @Override diff --git a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/AccessCtl_SPARQL_QueryDataset.java b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/AccessCtl_SPARQL_QueryDataset.java index f4c452bc97d..3b8c8fe3ecd 100644 --- a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/AccessCtl_SPARQL_QueryDataset.java +++ b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/AccessCtl_SPARQL_QueryDataset.java @@ -121,7 +121,7 @@ protected QueryExec createQueryExec(HttpAction action, Query query, DatasetGraph return super.createQueryExec(action, query, target); SecurityContext sCxt = DataAccessLib.getSecurityContext(action, dsg, requestUser); - // A QueryExecution for controlled access + // A query execution for controlled access QueryExec qExec = sCxt.createQueryExec(query, target); return qExec; } diff --git a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/SecurityContextView.java b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/SecurityContextView.java index a0826485ecc..440bd393414 100644 --- a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/SecurityContextView.java +++ b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/SecurityContextView.java @@ -26,7 +26,6 @@ import org.apache.jena.graph.Node; import org.apache.jena.query.Query; -import org.apache.jena.query.QueryExecution; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.Quad; import org.apache.jena.sparql.exec.QueryExec; @@ -99,7 +98,7 @@ public QueryExec createQueryExec(Query query, DatasetGraph dsg) { /** * Apply a filter suitable for the TDB-backed {@link DatasetGraph}, to the {@link Context} of the - * {@link QueryExecution}. This does not modify the {@link DatasetGraph}. + * {@link QueryExec}. This does not modify the {@link DatasetGraph}. */ @Override public void filterTDB(DatasetGraph dsg, QueryExec qExec) { diff --git a/jena-fuseki2/jena-fuseki-access/src/test/java/org/apache/jena/fuseki/access/TestSecurityFilterLocal.java b/jena-fuseki2/jena-fuseki-access/src/test/java/org/apache/jena/fuseki/access/TestSecurityFilterLocal.java index af42f6a5f44..82d6d64b408 100644 --- a/jena-fuseki2/jena-fuseki-access/src/test/java/org/apache/jena/fuseki/access/TestSecurityFilterLocal.java +++ b/jena-fuseki2/jena-fuseki-access/src/test/java/org/apache/jena/fuseki/access/TestSecurityFilterLocal.java @@ -167,7 +167,7 @@ private Set graphs(DatasetGraph dsg, SecurityContext sCxt) { assertSeen(visible); } - // QueryExecution + // Query execution private void filter_user(String user, Node ... expected) { SecurityContext sCxt = reg.get(user); Set visible = subjects(testdsg, queryAll, sCxt); @@ -241,7 +241,7 @@ private void filter_user(String user, Node ... expected) { assertSeen(visible); } - // QueryExecution w/ Union default graph + // Query execution w/ union default graph private void filter_union_user(String user, Node ... expected) { SecurityContext sCxt = reg.get(user); Set visible; @@ -289,56 +289,56 @@ private void filter_union_user(String user, Node ... expected) { } - // Graph/Model - @Test public void query_model_userNone() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "userNone"); + // Graph + @Test public void query_graph_userNone() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "userNone"); } - @Test public void query_model_userDft() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "userDft", s0); + @Test public void query_graph_userDft() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "userDft", s0); } - @Test public void query_model_user0() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "user0", s0); + @Test public void query_graph_user0() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "user0", s0); } - @Test public void query_model_user1() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "user1", s0); + @Test public void query_graph_user1() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "user1", s0); } - @Test public void query_model_user2() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "user2"); + @Test public void query_graph_user2() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "user2"); } - @Test public void query_model_ng_userNone() { - query_model_user(testdsg, dsg->dsg.getGraph(g1), "userNone"); + @Test public void query_graph_ng_userNone() { + query_graph_user(testdsg, dsg->dsg.getGraph(g1), "userNone"); } - @Test public void query_model_ng_user11() { - query_model_user(testdsg, dsg->dsg.getGraph(g1), "user1", s1); + @Test public void query_graph_ng_user11() { + query_graph_user(testdsg, dsg->dsg.getGraph(g1), "user1", s1); } - @Test public void query_model_ng_user21() { - query_model_user(testdsg, dsg->dsg.getGraph(g1), "user2", s1); + @Test public void query_graph_ng_user21() { + query_graph_user(testdsg, dsg->dsg.getGraph(g1), "user2", s1); } - @Test public void query_model_ng_user12() { - query_model_user(testdsg, dsg->dsg.getGraph(g2), "user1"); + @Test public void query_graph_ng_user12() { + query_graph_user(testdsg, dsg->dsg.getGraph(g2), "user1"); } - @Test public void query_model_ng_user22() { - query_model_user(testdsg, dsg->dsg.getGraph(g2), "user2", s2); + @Test public void query_graph_ng_user22() { + query_graph_user(testdsg, dsg->dsg.getGraph(g2), "user2", s2); } - @Test public void query_model_userXa() { - query_model_user(testdsg, dsg->dsg.getDefaultGraph(), "userX"); + @Test public void query_graph_userXa() { + query_graph_user(testdsg, dsg->dsg.getDefaultGraph(), "userX"); } - @Test public void query_model_userXb() { - query_model_user(testdsg, dsg->dsg.getGraph(g1), "userX"); + @Test public void query_graph_userXb() { + query_graph_user(testdsg, dsg->dsg.getGraph(g1), "userX"); } - private void query_model_user(DatasetGraph dsg, Function graphChoice, String user, Node ... expected) { + private void query_graph_user(DatasetGraph dsg, Function graphChoice, String user, Node ... expected) { SecurityContext sCxt = reg.get(user); Set visible = subjects(dsg, graphChoice, queryDft, sCxt); assertSeen(visible, expected); diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQLQueryProcessor.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQLQueryProcessor.java index 385594535e8..b9600b03ad3 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQLQueryProcessor.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQLQueryProcessor.java @@ -306,11 +306,11 @@ private static void abortSilent(HttpAction action) { */ protected abstract void validateQuery(HttpAction action, Query query); - /** Create the {@link QueryExecution} for this operation. + /** Create the {@link QueryExec} for this operation. * @param action * @param query * @param dataset - * @return QueryExecution + * @return QueryExec */ protected QueryExec createQueryExec(HttpAction action, Query query, DatasetGraph dataset) { QueryExecDatasetBuilder builder = QueryExec.newBuilder() @@ -368,16 +368,16 @@ private static long chooseTimeout(long setupTimeout, long protocolTimeout) { return setupTimeout; } - /** Perform the {@link QueryExecution} once. + /** Perform the {@link QueryExec} once. * @param action - * @param queryExecution - * @param requestQuery Original query; queryExecution query may have been modified. + * @param queryExec + * @param requestQuery Original query; the QueryExec query may have been modified. * @param queryStringLog Informational string created from the initial query. * @return */ - protected QueryExecResult executeQuery(HttpAction action, QueryExec queryExecution, Query requestQuery, String queryStringLog) { + protected QueryExecResult executeQuery(HttpAction action, QueryExec queryExec, Query requestQuery, String queryStringLog) { if ( requestQuery.isSelectType() ) { - RowSet rs = queryExecution.select(); + RowSet rs = queryExec.select(); // Force some query execution now. // If the timeout-first-row goes off, the output stream has not @@ -393,23 +393,23 @@ protected QueryExecResult executeQuery(HttpAction action, QueryExec queryExecuti } if ( requestQuery.isConstructType() ) { - DatasetGraph dataset = queryExecution.constructDataset(); + DatasetGraph dataset = queryExec.constructDataset(); return new QueryExecResult(dataset); } if ( requestQuery.isDescribeType() ) { - Graph graph = queryExecution.describe(); + Graph graph = queryExec.describe(); return new QueryExecResult(graph); } if ( requestQuery.isAskType() ) { - boolean b = queryExecution.ask(); + boolean b = queryExec.ask(); return new QueryExecResult(b); } if ( requestQuery.isJsonType() ) { - Iterator jsonIterator = queryExecution.execJsonItems(); - //JsonArray jsonArray = queryExecution.execJson(); + Iterator jsonIterator = queryExec.execJsonItems(); + //JsonArray jsonArray = queryExec.execJson(); return new QueryExecResult(jsonIterator); } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java index af22dafc239..fe16e1d5695 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java @@ -20,22 +20,21 @@ import java.util.function.Consumer; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + import org.apache.jena.atlas.lib.StrUtils; import org.apache.jena.atlas.web.HttpException; import org.apache.jena.fuseki.test.HttpTest; import org.apache.jena.graph.Graph; -import org.apache.jena.query.Dataset; -import org.apache.jena.query.DatasetFactory; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.rdfconnection.RDFConnection; +import org.apache.jena.graph.Node; +import org.apache.jena.graph.NodeFactory; +import org.apache.jena.rdflink.RDFLink; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.apache.jena.sparql.engine.http.QueryExceptionHTTP; import org.apache.jena.sparql.sse.SSE; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; /** Tests for .add("/ds", dsg, false) */ public class TestFusekiStdReadOnlySetup { @@ -44,22 +43,20 @@ public class TestFusekiStdReadOnlySetup { private static FusekiServer server = null; private static int port; - private static Model data; - private static Dataset dataset; + private static Graph data; + private static DatasetGraph dataset; private static String URL; @BeforeClass public static void beforeClass() { - Graph graph = SSE.parseGraph(StrUtils.strjoinNL + data = SSE.parseGraph(StrUtils.strjoinNL ("(graph" ," (:s :p 1)" ,")")); - data = ModelFactory.createModelForGraph(graph); - DatasetGraph dsgData = DatasetGraphFactory.create(); - dsgData.add(SSE.parseQuad("(:g :s :p 2 )")); - dataset = DatasetFactory.wrap(dsgData); + dataset = DatasetGraphFactory.create(); + dataset.add(SSE.parseQuad("(:g :s :p 2 )")); DatasetGraph dsg = DatasetGraphFactory.createTxnMem(); @@ -95,12 +92,12 @@ public void stdSetup_endpoint_3() { @Test public void stdSetup_endpoint_4() { - exec(URL, "/get", conn -> conn.fetch()); + exec(URL, "/get", conn -> conn.get()); } @Test public void stdSetup_endpoint_5() { - exec(URL, "/data", conn -> conn.fetch()); + exec(URL, "/data", conn -> conn.get()); } @Test @@ -133,22 +130,23 @@ public void stdSetup_dataset_2() { @Test public void stdSetup_dataset_3() { - exec(URL, conn -> conn.fetch()); + exec(URL, conn -> conn.get()); } @Test public void stdSetup_dataset_4() { - exec(URL, conn -> conn.fetchDataset()); + exec(URL, conn -> conn.getDataset()); } @Test public void stdSetup_dataset_5() { - HttpTest.expect405(() -> exec(URL, conn -> conn.put("http://example", data)) ); + Node gn = NodeFactory.createURI("http://example"); + HttpTest.expect405(() -> exec(URL, conn -> conn.put(gn, data)) ); } @Test public void stdSetup_dataset_6() { - // Read-only: Bad POST - only queies can be POST'ed => bad media type. + // Read-only: Bad POST - only queries can be POST'ed => bad media type. HttpTest.expect405(() -> exec(URL, conn -> conn.putDataset(dataset)) ); } @@ -170,14 +168,14 @@ public void stdSetup_dataset_6() { } @Test public void stdSetup_endpoint_bad_5() { - HttpTest.expect404( () -> exec(URL+"2", "", (RDFConnection conn)->conn.queryAsk("ASK{}")) ); + HttpTest.expect404( () -> exec(URL+"2", "", conn->conn.queryAsk("ASK{}")) ); } - private static void exec(String url, Consumer action) { + private static void exec(String url, Consumer action) { execEx(url, null, action); } - private static void exec(String url, String ep, Consumer action) { + private static void exec(String url, String ep, Consumer action) { try { execEx(url, ep, action); } catch (HttpException ex) { @@ -187,7 +185,7 @@ private static void exec(String url, String ep, Consumer action) } } - private static void execEx(String url, String ep, Consumer action) { + private static void execEx(String url, String ep, Consumer action) { String dest; if ( ep == null || ep.isEmpty() ) { dest = url; @@ -198,7 +196,7 @@ private static void execEx(String url, String ep, Consumer action ep = ep.substring(1); dest = url+ep; } - try ( RDFConnection conn = RDFConnection.connect(dest) ) { + try ( RDFLink conn = RDFLink.connect(dest) ) { action.accept(conn); } } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java index 90c2a2b8768..ecd71d6b50e 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java @@ -20,22 +20,21 @@ import java.util.function.Consumer; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + import org.apache.jena.atlas.lib.StrUtils; import org.apache.jena.atlas.web.HttpException; import org.apache.jena.fuseki.test.HttpTest; import org.apache.jena.graph.Graph; -import org.apache.jena.query.Dataset; -import org.apache.jena.query.DatasetFactory; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.rdfconnection.RDFConnection; +import org.apache.jena.graph.Node; +import org.apache.jena.graph.NodeFactory; +import org.apache.jena.rdflink.RDFLink; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.apache.jena.sparql.engine.http.QueryExceptionHTTP; import org.apache.jena.sparql.sse.SSE; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; /** Tests for .add("/ds", dsg) */ public class TestFusekiStdSetup { @@ -43,22 +42,20 @@ public class TestFusekiStdSetup { private static FusekiServer server = null; private static int port; - private static Model data; - private static Dataset dataset; + private static Graph data; + private static DatasetGraph dataset; private static String URL; @BeforeClass public static void beforeClass() { - Graph graph = SSE.parseGraph(StrUtils.strjoinNL + data = SSE.parseGraph(StrUtils.strjoinNL ("(graph" ," (:s :p 1)" ,")")); - data = ModelFactory.createModelForGraph(graph); - DatasetGraph dsgData = DatasetGraphFactory.create(); - dsgData.add(SSE.parseQuad("(:g :s :p 2 )")); - dataset = DatasetFactory.wrap(dsgData); + dataset = DatasetGraphFactory.create(); + dataset.add(SSE.parseQuad("(:g :s :p 2 )")); DatasetGraph dsg = DatasetGraphFactory.createTxnMem(); @@ -93,12 +90,12 @@ public void stdSetup_endpoint_3() { @Test public void stdSetup_endpoint_4() { - exec(URL, "/get", conn -> conn.fetch()); + exec(URL, "/get", conn -> conn.get()); } @Test public void stdSetup_endpoint_5() { - exec(URL, "/data", conn -> conn.fetch()); + exec(URL, "/data", conn -> conn.get()); } @Test @@ -123,17 +120,18 @@ public void stdSetup_dataset_2() { @Test public void stdSetup_dataset_3() { - exec(URL, conn -> conn.fetch()); + exec(URL, conn -> conn.get()); } @Test public void stdSetup_dataset_4() { - exec(URL, conn -> conn.fetchDataset()); + exec(URL, conn -> conn.getDataset()); } @Test public void stdSetup_dataset_5() { - exec(URL, conn -> conn.put("http://example", data)); + Node gn = NodeFactory.createURI("http://example"); + exec(URL, conn -> conn.put(gn, data)); } @Test @@ -158,18 +156,18 @@ public void stdSetup_dataset_6() { } @Test public void stdSetup_endpoint_bad_5() { - HttpTest.expect404( () -> exec(URL+"2", "", (RDFConnection conn)->conn.queryAsk("ASK{}")) ); + HttpTest.expect404( () -> exec(URL+"2", "", conn->conn.queryAsk("ASK{}")) ); } @Test public void stdSetup_endpoint_bad_6() { HttpTest.expect404( () -> exec(URL, "/nonsense", conn -> conn.putDataset(dataset)) ); } - private static void exec(String url, Consumer action) { + private static void exec(String url, Consumer action) { execEx(url, null, action); } - private static void exec(String url, String ep, Consumer action) { + private static void exec(String url, String ep, Consumer action) { try { execEx(url, ep, action); } catch (HttpException ex) { @@ -179,7 +177,7 @@ private static void exec(String url, String ep, Consumer action) } } - private static void execEx(String url, String ep, Consumer action) { + private static void execEx(String url, String ep, Consumer action) { String dest; if ( ep == null || ep.isEmpty() ) { dest = url; @@ -190,7 +188,7 @@ private static void execEx(String url, String ep, Consumer action ep = ep.substring(1); dest = url+ep; } - try ( RDFConnection conn = RDFConnection.connect(dest) ) { + try ( RDFLink conn = RDFLink.connect(dest) ) { action.accept(conn); } } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestPlainServer.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestPlainServer.java index e3a27b85c1d..7aec058fa89 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestPlainServer.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestPlainServer.java @@ -30,8 +30,6 @@ import jakarta.servlet.http.HttpServletResponse; import org.apache.jena.http.HttpOp; -import org.apache.jena.query.Dataset; -import org.apache.jena.rdf.model.Model; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -43,9 +41,6 @@ public class TestPlainServer { private static FusekiServer server = null; private static int port; - private static Model data; - private static Dataset dataset; - private static String serverURL; @BeforeClass diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java index 3fa37a42569..ef63f1701a2 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java @@ -28,6 +28,10 @@ import java.net.http.HttpClient; import java.util.Iterator; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + import org.apache.jena.atlas.json.JsonArray; import org.apache.jena.atlas.web.AcceptList; import org.apache.jena.atlas.web.MediaType; @@ -39,20 +43,14 @@ import org.apache.jena.graph.Triple; import org.apache.jena.http.HttpEnv; import org.apache.jena.query.*; -import org.apache.jena.rdf.model.Model; import org.apache.jena.sparql.core.Quad; import org.apache.jena.sparql.core.Var; import org.apache.jena.sparql.engine.binding.Binding; -import org.apache.jena.sparql.exec.http.GSP; -import org.apache.jena.sparql.exec.http.QueryExecutionHTTP; -import org.apache.jena.sparql.exec.http.QueryExecutionHTTPBuilder; -import org.apache.jena.sparql.exec.http.Service; +import org.apache.jena.sparql.exec.QueryExec; +import org.apache.jena.sparql.exec.http.*; import org.apache.jena.sparql.resultset.ResultSetCompare; import org.apache.jena.sparql.sse.SSE; import org.apache.jena.sparql.util.Convert; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; public class TestQuery extends AbstractFusekiTest { @@ -190,8 +188,8 @@ public void query_construct_01() public void query_construct_02() { String query = " CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}"; - try ( QueryExecution qExec = QueryExecution.service(serviceQuery(), query) ) { - Model result = qExec.execConstruct(); + try ( QueryExec qExec = QueryExec.service(serviceQuery()).query(query).build() ) { + Graph result = qExec.construct(); assertEquals(1, result.size()); } } @@ -199,8 +197,8 @@ public void query_construct_02() @Test public void query_describe_01() { String query = "DESCRIBE ?s WHERE {?s ?p ?o}"; - try ( QueryExecution qExec = QueryExecution.service(serviceQuery(), query) ) { - Model result = qExec.execDescribe(); + try ( QueryExec qExec = QueryExec.service(serviceQuery()).query(query).build() ) { + Graph result = qExec.describe(); assertFalse(result.isEmpty()); } } @@ -208,8 +206,8 @@ public void query_describe_01() { @Test public void query_describe_02() { String query = "DESCRIBE WHERE { }"; - try ( QueryExecution qExec = QueryExecution.service(serviceQuery(), query) ) { - Model result = qExec.execDescribe(); + try ( QueryExec qExec = QueryExec.service(serviceQuery()).query(query).build() ) { + Graph result = qExec.describe(); assertTrue(result.isEmpty()); } } @@ -262,8 +260,8 @@ public void query_describe_conneg() throws IOException { String query = "DESCRIBE ?s WHERE {?s ?p ?o}"; for (MediaType type : rdfOfferTest.entries()) { String contentType = type.toHeaderString(); - QueryExecutionHTTP qExec = - QueryExecutionHTTPBuilder.create() + QueryExecHTTP qExec = + QueryExecHTTPBuilder.create() .httpClient(client) .endpoint(serviceQuery()) .queryString(query) @@ -271,10 +269,10 @@ public void query_describe_conneg() throws IOException { .build(); try ( qExec ) { - Model m = qExec.execDescribe(); + Graph graph = qExec.describe(); String x = qExec.getHttpResponseContentType(); assertEquals(contentType, x); - assertFalse(m.isEmpty()); + assertFalse(graph.isEmpty()); } } } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestSPARQLProtocol.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestSPARQLProtocol.java index d34b37deb60..109cc2fc1d5 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestSPARQLProtocol.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestSPARQLProtocol.java @@ -20,18 +20,25 @@ import static org.junit.Assert.assertTrue; +import org.junit.Before; +import org.junit.Test; + import org.apache.jena.graph.Graph; import org.apache.jena.graph.Node; import org.apache.jena.graph.NodeFactory; import org.apache.jena.query.*; import org.apache.jena.riot.WebContent; +import org.apache.jena.sparql.exec.QueryExec; +import org.apache.jena.sparql.exec.RowSet; +import org.apache.jena.sparql.exec.RowSetOps; import org.apache.jena.sparql.exec.http.GSP; -import org.apache.jena.sparql.exec.http.QueryExecutionHTTP; +import org.apache.jena.sparql.exec.http.QueryExecHTTP; import org.apache.jena.sparql.sse.SSE; import org.apache.jena.sparql.util.Convert; -import org.apache.jena.update.*; -import org.junit.Before; -import org.junit.Test; +import org.apache.jena.update.UpdateExecution; +import org.apache.jena.update.UpdateExecutionFactory; +import org.apache.jena.update.UpdateFactory; +import org.apache.jena.update.UpdateRequest; public class TestSPARQLProtocol extends AbstractFusekiTest { @@ -56,9 +63,9 @@ static String query(String base, String queryString) { @Test public void query_01() { Query query = QueryFactory.create("SELECT * { ?s ?p ?o }"); - try ( QueryExecution qexec = QueryExecution.service(serviceQuery(), query) ) { - ResultSet rs = qexec.execSelect(); - int x = ResultSetFormatter.consume(rs); + try ( QueryExec qexec = QueryExec.service(serviceQuery()).query(query).build() ) { + RowSet rs = qexec.select(); + long x = RowSetOps.count(rs); assertTrue(x != 0); } } @@ -66,13 +73,13 @@ public void query_01() { @Test public void query_02() { Query query = QueryFactory.create("SELECT * { ?s ?p ?o }"); - QueryExecution qExec = QueryExecutionHTTP.create() + QueryExec qExec = QueryExecHTTP.newBuilder() .endpoint(serviceQuery()) .query(query) .acceptHeader(WebContent.contentTypeResultsJSON) .build(); - ResultSet rs = qExec.execSelect(); - int x = ResultSetFormatter.consume(rs); + RowSet rs = qExec.select(); + long x = RowSetOps.count(rs); assertTrue(x != 0); } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestServiceDatasetAuth.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestServiceDatasetAuth.java index 898cf83957c..4f03c952e6b 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestServiceDatasetAuth.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestServiceDatasetAuth.java @@ -23,15 +23,15 @@ import static org.apache.jena.fuseki.main.FusekiTestLib.expectQuery401; import static org.apache.jena.fuseki.main.FusekiTestLib.expectQuery403; +import org.junit.Test; + import org.apache.jena.atlas.web.WebLib; import org.apache.jena.fuseki.main.FusekiServer; -import org.apache.jena.query.QueryExecution; -import org.apache.jena.query.ResultSetFormatter; import org.apache.jena.rdfconnection.LibSec; -import org.apache.jena.rdfconnection.RDFConnection; -import org.apache.jena.sparql.util.QueryExecUtils; +import org.apache.jena.rdflink.RDFLink; +import org.apache.jena.sparql.exec.QueryExec; +import org.apache.jena.sparql.exec.RowSetOps; import org.apache.jena.web.AuthSetup; -import org.junit.Test; /** Tests for a dataset with SPARQL query and update, and no named endpoint services. * See {@link TestServiceDataAuthConfig} and {@link TestServiceDataAuthBuild}. @@ -47,10 +47,10 @@ public abstract class AbstractTestServiceDatasetAuth { @Test public void no_auth() { // No user -> fails login expectQuery401(() -> { - try ( RDFConnection conn = RDFConnection.connect(server().datasetURL("/db")) ) { + try ( RDFLink conn = RDFLink.connect(server().datasetURL("/db")) ) { //conn.update("INSERT DATA { }"); - try ( QueryExecution qExec = conn.query("SELECT * { ?s ?p ?o }") ) { - ResultSetFormatter.consume(qExec.execSelect()); + try ( QueryExec qExec = conn.query("SELECT * { ?s ?p ?o }") ) { + RowSetOps.consume(qExec.select()); } } }); @@ -69,9 +69,9 @@ public abstract class AbstractTestServiceDatasetAuth { @Test public void user2_query() { expectOK(()->{ LibSec.withAuth(server().datasetURL("/db"), auth2, conn1 -> { - try (RDFConnection conn = conn1) { - try ( QueryExecution qExec = conn.query("SELECT * { ?s ?p ?o }") ) { - ResultSetFormatter.consume(qExec.execSelect()); + try (RDFLink conn = conn1) { + try ( QueryExec qExec = conn.query("SELECT * { ?s ?p ?o }") ) { + RowSetOps.consume(qExec.select()); } }}); }); @@ -88,9 +88,9 @@ public abstract class AbstractTestServiceDatasetAuth { @Test public void user3_query() { expectQuery403(()->{ LibSec.withAuth(server().datasetURL("/db"), auth3, conn1 -> { - try (RDFConnection conn = conn1) { - try ( QueryExecution qExec = conn.query("SELECT * { ?s ?p ?o }") ) { - QueryExecUtils.executeQuery(qExec); + try (RDFLink conn = conn1) { + try ( QueryExec qExec = conn.query("SELECT * { ?s ?p ?o }") ) { + qExec.select().materialize(); } }}); }); diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestPasswdOnly.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestPasswdOnly.java index eb4d4ac983b..32436580ab6 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestPasswdOnly.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestPasswdOnly.java @@ -21,18 +21,19 @@ import static org.apache.jena.fuseki.main.FusekiTestLib.expectOK; import static org.apache.jena.fuseki.main.FusekiTestLib.expectQuery401; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + import org.apache.jena.atlas.web.WebLib; import org.apache.jena.fuseki.main.FusekiServer; -import org.apache.jena.query.QueryExecution; import org.apache.jena.rdfconnection.LibSec; import org.apache.jena.rdfconnection.RDFConnection; +import org.apache.jena.rdflink.RDFLink; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.apache.jena.sparql.engine.http.QueryExceptionHTTP; -import org.apache.jena.sparql.util.QueryExecUtils; +import org.apache.jena.sparql.exec.QueryExec; import org.apache.jena.web.AuthSetup; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; /** * Test a server with a password file and no other auth policies. Should become a @@ -65,9 +66,9 @@ public class TestPasswdOnly { // Bounced by Jetty. @Test(expected=QueryExceptionHTTP.class) public void passwd_no_user_A() { - try (RDFConnection conn = RDFConnection.queryConnect("http://localhost:" + port + "/db")) { - try ( QueryExecution qExec = conn.query("ASK{}") ) { - QueryExecUtils.executeQuery(qExec); + try (RDFLink conn = RDFLink.queryConnect("http://localhost:" + port + "/db")) { + try ( QueryExec qExec = conn.query("ASK{}") ) { + qExec.ask(); } } } diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestSecurityFilterFuseki.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestSecurityFilterFuseki.java index 56f1077ddb5..5bb7f2ae4f1 100644 --- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestSecurityFilterFuseki.java +++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/TestSecurityFilterFuseki.java @@ -24,8 +24,14 @@ import java.util.*; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + import org.apache.jena.atlas.iterator.Iter; -import org.apache.jena.atlas.lib.SetUtils; import org.apache.jena.atlas.web.HttpException; import org.apache.jena.fuseki.access.DataAccessCtl; import org.apache.jena.fuseki.access.SecurityContext; @@ -33,27 +39,23 @@ import org.apache.jena.fuseki.access.SecurityRegistry; import org.apache.jena.fuseki.main.FusekiServer; import org.apache.jena.fuseki.main.JettySecurityLib; +import org.apache.jena.graph.Graph; import org.apache.jena.graph.Node; import org.apache.jena.query.QuerySolution; -import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.RDFNode; import org.apache.jena.rdfconnection.RDFConnection; +import org.apache.jena.rdflink.RDFLink; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.apache.jena.sparql.core.Quad; import org.apache.jena.sparql.engine.http.QueryExceptionHTTP; +import org.apache.jena.system.G; import org.apache.jena.tdb1.TDB1Factory; import org.apache.jena.tdb2.DatabaseMgr; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; import org.eclipse.jetty.security.UserStore; import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.util.security.Password; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class TestSecurityFilterFuseki { @@ -234,14 +236,10 @@ private void queryHttp(int statusCode, String user, String password, String quer private Set gsp(String user, String password, String graphName) { Set results = new HashSet<>(); - try (RDFConnection conn = RDFConnection.connectPW(baseUrl, user, password)) { - Model model = (graphName == null) ? conn.fetch() : conn.fetch(graphName); + try (RDFLink conn = RDFLink.connectPW(baseUrl, user, password)) { + Graph graph = (graphName == null) ? conn.get() : conn.get(graphName); // Extract subjects. - Set seen = - SetUtils.toSet( - Iter.asStream(model.listSubjects()) - .map(r->r.asNode()) - ); + Set seen = Iter.toSet(G.iterSubjects(graph)); return seen; } } diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/LibSec.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/LibSec.java index f403cc51c26..ae7e0cc2801 100644 --- a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/LibSec.java +++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/LibSec.java @@ -27,6 +27,8 @@ import org.apache.jena.http.HttpEnv; import org.apache.jena.http.auth.AuthDomain; import org.apache.jena.http.auth.AuthEnv; +import org.apache.jena.rdflink.RDFLink; +import org.apache.jena.rdflink.RDFLinkHTTP; import org.apache.jena.web.AuthSetup; public class LibSec { @@ -45,14 +47,14 @@ public static HttpClient httpClient(AuthSetup authSetup) { return HttpEnv.httpClientBuilder().authenticator(a).build(); } - public static void withAuth(String urlStr, AuthSetup auth, Consumer action) { + public static void withAuth(String urlStr, AuthSetup auth, Consumer action) { // Prefix URI urix = URI.create(urlStr); //String requestTarget = HttpLib.requestTarget(urix); AuthDomain domain = new AuthDomain(urix); try { AuthEnv.get().registerUsernamePassword(urix, auth.user, auth.password); - try ( RDFConnection conn = RDFConnectionRemote.newBuilder().destination(urlStr).build() ) { + try ( RDFLink conn = RDFLinkHTTP.newBuilder().destination(urlStr).build() ) { action.accept(conn); } } finally { diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/LinkDatasetGraphAccess.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/LinkDatasetGraphAccess.java index b27a6bace8f..7f0e897d91f 100644 --- a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/LinkDatasetGraphAccess.java +++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/LinkDatasetGraphAccess.java @@ -34,6 +34,14 @@ */ public interface LinkDatasetGraphAccess extends Transactional, AutoCloseable { + /** Fetch a named graph. + * This is SPARQL Graph Store Protocol HTTP GET or equivalent. + * + * @param graphName URI string for the graph name (null or {@link Quad#defaultGraphIRI} for the default graph) + * @return Graph + */ + public Graph get(String graphName); + /** Fetch a named graph. * This is SPARQL Graph Store Protocol HTTP GET or equivalent. * diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLink.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLink.java index 8a307762859..59554543dd9 100644 --- a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLink.java +++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLink.java @@ -25,6 +25,7 @@ import org.apache.jena.graph.Graph; import org.apache.jena.graph.Node; +import org.apache.jena.graph.NodeFactory; import org.apache.jena.http.HttpEnv; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; @@ -430,6 +431,18 @@ public default void update(String updateString) { @Override public Graph get(); + /** Fetch a named graph. + * This is SPARQL Graph Store Protocol HTTP GET or equivalent. + * + * @param graphName URI string for the graph name (null or {@link Quad#defaultGraphIRI} for the default graph) + * @return Graph + */ + @Override + public default Graph get(String graphName) { + Node gn = NodeFactory.createURI(graphName) ; + return get(gn); + } + /** Fetch a named graph. * This is SPARQL Graph Store Protocol HTTP GET or equivalent. * diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLinkDataset.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLinkDataset.java index e5c0a71b157..c86b107bfb5 100644 --- a/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLinkDataset.java +++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdflink/RDFLinkDataset.java @@ -145,7 +145,7 @@ public Graph get(Node graphName) { @Override public Graph get() { checkOpen(); - return get(null); + return get((Node)null); } @Override