org.apache.jena.tdb.TDBLoader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jena-tdb Show documentation
Show all versions of jena-tdb Show documentation
TDB is a storage subsystem for Jena and ARQ, it is a native triple store providing persistent storage of triples/quads.
/*
* 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.tdb;
import java.io.InputStream ;
import java.util.ArrayList ;
import java.util.List ;
import org.apache.jena.atlas.lib.Timer ;
import org.apache.jena.graph.Node ;
import org.apache.jena.rdf.model.Model ;
import org.apache.jena.tdb.store.DatasetGraphTDB ;
import org.apache.jena.tdb.store.GraphNonTxnTDB ;
import org.apache.jena.tdb.store.bulkloader.BulkLoader ;
import org.slf4j.Logger ;
/** Public interface to the loader functionality.
* The bulk loader is not transactional.
*/
public class TDBLoader
{
/** Load the contents of URL into a dataset. URL must name a quads format file (NQuads or TriG - NTriples is also accepted).
* To a triples format, use {@link #load(GraphNonTxnTDB, String)}
* or {@link #load(DatasetGraphTDB, List, boolean, boolean)}
*/
public static void load(DatasetGraphTDB dataset, String url)
{
load(dataset, url, false) ;
}
/** Load the contents of URL into a dataset. URL must name a quads format file (NQuads or TriG - NTriples is also accepted).
* To a triples format, use {@link #load(GraphNonTxnTDB, String, boolean)}
* or {@link #load(DatasetGraphTDB, List, boolean, boolean)}
*/
public static void load(DatasetGraphTDB dataset, String url, boolean showProgress)
{
load(dataset, asList(url), showProgress, true) ;
}
/** Load the contents of URL into a dataset. URL must name a quads format file (NQuads or TriG - NTriples is also accepted).
* To load a triples format, use {@link #load(GraphNonTxnTDB, List, boolean)}
* or {@link #load(DatasetGraphTDB, List, boolean, boolean)}
*/
public static void load(DatasetGraphTDB dataset, List urls)
{
load(dataset, urls, false, true) ;
}
/** Load the contents of URL into a dataset. URL must name a quads format file (NQuads or TriG - NTriples is also accepted).
* To load a triples format, use {@link #load(GraphNonTxnTDB, List, boolean)}
* or {@link #load(DatasetGraphTDB, List, boolean, boolean)}
*/
public static void load(DatasetGraphTDB dataset, List urls, boolean showProgress, boolean generateStats)
{
TDBLoader loader = new TDBLoader() ;
loader.setShowProgress(showProgress) ;
loader.setGenerateStats(generateStats);
loader.loadDataset(dataset, urls) ;
}
/** Load the contents of URL into a dataset. Input is NQUADS.
* To load a triples format, use {@link #loadGraph}
*/
public static void load(DatasetGraphTDB dataset, InputStream input, boolean showProgress)
{
TDBLoader loader = new TDBLoader() ;
loader.setShowProgress(showProgress) ;
// TODO Lang version
loader.loadDataset(dataset, input) ;
}
/** Load the contents of URL into a graph */
public static void load(GraphNonTxnTDB graph, String url)
{
load(graph, url, false) ;
}
/** Load the contents of URL into a graph */
public static void load(GraphNonTxnTDB graph, String url, boolean showProgress)
{
load(graph, asList(url), showProgress) ;
}
/** Load the contents of URL into a graph */
public static void load(GraphNonTxnTDB graph, List urls)
{
load(graph, urls, false) ;
}
/** Load the contents of URL into a graph */
public static void load(GraphNonTxnTDB graph, List urls, boolean showProgress)
{
TDBLoader loader = new TDBLoader() ;
loader.setShowProgress(showProgress) ;
loader.loadGraph(graph, urls) ;
}
/** Load the contents of URL into a model - may not be as efficient as bulk loading into a TDB graph */
public static void loadModel(Model model, String url)
{
loadModel(model, url, false) ;
}
/** Load the contents of URL into a model - may not be as efficient as bulk loading into a TDB graph */
public static void loadModel(Model model, String url, boolean showProgress)
{
loadAnything(model, url, showProgress) ;
}
/** Load the contents of a list of URLs into a model - may not be as efficient as bulk loading into a TDB graph */
public static void loadModel(Model model, List urls, boolean showProgress)
{
Timer timer = new Timer() ;
timer.startTimer() ;
for ( String s : urls )
{
if ( showProgress )
System.out.printf("Load: %s\n", s) ;
loadModel(model, s, showProgress) ;
}
long time = timer.endTimer() ;
if ( showProgress )
System.out.printf("Time for load: %.2fs\n", time/1000.0) ;
model.close();
}
// ---- The class itself.
private boolean showProgress = true ;
private boolean generateStats = true ;
private Logger loaderLog = TDB.logLoader ;
private boolean checking ;
// XXX Context control block
// Checker
// Error handler
// verbose flag?
// logger
// generateStats
// checking flag
// ---- The class itself.
public TDBLoader() {}
/** Load a graph from a URL - assumes URL names a triples format document*/
public void loadGraph(GraphNonTxnTDB graph, String url)
{
loadGraph(graph, asList(url)) ;
}
/** Load a graph from a list of URL - assumes the URLs name triples format documents */
public void loadGraph(GraphNonTxnTDB graph, List urls)
{
loadGraph$(graph, urls, showProgress, generateStats) ;
}
/** Load a graph from a list of URL - assumes the URLs name triples format documents */
public void loadGraph(GraphNonTxnTDB graph, InputStream in)
{
loadGraph$(graph, in, showProgress, generateStats) ;
}
/** Load a dataset from a URL - assumes URL names a quads format */
public void loadDataset(DatasetGraphTDB dataset, String url)
{
loadDataset(dataset, asList(url)) ;
}
/** Load a dataset from a list of URL - assumes the URLs name quads format documents */
public void loadDataset(DatasetGraphTDB dataset, List urls)
{
// Triples languages are quads languages so no test for quad-ness needed.
loadDataset$(dataset, urls, showProgress, generateStats) ;
}
/** Load a dataset from an input steram which must be in N-Quads form */
public void loadDataset(DatasetGraphTDB dataset, InputStream input)
{
// Triples languages are quads languages so no test for quad-ness needed.
loadDataset$(dataset, input, showProgress, generateStats) ;
}
public boolean getChecking()
{ return checking ; }
public void setChecking(boolean checking)
{ this.checking = checking ; }
public boolean getShowProgress()
{ return showProgress ; }
public final void setShowProgress(boolean showProgress)
{ this.showProgress = showProgress ; }
public final boolean getGenerateStats()
{ return generateStats ; }
public final void setGenerateStats(boolean generateStats)
{ this.generateStats = generateStats ; }
// public final Logger getLogger()
// { return this.loaderLog ; }
//
// public final void setLogger(Logger log)
// { this.loaderLog = log ; }
private static void loadGraph$(GraphNonTxnTDB graph, List urls, boolean showProgress, boolean collectStats) {
if ( graph.getGraphName() == null )
loadDefaultGraph$(graph.getDatasetGraphTDB(), urls, showProgress, collectStats) ;
else
loadNamedGraph$(graph.getDatasetGraphTDB(), graph.getGraphName(), urls, showProgress, collectStats) ;
}
// These are the basic operations for TDBLoader.
private static void loadGraph$(GraphNonTxnTDB graph, InputStream input, boolean showProgress, boolean collectStats) {
if ( graph.getGraphName() == null )
loadDefaultGraph$(graph.getDatasetGraphTDB(), input, showProgress, collectStats) ;
else
loadNamedGraph$(graph.getDatasetGraphTDB(), graph.getGraphName(), input, showProgress, collectStats) ;
}
private static void loadDefaultGraph$(DatasetGraphTDB dataset, List urls, boolean showProgress, boolean collectStats) {
BulkLoader.loadDefaultGraph(dataset, urls, showProgress, collectStats) ;
}
private static void loadDefaultGraph$(DatasetGraphTDB dataset, InputStream input, boolean showProgress, boolean collectStats) {
BulkLoader.loadDefaultGraph(dataset, input, showProgress, collectStats) ;
}
private static void loadNamedGraph$(DatasetGraphTDB dataset, Node graphName, List urls, boolean showProgress, boolean collectStats) {
BulkLoader.loadNamedGraph(dataset, graphName, urls, showProgress, collectStats) ;
}
private static void loadNamedGraph$(DatasetGraphTDB dataset, Node graphName, InputStream input, boolean showProgress, boolean collectStats) {
BulkLoader.loadNamedGraph(dataset, graphName, input, showProgress, collectStats) ;
}
private static void loadDataset$(DatasetGraphTDB dataset, List urls, boolean showProgress, boolean collectStats) {
BulkLoader.loadDataset(dataset, urls, showProgress, collectStats) ;
}
private static void loadDataset$(DatasetGraphTDB dataset, InputStream input, boolean showProgress, boolean collectStats) {
BulkLoader.loadDataset(dataset, input, showProgress, collectStats) ;
}
/** Load any model, not necessarily efficiently. */
private static void loadAnything(Model model, String url, boolean showProgress) {
model.read(url) ;
}
private static List asList(String string)
{
List list = new ArrayList<>() ;
list.add(string) ;
return list ;
}
}