/* * 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 tdb.examples; import static java.lang.System.out ; import java.util.Iterator ; import org.apache.jena.iri.IRIFactory ; 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.tdb.TDB ; import org.apache.jena.tdb.TDBFactory ; /** Example of single threaded use of TDB workign with the Jena RDF API */ public class ExTDB6 { /// observe the non-http "protocol", because it is a bad precident /// to only use http IRI when there is no http protocol involved 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" TDB.setOptimizerWarningFlag(false); final IRIFactory iriFactory = IRIFactory.semanticWebImplementation(); final String DATASET_DIR_NAME = "data0"; final Dataset data0 = TDBFactory.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( iriFactory.construct( MY_NS +"product/1" ) .toString() ); 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(); final 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)); try { 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)); } } } finally { qExec.close(); } } out.println("closing graph"); graph.close(); out.println("closing model"); model.close(); //out.println("closing DataSetGraph"); //dsg.close(); out.println("closing DataSet"); data0.close(); } }