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 2014/09/23 15:50:17 UTC

[01/10] git commit: Add convenience operations NodeTable.containsNode and .containsNodeId

Repository: jena
Updated Branches:
  refs/heads/master 539f27c3a -> 2472f6ae8


Add convenience operations NodeTable.containsNode and .containsNodeId

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

Branch: refs/heads/master
Commit: 88836ee2332936e9ee969974bc67d9f6c03d6ad0
Parents: 539f27c
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:36:37 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:36:37 2014 +0100

----------------------------------------------------------------------
 .../hp/hpl/jena/tdb/store/nodetable/NodeTable.java |  8 +++++++-
 .../jena/tdb/store/nodetable/NodeTableCache.java   | 12 ++++++++++++
 .../jena/tdb/store/nodetable/NodeTableLogger.java  | 17 +++++++++++++++++
 .../jena/tdb/store/nodetable/NodeTableNative.java  | 14 +++++++++++++-
 .../jena/tdb/store/nodetable/NodeTableWrapper.java |  9 +++++++++
 .../hpl/jena/tdb/transaction/NodeTableTrans.java   | 14 ++++++++++++++
 6 files changed, 72 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTable.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTable.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTable.java
index 34cc3e7..23ea998 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTable.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTable.java
@@ -43,13 +43,19 @@ public interface NodeTable extends Sync, Closeable
     /** Look up node id and return the Node - return null if not found */
     public Node getNodeForNodeId(NodeId id) ;
     
+    /** Test whether the node table contains an entry for node */
+    public boolean containsNode(Node node) ;
+
+    /** Test whether the node table contains an entry for node */
+    public boolean containsNodeId(NodeId nodeId) ;
+
     /** Iterate over all nodes (not necessarily fast).  Does not include inlined NodeIds */
     public Iterator<Pair<NodeId, Node>> all() ;
     
     /** The offset needed to predicate allocation difference between peristent tables - internal function */  
     public NodeId allocOffset() ;
     
-    /** Any thing there? */  
+    /** Anything there? */  
     public boolean isEmpty() ; 
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableCache.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableCache.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableCache.java
index c27e847..a16b889 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableCache.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableCache.java
@@ -92,6 +92,18 @@ public class NodeTableCache implements NodeTable
     @Override
     public NodeId getAllocateNodeId(Node node)  { return _idForNode(node, true) ; }
 
+    @Override
+    public boolean containsNode(Node node) {
+        NodeId x = getNodeIdForNode(node) ;
+        return NodeId.isDoesNotExist(x) ;
+    }
+
+    @Override
+    public boolean containsNodeId(NodeId nodeId) {
+        Node x = getNodeForNodeId(nodeId) ;
+        return x == null ;
+    }
+
     // ---- The worker functions
     // NodeId ==> Node
     private Node _retrieveNodeByNodeId(NodeId id)

http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableLogger.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableLogger.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableLogger.java
index 37214be..d3617e1 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableLogger.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableLogger.java
@@ -70,6 +70,23 @@ public class NodeTableLogger implements NodeTable
     }
     
     @Override
+    public boolean containsNode(Node node) {
+        //info("containsNodeId("+id+") =>") ;
+        boolean b = nodeTable.containsNode(node) ;
+        info("containsNode("+node+") => "+b) ;
+        return b ;
+    }
+
+    @Override
+    public boolean containsNodeId(NodeId id) {
+        //info("containsNodeId("+id+") =>") ;
+        boolean b = nodeTable.containsNodeId(id) ;
+        info("containsNodeId("+id+") => "+b) ;
+        return b ;
+    }
+
+    
+    @Override
     public NodeId allocOffset()
     {
         NodeId nodeId = nodeTable.allocOffset() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableNative.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableNative.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableNative.java
index 57e85fa..17162c9 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableNative.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableNative.java
@@ -79,9 +79,21 @@ public class NodeTableNative implements NodeTable
     @Override
     public NodeId getAllocateNodeId(Node node)  { return _idForNode(node, true) ; }
 
+    @Override
+    public boolean containsNode(Node node) {
+        NodeId x = getNodeIdForNode(node) ;
+        return NodeId.isDoesNotExist(x) ;
+    }
+
+    @Override
+    public boolean containsNodeId(NodeId nodeId) {
+        Node x = getNodeForNodeId(nodeId) ;
+        return x == null ;
+    }
+
     // ---- The worker functions
     // Synchronization:
-    // accesIndex and readNodeFromTable
+    // accessIndex and readNodeFromTable
     
     // Cache around this class further out in NodeTableCache are synchronized
     // to maintain cache validatity which indirectly sync access to the NodeTable.

http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableWrapper.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableWrapper.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableWrapper.java
index 662de57..a2ef49a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableWrapper.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodeTableWrapper.java
@@ -55,6 +55,15 @@ public class NodeTableWrapper implements NodeTable
     }
     
     @Override
+    public boolean containsNode(Node node) {
+        return nodeTable.containsNode(node) ;
+    }
+
+    @Override
+    public boolean containsNodeId(NodeId nodeId) {
+        return nodeTable.containsNodeId(nodeId) ;    }
+
+    @Override
     public NodeId allocOffset()
     {
         return nodeTable.allocOffset() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/88836ee2/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
index e28cad2..e4542d7 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
@@ -118,6 +118,20 @@ public class NodeTableTrans implements NodeTable, TransactionLifecycle
         return node ;
     }
 
