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" ;