You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/12/14 12:38:24 UTC

[1/3] jena git commit: JENA-1648: First class text format for result sets.

Repository: jena
Updated Branches:
  refs/heads/master c05f1296f -> 2f224de72


JENA-1648: First class text format for result sets.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d8939c61
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d8939c61
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d8939c61

Branch: refs/heads/master
Commit: d8939c6159c00caf559e749f0f661881b9a3906a
Parents: 42dc428
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Dec 12 18:43:13 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Dec 12 20:59:15 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/query/ResultSetFormatter.java   | 19 +----
 .../jena/riot/resultset/ResultSetLang.java      |  4 +
 .../riot/resultset/ResultSetWriterRegistry.java | 40 +++++++---
 .../jena/riot/resultset/rw/ResultsWriter.java   |  2 +-
 .../org/apache/jena/sparql/ARQConstants.java    |  4 +
 .../jena/sparql/resultset/ResultsFormat.java    | 66 +++++++++++++---
 .../apache/jena/sparql/util/QueryExecUtils.java | 79 +++-----------------
 .../org/apache/jena/riot/lang/TestLang.java     |  6 ++
 8 files changed, 116 insertions(+), 104 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
index 359de91..f628c0b 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
@@ -42,7 +42,6 @@ import org.apache.jena.shared.PrefixMapping ;
 import org.apache.jena.sparql.ARQException ;
 import org.apache.jena.sparql.ARQNotImplemented ;
 import org.apache.jena.sparql.core.Prologue ;
-import org.apache.jena.sparql.resultset.RDFOutput;
 import org.apache.jena.sparql.resultset.ResultsFormat;
 import org.apache.jena.sparql.resultset.TextOutput;
 import org.apache.jena.sparql.resultset.XMLOutput;
