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/08/01 18:43:29 UTC

svn commit: r1509324 - in /jena/trunk/jena-tdb/src: main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java test/java/com/hp/hpl/jena/tdb/store/TestLoader.java

Author: andy
Date: Thu Aug  1 16:43:28 2013
New Revision: 1509324

URL: http://svn.apache.org/r1509324
Log:
JENA-496 : Record prefixes in bulk loader.

Modified:
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java?rev=1509324&r1=1509323&r2=1509324&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java Thu Aug  1 16:43:28 2013
@@ -29,6 +29,7 @@ import org.slf4j.Logger ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.shared.PrefixMapping ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.sparql.util.Utils ;
 import com.hp.hpl.jena.tdb.TDB ;
@@ -96,8 +97,7 @@ public class BulkLoader
 
     private static BulkStreamRDF destinationDefaultGraph(DatasetGraphTDB dsg, boolean showProgress)
     {
-        NodeTupleTable ntt = dsg.getTripleTable().getNodeTupleTable() ;
-        return destinationGraph(dsg, ntt, showProgress) ;
+        return destinationGraph(dsg, null, showProgress) ;
     }
 
     /** Load into named graph */
@@ -127,7 +127,6 @@ public class BulkLoader
         BulkStreamRDF dest = destinationDataset(dsg, showProgress) ;
         loadQuads$(dest, input) ;
     }
-    
 
     /** Load into a graph */
     private static void loadTriples$(BulkStreamRDF dest, List<String> urls)
@@ -175,10 +174,7 @@ public class BulkLoader
     {
         if ( graphName == null )
             return destinationDefaultGraph(dsg,showProgress) ;
-        
-        NodeTupleTable ntt = dsg.getQuadTable().getNodeTupleTable() ;
-        NodeTupleTable ntt2 = new NodeTupleTableView(ntt, graphName) ;
-        return destinationGraph(dsg, ntt2, showProgress) ;
+        return destinationGraph(dsg, graphName, showProgress) ;
     }
 
     public static LoadMonitor createLoadMonitor(DatasetGraphTDB dsg, String itemName, boolean showProgress)
@@ -194,9 +190,9 @@ public class BulkLoader
         return new DestinationDSG(dsg, showProgress) ;
     }
     
-    private static BulkStreamRDF destinationGraph(DatasetGraphTDB dsg, NodeTupleTable nodeTupleTable, boolean showProgress)
+    private static BulkStreamRDF destinationGraph(DatasetGraphTDB dsg, Node graphNode, boolean showProgress)
     {
-        return new DestinationGraph(dsg, nodeTupleTable, showProgress) ;
+        return new DestinationGraph(dsg, graphNode, showProgress) ;
     }
 
     // Load triples and quads into a dataset.
@@ -295,8 +291,11 @@ public class BulkLoader
         public void tuple(Tuple<Node> tuple)    { throw new TDBException("Tuple encountered while loading a dataset") ; }
         @Override
         public void base(String base)           {}
+        
         @Override
-        public void prefix(String prefix, String iri)   {} // TODO
+        public void prefix(String prefix, String iri)
+        { dsg.getPrefixes().getPrefixMapping().setNsPrefix(prefix, iri) ; }
+
         @Override
         public void finish()                    {}
     }
