Author: andy
Date: Sun Sep 22 09:30:15 2013
New Revision: 1525334
URL: http://svn.apache.org/r1525334
Log:
JENA-537
Provide a default query syntax, and apply it to a command line string argument.
Syntax determination is:
* Explicitly given --syntax</li>
* File extension
* Command default
* System default
Modified:
jena/trunk/jena-arq/src/main/java/arq/arq.java
jena/trunk/jena-arq/src/main/java/arq/cmdline/ModQueryIn.java
jena/trunk/jena-arq/src/main/java/arq/qparse.java
jena/trunk/jena-arq/src/main/java/arq/query.java
jena/trunk/jena-arq/src/main/java/arq/rsparql.java
jena/trunk/jena-arq/src/main/java/arq/sparql.java
Modified: jena/trunk/jena-arq/src/main/java/arq/arq.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/arq.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/arq.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/arq.java Sun Sep 22 09:30:15 2013
@@ -18,19 +18,20 @@
package arq;
-import java.util.ArrayList ;
-import java.util.List ;
+import com.hp.hpl.jena.query.Syntax ;
/** A program to execute queries from the command line in ARQ mode. */
-public class arq
+public class arq extends query
{
- public static void main(String... argv)
- {
- List<String> a = new ArrayList<String>() ;
- for ( int i = 0 ; i < argv.length ; i++ ) a.add(argv[i]) ;
- a.add(0, "--syntax=arq") ;
- argv = a.toArray(argv) ;
- query.main(argv) ;
+ public static void main (String... argv) {
+ new arq(argv).mainRun() ;
}
+
+ public arq(String[] argv) {
+ super(argv) ;
+ }
+
+ @Override
+ protected Syntax getDefaultSyntax() { return Syntax.syntaxARQ ; }
}
Modified: jena/trunk/jena-arq/src/main/java/arq/cmdline/ModQueryIn.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/cmdline/ModQueryIn.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/cmdline/ModQueryIn.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/cmdline/ModQueryIn.java Sun Sep 22
09:30:15 2013
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package arq.cmdline;
+package arq.cmdline ;
import java.io.IOException ;
@@ -32,154 +32,125 @@ import com.hp.hpl.jena.shared.JenaExcept
import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
import com.hp.hpl.jena.util.FileUtils ;
-public class ModQueryIn implements ArgModuleGeneral
-{
- protected final ArgDecl queryFileDecl = new ArgDecl(ArgDecl.HasValue,
"query", "file") ;
+public class ModQueryIn implements ArgModuleGeneral {
+ protected final ArgDecl queryFileDecl = new ArgDecl(ArgDecl.HasValue,
"query", "file") ;
protected final ArgDecl querySyntaxDecl = new ArgDecl(ArgDecl.HasValue,
"syntax", "syn", "in") ;
- protected final ArgDecl queryBaseDecl = new ArgDecl(ArgDecl.HasValue,
"base") ;
+ protected final ArgDecl queryBaseDecl = new ArgDecl(ArgDecl.HasValue,
"base") ;
+
+ private Syntax defaultQuerySyntax = Syntax.syntaxARQ ;
+ private Syntax querySyntax = null ;
+ private String queryFilename = null ;
+ private String queryString = null ;
+ private Query query = null ;
+ private String baseURI = null ;
+
+ public ModQueryIn(Syntax defaultSyntax) {
+ defaultQuerySyntax = defaultSyntax ;
+ querySyntax = defaultSyntax ;
+ }
- private Syntax querySyntax = Syntax.syntaxARQ ;
- private String queryFilename = null ;
- private String queryString = null ;
- private Query query = null ;
- private String baseURI = null ;
-
-
@Override
- public void registerWith(CmdGeneral cmdLine)
- {
+ public void registerWith(CmdGeneral cmdLine) {
cmdLine.getUsage().startCategory("Query") ;
- cmdLine.add(queryFileDecl,
- "--query, --file",
- "File containing a query") ;
- cmdLine.add(querySyntaxDecl,
- "--syntax, --in",
- "Syntax of the query") ;
- cmdLine.add(queryBaseDecl,
- "--base",
- "Base URI for the query") ;
+ cmdLine.add(queryFileDecl, "--query, --file", "File containing a
query") ;
+ cmdLine.add(querySyntaxDecl, "--syntax, --in", "Syntax of the
query") ;
+ cmdLine.add(queryBaseDecl, "--base", "Base URI for the
query") ;
}
@Override
- public void processArgs(CmdArgModule cmdline) throws
IllegalArgumentException
- {
+ public void processArgs(CmdArgModule cmdline) throws
IllegalArgumentException {
if ( cmdline.contains(queryBaseDecl) )
- baseURI = cmdline.getValue(queryBaseDecl) ;
-
- if ( cmdline.contains(queryFileDecl) )
- {
+ baseURI = cmdline.getValue(queryBaseDecl) ;
+
+ if ( cmdline.contains(queryFileDecl) ) {
queryFilename = cmdline.getValue(queryFileDecl) ;
- querySyntax = Syntax.guessFileSyntax(queryFilename) ;
+ querySyntax = Syntax.guessFileSyntax(queryFilename,
defaultQuerySyntax) ;
}
-
+
if ( cmdline.getNumPositional() == 0 && queryFilename == null )
cmdline.cmdError("No query string or query file") ;
if ( cmdline.getNumPositional() > 1 )
cmdline.cmdError("Only one query string allowed") ;
-
+
if ( cmdline.getNumPositional() == 1 && queryFilename != null )
cmdline.cmdError("Either query string or query file - not both") ;
- // Guess syntax
- if ( queryFilename == null )
- {
+ if ( queryFilename == null ) {
// One positional argument.
String qs = cmdline.getPositionalArg(0) ;
- if ( cmdline.matchesIndirect(qs) )
- querySyntax = Syntax.guessFileSyntax(qs) ;
-
+ if ( cmdline.matchesIndirect(qs) )
+ querySyntax = Syntax.guessFileSyntax(qs, defaultQuerySyntax) ;
+
queryString = cmdline.indirect(qs) ;
}
-
+
// Set syntax
- if ( cmdline.contains(querySyntaxDecl) )
- {
+ if ( cmdline.contains(querySyntaxDecl) ) {
// short name
String s = cmdline.getValue(querySyntaxDecl) ;
Syntax syn = Syntax.lookup(s) ;
if ( syn == null )
- cmdline.cmdError("Unrecognized syntax: "+s) ;
- querySyntax = syn ;
+ cmdline.cmdError("Unrecognized syntax: " + s) ;
+ querySyntax = syn ;
}
}
-
- public Syntax getQuerySyntax()
- {
+
+ public Syntax getQuerySyntax() {
return querySyntax ;
}
-
- public Query getQuery()
- {
+
+ public Query getQuery() {
if ( query != null )
return query ;
-
- if ( queryFilename != null && queryString != null )
- {
- System.err.println("Both query string and query file name given" )
;
+
+ if ( queryFilename != null && queryString != null ) {
+ System.err.println("Both query string and query file name given") ;
throw new TerminationException(1) ;
}
-
- if ( queryFilename == null && queryString == null )
- {
- System.err.println("No query string and no query file name given"
) ;
+
+ if ( queryFilename == null && queryString == null ) {
+ System.err.println("No query string and no query file name given")
;
throw new TerminationException(1) ;
}
- try
- {
- if ( queryFilename != null )
- {
- if ( queryFilename.equals("-") )
- {
+ try {
+ if ( queryFilename != null ) {
+ if ( queryFilename.equals("-") ) {
try {
// Stderr?
- queryString =
FileUtils.readWholeFileAsUTF8(System.in) ;
+ queryString = FileUtils.readWholeFileAsUTF8(System.in)
;
// And drop into next if
- } catch (IOException ex)
- {
+ } catch (IOException ex) {
throw new CmdException("Error reading stdin", ex) ;
}
- }
- else
- {
+ } else {
query = QueryFactory.read(queryFilename, baseURI,
getQuerySyntax()) ;
return query ;
}
}
-
+
query = QueryFactory.create(queryString, baseURI,
getQuerySyntax()) ;
return query ;
- }
- catch (ARQInternalErrorException intEx)
- {
+ } catch (ARQInternalErrorException intEx) {
System.err.println(intEx.getMessage()) ;
- if ( intEx.getCause() != null )
- {
+ if ( intEx.getCause() != null ) {
System.err.println("Cause:") ;
intEx.getCause().printStackTrace(System.err) ;
System.err.println() ;
}
intEx.printStackTrace(System.err) ;
throw new TerminationException(99) ;
- }
- catch (QueryParseException parseEx)
- {
+ } catch (QueryParseException parseEx) {
System.err.println(parseEx.getMessage()) ;
throw new TerminationException(2) ;
- }
- catch (QueryException qEx)
- {
+ } catch (QueryException qEx) {
System.err.println(qEx.getMessage()) ;
throw new TerminationException(2) ;
- }
- catch (JenaException ex)
- {
+ } catch (JenaException ex) {
System.err.println(ex.getMessage()) ;
throw new TerminationException(2) ;
- }
- catch (Exception ex)
- {
+ } catch (Exception ex) {
System.out.flush() ;
ex.printStackTrace(System.err) ;
throw new TerminationException(98) ;
Modified: jena/trunk/jena-arq/src/main/java/arq/qparse.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/qparse.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/qparse.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/qparse.java Sun Sep 22 09:30:15 2013
@@ -46,7 +46,7 @@ import com.hp.hpl.jena.sparql.util.Utils
public class qparse extends CmdARQ
{
- protected ModQueryIn modQuery = new ModQueryIn() ;
+ protected ModQueryIn modQuery = new
ModQueryIn(Syntax.syntaxSPARQL_11) ;
protected ModQueryOut modOutput = new ModQueryOut() ;
protected ModEngine modEngine = new ModEngine() ;
protected final ArgDecl argDeclPrint = new ArgDecl(ArgDecl.HasValue,
"print") ;
Modified: jena/trunk/jena-arq/src/main/java/arq/query.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/query.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/query.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/query.java Sun Sep 22 09:30:15 2013
@@ -53,7 +53,7 @@ public class query extends CmdARQ
protected boolean queryOptimization = true ;
protected ModTime modTime = new ModTime() ;
- protected ModQueryIn modQuery = new ModQueryIn() ;
+ protected ModQueryIn modQuery = null;
protected ModDataset modDataset = null ;
protected ModResultsOut modResults = new ModResultsOut() ;
protected ModEngine modEngine = new ModEngine() ;
@@ -66,7 +66,9 @@ public class query extends CmdARQ
public query(String[] argv)
{
super(argv) ;
+ modQuery = new ModQueryIn(getDefaultSyntax()) ;
modDataset = setModDataset() ;
+
super.addModule(modQuery) ;
super.addModule(modResults) ;
super.addModule(modDataset) ;
@@ -79,6 +81,18 @@ public class query extends CmdARQ
super.add(argOptimize, "--optimize=", "Turn the query optimizer on or
off (default: on)") ;
}
+ /** Default syntax used when the syntax can not be determined from the
command name or file extension
+ * The order of determination is:
+ * <ul>
+ * <li>Explicitly given --syntax</li>
+ * <li>File extension</li>
+ * <li>Command default</li>
+ * <li>System default</li>
+ * </ul>
+ *
+ */
+ protected Syntax getDefaultSyntax() { return Syntax.defaultQuerySyntax
; }
+
@Override
protected void processModulesAndArgs()
{
Modified: jena/trunk/jena-arq/src/main/java/arq/rsparql.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/rsparql.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/rsparql.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/rsparql.java Sun Sep 22 09:30:15 2013
@@ -27,13 +27,14 @@ import arq.cmdline.ModResultsOut ;
import com.hp.hpl.jena.query.Query ;
import com.hp.hpl.jena.query.QueryExecution ;
import com.hp.hpl.jena.query.QueryExecutionFactory ;
+import com.hp.hpl.jena.query.Syntax ;
import com.hp.hpl.jena.sparql.engine.http.HttpQuery ;
import com.hp.hpl.jena.sparql.engine.http.QueryExceptionHTTP ;
import com.hp.hpl.jena.sparql.util.QueryExecUtils ;
public class rsparql extends CmdARQ
{
- protected ModQueryIn modQuery = new ModQueryIn() ;
+ protected ModQueryIn modQuery = new
ModQueryIn(Syntax.syntaxSPARQL_11) ;
protected ModRemote modRemote = new ModRemote() ;
protected ModResultsOut modResults = new ModResultsOut() ;
Modified: jena/trunk/jena-arq/src/main/java/arq/sparql.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/sparql.java?rev=1525334&r1=1525333&r2=1525334&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/sparql.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/sparql.java Sun Sep 22 09:30:15 2013
@@ -18,12 +18,20 @@
package arq;
+import com.hp.hpl.jena.query.Syntax ;
+
/** A program to execute queries from the command line in SPARQL mode. */
-public class sparql
+public class sparql extends query
{
- public static void main (String... argv)
- {
- query.main(argv) ;
+ public static void main (String... argv) {
+ new sparql(argv).mainRun() ;
+ }
+
+ public sparql(String[] argv) {
+ super(argv) ;
}
- }
+
+ @Override
+ protected Syntax getDefaultSyntax() { return Syntax.syntaxSPARQL_11 ;
}
+}