@@ -289,27 +288,15 @@ public class ResultSetFormatter {
      */
     
     static public void output(OutputStream outStream, ResultSet resultSet, ResultsFormat rFmt) {
-        
         Lang lang = ResultsFormat.convert(rFmt);
         if ( lang != null ) {
             output(outStream, resultSet, lang);
             return ;
         }
         
-        if ( rFmt.equals(ResultsFormat.FMT_RDF_XML) ) {
-            RDFOutput.outputAsRDF(outStream, "RDF/XML-ABBREV", resultSet) ;
-            return ;
-        }
-
-        if ( rFmt.equals(ResultsFormat.FMT_RDF_TTL) ) {
-            RDFOutput.outputAsRDF(outStream, "TTL", resultSet) ;
-            return ;
-        }
-
-        if ( rFmt.equals(ResultsFormat.FMT_RDF_NT) ) {
-            RDFOutput.outputAsRDF(outStream, "N-TRIPLES", resultSet) ;
+        boolean b = ResultsFormat.oldWrite(outStream, rFmt, null, resultSet);
+        if ( b )
             return ;
-        }
         throw new ARQException("Unknown ResultSet format: " + rFmt) ;
     }
     
@@ -318,9 +305,11 @@ public class ResultSetFormatter {
     public static void output(ResultSet resultSet, Lang resultFormat) {
         output(System.out, resultSet, resultFormat);
     }
+    
     public static void output(OutputStream outStream, ResultSet resultSet, Lang resultFormat) {
         ResultsWriter.create().lang(resultFormat).write(outStream, resultSet);
     }
+    
     public static void output(boolean result, Lang resultFormat) {
         output(System.out, result, resultFormat);
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
index 5ca83ae..4e4d02d 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
@@ -51,6 +51,9 @@ public class ResultSetLang {
         = LangBuilder.create("SPARQL-Results-Text", WebContent.contentTypeTextPlain)
                      .addFileExtensions("txt")
                      .build() ;
+    
+    public static final Lang SPARQLResultSetNone
+        = LangBuilder.create("SPARQL-Results-None", "application/sparql-results+none").build() ;
 
     private static boolean initialized = false ;
     public static void init() {
@@ -62,6 +65,7 @@ public class ResultSetLang {
         RDFLanguages.register(SPARQLResultSetCSV) ;
         RDFLanguages.register(SPARQLResultSetTSV) ;
         RDFLanguages.register(SPARQLResultSetThrift) ;
+        RDFLanguages.register(SPARQLResultSetNone) ;
         ResultSetReaderRegistry.init();
         ResultSetWriterRegistry.init();
     }    

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
index 859ab79..a0ccaf8 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
@@ -27,12 +27,16 @@ import java.util.Map ;
 import java.util.Objects ;
 
 import org.apache.jena.atlas.lib.NotImplemented ;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.query.ARQ;
 import org.apache.jena.query.ResultSet ;
+import org.apache.jena.rdf.model.Model;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RiotException ;
 import org.apache.jena.riot.resultset.rw.ResultSetWriterJSON;
 import org.apache.jena.riot.resultset.rw.ResultSetWriterThrift;
 import org.apache.jena.riot.resultset.rw.ResultSetWriterXML;
+import org.apache.jena.sparql.ARQConstants;
 import org.apache.jena.sparql.core.Prologue ;
 import org.apache.jena.sparql.resultset.CSVOutput;
 import org.apache.jena.sparql.resultset.TSVOutput;
@@ -72,9 +76,11 @@ public class ResultSetWriterRegistry {
         register(SPARQLResultSetXML,    ResultSetWriterXML.factory) ;
         register(SPARQLResultSetJSON,   ResultSetWriterJSON.factory) ;
         register(SPARQLResultSetThrift, ResultSetWriterThrift.factory) ;
+        // Build-in std factory (below).
         register(SPARQLResultSetCSV,    factory) ;
         register(SPARQLResultSetTSV,    factory) ;
         register(SPARQLResultSetText,   factory) ;
+        register(SPARQLResultSetNone,   factory) ;
     }
  
     private static ResultSetWriter writerCSV = new ResultSetWriter() {
@@ -101,7 +107,7 @@ public class ResultSetWriterRegistry {
         }
     } ;
 
-    private static ResultSetWriter writerNo = new ResultSetWriter() {
+    private static ResultSetWriter writerNone = new ResultSetWriter() {
         @Override public void write(OutputStream out, ResultSet resultSet, Context context) {}
         @Override public void write(Writer out, ResultSet resultSet, Context context)       {}
         @Override public void write(OutputStream out, boolean result, Context context)      {}
@@ -109,27 +115,41 @@ public class ResultSetWriterRegistry {
 
     private static ResultSetWriter writerText = new ResultSetWriter() {
         @Override public void write(OutputStream out, ResultSet resultSet, Context context) {
-            // Prefix mapp
-            TextOutput tFmt = new TextOutput(new SerializationContext((Prologue)null)) ;
+            Prologue prologue = choosePrologue(resultSet, context);
+            TextOutput tFmt = new TextOutput(new SerializationContext(prologue)) ;
             tFmt.format(out, resultSet) ; 
         }
         @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
         @Override public void write(OutputStream out, boolean result, Context context) {
-            // Prefix mapp
             TextOutput tFmt = new TextOutput(new SerializationContext((Prologue)null)) ;
             tFmt.format(out, result) ; 
         }
     } ;
     
+    /** Establish a prologue for formatting output.  Return "null" for none found. */ 
+    private static Prologue choosePrologue(ResultSet resultSet, Context context) {
+        try {
+            if ( context != null && context.get(ARQConstants.symPrologue) != null )
+                return context.get(ARQConstants.symPrologue);
+            Model m = resultSet.getResourceModel();
+            if ( m != null )
+                return new Prologue(m);
+        } catch (Exception ex) {
+            Log.warn(ARQ.getExecLogger(), "Failed to establish a 'Prologue' for text output: "+ex.getMessage()); 
+        }
+        return null;
+    }
+
     private static class ResultSetWriterFactoryStd implements ResultSetWriterFactory {
         @Override
         public ResultSetWriter create(Lang lang) {
-            lang = Objects.requireNonNull(lang, "Language must not be null") ;
-//            if ( lang.equals(SPARQLResultSetXML) )      return writerXML ;
-//            if ( lang.equals(SPARQLResultSetJSON) )     return writerJSON ;
-            if ( lang.equals(SPARQLResultSetCSV) )      return writerCSV ;
-            if ( lang.equals(SPARQLResultSetTSV) )      return writerTSV ;
-            if ( lang.equals(SPARQLResultSetText) )     return writerText ;
+            lang = Objects.requireNonNull(lang, "Language must not be null");
+//            if ( lang.equals(SPARQLResultSetXML) )      return writerXML;
+//            if ( lang.equals(SPARQLResultSetJSON) )     return writerJSON;
+            if ( lang.equals(SPARQLResultSetCSV) )      return writerCSV;
+            if ( lang.equals(SPARQLResultSetTSV) )      return writerTSV;
+            if ( lang.equals(SPARQLResultSetText) )     return writerText;
+            if ( lang.equals(SPARQLResultSetNone) )     return writerNone;
             throw new RiotException("Lang not registered (ResultSet writer)") ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
index 3cf6b09..05c486f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
@@ -90,7 +90,7 @@ public class ResultsWriter {
         } catch (IOException ex) { IO.exception(ex); }
     }
     
-    /** Write a result set, using the configurartion of the {@code ResultWriter}, to an {@code OutputStream}. */ 
+    /** Write a result set, using the configuration of the {@code ResultWriter}, to an {@code OutputStream}. */ 
     public void write(OutputStream output, ResultSet resultSet) {
         Objects.requireNonNull(output);
         Objects.requireNonNull(resultSet);

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java b/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
index 28fab54..48ad69b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
@@ -18,6 +18,7 @@
 
 package org.apache.jena.sparql;
 
+import org.apache.jena.riot.system.Prologue;
 import org.apache.jena.shared.PrefixMapping ;
 import org.apache.jena.shared.impl.PrefixMappingImpl ;
 import org.apache.jena.sparql.util.Symbol ;
@@ -260,6 +261,9 @@ public class ARQConstants
     /** Graphs forming the named graphs (List&lt;String&gt;) (Dynamic dataset) */
     public static final Symbol symDatasetNamedGraphs       = SystemARQ.allocSymbol("datasetNamedGraphs") ;
     
+    /** Context symbol for a supplied {@link Prologue} (used for text out of result sets). */
+    public static final Symbol symPrologue                 = SystemARQ.allocSymbol("prologue");
+    
     /** Context key for making all SELECT queries have DISTINCT applied, whether stated ot not */
     public static final Symbol autoDistinct             = SystemARQ.allocSymbol("autoDistinct") ;
     

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
index a0ebb69..9674fae 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
@@ -20,11 +20,17 @@ package org.apache.jena.sparql.resultset;
 
 import static org.apache.jena.riot.WebContent.* ;
 
+import java.io.OutputStream;
+import java.io.PrintStream;
 import java.util.HashMap ;
 import java.util.Map ;
 
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.ResultSetFormatter;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.resultset.ResultSetLang ;
+import org.apache.jena.sparql.core.Prologue;
+import org.apache.jena.sparql.util.QueryExecUtils;
 import org.apache.jena.sparql.util.Symbol ;
 import org.apache.jena.sparql.util.TranslationTable ;
 
@@ -38,13 +44,11 @@ import org.apache.jena.sparql.util.TranslationTable ;
 //    FMT_UNKNOWN ;
     
 
-// Old world.  Remove in Jena3
+// Old world.
 public class ResultsFormat extends Symbol
 { 
-    // ---- Compatibility (this started pre java 1.5)
-    private ResultsFormat(String symbol)
-    {
-        super(symbol) ;
+    private ResultsFormat(String symbol) {
+        super(symbol);
     }
 
     static public ResultsFormat FMT_RS_XML       = new ResultsFormat(contentTypeResultsXML) ;
@@ -57,6 +61,7 @@ public class ResultsFormat extends Symbol
     static public ResultsFormat FMT_TEXT         = new ResultsFormat("text") ;
     static public ResultsFormat FMT_TUPLES       = new ResultsFormat("tuples") ;
     static public ResultsFormat FMT_COUNT        = new ResultsFormat("count") ;
+    // Also used for output of result sets as RDF.
     static public ResultsFormat FMT_RDF_XML      = new ResultsFormat(contentTypeRDFXML) ;
     static public ResultsFormat FMT_RDF_N3       = new ResultsFormat(contentTypeN3) ;
     static public ResultsFormat FMT_RDF_TTL      = new ResultsFormat(contentTypeTurtle) ;
@@ -186,16 +191,59 @@ public class ResultsFormat extends Symbol
         return names.lookup(s);
     }
 
+    /**
+     * Mapping from old-style {@link ResultsFormat} to {@link ResultSetLang} or other
+     * {@link Lang}. See also {@link QueryExecUtils#outputResultSet} for dispatch of some old,
+     * specialized types such as results encoded in RDF.
+     */ 
     static Map<ResultsFormat, Lang> mapResultsFormatToLang = new HashMap<>() ;
     static {
-        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_CSV, ResultSetLang.SPARQLResultSetCSV) ;
-        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_TSV, ResultSetLang.SPARQLResultSetTSV) ;
-        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_XML, ResultSetLang.SPARQLResultSetXML) ;
-        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_JSON, ResultSetLang.SPARQLResultSetJSON) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_NONE,      ResultSetLang.SPARQLResultSetNone) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_CSV,    ResultSetLang.SPARQLResultSetCSV) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_TSV,    ResultSetLang.SPARQLResultSetTSV) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_XML,    ResultSetLang.SPARQLResultSetXML) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_RS_JSON,   ResultSetLang.SPARQLResultSetJSON) ;
         mapResultsFormatToLang.put(ResultsFormat.FMT_RS_THRIFT, ResultSetLang.SPARQLResultSetThrift) ;
+        mapResultsFormatToLang.put(ResultsFormat.FMT_TEXT,      ResultSetLang.SPARQLResultSetText);
     }
 
     public static Lang convert(ResultsFormat fmt) {
         return mapResultsFormatToLang.get(fmt) ;
     }
+    
+    /** Write a {@link ResultSet} in various old style formats no longer recommended.
+     * Return true if the format was handled else false.
+     */ 
+    public static boolean oldWrite(OutputStream out, ResultsFormat outputFormat, Prologue prologue, ResultSet resultSet) {
+        if ( outputFormat.equals(ResultsFormat.FMT_COUNT) ) {
+            int count = ResultSetFormatter.consume(resultSet) ;
+            PrintStream pOut = new PrintStream(out);
+            pOut.println("Count = " + count) ;
+            return true ;
+        }
+        
+        if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) ) {
+            RDFOutput.outputAsRDF(out, "RDF/XML-ABBREV", resultSet) ;
+            return true;
+        }
+
+        if ( outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
+            RDFOutput.outputAsRDF(out, "TTL", resultSet) ;
+            return true;
+        }
+
+        if ( outputFormat.equals(ResultsFormat.FMT_RDF_NT) ) {
+            RDFOutput.outputAsRDF(out, "N-TRIPLES", resultSet) ;
+            return true;
+        }
+        
+        if ( outputFormat.equals(ResultsFormat.FMT_TUPLES) ) {
+            PlainFormat pFmt = new PlainFormat(out, prologue) ;
+            ResultSetApply a = new ResultSetApply(resultSet, pFmt) ;
+            a.apply() ;
+            return true;
+        }
+
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
index e4ddf99..2a09fcb 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
@@ -28,7 +28,7 @@ import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.RDFNode ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.ResultSetMgr ;
+import org.apache.jena.riot.resultset.rw.ResultsWriter;
 import org.apache.jena.shared.PrefixMapping ;
 import org.apache.jena.shared.impl.PrefixMappingImpl ;
 import org.apache.jena.sparql.ARQConstants ;
@@ -41,11 +41,8 @@ import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.Prologue ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.resultset.PlainFormat ;
 import org.apache.jena.sparql.resultset.RDFOutput ;
-import org.apache.jena.sparql.resultset.ResultSetApply ;
 import org.apache.jena.sparql.resultset.ResultsFormat ;
-import org.apache.jena.sparql.vocabulary.ResultSetGraphVocab ;
 
 /** Some utilities for query processing. */
 public class QueryExecUtils {
@@ -112,80 +109,24 @@ public class QueryExecUtils {
     }
 
     public static void outputResultSet(ResultSet results, Prologue prologue, ResultsFormat outputFormat) {
+        if ( outputFormat.equals(ResultsFormat.FMT_UNKNOWN) )
+            outputFormat = ResultsFormat.FMT_TEXT ;
         // Proper ResultSet formats.
+        if ( prologue == null )
+            prologue = new Prologue(globalPrefixMap) ;
         Lang lang = ResultsFormat.convert(outputFormat) ;
         if ( lang != null ) {
-            ResultSetMgr.write(System.out, results, lang) ;
+            Context context = ARQ.getContext().copy();
+            if ( prologue != null )
+                context.set(ARQConstants.symPrologue, prologue);
+            ResultsWriter.create().context(context).lang(lang).build().write(System.out, results);
             System.out.flush() ;
             return ;
         }
         
-        // Old way.
-        boolean done = false ;
-        if ( prologue == null )
-            prologue = new Prologue(globalPrefixMap) ;
-
-        if ( outputFormat.equals(ResultsFormat.FMT_UNKNOWN) )
-            outputFormat = ResultsFormat.FMT_TEXT ;
-
-        if ( outputFormat.equals(ResultsFormat.FMT_NONE) || outputFormat.equals(ResultsFormat.FMT_COUNT) ) {
-            int count = ResultSetFormatter.consume(results) ;
-            if ( outputFormat.equals(ResultsFormat.FMT_COUNT) ) {
-                System.out.println("Count = " + count) ;
-            }
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) || outputFormat.equals(ResultsFormat.FMT_RDF_N3)
-             || outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
-            Model m = RDFOutput.encodeAsModel(results) ;
-            m.setNsPrefixes(prologue.getPrefixMapping()) ;
-            m.setNsPrefix("rs", ResultSetGraphVocab.getURI()) ;
-            RDFDataMgr.write(System.out, m, Lang.TURTLE) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RS_XML) ) {
-            ResultSetFormatter.outputAsXML(System.out, results) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RS_JSON) ) {
-            ResultSetFormatter.outputAsJSON(System.out, results) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RS_SSE) ) {
-            ResultSetFormatter.outputAsSSE(System.out, results, prologue) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_TEXT) ) {
-            ResultSetFormatter.out(System.out, results, prologue) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_TUPLES) ) {
-            PlainFormat pFmt = new PlainFormat(System.out, prologue) ;
-            ResultSetApply a = new ResultSetApply(results, pFmt) ;
-            a.apply() ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RS_CSV) ) {
-            ResultSetFormatter.outputAsCSV(System.out, results) ;
-            done = true ;
-        }
-
-        if ( outputFormat.equals(ResultsFormat.FMT_RS_TSV) ) {
-            ResultSetFormatter.outputAsTSV(System.out, results) ;
-            done = true ;
-        }
-
+        boolean done = ResultsFormat.oldWrite(System.out, outputFormat, prologue, results);
         if ( !done )
             System.err.println("Unknown format request: " + outputFormat) ;