@@ -305,15 +304,27 @@ public class BulkLoader
     private static final class DestinationGraph implements BulkStreamRDF
     {
         final private DatasetGraphTDB dsg ;
+        final private Node graphName ;
         final private LoadMonitor monitor ;
         final private LoaderNodeTupleTable loaderTriples ;
         final private boolean startedEmpty ;
         private long count = 0 ;
         private StatsCollector stats ;
 
-        DestinationGraph(final DatasetGraphTDB dsg, NodeTupleTable nodeTupleTable, boolean showProgress)
+        // Graph node is null for default graph.
+        DestinationGraph(final DatasetGraphTDB dsg, Node graphNode, boolean showProgress)
         {
             this.dsg = dsg ;
+            this.graphName = graphNode ;
+            
+            // Choose NodeTupleTable.
+            NodeTupleTable nodeTupleTable ;
+            if ( graphNode == null || Quad.isDefaultGraph(graphNode) )
+                nodeTupleTable = dsg.getTripleTable().getNodeTupleTable() ;
+            else {
+                NodeTupleTable ntt = dsg.getQuadTable().getNodeTupleTable() ;
+                nodeTupleTable = new NodeTupleTableView(ntt, graphName) ;
+            }
             startedEmpty = dsg.isEmpty() ;
             monitor = createLoadMonitor(dsg, "triples", showProgress) ;
             loaderTriples = new LoaderNodeTupleTable(nodeTupleTable, "triples", monitor) ;
@@ -364,7 +375,19 @@ public class BulkLoader
         @Override
         public void base(String base)           { }
         @Override
-        public void prefix(String prefix, String iri)  { } // TODO
+        public void prefix(String prefix, String iri)
+        { 
+            if ( graphName != null && graphName.isBlank() ) {  
+                loadLogger.warn("Prefixes for blank node graphs not stored") ;
+                return ;
+            }
+                
+            PrefixMapping pmap =
+                ( graphName == null )
+                ? dsg.getPrefixes().getPrefixMapping()
+                : dsg.getPrefixes().getPrefixMapping(graphName.getURI()) ;
+            pmap.setNsPrefix(prefix, iri) ;
+        }
         @Override
         public void finish()                    {}
     }

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java?rev=1509324&r1=1509323&r2=1509324&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java Thu Aug  1 16:43:28 2013
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package com.hp.hpl.jena.tdb.store;
+package com.hp.hpl.jena.tdb.store ;
 
 import java.io.InputStream ;
 import java.util.List ;
@@ -39,61 +39,80 @@ import com.hp.hpl.jena.tdb.TDBLoader ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.sys.TDBMaker ;
 
-public class TestLoader extends BaseTest
-{
+public class TestLoader extends BaseTest {
     private static final String DIR = "testing/Loader/" ;
-    private static final Node g = NodeFactory.createURI("g") ;
-    private static final Node s = NodeFactory.createURI("s") ;
-    private static final Node p = NodeFactory.createURI("p") ;
-    private static final Node o = NodeFactory.createURI("o") ;
-    
-    @BeforeClass static public void beforeClass()   { Log.disable(ARQ.logExecName) ; Log.disable(TDB.logLoaderName) ; }
-    @AfterClass  static public void afterClass()    { Log.enable(ARQ.logExecName) ; Log.enable(TDB.logLoaderName) ; }
-    
-    static DatasetGraphTDB fresh() { return TDBMaker.createDatasetGraphTDB(Location.mem()) ; }
-    
-    @Test public void load_dataset_01()
-    {
+    private static final Node   g   = NodeFactory.createURI("g") ;
+    private static final Node   s   = NodeFactory.createURI("s") ;
+    private static final Node   p   = NodeFactory.createURI("p") ;
+    private static final Node   o   = NodeFactory.createURI("o") ;
+
+    @BeforeClass
+    static public void beforeClass() {
+        Log.disable(ARQ.logExecName) ;
+        Log.disable(TDB.logLoaderName) ;
+    }
+
+    @AfterClass
+    static public void afterClass() {
+        Log.enable(ARQ.logExecName) ;
+        Log.enable(TDB.logLoaderName) ;
+    }
+
+    static DatasetGraphTDB fresh() {
+        return TDBMaker.createDatasetGraphTDB(Location.mem()) ;
+    }
+
+    @Test
+    public void load_dataset_01() {
         DatasetGraphTDB dsg = fresh() ;
-        TDBLoader.load(dsg, DIR+"data-1.nq", false) ;
+        TDBLoader.load(dsg, DIR + "data-1.nq", false) ;
         assertTrue(dsg.getDefaultGraph().isEmpty()) ;
         assertEquals(1, dsg.getGraph(g).size()) ;
     }
 
-    @Test public void load_dataset_02()
-    {
+    @Test
+    public void load_dataset_02() {
         DatasetGraphTDB dsg = fresh() ;
-        InputStream in = IO.openFile(DIR+"data-1.nq") ;
+        InputStream in = IO.openFile(DIR + "data-1.nq") ;
         TDBLoader.load(dsg, in, false) ;
         assertTrue(dsg.getDefaultGraph().isEmpty()) ;
         assertEquals(1, dsg.getGraph(g).size()) ;
     }
 
-    @Test public void load_graph_01()
-    {
+    @Test
+    public void load_dataset_03() {
+        DatasetGraphTDB dsg = fresh() ;
+        TDBLoader.load(dsg, DIR + "data-3.trig", false) ;
+        String uri = dsg.getDefaultGraph().getPrefixMapping().getNsPrefixURI("") ;
+        assertEquals("http://example/", uri) ;
+    }
+    
+
+    @Test
+    public void load_graph_01() {
         DatasetGraphTDB dsg = fresh() ;
-        TDBLoader.load(dsg, DIR+"data-2.nt", false) ;
+        TDBLoader.load(dsg, DIR + "data-2.nt", false) ;
         assertEquals(1, dsg.getDefaultGraph().size()) ;
     }
 
-    @Test public void load_graph_02()
-    {
+    @Test
+    public void load_graph_02() {
         DatasetGraphTDB dsg = fresh() ;
-        TDBLoader.load(dsg.getDefaultGraphTDB(), DIR+"data-2.nt", false) ;
+        TDBLoader.load(dsg.getDefaultGraphTDB(), DIR + "data-2.nt", false) ;
         assertEquals(1, dsg.getDefaultGraph().size()) ;
     }
 
-    @Test public void load_graph_03()
-    {
+    @Test
+    public void load_graph_03() {
         DatasetGraphTDB dsg = fresh() ;
-        TDBLoader.load(dsg.getGraphTDB(g), DIR+"data-2.nt", false) ;
+        TDBLoader.load(dsg.getGraphTDB(g), DIR + "data-2.nt", false) ;
         assertEquals(0, dsg.getDefaultGraph().size()) ;
         assertEquals(1, dsg.getGraph(g).size()) ;
-        
+
         // Check indexes.
-        List<Triple> x = Iter.toList(dsg.getDefaultGraph().find(null, null, null)) ; 
+        List<Triple> x = Iter.toList(dsg.getDefaultGraph().find(null, null, null)) ;
         assertEquals(0, x.size()) ;
-            
+
         x = Iter.toList(dsg.getGraph(g).find(null, null, null)) ;
         assertEquals(1, x.size()) ;
         x = Iter.toList(dsg.getGraph(g).find(s, null, null)) ;
@@ -102,7 +121,7 @@ public class TestLoader extends BaseTest
         assertEquals(1, x.size()) ;
         x = Iter.toList(dsg.getGraph(g).find(null, null, o)) ;
         assertEquals(1, x.size()) ;
-        
+
         List<Quad> z = Iter.toList(dsg.find(null, null, null, null)) ;
         assertEquals(1, z.size()) ;
         z = Iter.toList(dsg.find(g, null, null, null)) ;
@@ -114,4 +133,32 @@ public class TestLoader extends BaseTest
         z = Iter.toList(dsg.find(null, null, null, o)) ;
         assertEquals(1, z.size()) ;
     }
+
+    @Test
+    public void load_graph_04() {
+        DatasetGraphTDB dsg = fresh() ;
+        TDBLoader.load(dsg, DIR + "data-4.ttl", false) ;
+        String uri = dsg.getDefaultGraph().getPrefixMapping().getNsPrefixURI("") ;
+        assertEquals("http://example/", uri) ;
+    }
+
+    @Test
+    public void load_graph_05() {
+        DatasetGraphTDB dsg = fresh() ;
+        GraphTDB graph = dsg.getDefaultGraphTDB() ;
+        TDBLoader.load(graph, DIR + "data-4.ttl", false) ;
+        String uri = dsg.getDefaultGraph().getPrefixMapping().getNsPrefixURI("") ;
+        assertEquals("http://example/", uri) ;
+    }
+    
+    @Test
+    public void load_graph_06() {
+        DatasetGraphTDB dsg = fresh() ;
+        GraphTDB graph = dsg.getGraphTDB(g) ;
+        TDBLoader.load(graph, DIR + "data-4.ttl", false) ;
+        String uri1 = dsg.getGraph(g).getPrefixMapping().getNsPrefixURI("") ;
+        assertEquals("http://example/", uri1) ;
+        String uri2 = dsg.getDefaultGraph().getPrefixMapping().getNsPrefixURI("") ;
+        assertNull(uri2) ;
+    }
 }