You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by ga...@apache.org on 2020/10/18 10:12:05 UTC
[jena] branch master updated: - CLI option to use TDB2 rather than
TDB.
This is an automated email from the ASF dual-hosted git repository.
galbiston pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/master by this push:
new 7afbd51 - CLI option to use TDB2 rather than TDB.
new 9a5e9ce Merge pull request #813 from galbiston/geosparql_fuseki_tbd2
7afbd51 is described below
commit 7afbd51a1eaac53bfa886c33fb6540a822159fc5
Author: Greg Albiston <46...@users.noreply.github.com>
AuthorDate: Sun Oct 18 11:06:43 2020 +0100
- CLI option to use TDB2 rather than TDB.
---
.../jena/fuseki/geosparql/DatasetOperations.java | 9 +-
.../jena/fuseki/geosparql/cli/ArgsConfig.java | 14 ++-
.../org/apache/jena/fuseki/geosparql/TDB2Test.java | 128 +++++++++++++++++++++
3 files changed, 146 insertions(+), 5 deletions(-)
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java
index 87cec24..a6489e8 100644
--- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java
@@ -40,6 +40,7 @@ import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
import org.apache.jena.tdb.TDBFactory;
+import org.apache.jena.tdb2.TDB2Factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,8 +103,12 @@ public class DatasetOperations {
Dataset dataset;
File tdbFolder = argsConfig.getTdbFile();
if (tdbFolder != null) {
- LOGGER.info("TDB Dataset: {}", tdbFolder);
- dataset = TDBFactory.createDataset(tdbFolder.getAbsolutePath());
+ LOGGER.info("TDB Dataset: {}, TDB2: {}", tdbFolder, argsConfig.isTDB2());
+ if(argsConfig.isTDB2()){
+ dataset = TDB2Factory.connectDataset(tdbFolder.getAbsolutePath());
+ }else{
+ dataset = TDBFactory.createDataset(tdbFolder.getAbsolutePath());
+ }
} else {
LOGGER.info("In-Memory Dataset");
dataset = DatasetFactory.create();
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/cli/ArgsConfig.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/cli/ArgsConfig.java
index 3bdac56..0df87ce 100644
--- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/cli/ArgsConfig.java
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/cli/ArgsConfig.java
@@ -99,8 +99,12 @@ public class ArgsConfig {
@Parameter(names = {"--spatial_index", "-si"}, description = "File to load or store the spatial index. Default to " + SPATIAL_INDEX_FILE + " in TDB folder if using TDB and not set. Otherwise spatial index is not stored.", converter = FileConverter.class, order = 16)
private File spatialIndexFile = null;
- //18) Help
- @Parameter(names = {"--help", "-h"}, description = "Application help. @path/to/file can be used to submit parameters in a file.", help = true, order = 17)
+ //18) TDB2
+ @Parameter(names = {"--tdb2", "-t2"}, description = "Option to use TDB2, rather than TDB, for persistent storage. Default: false", order = 17)
+ private boolean tdb2 = false;
+
+ //19) Help
+ @Parameter(names = {"--help", "-h"}, description = "Application help. @path/to/file can be used to submit parameters in a file.", help = true, order = 18)
private boolean help = false;
public int getPort() {
@@ -187,12 +191,16 @@ public class ArgsConfig {
return spatialIndexFile;
}
+ public boolean isTDB2() {
+ return tdb2;
+ }
+
public boolean isHelp() {
return help;
}
public String getSummary() {
- return "port=" + port + ", datsetName=" + datsetName + ", loopbackOnly=" + loopbackOnly + ", updateAllowed=" + updateAllowed + ", inference=" + inference + ", applyDefaultGeometry=" + applyDefaultGeometry + ", validateGeometryLiteral=" + validateGeometryLiteral + ", convertGeoPredicates=" + convertGeoPredicates + ", removeGeoPredicates=" + removeGeoPredicates + ", queryRewrite=" + queryRewrite + ", tdbFile=" + tdbFile + ", fileGraphFormats=" + fileGraphFormats + ", fileGraphDelim [...]
+ return "port=" + port + ", datsetName=" + datsetName + ", loopbackOnly=" + loopbackOnly + ", updateAllowed=" + updateAllowed + ", inference=" + inference + ", applyDefaultGeometry=" + applyDefaultGeometry + ", validateGeometryLiteral=" + validateGeometryLiteral + ", convertGeoPredicates=" + convertGeoPredicates + ", removeGeoPredicates=" + removeGeoPredicates + ", queryRewrite=" + queryRewrite + ", tdbFile=" + tdbFile + ", fileGraphFormats=" + fileGraphFormats + ", fileGraphDelim [...]
}
@Override
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/test/java/org/apache/jena/fuseki/geosparql/TDB2Test.java b/jena-fuseki2/jena-fuseki-geosparql/src/test/java/org/apache/jena/fuseki/geosparql/TDB2Test.java
new file mode 100644
index 0000000..4b2863b
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/test/java/org/apache/jena/fuseki/geosparql/TDB2Test.java
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.fuseki.geosparql;
+
+import com.beust.jcommander.JCommander;
+import com.github.jsonldjava.shaded.com.google.common.io.Files;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.jena.fuseki.geosparql.cli.ArgsConfig;
+import org.apache.jena.geosparql.spatial.SpatialIndexException;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QuerySolution;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
+import org.junit.After;
+import org.junit.AfterClass;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ *
+ */
+public class TDB2Test {
+
+ private static GeosparqlServer SERVER;
+
+ public TDB2Test() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws DatasetException, SpatialIndexException {
+
+ File tempTDBDir = Files.createTempDir();
+ String[] args = {"-rf", "geosparql_test.rdf>xml", "-i", "-t", tempTDBDir.getAbsolutePath(), "-t2"};
+
+ ArgsConfig argsConfig = new ArgsConfig();
+ JCommander.newBuilder()
+ .addObject(argsConfig)
+ .build()
+ .parse(args);
+
+ //Setup dataset
+ Dataset dataset = DatasetOperations.setup(argsConfig);
+
+ //Configure server
+ SERVER = new GeosparqlServer(argsConfig.getPort(), argsConfig.getDatsetName(), argsConfig.isLoopbackOnly(), dataset, argsConfig.isUpdateAllowed());
+ SERVER.start();
+
+ System.out.println("Server: " + SERVER.getLocalServiceURL());
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ SERVER.shutdown();
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of main method, of class Main.
+ */
+ @Test
+ public void testMain() {
+ System.out.println("main");
+
+ String query = "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+ + "\n"
+ + "SELECT ?obj\n"
+ + "WHERE{\n"
+ + " <http://example.org/Geometry#PolygonH> geo:sfContains ?obj .\n"
+ + "}ORDER by ?obj";
+ List<Resource> result = new ArrayList<>();
+ try (QueryExecution qe = QueryExecutionFactory.sparqlService(SERVER.getLocalServiceURL(), query)) {
+ ResultSet rs = qe.execSelect();
+
+ while (rs.hasNext()) {
+ QuerySolution qs = rs.nextSolution();
+ Resource obj = qs.getResource("obj");
+ result.add(obj);
+ }
+
+ //ResultSetFormatter.outputAsTSV(rs);
+ }
+
+ List<Resource> expResult = new ArrayList<>();
+ expResult.add(ResourceFactory.createResource("http://example.org/Feature#A"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Feature#D"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Feature#H"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Feature#K"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Geometry#LineStringD"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Geometry#PointA"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Geometry#PolygonH"));
+ expResult.add(ResourceFactory.createResource("http://example.org/Geometry#PolygonK"));
+
+ //System.out.println("Exp: " + expResult);
+ //System.out.println("Res: " + result);
+ assertEquals(expResult, result);
+ }
+
+}