-        results = null ;
-
         System.out.flush() ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d8939c61/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java
index fe3b087..705d46a 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java
@@ -25,12 +25,15 @@ import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.WebContent ;
+import org.apache.jena.riot.resultset.ResultSetLang;
+import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.util.FileUtils ;
 import org.junit.Assert ;
 import org.junit.Test ;
 
 public class TestLang extends BaseTest
 {
+    static { JenaSystem.init(); }
     @Test public void registration_01() { testregistration(RDFLanguages.RDFXML) ; }
     @Test public void registration_02() { testregistration(RDFLanguages.NTRIPLES) ; }
     @Test public void registration_03() { testregistration(RDFLanguages.NT) ; }
@@ -101,6 +104,9 @@ public class TestLang extends BaseTest
         {
             if ( RDFLanguages.RDFNULL.equals(l) )
                 continue ;
+            if ( ResultSetLang.SPARQLResultSetNone.equals(l) ) 
+                continue ;
+
             Assert.assertNotNull( l+" does not have file extensions defined", l.getFileExtensions());
             Assert.assertTrue( l+" does not have file extensions defined", l.getFileExtensions().size() > 0);
         }


[3/3] jena git commit: Rename as TS_FusekiWebapp to be clearer what's running

Posted by an...@apache.org.
Rename as TS_FusekiWebapp to be clearer what's running


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2f224de7
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2f224de7
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2f224de7

Branch: refs/heads/master
Commit: 2f224de729e3f32260e10dda61dbdef67ba5ca58
Parents: f93fdba
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Dec 14 12:38:14 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Dec 14 12:38:14 2018 +0000

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/ServerCtl.java  |  8 +-
 .../java/org/apache/jena/fuseki/TS_Fuseki.java  | 81 --------------------
 .../org/apache/jena/fuseki/TS_FusekiWebapp.java | 81 ++++++++++++++++++++
 3 files changed, 85 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2f224de7/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
index 568b342..887dd46 100644
--- a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
+++ b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
@@ -223,11 +223,11 @@ public class ServerCtl {
     }
     
     protected static void setupServer(boolean updateable) {
-        FusekiEnv.FUSEKI_HOME = Paths.get(TS_Fuseki.FusekiTestHome).toAbsolutePath() ;
+        FusekiEnv.FUSEKI_HOME = Paths.get(TS_FusekiWebapp.FusekiTestHome).toAbsolutePath() ;
         FileOps.ensureDir("target");
-        FileOps.ensureDir(TS_Fuseki.FusekiTestHome);
-        FileOps.ensureDir(TS_Fuseki.FusekiTestBase) ;
-        FusekiEnv.FUSEKI_BASE = Paths.get(TS_Fuseki.FusekiTestBase).toAbsolutePath() ;
+        FileOps.ensureDir(TS_FusekiWebapp.FusekiTestHome);
+        FileOps.ensureDir(TS_FusekiWebapp.FusekiTestBase) ;
+        FusekiEnv.FUSEKI_BASE = Paths.get(TS_FusekiWebapp.FusekiTestBase).toAbsolutePath() ;
         // Must have shiro.ini.
         // This fakes the state after FusekiSystem initialization
         // in the case of starting in the same location. FusekiSystem has statics.

http://git-wip-us.apache.org/repos/asf/jena/blob/2f224de7/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
deleted file mode 100644
index 42e33df..0000000
--- a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.atlas.lib.FileOps ;
-import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.fuseki.system.FusekiLogging;
-import org.apache.jena.fuseki.webapp.FusekiEnv;
-import org.junit.AfterClass ;
-import org.junit.BeforeClass ;
-import org.junit.runner.RunWith ;
-import org.junit.runners.Suite ;
-
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses( {
-    TestHttpOp.class
-    , TestSPARQLProtocol.class
-    , TestHttpOperations.class
-    , TestHttpOptions.class
-    , TestDatasetGraphAccessorHTTP.class
-    , TestDatasetAccessorHTTP.class
-    , TestQuery.class
-    , TestAuth.class
-    , TestDatasetOps.class
-    , TestFileUpload.class
-    , TestAdmin.class
-    , TestAdminAPI.class
-    , TestServerReadOnly.class
-    , TestBuilder.class
-})
-
-public class TS_Fuseki extends ServerTest
-{
-    public static final String FusekiTestHome = "target/FusekiHome" ;
-    public static final String FusekiTestBase = FusekiTestHome+"/run" ;
-    
-    @BeforeClass public static void setupForFusekiServer() {
-        FileOps.ensureDir(FusekiTestHome);
-        FileOps.clearDirectory(FusekiTestHome);
-        System.setProperty("FUSEKI_HOME", FusekiTestHome) ;
-        FusekiEnv.setEnvironment() ;
-        FusekiLogging.setLogging();
-        // To avoid confusion with log4j.properties in the main part of the server,
-        // we modify in place the logging, not try to set it with another
-        // Log4j properties file from the classpath.  
-        LogCtl.setLevel("org.apache.shiro",          "WARN") ;
-        LogCtl.setLevel("org.eclipse.jetty",         "WARN");
-        
-        LogCtl.setLevel(Fuseki.serverLogName,        "WARN");
-        LogCtl.setLevel(Fuseki.configLogName,        "WARN");
-        LogCtl.setLevel(Fuseki.adminLogName,         "WARN");
-        LogCtl.setLevel(Fuseki.builderLogName,       "WARN");
-        LogCtl.setLevel(Fuseki.actionLogName,        "WARN");
-        LogCtl.setLevel(Fuseki.requestLogName,       "WARN");
-        LogCtl.setLevel(Fuseki.servletRequestLogName,"WARN");
-        
-        ServerCtl.ctlBeforeTestSuite();
-    }
-    
-    @AfterClass
-    static public void afterSuiteClass() {
-        ServerCtl.ctlAfterTestSuite() ;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/2f224de7/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_FusekiWebapp.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_FusekiWebapp.java b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_FusekiWebapp.java
new file mode 100644
index 0000000..a6b7e29
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TS_FusekiWebapp.java
@@ -0,0 +1,81 @@
+/*
+ * 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.atlas.lib.FileOps ;
+import org.apache.jena.atlas.logging.LogCtl ;
+import org.apache.jena.fuseki.system.FusekiLogging;
+import org.apache.jena.fuseki.webapp.FusekiEnv;
+import org.junit.AfterClass ;
+import org.junit.BeforeClass ;
+import org.junit.runner.RunWith ;
+import org.junit.runners.Suite ;
+
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses( {
+    TestHttpOp.class
+    , TestSPARQLProtocol.class
+    , TestHttpOperations.class
+    , TestHttpOptions.class
+    , TestDatasetGraphAccessorHTTP.class
+    , TestDatasetAccessorHTTP.class
+    , TestQuery.class
+    , TestAuth.class
+    , TestDatasetOps.class
+    , TestFileUpload.class
+    , TestAdmin.class
+    , TestAdminAPI.class
+    , TestServerReadOnly.class
+    , TestBuilder.class
+})
+
+public class TS_FusekiWebapp extends ServerTest
+{
+    public static final String FusekiTestHome = "target/FusekiHome" ;
+    public static final String FusekiTestBase = FusekiTestHome+"/run" ;
+    
+    @BeforeClass public static void setupForFusekiServer() {
+        FileOps.ensureDir(FusekiTestHome);
+        FileOps.clearDirectory(FusekiTestHome);
+        System.setProperty("FUSEKI_HOME", FusekiTestHome) ;
+        FusekiEnv.setEnvironment() ;
+        FusekiLogging.setLogging();
+        // To avoid confusion with log4j.properties in the main part of the server,
+        // we modify in place the logging, not try to set it with another
+        // Log4j properties file from the classpath.  
+        LogCtl.setLevel("org.apache.shiro",          "WARN") ;
+        LogCtl.setLevel("org.eclipse.jetty",         "WARN");
+        
+        LogCtl.setLevel(Fuseki.serverLogName,        "WARN");
+        LogCtl.setLevel(Fuseki.configLogName,        "WARN");
+        LogCtl.setLevel(Fuseki.adminLogName,         "WARN");
+        LogCtl.setLevel(Fuseki.builderLogName,       "WARN");
+        LogCtl.setLevel(Fuseki.actionLogName,        "WARN");
+        LogCtl.setLevel(Fuseki.requestLogName,       "WARN");
+        LogCtl.setLevel(Fuseki.servletRequestLogName,"WARN");
+        
+        ServerCtl.ctlBeforeTestSuite();
+    }
+    
+    @AfterClass
+    static public void afterSuiteClass() {
+        ServerCtl.ctlAfterTestSuite() ;
+    }
+}
\ No newline at end of file


[2/3] jena git commit: JENA-1648: Merge commit 'refs/pull/507/head' of https://github.com/apache/jena

Posted by an...@apache.org.
JENA-1648: Merge commit 'refs/pull/507/head' of https://github.com/apache/jena

This closes #507.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f93fdbad
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f93fdbad
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f93fdbad

Branch: refs/heads/master
Commit: f93fdbad7aa8d6ddb46693395e3bfb5ea487bf16
Parents: c05f129 d8939c6
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Dec 14 12:27:46 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Dec 14 12:27:46 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/query/ResultSetFormatter.java   | 19 +----
 .../jena/riot/resultset/ResultSetLang.java      |  4 +
 .../riot/resultset/ResultSetWriterRegistry.java | 40 +++++++---
 .../jena/riot/resultset/rw/ResultsWriter.java   |  2 +-
 .../org/apache/jena/sparql/ARQConstants.java    |  4 +
 .../jena/sparql/resultset/ResultsFormat.java    | 66 +++++++++++++---
 .../apache/jena/sparql/util/QueryExecUtils.java | 83 +++-----------------
 .../org/apache/jena/riot/lang/TestLang.java     |  6 ++
 8 files changed, 116 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f93fdbad/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/jena/blob/f93fdbad/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
----------------------------------------------------------------------
diff --cc jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
index 6ba03fd,2a09fcb..2a46a82
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/QueryExecUtils.java
@@@ -119,77 -123,10 +123,10 @@@ public class QueryExecUtils 
              System.out.flush() ;
              return ;
          }
--        
-         // Old way.
-         boolean done = false ;
-         if ( prologue == null )
-             prologue = new Prologue(globalPrefixMap) ;
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_UNKNOWN) )
-             outputFormat = ResultsFormat.FMT_TEXT ;
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_NONE) || outputFormat.equals(ResultsFormat.FMT_COUNT) ) {
-             int count = ResultSetFormatter.consume(results) ;
-             if ( outputFormat.equals(ResultsFormat.FMT_COUNT) ) {
-                 System.out.println("Count = " + count) ;
-             }
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) || outputFormat.equals(ResultsFormat.FMT_RDF_N3)
-              || outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
-             Lang langx = Lang.TURTLE;
-             if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) )
-                 langx = Lang.RDFXML;
-             
-             Model m = RDFOutput.encodeAsModel(results) ;
-             m.setNsPrefixes(prologue.getPrefixMapping()) ;
-             m.setNsPrefix("rs", ResultSetGraphVocab.getURI()) ;
-             RDFDataMgr.write(System.out, m, langx) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RS_XML) ) {
-             ResultSetFormatter.outputAsXML(System.out, results) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RS_JSON) ) {
-             ResultSetFormatter.outputAsJSON(System.out, results) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RS_SSE) ) {
-             ResultSetFormatter.outputAsSSE(System.out, results, prologue) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_TEXT) ) {
-             ResultSetFormatter.out(System.out, results, prologue) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_TUPLES) ) {
-             PlainFormat pFmt = new PlainFormat(System.out, prologue) ;
-             ResultSetApply a = new ResultSetApply(results, pFmt) ;
-             a.apply() ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RS_CSV) ) {
-             ResultSetFormatter.outputAsCSV(System.out, results) ;
-             done = true ;
-         }
- 
-         if ( outputFormat.equals(ResultsFormat.FMT_RS_TSV) ) {
-             ResultSetFormatter.outputAsTSV(System.out, results) ;
-             done = true ;
-         }
 +
+         boolean done = ResultsFormat.oldWrite(System.out, outputFormat, prologue, results);
          if ( !done )
              System.err.println("Unknown format request: " + outputFormat) ;
-         results = null ;
- 
          System.out.flush() ;
      }