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 2011/08/13 21:33:56 UTC
svn commit: r1157411 - in /incubator/jena/Jena2/ARQ/trunk/src:
com/hp/hpl/jena/query/ com/hp/hpl/jena/sparql/engine/binding/
com/hp/hpl/jena/sparql/resultset/ com/hp/hpl/jena/sparql/util/
org/openjena/riot/
Author: andy
Date: Sat Aug 13 19:33:56 2011
New Revision: 1157411
URL: http://svn.apache.org/viewvc?rev=1157411&view=rev
Log:
JENA-98
Added:
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java (with props)
Modified:
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFactory.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFormatter.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultSetFormat.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultsFormat.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/util/QueryExecUtils.java
incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/WebContent.java
Added: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java?rev=1157411&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java Sat Aug 13 19:33:56 2011
@@ -0,0 +1,44 @@
+/**
+ * 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 com.hp.hpl.jena.query;
+
+import java.io.InputStream ;
+import java.util.List ;
+
+import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.rdf.model.ModelFactory ;
+import com.hp.hpl.jena.sparql.core.Var ;
+import com.hp.hpl.jena.sparql.engine.QueryIterator ;
+import com.hp.hpl.jena.sparql.engine.ResultSetStream ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingInputStream ;
+import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
+
+public class BIOInput
+{
+ private static Model m = ModelFactory.createDefaultModel() ;
+
+ public static ResultSet fromBIO(InputStream input)
+ {
+ BindingInputStream bin = new BindingInputStream(input) ;
+ List<Var> vars = bin.vars() ;
+ QueryIterator qIter = new QueryIterPlainWrapper(bin) ;
+ return new ResultSetStream(Var.varNames(vars), m, qIter) ;
+ }
+}
+
Propchange: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFactory.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFactory.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFactory.java Sat Aug 13 19:33:56 2011
@@ -120,6 +120,11 @@ public class ResultSetFactory
return TSVInput.fromTSV(input) ;
}
+ if ( format.equals(ResultSetFormat.syntaxBIO) )
+ {
+ return BIOInput.fromBIO(input) ;
+ }
+
Log.warn(ResultSet.class, "Unknown result set syntax: "+format) ;
return null ;
@@ -266,6 +271,12 @@ public class ResultSetFactory
ResultSet rs = TSVInput.fromTSV(in) ;
return new SPARQLResult(rs) ;
}
+ else if ( format.equals(ResultSetFormat.syntaxBIO) )
+ {
+ ResultSet rs = BIOInput.fromBIO(in) ;
+ return new SPARQLResult(rs) ;
+
+ }
}
if ( format.isRDFGraphSyntax() )
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFormatter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFormatter.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFormatter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/ResultSetFormatter.java Sat Aug 13 19:33:56 2011
@@ -1,5 +1,6 @@
/*
* (c) Copyright 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
+ * (c) Copyright 2011 Epimorphics Ltd.
* [See end of file]
*/
@@ -7,6 +8,7 @@ package com.hp.hpl.jena.query;
import java.io.ByteArrayOutputStream ;
import java.io.OutputStream ;
+import java.io.PrintStream ;
import java.io.PrintWriter ;
import java.io.UnsupportedEncodingException ;
import java.util.ArrayList ;
@@ -19,8 +21,14 @@ import com.hp.hpl.jena.rdf.model.Resourc
import com.hp.hpl.jena.shared.PrefixMapping ;
import com.hp.hpl.jena.sparql.ARQNotImplemented ;
import com.hp.hpl.jena.sparql.core.Prologue ;
+import com.hp.hpl.jena.sparql.core.Var ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingOutputStream ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingUtils ;
import com.hp.hpl.jena.sparql.resultset.* ;
import com.hp.hpl.jena.sparql.serializer.SerializationContext ;
+import com.hp.hpl.jena.sparql.util.VarUtils ;
+
import org.openjena.atlas.logging.Log ;
import com.hp.hpl.jena.util.FileUtils ;
@@ -705,12 +713,27 @@ public class ResultSetFormatter
TSVOutput fmt = new TSVOutput() ;
fmt.format(outStream, resultSet) ;
}
+
+ /** Output a result set in BIO format */
+ public static void outputAsBIO(PrintStream out, ResultSet results)
+ {
+ List<Var> vars = Var.varList(results.getResultVars()) ;
+
+ BindingOutputStream bout = new BindingOutputStream(out, vars) ;
+ for ( ; results.hasNext() ; )
+ {
+ Binding b = BindingUtils.asBinding(results.next()) ;
+ bout.write(b) ;
+ }
+ bout.flush() ;
+ }
}
/*
* (c) Copyright 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
+ * (c) Copyright 2011 Epimorphics Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java Sat Aug 13 19:33:56 2011
@@ -24,6 +24,7 @@ import static org.openjena.riot.tokens.T
import java.io.InputStream ;
import java.util.ArrayList ;
+import java.util.Collections ;
import java.util.Iterator ;
import java.util.List ;
@@ -130,14 +131,22 @@ public class BindingInputStream extends
//@Override
public void remove()
{ iter.remove() ; }
+
+ public List<Var> vars()
+ { return Collections.unmodifiableList(iter.vars) ; }
class IteratorTuples extends IteratorSlotted<Binding>
{
private Binding lastLine ;
- private List<Var> vars = new ArrayList<Var>() ;
+ List<Var> vars = new ArrayList<Var>() ;
- @Override
- protected Binding moveToNext()
+ // Process any directive immediately.
+ public IteratorTuples()
+ {
+ directives() ;
+ }
+
+ private void directives()
{
while ( lookingAt(TokenType.KEYWORD) )
{
@@ -153,6 +162,15 @@ public class BindingInputStream extends
continue ;
}
}
+ }
+
+
+
+ @Override
+ protected Binding moveToNext()
+ {
+ directives() ;
+
Binding binding = BindingFactory.create() ;
int i = 0 ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java Sat Aug 13 19:33:56 2011
@@ -47,7 +47,7 @@ public class BindingOutputStream impleme
public BindingOutputStream(OutputStream out)
{
- this(out, new PrefixMap()) ;
+ this(out, null, null) ;
}
public BindingOutputStream(OutputStream out, PrefixMap prefixMapping)
@@ -55,6 +55,11 @@ public class BindingOutputStream impleme
this(out, null, prefixMapping) ;
}
+ public BindingOutputStream(OutputStream out, List<Var> vars)
+ {
+ this(out, vars, null) ;
+ }
+
public BindingOutputStream(OutputStream out, List<Var> vars, PrefixMap prefixMapping)
{
this( BufferingWriter.create(out) , vars, prefixMapping) ;
@@ -65,6 +70,8 @@ public class BindingOutputStream impleme
bw = out ;
vars = variables ;
pmap = prefixMapping ;
+ if ( pmap == null )
+ pmap = new PrefixMap() ;
needOutputVars = (vars != null ) && vars.size() > 0 ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultSetFormat.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultSetFormat.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultSetFormat.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultSetFormat.java Sat Aug 13 19:33:56 2011
@@ -28,6 +28,7 @@ public class ResultSetFormat extends Sym
public static final ResultSetFormat syntaxSSE = new ResultSetFormat("RS_SSE") ;
public static final ResultSetFormat syntaxCSV = new ResultSetFormat("RS_CSV") ;
public static final ResultSetFormat syntaxTSV = new ResultSetFormat("RS_TSV") ;
+ public static final ResultSetFormat syntaxBIO = new ResultSetFormat("RS_BIO") ;
// Common names to symbol (used by arq.rset)
protected static TranslationTable<ResultSetFormat> syntaxNames = new TranslationTable<ResultSetFormat>(true) ;
@@ -46,6 +47,7 @@ public class ResultSetFormat extends Sym
syntaxNames.put("sse", syntaxSSE) ;
syntaxNames.put("csv", syntaxCSV) ;
syntaxNames.put("tsv", syntaxTSV) ;
+ syntaxNames.put("srb", syntaxBIO) ;
}
protected ResultSetFormat(String symbol) { super(symbol) ; }
@@ -109,7 +111,10 @@ public class ResultSetFormat extends Sym
if ( url.endsWith(".sse") )
return syntaxSSE ;
- // Likelyto be something completely different!
+ if ( url.endsWith(".srb") ) // BindingsIO format.
+ return syntaxBIO ;
+
+ // Likely to be something completely different!
if ( url.endsWith(".csv") )
return syntaxCSV ;
if ( url.endsWith(".tsv") )
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultsFormat.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultsFormat.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultsFormat.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/resultset/ResultsFormat.java Sat Aug 13 19:33:56 2011
@@ -11,7 +11,7 @@ import com.hp.hpl.jena.sparql.util.Trans
public class ResultsFormat extends Symbol
{
- // c.f ResultSetFormat.
+ // c.f ResultSetFormat. Why aren't these the same?
/* Select formats - full names */
public final static ResultsFormat FMT_RS_RDF = new ResultsFormat("rs/graph") ; /** Format of result set is an RDF graph */
@@ -20,6 +20,7 @@ public class ResultsFormat extends Symbo
public final static ResultsFormat FMT_RS_SSE = new ResultsFormat("rs/sse") ; /** Format of result set as SSE */
public final static ResultsFormat FMT_RS_CSV = new ResultsFormat("rs/csv") ;
public final static ResultsFormat FMT_RS_TSV = new ResultsFormat("rs/tsv") ;
+ public final static ResultsFormat FMT_RS_BIO = new ResultsFormat("rs/bio") ;
public final static ResultsFormat FMT_NONE = new ResultsFormat("none") ; /** No output */
public final static ResultsFormat FMT_TEXT = new ResultsFormat("rs/text") ; /** Any kind of text */
@@ -34,8 +35,6 @@ public class ResultsFormat extends Symbo
public final static ResultsFormat FMT_RDF_TTL = new ResultsFormat("Turtle") ;
public final static ResultsFormat FMT_RDF_NT = new ResultsFormat("N-TRIPLES") ;
-
-
public final static ResultsFormat FMT_UNKNOWN = new ResultsFormat("unknown") ;
static TranslationTable<ResultsFormat> resultFormats = new TranslationTable<ResultsFormat>(true) ;
@@ -62,6 +61,10 @@ public class ResultsFormat extends Symbo
resultFormats.put("srj", FMT_RS_JSON ) ;
resultFormats.put("json", FMT_RS_JSON ) ;
+
+ resultFormats.put("srb", FMT_RS_BIO ) ;
+ resultFormats.put("bio", FMT_RS_BIO ) ;
+
// result set - SSE tables
resultFormats.put("rs/sse", FMT_RS_SSE ) ;
resultFormats.put("sse", FMT_RS_SSE ) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/util/QueryExecUtils.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/util/QueryExecUtils.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/util/QueryExecUtils.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/util/QueryExecUtils.java Sat Aug 13 19:33:56 2011
@@ -152,6 +152,12 @@ public class QueryExecUtils
done = true ;
}
+ if ( outputFormat.equals(ResultsFormat.FMT_RS_BIO ) )
+ {
+ ResultSetFormatter.outputAsBIO(System.out, results) ;
+ done = true ;
+ }
+
if ( ! done )
System.err.println("Unknown format request: "+outputFormat) ;
results = null ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/WebContent.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/WebContent.java?rev=1157411&r1=1157410&r2=1157411&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/WebContent.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/WebContent.java Sat Aug 13 19:33:56 2011
@@ -50,6 +50,8 @@ public class WebContent
public static final String contentTypeResultsXML = "application/sparql-results+xml" ;
public static final String contentTypeResultsJSON = "application/sparql-results+json" ;
+ // Unofficial
+ public static final String contentTypeResultsBIO = "application/sparql-results+bio" ;
public static final String contentTypeSPARQLQuery = "application/sparql-query" ;
public static final String contentTypeSPARQLUpdate = "application/sparql-update" ;