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 2016/09/10 21:08:42 UTC

[1/2] jena git commit: Tidy up transactions

Repository: jena
Updated Branches:
  refs/heads/master 110628be7 -> 350082c3e


Tidy up transactions


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

Branch: refs/heads/master
Commit: 92dfa11122248bf21fb875f12856dd3c991511fd
Parents: 110628b
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Sep 9 16:34:28 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Sep 9 16:34:28 2016 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sdb/sql/SDBConnection.java  |  3 ++-
 .../jena/sdb/test/junit/QueryTestSDB.java       | 22 ++++++++------------
 2 files changed, 11 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/92dfa111/jena-sdb/src/main/java/org/apache/jena/sdb/sql/SDBConnection.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/SDBConnection.java b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/SDBConnection.java
index 006d586..3d217c8 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/SDBConnection.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/SDBConnection.java
@@ -137,6 +137,7 @@ public class SDBConnection
         { throw ex ; }
     }
 
+    @Deprecated
     public Object executeInTransaction(Command c) {
         return getTransactionHandler().executeInTransaction(c) ;
     }
@@ -145,7 +146,7 @@ public class SDBConnection
         getTransactionHandler().execute(action) ;
     }
 
-    public <T> T executeRtn(Supplier<T> action) {
+    public <T> T calculate(Supplier<T> action) {
         return getTransactionHandler().calculate(action) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/92dfa111/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/QueryTestSDB.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/QueryTestSDB.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/QueryTestSDB.java
index 73f8b82..7bdd621 100644
--- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/QueryTestSDB.java
+++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/QueryTestSDB.java
@@ -28,7 +28,6 @@ import org.apache.jena.sdb.engine.QueryEngineSDB ;
 import org.apache.jena.sdb.sql.SDBConnection ;
 import org.apache.jena.sdb.store.DatasetStore ;
 import org.apache.jena.sdb.util.StoreUtils ;
-import org.apache.jena.shared.Command ;
 import org.apache.jena.sparql.SystemARQ ;
 import org.apache.jena.sparql.engine.QueryEngineFactory ;
 import org.apache.jena.sparql.engine.QueryExecutionBase ;
@@ -95,18 +94,15 @@ public class QueryTestSDB extends EarlTestCase
 
         // Truncate outside a transaction.
         store.getTableFormatter().truncate() ;
-        store.getConnection().executeInTransaction(new Command(){
-            @Override
-            public Object execute()
-            {
-                // Default graph
-                for ( String fn : filenamesDft )
-                    StoreUtils.load(store, fn) ;    
-                // Named graphs
-                for ( String fn : filenamesNamed )
-                    StoreUtils.load(store, fn, fn) ;    
-                return null ;
-            }}) ;
+        store.getConnection().execute(()->{
+            // Default graph
+            for ( String fn : filenamesDft )
+                StoreUtils.load(store, fn) ;    
+            // Named graphs
+            for ( String fn : filenamesNamed )
+                StoreUtils.load(store, fn, fn) ;    
+
+        }) ;
         lastDftLoaded = filenamesDft ;
         lastNamedLoaded = filenamesNamed ;
         


[2/2] jena git commit: Add SSE.str() operations for convenient string output.

Posted by an...@apache.org.
Add SSE.str() operations for convenient string output.

Clean uses of SSE.
Other clean-ups.


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

Branch: refs/heads/master
Commit: 350082c3e9d00073e72984ad4e9190b96493a492
Parents: 92dfa11
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Sep 10 21:42:17 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Sep 10 22:07:53 2016 +0100

----------------------------------------------------------------------
 .../apache/jena/sparql/core/BasicPattern.java   | 120 ++++++-----
 .../apache/jena/sparql/core/QuadPattern.java    |   5 +-
 .../org/apache/jena/sparql/mgt/Explain.java     |  20 +-
 .../java/org/apache/jena/sparql/sse/SSE.java    | 182 ++++++++++++++---
 .../jena/sparql/util/NodeFactoryExtra.java      | 204 +++++++++----------
 .../jena/sparql/syntax/TestSSE_Forms.java       |  19 +-
 jena-cmds/src/main/java/tdb/tdbreorder.java     |  54 ++---
 .../fuseki/servlets/SPARQL_UberServlet.java     |  12 +-
 8 files changed, 373 insertions(+), 243 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
index 89cbd9b..6196e75 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.jena.sparql.core;
+package org.apache.jena.sparql.core ;
 
 import java.util.ArrayList ;
 import java.util.Iterator ;
@@ -30,81 +30,105 @@ import org.apache.jena.sparql.sse.writers.WriterNode ;
 import org.apache.jena.sparql.util.Iso ;
 import org.apache.jena.sparql.util.NodeIsomorphismMap ;
 
-/** A class whose purpose is to give a name to a collection of triples.
- * Reduces the use of bland "List" in APIs (Java 1.4) 
- */ 
+/**
+ * A class whose purpose is to give a name to a collection of triples. Reduces the use of
+ * bland "List" in APIs (Java 1.4)
+ */
 
-public class BasicPattern implements Iterable<Triple>
-{
+public class BasicPattern implements Iterable<Triple> {
     private List<Triple> triples ;
 
-    public BasicPattern() { this(new ArrayList<Triple>()) ; }
-    public BasicPattern(BasicPattern other)
-    {
+    public BasicPattern() {
+        this(new ArrayList<Triple>()) ;
+    }
+
+    public BasicPattern(BasicPattern other) {
         this() ;
         // Copy.
         triples.addAll(other.triples) ;
     }
-    private BasicPattern(List<Triple> triples) { this.triples = triples ; }
-    
-    /** Wrap a list of triples up as a BasicPattern.  Chnaging the list, changes the BasicPattern */ 
-    public static BasicPattern wrap(List<Triple> triples)
-    {
+
+    private BasicPattern(List<Triple> triples) {
+        this.triples = triples ;
+    }
+
+    /**
+     * Wrap a list of triples up as a BasicPattern. Chnaging the list, changes the
+     * BasicPattern
+     */
+    public static BasicPattern wrap(List<Triple> triples) {
         return new BasicPattern(triples) ;
     }
-    
-    
-    public void add(Triple t) { triples.add(t) ; }
-    public void addAll(BasicPattern other) { triples.addAll(other.triples) ; }
-    public void add(int i, Triple t) { triples.add(i, t) ; }
-    
-    public Triple get(int i) { return triples.get(i) ; }
+
+    public void add(Triple t) {
+        triples.add(t) ;
+    }
+
+    public void addAll(BasicPattern other) {
+        triples.addAll(other.triples) ;
+    }
+
+    public void add(int i, Triple t) {
+        triples.add(i, t) ;
+    }
+
+    public Triple get(int i) {
+        return triples.get(i) ;
+    }
+
     @Override
-    public Iterator<Triple> iterator() { return triples.listIterator() ; } 
-    public int size() { return triples.size() ; }
-    public boolean isEmpty() { return triples.isEmpty() ; }
-    
-    public List<Triple> getList() { return triples ; } 
+    public Iterator<Triple> iterator() {
+        return triples.listIterator() ;
+    }
+
+    public int size() {
+        return triples.size() ;
+    }
+
+    public boolean isEmpty() {
+        return triples.isEmpty() ;
+    }
+
+    public List<Triple> getList() {
+        return triples ;
+    }
 
     @Override
-    public int hashCode() { return triples.hashCode() ; } 
+    public int hashCode() {
+        return triples.hashCode() ;
+    }
 
     @Override
-    public boolean equals(Object other)
-    { 
-        if ( this == other ) return true ;
-        if ( ! ( other instanceof BasicPattern) ) 
+    public boolean equals(Object other) {
+        if ( this == other )
+            return true ;
+        if ( !(other instanceof BasicPattern) )
             return false ;
         BasicPattern bp = (BasicPattern)other ;
         return triples.equals(bp.triples) ;
     }
-    
-    public boolean equiv(BasicPattern other, NodeIsomorphismMap isoMap)
-    { 
+
+    public boolean equiv(BasicPattern other, NodeIsomorphismMap isoMap) {
         if ( this.triples.size() != other.triples.size() )
             return false ;
-        
-        for ( int i = 0 ; i < this.triples.size() ; i++ )
-        {
+
+        for ( int i = 0 ; i < this.triples.size() ; i++ ) {
             Triple t1 = get(i) ;
             Triple t2 = other.get(i) ;
-            
-            if ( ! Iso.tripleIso(t1, t2, isoMap) )
+
+            if ( !Iso.tripleIso(t1, t2, isoMap) )
                 return false ;
         }
         return true ;
     }
-    
+
     @Override
-    public String toString() 
-    { 
+    public String toString() {
         IndentedLineBuffer out = new IndentedLineBuffer() ;
-        
-        SerializationContext sCxt = SSE.sCxt(SSE.defaultPrefixMapWrite) ;
-        
+        SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapString()) ;
+
         boolean first = true ;
-        for ( Triple t : triples )
-        {
+        for ( Triple t : triples ) {
             if ( !first )
                 out.print("\n") ;
             else
@@ -115,7 +139,7 @@ public class BasicPattern implements Iterable<Triple>
             WriterNode.outputPlain(out, t, sCxt) ;
             out.print(")") ;
         }
-        out.flush();
+        out.flush() ;
         return out.toString() ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
index 487ecca..b1f5bf1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
@@ -82,8 +82,7 @@ public class QuadPattern implements Iterable<Quad>
     @Override
     public String toString() {
         IndentedLineBuffer out = new IndentedLineBuffer() ;
-
-        SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+        SerializationContext sCxt = SSE.sCxt((SSE.getPrefixMapWrite())) ;
 
         boolean first = true ;
         for (Quad quad : quads) {
@@ -91,7 +90,7 @@ public class QuadPattern implements Iterable<Quad>
                 out.print(" ") ;
             else
                 first = false ;
-            // Adds (triple ...)
+            // Adds (quad ...)
             // SSE.write(buff.getIndentedWriter(), t) ;
             out.print("(") ;
             WriterNode.outputPlain(out, quad, sCxt) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java b/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
index 3c0f69e..1931ed2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
@@ -227,7 +227,7 @@ public class Explain {
     // Remove when QuadPatterns roll through from ARQ.
 
     private static void formatQuads(IndentedLineBuffer out, QuadPattern quads) {
-        SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+        SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapWrite()) ;
 
         boolean first = true ;
         for ( Quad qp : quads ) {
@@ -254,22 +254,14 @@ public class Explain {
     }
 
     private static void formatTriples(IndentedLineBuffer out, BasicPattern triples) {
-        SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+        SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapWrite()) ;
 
         boolean first = true ;
         for ( Triple qp : triples ) {
-            if ( !first ) {
-                if ( !MultiLinesForPatterns )
-                    out.print(" ") ;
-            } else
-                first = false ;
-            out.print("(") ;
-            WriterNode.output(out, qp.getSubject(), sCxt) ;
-            out.print(" ") ;
-            WriterNode.output(out, qp.getPredicate(), sCxt) ;
-            out.print(" ") ;
-            WriterNode.output(out, qp.getObject(), sCxt) ;
-            out.print(")") ;
+            if ( ! first && ! MultiLinesForPatterns )
+                out.print(" ") ;
+            first = false ;
+            WriterNode.outputPlain(out, qp, sCxt);
             if ( MultiLinesForPatterns )
                 out.println() ;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
index f50425c..9b87c44 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
@@ -19,8 +19,10 @@
 package org.apache.jena.sparql.sse;
 
 import java.io.* ;
+import java.util.function.Consumer ;
 
 import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -49,6 +51,7 @@ import org.apache.jena.sparql.sse.lang.ParseHandler ;
 import org.apache.jena.sparql.sse.lang.ParseHandlerPlain ;
 import org.apache.jena.sparql.sse.lang.ParseHandlerResolver ;
 import org.apache.jena.sparql.sse.lang.SSE_Parser ;
+import org.apache.jena.sparql.sse.writers.WriterExpr ;
 import org.apache.jena.sparql.sse.writers.WriterGraph ;
 import org.apache.jena.sparql.sse.writers.WriterNode ;
 import org.apache.jena.sparql.sse.writers.WriterOp ;
@@ -56,40 +59,78 @@ import org.apache.jena.sparql.util.FmtUtils ;
 import org.apache.jena.system.JenaSystem ;
 import org.apache.jena.util.FileUtils ;
 
+/**
+ * <a href="https://jena.apache.org/documentation/notes/sse.html"
+ * >SPARQL S-Expressions</a> is a unstandardized format for SPARQL-related and now
+ * RDF-related objects. This includes use for writing down the SPARQL algebra in Apache
+ * Jena ARQ.
+ * <p>
+ * It has regular syntax, inspired by schema (lisp), making it easy to create and maintain
+ * builders and writers and to compose structures.
+ * <p>
+ * "()" and "[]" are interchangeable and used for visual effect. Expressions are parsed
+ * and printed in prefix notation e.g. {@code (+ 1 ?x)}.
+ * <p>
+ * The oeprations are grouped into:
+ * <ul>
+ * <li>{@code parseTYPE} &ndash; parse a string to object of a specific kind.
+ * <li>{@code readTYPE} &ndash; Read a file and produce an object of a specific kind.
+ * <li>{@code write} &ndash; Write to a stream, default {@code System.out}
+ * <li>{@code str} &ndash; Create human readable strings.
+ * </ul>
+ * <p>
+ * {@code parse(...)}, which produces a {@link Item}, is direct access to the syntax parser.
+ * Builders take parser {@code Item} and create the in-memory objects (package
+ * {@code org.apache.jena.sparql.sse.builders}) and writers output in-memory objects
+ * to an {@link IndentedWriter} (package {@code org.apache.jena.sparql.sse.writers}.
+ * <p> 
+ * {@code SSE} should not be considered part of the public, stable Jena APIs.
+ * <p>
+ * If you don't like lots of "()" and indentation, look away now.
+ * <p>
+ * Efficiency at scale is not a primary design goal, though the core parser is streaming
+ * and would scale.
+ */
 public class SSE
 {
     static { JenaSystem.init(); }
     
     private SSE() {}
     
-    // Short prefix map for convenience (used in parsing, not in writing).
-    protected static PrefixMapping defaultDefaultPrefixMapRead = new PrefixMappingImpl() ;
+    // Short prefix map for convenience (used in parsing and str(), not for writing).
+    private static PrefixMapping defaultPrefixMapPretty = new PrefixMappingImpl() ;
+    static {
+        defaultPrefixMapPretty.setNsPrefix("rdf",  ARQConstants.rdfPrefix) ;
+        defaultPrefixMapPretty.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
+        defaultPrefixMapPretty.setNsPrefix("xsd",  ARQConstants.xsdPrefix) ;
+        defaultPrefixMapPretty.setNsPrefix("owl" , ARQConstants.owlPrefix) ;
+        defaultPrefixMapPretty.setNsPrefix("ex" ,  "http://example.org/") ;
+        defaultPrefixMapPretty.setNsPrefix("ns" ,  "http://example.org/ns#") ;
+        defaultPrefixMapPretty.setNsPrefix("" ,    "http://example/") ;
+    }
+    
+    protected static PrefixMapping prefixMapRead   = defaultPrefixMapPretty ;
+    public static PrefixMapping getPrefixMapRead() { return prefixMapRead ; }
+    public static void setPrefixMapRead(PrefixMapping pmap) { prefixMapRead =  pmap ; }
+
+    protected static PrefixMapping prefixMapString = new PrefixMappingImpl() ;
     static {
-        defaultDefaultPrefixMapRead.setNsPrefix("rdf",  ARQConstants.rdfPrefix) ;
-        defaultDefaultPrefixMapRead.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
-        defaultDefaultPrefixMapRead.setNsPrefix("xsd",  ARQConstants.xsdPrefix) ;
-        defaultDefaultPrefixMapRead.setNsPrefix("owl" , ARQConstants.owlPrefix) ;
-        defaultDefaultPrefixMapRead.setNsPrefix("fn" ,  ARQConstants.fnPrefix) ;
-        defaultDefaultPrefixMapRead.setNsPrefix("ex" ,  "http://example.org/") ;
-        defaultDefaultPrefixMapRead.setNsPrefix("ns" ,  "http://example.org/ns#") ;
-        defaultDefaultPrefixMapRead.setNsPrefix("" ,    "http://example/") ;
+        prefixMapString.setNsPrefixes(defaultPrefixMapPretty) ;
     }
-    
-    public static PrefixMapping defaultPrefixMapRead = defaultDefaultPrefixMapRead ;
-    public static PrefixMapping getDefaultPrefixMapRead() { return defaultPrefixMapRead ; }
-    public static void setDefaultPrefixMapRead(PrefixMapping pmap) { defaultPrefixMapRead =  pmap ; }
+    public static PrefixMapping getPrefixMapString() { return prefixMapString ; }
+    public static void setPrefixMapString(PrefixMapping pmap) { prefixMapString =  pmap ; }
     
     // Short prefix map for convenience used in writing.
-    protected static PrefixMapping defaultDefaultPrefixMapWrite = new PrefixMappingImpl() ;
+    private static PrefixMapping defaultPrefixMapWrite = new PrefixMappingImpl() ;
     static {
-        defaultDefaultPrefixMapWrite.setNsPrefix("rdf",  ARQConstants.rdfPrefix) ;
-        defaultDefaultPrefixMapWrite.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
-        defaultDefaultPrefixMapWrite.setNsPrefix("xsd",  ARQConstants.xsdPrefix) ;
+        defaultPrefixMapWrite.setNsPrefix("rdf",  ARQConstants.rdfPrefix) ;
+        defaultPrefixMapWrite.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
+        defaultPrefixMapWrite.setNsPrefix("xsd",  ARQConstants.xsdPrefix) ;
     }
     
-    public static PrefixMapping defaultPrefixMapWrite = defaultDefaultPrefixMapWrite ;
-    public static PrefixMapping getDefaultPrefixMapWrite() { return defaultPrefixMapWrite ; }
-    public static void setDefaultPrefixMapWrite(PrefixMapping pmap) { defaultPrefixMapWrite =  pmap ; }
+    protected static PrefixMapping prefixMapWrite = defaultPrefixMapWrite ;
+    public static PrefixMapping getPrefixMapWrite() { return prefixMapWrite ; }
+    public static void setPrefixMapWrite(PrefixMapping pmap) { prefixMapWrite =  pmap ; }
     
     /** Parse a string to obtain a Node (see NodeFactory.parse() */
     public static Node parseNode(String str) { return parseNode(str, null) ; }
@@ -234,7 +275,7 @@ public class SSE
     
     /** Parse a string and obtain a SPARQL algebra basic graph pattern */
     public static BasicPattern parseBGP(String s)
-    { return parseBGP(s, getDefaultPrefixMapRead()) ; }
+    { return parseBGP(s, getPrefixMapRead()) ; }
     
     /** Parse a string and obtain a SPARQL algebra basic graph pattern, given a prefix mapping */
     public static BasicPattern parseBGP(String s, PrefixMapping pmap)
@@ -363,7 +404,7 @@ public class SSE
     private static Item parseTerm(Reader reader, PrefixMapping pmap)
     {
         if ( pmap == null )
-            pmap = getDefaultPrefixMapRead() ;
+            pmap = getPrefixMapRead() ;
         ParseHandler handler = createParseHandler(pmap) ;
         SSE_Parser.term(reader, handler) ; 
         return handler.getItem() ;
@@ -375,14 +416,99 @@ public class SSE
     public static Item parse(Reader reader, PrefixMapping pmap)
     {
         if ( pmap == null )
-            pmap = getDefaultPrefixMapRead() ;
+            pmap = getPrefixMapRead() ;
         ParseHandler handler = createParseHandler(pmap) ;
         SSE_Parser.parse(reader, handler) ; 
         return handler.getItem() ;
     }
     
+    
+    
     // ---- To String
+    public static String str(Node node) {
+        return str(node, getPrefixMapString()) ;
+    }
+    
+    public static String str(Node node, PrefixMapping pmap) {
+        return string((out)->WriterNode.output(out, node, sCxt(pmap))) ;
+    }
+
+    public static String str(Triple triple) {
+        return str(triple, getPrefixMapString()) ;
+    }
+
+    public static String str(Triple triple, PrefixMapping pmap) {
+        return string((out)->WriterNode.output(out, triple, sCxt(pmap))) ;
+    }
+
+    public static String str(Quad quad) {
+        return str(quad, getPrefixMapString()) ;
+    }
+    
+    public static String str(Quad quad, PrefixMapping pmap) {
+        return string((out)->WriterNode.output(out, quad, sCxt(pmap))) ;
+    }
+    
+    public static String str(Graph graph) {
+        return str(graph, getPrefixMapString()) ;
+    }
+    
+    public static String str(Graph graph, PrefixMapping pmap) {
+        return string((out)->WriterGraph.output(out, graph, sCxt(pmap))) ;
+    }
+    
+    public static String str(DatasetGraph dsg) {
+        return str(dsg, getPrefixMapString()) ;
+    }
+    
+    public static String str(DatasetGraph dsg,  PrefixMapping pmap) {
+        return string((out)->WriterGraph.output(out, dsg, sCxt(pmap))) ;
+    }
+    
+    public static String str(Expr expr) {
+        return str(expr, getPrefixMapString()) ;
+    }
+    
+    public static String str(Expr expr, PrefixMapping pmap) {
+        return string((out)->WriterExpr.output(out, expr, sCxt(pmap))) ;
+    }
+
+    public static String str(BasicPattern bgp) {
+        return str(bgp, getPrefixMapString()) ;
+    }
+    
+    public static String str(BasicPattern bgp, PrefixMapping pmap) {
+        return string((out)->WriterGraph.output(out, bgp, sCxt(pmap))) ;
+    }
+
+    public static String str(Op op) {
+        return str(op, getPrefixMapString()) ;
+    }
+    
+    public static String str(Op op, PrefixMapping pmap) {
+        return string((out)->WriterOp.output(out, op, sCxt(pmap))) ;
+    }
+
+//    public static String str(ResultSet rs) {
+//        return str(rs, getPrefixMapString()) ;
+//    }
+//    
+//    public static String str(ResultSet rs, PrefixMapping pmap) {
+//        return string((out)->Writer???.output(out, rs, sCxt(pmap))) ;
+//    }
+
+    
+    private static String string(Consumer<IndentedLineBuffer> action) {
+        IndentedLineBuffer x = new IndentedLineBuffer() ;
+        action.accept(x); 
+        return x.asString() ;
+    }
+
+    /** @deprecated Use {@link #str(Node)} */ 
+    @Deprecated
     public static String format(Node node)                      { return FmtUtils.stringForNode(node) ; }
+    /** @deprecated  Use {@link #str(Node, PrefixMapping)} */ 
+    @Deprecated
     public static String format(Node node, PrefixMapping pmap)  { return FmtUtils.stringForNode(node, pmap) ; }
     
     // ----
@@ -466,7 +592,7 @@ public class SSE
     }
     public static void write(IndentedWriter out, Triple triple)                         
     { 
-        WriterNode.output(out, triple, sCxt(defaultDefaultPrefixMapWrite)) ; 
+        WriterNode.output(out, triple, sCxt(getPrefixMapWrite())) ; 
         out.flush() ;
     }
     
@@ -479,7 +605,7 @@ public class SSE
     }
     public static void write(IndentedWriter out, Quad quad)                         
     { 
-        WriterNode.output(out, quad, sCxt(defaultDefaultPrefixMapWrite)) ; 
+        WriterNode.output(out, quad, sCxt(getPrefixMapWrite())) ; 
         out.flush() ;
     }
 
@@ -493,7 +619,7 @@ public class SSE
     }
     public static void write(IndentedWriter out, Node node)                         
     { 
-        WriterNode.output(IndentedWriter.stdout, node, sCxt(defaultDefaultPrefixMapWrite)) ;
+        WriterNode.output(IndentedWriter.stdout, node, sCxt(getPrefixMapWrite())) ;
         IndentedWriter.stdout.flush() ;
     }
     
@@ -505,7 +631,7 @@ public class SSE
         return new SerializationContext() ;
     }  
     
-    /** Return a SerializationContext appropriate for the prfix mapping */
+    /** Return a SerializationContext appropriate for the prefix mapping */
     public static SerializationContext sCxt(PrefixMapping pmap)
     {
         if ( pmap != null )

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
index fa60fd5..546092f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.jena.sparql.util;
+package org.apache.jena.sparql.util ;
 
-import java.util.Calendar;
+import java.util.Calendar ;
 
 import org.apache.jena.atlas.lib.DateTimeUtils ;
 import org.apache.jena.datatypes.RDFDatatype ;
@@ -39,210 +39,202 @@ import org.apache.jena.sparql.sse.SSE ;
 /**
  * Various convenience helper methods for converting to and from nodes
  */
-public class NodeFactoryExtra
-{
-    private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getDefaultPrefixMapRead()) ; 
-    
-    /** 
-     * Parse a node - with convenience prefix mapping 
+public class NodeFactoryExtra {
+    private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getPrefixMapRead()) ;
+
+    /**
+     * Parse a node - with convenience prefix mapping
      * <p>
      * Allows surrounding white space
      * </p>
+     * 
      * @param nodeString Node string to parse
-     *  
-     */ 
-    public static Node parseNode(String nodeString)
-    {
+     * 
+     */
+    public static Node parseNode(String nodeString) {
         return parseNode(nodeString, prefixMappingDefault) ;
     }
 
-    private static PrefixMap pmapEmpty = PrefixMapFactory.create() ; 
+    private static PrefixMap pmapEmpty = PrefixMapFactory.create() ;
 
-    /** Parse a string into a node. 
+    /**
+     * Parse a string into a node.
      * <p>
      * Allows surrounding white space.
      * </p>
+     * 
      * @param nodeString Node string to parse
      * @param pmap Prefix Map, null to use no prefix mappings
      * @return Parsed Node
      * @throws RiotException Thrown if a valid node cannot be parsed
-     */ 
-    public static Node parseNode(String nodeString, PrefixMap pmap)
-    {
+     */
+    public static Node parseNode(String nodeString, PrefixMap pmap) {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(nodeString) ;
-        if ( ! tokenizer.hasNext() )
-            throw new RiotException("Empty RDF term") ; 
+        if ( !tokenizer.hasNext() )
+            throw new RiotException("Empty RDF term") ;
         Token token = tokenizer.next() ;
         Node node = token.asNode(pmap) ;
         if ( node == null )
-            throw new RiotException("Bad RDF Term: "+nodeString) ;
+            throw new RiotException("Bad RDF Term: " + nodeString) ;
 
         if ( tokenizer.hasNext() )
-            throw new RiotException("Trailing characters in string: "+nodeString) ;
-        if ( node.isURI() )
-        {
+            throw new RiotException("Trailing characters in string: " + nodeString) ;
+        if ( node.isURI() ) {
             // Lightly test for bad URIs.
             String x = node.getURI() ;
             if ( x.indexOf(' ') >= 0 )
-                throw new RiotException("Space(s) in  IRI: "+ nodeString) ;
+                throw new RiotException("Space(s) in  IRI: " + nodeString) ;
         }
         return node ;
     }
-    
-    private static QueryParseException makeException(String msg, int line, int column)
-    {
+
+    private static QueryParseException makeException(String msg, int line, int column) {
         return new QueryParseException(msg, line, column) ;
     }
-    
-    /** Create a literal Node, when the datatype, if given, is a string */ 
-    public static Node createLiteralNode(String lex, String lang, String datatypeURI)
-    {
+
+    /** Create a literal Node, when the datatype, if given, is a string */
+    public static Node createLiteralNode(String lex, String lang, String datatypeURI) {
         if ( datatypeURI != null && datatypeURI.equals("") )
             datatypeURI = null ;
-        
+
         if ( lang != null && lang.equals("") )
             lang = null ;
-        
+
         RDFDatatype dType = null ;
         if ( datatypeURI != null )
-            dType = TypeMapper.getInstance().getSafeTypeByName(datatypeURI);
-        
+            dType = TypeMapper.getInstance().getSafeTypeByName(datatypeURI) ;
+
         Node n = NodeFactory.createLiteral(lex, lang, dType) ;
         return n ;
     }
-    
-    /** Node to int
-     *  
+
+    /**
+     * Node to int
+     * 
      * @param node
      * @return The int value or Integer.MIN_VALUE.
      */
-    public static int nodeToInt(Node node)
-    {
+    public static int nodeToInt(Node node) {
         LiteralLabel lit = node.getLiteral() ;
-        
-        if ( ! XSDDatatype.XSDint.isValidLiteral(lit) )
+
+        if ( !XSDDatatype.XSDint.isValidLiteral(lit) )
             return Integer.MIN_VALUE ;
         int i = ((Number)lit.getValue()).intValue() ;
         return i ;
     }
-    
-    /** Node to long
-     *  
+
+    /**
+     * Node to long
+     * 
      * @param node
      * @return The long value or Long.MIN_VALUE.
      */
-    public static long nodeToLong(Node node)
-    {
+    public static long nodeToLong(Node node) {
         LiteralLabel lit = node.getLiteral() ;
-        
-        if ( ! XSDDatatype.XSDlong.isValidLiteral(lit) )
+
+        if ( !XSDDatatype.XSDlong.isValidLiteral(lit) )
             return Long.MIN_VALUE ;
         long i = ((Number)lit.getValue()).longValue() ;
         return i ;
     }
-    
-    /** Node to float
-     *  
+
+    /**
+     * Node to float
+     * 
      * @param node
      * @return The float value or Float.NaN
      */
 
-    public static float nodeToFloat(Node node)
-    {
-        LiteralLabel lit = node.getLiteral();
-        
-        if ( ! XSDDatatype.XSDfloat.isValidLiteral(lit) )
-            return Float.NaN;
-        float f = ((Number)lit.getValue()).floatValue();
-        return f;
-    }
-    
-    /** Node to double
-     *  
+    public static float nodeToFloat(Node node) {
+        LiteralLabel lit = node.getLiteral() ;
+
+        if ( !XSDDatatype.XSDfloat.isValidLiteral(lit) )
+            return Float.NaN ;
+        float f = ((Number)lit.getValue()).floatValue() ;
+        return f ;
+    }
+
+    /**
+     * Node to double
+     * 
      * @param node
      * @return The double value or Double.NaN
      */
-    public static double nodeToDouble(Node node)
-    {
-        LiteralLabel lit = node.getLiteral();
-        
-        if ( ! XSDDatatype.XSDdouble.isValidLiteral(lit) )
-            return Double.NaN;
-        double d = ((Number)lit.getValue()).doubleValue();
-        return d;
-    }
-    
-    /** int to Node
+    public static double nodeToDouble(Node node) {
+        LiteralLabel lit = node.getLiteral() ;
+
+        if ( !XSDDatatype.XSDdouble.isValidLiteral(lit) )
+            return Double.NaN ;
+        double d = ((Number)lit.getValue()).doubleValue() ;
+        return d ;
+    }
+
+    /**
+     * int to Node
      * 
      * @param integer
      * @return An xsd:integer
      */
-    public static Node intToNode(int integer)
-    {
+    public static Node intToNode(int integer) {
         return NodeFactory.createLiteral(Integer.toString(integer), XSDDatatype.XSDinteger) ;
     }
 
-    /** long to Node
+    /**
+     * long to Node
      * 
      * @param integer
      * @return An xsd:integer
      */
-    public static Node intToNode(long integer)
-    {
+    public static Node intToNode(long integer) {
         return NodeFactory.createLiteral(Long.toString(integer), XSDDatatype.XSDinteger) ;
     }
 
-    /** float to Node
+    /**
+     * float to Node
      * 
      * @param value
      * @return An xsd:float
      */
-    public static Node floatToNode(float value)
-    {
+    public static Node floatToNode(float value) {
         return NodeFactory.createLiteral(Float.toString(value), XSDDatatype.XSDfloat) ;
     }
-    
-    /** double to Node
+
+    /**
+     * double to Node
      * 
      * @param value
      * @return An double
      */
-    public static Node doubleToNode(double value)
-    {
+    public static Node doubleToNode(double value) {
         return NodeFactory.createLiteral(Double.toString(value), XSDDatatype.XSDdouble) ;
     }
-    
+
     /** Calendar to xsd:dateTime Node */
-    public static Node dateTimeToNode(Calendar c)
-    {
-        String lex = DateTimeUtils.calendarToXSDDateTimeString(c);
-        return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime);
+    public static Node dateTimeToNode(Calendar c) {
+        String lex = DateTimeUtils.calendarToXSDDateTimeString(c) ;
+        return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime) ;
     }
-    
+
     /** Calendar to xsd:date Node */
-    public static Node dateToNode(Calendar c)
-    {
-        String lex = DateTimeUtils.calendarToXSDDateString(c);
-        return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate);
+    public static Node dateToNode(Calendar c) {
+        String lex = DateTimeUtils.calendarToXSDDateString(c) ;
+        return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate) ;
     }
-    
+
     /** Calendar to xsd:time Node */
-    public static Node timeToNode(Calendar c)
-    {
-        String lex = DateTimeUtils.calendarToXSDTimeString(c);
-        return NodeFactory.createLiteral(lex, XSDDatatype.XSDtime);
+    public static Node timeToNode(Calendar c) {
+        String lex = DateTimeUtils.calendarToXSDTimeString(c) ;
+        return NodeFactory.createLiteral(lex, XSDDatatype.XSDtime) ;
     }
 
     /** Now, as xsd:dateTime Node */
-    public static Node nowAsDateTime()
-    {
+    public static Node nowAsDateTime() {
         String lex = DateTimeUtils.nowAsXSDDateTimeString() ;
         return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime) ;
     }
 
     /** Today, as xsd:date Node */
-    public static Node todayAsDate()
-    {
+    public static Node todayAsDate() {
         String lex = DateTimeUtils.todayAsXSDDateString() ;
         return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java b/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
index b210b51..da67c97 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
@@ -39,16 +39,19 @@ public class TestSSE_Forms extends TestCase
         pmap.setNsPrefix("ex", "http://example/") ;
     }
 
-    @BeforeClass public static void beforeClass()
-    {
-        SSE.getDefaultPrefixMapRead().removeNsPrefix("") ;
-        SSE.getDefaultPrefixMapRead().removeNsPrefix("ex") ;
+    private static PrefixMapping original ; 
+    @BeforeClass
+    public static void beforeClass() {
+        original = SSE.getPrefixMapRead() ;
+        PrefixMapping pmaptest = new PrefixMappingImpl()
+            .setNsPrefixes(original)
+            .removeNsPrefix("")
+            .removeNsPrefix("ex") ;
     }
 
-    @AfterClass public static void afterClass()
-    {
-        SSE.getDefaultPrefixMapRead().setNsPrefix("" ,    "http://example/") ;
-        SSE.getDefaultPrefixMapRead().setNsPrefix("ex" ,  "http://example/ns#") ;
+    @AfterClass
+    public static void afterClass() {
+        SSE.setPrefixMapRead(original) ;
     }
 
     // ---- Assume ParseHandlerResolver from here on

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-cmds/src/main/java/tdb/tdbreorder.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/tdbreorder.java b/jena-cmds/src/main/java/tdb/tdbreorder.java
index 8d9984a..dcced9b 100644
--- a/jena-cmds/src/main/java/tdb/tdbreorder.java
+++ b/jena-cmds/src/main/java/tdb/tdbreorder.java
@@ -16,14 +16,13 @@
  * limitations under the License.
  */
 
-package tdb;
+package tdb ;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.shared.impl.PrefixMappingImpl ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.op.OpBGP ;
 import org.apache.jena.sparql.algebra.op.OpQuadPattern ;
@@ -37,8 +36,7 @@ import org.apache.jena.sparql.sse.SSE ;
 import org.apache.jena.sparql.sse.writers.WriterNode ;
 import org.apache.jena.tdb.sys.Names ;
 
-public class tdbreorder
-{
+public class tdbreorder {
     public static void main(String... args) {
         if ( args.length != 2 ) {
             System.err.println("Usage: PATTERN STATS") ;
@@ -46,16 +44,15 @@ public class tdbreorder
         }
         LogCtl.enable(StatsMatcher.class) ;
         LogCtl.enable(ReorderTransformationSubstitution.class) ;
-        
-        if ( args.length != 2 )
-        {
-            System.err.println("Usage: op stats") ; 
+
+        if ( args.length != 2 ) {
+            System.err.println("Usage: op stats") ;
             System.exit(1) ;
         }
-            
+
         String pattern = args[0] ;
         String statsFile = args[1] ;
-        
+
         Op op = SSE.readOp(pattern) ;
 
         BasicPattern bgp ;
@@ -63,39 +60,32 @@ public class tdbreorder
             bgp = ((OpQuadPattern)op).getBasicPattern() ;
         } else if ( op instanceof OpBGP ) {
             bgp = ((OpBGP)op).getPattern() ;
-        }
-        else {
+        } else {
             System.err.println("Not a quad or triple pattern") ;
             System.exit(2) ;
             bgp = null ;
         }
-        
+
         ReorderTransformation reorder = chooseReorder(statsFile) ;
-        //ReorderTransformation reorder = ReorderLib.fixed() ;
+        // ReorderTransformation reorder = ReorderLib.fixed() ;
         BasicPattern bgp2 = reorder.reorder(bgp) ;
-     
+
         System.out.println() ;
-        
+
         print(bgp) ;
         System.out.println() ;
         System.out.println(" ======== >>>>>>>>") ;
         print(bgp2) ;
         System.out.println() ;
     }
-    
+
     private static void print(BasicPattern bgp) {
-        IndentedWriter out = IndentedWriter.stdout;
-        
-        PrefixMapping pmap = new PrefixMappingImpl() ;
-        pmap.setNsPrefixes(SSE.defaultPrefixMapWrite) ;
-//        pmap.setNsPrefix("ppi", "http://landregistry.data.gov.uk/def/ppi/") ;
-//        pmap.setNsPrefix("common", "http://landregistry.data.gov.uk/def/common/") ;
-        
+        IndentedWriter out = IndentedWriter.stdout ;
+        PrefixMapping pmap = SSE.getPrefixMapWrite() ;
         SerializationContext sCxt = SSE.sCxt(pmap) ;
-        
+
         boolean first = true ;
-        for ( Triple t : bgp )
-        {
+        for ( Triple t : bgp ) {
             if ( !first )
                 out.print("\n") ;
             else
@@ -106,11 +96,10 @@ public class tdbreorder
             WriterNode.outputPlain(out, t, sCxt) ;
             out.print(")") ;
         }
-        out.flush();
-        
+        out.flush() ;
     }
-    private static ReorderTransformation chooseReorder(String filename)
-    {
+
+    private static ReorderTransformation chooseReorder(String filename) {
         if ( filename.equals(Names.optFixed) )
             return ReorderLib.fixed() ;
         if ( filename.equals(Names.optNone) )
@@ -118,7 +107,6 @@ public class tdbreorder
         if ( FileOps.exists(filename) )
             return ReorderLib.weighted(filename) ;
         else
-            throw new RuntimeException("No such file: "+filename) ;
+            throw new RuntimeException("No such file: " + filename) ;
     }
 }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
index ae2dd5c..e9e0587 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
@@ -204,10 +204,16 @@ public abstract class SPARQL_UberServlet extends ActionSPARQL
         if ( !hasTrailing ) {
             // Nothing after the DataAccessPoint i.e. Dataset by name.
             // Action on the dataset itself. This can be:
+            //
             //   http://localhost:3030/ds?query=
-            //   http://localhost:3030/ds and a content type.
-            //   http://localhost:3030/ds?default ?graph=  GSP  
-            //   http://localhost:3030/ds , REST quads action on the dataset itself.
+            //   http://localhost:3030/ds and a content type of "applicatiopn/sparql-query"
+            //
+            //   http://localhost:3030/ds?update=
+            //   http://localhost:3030/ds and a content type of "applicatiopn/sparql-update"
+            //
+            //   http://localhost:3030/ds?default ?graph=  GSP
+            //
+            //   http://localhost:3030/ds   REST quads action on the dataset itself.
             if ( isQuery ) {
                 if ( !allowQuery(action) )
                     ServletOps.errorMethodNotAllowed("SPARQL query : "+method) ;