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 2016/06/08 09:53:26 UTC

jena git commit: JENA-1188: Enable loading of the whole dataset.

Repository: jena
Updated Branches:
  refs/heads/master accab21cd -> 8e02240e5


JENA-1188: Enable loading of the whole dataset.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8e02240e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8e02240e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8e02240e

Branch: refs/heads/master
Commit: 8e02240e5a5ae3792d0056c4998441944c9c7948
Parents: accab21
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Jun 8 10:52:10 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Jun 8 10:52:10 2016 +0100

----------------------------------------------------------------------
 jena-sdb/src/main/java/sdb/sdbload.java | 53 ++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8e02240e/jena-sdb/src/main/java/sdb/sdbload.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/sdb/sdbload.java b/jena-sdb/src/main/java/sdb/sdbload.java
index 1ad55e9..8853c7e 100644
--- a/jena-sdb/src/main/java/sdb/sdbload.java
+++ b/jena-sdb/src/main/java/sdb/sdbload.java
@@ -18,22 +18,24 @@
 
 package sdb;
 
-
 import java.util.Iterator ;
 import java.util.List ;
 
 import jena.cmd.ArgDecl;
-
+import jena.cmd.CmdException ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.Timer ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.GraphListener ;
 import org.apache.jena.graph.Triple ;
+import org.apache.jena.query.Dataset ;
 import org.apache.jena.rdf.model.Model ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
+import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.sdb.SDB ;
+import org.apache.jena.sdb.SDBFactory ;
 import org.apache.jena.sdb.store.StoreBaseHSQL ;
-import org.apache.jena.util.FileUtils ;
-
 import sdb.cmd.CmdArgsDB ;
 import sdb.cmd.ModGraph ;
  
@@ -98,33 +100,54 @@ public class sdbload extends CmdArgsDB
     {
         Monitor monitor = null ;
         
-        Model model = modGraph.getModel(getStore()) ;
-        Graph graph = model.getGraph() ;    
-
+        Model model = null ;
+        Dataset dataset = null ;
+        Lang lang = RDFLanguages.filenameToLang(filename) ;
+        if ( lang == null )
+            throw new CmdException("Data syntax not recognized: "+filename) ;
+        
+        if ( modGraph.getGraphName() != null )
+            model = modGraph.getModel(getStore()) ;
+        else
+            dataset = SDBFactory.connectDataset(getStore()) ;
+        
+        // For monitoring only.
+        Graph monitorGraph = (model==null) ? null : model.getGraph() ;
+        
         if ( isVerbose() && replace )
             System.out.println("Emptying: "+filename) ;
-        if (replace)
-            model.removeAll();
+        if (replace) {
+            if ( model != null ) 
+                model.removeAll();
+            else
+                dataset.asDatasetGraph().clear();
+        }
 
         if ( isVerbose() || getModTime().timingEnabled() )
             System.out.println("Start load: "+filename) ;
-        if ( getModTime().timingEnabled() )
-        {
+        if ( getModTime().timingEnabled() ) {
+            if ( monitorGraph == null ) {
+                // This old monitor code only works for graphs.  
+                // See TDB for a better way using org.apache.jena.atlas.lib.ProgressMonitor
+                throw new CmdException("Timing only implemented for graphs, not whole datasets") ;
+            }
             monitor = new Monitor(getStore().getLoader().getChunkSize(), isVerbose()) ;
-            graph.getEventManager().register(monitor) ;
+            monitorGraph.getEventManager().register(monitor) ;
         }
 
         // Crude but convenient
         if ( filename.indexOf(':') == -1 )
             filename = "file:"+filename ;
 
-        String lang = FileUtils.guessLang(filename) ;
         
         // Always time, only print if enabled. 
         getModTime().startTimer() ;
         
         // Load here
-        model.read(filename, lang) ;
+        if ( model == null )
+            RDFDataMgr.read(dataset, filename, lang);
+        else
+            RDFDataMgr.read(model, filename, lang);
 
         long timeMilli = getModTime().endTimer() ;
             
@@ -135,7 +158,7 @@ public class sdbload extends CmdArgsDB
             if ( getModTime().timingEnabled() && !isQuiet() )
                 System.out.printf("Loaded in %.3f seconds [%d triples/s]\n", 
                                   timeMilli/1000.0, (1000*monitor.addCount/timeMilli)) ;
-            graph.getEventManager().unregister(monitor) ;
+            monitorGraph.getEventManager().unregister(monitor) ;
         }
     }