All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jena.fuseki.Fuseki Maven / Gradle / Ivy

/*
 * 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;

import org.apache.jena.fuseki.server.SPARQLServer ;
import org.apache.jena.query.ARQ ;
import org.apache.jena.riot.system.stream.LocatorFTP ;
import org.apache.jena.riot.system.stream.LocatorHTTP ;
import org.apache.jena.riot.system.stream.StreamManager ;
import org.apache.jena.sparql.SystemARQ ;
import org.apache.jena.sparql.lib.Metadata ;
import org.apache.jena.sparql.mgt.SystemInfo ;
import org.apache.jena.sparql.util.Context ;
import org.apache.jena.sparql.util.MappingRegistry ;
import org.apache.jena.system.JenaSystem ;
import org.apache.jena.tdb.TDB ;
import org.apache.jena.tdb.transaction.TransactionManager ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;

/**
 * 

The main class enabling us to:

*
    *
  1. create instances of a Fuseki server e.g. * the ARQ, RIOT and TDB server stack
  2. *
  3. get server global {@link org.apache.jena.sparql.util.Context} e.g. * named values used to pass implementation-specific parameters across * general interfaces.
  4. *
  5. get the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.
  6. *
  7. set the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.
  8. * */ public class Fuseki { /** Path to ???*/ static public String PATH = "org.apache.jena.fuseki" ; /** a unique IRI for the Fuseki namespace*/ static public String FusekiIRI = "http://jena.apache.org/Fuseki" ; /** Fuseki home environment, usually set to $FUSEKI_HOME */ static public String FusekiHomeEnv = "FUSEKI_HOME" ; /** a unique IRI including the symbol notation for which properties should be appended */ static public String FusekiSymbolIRI = "http://jena.apache.org/fuseki#" ; /** ??? */ static public String PagesStatic = "pages" ; /** * TEMPORARY - this enables POST of triples to the dataset URI causing a graph to be created. * POSTing to /dataset?graph=uri is preferred */ static public boolean graphStoreProtocolPostCreate = false ; /** an relative path to the location of fuseki-properties.xml file */ static private String metadataLocation = "org/apache/jena/fuseki/fuseki-properties.xml" ; /** Object which holds metadata specified within {@link Fuseki#metadataLocation} */ static private Metadata metadata = initMetadata() ; private static Metadata initMetadata() { Metadata m = new Metadata() ; //m.addMetadata(metadataDevLocation) ; m.addMetadata(metadataLocation) ; return m ; } /** The name of the Fuseki server. Set to the string Fuseki by default.*/ static public final String NAME = "Fuseki" ; /** Version of this Fuseki instance */ static public final String VERSION = metadata.get(PATH+".version", "development"); /** Date when Fuseki was built */ static public final String BUILD_DATE = metadata.get(PATH+".build.datetime", "unknown") ; // call Date if unavailable. /** An identifier for the HTTP Fuseki server instance*/ static public final String serverHttpName = NAME+" ("+VERSION+")" ; /** Actual log file for operations */ public static final String requestLogName = PATH+".Fuseki" ; /** Instance of log for operations */ public static final Logger requestLog = LoggerFactory.getLogger(requestLogName) ; /** Actual log file for general server messages.*/ public static final String serverLogName = PATH+".Server" ; /** Instance of log for general server messages */ public static final Logger serverLog = LoggerFactory.getLogger(serverLogName) ; /** Actual log file for config server messages. */ public static final String configLogName = PATH+".Config" ; /** Instance of log for config server message s*/ public static final Logger configLog = LoggerFactory.getLogger(configLogName) ; /** Instance of log for config server message s*/ public static boolean verboseLogging = false ; /** An instance of management for stream opening, including redirecting through a * location mapper whereby a name (e.g. URL) is redirected to another name (e.g. local file). * */ public static final StreamManager webStreamManager ; static { webStreamManager = new StreamManager() ; // Only know how to handle http and ftp URLs - nothing local. webStreamManager.addLocator(new LocatorHTTP()) ; webStreamManager.addLocator(new LocatorFTP()) ; } private static boolean initialized = false ; /** * Initialize an instance of the Fuseki server stack. */ public synchronized static void init() { if ( initialized ) return ; initialized = true ; JenaSystem.init(); SystemInfo sysInfo = new SystemInfo(FusekiIRI, PATH, VERSION, BUILD_DATE) ; SystemARQ.registerSubSystem(sysInfo) ; MappingRegistry.addPrefixMapping("fuseki", FusekiSymbolIRI) ; TDB.setOptimizerWarningFlag(false) ; // Don't set TDB batch commits. // This can be slower, but it less memory hungry and more predictable. TransactionManager.QueueBatchSize = 0 ; } /** * Get server global {@link org.apache.jena.sparql.util.Context}. * @return {@link org.apache.jena.query.ARQ#getContext()} */ public static Context getContext() { return ARQ.getContext() ; } // Temporary ... private static SPARQLServer server ; /** set/specify the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.*/ public static void setServer(SPARQLServer _server) { server = _server ; } /** get the {@link org.apache.jena.fuseki.server.SPARQLServer} instance. */ public static SPARQLServer getServer() { return server ; } // Force a call to init. static { init() ; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy