This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit d89481d42e3c183201355ea5c7618aba31acd401 Author: Andy Seaborne <[email protected]> AuthorDate: Fri May 23 08:40:20 2025 +0100 Convert examples from TDB1 to TDB2 --- .../src/main/java/tdb1/examples/ExTDB6.java | 127 -------------------- .../java/{tdb1 => tdb2}/examples/ExQuadFilter.java | 42 +++---- .../main/java/{tdb1 => tdb2}/examples/ExTDB1.java | 18 +-- .../main/java/{tdb1 => tdb2}/examples/ExTDB2.java | 14 +-- .../main/java/{tdb1 => tdb2}/examples/ExTDB3.java | 6 +- .../main/java/{tdb1 => tdb2}/examples/ExTDB4.java | 22 ++-- .../main/java/{tdb1 => tdb2}/examples/ExTDB5.java | 31 ++--- .../src/main/java/tdb2/examples/ExTDB6.java | 132 +++++++++++++++++++++ .../java/{tdb1 => tdb2}/examples/ExTDB_Txn1.java | 14 +-- .../java/{tdb1 => tdb2}/examples/ExTDB_Txn2.java | 8 +- .../java/{tdb1 => tdb2}/examples/ExTDB_Txn3.java | 14 +-- 11 files changed, 211 insertions(+), 217 deletions(-) diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB6.java b/jena-examples/src/main/java/tdb1/examples/ExTDB6.java deleted file mode 100644 index d715c3a1b7..0000000000 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB6.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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 tdb1.examples; - -import static java.lang.System.out ; - -import java.util.Iterator ; - -import org.apache.jena.graph.Graph ; -import org.apache.jena.query.* ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.Property ; -import org.apache.jena.rdf.model.Resource ; -import org.apache.jena.rdf.model.Statement ; -import org.apache.jena.tdb1.TDB1; -import org.apache.jena.tdb1.TDB1Factory; - -/** Example of single threaded use of TDB working with the Jena RDF API */ -public class ExTDB6 -{ - public static final String MY_NS = - "x-ns://example.org/ns1/"; - - public static void main(String[] args) throws Exception { - /// turn off the "No BGP optimizer warning" - TDB1.setOptimizerWarningFlag(false); - - final String DATASET_DIR_NAME = "data0"; - final Dataset data0 = TDB1Factory.createDataset( DATASET_DIR_NAME ); - - // show the currently registered names - for (Iterator<String> it = data0.listNames(); it.hasNext(); ) { - out.println("NAME="+it.next()); - } - - out.println("getting named model..."); - /// this is the OWL portion - final Model model = data0.getNamedModel( MY_NS ); - out.println("Model := "+model); - - out.println("getting graph..."); - /// this is the DATA in that MODEL - final Graph graph = model.getGraph(); - out.println("Graph := "+graph); - - if (graph.isEmpty()) { - final Resource product1 = model.createResource( MY_NS +"product/1"); - final Property hasName = model.createProperty( MY_NS, "#hasName"); - final Statement stmt = model.createStatement( - product1, hasName, model.createLiteral("Beach Ball","en") ); - out.println("Statement = " + stmt); - - model.add(stmt); - - // just for fun - out.println("Triple := " + stmt.asTriple().toString()); - } else { - out.println("Graph is not Empty; it has "+graph.size()+" Statements"); - long t0, t1; - t0 = System.currentTimeMillis(); - final Query q = QueryFactory.create( - "PREFIX exns: <"+MY_NS+"#>\n"+ - "PREFIX exprod: <"+MY_NS+"product/>\n"+ - " SELECT * " - // if you don't provide the Model to the - // QueryExecutionFactory below, then you'll need - // to specify the FROM; - // you *can* always specify it, if you want - // +" FROM <"+MY_NS+">\n" - // +" WHERE { ?node <"+MY_NS+"#hasName> ?name }" - // +" WHERE { ?node exns:hasName ?name }" - // +" WHERE { exprod:1 exns:hasName ?name }" - +" WHERE { ?res ?pred ?obj }" - ); - out.println("Query := "+q); - t1 = System.currentTimeMillis(); - out.println("QueryFactory.TIME="+(t1 - t0)); - - t0 = System.currentTimeMillis(); - try ( QueryExecution qExec = QueryExecutionFactory - // if you query the whole DataSet, - // you have to provide a FROM in the SparQL - //.create(q, data0); - .create(q, model) ) { - t1 = System.currentTimeMillis(); - out.println("QueryExecutionFactory.TIME="+(t1 - t0)); - - t0 = System.currentTimeMillis(); - ResultSet rs = qExec.execSelect(); - t1 = System.currentTimeMillis(); - out.println("executeSelect.TIME="+(t1 - t0)); - while (rs.hasNext()) { - QuerySolution sol = rs.next(); - out.println("Solution := "+sol); - for (Iterator<String> names = sol.varNames(); names.hasNext(); ) { - final String name = names.next(); - out.println("\t"+name+" := "+sol.get(name)); - } - } - } - } - out.println("closing graph"); - graph.close(); - out.println("closing model"); - model.close(); - //out.println("closing DataSetGraph"); - //dsg.close(); - out.println("closing DataSet"); - data0.close(); - } -} diff --git a/jena-examples/src/main/java/tdb1/examples/ExQuadFilter.java b/jena-examples/src/main/java/tdb2/examples/ExQuadFilter.java similarity index 88% rename from jena-examples/src/main/java/tdb1/examples/ExQuadFilter.java rename to jena-examples/src/main/java/tdb2/examples/ExQuadFilter.java index 2fbd635896..eacb813adc 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExQuadFilter.java +++ b/jena-examples/src/main/java/tdb2/examples/ExQuadFilter.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import java.util.function.Predicate; @@ -26,16 +26,16 @@ import org.apache.jena.query.* ; import org.apache.jena.sparql.core.DatasetGraph ; import org.apache.jena.sparql.core.Quad ; import org.apache.jena.sparql.sse.SSE ; -import org.apache.jena.tdb1.TDB1; -import org.apache.jena.tdb1.TDB1Factory; -import org.apache.jena.tdb1.store.NodeId; -import org.apache.jena.tdb1.sys.SystemTDB; -import org.apache.jena.tdb1.sys.TDBInternal; +import org.apache.jena.tdb2.TDB2; +import org.apache.jena.tdb2.TDB2Factory; +import org.apache.jena.tdb2.store.NodeId; +import org.apache.jena.tdb2.sys.SystemTDB; +import org.apache.jena.tdb2.sys.TDBInternal; /** Example of how to filter quads as they are accessed at the lowest level. - * Can be used to exclude data from specific graphs. + * Can be used to exclude data from specific graphs. * This mechanism is not limited to graphs - it works for properties or anything - * where the visibility of otherwise is determined by the elements of the quad. + * where the visibility of otherwise is determined by the elements of the quad. * See <a href="http://jena.apache.org/documentation/tdb/quadfilter.html">QuadFiltering</a> * for further details. */ @@ -47,17 +47,17 @@ public class ExQuadFilter public static void main(String ... args) { // This also works for default union graph .... - TDB1.getContext().setTrue(TDB1.symUnionDefaultGraph) ; - + TDB2.getContext().setTrue(TDB2.symUnionDefaultGraph) ; + Dataset ds = setup() ; Predicate<Tuple<NodeId>> filter = createFilter(ds) ; example(ds, filter) ; } - + /** Example setup - in-memory dataset with two graphs, one triple in each */ private static Dataset setup() { - Dataset ds = TDB1Factory.createDataset() ; + Dataset ds = TDB2Factory.createDataset() ; DatasetGraph dsg = ds.asDatasetGraph() ; Quad q1 = SSE.parseQuad("(<http://example/g1> <http://example/s> <http://example/p> <http://example/o1>)") ; Quad q2 = SSE.parseQuad("(<http://example/g2> <http://example/s> <http://example/p> <http://example/o2>)") ; @@ -65,16 +65,16 @@ public class ExQuadFilter dsg.add(q2) ; return ds ; } - + /** Create a filter to exclude the graph http://example/g2 */ private static Predicate<Tuple<NodeId>> createFilter(Dataset ds) { - // Filtering operates at a very low level: - // Need to know the internal identifier for the graph name. + // Filtering operates at a very low level: + // Need to know the internal identifier for the graph name. final NodeId target = TDBInternal.getNodeId(ds, NodeFactory.createURI(graphToHide)) ; System.out.println("Hide graph: "+graphToHide+" --> "+target) ; - + // Filter for accept/reject as quad as being visible. // Return true for "accept", false for "reject" Predicate<Tuple<NodeId>> filter = item -> @@ -90,10 +90,10 @@ public class ExQuadFilter //System.out.println("Accept: "+item) ; return true ; } ; - + return filter ; - } - + } + private static void example(Dataset ds, Predicate<Tuple<NodeId>> filter) { String[] x = { @@ -102,13 +102,13 @@ public class ExQuadFilter // This filter does not hide the graph itself, just the quads associated with the graph. "SELECT * { GRAPH ?g {} }" } ; - + for ( String qs : x ) { example(ds, qs, filter) ; example(ds, qs, null) ; } - + } private static void example(Dataset ds, String qs, Predicate<Tuple<NodeId>> filter) diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB1.java b/jena-examples/src/main/java/tdb2/examples/ExTDB1.java similarity index 89% rename from jena-examples/src/main/java/tdb1/examples/ExTDB1.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB1.java index aee4e7e63f..169a1ce3b1 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB1.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB1.java @@ -16,19 +16,19 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.query.Dataset ; import org.apache.jena.rdf.model.Model; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.tdb2.TDB2Factory; /** Example of creating a TDB-backed model. * The preferred way is to create a dataset then get the mode required from the dataset. * The dataset can be used for SPARQL query and update * but the Model (or Graph) can also be used. - * + * * All the Jena APIs work on the model. - * + * * Calling TDBFactory is the only place TDB-specific code is needed. */ @@ -38,13 +38,13 @@ public class ExTDB1 { // Direct way: Make a TDB-back Jena model in the named directory. String directory = "MyDatabases/DB1" ; - Dataset ds = TDB1Factory.createDataset(directory) ; + Dataset ds = TDB2Factory.connectDataset(directory) ; Model model = ds.getDefaultModel() ; - - // ... do work ... - + + // ... do work ... transactions required ... + // Close the dataset. ds.close(); - + } } diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB2.java b/jena-examples/src/main/java/tdb2/examples/ExTDB2.java similarity index 86% rename from jena-examples/src/main/java/tdb1/examples/ExTDB2.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB2.java index 52a6b8e48e..84c4ae98d6 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB2.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB2.java @@ -16,16 +16,16 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.query.Dataset ; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.tdb2.TDB2Factory; /** * Using an assembler description (see wiki for details of the assembler format for TDB) * This way, you can change the model being used without changing the code. * The assembler file is a configuration file. - * The same assembler description will work as part of a Joseki configuration file. + * The same assembler description will work as part of a Joseki configuration file. */ public class ExTDB2 @@ -34,10 +34,10 @@ public class ExTDB2 { String assemblerFile = "Store/tdb-assembler.ttl" ; - Dataset ds = TDB1Factory.assembleDataset(assemblerFile) ; - - // ... do work ... - + Dataset ds = TDB2Factory.assembleDataset(assemblerFile) ; + + // ... do work ... transactions required ... + ds.close() ; } } diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB3.java b/jena-examples/src/main/java/tdb2/examples/ExTDB3.java similarity index 94% rename from jena-examples/src/main/java/tdb1/examples/ExTDB3.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB3.java index c1e6f536cd..582a2ca549 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB3.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB3.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.assembler.Assembler ; import org.apache.jena.query.Dataset ; @@ -27,7 +27,7 @@ import org.apache.jena.shared.JenaException ; import org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab ; import org.apache.jena.sparql.util.TypeNotUniqueException ; import org.apache.jena.sparql.util.graph.GraphUtils ; -import org.apache.jena.tdb1.assembler.VocabTDB1; +import org.apache.jena.tdb2.assembler.VocabTDB2; /** * Examples of finding an assembler for a TDB model in a larger collection @@ -53,7 +53,7 @@ public class ExTDB3 // Alternatively, look for the a single resource of the right type. try { // Find the required description - the file can contain descriptions of many different types. - root = GraphUtils.findRootByType(spec, VocabTDB1.tDatasetTDB) ; + root = GraphUtils.findRootByType(spec, VocabTDB2.tDatasetTDB) ; if ( root == null ) throw new JenaException("Failed to find a suitable root") ; } catch (TypeNotUniqueException ex) diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB4.java b/jena-examples/src/main/java/tdb2/examples/ExTDB4.java similarity index 79% rename from jena-examples/src/main/java/tdb1/examples/ExTDB4.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB4.java index 4371105451..e01a9b8983 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB4.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB4.java @@ -16,24 +16,18 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; -import org.apache.jena.query.Dataset ; -import org.apache.jena.query.Query ; -import org.apache.jena.query.QueryExecution ; -import org.apache.jena.query.QueryExecutionFactory ; -import org.apache.jena.query.QueryFactory ; -import org.apache.jena.query.ResultSet ; -import org.apache.jena.query.ResultSetFormatter ; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.query.*; +import org.apache.jena.tdb2.TDB2Factory; /** Example of creating a TDB-backed model. * The preferred way is to create a dataset then get the mode required from the dataset. * The dataset can be used for SPARQL query and update * but the Model (or Graph) can also be used. - * + * * All the Jena APIs work on the model. - * + * * Calling TDBFactory is the only place TDB-specific code is needed. */ @@ -43,12 +37,12 @@ public class ExTDB4 { // Direct way: Make a TDB-back Jena model in the named directory. String directory = "MyDatabases/DB1" ; - Dataset dataset = TDB1Factory.createDataset(directory) ; - + Dataset dataset = TDB2Factory.connectDataset(directory) ; + // Potentially expensive query. String sparqlQueryString = "SELECT (count(*) AS ?count) { ?s ?p ?o }" ; // See http://incubator.apache.org/jena/documentation/query/app_api.html - + Query query = QueryFactory.create(sparqlQueryString) ; try ( QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ) { ResultSet results = qexec.execSelect() ; diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB5.java b/jena-examples/src/main/java/tdb2/examples/ExTDB5.java similarity index 64% rename from jena-examples/src/main/java/tdb1/examples/ExTDB5.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB5.java index 4b94fa7cbc..9daf3c28b7 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB5.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB5.java @@ -16,16 +16,10 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; -import org.apache.jena.query.Dataset; -import org.apache.jena.query.Query; -import org.apache.jena.query.QueryExecution; -import org.apache.jena.query.QueryExecutionFactory; -import org.apache.jena.query.QueryFactory; -import org.apache.jena.query.QuerySolution; -import org.apache.jena.query.ResultSet; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.query.*; +import org.apache.jena.tdb2.TDB2Factory; /** * Example of creating a TDB-backed model. The preferred way is to create a dataset @@ -39,20 +33,21 @@ public class ExTDB5 { public static void main(String...argv) { // Direct way: Make a TDB-back Jena model in the named directory. String directory = "MyDatabases/DB1"; - Dataset dataset = TDB1Factory.createDataset(directory); + Dataset dataset = TDB2Factory.connectDataset(directory); // Potentially expensive query. String sparqlQueryString = "SELECT (count(*) AS ?count) { ?s ?p ?o }"; - // See http://incubator.apache.org/jena/documentation/query/app_api.html Query query = QueryFactory.create(sparqlQueryString); - try (QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) { - ResultSet results = qexec.execSelect(); - for ( ; results.hasNext() ; ) { - QuerySolution soln = results.nextSolution(); - int count = soln.getLiteral("count").getInt(); - System.out.println("count = " + count); + dataset.executeRead(()->{ + try (QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) { + ResultSet results = qexec.execSelect(); + for ( ; results.hasNext() ; ) { + QuerySolution soln = results.nextSolution(); + int count = soln.getLiteral("count").getInt(); + System.out.println("count = " + count); + } } - } + }); } } diff --git a/jena-examples/src/main/java/tdb2/examples/ExTDB6.java b/jena-examples/src/main/java/tdb2/examples/ExTDB6.java new file mode 100644 index 0000000000..6fda2f5642 --- /dev/null +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB6.java @@ -0,0 +1,132 @@ +/* + * 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 tdb2.examples; + +import static java.lang.System.out ; + +import java.util.Iterator ; + +import org.apache.jena.graph.Graph ; +import org.apache.jena.query.* ; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.rdf.model.Property ; +import org.apache.jena.rdf.model.Resource ; +import org.apache.jena.rdf.model.Statement ; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFWriter; +import org.apache.jena.tdb2.TDB2Factory; + +/** Example of single threaded use of TDB working with the Jena RDF API */ +public class ExTDB6 +{ + public static String MY_NS = + "x-ns://example.org/ns1/"; + + public static void main(String[] args) throws Exception { + + // From an exisiing database... +// String DATASET_DIR_NAME = "data0"; +// Dataset dataset = TDB2Factory.connectDataset( DATASET_DIR_NAME ); + + Dataset dataset = TDB2Factory.createDataset( ); + + // show the currently registered names + dataset.executeRead(()->{ + for (Iterator<String> it = dataset.listNames(); it.hasNext(); ) { + out.println("NAME="+it.next()); + } + }); + + out.println("getting named model..."); + /// this is the OWL portion + Model model = dataset.getNamedModel( MY_NS ); + dataset.executeRead(()-> { + out.println("Model: "+model.size()+" statements"); + RDFWriter.source(model).lang(Lang.TTL).output(System.out); + }); + out.println("getting graph..."); + /// this is the DATA in that MODEL + Graph graph = model.getGraph(); + dataset.executeRead(()-> { + out.println("Graph: "+model.size()+" triples"); + RDFWriter.source(graph).lang(Lang.TTL).output(System.out); + }); + + dataset.executeWrite(()->{ + if (graph.isEmpty()) { + Resource product1 = model.createResource( MY_NS +"product/1"); + Property hasName = model.createProperty( MY_NS, "#hasName"); + Statement stmt = model.createStatement( + product1, hasName, model.createLiteral("Beach Ball","en") ); + out.println("Statement = " + stmt); + + model.add(stmt); + + // just for fun + out.println("Triple := " + stmt.asTriple().toString()); + } else { + out.println("Graph is not Empty; it has "+graph.size()+" Statements"); + long t0, t1; + t0 = System.currentTimeMillis(); + Query q = QueryFactory.create(""" + PREFIX exns: <"+MY_NS+"#> + PREFIX exprod: <"+MY_NS+"product/> + SELECT * + // if you don't provide the Model to the + // QueryExecutionFactory below, then you'll need + // to specify the FROM; + // you *can* always specify it, if you want + // FROM <"+MY_NS+"> + + // WHERE { ?node <"+MY_NS+"#hasName> ?name } + // WHERE { ?node exns:hasName ?name } + // WHERE { exprod:1 exns:hasName ?name } + WHERE { ?res ?pred ?obj } + """ + ); + out.println("Query := "+q); + t1 = System.currentTimeMillis(); + out.println("QueryFactory.TIME="+(t1 - t0)); + + t0 = System.currentTimeMillis(); + try ( QueryExecution qExec = QueryExecutionFactory + // if you query the whole DataSet, + // you have to provide a FROM in the SparQL + //.create(q, data0); + .create(q, model) ) { + t1 = System.currentTimeMillis(); + out.println("QueryExecutionFactory.TIME="+(t1 - t0)); + + t0 = System.currentTimeMillis(); + ResultSet rs = qExec.execSelect(); + t1 = System.currentTimeMillis(); + out.println("executeSelect.TIME="+(t1 - t0)); + while (rs.hasNext()) { + QuerySolution sol = rs.next(); + out.println("Solution := "+sol); + for (Iterator<String> names = sol.varNames(); names.hasNext(); ) { + String name = names.next(); + out.println("\t"+name+" := "+sol.get(name)); + } + } + } + } + }); + } +} \ No newline at end of file diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn1.java b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn1.java similarity index 93% rename from jena-examples/src/main/java/tdb1/examples/ExTDB_Txn1.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB_Txn1.java index 6b1d88b4d2..3c9b0011de 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn1.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn1.java @@ -16,11 +16,11 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.query.*; import org.apache.jena.system.Txn; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.tdb2.TDB2Factory; /** * Example of a READ transaction. @@ -31,12 +31,12 @@ public class ExTDB_Txn1 public static void main(String... argv) { String directory = "MyDatabases/DB1"; - Dataset dataset = TDB1Factory.createDataset(directory); + Dataset dataset = TDB2Factory.connectDataset(directory); - // Start READ transaction. + // Start READ transaction. // No updates or changes to the dataset are possible while this // dataset is used for a read transaction. - // An application can have other Datasets, in the same JVM, + // An application can have other Datasets, in the same JVM, // tied to the same TDB database performing read or write // transactions concurrently. @@ -46,7 +46,7 @@ public class ExTDB_Txn1 // ... // ... The app can also call dataset.abort() or dataset.commit() here; commit is not necessary // } finally { dataset.end();} - + // Use Txn.executeRead when the app knows there are no updates. // Can use Txn.execute when a write is possible. Txn.executeRead(dataset, ()-> { @@ -58,7 +58,7 @@ public class ExTDB_Txn1 execQuery(sparqlQueryString2, dataset); }); } - + public static void execQuery(String sparqlQueryString, Dataset dataset) { Query query = QueryFactory.create(sparqlQueryString); diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn2.java b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn2.java similarity index 95% rename from jena-examples/src/main/java/tdb1/examples/ExTDB_Txn2.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB_Txn2.java index 79462724b8..8748efddb5 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn2.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn2.java @@ -16,15 +16,15 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.atlas.lib.StrUtils; import org.apache.jena.query.Dataset; import org.apache.jena.system.Txn; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.tdb2.TDB2Factory; +import org.apache.jena.update.UpdateExecution; import org.apache.jena.update.UpdateExecutionFactory; import org.apache.jena.update.UpdateFactory; -import org.apache.jena.update.UpdateExecution; import org.apache.jena.update.UpdateRequest; /** @@ -34,7 +34,7 @@ import org.apache.jena.update.UpdateRequest; public class ExTDB_Txn2 { public static void main(String...argv) { String directory = "MyDatabases/DB1"; - Dataset dataset = TDB1Factory.createDataset(directory); + Dataset dataset = TDB2Factory.connectDataset(directory); // Start WRITE transaction. // It's possible to read from the dataset inside the write transaction. diff --git a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn3.java b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn3.java similarity index 90% rename from jena-examples/src/main/java/tdb1/examples/ExTDB_Txn3.java rename to jena-examples/src/main/java/tdb2/examples/ExTDB_Txn3.java index c0de9cd6ba..47a45fb301 100644 --- a/jena-examples/src/main/java/tdb1/examples/ExTDB_Txn3.java +++ b/jena-examples/src/main/java/tdb2/examples/ExTDB_Txn3.java @@ -16,38 +16,38 @@ * limitations under the License. */ -package tdb1.examples; +package tdb2.examples; import org.apache.jena.query.*; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.system.Txn; -import org.apache.jena.tdb1.TDB1Factory; +import org.apache.jena.tdb2.DatabaseMgr; /** Illustration of working at the DatasetGraph level. * Normally, applications work with {@link Dataset}. * Occasionally, it's more convenient to work with the - * TDB-implemented DatasetGraph interface. + * TDB-implemented DatasetGraph interface. */ public class ExTDB_Txn3 { public static void main(String... argv) { - DatasetGraph dsg = TDB1Factory.createDatasetGraph(); + DatasetGraph dsg = DatabaseMgr.createDatasetGraph(); - // Start a transaction. It starts in "read" mode and promotes to "write" mode if necessary. + // Start a transaction. It starts in "read" mode and promotes to "write" mode if necessary. Txn.execute(dsg, ()->{ // Do some queries String sparqlQueryString1 = "SELECT (count(*) AS ?count) { ?s ?p ?o }"; execQuery(sparqlQueryString1, dsg); }); } - + public static void execQuery(String sparqlQueryString, DatasetGraph dsg) { // Add a dataset wrapper to conform with the query interface. // This should not be very expensive. Dataset dataset = DatasetFactory.wrap(dsg); - + Query query = QueryFactory.create(sparqlQueryString); try ( QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ) { ResultSet results = qexec.execSelect();