+    @Override
+    public boolean containsNode(Node node) {
+        NodeId x = getNodeIdForNode(node) ;
+        return NodeId.isDoesNotExist(x) ;
+    }
+
+    @Override
+    public boolean containsNodeId(NodeId nodeId) {
+        Node x = getNodeForNodeId(nodeId) ;
+        return x == null ;
+    }
+
+
+
     /** Convert from a id to the id in the "journal" file */ 
     private NodeId mapToJournal(NodeId id)
     { 


[10/10] git commit: Merge BGPs are path flattening so later operations see combined BGPs.

Posted by an...@apache.org.
Merge BGPs are path flattening so later operations see combined BGPs.

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

Branch: refs/heads/master
Commit: 2472f6ae85c41456de0fa53cc4cfa241f0c95569
Parents: 379ab1f
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:49:13 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:49:13 2014 +0100

----------------------------------------------------------------------
 .../java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2472f6ae/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
index af86148..9ac4e49 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
@@ -155,8 +155,12 @@ public class Optimize implements Rewrite
         OpWalker.walk(op, new OpVisitorExprPrepare(context)) ;
         
         // Convert paths to triple patterns if possible.
-        if ( context.isTrueOrUndef(ARQ.optPathFlatten) )
+        if ( context.isTrueOrUndef(ARQ.optPathFlatten) ) {
             op = apply("Path flattening", new TransformPathFlattern(), op) ;
+            // and merge adjacent BGPs (part 1)
+            if ( context.isTrueOrUndef(ARQ.optMergeBGPs) )
+                op = apply("Merge BGPs", new TransformMergeBGPs(), op) ;
+        }
 
         // Expression constant folding
         if ( context.isTrueOrUndef(ARQ.optExprConstantFolding) )


[07/10] git commit: Document

Posted by an...@apache.org.
Document

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

Branch: refs/heads/master
Commit: eeb4e4aa895134c5d3153dfb6690fbc6efa1f483
Parents: e87a8a3
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:46:40 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:46:40 2014 +0100

----------------------------------------------------------------------
 .../algebra/optimize/TransformMergeBGPs.java    | 77 +++++++++-----------
 1 file changed, 33 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/eeb4e4aa/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformMergeBGPs.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformMergeBGPs.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformMergeBGPs.java
index e0193e1..1c6e0e1 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformMergeBGPs.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformMergeBGPs.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package com.hp.hpl.jena.sparql.algebra.optimize;
+package com.hp.hpl.jena.sparql.algebra.optimize ;
 
 import java.util.List ;
 
@@ -27,57 +27,51 @@ import com.hp.hpl.jena.sparql.algebra.op.OpJoin ;
 import com.hp.hpl.jena.sparql.algebra.op.OpSequence ;
 import com.hp.hpl.jena.sparql.core.BasicPattern ;
 
-/** Merge adjacent BGPsTransformCollapseBGPs */
-public class TransformMergeBGPs extends TransformCopy
-{
+/** Merge BGPs 
+ * 
+ * <li>(join BGP1 BGP2) => BGP
+ * <li>(sequence ...BGP1 BGP2 ...) => (sequence ...BGP ...)
+ */
+public class TransformMergeBGPs extends TransformCopy {
     @Override
-    public Op transform(OpJoin opJoin, Op left, Op right)
-    {
+    public Op transform(OpJoin opJoin, Op left, Op right) {
         BasicPattern p1 = asBGP(left) ;
         BasicPattern p2 = asBGP(right) ;
-        if ( p1 != null && p2 != null )
-        {
+        if ( p1 != null && p2 != null ) {
             BasicPattern p = merge(p1, p2) ;
             return new OpBGP(p) ;
         }
-        
+
         return super.transform(opJoin, left, right) ;
     }
-    
+
     @Override
-    public Op transform(OpSequence opSequence, List<Op> elts)
-    {
+    public Op transform(OpSequence opSequence, List<Op> elts) {
         // First check whether we need to do anything at all.
         // Check for two BGPs.
         boolean xform = false ;
         boolean previousBGP = false ;
 
-        for ( Op op1 : elts )
-        {
-            BasicPattern p1 = asBGP( op1 );
-            if ( previousBGP && p1 != null )
-            {
-                xform = true;
-                break;
+        for ( Op op1 : elts ) {
+            BasicPattern p1 = asBGP(op1) ;
+            if ( previousBGP && p1 != null ) {
+                xform = true ;
+                break ;
             }
-            previousBGP = ( p1 != null );
+            previousBGP = (p1 != null) ;
         }
-        
-        if ( ! xform )
-            // Nothing to do here. 
-            return super.transform(opSequence, elts) ; 
-        
-        
-        
+
+        if ( !xform )
+            // Nothing to do here.
+            return super.transform(opSequence, elts) ;
+
         OpSequence seq2 = OpSequence.create() ;
 
-        for ( int i = 0 ; i < elts.size() ; i++ )
-        {
+        for ( int i = 0 ; i < elts.size() ; i++ ) {
             Op op = elts.get(i) ;
 
             BasicPattern p1 = asBGP(op) ;
-            if ( p1 == null )
-            {
+            if ( p1 == null ) {
                 // Do nothing
                 seq2.add(op) ;
                 continue ; // Outer loop.
@@ -88,14 +82,12 @@ public class TransformMergeBGPs extends TransformCopy
             seq2.add(new OpBGP(pMerge)) ;
             // Merge any BGPs from here on ...
             // Re-gets the BGP that trigegrs this all.
-            for ( ; i < elts.size() ; i++ )
-            {
+            for ( ; i < elts.size() ; i++ ) {
                 // Look at next element.
                 Op opNext = elts.get(i) ;
 
                 BasicPattern p2 = asBGP(opNext) ;
-                if ( p2 == null )
-                {
+                if ( p2 == null ) {
                     seq2.add(opNext) ;
                     break ;
                 }
@@ -108,16 +100,14 @@ public class TransformMergeBGPs extends TransformCopy
             return seq2.get(0) ;
         return seq2 ;
     }
-    
-    private static BasicPattern asBGP(Op op)
-    {
+
+    private static BasicPattern asBGP(Op op) {
         if ( op instanceof OpBGP )
-            return ((OpBGP)op).getPattern()  ;
+            return ((OpBGP)op).getPattern() ;
         return null ;
     }
-    
-    private static BasicPattern merge(BasicPattern p1, BasicPattern p2)
-    {
+
+    private static BasicPattern merge(BasicPattern p1, BasicPattern p2) {
         if ( p1 == null || p2 == null )
             return null ;
         BasicPattern p = new BasicPattern() ;
@@ -125,6 +115,5 @@ public class TransformMergeBGPs extends TransformCopy
         p.addAll(p2) ;
         return p ;
     }
-    
-}
 
+}


[03/10] git commit: start/finish around parser call.

Posted by an...@apache.org.
start/finish around parser call.

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

Branch: refs/heads/master
Commit: c0bc67d7f3d7a49673494112900e2c4a084c9813
Parents: 4491980
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:42:02 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:42:02 2014 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/riotcmd/CmdLangParse.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c0bc67d7/jena-arq/src/main/java/riotcmd/CmdLangParse.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/riotcmd/CmdLangParse.java b/jena-arq/src/main/java/riotcmd/CmdLangParse.java
index f7ddf89..d11ce98 100644
--- a/jena-arq/src/main/java/riotcmd/CmdLangParse.java
+++ b/jena-arq/src/main/java/riotcmd/CmdLangParse.java
@@ -222,7 +222,7 @@ public abstract class CmdLangParse extends CmdGeneral
         // else use NodeToLabel.createBNodeByLabel() ;
         // Also, as URI.
         final boolean labelsAsGiven = false ;
-        
+
         NodeToLabel labels = SyntaxLabels.createNodeToLabel() ;
         if ( labelsAsGiven )
             labels = NodeToLabel.createBNodeByLabelEncoded() ;
@@ -246,7 +246,9 @@ public abstract class CmdLangParse extends CmdGeneral
             if ( labelsAsGiven )
                 reader.getParserProfile().setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;
             modTime.startTimer() ;
+            sink.start() ;
             reader.read(in, baseURI, ct, sink, null) ;
+            sink.finish() ;
         } catch (RiotException ex) {
             // Should have handled the exception and logged a message by now.
             // System.err.println("++++"+ex.getMessage());


[02/10] git commit: Refactor WebContent.determineCT to make the arguments clearer.

Posted by an...@apache.org.
Refactor WebContent.determineCT to make the arguments clearer.

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

Branch: refs/heads/master
Commit: 4491980bfed389f6d42d8408026c81adb90a6532
Parents: 88836ee
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:41:23 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:41:23 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/RDFDataMgr.java   | 101 +++++++++++++------
 .../java/org/apache/jena/riot/ResultSetMgr.java |   2 +-
 .../java/org/apache/jena/riot/WebContent.java   |  37 +++++--
 .../org/apache/jena/riot/system/StreamOps.java  |   2 +-
 .../jena/riot/writer/TriGWriterBlocks.java      |   9 +-
 .../apache/jena/riot/writer/TriGWriterFlat.java |   9 +-
 .../jena/riot/writer/TurtleWriterBlocks.java    |   9 +-
 .../jena/riot/writer/TurtleWriterFlat.java      |   9 +-
 .../apache/jena/riot/writer/WriterStream.java   |  76 --------------
 .../riot/writer/WriterStreamRDFBatched.java     |  75 +++++++-------
 .../jena/riot/writer/WriterStreamRDFBlocks.java |  89 +++++++---------
 11 files changed, 193 insertions(+), 225 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 7f38f7b..284b1c3 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -67,6 +67,7 @@ import com.hp.hpl.jena.sparql.util.Utils ;
  *  <li>{@code parse}   -- Read data and send to an {@link StreamRDF}</li>
  *  <li>{@code open}    -- Open a typed input stream to the location, using any alternative locations</li>
  *  <li>{@code write}   -- Write Model/Dataset etc</li> 
+ *  <li>{@code create}  -- Create a reader or writer explicitly</li> 
  *  </ul> 
  */
 
@@ -80,16 +81,8 @@ public class RDFDataMgr
     static Logger log = LoggerFactory.getLogger(RDFDataMgr.class) ;
     private static String riotBase = "http://jena.apache.org/riot/" ;
     
-//    private static String dataStreamManagerSymbolStr = riotBase+"dataStreamManager" ; 
-//    public static Symbol dataStreamManagerSymbol = Symbol.create(dataStreamManagerSymbolStr) ;
-//    
-//    private static String StreamManagerSymbolStr = riotBase+"streamManager" ;
-//    /** @deprecated Use  {@linkplain #dataStreamManagerSymbol} */
-//    @Deprecated
-//    public static Symbol streamManagerSymbolOld = Symbol.create(riotBase+"streamManager") ;
-    
-      private static String StreamManagerSymbolStr = riotBase+"streamManager" ;
-      public static Symbol streamManagerSymbol = Symbol.create(riotBase+"streamManager") ;
+	private static String StreamManagerSymbolStr = riotBase+"streamManager" ;
+	public static Symbol streamManagerSymbol = Symbol.create(riotBase+"streamManager") ;
 
     /** Read triples into a Model from the given location. 
      *  The syntax is detemined from input source URI (content negotiation or extension). 
@@ -326,8 +319,6 @@ public class RDFDataMgr
     private static DatasetGraph createDatasetGraph() { return DatasetGraphFactory.createMem() ; }
     
     // Load:
-    // Macros would be nice.
-
     /** Create a memory Model and read in some data
      * @see #read(Model,String) 
      */ 
@@ -885,33 +876,51 @@ public class RDFDataMgr
         return in ;
     }
     
-    // ----- 
-    // Readers are algorithms and must be stateless (or they must create a per run
-    // instance of something) because they may be called concurrency from different threads.
-    // The Context Readerobject gives the per-run configuration.  
-    
-    // Alternative: A two step factory-instance design means
-    // readers can be created and passed around (e,.g. to set specific features)
-    // We could have had two step design - ReaderFactory-ReaderInstance
-    // no - put the bruden on complicated readers, not everyone. 
-    
-    private static void process(StreamRDF destination, TypedInputStream in, String baseUri, Lang hintLang, Context context)
-    {
-        ContentType ct = WebContent.determineCT(baseUri, in.getContentType(), hintLang) ;
+    // -----
+    // Readers are algorithms and must be stateless (or they must create a per
+    // run instance of something) because they may be called concurrency from
+    // different threads. The Context Reader object gives the per-run
+    // configuration.
+
+    private static void process(StreamRDF destination, TypedInputStream in, String baseUri, Lang lang, Context context)
+    {
+        // Issue is whether lang overrides all.
+        // Not in the case of remote conneg, no file extension, when lang is default. 
+//        // ---- NEW
+//        if ( lang != null ) {
+//            ReaderRIOT reader = createReader(lang) ;
+//            if ( reader == null )
+//                throw new RiotException("No parser registered for language: "+lang.getLabel()) ;
+//            reader.read(in, baseUri, lang.getContentType(), destination, context) ;
+//            return ;
+//        }
+//        // ---- NEW
+        
+        ContentType ct = WebContent.determineCT(in.getContentType(), lang, baseUri) ;
         if ( ct == null )
-            throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
+            throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : stream="+in.getContentType()+")") ;
 
         ReaderRIOT reader = getReader(ct) ;
         if ( reader == null )
             throw new RiotException("No parser registered for content type: "+ct.getContentType()) ;
         reader.read(in, baseUri, ct, destination, context) ;
     }
-
+    
     // java.io.Readers are NOT preferred.
     private static void process(StreamRDF destination, Reader in, String baseUri, Lang lang, Context context )
     {
+//        // ---- NEW
+//        if ( lang != null ) {
+//            ReaderRIOT reader = createReader(lang) ;
+//            if ( reader == null )
+//                throw new RiotException("No parser registered for language: "+lang.getLabel()) ;
+//            reader.read(in, baseUri, lang.getContentType(), destination, context) ;
+//            return ;
+//        }
+//        // ---- NEW
+
         // Not as good as from an InputStream 
-        ContentType ct = WebContent.determineCT(baseUri, null, lang) ;
+        ContentType ct = WebContent.determineCT(null, lang, baseUri) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : hint="+lang+")") ;
         ReaderRIOT reader = getReader(ct) ;
@@ -920,6 +929,38 @@ public class RDFDataMgr
         reader.read(in, baseUri, ct, destination, context) ;
     }
 
+//    ///---- NEW / rewrite
+//    // Lang is definitive.  needs further consideration
+//    private static void process2(StreamRDF destination, TypedInputStream in, String uri, Lang givenLang, Context context)
+//    {
+//        Pair<Lang, ContentType> p = selectLang(in.getMediaType(), uri, givenLang, context) ;
+//        Lang lang = p.getLeft() ;
+//        ContentType ct = p.getRight() ;
+//
+//        if ( lang == null )
+//            throw new RiotException("Syntax not identified (URI="+uri+" : stream="+in.getContentType()+")") ;
+//
+//        ReaderRIOT reader = createReader(lang) ;
+//        if ( reader == null )
+//            throw new RiotException("No parser registered for lang: "+lang.getLabel()) ;
+//        reader.read(in, uri, ct, destination, context) ;
+//    }
+//
+//    private static Pair<Lang, ContentType> selectLang(ContentType ct, String uri, Lang lang, Context context) {
+//        if ( lang != null )
+//            return Pair.create(lang, lang.getContentType()) ;
+//
+//        Lang ctLang = RDFLanguages.contentTypeToLang(ct) ;
+//        if ( ctLang != null )
+//            return Pair.create(ctLang, ct) ;
+//
+//        Lang filenameLang = RDFLanguages.filenameToLang(uri) ;
+//        if ( filenameLang != null )
+//            return Pair.create(filenameLang, filenameLang.getContentType()) ;
+//        return null ;
+//    }
+//    ///---- NEW
+
     /** 
      * @see RDFLanguages#shortnameToLang  to go from Jena short name to {@linkplain Lang}
      * @see RDFLanguages#contentTypeToLang to go from content type to {@linkplain Lang}
@@ -947,7 +988,7 @@ public class RDFDataMgr
 
     /** Determine the Lang, given the URI target, any content type header string and a hint */ 
     public static Lang determineLang(String target, String ctStr, Lang hintLang) {
-        ContentType ct = WebContent.determineCT(target, ctStr, hintLang) ;
+        ContentType ct = WebContent.determineCT(ctStr, hintLang, target) ;
         if ( ct == null )
             return hintLang ;
         Lang lang = RDFLanguages.contentTypeToLang(ct) ;
@@ -1226,7 +1267,7 @@ public class RDFDataMgr
         RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
         return createGraphWriter$(serialization) ;    
     }
-    
+
     /** Create a writer for an RDF language
      * @param serialization Serialization format
      * @return WriterGraphRIOT

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
index ded6a79..0a18e0c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
@@ -129,7 +129,7 @@ public class ResultSetMgr {
     }
         
     private static ResultSet process(TypedInputStream in, String srcURI, Lang hintLang, Context context) {
-        ContentType ct = WebContent.determineCT(srcURI, in.getContentType(), hintLang) ;
+        ContentType ct = WebContent.determineCT(in.getContentType(), hintLang, srcURI) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: (URI="+srcURI+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
         ResultSetReader reader = getReader(ct) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
index 6e49ef5..fd5875f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
@@ -214,18 +214,35 @@ public class WebContent
         return contentTypeMultipartFormData.equalsIgnoreCase(ct.getContentType()) ;
     }
 
-    /** Determine the content type to be used, given the target URL, the content-type from
+    /**
+     * <p> 
+     *  Determine the content type to be used, given the target URL, the content-type from
      *  Content Negotiation and a hint language.  This is a pragmatic balance.
-     *  A content-type of "text/plain" is ignored - it is too often wrong.  
+     *  A content-type of "text/plain" is ignored - it is too often wrong.
+     *  </p><p>
+     *  The decision is 
+     *  <blockquote>
+     *  <i>Content type</i> (but not text/plain) > <i>hint</i> > <i>file extension</i>.
+     *  </blockquote>
+     *  We make content type (via content negotiation) strongest because a server
+     *  may return something unexpected because that is all it can do. We are
+     *  assuming servers don't lie. The "hint" is really a hint just for file extenion override.
+     *  </p><p>
+     *  In the case of no file extension, this reduces to the hint being
+     *  the default choice if conneg does not produce anything useful.  
+     *  </p>
+     *   
+     * @param contentTypeStr     Content-Type string
+     * @param hintLang  Default language
+     * @param target    The URL of the target (file extension may be used)
+     *  
+     * @return ContentType or null
      */
-    public static ContentType determineCT(String target, String ctStr, Lang hintLang) {
-        boolean isTextPlain = contentTypeTextPlain.equals(ctStr) ;
+    public static ContentType determineCT(String contentTypeStr, Lang hintLang, String target) {
+        boolean isTextPlain = contentTypeTextPlain.equals(contentTypeStr) ;
     
-        if ( ctStr != null  )
-            ctStr = contentTypeCanonical(ctStr) ;
-    
-        // The decision is:
-        // Content type (but not text/plain) > hint > file extension.
+        if ( contentTypeStr != null  )
+            contentTypeStr = contentTypeCanonical(contentTypeStr) ;
     
         // If it's text plain, we ignore it because a lot of naive
         // server setups return text/plain for any file type.
@@ -234,7 +251,7 @@ public class WebContent
         ContentType ct = null ;
         if ( ! isTextPlain )
             // Not guaranteed to be registered as a language here.
-            ct = (ctStr==null) ? null : ContentType.create(ctStr) ;
+            ct = (contentTypeStr==null) ? null : ContentType.create(contentTypeStr) ;
         
         if ( ct == null && hintLang != null ) 
             ct = hintLang.getContentType() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
index 4ad7fd1..fff48c5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
@@ -81,7 +81,7 @@ public class StreamOps {
     }
 
     //        
-//    /** Send a dataset to a StreamRDF as triples and quads, using the xpelcitily given prefix map */
+//    /** Send a dataset to a StreamRDF as triples and quads, using the explicitly given prefix map */
 //    public static void datasetToStream(DatasetGraph datasetGraph, StreamRDF stream, PrefixMap prefixMap) {
 //        
 //    }

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
index fbe1308..a2740fb 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -30,10 +31,12 @@ import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 public class TriGWriterBlocks extends TriGWriterBase
 {
     @Override
-    protected void output(IndentedWriter iOut, DatasetGraph dsg, PrefixMap prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter iOut, DatasetGraph dsg, PrefixMap prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFBlocks(iOut) ;
-        WriterStream.write(dest, dsg, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendDatasetToStream(dsg, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
index 54ef31d..66ea06c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -31,9 +32,11 @@ import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 public class TriGWriterFlat extends TriGWriterBase
 {
     @Override
-    protected void output(IndentedWriter iOut, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter iOut, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFFlat(iOut) ;
-        WriterStream.write(dest, datasetGraph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendDatasetToStream(datasetGraph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
index 5013dc8..90bc962 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.graph.Graph ;
@@ -30,10 +31,12 @@ import com.hp.hpl.jena.graph.Graph ;
 public class TurtleWriterBlocks extends TurtleWriterBase
 {
     @Override
-    protected void output(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFBlocks(out) ;
-        WriterStream.write(dest, graph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
index 6bf4704..9770b04 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.graph.Graph ;
@@ -28,9 +29,11 @@ import com.hp.hpl.jena.graph.Graph ;
 public class TurtleWriterFlat extends TurtleWriterBase
 {
     @Override
-    protected void output(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFFlat(out) ;
-        WriterStream.write(dest, graph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
deleted file mode 100644
index f794f91..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.writer;
-
-import java.util.Iterator ;
-import java.util.Map.Entry ;
-
-import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
-import org.apache.jena.riot.system.StreamRDF ;
-
-import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.Quad ;
-
-/** Library class with helpers for writing streams of RDF (as {@linkplain StreamRDF}) */ 
-public class WriterStream
-{
-    // In development.
-    // This is really utilities for StreamRDF and should go into StreamRDFLib.
-    // It's the nature of the StreamRDF that does the writing. 
-    private WriterStream() {}
-    
-    protected static void finish(StreamRDF dest)
-    { dest.finish() ; }
-
-    protected static void start(StreamRDF dest)
-    { dest.start() ; }
-
-    protected static void writePrefixes(StreamRDF dest, PrefixMap prefixMap)
-    {
-        if ( prefixMap != null )
-        {
-            for ( Entry<String, String> e : prefixMap.getMappingCopyStr().entrySet())
-                dest.prefix(e.getKey(), e.getValue()) ;
-        }
-    }
-
-    protected static void write(StreamRDF dest, DatasetGraph datasetGraph, PrefixMap prefixes, String baseURI) 
-    {
-        start(dest) ;
-        dest.base(baseURI) ;
-        writePrefixes(dest, prefixes) ;
-        Iterator<Quad> iter = datasetGraph.find(null, null, null, null) ;
-        StreamOps.sendQuadsToStream(iter, dest) ;
-        finish(dest) ;
-    }
-
-    protected static void write(StreamRDF dest, Graph graph, PrefixMap prefixes, String baseURI) 
-    {
-        start(dest) ;
-        dest.base(baseURI) ;
-        writePrefixes(dest, prefixes) ;
-        Iterator<Triple> iter = graph.find(null, null, null) ;
-        StreamOps.sendTriplesToStream(iter, dest) ;
-        finish(dest) ;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
index 9667b62..e271557 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
@@ -33,6 +33,8 @@ import com.hp.hpl.jena.sparql.core.Quad ;
 /** Convert the incoming print stream into batches. */
 abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
 {
+    // This has nothing to do with printing except it's under WriterStreamRDFBase
+    // so the operation is "print"
     private Node         currentSubject ;
     private Node         currentGraph ;
     private List<Triple> batchTriples ;
@@ -53,39 +55,38 @@ abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
     @Override
     protected final void endData()      { flush() ; }
 
-    private void flush()
-    {
-        finishBatchTriple(currentSubject) ;
+    private void flush() {
+        finishBatchTriples(currentSubject) ;
         finishBatchQuad(currentGraph, currentSubject) ;
         finalizeRun() ;
     }
-    
+
     @Override
-    protected final void reset()
-    {
-        currentSubject  = null ;
-        currentGraph    = null ;
-        batchTriples    = null ;
-        batchQuads      = null ;
+    protected final void reset() {
+        currentSubject = null ;
+        currentGraph = null ;
+        batchTriples = null ;
+        batchQuads = null ;
     }
 
     @Override
-    protected final void print(Quad quad)
-    {
-        if ( false )
-        {
+    protected final void print(Quad quad) {
+        if ( false ) {
             // Merge to a triple stream.
             triple(quad.asTriple()) ;
             return ;
         }
-        
+
         Node g = quad.getGraph() ;
         Node s = quad.getSubject() ;
-        
-        if ( ! Lib.equal(g, currentGraph) || ! Lib.equal(s,  currentSubject) )
-        {
-            if ( currentSubject != null )
-                finishBatchQuad(currentGraph, currentSubject) ;
+
+        if ( !Lib.equal(g, currentGraph) || !Lib.equal(s, currentSubject) ) {
+            if ( currentSubject != null ) {
+                if ( currentGraph == null )
+                    finishBatchTriples(currentSubject) ;
+                else
+                    finishBatchQuad(currentGraph, currentSubject) ;
+            }
             startBatchQuad(g, s) ;
             currentGraph = g ;
             currentSubject = s ;
@@ -94,13 +95,11 @@ abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
     }
 
     @Override
-    protected final void print(Triple triple)
-    {
+    protected final void print(Triple triple) {
         Node s = triple.getSubject() ;
-        if ( ! Lib.equal(s, currentSubject) )
-        {
+        if ( !Lib.equal(s, currentSubject) ) {
             if ( currentSubject != null )
-                finishBatchTriple(currentSubject) ;
+                finishBatchTriples(currentSubject) ;
             startBatchTriple(s) ;
 
             currentGraph = null ;
@@ -108,40 +107,34 @@ abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
         }
         processTriple(triple) ;
     }
-    
-    private void startBatchTriple(Node subject)
-    {
+
+    private void startBatchTriple(Node subject) {
         batchTriples = new ArrayList<>() ;
     }
-    
-    private void processTriple(Triple triple)
-    {
+
+    private void processTriple(Triple triple) {
         batchTriples.add(triple) ;
     }
 
-    private void finishBatchTriple(Node subject)
-    {
+    private void finishBatchTriples(Node subject) {
         if ( batchTriples != null && batchTriples.size() > 0 ) {
             printBatchTriples(currentSubject, batchTriples) ;
             batchTriples.clear() ;
         }
     }
 
-    private void startBatchQuad(Node graph, Node subject)
-    {
+    private void startBatchQuad(Node graph, Node subject) {
         batchQuads = new ArrayList<>() ;
     }
-    
-    private void processQuad(Quad Quad)
-    {
+
+    private void processQuad(Quad Quad) {
         batchQuads.add(Quad) ;
     }
 
-    private void finishBatchQuad(Node graph, Node subject)
-    {
+    private void finishBatchQuad(Node graph, Node subject) {
         if ( batchQuads != null && batchQuads.size() > 0 ) {
             printBatchQuads(currentGraph, currentSubject, batchQuads) ;
-            batchQuads.clear();
+            batchQuads.clear() ;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
index 4513848..23819ea 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
@@ -70,69 +70,59 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
     protected boolean firstGraph        = true ;
     protected int currentGraphIndent    = 0;
 
-    public WriterStreamRDFBlocks(OutputStream output)
-    { 
+    public WriterStreamRDFBlocks(OutputStream output) {
         super(output) ;
     }
-    
-    public WriterStreamRDFBlocks(Writer output)
-    {
+
+    public WriterStreamRDFBlocks(Writer output) {
         super(output) ;
     }
 
-    public WriterStreamRDFBlocks(IndentedWriter output)
-    {
+    public WriterStreamRDFBlocks(IndentedWriter output) {
         super(output) ;
     }
-    
+
     @Override
-    protected void printBatchQuads(Node g, Node s, List<Quad> quads)
-    {
+    protected void printBatchQuads(Node g, Node s, List<Quad> quads) {
         if ( g == null )
             g = Quad.defaultGraphNodeGenerated ;
-        if ( Lib.equal(g,  lastGraph ))
-        {
+        if ( Lib.equal(g, lastGraph) ) {
             // Same graph, different subject.
             out.println(" .") ;
             out.println() ;
-        }
-        else
-        {
+        } else {
             // Start graph
             endGraph(g) ;
             startGraph(g) ;
             lastGraph = g ;
         }
-        List<Triple> triples = GLib.quads2triples(quads.iterator()).toList();
+        List<Triple> triples = GLib.quads2triples(quads.iterator()).toList() ;
         printBatch(s, triples) ;
         // No trailing "." has been printed.
         lastSubject = s ;
     }
 
-    private void gap(int gap)
-    {
+    private void gap(int gap) {
         out.print(' ', gap) ;
     }
 
     @Override
-    protected void printBatchTriples(Node s, List<Triple> triples)
-    {
+    protected void printBatchTriples(Node s, List<Triple> triples) {
         // Blank line?
         // Not if not prefixes and first batch.
         if ( out.getRow() > 1 )
             out.println() ;
-        
+
         printBatch(s, triples) ;
         // End of cluster.
         out.print(" .") ;
-        out.println() ; 
+        out.println() ;
     }
         
-    private void printBatch(Node s, List<Triple> triples)
-    {
+    private void printBatch(Node s, List<Triple> triples) {
         outputNode(s) ;
         if ( out.getCol() > LONG_SUBJECT )
-            out.println() ; 
+            out.println() ;
         else
             gap(GAP_S_P) ;
         out.incIndent(INDENT_PREDICATE) ;
@@ -141,18 +131,16 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
         out.decIndent(INDENT_PREDICATE) ;
     }
         
-    private void writePredicateObjectList(Collection<Triple> triples)
-    {
+    private void writePredicateObjectList(Collection<Triple> triples) {
         // Find width
         int predicateMaxWidth = RiotLib.calcWidthTriples(pMap, baseURI, triples, MIN_PREDICATE, LONG_PREDICATE) ;
         boolean first = true ;
-        for ( Triple triple : triples )
-        {
-            if ( ! first )
+        for ( Triple triple : triples ) {
+            if ( !first )
                 out.println(" ;") ;
             else
                 first = false ;
-                
+
             Node p = triple.getPredicate() ;
             outputNode(p) ;
             out.pad(predicateMaxWidth) ;
@@ -163,8 +151,7 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
     }
 
     @Override
-    protected void finalizeRun()
-    {
+    protected void finalizeRun() {
         if ( lastGraph != null )
             // last was a quad
             endGraph(null) ;
@@ -173,34 +160,30 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
     protected boolean dftGraph()        { return lastGraph == Quad.defaultGraphNodeGenerated ; }
     protected boolean dftGraph(Node g)  { return g == Quad.defaultGraphNodeGenerated ; }
 
-    protected void startGraph(Node g)
-    {
+    protected void startGraph(Node g) {
         // Start graph
-        if ( lastGraph == null )
-        {
-            boolean NL_START =  ( dftGraph(g) ? NL_GDFT_START : NL_GNMD_START ) ; 
-    
-            if ( ! firstGraph )
+        if ( lastGraph == null ) {
+            boolean NL_START = (dftGraph(g) ? NL_GDFT_START : NL_GNMD_START) ;
+
+            if ( !firstGraph )
                 out.println() ;
             firstGraph = false ;
-            
+
             lastSubject = null ;
-            if ( ! dftGraph(g) )
-            {
+            if ( !dftGraph(g) ) {
                 outputNode(g) ;
                 out.print(" ") ;
             }
-                
+
             if ( NL_START )
                 out.println("{") ;
             else
                 out.print("{ ") ;
-                
+
             if ( dftGraph() )
                 setGraphIndent(INDENT_GDFT) ;
-            else
-            {
-                int x = NL_START ? INDENT_GNMD : out.getCol() ; 
+            else {
+                int x = NL_START ? INDENT_GNMD : out.getCol() ;
                 setGraphIndent(x) ;
             }
             out.incIndent(graphIndent()) ;
@@ -208,15 +191,13 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
         lastGraph = g ;
     }
 
-    protected void endGraph(Node g)
-    {
+    protected void endGraph(Node g) {
         if ( lastGraph == null )
             return ;
-            
+
         // End of graph
-        if ( ! equal(lastGraph, g) )
-        {
-            boolean NL_END =  ( dftGraph(g) ? NL_GDFT_END : NL_GNMD_END ) ; 
+        if ( !equal(lastGraph, g) ) {
+            boolean NL_END = (dftGraph(g) ? NL_GDFT_END : NL_GNMD_END) ;
 
             if ( lastSubject != null )
                 out.print(" .") ;


[06/10] git commit: Deprecate

Posted by an...@apache.org.
Deprecate

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

Branch: refs/heads/master
Commit: e87a8a37c52f9ff97afe031613d7de2add4b9e31
Parents: 659f777
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:46:03 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:46:03 2014 +0100

----------------------------------------------------------------------
 .../com/hp/hpl/jena/sparql/lib/DatasetLib.java  | 40 +++++++-------------
 1 file changed, 13 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e87a8a37/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/DatasetLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/DatasetLib.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/DatasetLib.java
index f76f728..37c86a8 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/DatasetLib.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/DatasetLib.java
@@ -18,21 +18,19 @@
 
 package com.hp.hpl.jena.sparql.lib;
 
-import java.util.Iterator ;
-
 import org.apache.jena.atlas.io.IndentedWriter ;
 
-import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
 import com.hp.hpl.jena.sparql.sse.writers.WriterGraph ;
+import com.hp.hpl.jena.sparql.util.IsoMatcher ;
 
 public class DatasetLib
 {
     /** Write, in SSE format (a debugging format).
      */
+    @Deprecated
     public static void dump(DatasetGraph dataset)
     {
         WriterGraph.output(IndentedWriter.stdout, dataset, null) ;
@@ -40,8 +38,10 @@ public class DatasetLib
     }
     
     /**
-     * Return true if the datasets are isomorphic - same names for graphs, graphs isomorphic. 
+     * Return true if the datasets are isomorphic - same names for graphs, graphs isomorphic.
+     * @deprecated Use {@linkplain IsoMatcher#isomorphic(DatasetGraph, DatasetGraph)}
      */
+    @Deprecated
     public static boolean isomorphic(Dataset dataset1, Dataset dataset2)
     {
         return isomorphic(dataset1.asDatasetGraph(), dataset2.asDatasetGraph()) ;
@@ -49,33 +49,19 @@ public class DatasetLib
     
     /**
      * Return true if the datasets are isomorphic - same names for graphs, graphs isomorphic. 
+     * @deprecated Use {@linkplain IsoMatcher#isomorphic(DatasetGraph, DatasetGraph)}
      */
+    @Deprecated
     public static boolean isomorphic(DatasetGraph dataset1, DatasetGraph dataset2)
     {
-        long x1 = dataset1.size() ;
-        long x2 = dataset2.size() ;
-        if ( x1 >=0 && x1 != x2 )
-            return false ;
-        
-        boolean b = dataset1.getDefaultGraph().isIsomorphicWith(dataset2.getDefaultGraph()) ;
-        if ( ! b )
-            return b ;
-        
-        for ( Iterator<Node> iter1 = dataset1.listGraphNodes() ; iter1.hasNext() ; )
-        {
-            Node gn = iter1.next() ;
-            Graph g1 = dataset1.getGraph(gn) ;
-            Graph g2 = dataset2.getGraph(gn) ;
-            if ( g2 == null )
-                return false ;
-            if ( ! g1.isIsomorphicWith(g2) )
-                return false ;
-        }
-        
-        return true ;
+        return IsoMatcher.isomorphic(dataset1, dataset2) ;
     }
     
-    // A DatasetGraph that creates memory graphs on mention */
+    // A DatasetGraph that creates memory graphs on mention 
+    /** 
+     * @deprecated Use {@linkplain DatasetGraphFactory#createMem()}
+     */
+    @Deprecated
     public static DatasetGraph createDatasetGraphMem()
     {
         return DatasetGraphFactory.createMem() ;


[08/10] git commit: Document

Posted by an...@apache.org.
Document

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

Branch: refs/heads/master
Commit: 5ed532b48758bd58c2703c0fe55f2ac593a6c0bd
Parents: eeb4e4a
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:47:09 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:47:09 2014 +0100

----------------------------------------------------------------------
 .../sparql/algebra/optimize/TransformPathFlattern.java  | 12 +++++++++---
 .../algebra/optimize/TransformPathFlatternStd.java      |  1 +
 2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5ed532b4/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlattern.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlattern.java
index 52e236b..af5e1d9 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlattern.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlattern.java
@@ -25,9 +25,15 @@ import com.hp.hpl.jena.sparql.core.PathBlock ;
 import com.hp.hpl.jena.sparql.path.PathCompiler ;
 import com.hp.hpl.jena.sparql.path.PathLib ;
 
-/** Perform the equivalent of the trasnactions in the SPARQL 1.1 spec.
- *  ARQ regards path transformation as an optimization.
- *  ARQ does not execute the exact transformation as per spec as there are better ways to do it.
+/**
+ * Perform the equivalent of the transactions in the SPARQL 1.1 spec. ARQ
+ * regards path transformation as an optimization. ARQ does not execute the
+ * exact transformation as per spec as there are better ways to do it for ARQ.
+ * For example, 
+ * <ul>
+ * <li>Path seq -> BGPs or a (sequence)
+ * <li>"|" is not expanded into a union.
+ * </ul>
  */
 
 public class TransformPathFlattern extends TransformCopy

http://git-wip-us.apache.org/repos/asf/jena/blob/5ed532b4/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
index 3433345..163aa25 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
@@ -37,6 +37,7 @@ import com.hp.hpl.jena.sparql.core.VarAlloc ;
 import com.hp.hpl.jena.sparql.path.* ;
 
 /** The path transformation step exactly as per the SPARQL 1.1 spec.
+ *  i.e. joins triples rather creatign BGPs. 
  *  It does not produce very nice execution structures so ARQ uses
  *  a functional equivalent, but different, transformation.
  */


[05/10] git commit: Remove use of DatasetLib for DatasetGraphFactory operations.

Posted by an...@apache.org.
Remove use of DatasetLib for DatasetGraphFactory operations.

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

Branch: refs/heads/master
Commit: 659f777da219c990f3ac13e7d99d071d4afa05a2
Parents: 1bc8142
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:45:44 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:45:44 2014 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/TestSyntaxDetermination.java     |  2 +-
 .../java/org/apache/jena/riot/lang/TestLangNQuads.java    |  8 +++-----
 .../test/java/org/apache/jena/riot/lang/TestLangTrig.java |  7 +++----
 .../org/apache/jena/riot/system/TestJsonLDReadWrite.java  | 10 +++++-----
 4 files changed, 12 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/659f777d/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java b/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
index 5b68117..446ccc9 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
@@ -92,7 +92,7 @@ public class TestSyntaxDetermination extends BaseTest {
     { test(url, contentType, hintLang, expected) ; }
     
     static void test(String url, String ct, Lang hint, Lang expected) {
-        ContentType x = WebContent.determineCT(url, ct, hint) ;
+        ContentType x = WebContent.determineCT(ct, hint, url) ;
         Lang lang = RDFDataMgr.determineLang(url, ct, hint) ;
         assertEquals(expected, lang) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/659f777d/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
index 60f3a6e..65b5447 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
@@ -18,10 +18,8 @@
 
 package org.apache.jena.riot.lang;
 
-import org.apache.jena.riot.RiotReader ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ExFatal ;
-import org.apache.jena.riot.lang.LangRIOT ;
-import org.apache.jena.riot.lang.StreamRDFCounting ;
+import org.apache.jena.riot.RiotReader ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
@@ -29,7 +27,7 @@ import org.junit.Test ;
 
 import com.hp.hpl.jena.graph.NodeFactory ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.lib.DatasetLib ;
+import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
 
 /** Test of syntax by a quads parser (does not include node validitiy checking) */ 
 
@@ -82,7 +80,7 @@ public class TestLangNQuads extends TestLangNTuples
     
     private DatasetGraph parseToDataset(String string)
     {
-        DatasetGraph dsg = DatasetLib.createDatasetGraphMem() ;
+        DatasetGraph dsg = DatasetGraphFactory.createMem() ;
         StreamRDF dest = StreamRDFLib.dataset(dsg) ;
         parse(dest, string) ;
         return dsg ;

http://git-wip-us.apache.org/repos/asf/jena/blob/659f777d/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangTrig.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangTrig.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangTrig.java
index e737c15..914a3f3 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangTrig.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangTrig.java
@@ -21,10 +21,9 @@ package org.apache.jena.riot.lang;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.riot.ErrorHandlerTestLib ;
-import org.apache.jena.riot.RiotReader ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ErrorHandlerEx ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ExWarning ;
-import org.apache.jena.riot.lang.LangTriG ;
+import org.apache.jena.riot.RiotReader ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
@@ -33,7 +32,7 @@ import org.junit.Test ;
 
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.lib.DatasetLib ;
+import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
 import com.hp.hpl.jena.sparql.sse.SSE ;
 
 /** Test the behaviour of the RIOT reader for TriG.  TriG includes checking of terms */
@@ -91,7 +90,7 @@ public class TestLangTrig extends BaseTest
     private static DatasetGraph parse(String... strings)
     {
         String string = StrUtils.strjoin("\n", strings) ;
-        DatasetGraph dsg = DatasetLib.createDatasetGraphMem() ;
+        DatasetGraph dsg = DatasetGraphFactory.createMem() ;
         StreamRDF sink = StreamRDFLib.dataset(dsg) ;
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(string) ;
         LangTriG parser = RiotReader.createParserTriG(tokenizer, "http://base/", sink) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/659f777d/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java b/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
index 777a147..14e754d 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
@@ -22,20 +22,20 @@ import static org.apache.jena.riot.RDFLanguages.JSONLD ;
 
 import java.io.ByteArrayInputStream ;
 import java.io.ByteArrayOutputStream ;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.Iterator ;
+import java.util.Map ;
 
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.riot.RDFDataMgr ;
-import org.junit.Assert;
+import org.junit.Assert ;
 import org.junit.Test ;
 
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.DatasetFactory ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.rdf.model.ModelFactory ;
-import com.hp.hpl.jena.sparql.lib.DatasetLib ;
 import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.sparql.util.IsoMatcher ;
 
 /** tests : JSONLD->RDF ; JSONLD->RDF->JSONLD */
 public class TestJsonLDReadWrite extends BaseTest
@@ -138,7 +138,7 @@ public class TestJsonLDReadWrite extends BaseTest
 
     private static boolean isIsomorphic(Dataset ds1, Dataset ds2)
     {
-        return DatasetLib.isomorphic(ds1, ds2) ;
+        return IsoMatcher.isomorphic(ds1.asDatasetGraph(), ds2.asDatasetGraph()) ;
     }
     
     private static void checkNamespaces(Model m, Map<String, String> namespaces) {


[09/10] git commit: Implement named graph find operations.

Posted by an...@apache.org.
Implement named graph find operations.

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

Branch: refs/heads/master
Commit: 379ab1f5bee48702034ede48d723a2180be49581
Parents: 5ed532b
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:47:54 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:47:54 2014 +0100

----------------------------------------------------------------------
 .../com/hp/hpl/jena/sparql/core/DatasetGraphOne.java    | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/379ab1f5/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphOne.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphOne.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphOne.java
index 0885ffd..5285c41 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphOne.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphOne.java
@@ -35,7 +35,7 @@ public class DatasetGraphOne extends DatasetGraphBaseFind
 {
     private final Graph graph ;
     
-    protected DatasetGraphOne(Graph graph) { this.graph = graph ; }
+    public DatasetGraphOne(Graph graph) { this.graph = graph ; }
     
     @Override
     public boolean containsGraph(Node graphNode)
@@ -87,7 +87,7 @@ public class DatasetGraphOne extends DatasetGraphBaseFind
     }      
     
     @Override
-    public void delete(Node g , Node s, Node p, Node o)
+    public void delete(Node g, Node s, Node p, Node o)
     {
         if (  Quad.isDefaultGraph(g) )
             graph.delete(new Triple(s, p, o)) ;
@@ -120,23 +120,19 @@ public class DatasetGraphOne extends DatasetGraphBaseFind
     @Override
     protected Iterator<Quad> findInDftGraph(Node s, Node p, Node o)
     { 
-        if ( true ) throw new UnsupportedOperationException() ;
-        return triples2quadsDftGraph(graph.find(s, p ,o)) ; }
+        return triples2quadsDftGraph(graph.find(s, p ,o)) ; 
+    }
 
-    // -- Not needed.
     @Override
     protected Iterator<Quad> findInSpecificNamedGraph(Node g, Node s, Node p, Node o)
     {
-        if ( true ) throw new UnsupportedOperationException() ;
         // There are no named graphs
         return Iter.nullIterator() ;
     }
 
-    // -- Not needed.
     @Override
     protected Iterator<Quad> findInAnyNamedGraphs(Node s, Node p, Node o)
     {
-        if ( true ) throw new UnsupportedOperationException() ;
         // There are no named graphs
         return Iter.nullIterator() ;
     }


[04/10] git commit: Consistent formatting

Posted by an...@apache.org.
Consistent formatting

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

Branch: refs/heads/master
Commit: 1bc8142d7df7c1258a1973d52bacb73a9e8f1b86
Parents: c0bc67d
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 23 14:44:20 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 23 14:44:20 2014 +0100

----------------------------------------------------------------------
 .../com/hp/hpl/jena/sparql/util/IsoMatcher.java | 102 +++++++------------
 1 file changed, 39 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1bc8142d/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/IsoMatcher.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/IsoMatcher.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/IsoMatcher.java
index d620fa9..ecfad1f 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/IsoMatcher.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/IsoMatcher.java
@@ -18,13 +18,14 @@
 
 package com.hp.hpl.jena.sparql.util ;
 
+import static org.apache.jena.atlas.lib.Tuple.createTuple ;
+
 import java.util.ArrayList ;
 import java.util.Collection ;
 import java.util.Iterator ;
 import java.util.List ;
 
 import org.apache.jena.atlas.lib.Tuple ;
-import static org.apache.jena.atlas.lib.Tuple.* ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
@@ -54,44 +55,43 @@ public class IsoMatcher
 //    private final Queue<Pair<Node, Node>>   causes  = new LinkedList<>() ;  
     private final EqualityTest nodeTest ;
 
-    static class Mapping
-    {
-        final Node    node1 ;
-        final Node    node2 ;
-        final Mapping parent ;
+    static class Mapping {
+        final Node     node1 ;
+        final Node     node2 ;
+        final Mapping  parent ;
 
         static Mapping rootMapping = new Mapping(null, null, null) ;
-        
-        public Mapping(Mapping parent, Node node1, Node node2)
-        {
+
+        public Mapping(Mapping parent, Node node1, Node node2) {
             super() ;
             this.parent = parent ;
             this.node1 = node1 ;
             this.node2 = node2 ;
         }
 
-        public boolean mapped(Node node)    { return map(node) != null ; } 
-        public boolean revmapped(Node node) { return revmap(node) != null ; }
-        
-        public Node map(Node node)
-        {
+        public boolean mapped(Node node) {
+            return map(node) != null ;
+        }
+
+        public boolean revmapped(Node node) {
+            return revmap(node) != null ;
+        }
+
+        public Node map(Node node) {
             Mapping mapping = this ;
-            while (mapping != rootMapping)
-            {
-                if (mapping.node1.equals(node))
+            while (mapping != rootMapping) {
+                if ( mapping.node1.equals(node) )
                     return mapping.node2 ;
                 mapping = mapping.parent ;
             }
             return null ;
         }
-        
+
         // Reverse mapping.
-        public Node revmap(Node node)
-        {
+        public Node revmap(Node node) {
             Mapping mapping = this ;
-            while (mapping != rootMapping)
-            {
-                if (mapping.node2.equals(node))
+            while (mapping != rootMapping) {
+                if ( mapping.node2.equals(node) )
                     return mapping.node1 ;
                 mapping = mapping.parent ;
             }
@@ -102,9 +102,8 @@ public class IsoMatcher
         public String toString() {
             StringBuilder sbuff = new StringBuilder() ;
             Mapping mapping = this ;
-            while (mapping != rootMapping)
-            {
-                sbuff.append("{"+mapping.node1+" => "+mapping.node2+"}") ;
+            while (mapping != rootMapping) {
+                sbuff.append("{" + mapping.node1 + " => " + mapping.node2 + "}") ;
                 mapping = mapping.parent ;
             }
             sbuff.append("{}") ;
@@ -112,21 +111,18 @@ public class IsoMatcher
         }
     }
     
-    static class Cause
-    {
-        final Tuple<Node>  tuple ;
-        final Mapping mapping ;
+    static class Cause {
+        final Tuple<Node> tuple ;
+        final Mapping     mapping ;
 
-        public Cause(Tuple<Node> tuple, Mapping mapping)
-        {
+        public Cause(Tuple<Node> tuple, Mapping mapping) {
             super() ;
             this.tuple = tuple ;
             this.mapping = mapping ;
         }
     }
 
-    public static boolean isomorphic(Graph g1, Graph g2)
-    {
+    public static boolean isomorphic(Graph g1, Graph g2) {
         List<Tuple<Node>> x1 = tuplesTriples(g1.find(null, null, null)) ;
         List<Tuple<Node>> x2 = tuplesTriples(g2.find(null, null, null)) ;
         
@@ -134,8 +130,7 @@ public class IsoMatcher
         return matcher.match() ;
     }
 
-    public static boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2)
-    {
+    public static boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2) {
         List<Tuple<Node>> x1 = tuplesQuads(dsg1.find()) ;
         List<Tuple<Node>> x2 = tuplesQuads(dsg2.find()) ;
         
@@ -150,7 +145,6 @@ public class IsoMatcher
         return matcher.match() ;
     }
 
-
     private static List<Tuple<Node>> tuplesTriples(Iterator<Triple> iter) {
         List<Tuple<Node>> tuples = new ArrayList<>() ;
         for ( ; iter.hasNext() ; ) {
@@ -171,21 +165,18 @@ public class IsoMatcher
         return tuples ;
     }
 
-    private IsoMatcher(List<Tuple<Node>> g1, List<Tuple<Node>> g2, EqualityTest nodeTest)
-    {
+    private IsoMatcher(List<Tuple<Node>> g1, List<Tuple<Node>> g2, EqualityTest nodeTest) {
         this.tuples1 = g1 ;
         this.tuples2 = g2 ;
         this.nodeTest = nodeTest ;
     }
 
-    // May MUTATE tuples1 or tuples2 
-    private boolean match()
-    {
+    // May MUTATE tuples1 or tuples2
+    private boolean match() {
         return match(tuples1, tuples2, Mapping.rootMapping) ;
     }
 
-    private boolean match(List<Tuple<Node>> tuples1, List<Tuple<Node>> tuples2, Mapping mapping)
-    {
+    private boolean match(List<Tuple<Node>> tuples1, List<Tuple<Node>> tuples2, Mapping mapping) {
         if ( DEBUG ) {
             System.out.println("match: ") ;
             System.out.println("  "+tuples1) ;
@@ -224,11 +215,9 @@ public class IsoMatcher
         return true ;
     }
 
-    private List<Cause> match(Tuple<Node> t1, Collection<Tuple<Node>> g2, Mapping mapping)
-    {
+    private List<Cause> match(Tuple<Node> t1, Collection<Tuple<Node>> g2, Mapping mapping) {
         List<Cause> matches = new ArrayList<>() ;
-        for (Tuple<Node> t2 : g2)
-        {
+        for ( Tuple<Node> t2 : g2 ) {
             // No - multiple bNodes.
             Mapping step = gen(t1, t2, mapping) ;
             if (step != null) { 
@@ -239,20 +228,8 @@ public class IsoMatcher
         return matches ;
     }
 
-    // -------------------------------
-    
-//    private Triple subtitute(Triple t, Mapping mapping) {
-//        if ( mapping == null )
-//            return t ;
-//        Node s = mapping.map(t.getSubject()) ;
-//        Node p = mapping.map(t.getPredicate()) ;
-//        Node o = mapping.map(t.getPredicate()) ;
-//        return Triple.create(s,p,o) ;
-//    }
-
     // Maybe several mappings!
-    private Mapping gen(Tuple<Node> t1, Tuple<Node> t2, Mapping _mapping)
-    {
+    private Mapping gen(Tuple<Node> t1, Tuple<Node> t2, Mapping _mapping) {
         if ( t1.size() != t2.size() )
             return null ;
         
@@ -260,8 +237,7 @@ public class IsoMatcher
         for ( int i = 0 ; i < t1.size() ; i++ ) {
             Node n1 = t1.get(i) ;
             Node n2 = t2.get(i) ;
-            if ( ! nodeTest.equal(n1, n2) )
-            {
+            if ( ! nodeTest.equal(n1, n2) ) {
                 mapping = gen(n1, n2, mapping) ;
                 if ( mapping == null )
                     return null ;