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 2012/08/13 17:46:11 UTC
svn commit: r1372473 - in /jena/Scratch/AFS:
Dev/trunk/src/main/java/projects/viewgraph/ Jena-Dev/trunk/src/dev/
Author: andy
Date: Mon Aug 13 15:46:11 2012
New Revision: 1372473
URL: http://svn.apache.org/viewvc?rev=1372473&view=rev
Log: (empty)
Added:
jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/MAIN.java
Modified:
jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GLib.java
jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GraphViewDataset.java
jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/PROJECT_ViewGraphs.java
jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java
Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GLib.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GLib.java?rev=1372473&r1=1372472&r2=1372473&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GLib.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GLib.java Mon Aug 13 15:46:11 2012
@@ -32,8 +32,6 @@ import com.hp.hpl.jena.util.iterator.Ext
/** A collection of Graph/Triple/Node related functions */
public class GLib
{
- // DatasetGraphSimpleMem, Triple and other places
-
/** Convert null to Node.ANY */
public static Node nullAsAny(Node x) { return nullAsDft(x, Node.ANY) ; }
@@ -41,7 +39,6 @@ public class GLib
public static Node nullAsDft(Node x, Node dft) { return x==null ? dft : x ; }
// DISTINCT means these are space using.
- // Make part of graph interface.
/** List the subjects in a graph (no duplicates) */
public static Iterator<Node> listSubjects(Graph graph)
{
@@ -67,39 +64,41 @@ public class GLib
@Override
public Triple convert(Quad quad) { return quad.asTriple() ; }
} ;
-
+
+ /** Project quads to triples */
public static Iter<Triple> quads2triples(Iterator<Quad> iter)
{
return Iter.iter(iter).map(transformQuad2Triple) ;
}
-
- // Tidy up in DatasetGraphQuad
- // Tidy up in Path Engine
-
- /** Transform quad to graphname */
+
+ /** Project quad to graphname */
public static Iterator<Node> quad2graphName(Iterator<Quad> iter)
{ return Iter.map(iter, projectQuadGraphName) ; }
- /** Transform quad to graphname */
+ /** Project quad to graphname */
public static Iterator<Node> quad2subject(Iterator<Quad> iter)
{ return Iter.map(iter, projectQuadSubject) ; }
- /** Transform quad to predicate */
+ /** Project quad to predicate */
public static Iterator<Node> quad2predicate(Iterator<Quad> iter)
{ return Iter.map(iter, projectQuadPredicate) ; }
- /** Transform quad to object */
+ /** Project quad to object */
public static Iterator<Node> quad2object(Iterator<Quad> iter)
{ return Iter.map(iter, projectQuadObject) ; }
- /** Transform triple to subject */
+ /** Project triple to subject */
public static Iterator<Node> triple2subject(Iterator<Triple> iter)
{ return Iter.map(iter, projectTripeSubject) ; }
- /** Transform triple to predicate */
+ /** Project triple to predicate */
public static Iterator<Node> triple2predicate(Iterator<Triple> iter)
{ return Iter.map(iter, projectTripePredicate) ; }
+ /** Project triple to object */
+ public static Iterator<Node> triple2object(Iterator<Triple> iter)
+ { return Iter.map(iter, projectTripeObject) ; }
+
/** Transform quad to graphname */
public static Transform<Quad, Node> projectQuadGraphName = new Transform<Quad, Node>() {
@Override public Node convert(Quad quad) { return quad.getGraph() ; }
@@ -113,7 +112,7 @@ public class GLib
@Override public Node convert(Quad quad) { return quad.getPredicate() ; }
} ;
/** Transform quad to object */
- static Transform<Quad, Node> projectQuadObject = new Transform<Quad, Node>() {
+ public static Transform<Quad, Node> projectQuadObject = new Transform<Quad, Node>() {
@Override public Node convert(Quad quad) { return quad.getObject() ; }
} ;
/** Transform triple to subject */
@@ -128,8 +127,5 @@ public class GLib
public static Transform<Triple, Node> projectTripeObject = new Transform<Triple, Node>() {
@Override public Node convert(Triple triple) { return triple.getObject() ; }
} ;
- /** Transform triple to object */
- public static Iterator<Node> triple2object(Iterator<Triple> iter)
- { return Iter.map(iter, projectTripeObject) ; }
}
Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GraphViewDataset.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GraphViewDataset.java?rev=1372473&r1=1372472&r2=1372473&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GraphViewDataset.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/GraphViewDataset.java Mon Aug 13 15:46:11 2012
@@ -37,7 +37,7 @@ import com.hp.hpl.jena.sparql.graph.Grap
import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
import com.hp.hpl.jena.util.iterator.WrappedIterator ;
-/** Graph over a DatasetGraph - does not use getDefaultGraph etc (but maybe an implementation of) */
+/** Graph over a DatasetGraph - maps graph operations to quad operations. */
public class GraphViewDataset extends GraphBase2
{
@@ -49,13 +49,6 @@ public class GraphViewDataset extends Gr
public GraphViewException(String message, Throwable cause) { super(message, cause) ; }
}
- // TODO datasetGraph - performAdd - call after making union graph
- // TODO Integrate with DatasetGraphTriplesQuads / DatasetGraphQuads
- // TODO default union graphs
- // TODO Consolidate iterator projections : quads -> triples : see GLib
- // TODO DatasetPrefixStorage projection for prfix mapping.
- // TODO Use GraphPrefixesProjection (not PrefixMappingOverPrefixMap).
-
private final DatasetGraph dsg ;
private final Node gn ; // null for default graph.
private DatasetPrefixes dsgPrefixes ;
@@ -64,8 +57,11 @@ public class GraphViewDataset extends Gr
{
this.dsg = dsg ;
this.dsgPrefixes = dsgPrefixes ;
- //Quad.defaultGraphIRI ;
- //Quad.defaultGraphNodeGenerated
+ // Special cases:
+ // Quad.defaultGraphIRI ;
+ // Quad.defaultGraphNodeGenerated
+ // Quad.unionGraph
+ // See GraphOps
if ( gn == null )
gn = Quad.defaultGraphNodeGenerated ;
this.gn = gn ;
@@ -134,16 +130,18 @@ public class GraphViewDataset extends Gr
@Override
protected ExtendedIterator<Triple> graphBaseFind(Node s, Node p, Node o)
{
- Node g = gn ;
- // Assumes dataset understands default union graphs.
- // The general purpose implementation does.
- // BUT?
-
Iterator<Triple> iter = GLib.quads2triples(dsg.find(gn, s, p, o)) ;
if ( Quad.isUnionGraph(gn) )
- // Suppress duplicates after projecting to triples.
- // A graph is a set of triples.
- iter = Iter.distinct(iter) ;
+ return graphUnionFind(s, p, o) ;
+ return WrappedIterator.createNoRemove(iter) ;
+ }
+
+ protected ExtendedIterator<Triple> graphUnionFind(Node s, Node p, Node o)
+ {
+ // Implementation may wish to do better so this is separated out.
+ Iterator<Triple> iter = GLib.quads2triples(dsg.find(gn, s, p, o)) ;
+ // Suppress duplicates after projecting to triples.
+ iter = Iter.distinct(iter) ;
return WrappedIterator.createNoRemove(iter) ;
}
Added: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/MAIN.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/MAIN.java?rev=1372473&view=auto
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/MAIN.java (added)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/MAIN.java Mon Aug 13 15:46:11 2012
@@ -0,0 +1,40 @@
+/**
+ * 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 projects.viewgraph;
+
+import com.hp.hpl.jena.query.* ;
+import com.hp.hpl.jena.sparql.mgt.Explain ;
+import com.hp.hpl.jena.sparql.util.QueryExecUtils ;
+import com.hp.hpl.jena.tdb.TDBFactory ;
+
+public class MAIN
+{
+ public static void main(String[] args)
+ {
+ ARQ.setExecutionLogging(Explain.InfoLevel.ALL) ;
+ Dataset ds = TDBFactory.createDataset() ;
+ ds.begin(ReadWrite.READ) ;
+ Query q = QueryFactory.create("SELECT * { ?s ?p ?o }") ;
+ QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+ QueryExecUtils.executeQuery(q, qexec) ;
+ ds.end() ;
+ }
+
+}
+
Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/PROJECT_ViewGraphs.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/PROJECT_ViewGraphs.java?rev=1372473&r1=1372472&r2=1372473&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/PROJECT_ViewGraphs.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/viewgraph/PROJECT_ViewGraphs.java Mon Aug 13 15:46:11 2012
@@ -23,8 +23,6 @@ public class PROJECT_ViewGraphs
{
/*
* Tests:
- * Update through a viewgraph
- * exists tests, contains tests
* prefix tests
*
* Migrate to TDB first, use GraphOps.
@@ -38,8 +36,34 @@ public class PROJECT_ViewGraphs
* See also: comment in GraphNamedTDB
*/
- /* Migration cleanup
- * To TDB first.
- * Check all uses of defaultGraph and union graph names.
+ // Prefix mappings for the union graph.
+
+ // TODO Integrate with DatasetGraphTriplesQuads / DatasetGraphQuads
+ // TODO Consolidate iterator projections : quads -> triples : see GLib -> GraphOps
+ // Where else?
+ // DatasetGraphQuad
+ // Tidy up in Path Engine
+
+ // TODO DatasetPrefixStorage projection for prfix mapping.
+ // TODO Use GraphPrefixesProjection (not PrefixMappingOverPrefixMap).
+
+ /* Migration cleanup
+ * To TDB first / clearup OpExecutorTDB
+ * GraphTDB - getDataset, getGraphNode.
+ * GraphTDBBase.graphBaseFindDft(TripleTable) -- remove?
+ * GraphTDBBase.graphBaseFindNG(Dataset, GraphNode) -- remove? - put logic in the DatasetGraphTDB
+ *
+ * GraphTDBBase extends GraphViewDataset. Only need one?
+ *
+ * OpExecutorTDB.
+ * Currently, OpExecutorTDB.decideGraphNode flips union graph to Node.ANY and SolverLib knows Node.ANY is union.
+ * Better is one of:
+ * to make OpExecutorTDB neutral and put unionGraph into SolverLib?
+ * to remove anything here from SolverLib and put union->distinct in DatasetGraphTDB where it can be index sensitive **
+ * to remove anything here from SolverLib and put it in OpExecutorTDB.optimizeExecQuads (no - not NodeId based).
+ * Hierarchy: OpExecutorTDB (plain) > OpExecutorTDBReorder. Simpler.
*/
+
+
+
}
Modified: jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java?rev=1372473&r1=1372472&r2=1372473&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java (original)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java Mon Aug 13 15:46:11 2012
@@ -25,13 +25,14 @@ import java.io.InputStream ;
import org.openjena.atlas.logging.Log ;
import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.query.Dataset ;
-import com.hp.hpl.jena.query.ReadWrite ;
+import com.hp.hpl.jena.query.* ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.rdf.model.RDFReader ;
import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.mgt.Explain ;
import com.hp.hpl.jena.sparql.sse.SSE ;
-import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.sparql.util.QueryExecUtils ;
+import com.hp.hpl.jena.tdb.TDB ;
import com.hp.hpl.jena.tdb.TDBException ;
import com.hp.hpl.jena.tdb.TDBFactory ;
import com.hp.hpl.jena.tdb.base.file.FileFactory ;
@@ -46,11 +47,9 @@ import com.hp.hpl.jena.tdb.nodetable.Nod
import com.hp.hpl.jena.tdb.setup.NodeTableBuilder ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.tdb.store.NodeId ;
-import com.hp.hpl.jena.tdb.store.StoreConfig ;
import com.hp.hpl.jena.tdb.sys.FileRef ;
import com.hp.hpl.jena.tdb.sys.Names ;
import com.hp.hpl.jena.tdb.sys.SystemTDB ;
-import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
import com.hp.hpl.jena.tdb.transaction.NodeTableTrans ;
import com.hp.hpl.jena.tdb.transaction.Transaction ;
@@ -62,40 +61,19 @@ public class Run extends RunBase
public static void main(String[] argv) throws Exception
{
- long x = System.currentTimeMillis() ;
- Quad q = SSE.parseQuad("(<g> <s> <p> '000-"+x+"') ") ;
-
- StoreConnection.reset() ;
-// FileOps.ensureDir(DIR) ;
-// FileOps.clearDirectory(DIR) ;
-//
-// File d = new File(DIR) ;
-// if ( d.list().length > 2 ) // . and ..
-// throw new RuntimeException("not empty") ;
-// DatasetGraphTransaction ds = (DatasetGraphTransaction)TDBFactory.createDatasetGraph(DIR) ;
-
- DatasetGraphTransaction ds = (DatasetGraphTransaction)TDBFactory.createDatasetGraph() ;
- DatasetGraphTDB dsgTDB = ds.getBaseDatasetGraph() ;
-
- StoreConfig config = dsgTDB.getConfig() ;
- for ( FileRef fileRef : config.blockMgrs.keySet() )
- System.out.println("BlkMgr -- "+fileRef) ;
-
- for ( FileRef fileRef : config.nodeTables.keySet() )
- System.out.println("nodetable -- "+fileRef) ;
+ ARQ.setExecutionLogging(Explain.InfoLevel.ALL) ;
+ ARQ.getContext().set(TDB.symUnionDefaultGraph, true) ;
- System.exit(0) ;
-
-
- ds.begin(ReadWrite.WRITE) ;
- ds.add(q) ;
- ds.commit() ;
- ds.end() ;
+ Dataset ds = TDBFactory.createDataset() ;
+ Quad q0 = SSE.parseQuad("(<g> <s> <p> <o>)") ;
+ ds.asDatasetGraph().add(q0) ;
ds.begin(ReadWrite.READ) ;
- System.out.println(ds) ;
+ Query q = QueryFactory.create("SELECT * { ?s ?p ?o }") ;
+ QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+ QueryExecUtils.executeQuery(q, qexec) ;
ds.end() ;
- }
+ }
public static void prefixesAndTDB() throws Exception
{