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 2013/05/11 19:03:49 UTC

svn commit: r1481375 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/sparql/core/ test/java/com/hp/hpl/jena/sparql/core/

Author: andy
Date: Sat May 11 17:03:49 2013
New Revision: 1481375

URL: http://svn.apache.org/r1481375
Log:
Rename GraphViewDataset as GraphView.
Bug fixes after testing with a prototype version of TDB.


Added:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphView.java
      - copied, changed from r1478782, jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphViewDataset.java
Removed:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphViewDataset.java
Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphViewGraphs.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/core/TestDatasetGraphViewGraphs.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphViewGraphs.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphViewGraphs.java?rev=1481375&r1=1481374&r2=1481375&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphViewGraphs.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphViewGraphs.java Sat May 11 17:03:49 2013
@@ -26,7 +26,7 @@ import com.hp.hpl.jena.graph.Node ;
  * {@linkplain DatasetGraph#getGraph}
  * that use the view graph mechanism.
  * 
- * @see GraphViewDataset
+ * @see GraphView
  */
 
 public class DatasetGraphViewGraphs extends DatasetGraphWrapper
@@ -42,11 +42,11 @@ public class DatasetGraphViewGraphs exte
 
     @Override
     public Graph getDefaultGraph()
-    { return GraphViewDataset.createDefaultGraph(getWrapped()) ; }
+    { return GraphView.createDefaultGraph(getWrapped()) ; }
 
     @Override
     public Graph getGraph(Node graphNode)
-    { return GraphViewDataset.createNamedGraph(getWrapped(), graphNode) ; }
+    { return GraphView.createNamedGraph(getWrapped(), graphNode) ; }
     
     
 }

