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
     {