blob: ffda9a5529e2a0f2a0722122fe56bcbadda2e7b4 [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.query;
import org.apache.jena.sparql.util.Symbol ;
import org.apache.jena.sparql.util.TranslationTable ;
/** Symbols for query language syntaxes */
public class Syntax extends Symbol
{
/** The syntax that the DAWG working group defined */
public static final Syntax syntaxSPARQL_10
= new Syntax("http://jena.hpl.hp.com/2003/07/query/SPARQL_10") ;
/** The syntax that the SPARQL working group has defined */
public static final Syntax syntaxSPARQL_11
= new Syntax("http://jena.hpl.hp.com/2003/07/query/SPARQL_11") ;
// /** The update syntax that the SPARQL working group has defined */
// private static final Syntax syntaxSPARQL_11_Update
// = syntaxSPARQL_11 ;
// //= new Syntax("http://jena.hpl.hp.com/2003/07/update/SPARQL_11") ;
/** The query syntax for extended SPARQL */
public static final Syntax syntaxARQ
= new Syntax("http://jena.hpl.hp.com/2003/07/query/ARQ") ;
// /** The update syntax for SPARQL Update, with extensions to help migrate the update language in the W3C submission */
// private static final Syntax syntaxARQ_Update
// = syntaxARQ ;
// //= new Syntax("http://jena.hpl.hp.com/2003/07/update/ARQ") ;
public static final Syntax syntaxAlgebra
= new Syntax("http://jena.hpl.hp.com/2003/07/query/SPARQL_Algebra") ;
/** The system default syntax */
public static Syntax defaultSyntax = syntaxARQ;
/** The name of the default query language for query parsing.
* The default query language syntax must be capable of accepting
* any SPARQL query but may also accept extensions.
*/
public static Syntax defaultQuerySyntax = defaultSyntax;
/** The name of the default update language for update parsing.
* The default update language syntax must be capable of accepting
* any SPARQL query but may also accept extensions.
*/
public static Syntax defaultUpdateSyntax = defaultSyntax;
/** The query syntax currently that is standardized, published, SPARQL Query */
public static final Syntax syntaxSPARQL = syntaxSPARQL_11 ;
// /** The update syntax currently that is standardized, published, SPARQL Update */
// private static final Syntax syntaxSPARQL_Update = syntaxSPARQL_11_Update ;
public static TranslationTable<Syntax> querySyntaxNames = new TranslationTable<>(true) ;
static {
querySyntaxNames.put("sparql", syntaxSPARQL) ;
querySyntaxNames.put("sparql10", syntaxSPARQL_10) ;
querySyntaxNames.put("sparql_10", syntaxSPARQL_10) ;
querySyntaxNames.put("sparql11", syntaxSPARQL_11) ;
querySyntaxNames.put("sparql_11", syntaxSPARQL_11) ;
querySyntaxNames.put("arq", syntaxARQ) ;
querySyntaxNames.put("alg", syntaxAlgebra) ;
querySyntaxNames.put("op", syntaxAlgebra) ;
}
public static TranslationTable<Syntax> updateSyntaxNames = new TranslationTable<>(true) ;
static {
updateSyntaxNames.put("sparql", syntaxSPARQL) ;
updateSyntaxNames.put("sparql_11", syntaxSPARQL_11) ;
updateSyntaxNames.put("arq", syntaxARQ) ;
}
protected Syntax(String s) { super(s) ; }
protected Syntax(Syntax s) { super(s) ; }
public static Syntax make(String uri)
{
if ( uri == null )
return null ;
Symbol sym = Symbol.create(uri) ;
if ( sym.equals(syntaxARQ) ) return syntaxARQ ;
if ( sym.equals(syntaxSPARQL) ) return syntaxSPARQL ;
if ( sym.equals(syntaxSPARQL_10) ) return syntaxSPARQL_10 ;
if ( sym.equals(syntaxSPARQL_11) ) return syntaxSPARQL_11 ;
if ( sym.equals(syntaxAlgebra) ) return syntaxAlgebra ;
return null ;
}
public static Syntax guessFileSyntax(String url)
{
return guessFileSyntax(url, syntaxSPARQL) ;
}
/** Guess the syntax (query and update) based on filename */
public static Syntax guessFileSyntax(String url, Syntax defaultSyntax)
{
if ( url.endsWith(".arq") ) return syntaxARQ ;
if ( url.endsWith(".rq") ) return syntaxSPARQL ;
if ( url.endsWith(".aru") ) return syntaxARQ ;
if ( url.endsWith(".ru") ) return syntaxSPARQL_11 ;
if ( url.endsWith(".sse") ) return syntaxAlgebra ;
// Default
return defaultSyntax ;
}
/** Guess the query syntax based on file name */
public static Syntax guessQueryFileSyntax(String url)
{
return guessFileSyntax(url, defaultQuerySyntax) ;
}
/** Guess the query syntax based on file name */
public static Syntax guessQueryFileSyntax(String url, Syntax defaultSyntax)
{
if ( url.endsWith(".arq") ) return syntaxARQ ;
if ( url.endsWith(".rq") ) return syntaxSPARQL ;
if ( url.endsWith(".sse") ) return syntaxAlgebra ;
return defaultSyntax ;
}
/** Guess the update syntax based on file name */
public static Syntax guessUpdateFileSyntax(String url)
{
return guessUpdateFileSyntax(url, defaultUpdateSyntax) ;
}
/** Guess the update syntax based on file name */
public static Syntax guessUpdateFileSyntax(String url, Syntax defaultSyntax)
{
if ( url.endsWith(".aru") ) return syntaxARQ ;
if ( url.endsWith(".ru") ) return syntaxSPARQL_11 ;
if ( url.endsWith(".sse") ) return syntaxAlgebra ;
return defaultSyntax ;
}
public static Syntax lookup(String s)
{
return querySyntaxNames.lookup(s) ;
}
}