Copied: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphView.java (from r1478782, jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphViewDataset.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphView.java?p2=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphView.java&p1=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphViewDataset.java&r1=1478782&r2=1481375&rev=1481375&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphViewDataset.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/GraphView.java Sat May 11 17:03:49 2013
@@ -23,7 +23,6 @@ import java.util.Iterator ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.riot.other.GLib ;
 
-import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.graph.TripleMatch ;
@@ -36,9 +35,9 @@ import com.hp.hpl.jena.util.iterator.Wra
 
 /** Implement a Graph as a view of the DatasetGraph.
  * 
- *  - maps graph operations to quad operations. */ 
+ *  It maps graph operations to quad operations. */ 
 
-public class GraphViewDataset extends GraphBase
+public class GraphView extends GraphBase
 {
     // Beware this implements union graph - implementation may wish
     // to do better so see protected method below.
@@ -54,38 +53,48 @@ public class GraphViewDataset extends Gr
     private final DatasetGraph dsg ;
     private final Node gn ;                 // null for default graph.
 
-    protected GraphViewDataset(DatasetGraph dsg, Node gn)
+    // Factory style.
+    public static GraphView createDefaultGraph(DatasetGraph dsg)
+    { return new GraphView(dsg, Quad.defaultGraphNodeGenerated) ; }
+    
+    public static GraphView createNamedGraph(DatasetGraph dsg, Node graphIRI)
+    { return new GraphView(dsg, graphIRI) ; }
+    
+    // If inherited.
+    protected GraphView(DatasetGraph dsg, Node gn)
     { 
         this.dsg = dsg ; 
-        if ( gn == null )
-            gn = Quad.defaultGraphNodeGenerated ;
         this.gn = gn ;
     }
     
-    public static Graph createDefaultGraph(DatasetGraph dsg)
-    { return new GraphViewDataset(dsg, Quad.defaultGraphNodeGenerated) ; }
+    /** Return the graph name for this graph in the dataset it is a view of.
+     *  Returns {@code null} for the default graph. 
+     */
+    public Node getGraphName()
+    {
+        return ( gn == Quad.defaultGraphNodeGenerated ) ? null : gn ; 
+    }
+    
+    /** Return the DatasetGraph we are viewing. */
+    public DatasetGraph getDataset()       
+    {
+        return dsg ;
+    }
     
-    public static Graph createNamedGraph(DatasetGraph dsg, Node graphIRI)
-    { return new GraphViewDataset(dsg, graphIRI) ; }
     
-    private final boolean isDefaultGraph() { return Quad.isDefaultGraph(gn) ; }
+    protected final boolean isDefaultGraph() { return isDefaultGraph(gn) ; }
+    protected final boolean isUnionGraph()   { return isUnionGraph(gn) ; }
 
+    protected static final boolean isDefaultGraph(Node gn) { return gn == null || Quad.isDefaultGraph(gn) ; }
+    protected static final boolean isUnionGraph(Node gn)   { return Quad.isUnionGraph(gn) ; }
+    
     @Override
     protected PrefixMapping createPrefixMapping()
     {
-        // TODO Unsatisfactory - need PrefixMap support by DSGs then POeefixMap -> PrefixMapping
+        // TODO Unsatisfactory - need PrefixMap support by DSGs then PrefixMap -> PrefixMapping
         return new PrefixMappingImpl() ; 
     }
 
-//    private Graph baseGraph()
-//    {
-//        // TODO Be able to by pass already wrapped DSGs.
-//        if ( isDefaultGraph() ) 
-//            return dsg.getBase().getDefaultGraph() ;
-//        else
-//            return dsg.getBase().getGraph(gn) ;
-//    }
-
     @Override
     protected ExtendedIterator<Triple> graphBaseFind(TripleMatch m)
     {
@@ -99,44 +108,53 @@ public class GraphViewDataset extends Gr
     @Override
     protected ExtendedIterator<Triple> graphBaseFind(Node s, Node p, Node o)
     {
-        Iterator<Triple> iter = GLib.quads2triples(dsg.find(gn, s, p, o)) ;
+        Node g = graphNode(gn) ;
+        Iterator<Triple> iter = GLib.quads2triples(dsg.find(g, s, p, o)) ;
         if ( Quad.isUnionGraph(gn) )
             return graphUnionFind(s, p, o) ;
         return WrappedIterator.createNoRemove(iter) ;
     }
 
+    private static Node graphNode(Node gn)
+    {
+        return ( gn == null ) ? Quad.defaultGraphNodeGenerated : gn ;
+    }
+
     protected ExtendedIterator<Triple> graphUnionFind(Node s, Node p, Node o)
     {
+        Node g = graphNode(gn) ;
         // Implementations may wish to do better so this is separated out.
         // For example, Iter.distinctAdjacent is a lot cheaper than Iter.distinct
         // but assumes thing come back in a particular order
-        Iterator<Triple> iter = GLib.quads2triples(dsg.find(gn, s, p, o)) ;
+        Iterator<Quad> iterQuads = getDataset().find(g, s, p, o) ;
+        Iterator<Triple> iter = GLib.quads2triples(iterQuads) ;
         // Suppress duplicates after projecting to triples.
         iter = Iter.distinct(iter) ;
         return WrappedIterator.createNoRemove(iter) ;
     }
     
-    
     @Override
     public void performAdd( Triple t )
     { 
-        if ( Quad.isUnionGraph(gn) )
+        Node g = graphNode(gn) ;
+        if ( Quad.isUnionGraph(g) )
             throw new GraphViewException("Can't update the default union graph of a dataset") ; 
         Node s = t.getSubject() ;
         Node p = t.getPredicate() ;
         Node o = t.getObject() ;
-        dsg.add(gn, s, p, o) ;
+        dsg.add(g, s, p, o) ;
     }
 
     @Override
     public void performDelete( Triple t ) 
     {
-        if ( Quad.isUnionGraph(gn) )
+        Node g = graphNode(gn) ;
+        if ( Quad.isUnionGraph(g) )
             throw new GraphViewException("Can't update the default union graph of a dataset") ; 
         Node s = t.getSubject() ;
         Node p = t.getPredicate() ;
         Node o = t.getObject() ;
-        dsg.delete(gn, s, p, o) ;
+        dsg.delete(g, s, p, o) ;
     }
 }
 

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java?rev=1481375&r1=1481374&r2=1481375&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java Sat May 11 17:03:49 2013
@@ -104,7 +104,7 @@ public class Quad
     /** Default, concrete graph (either generated or explicitly named) -- not triple-in-quad*/
     public static boolean isDefaultGraph(Node node)
     {
-        return isDefaultGraphGenerated(node) ||isDefaultGraphExplicit(node) ; 
+        return isDefaultGraphGenerated(node) || isDefaultGraphExplicit(node) ; 
     }
 
     /** Default, concrete graph (either generated or explicitly named) -- not triple-in-quad*/

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/core/TestDatasetGraphViewGraphs.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/core/TestDatasetGraphViewGraphs.java?rev=1481375&r1=1481374&r2=1481375&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/core/TestDatasetGraphViewGraphs.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/core/TestDatasetGraphViewGraphs.java Sat May 11 17:03:49 2013
@@ -18,11 +18,14 @@
 
 package com.hp.hpl.jena.sparql.core;
 
+import org.junit.Test ;
+
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
-import com.hp.hpl.jena.sparql.core.GraphViewDataset ;
+import com.hp.hpl.jena.sparql.core.GraphView ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
 
 /** Directly call the view mechanism */
 public class TestDatasetGraphViewGraphs extends AbstractTestGraphOverDataset
@@ -33,12 +36,31 @@ public class TestDatasetGraphViewGraphs 
     @Override
     protected Graph makeDefaultGraph(DatasetGraph dsg)
     {
-        return GraphViewDataset.createDefaultGraph(dsg) ;
+        return GraphView.createDefaultGraph(dsg) ;
     }
 
     @Override
     protected Graph makeNamedGraph(DatasetGraph dsg, Node gn)
     {
-        return GraphViewDataset.createNamedGraph(dsg, gn) ;
+        return GraphView.createNamedGraph(dsg, gn) ;
+    }
+    
+    @Test public void graphDSG_basic_1()
+    {
+        Graph g = makeDefaultGraph(baseDSG) ;
+        assertTrue(g instanceof GraphView) ;
+        GraphView gv = (GraphView)g ;
+        assertEquals(baseDSG, gv.getDataset()) ; 
+        assertEquals(null, gv.getGraphName()) ;
+    }
+    
+    @Test public void graphDSG_basic_2()
+    {
+        Node gn1 = SSE.parseNode("<g1>") ;
+        Graph g = makeNamedGraph(baseDSG, gn1) ;
+        assertTrue(g instanceof GraphView) ;
+        GraphView gv = (GraphView)g ;
+        assertEquals(baseDSG, gv.getDataset()) ; 
+        assertEquals(gn1, gv.getGraphName()) ;
     }
 }