GH-3586: Rewrite ResultsFormat
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFactory.java b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFactory.java
index ae94e2e..460575d 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFactory.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFactory.java
@@ -26,9 +26,7 @@
import org.apache.jena.atlas.io.IOX;
import org.apache.jena.atlas.logging.Log ;
import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.ReadAnything;
import org.apache.jena.riot.ResultSetMgr ;
import org.apache.jena.riot.resultset.ResultSetLang;
@@ -37,7 +35,6 @@
import org.apache.jena.sparql.engine.QueryIterator ;
import org.apache.jena.sparql.engine.ResultSetStream ;
import org.apache.jena.sparql.exec.RowSet;
-import org.apache.jena.sparql.graph.GraphFactory ;
import org.apache.jena.sparql.resultset.* ;
/** ResultSetFactory - make result sets from places other than a query. */
@@ -91,131 +88,24 @@
public static ResultSet load(InputStream input, ResultsFormat format) {
if (format == null) {
Log.warn(ResultSet.class, "Null format - defaulting to XML");
- format = ResultsFormat.FMT_RS_XML;
+ format = ResultsFormat.XML;
}
- // Old World - new world
- Lang lang = ResultsFormat.convert(format) ;
- if ( lang != null )
- return ResultSetMgr.read(input, lang) ;
-
- if (format.equals(ResultsFormat.FMT_TEXT)) {
+ if ( format == ResultsFormat.TEXT ) {
Log.warn(ResultSet.class, "Can't read a text result set");
throw new ResultSetException("Can't read a text result set");
}
- if (format.equals(ResultsFormat.FMT_RDF_XML)) {
- Model m = ModelFactory.createDefaultModel();
- m.read(input, null);
- return RDFInput.fromRDF(m);
- }
+ Lang lang = format.resultSetLang();
- if (format.equals(ResultsFormat.FMT_RDF_TTL)) {
- Model m = ModelFactory.createDefaultModel();
- m.read(input, null, "TURTLE");
- return RDFInput.fromRDF(m);
- }
-
- if (format.equals(ResultsFormat.FMT_RDF_N3)) {
- Model m = ModelFactory.createDefaultModel();
- m.read(input, null, "N3");
- return RDFInput.fromRDF(m);
- }
-
- if (format.equals(ResultsFormat.FMT_RDF_NT)) {
- Model m = ModelFactory.createDefaultModel();
- m.read(input, null, "N-TRIPLES");
- return RDFInput.fromRDF(m);
- }
+ if ( lang != null )
+ return ResultSetMgr.read(input, lang) ;
Log.warn(ResultSet.class, "Unknown result set syntax: " + format);
return null;
}
/**
- * Load a result set (or any other model) from file or URL
- *
- * @param filenameOrURI
- * @return Model
- */
- public static Model loadAsModel(String filenameOrURI) {
- return loadAsModel(null, filenameOrURI, null);
- }
-
- /**
- * Load a result set (or any other model) from file or URL
- *
- * @param model
- * Load into this model (returned)
- * @param filenameOrURI
- * @return Model
- */
- public static Model loadAsModel(Model model, String filenameOrURI) {
- return loadAsModel(model, filenameOrURI, null);
- }
-
- /**
- * Load a result set (or any other model) from file or URL
- *
- * @param filenameOrURI
- * @param format
- * @return Model
- */
- public static Model loadAsModel(String filenameOrURI, ResultsFormat format) {
- return loadAsModel(null, filenameOrURI, format);
- }
-
- /**
- * Load a result set (or any other model) from file or URL. Does not have to
- * be a result set (e.g. CONSTRUCt results) but it does interpret the
- * ResultSetFormat possibilities.
- *
- * @param model
- * Load into this model (returned)
- * @param filenameOrURI
- * @param format
- * @return Model
- * @deprecated This function will become be internal.
- */
- @Deprecated
- public static Model loadAsModel(Model model, String filenameOrURI, ResultsFormat format) {
- if (model == null)
- model = GraphFactory.makeDefaultModel();
-
- if (format == null)
- format = ResultsFormat.guessSyntax(filenameOrURI);
-
- if (format == null) {
- Log.warn(ResultSet.class, "Null format - defaulting to XML");
- format = ResultsFormat.FMT_RS_XML;
- }
-
- if (format.equals(ResultsFormat.FMT_TEXT)) {
- Log.error(ResultSet.class, "Can't read a text result set");
- throw new ResultSetException("Can't read a text result set");
- }
-
- if (format.equals(ResultsFormat.FMT_RS_XML) || format.equals(ResultsFormat.FMT_RS_JSON)) {
- SPARQLResult x = ReadAnything.read(filenameOrURI);
- if (x.isResultSet())
- RDFOutput.encodeAsRDF(model, x.getResultSet());
- else if ( x.isBoolean() )
- RDFOutput.encodeAsRDF(model, x.getBooleanResult());
- else
- throw new ResultSetException("Not a result set");
- return model;
- }
-
- if (ResultsFormat.isRDFGraphSyntax(format)) {
- RDFDataMgr.read(model, filenameOrURI);
- return model;
- }
-
- Log.error(ResultSet.class, "Unknown result set syntax: " + format);
- return null;
- }
-
- /**
* Read in any kind of result kind (result set, boolean, graph) Guess the
* syntax based on filename/URL extension.
*/
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 0e90fcc..ea56804 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
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
import org.apache.jena.atlas.io.IndentedWriter;
import org.apache.jena.atlas.json.JsonObject;
@@ -279,20 +280,17 @@
*/
static public void output(OutputStream outStream, ResultSet resultSet, ResultsFormat rFmt) {
- Lang lang = ResultsFormat.convert(rFmt);
- if ( lang != null ) {
- output(outStream, resultSet, lang);
- return;
- }
+ Objects.requireNonNull(resultSet);
+ Objects.requireNonNull(outStream);
+ Objects.requireNonNull(rFmt);
- boolean b = ResultsFormat.oldWrite(outStream, rFmt, null, resultSet);
- if ( b )
- return;
- throw new ARQException("Unknown ResultSet format: " + rFmt);
+ Lang lang = rFmt.resultSetLang();
+ if ( lang == null )
+ throw new ARQException("Unknown ResultSet output format: " + rFmt);
+
+ output(outStream, resultSet, lang);
}
- // ---- General Output
-
public static void output(ResultSet resultSet, Lang resultFormat) {
output(System.out, resultSet, resultFormat);
}
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
index 8d7f242..d149533 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
@@ -419,8 +419,8 @@
public static Lang filenameToLang(String uriOrFilename) { return pathnameToLang(uriOrFilename); }
/**
- * Try to map a URI or URI path name to a {@link Lang}; return null on no
- * registered mapping.
+ * Try to map a URI or URI path name to a {@link Lang}; This included filenames.
+ * Return null on no registered mapping.
*/
public static Lang pathnameToLang(String pathname) {
if ( pathname == null )
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/rowset/RowSetReaderRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/rowset/RowSetReaderRegistry.java
index 6ed3fe8..b19014b 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/rowset/RowSetReaderRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/rowset/RowSetReaderRegistry.java
@@ -66,7 +66,6 @@
initialized = true;
register(RS_XML, RowSetReaderXML.factory);
- // register(RS_JSON, RowSetReaderJSON.factory);
register(RS_JSON, RowSetReaderJSONStreaming.factory);
register(RS_CSV, RowSetReaderCSV.factory);
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/PlainFormat.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/PlainFormat.java
index c4d8d47..0d5a759 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/PlainFormat.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/PlainFormat.java
@@ -18,72 +18,72 @@
package org.apache.jena.sparql.resultset;
-import java.io.OutputStream ;
-import java.io.PrintWriter ;
+import java.io.OutputStream;
+import java.io.PrintWriter;
-import org.apache.jena.query.QuerySolution ;
-import org.apache.jena.query.ResultSet ;
-import org.apache.jena.rdf.model.RDFNode ;
-import org.apache.jena.sparql.core.Prologue ;
-import org.apache.jena.sparql.serializer.SerializationContext ;
-import org.apache.jena.sparql.util.FmtUtils ;
-import org.apache.jena.util.FileUtils ;
+import org.apache.jena.query.QuerySolution;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.sparql.core.Prologue;
+import org.apache.jena.sparql.serializer.SerializationContext;
+import org.apache.jena.sparql.util.FmtUtils;
+import org.apache.jena.util.FileUtils;
-public class PlainFormat implements ResultSetProcessor
-{
- PrintWriter out ;
- int count = 0 ;
- boolean lineNumbers = true ;
- boolean first = true ;
- SerializationContext context ;
+public class PlainFormat implements ResultSetProcessor {
+ private PrintWriter out;
+ private int count = 0;
+ private boolean lineNumbers = true;
+ private boolean first = true;
+ private SerializationContext context;
- public PlainFormat(OutputStream outStream, SerializationContext context)
- {
- this.out = FileUtils.asPrintWriterUTF8(outStream) ;
- this.context = context ;
+ public PlainFormat(OutputStream outStream, SerializationContext context) {
+ this.out = FileUtils.asPrintWriterUTF8(outStream);
+ this.context = context;
}
-
- public PlainFormat(OutputStream outStream, Prologue prologue)
- {
- this(outStream, new SerializationContext(prologue)) ;
+
+ public PlainFormat(OutputStream outStream, Prologue prologue) {
+ this(outStream, new SerializationContext(prologue));
}
-
+
@Override
public void start(ResultSet rs) {}
+
@Override
- public void finish(ResultSet rs) { out.flush() ; }
- @Override
- public void start(QuerySolution qs)
- {
- count++ ;
- //insertLineNumber() ;
- first = true ;
- }
-
- @Override
- public void finish(QuerySolution qs) { out.println() ; }
- @Override
- public void binding(String varName, RDFNode value)
- {
- if ( value == null )
- return ; // Unbound
- if ( ! first )
- out.print(" ") ;
- // Would like to share code Binding here.
- String s = FmtUtils.stringForRDFNode(value, context) ;
- out.print("( ?"+varName+" = "+s+" )") ;
- first = false ;
- }
-
- void insertLineNumber()
- {
- if ( ! lineNumbers )
- return ;
- String s = Integer.toString(count) ;
- for ( int i = 0 ; i < 3-s.length() ; i++ )
- out.print(' ') ;
- out.print(s) ;
- out.print(' ') ;
+ public void finish(ResultSet rs) {
+ out.flush();
}
+ @Override
+ public void start(QuerySolution qs) {
+ count++;
+ // insertLineNumber() ;
+ first = true;
+ }
+
+ @Override
+ public void finish(QuerySolution qs) {
+ out.println();
+ }
+
+ @Override
+ public void binding(String varName, RDFNode value) {
+ if ( value == null )
+ return; // Unbound
+ if ( !first )
+ out.print(" ");
+ // Would like to share code Binding here.
+ String s = FmtUtils.stringForRDFNode(value, context);
+ out.print("( ?" + varName + " = " + s + " )");
+ first = false;
+ }
+
+ void insertLineNumber() {
+ if ( !lineNumbers )
+ return;
+ String s = Integer.toString(count);
+ for ( int i = 0 ; i < 3 - s.length() ; i++ )
+ out.print(' ');
+ out.print(s);
+ out.print(' ');
+ }
}
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/RDFInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/RDFInput.java
index 495be93..4079f36 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/RDFInput.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/RDFInput.java
@@ -32,13 +32,12 @@
import org.apache.jena.sparql.vocabulary.ResultSetGraphVocab;
import org.apache.jena.vocabulary.RDF;
+/**
+ * Process a result set encoded in RDF according to
+ * <a href="http://www.w3.org/2001/sw/DataAccess/tests/result-set">http://www.w3.org/2001/sw/DataAccess/tests/result-set</a>
+ */
public class RDFInput extends ResultSetMem {
- /**
- * Process a result set encoded in RDF according to
- * <code>@link{http://www.w3.org/2001/sw/DataAccess/tests/result-set}#</code>
- *
- * @param model
- */
+
public RDFInput(Model model) {
buildFromDumpFormat(model);
}
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 6376fc4..25926ea 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
@@ -18,247 +18,151 @@
package org.apache.jena.sparql.resultset;
-import static org.apache.jena.riot.WebContent.* ;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFFormat;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.resultset.ResultSetLang;
+import org.apache.jena.sparql.util.TranslationTable;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.util.HashMap ;
-import java.util.Map ;
+/**
+ * The output formats for all query types.
+ * Result sets, boolean graphs.
+ * <p>
+ * This does not include results sets as RDF is elsewhere which is provided for tests with {@link RDFInput} and {@link RDFOutput}.
+ */
-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 ;
+public enum ResultsFormat {
+ // Results formats, by surface syntax.
+ // Used by commands.
-// Better ....
-//public enum ResultFormat
-//{
-// // Merge with our system wide naming (WebContent?)
-// FMT_RS_XML , FMT_RS_JSON , FMT_RS_CSV , FMT_RS_TSV , FMT_RS_SSE , FMT_RS_BIO ,
-// FMT_NONE , FMT_TEXT , FMT_TUPLES , FMT_COUNT ,
-// FMT_RS_RDF , FMT_RDF_XML , FMT_RDF_N3 , FMT_RDF_TTL , FMT_RDF_TURTLE , FMT_RDF_NT ,
-// FMT_UNKNOWN ;
+ XML(ResultSetLang.RS_XML, RDFFormat.RDFXML_ABBREV),
+ JSON(ResultSetLang.RS_JSON, RDFFormat.JSONLD11),
+ TEXT(ResultSetLang.RS_Text, RDFFormat.TURTLE),
+ CSV(ResultSetLang.RS_CSV, null),
+ TSV(ResultSetLang.RS_TSV, null),
-// Old world.
-public class ResultsFormat extends Symbol
-{
- private ResultsFormat(String symbol) {
- super(symbol);
+ THRIFT(ResultSetLang.RS_Thrift, RDFFormat.RDF_THRIFT),
+ PROTOBUF(ResultSetLang.RS_Protobuf, RDFFormat.RDF_PROTO),
+
+ // result set as RDF is handled specially
+ TTL(null, RDFFormat.TURTLE),
+ NT(null, RDFFormat.NTRIPLES),
+ RDFXML(null, RDFFormat.RDFXML),
+ RDF_JSONLD(null, RDFFormat.JSONLD),
+
+ // Special name.
+ COUNT(null, null),
+
+ NONE(ResultSetLang.RS_None, RDFFormat.RDFNULL),
+
+ SSE(null, null),
+ TUPLES(null, null)
+ ;
+
+ private final Lang resultSetLang;
+ private final RDFFormat rdfFormat;
+ //private final boolean supportsBoolean;
+
+ ResultsFormat(Lang resultSetLang, RDFFormat rdfFormat) {
+ this.resultSetLang = resultSetLang;
+ this.rdfFormat = rdfFormat;
+
+ //this.supportsBoolean = supportsBoolean;
}
- static public ResultsFormat FMT_RS_XML = new ResultsFormat(contentTypeResultsXML) ;
- static public ResultsFormat FMT_RS_JSON = new ResultsFormat(contentTypeResultsJSON) ;
-
- static public ResultsFormat FMT_RS_THRIFT = new ResultsFormat(contentTypeResultsThrift) ;
- static public ResultsFormat FMT_RS_PROTOBUF = new ResultsFormat(contentTypeResultsProtobuf) ;
-
- static public ResultsFormat FMT_RS_CSV = new ResultsFormat(contentTypeTextCSV) ;
- static public ResultsFormat FMT_RS_TSV = new ResultsFormat(contentTypeTextTSV) ;
- static public ResultsFormat FMT_RS_SSE = new ResultsFormat(contentTypeSSE) ;
- static public ResultsFormat FMT_NONE = new ResultsFormat("none") ;
- 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) ;
- static public ResultsFormat FMT_RDF_TURTLE = new ResultsFormat(contentTypeTurtle) ;
- static public ResultsFormat FMT_RDF_NT = new ResultsFormat(contentTypeNTriples) ;
- static public ResultsFormat FMT_RDF_TRIG = new ResultsFormat(contentTypeTriG) ;
- static public ResultsFormat FMT_RDF_NQ = new ResultsFormat(contentTypeNQuads) ;
- static public ResultsFormat FMT_RDF_JSONLD = new ResultsFormat(contentTypeJSONLD) ;
- static public ResultsFormat FMT_UNKNOWN = new ResultsFormat("unknown") ;
-
- // ---- Compatibility
-
- // Common names to symbol (used by arq.rset)
- private static TranslationTable<ResultsFormat> names = new TranslationTable<>(true) ;
- static {
- names.put("srx", FMT_RS_XML) ;
- names.put("xml", FMT_RS_XML) ;
-
- names.put("json", FMT_RS_JSON) ;
- names.put("srj", FMT_RS_JSON) ;
-
- names.put("srt", FMT_RS_THRIFT) ;
- names.put("srp", FMT_RS_PROTOBUF) ;
-
- names.put("sse", FMT_RS_SSE) ;
- names.put("csv", FMT_RS_CSV) ;
- names.put("tsv", FMT_RS_TSV) ;
- names.put("text", FMT_TEXT) ;
- names.put("count", FMT_COUNT) ;
- names.put("tuples", FMT_TUPLES) ;
- names.put("none", FMT_NONE) ;
-
- names.put("rdf", FMT_RDF_XML) ;
- names.put("rdf/n3", FMT_RDF_N3) ;
- names.put("rdf/xml", FMT_RDF_XML) ;
- names.put("n3", FMT_RDF_N3) ;
- names.put("ttl", FMT_RDF_TTL) ;
- names.put("turtle", FMT_RDF_TTL) ;
- names.put("graph", FMT_RDF_TTL) ;
- names.put("nt", FMT_RDF_NT) ;
- names.put("n-triples", FMT_RDF_NT) ;
- names.put("ntriples", FMT_RDF_NT) ;
- names.put("jsonld", FMT_RDF_JSONLD) ;
- names.put("json-ld", FMT_RDF_JSONLD) ;
-
- names.put("nq", FMT_RDF_NQ) ;
- names.put("nquads", FMT_RDF_NQ) ;
- names.put("n-quads", FMT_RDF_NQ) ;
- names.put("trig", FMT_RDF_TRIG) ;
+ public Lang resultSetLang() {
+ return resultSetLang;
}
- public static ResultsFormat guessSyntax(String url) {
- return guessSyntax(url, FMT_RS_XML);
+ public RDFFormat rdfFormat() {
+ return rdfFormat;
}
- public static boolean isRDFGraphSyntax(ResultsFormat fmt) {
- if ( FMT_RDF_N3.equals(fmt) )
- return true;
- if ( FMT_RDF_TURTLE.equals(fmt) )
- return true;
- if ( FMT_RDF_XML.equals(fmt) )
- return true;
- if ( FMT_RDF_NT.equals(fmt) )
- return true;
- return false;
- }
+//
+// public boolean supportsBoolean() {
+// return supportsBoolean;
+// }
+//
+// public boolean isResultSet() {
+// return ResultSetLang.isRegistered(lang());
+// }
- public static boolean isDatasetSyntax(ResultsFormat fmt) {
- if ( FMT_RDF_TRIG.equals(fmt) )
- return true;
- if ( FMT_RDF_NQ.equals(fmt) )
- return true;
- return false;
- }
-
- public static ResultsFormat guessSyntax(String url, ResultsFormat defaultFormat) {
- // -- XML
- if ( url.endsWith(".srx") )
- return FMT_RS_XML;
- if ( url.endsWith(".xml") )
- return FMT_RS_XML;
-
- // -- Some kind of RDF
- if ( url.endsWith(".rdf") )
- return FMT_RDF_XML;
- if ( url.endsWith(".n3") )
- return FMT_RDF_N3;
- if ( url.endsWith(".ttl") )
- return FMT_RDF_TURTLE;
-
- // -- JSON
- if ( url.endsWith(".srj") )
- return FMT_RS_JSON;
- if ( url.endsWith(".json") )
- return FMT_RS_JSON;
- if ( url.endsWith(".yml") )
- return FMT_RS_JSON;
-
- // -- Thrift
- if ( url.endsWith(".srt") )
- return FMT_RS_THRIFT;
- // -- Thrift
- if ( url.endsWith(".srp") )
- return FMT_RS_PROTOBUF;
-
- // -- SSE : http://jena.apache.org/documentation/notes/sse.html
- if ( url.endsWith(".sse") )
- return FMT_RS_SSE;
-
- // Likely to be something completely different!
- if ( url.endsWith(".csv") )
- return FMT_RS_CSV;
- if ( url.endsWith(".tsv") )
- return FMT_RS_TSV;
-
- // -- Dataset
- if ( url.endsWith(".trig") )
- return FMT_RDF_TRIG;
- if ( url.endsWith(".nq") )
- return FMT_RDF_NQ;
-
- return defaultFormat;
+ /** Guess the syntax of a result set URL */
+ public static ResultsFormat guessSyntax(String resultsFilename) {
+ Lang rsLang = RDFLanguages.pathnameToLang(resultsFilename);
+ if ( rsLang == null )
+ return null;
+// if ( ! ResultSetLang.isRegistered(rsLang) )
+// return null;
+ ResultsFormat[] enums = ResultsFormat.values();
+ for ( ResultsFormat rsFmt : enums ) {
+ if ( rsFmt.resultSetLang().equals(rsLang) )
+ return rsFmt;
+ }
+ return null;
}
/**
* Look up a short name for a result set FMT_
*
- * @param s
- * Short name
+ * @param shortname Short name
* @return ResultSetFormat
*/
- public static ResultsFormat lookup(String s) {
- return names.lookup(s);
+ public static ResultsFormat lookup(String shortname) {
+ return names.lookup(shortname);
}
- /**
- * 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<>() ;
+ // Common names to symbol (used by arq.rset)
+ private static TranslationTable<ResultsFormat> names = new TranslationTable<>(true) ;
static {
- mapResultsFormatToLang.put(ResultsFormat.FMT_NONE, ResultSetLang.RS_None) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_CSV, ResultSetLang.RS_CSV) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_TSV, ResultSetLang.RS_TSV) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_XML, ResultSetLang.RS_XML) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_JSON, ResultSetLang.RS_JSON) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_THRIFT, ResultSetLang.RS_Thrift) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_RS_PROTOBUF, ResultSetLang.RS_Protobuf) ;
- mapResultsFormatToLang.put(ResultsFormat.FMT_TEXT, ResultSetLang.RS_Text);
- }
+ names.put("srx", XML) ;
+ names.put("xml", XML) ;
- public static Lang convert(ResultsFormat fmt) {
- return mapResultsFormatToLang.get(fmt) ;
- }
+ names.put("json", JSON) ;
+ names.put("srj", JSON) ;
- /** 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 ;
- }
+ names.put("srt", THRIFT) ;
+ names.put("srp", PROTOBUF) ;
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) ) {
- RDFOutput.outputAsRDF(out, "RDF/XML-ABBREV", resultSet) ;
- return true;
- }
+ names.put("rdfxml", RDFXML) ;
+ names.put("rdf", TTL) ;
+ names.put("ttl", TTL);
+ names.put("turtle", TTL);
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
- RDFOutput.outputAsRDF(out, "TTL", resultSet) ;
- return true;
- }
+ names.put("n-triples", NT);
+ names.put("ntriples", NT);
+ names.put("nt", NT);
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_NT) ) {
- RDFOutput.outputAsRDF(out, "N-TRIPLES", resultSet) ;
- return true;
- }
+ names.put("jsonld", RDF_JSONLD) ;
+ names.put("json-ld", RDF_JSONLD) ;
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_JSONLD) ) {
- RDFOutput.outputAsRDF(out, "JSONLD", resultSet) ;
- return true;
- }
+ names.put("sse", SSE) ;
+ names.put("csv", CSV) ;
+ names.put("tsv", TSV) ;
+ names.put("text", TEXT) ;
+ names.put("count", COUNT) ;
+ names.put("tuples", TUPLES) ;
+ names.put("none", NONE) ;
- if ( outputFormat.equals(ResultsFormat.FMT_TUPLES) ) {
- PlainFormat pFmt = new PlainFormat(out, prologue) ;
- ResultSetApply a = new ResultSetApply(resultSet, pFmt) ;
- a.apply() ;
- return true;
- }
+ //names.put("rdf", ???) ;
- return false;
+// names.put("rdf", RDF_XML) ;
+// names.put("rdf/n3", RDF_N3) ;
+// names.put("rdf/xml", RDF_XML) ;
+// names.put("n3", RDF_N3) ;
+// names.put("ttl", RDF_TTL) ;
+// names.put("turtle", RDF_TTL) ;
+// names.put("graph", RDF_TTL) ;
+// names.put("nt", RDF_NT) ;
+// names.put("n-triples", RDF_NT) ;
+// names.put("ntriples", RDF_NT) ;
+// names.put("jsonld", RDF_JSONLD) ;
+// names.put("json-ld", RDF_JSONLD) ;
+//
+// names.put("nq", RDF_NQ) ;
+// names.put("nquads", RDF_NQ) ;
+// names.put("n-quads", RDF_NQ) ;
+// names.put("trig", RDF_TRIG) ;
}
}
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExec.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExec.java
index 690425c..3301464 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExec.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExec.java
@@ -43,6 +43,6 @@
DatasetGraph dsg = BuilderGraph.buildDataset(list.get(1));
Op op = BuilderOp.build(list.get(2));
- QueryExecUtils.execute(op, dsg, ResultsFormat.FMT_TEXT);
+ QueryExecUtils.execute(op, dsg, ResultsFormat.TEXT);
}
}
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 bfef9db..657b618 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
@@ -18,6 +18,7 @@
package org.apache.jena.sparql.util ;
+import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List ;
@@ -28,7 +29,9 @@
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.RDFFormat;
+import org.apache.jena.riot.RDFWriter;
+import org.apache.jena.riot.resultset.ResultSetLang;
import org.apache.jena.shared.PrefixMapping ;
import org.apache.jena.shared.impl.PrefixMappingImpl ;
import org.apache.jena.sparql.ARQConstants ;
@@ -44,9 +47,10 @@
import org.apache.jena.sparql.engine.ResultSetStream;
import org.apache.jena.sparql.exec.QueryExec;
import org.apache.jena.sparql.exec.QueryExecutionAdapter;
-import org.apache.jena.sparql.resultset.RDFOutput ;
+import org.apache.jena.sparql.resultset.RDFOutput;
import org.apache.jena.sparql.resultset.ResultsFormat ;
import org.apache.jena.sparql.resultset.ResultsWriter;
+import org.apache.jena.sparql.resultset.SPARQLResult;
/** Some utilities for query processing. */
public class QueryExecUtils {
@@ -72,14 +76,14 @@
}
public static void exec(Prologue prologue, QueryExec queryExec) {
- exec(prologue, queryExec, ResultsFormat.FMT_TEXT) ;
+ exec(prologue, queryExec, ResultsFormat.TEXT) ;
}
public static void exec(Prologue prologue, QueryExec queryExec, ResultsFormat outputFormat) {
exec(prologue, queryExec, outputFormat, System.out);
}
- public static void exec(Prologue prologue, QueryExec queryExec, ResultsFormat outputFormat, PrintStream output) {
+ public static void exec(Prologue prologue, QueryExec queryExec, ResultsFormat outputFormat, OutputStream output) {
QueryExecution queryExecution = QueryExecutionAdapter.adapt(queryExec);
executeQuery(prologue, queryExecution, outputFormat, output);
}
@@ -89,14 +93,14 @@
}
public static void executeQuery(Prologue prologue, QueryExecution queryExecution) {
- executeQuery(prologue, queryExecution, ResultsFormat.FMT_TEXT) ;
+ executeQuery(prologue, queryExecution, ResultsFormat.TEXT) ;
}
public static void executeQuery(Prologue prologue, QueryExecution queryExecution, ResultsFormat outputFormat) {
executeQuery(prologue, queryExecution, outputFormat, System.out);
}
- public static void executeQuery(Prologue prologue, QueryExecution queryExecution, ResultsFormat outputFormat, PrintStream output) {
+ public static void executeQuery(Prologue prologue, QueryExecution queryExecution, ResultsFormat outputFormat, OutputStream output) {
Query query = queryExecution.getQuery() ;
if ( prologue == null && query != null )
prologue = query.getPrologue() ;
@@ -117,18 +121,17 @@
doJsonQuery(prologue, queryExecution, outputFormat, output) ;
else
throw new QueryException("Unrecognized query form");
- output.flush();
}
public static void execute(Op op, DatasetGraph dsg) {
- execute(op, dsg, ResultsFormat.FMT_TEXT) ;
+ execute(op, dsg, ResultsFormat.TEXT) ;
}
public static void execute(Op op, DatasetGraph dsg, ResultsFormat outputFormat) {
execute(op, dsg, outputFormat, System.out);
}
- public static void execute(Op op, DatasetGraph dsg, ResultsFormat outputFormat, PrintStream output) {
+ public static void execute(Op op, DatasetGraph dsg, ResultsFormat outputFormat, OutputStream output) {
QueryIterator qIter = Algebra.exec(op, dsg) ;
List<Var> vars = null ;
@@ -141,196 +144,140 @@
ResultSet results = ResultSetStream.create(vars, qIter) ;
outputResultSet(results, null, outputFormat, output) ;
- output.flush();
}
- public static void outputResultSet(ResultSet results, Prologue prologue, ResultsFormat outputFormat, PrintStream output) {
- 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 ) {
- Context context = ARQ.getContext().copy();
- if ( prologue != null )
- context.set(ARQConstants.symPrologue, prologue);
- ResultsWriter.create().context(context).lang(lang).build().write(output, results);
- output.flush() ;
- return ;
+
+ public static void output(SPARQLResult result, ResultsFormat outputFormat, OutputStream output) {
+ if ( result.isResultSet() ) {
+ ResultSet rs = result.getResultSet();
+ outputResultSet(rs, null, outputFormat, output);
+ return;
}
- boolean done = ResultsFormat.oldWrite(output, outputFormat, prologue, results);
- if ( !done )
- System.err.println("Unknown format request: " + outputFormat) ;
- output.flush() ;
+ if ( result.isModel() ) {
+ Model m = result.getModel();
+ writeModel(m, outputFormat, output);
+ return;
+ }
+
+ if ( result.isGraph() ) {}
+
+ if ( result.isDataset() ) {
+ writeDataset(result.getDataset(), outputFormat, output);
+ return;
+ }
+ if ( result.isJson() ) {
+ result.getJsonItems();
+ return;
+ }
}
- private static void doSelectQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, PrintStream output) {
+ public static void outputResultSet(ResultSet resultSet, Prologue prologue, ResultsFormat outputFormat, OutputStream output) {
+ if ( prologue == null )
+ prologue = new Prologue(globalPrefixMap) ;
+
+ if ( outputFormat == ResultsFormat.TEXT ) {
+ ResultSetFormatter.out(output, resultSet);
+ return;
+ }
+
+ if ( outputFormat == ResultsFormat.COUNT ) {
+ long count = ResultSetFormatter.consume(resultSet);
+ String text = String.format("%d\n", count);
+ try ( PrintStream ps = new PrintStream(output) ) {
+ ps.print(text);
+ }
+ return;
+ }
+
+ Lang rsLang = outputFormat.resultSetLang();
+
+ if ( rsLang == null ) {
+ RDFFormat asRDF = outputFormat.rdfFormat();
+ Model model = RDFOutput.encodeAsModel(resultSet);
+ RDFWriter.source(model).format(asRDF).output(output);
+ return;
+ }
+
+ if ( ! ResultSetLang.isRegistered(rsLang) )
+ throw noFormatException("Not a result set output lang: "+rsLang.getName());
+
+ Context context = ARQ.getContext().copy();
+ if ( prologue != null )
+ context.set(ARQConstants.symPrologue, prologue);
+ ResultsWriter.create().context(context).lang(rsLang).build().write(output, resultSet);
+ return ;
+ }
+
+ private static void doSelectQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, OutputStream output) {
if ( prologue == null )
prologue = qe.getQuery().getPrologue() ;
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_TEXT ;
+ if ( outputFormat == null )
+ outputFormat = ResultsFormat.TEXT;
ResultSet results = qe.execSelect() ;
outputResultSet(results, prologue, outputFormat, output) ;
}
- private static void doJsonQuery(Prologue prologue, QueryExecution queryExecution, ResultsFormat outputFormat, PrintStream output) {
+ private static void doJsonQuery(Prologue prologue, QueryExecution queryExecution, ResultsFormat outputFormat, OutputStream output) {
JsonArray results = queryExecution.execJson();
JSON.write(output, results);
}
- private static void doDescribeQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, PrintStream output) {
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_RDF_TTL ;
+ private static void doDescribeQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, OutputStream output) {
Model r = qe.execDescribe() ;
- writeModel(prologue, r, outputFormat, output) ;
+ writeModel(r, outputFormat, output) ;
}
- private static void doConstructQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, PrintStream output) {
+ private static void doConstructQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, OutputStream output) {
if ( qe.getQuery().isConstructQuad() ) {
doConstructQuadsQuery(prologue, qe, outputFormat, output);
return;
}
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_RDF_TTL ;
Model r = qe.execConstruct() ;
- writeModel(prologue, r, outputFormat, output) ;
+ writeModel(r, outputFormat, output) ;
}
- private static void doConstructQuadsQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, PrintStream output) {
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_RDF_TRIG;
+ private static void doConstructQuadsQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, OutputStream output) {
Dataset ds = qe.execConstructDataset();
- writeDataset(prologue, ds, outputFormat, output) ;
- output.flush();
+ writeDataset(ds, outputFormat, output) ;
}
- private static void writeModel(Prologue prologue, Model model, ResultsFormat outputFormat, PrintStream output) {
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_TEXT ;
+ private static void doAskQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, OutputStream output) {
+ boolean resultBoolean = qe.execAsk() ;
- if ( outputFormat.equals(ResultsFormat.FMT_NONE) )
- return ;
-
- if ( outputFormat.equals(ResultsFormat.FMT_TEXT) ) {
- output.println("# ======== ") ;
- RDFDataMgr.write(output, model, Lang.TURTLE) ;
- output.println("# ======== ") ;
- return ;
+ if ( outputFormat == ResultsFormat.TEXT ) {
+ ResultSetFormatter.out(output, resultBoolean);
+ return;
}
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_XML) ) {
- model.write(output, "RDF/XML-ABBREV", null) ;
- return ;
+ Lang rsLang = outputFormat.resultSetLang();
+ if ( rsLang == null ) {
+ RDFFormat asRDF = outputFormat.rdfFormat();
+ Model model = RDFOutput.encodeAsModel(resultBoolean);
+ RDFWriter.source(model).format(asRDF).output(output);
+ return;
}
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
- model.write(output, "N3", null) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_N3) ) {
- model.write(output, "N3", null) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_NT) ) {
- model.write(output, "N-TRIPLES", null) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_NQ) ) {
- model.write(output, "N-QUADS", null) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_TRIG) ) {
- model.write(output, "TriG", null) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_JSONLD) ) {
- RDFDataMgr.write(output, model, Lang.JSONLD) ;
- return ;
- }
-
- System.err.println("Unknown format: " + outputFormat) ;
+ ResultsWriter.create().lang(rsLang).build().write(output, resultBoolean);
}
- private static void writeDataset(Prologue prologue, Dataset dataset, ResultsFormat outputFormat, PrintStream output) {
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_TEXT ;
+ private static void writeModel(Model model, ResultsFormat outputFormat, OutputStream output) {
+ RDFFormat rdfFormat = RDFFormat.TURTLE_PRETTY;
+ RDFWriter.source(model).format(rdfFormat).output(output);
+ return;
+ }
- if ( outputFormat.equals(ResultsFormat.FMT_NONE) )
- return ;
-
- if ( outputFormat.equals(ResultsFormat.FMT_TEXT) ) {
- output.println("# ======== ") ;
- RDFDataMgr.write(output, dataset, Lang.TURTLE) ;
- output.println("# ======== ") ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_NQ) ) {
- RDFDataMgr.write(output, dataset, Lang.NQUADS);
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_TRIG) ) {
- RDFDataMgr.write(output, dataset, Lang.TRIG);
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_JSONLD) ) {
- RDFDataMgr.write(output, dataset, Lang.JSONLD);
- return ;
- }
-
- System.err.println("Unknown format: " + outputFormat) ;
+ private static void writeDataset(Dataset dataset, ResultsFormat outputFormat, OutputStream output) {
+ RDFFormat rdfFormat = outputFormat.rdfFormat();
+ if ( rdfFormat == null )
+ throw noFormatException("No dataset output format for : "+outputFormat.name());
+ RDFWriter.source(dataset).format(rdfFormat).output(output);
+ return;
}
- private static void doAskQuery(Prologue prologue, QueryExecution qe, ResultsFormat outputFormat, PrintStream output) {
- boolean b = qe.execAsk() ;
-
- if ( outputFormat == null || outputFormat == ResultsFormat.FMT_UNKNOWN )
- outputFormat = ResultsFormat.FMT_TEXT ;
-
- if ( outputFormat.equals(ResultsFormat.FMT_NONE) )
- return ;
-
- if ( outputFormat.equals(ResultsFormat.FMT_RS_XML) ) {
- ResultSetFormatter.outputAsXML(output, b) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RDF_N3) || outputFormat.equals(ResultsFormat.FMT_RDF_TTL) ) {
- RDFOutput.outputAsRDF(output, "TURTLE", b) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RS_JSON) ) {
- ResultSetFormatter.outputAsJSON(output, b) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_TEXT) ) {
- // ResultSetFormatter.out(System.out, b) ;
- System.out.println("Ask => " + (b ? "Yes" : "No")) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RS_CSV) ) {
- ResultSetFormatter.outputAsCSV(System.out, b) ;
- return ;
- }
-
- if ( outputFormat.equals(ResultsFormat.FMT_RS_TSV) ) {
- ResultSetFormatter.outputAsTSV(System.out, b) ;
- return ;
- }
- System.err.println("Unknown format: " + outputFormat) ;
+ private static RuntimeException noFormatException(String msg) {
+ return new ARQException(msg);
}
/**
diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryTestItem.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryTestItem.java
index 4f50a83..b2bebb8 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryTestItem.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryTestItem.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.jena.arq.junit.sparql.tests ;
+package org.apache.jena.arq.junit.sparql.tests;
import java.util.ArrayList;
import java.util.List;
@@ -29,10 +29,9 @@
import org.apache.jena.query.Dataset;
import org.apache.jena.query.ResultSetFactory;
import org.apache.jena.rdf.model.Model;
-import org.apache.jena.rdf.model.ModelFactory;
-import org.apache.jena.riot.RDFDataMgr;
-import org.apache.jena.sparql.graph.GraphFactory;
-import org.apache.jena.sparql.resultset.ResultsFormat;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.resultset.ResultSetLang;
import org.apache.jena.sparql.resultset.SPARQLResult;
import org.apache.jena.sparql.vocabulary.TestManifestX;
import org.apache.jena.sparql.vocabulary.VocabTestQuery;
@@ -49,10 +48,10 @@
*/
public class QueryTestItem
{
- static int counter = 0 ;
+ static int counter = 0;
public static String fakeURI() {
- return "test:" + (++counter) ;
+ return "test:" + (++counter);
}
private final ManifestEntry manifestEntry;
@@ -60,18 +59,18 @@
private final Node testResource;
private final Node actionResource;
- private final String name ;
+ private final String name;
- private boolean buildLuceneIndex = false ;
- private final String resultFile ;
- private final String comment ;
- private List<String> defaultGraphURIs ;
- private List<String> namedGraphURIs ;
+ private boolean buildLuceneIndex = false;
+ private final String resultFile;
+ private final String comment;
+ private List<String> defaultGraphURIs;
+ private List<String> namedGraphURIs;
private final Node testType;
private final String queryFile;
public static QueryTestItem create(ManifestEntry entry, Node defaultTestType) {
- return new QueryTestItem(entry, defaultTestType) ;
+ return new QueryTestItem(entry, defaultTestType);
}
private QueryTestItem(ManifestEntry entry, Node defaultTestType) {
@@ -83,30 +82,30 @@
actionResource = G.getOneSP(graph, testResource, TestManifest.action.asNode());
if ( ! G.hasProperty(graph, testResource, TestManifest.name.asNode()) )
- throw new TestSetupException("TestItem with no name (" + entry + ")") ;
- name = _getName() ;
+ throw new TestSetupException("TestItem with no name (" + entry + ")");
+ name = _getName();
if ( ! G.hasProperty(graph, testResource, TestManifest.action.asNode()) )
- throw new TestSetupException("TestItem '" + name + "' with no action") ;
+ throw new TestSetupException("TestItem '" + name + "' with no action");
// Assumes one type per test only.
- Node _testType = G.getZeroOrOneSP(graph, testResource, RDF.Nodes.type) ;
+ Node _testType = G.getZeroOrOneSP(graph, testResource, RDF.Nodes.type);
if ( _testType == null )
- _testType = defaultTestType ;
+ _testType = defaultTestType;
testType = _testType;
- resultFile = _getResultFile() ;
- comment = _getComment() ;
+ resultFile = _getResultFile();
+ comment = _getComment();
- defaultGraphURIs = _getDefaultGraphURIs() ;
- namedGraphURIs = _getNamedGraphsURIs() ;
+ defaultGraphURIs = _getDefaultGraphURIs();
+ namedGraphURIs = _getNamedGraphsURIs();
queryFile = SparqlTestLib.queryFile(entry);
- buildLuceneIndex = _getTextIndex() ;
+ buildLuceneIndex = _getTextIndex();
}
public Node getResource() {
- return testResource ;
+ return testResource;
}
public Node getAction() {
@@ -115,56 +114,56 @@
/** @return Returns the testType. */
public Node getTestType() {
- return testType ;
+ return testType;
}
public String getQueryFile() {
- return queryFile ;
+ return queryFile;
}
public String getResultFile() {
- return resultFile ;
+ return resultFile;
}
/**
- * Load results as a SPARQLResult. If the results are a model, no conversion
- * to a result set is attempted here.
+ * Load tests results as a SPARQLResult.
+ * <p>
+ * If the results are an RDF graph, no
+ * conversion to a result set is attempted here.
*/
public SPARQLResult getResults() {
if ( resultFile == null )
- return null ;
- ResultsFormat format = ResultsFormat.guessSyntax(resultFile) ;
+ return null;
+ Lang lang = RDFLanguages.pathnameToLang(resultFile);
- if ( ResultsFormat.isRDFGraphSyntax(format) ) {
- // Load plain.
- Graph g = GraphFactory.createDefaultGraph();
- SparqlTestLib.parser(resultFile).parse(g);
- Model m = ModelFactory.createModelForGraph(g);
- return new SPARQLResult(m) ;
+ if ( ResultSetLang.isRegistered(lang) ) {
+ // Attempt to handle as a resultset or boolean result.s
+ SPARQLResult x = ResultSetFactory.result(resultFile);
+ return x;
}
- if ( ResultsFormat.isDatasetSyntax(format) ) {
- Dataset d = RDFDataMgr.loadDataset(resultFile) ;
- return new SPARQLResult(d) ;
+ if ( RDFLanguages.isTriples(lang) ) {
+ // Load plain. No warnings.
+ Model m = SparqlTestLib.parser(resultFile).toModel();
+ return new SPARQLResult(m);
+ } else {
+ Dataset d = SparqlTestLib.parser(resultFile).toDataset();
+ return new SPARQLResult(d);
}
-
- // Attempt to handle as a resultset or boolean result.s
- SPARQLResult x = ResultSetFactory.result(resultFile) ;
- return x ;
}
public String getName() {
- return name ;
+ return name;
}
public String getURI() {
if ( testResource != null && testResource.isURI() )
- return testResource.getURI() ;
- return fakeURI() ;
+ return testResource.getURI();
+ return fakeURI();
}
public String getComment() {
- return comment ;
+ return comment;
}
public ManifestEntry getManifestEntry() {
@@ -172,19 +171,19 @@
}
public List<String> getDefaultGraphURIs() {
- return defaultGraphURIs ;
+ return defaultGraphURIs;
}
public List<String> getNamedGraphURIs() {
- return namedGraphURIs ;
+ return namedGraphURIs;
}
public boolean requiresTextIndex() {
- return buildLuceneIndex ;
+ return buildLuceneIndex;
}
private String _getName() {
- Node x = G.getOneSP(graph, testResource, TestManifest.name.asNode()) ;
+ Node x = G.getOneSP(graph, testResource, TestManifest.name.asNode());
if ( ! testResource.isURI() )
return G.asString(x);
String ln = SplitIRI.localname(testResource.getURI());
@@ -193,8 +192,8 @@
// private Resource _getAction() {
// if ( actionResource == null )
-// actionResource = testResource.getProperty(TestManifest.action).getResource() ;
-// return actionResource ;
+// actionResource = testResource.getProperty(TestManifest.action).getResource();
+// return actionResource;
// }
//
private String _getResultFile() {
@@ -205,9 +204,9 @@
}
private String _getComment() {
- Node c = G.getZeroOrOneSP(graph, testResource, RDFS.Nodes.comment) ;
+ Node c = G.getZeroOrOneSP(graph, testResource, RDFS.Nodes.comment);
if ( c == null )
- return null ;
+ return null;
return c.getLiteralLexicalForm();
}
@@ -224,15 +223,15 @@
private List<String> _getDefaultGraphURIs() {
if ( ! actionResource.isBlank() )
// Action is not a blank node - the data had better be in the query itself.
- return null ;
+ return null;
- List<String> l = new ArrayList<>() ;
+ List<String> l = new ArrayList<>();
G.listSP(graph, actionResource, VocabTestQuery.data.asNode()).forEach(x->{
if ( ! x.isURI() )
throw new TestSetupException("Deafult Graph URI is not a URI: "+x);
- l.add(x.getURI()) ;
+ l.add(x.getURI());
});
- return l ;
+ return l;
}
/**
@@ -244,22 +243,22 @@
private List<String> _getNamedGraphsURIs() {
if ( ! actionResource.isBlank() )
// Action is not a blank node - the data had better be in the query itself.
- return null ;
+ return null;
- List<String> l = new ArrayList<>() ;
+ List<String> l = new ArrayList<>();
G.listSP(graph, actionResource, VocabTestQuery.graphData.asNode()).forEach(x->{
if ( ! x.isURI() )
throw new TestSetupException("Deafult Graph URI is not a URI: "+x);
- l.add(x.getURI()) ;
+ l.add(x.getURI());
});
- return l ;
+ return l;
}
private boolean _getTextIndex() {
- Node x = G.getZeroOrOneSP(graph, testResource, TestManifestX.textIndex.asNode()) ;
+ Node x = G.getZeroOrOneSP(graph, testResource, TestManifestX.textIndex.asNode());
if ( x == null )
- return false ;
- return G.asString(x).equalsIgnoreCase("true") ;
+ return false;
+ return G.asString(x).equalsIgnoreCase("true");
}
// ----------------------------------------------------
@@ -267,14 +266,14 @@
@Override
public String toString() {
- StringBuilder sbuff = new StringBuilder() ;
- String name = getName() ;
- // String actionStr = FmtUtils.stringForRDFNode(_getAction()) ;
+ StringBuilder sbuff = new StringBuilder();
+ String name = getName();
+ // String actionStr = FmtUtils.stringForRDFNode(_getAction());
- sbuff.append("Name: " + name) ;
+ sbuff.append("Name: " + name);
if ( getComment() != null )
- sbuff.append(" Comment: " + getComment()) ;
- return sbuff.toString() ;
+ sbuff.append(" Comment: " + getComment());
+ return sbuff.toString();
}
}
diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
index 640aeb2..c6c80d4 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
@@ -37,7 +37,7 @@
/** Misc code to make the tests clearer */
class SparqlTestLib {
- // Data Parser - no warnings.
+ // Test data or results - no warnings.
static RDFParserBuilder parser(String sourceURI) {
return RDFParser.create().source(sourceURI).errorHandler(ErrorHandlerFactory.errorHandlerNoWarnings);
}
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java b/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
index 9c89a00..676c934 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
@@ -176,19 +176,19 @@
@Test
public void test_RS_7() {
ResultSet rs = ResultSetFactory.load(DIR + "output.srx");
- test_RS_fmt(rs, ResultsFormat.FMT_RS_XML, true);
+ test_RS_fmt(rs, ResultsFormat.XML, true);
}
@Test
public void test_RS_8() {
ResultSet rs = ResultSetFactory.load(DIR + "output.srx");
- test_RS_fmt(rs, ResultsFormat.FMT_RS_JSON, true);
+ test_RS_fmt(rs, ResultsFormat.JSON, true);
}
@Test
public void test_RS_9() {
ResultSet rs = ResultSetFactory.load(DIR + "output.srx");
- test_RS_fmt(rs, ResultsFormat.FMT_RDF_XML, false);
+ test_RS_fmt(rs, ResultsFormat.XML, false);
}
@Test
diff --git a/jena-cmds/src/main/java/arq/cmdline/ModResultsIn.java b/jena-cmds/src/main/java/arq/cmdline/ModResultsIn.java
index 5d097c7..af70cfb 100644
--- a/jena-cmds/src/main/java/arq/cmdline/ModResultsIn.java
+++ b/jena-cmds/src/main/java/arq/cmdline/ModResultsIn.java
@@ -30,7 +30,7 @@
protected final ArgDecl resultsInputFmtDecl = new ArgDecl(ArgDecl.HasValue, "in") ;
protected final ArgDecl fileDecl = new ArgDecl(ArgDecl.HasValue, "file") ;
- private ResultsFormat inputFormat = ResultsFormat.FMT_TEXT ;
+ private ResultsFormat inputFormat = ResultsFormat.TEXT;
private String resultsFilename = null ;
private ResultSet resultSet = null ;
diff --git a/jena-cmds/src/main/java/arq/cmdline/ModResultsOut.java b/jena-cmds/src/main/java/arq/cmdline/ModResultsOut.java
index 786d672..a0f61bf 100644
--- a/jena-cmds/src/main/java/arq/cmdline/ModResultsOut.java
+++ b/jena-cmds/src/main/java/arq/cmdline/ModResultsOut.java
@@ -31,7 +31,7 @@
public class ModResultsOut extends ModBase {
protected final ArgDecl resultsFmtDecl = new ArgDecl(ArgDecl.HasValue, "results", "out", "rfmt");
- private ResultsFormat resultsFormat = ResultsFormat.FMT_UNKNOWN;
+ private ResultsFormat resultsFormat = ResultsFormat.TEXT;
@Override
public void processArgs(CmdArgModule cmdline) throws IllegalArgumentException {
@@ -48,7 +48,7 @@
cmdLine.getUsage().startCategory("Results");
cmdLine.add(resultsFmtDecl,
"--results=",
- "Results format (Result set: text, XML, JSON, CSV, TSV; Graph: RDF serialization)") ;
+ "Results format (Result set: text, XML, JSON, CSV, TSV; Graph: RDF serialization)") ;
}
public void checkCommandLine(CmdArgModule cmdLine) {}
@@ -60,5 +60,4 @@
public ResultsFormat getResultsFormat() {
return resultsFormat;
}
-
}
diff --git a/jena-cmds/src/main/java/arq/query.java b/jena-cmds/src/main/java/arq/query.java
index f08f250..7ca0c85 100644
--- a/jena-cmds/src/main/java/arq/query.java
+++ b/jena-cmds/src/main/java/arq/query.java
@@ -235,8 +235,9 @@
Txn.executeRead(transactional, ()->{
modTime.startTimer() ;
try ( QueryExecution qe = QueryExecutionFactory.create(query, dataset) ) {
- try { QueryExecUtils.executeQuery(query, qe, fmt, resultsDest); }
- catch (QueryCancelledException ex) {
+ try {
+ QueryExecUtils.executeQuery(query, qe, fmt, resultsDest);
+ } catch (QueryCancelledException ex) {
IO.flush(resultsDest);
System.err.println("Query timed out");
}
diff --git a/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExampleDBpedia01.java b/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExampleDBpedia01.java
index d587fec..47c8014 100644
--- a/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExampleDBpedia01.java
+++ b/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExampleDBpedia01.java
@@ -42,7 +42,7 @@
.acceptHeaderSelectQuery(acceptHeader).parseCheckSPARQL(false).build()) {
try (QueryExecution qe = conn.query(queryString)) {
ResultSet rs = qe.execSelect();
- ResultSetFormatter.output(System.out, rs, ResultsFormat.FMT_TEXT);
+ ResultSetFormatter.output(System.out, rs, ResultsFormat.TEXT);
} catch (Exception e) {
System.out.println("Request failed: " + e.getMessage());
}