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()) ;
}
}