blob: 40034cbac2874601510adbd8ee646edd226f5fad [file] [log] [blame]
/*
* 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.riot ;
import org.apache.jena.query.ARQ ;
import org.apache.jena.riot.resultset.ResultSetLang;
import org.apache.jena.sparql.SystemARQ ;
import org.apache.jena.sparql.mgt.SystemInfo ;
import org.apache.jena.sparql.util.Context ;
import org.apache.jena.sparql.util.Symbol ;
import org.apache.jena.sys.JenaSystem ;
public class RIOT {
// Initialization statics must be first in the class to avoid
// problems with recursive initialization.
private static volatile boolean initialized = false ;
private static Object initLock = new Object() ;
/** IRI for RIOT */
public static final String riotIRI = "http://jena.apache.org/#riot" ;
/** The product name */
public static final String NAME = "RIOT" ;
// Unsafe to touch ARQ in class initialization
// See init(). these are set in register()
// public static final String VERSION = NAME+"/"+ARQ.VERSION ;
// public static final String BUILD_DATE = ARQ.BUILD_DATE ;
public static String VERSION ;
public static String BUILD_DATE ;
/** The root package name for RIOT */
public static final String PATH = "org.apache.jena.riot" ;
/** Control of multiline literals */
public static final Symbol multilineLiterals = Symbol.create("riot.multiline_literals") ;
/** The system-wide context */
public static Context getContext() {
return ARQ.getContext();
}
public static void init() {
if ( initialized )
return ;
synchronized (initLock) {
if ( initialized ) {
JenaSystem.logLifecycle("RIOT.init - skip") ;
return ;
}
initialized = true ;
JenaSystem.logLifecycle("RIOT.init - start") ;
// Be careful with what this touches - don't touch ARQ.*
// because that depends on Jena core and we may be
// initializing because IO_Ctl (ie. Jena core)
// called RIOT.init.
RDFLanguages.init() ;
RDFParserRegistry.init() ;
RDFWriterRegistry.init() ;
ResultSetLang.init();
IO_Jena.wireIntoJena() ;
// Don't register JMX info with ARQ as it may not be initialized
// itself and we can get into a circularity.
// This is done in ARQ.init at the proper moment.
JenaSystem.logLifecycle("RIOT.init - finish") ;
}
}
private static boolean registered = false ;
public static void register() {
if ( registered )
return ;
registered = true ;
VERSION = getVersion() ;
BUILD_DATE = getBuildDate() ;
SystemInfo sysInfo2 = new SystemInfo(RIOT.riotIRI, RIOT.PATH, VERSION, BUILD_DATE) ;
SystemARQ.registerSubSystem(sysInfo2) ;
}
public static String getVersion() {
return ARQ.VERSION ;
}
public static String getBuildDate() {
return ARQ.BUILD_DATE ;
}
// ---- Symbols
/**
* Symbol to use to pass (in a Context object) the "@context" to be used when reading jsonld
* (overriding the actual @context in the jsonld)
* Expected value: the value of the "@context",
* as expected by the JSONLD-java API (a Map) */
public static final Symbol JSONLD_CONTEXT = Symbol.create("http://jena.apache.org/riot/jsonld#JSONLD_CONTEXT");
private static String TURTLE_SYMBOL_BASE = "http://jena.apache.org/riot/turtle#";
/**
* Printing style. One of "RDF11" or RDF10". Controls {@literal @prefix} vs PREFIX.
* Values causing SPARQL-style keyword output are "sparql","keyword" and "rdf11".
*/
public static final Symbol symTurtlePrefixStyle = SystemARQ.allocSymbol(TURTLE_SYMBOL_BASE, "prefixStyle");
}