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 2018/06/12 12:16:50 UTC

[1/2] jena git commit: JENA-1561: Enable TDB2 in UI and command line.

Repository: jena
Updated Branches:
  refs/heads/master 146e6bd4d -> 4db45da0c


JENA-1561: Enable TDB2 in UI and command line.


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

Branch: refs/heads/master
Commit: de3d637482d882573ec4204c7374b863a1cb2981
Parents: 30d0934
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Jun 9 19:07:10 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Jun 11 14:15:51 2018 +0100

----------------------------------------------------------------------
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java | 44 ++++++++++++++++++--
 .../org/apache/jena/fuseki/build/Template.java  | 38 ++++++++++++-----
 .../org/apache/jena/fuseki/cmd/FusekiCmd.java   | 21 ++++++----
 .../apache/jena/fuseki/mgt/ActionDatasets.java  | 31 +++++++-------
 .../apache/jena/fuseki/server/FusekiSystem.java |  2 +-
 .../jena/fuseki/server/templates/config-tdb2    | 31 ++++++++++++++
 .../fuseki/server/templates/config-tdb2-dir     | 30 +++++++++++++
 .../fuseki/server/templates/config-tdb2-mem     | 30 +++++++++++++
 .../js/app/templates/dataset-simple-create.tpl  |  6 +++
 9 files changed, 195 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
index b1026b0..41f516f 100644
--- a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
+++ b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
@@ -58,6 +58,7 @@ import org.apache.jena.system.Txn;
 import org.apache.jena.tdb.TDB;
 import org.apache.jena.tdb.TDBFactory;
 import org.apache.jena.tdb.transaction.TransactionManager;
+import org.apache.jena.tdb2.DatabaseMgr;
 import org.slf4j.Logger;
 
 /** Fuseki command that runs a Fuseki server with no UI, just SPARQL services.
@@ -110,8 +111,11 @@ public class FusekiBasicCmd {
         private static ArgDecl  argMem          = new ArgDecl(ArgDecl.NoValue,  "mem");
         private static ArgDecl  argUpdate       = new ArgDecl(ArgDecl.NoValue,  "update", "allowUpdate");
         private static ArgDecl  argFile         = new ArgDecl(ArgDecl.HasValue, "file");
+
+        private static ArgDecl  argTDB2mode     = new ArgDecl(ArgDecl.NoValue,  "tdb2");
         private static ArgDecl  argMemTDB       = new ArgDecl(ArgDecl.NoValue,  "memtdb", "memTDB", "tdbmem");
         private static ArgDecl  argTDB          = new ArgDecl(ArgDecl.HasValue, "loc", "location", "tdb");
+        
         // No SPARQL dataset or services
         private static ArgDecl  argEmpty        = new ArgDecl(ArgDecl.NoValue,  "empty", "no-dataset");
         private static ArgDecl  argPort         = new ArgDecl(ArgDecl.HasValue, "port");
@@ -131,6 +135,7 @@ public class FusekiBasicCmd {
         }
 
         private final ServerConfig serverConfig  = new ServerConfig();
+        private boolean useTDB2;
         
         public FusekiCmdInner(String... argv) {
             super(argv);
@@ -145,6 +150,8 @@ public class FusekiBasicCmd {
                 "Create an in-memory, non-persistent dataset for the server");
             add(argFile, "--file=FILE",
                 "Create an in-memory, non-persistent dataset for the server, initialised with the contents of the file");
+            add(argTDB2mode, "--tdb2",
+                "Create command line persistent datasets with TDB2");
             add(argTDB, "--loc=DIR",
                 "Use an existing TDB database (or create if does not exist)");
             add(argMemTDB, "--memTDB",
@@ -252,6 +259,10 @@ public class FusekiBasicCmd {
             // ---- Dataset
             // Only one of these is choose from the checking above.
             
+            // Which TDB to use to create a command line TDB database. 
+            useTDB2 = contains(argTDB2mode);
+            String tag = useTDB2 ? "TDB2" : "TDB";
+            
             if ( allowEmpty ) {
                 serverConfig.empty = true;
                 serverConfig.datasetDescription = "No dataset";
@@ -300,16 +311,41 @@ public class FusekiBasicCmd {
                 Txn.executeWrite(serverConfig.dsg,  ()->RDFDataMgr.read(serverConfig.dsg, filename));
             }
 
+//            if ( contains(argMemTDB) ) {
+//                //log.info("TDB dataset: in-memory") ;
+//                cmdLineConfig.reset();
+//                cmdLineConfig.argTemplateFile = useTDB2 ? Template.templateTDB2_MemFN : Template.templateTDB1_MemFN ;
+//                cmdLineConfig.params.put(Template.DIR, Names.memName) ;
+//                // Always allow.
+//                cmdLineConfig.allowUpdate = true ;
+//                cmdLineConfig.datasetDescription = useTDB2 ? "TDB2 dataset (in-memory)" : "TDB dataset (in-memory)";
+//            }
+//
+//            if ( contains(argTDB) ) {
+//                cmdLineConfig.reset();
+//                cmdLineConfig.argTemplateFile = 
+//                    useTDB2 ? Template.templateTDB2_DirFN : Template.templateTDB1_DirFN;
+//                String dir = getValue(argTDB) ;
+//                cmdLineConfig.params.put(Template.DIR, dir) ;
+//                cmdLineConfig.datasetDescription = useTDB2 ? "TDB2 dataset: "+dir : "TDB dataset: "+dir;
+//            }
+            
             if ( contains(argMemTDB) ) {
-                serverConfig.datasetDescription = "TDB dataset in-memory";
-                serverConfig.dsg = TDBFactory.createDatasetGraph();
+                serverConfig.datasetDescription = tag+" dataset in-memory";
+                serverConfig.dsg =
+                    useTDB2
+                    ? DatabaseMgr.createDatasetGraph()
+                    : TDBFactory.createDatasetGraph();
                 serverConfig.allowUpdate = true;
             }
 
             if ( contains(argTDB) ) {
                 String dir = getValue(argTDB);
-                serverConfig.datasetDescription = "TDB dataset: "+dir;
-                serverConfig.dsg = TDBFactory.createDatasetGraph(dir);
+                serverConfig.datasetDescription = tag+" dataset: "+dir;
+                serverConfig.dsg = 
+                    useTDB2
+                    ? DatabaseMgr.connectDatasetGraph(dir)
+                    : TDBFactory.createDatasetGraph(dir);
             }
 
             if ( contains(ModAssembler.assemblerDescDecl) ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/Template.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/Template.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/Template.java
index 093b644..6c8ca47 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/Template.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/Template.java
@@ -29,22 +29,38 @@ public class Template
     }
     
     public static final String templateDir          = "templates" ;
-    public static final String templateMemFN        = templateDir+"/config-mem" ;
-    public static final String templateTDBFN        = templateDir+"/config-tdb" ;
-    public static final String templateTDBMemFN     = templateDir+"/config-tdb-mem" ; 
-    public static final String templateTDBDirFN     = templateDir+"/config-tdb-dir" ;
-    public static final String templateTDBDirReadFN = templateDir+"/config-tdb-dir-read-only" ;
+    
+    // These are used by the command line start up.
     public static final String templateServiceFN    = templateDir+"/config-service" ;       // Dummy used by dataset-less service.
+
+    // TDB1 - for backwards compatibility, the files are called "tdb"
+    public static final String templateTDB1_FN        = templateDir+"/config-tdb" ;
+    public static final String templateTDB1_MemFN     = templateDir+"/config-tdb-mem" ; 
+    public static final String templateTDB1_DirFN     = templateDir+"/config-tdb-dir" ;
+    public static final String templateTDB1_DirReadFN = templateDir+"/config-tdb-dir-read-only" ;
+    
+    public static final String templateTDB2_FN        = templateDir+"/config-tdb2" ;
+    public static final String templateTDB2_MemFN     = templateDir+"/config-tdb2-mem" ; 
+    public static final String templateTDB2_DirFN     = templateDir+"/config-tdb2-dir" ;
+    public static final String templateTDB2_DirReadFN = templateDir+"/config-tdb2-dir-read-only" ;
+    
     
-    public static final String templateMemFN_1      = templateDir+"/config-mem-txn" ;
+    public static final String templateTIM_MemFN      = templateDir+"/config-mem" ;
 
     // Template may be in a resources area of a jar file so you can't do a directory listing.
     public static final String[] templateNames = {
-        templateMemFN ,
-        templateTDBFN ,
-        templateTDBMemFN ,
-        templateTDBDirFN ,
-        templateServiceFN
+        templateTIM_MemFN,
+        templateServiceFN,
+        
+        templateTDB1_FN ,
+        templateTDB1_MemFN ,
+        templateTDB1_DirFN ,
+        //templateTDB1_DirReadFN,
+        
+        templateTDB2_FN ,
+        templateTDB2_MemFN ,
+        templateTDB2_DirFN ,
+        //templateTDB2_DirReadFN
     } ;
     
     public static final String NAME = "NAME" ;

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
index c5b51e9..57947e9 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
@@ -81,6 +81,7 @@ public class FusekiCmd {
         // This does not apply to empty in-memory setups. 
         private static ArgDecl  argUpdate       = new ArgDecl(ArgDecl.NoValue,  "update", "allowUpdate") ;
         private static ArgDecl  argFile         = new ArgDecl(ArgDecl.HasValue, "file") ;
+        private static ArgDecl  argTDB2mode     = new ArgDecl(ArgDecl.NoValue,  "tdb2");
         private static ArgDecl  argMemTDB       = new ArgDecl(ArgDecl.NoValue,  "memtdb", "memTDB", "tdbmem") ;
         private static ArgDecl  argTDB          = new ArgDecl(ArgDecl.HasValue, "loc", "location", "tdb") ;
         private static ArgDecl  argPort         = new ArgDecl(ArgDecl.HasValue, "port") ;
@@ -113,6 +114,7 @@ public class FusekiCmd {
         }
 
         private final FusekiInitialConfig cmdLineConfig  = new FusekiInitialConfig() ;
+        private boolean useTDB2;
 
         public FusekiCmdInner(String... argv) {
             super(argv) ;
@@ -123,6 +125,8 @@ public class FusekiCmd {
                 "Create an in-memory, non-persistent dataset for the server") ;
             add(argFile, "--file=FILE",
                 "Create an in-memory, non-persistent dataset for the server, initialised with the contents of the file") ;
+            add(argTDB2mode, "--tdb2",
+                "Create command line persistent datasets with TDB2");
             add(argTDB, "--loc=DIR",
                 "Use an existing TDB database (or create if does not exist)") ;
             add(argMemTDB, "--memTDB",
@@ -224,6 +228,9 @@ public class FusekiCmd {
                 if ( Files.exists(cfg) )
                     cmdLineConfig.fusekiServerConfigFile = cfg.toString() ;
             }
+
+            // Which TDB to use to create a command line TDB database. 
+            useTDB2 = contains(argTDB2mode);
             
             cmdLineConfig.allowUpdate = contains(argUpdate) ; 
 
@@ -233,7 +240,7 @@ public class FusekiCmd {
                 // Only one setup should be called by the test above but to be safe
                 // and in case of future changes, clear the configuration.  
                 cmdLineConfig.reset();
-                cmdLineConfig.argTemplateFile = Template.templateMemFN ;
+                cmdLineConfig.argTemplateFile = Template.templateTIM_MemFN ;
                 // Always allow.
                 cmdLineConfig.allowUpdate = true ;
             }
@@ -259,22 +266,20 @@ public class FusekiCmd {
             if ( contains(argMemTDB) ) {
                 //log.info("TDB dataset: in-memory") ;
                 cmdLineConfig.reset();
-                cmdLineConfig.argTemplateFile = Template.templateTDBMemFN ;
+                cmdLineConfig.argTemplateFile = useTDB2 ? Template.templateTDB2_MemFN : Template.templateTDB1_MemFN ;
                 cmdLineConfig.params.put(Template.DIR, Names.memName) ;
                 // Always allow.
                 cmdLineConfig.allowUpdate = true ;
-                cmdLineConfig.datasetDescription = "TDB dataset (in-memory)";
+                cmdLineConfig.datasetDescription = useTDB2 ? "TDB2 dataset (in-memory)" : "TDB dataset (in-memory)";
             }
 
             if ( contains(argTDB) ) {
                 cmdLineConfig.reset();
-//                cmdLineConfig.argTemplateFile = 
-//                    cmdLineConfig.allowUpdate ? Template.templateTDBDirFN : Template.templateTDBDirReadFN;
-                // For a long time, "--update" did not apply here and so for compatibility ... 
-                cmdLineConfig.argTemplateFile = Template.templateTDBDirFN;
+                cmdLineConfig.argTemplateFile = 
+                    useTDB2 ? Template.templateTDB2_DirFN : Template.templateTDB1_DirFN;
                 String dir = getValue(argTDB) ;
                 cmdLineConfig.params.put(Template.DIR, dir) ;
-                cmdLineConfig.datasetDescription = "TDB dataset: "+dir;
+                cmdLineConfig.datasetDescription = useTDB2 ? "TDB2 dataset: "+dir : "TDB dataset: "+dir;
             }
 
             // Otherwise

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
index 85e84af..e34bf25 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
@@ -24,10 +24,7 @@ import java.io.IOException ;
 import java.io.InputStream ;
 import java.io.OutputStream ;
 import java.io.StringReader ;
-import java.util.HashMap ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Map ;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest ;
 
@@ -78,8 +75,9 @@ public class ActionDatasets extends ActionContainerItem {
 
     private static final String paramDatasetName    = "dbName" ;
     private static final String paramDatasetType    = "dbType" ;
-    private static final String tDatabasetTDB       = "tdb" ;
-    private static final String tDatabasetMem       = "mem" ;
+    private static final String tDatabaseTDB        = "tdb" ;
+    private static final String tDatabaseTDB2       = "tdb2" ;
+    private static final String tDatabaseMem        = "mem" ;
 
     public ActionDatasets() { super() ; }
     
@@ -336,6 +334,13 @@ public class ActionDatasets extends ActionContainerItem {
         bodyAsGraph(action, dest) ;
     }
 
+    private static Map<String, String> dbTypeToTemplate = new HashMap<>();
+    static {
+        dbTypeToTemplate.put(tDatabaseTDB,  Template.templateTDB1_FN);
+        dbTypeToTemplate.put(tDatabaseTDB2, Template.templateTDB2_FN);
+        dbTypeToTemplate.put(tDatabaseMem,  Template.templateTIM_MemFN);
+    }
+    
     private static void assemblerFromForm(HttpAction action, StreamRDF dest) {
         String dbType = action.getRequest().getParameter(paramDatasetType) ;
         String dbName = action.getRequest().getParameter(paramDatasetName) ;
@@ -351,15 +356,13 @@ public class ActionDatasets extends ActionContainerItem {
         FusekiSystem.addGlobals(params); 
         
         //action.log.info(format("[%d] Create database : name = %s, type = %s", action.id, dbName, dbType )) ;
-        if ( ! dbType.equals(tDatabasetTDB) && ! dbType.equals(tDatabasetMem) )
-            ServletOps.errorBadRequest(format("dbType can be only '%s' or '%s'", tDatabasetTDB, tDatabasetMem)) ;
         
-        String template = null ;
-        if ( dbType.equalsIgnoreCase(tDatabasetTDB))
-            template = TemplateFunctions.templateFile(Template.templateTDBFN, params, Lang.TTL) ;
-        if ( dbType.equalsIgnoreCase(tDatabasetMem))
-            template = TemplateFunctions.templateFile(Template.templateMemFN, params, Lang.TTL) ;
-        RDFParser.create().source(new StringReader(template)).base("http://base/").lang(Lang.TTL).parse(dest);
+        String template = dbTypeToTemplate.get(dbType.toLowerCase(Locale.ROOT));
+        if ( template == null )
+                ServletOps.errorBadRequest(format("dbType can be only '%s', '%s' or '%s'", tDatabaseTDB, tDatabaseTDB2, tDatabaseMem)) ;
+        
+        String syntax =  TemplateFunctions.templateFile(template, params, Lang.TTL) ;
+        RDFParser.create().source(new StringReader(syntax)).base("http://base/").lang(Lang.TTL).parse(dest);
     }
 
     private static void assemblerFromUpload(HttpAction action, StreamRDF dest) {

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiSystem.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiSystem.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiSystem.java
index 105f20a..23a2485 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiSystem.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiSystem.java
@@ -192,7 +192,7 @@ public class FusekiSystem
                 // Get from the file from area "org/apache/jena/fuseki/server"  (our package)
                 URL url = FusekiSystem.class.getResource(fn) ;
                 if ( url == null )
-                    throw new FusekiConfigException("Field to find resource '"+fn+"'") ; 
+                    throw new FusekiConfigException("Failed to find resource '"+fn+"'") ; 
                 InputStream in = url.openStream() ;
                 Files.copy(in, dstFile) ;
             }

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2 b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2
new file mode 100644
index 0000000..835d3f8
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2
@@ -0,0 +1,31 @@
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+PREFIX :        <#>
+PREFIX fuseki:  <http://jena.apache.org/fuseki#>
+PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX tdb2:    <http://jena.apache.org/2016/tdb#>
+PREFIX ja:      <http://jena.hpl.hp.com/2005/11/Assembler#>
+
+## ---------------------------------------------------------------
+## Updatable TDB dataset with all services enabled.
+
+<#service_tdb_all> rdf:type fuseki:Service ;
+    rdfs:label                      "TDB2 {NAME}" ;
+    fuseki:name                     "{NAME}" ;
+    fuseki:serviceQuery             "query" ;
+    fuseki:serviceQuery             "sparql" ;
+    fuseki:serviceUpdate            "update" ;
+    fuseki:serviceUpload            "upload" ;
+    fuseki:serviceReadWriteGraphStore      "data" ;
+    # A separate read-only graph store endpoint:
+    fuseki:serviceReadGraphStore       "get" ;
+    fuseki:dataset           <#tdb_dataset_readwrite> ;
+    
+    .
+
+<#tdb_dataset_readwrite> rdf:type      tdb2:DatasetTDB2 ;
+    tdb2:location "{FUSEKI_BASE}/databases/{NAME}" ;
+    ##ja:context [ ja:cxtName "arq:queryTimeout" ;  ja:cxtValue "3000" ] ;
+    ##tdb2:unionDefaultGraph true ;
+    .

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-dir
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-dir b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-dir
new file mode 100644
index 0000000..4a89278
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-dir
@@ -0,0 +1,30 @@
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+PREFIX :        <#>
+PREFIX fuseki:  <http://jena.apache.org/fuseki#>
+PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX tdb2:    <http://jena.apache.org/2016/tdb#>
+PREFIX ja:      <http://jena.hpl.hp.com/2005/11/Assembler#>
+
+## ---------------------------------------------------------------
+## Updatable TDB2 dataset with all services enabled.
+
+<#service_tdb_all> rdf:type fuseki:Service ;
+    rdfs:label                      "TDB2 {NAME}" ;
+    fuseki:name                     "{NAME}" ;
+    fuseki:serviceQuery             "query" ;
+    fuseki:serviceQuery             "sparql" ;
+    fuseki:serviceUpdate            "update" ;
+    fuseki:serviceUpload            "upload" ;
+    fuseki:serviceReadWriteGraphStore      "data" ;
+    # A separate read-only graph store endpoint:
+    fuseki:serviceReadGraphStore       "get" ;
+    fuseki:dataset           <#tdb_dataset_readwrite> ;
+    
+    .
+
+<#tdb_dataset_readwrite> rdf:type      tdb2:DatasetTDB2 ;
+    tdb2:location "{DIR}" ;
+    ##tdb2:unionDefaultGraph true ;
+    .

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-mem
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-mem b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-mem
new file mode 100644
index 0000000..f53be7f
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/server/templates/config-tdb2-mem
@@ -0,0 +1,30 @@
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+PREFIX :        <#>
+PREFIX fuseki:  <http://jena.apache.org/fuseki#>
+PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX tdb2:    <http://jena.apache.org/2016/tdb#>
+PREFIX ja:      <http://jena.hpl.hp.com/2005/11/Assembler#>
+
+## ---------------------------------------------------------------
+## Updatable TDB2 dataset im-memory with all services enabled.
+
+<#service_tdb_all> rdf:type fuseki:Service ;
+    rdfs:label                      "TDB2 {NAME}" ;
+    fuseki:name                     "{NAME}" ;
+    fuseki:serviceQuery             "query" ;
+    fuseki:serviceQuery             "sparql" ;
+    fuseki:serviceUpdate            "update" ;
+    fuseki:serviceUpload            "upload" ;
+    fuseki:serviceReadWriteGraphStore      "data" ;
+    # A separate read-only graph store endpoint:
+    fuseki:serviceReadGraphStore       "get" ;
+    fuseki:dataset           <#tdb_dataset_readwrite> ;
+    
+    .
+
+<#tdb_dataset_readwrite> rdf:type      tdb2:DatasetTDB2 ;
+    tdb2:location "--mem--" ;
+    ## tdb2:unionDefaultGraph true ;
+    .

http://git-wip-us.apache.org/repos/asf/jena/blob/de3d6374/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/app/templates/dataset-simple-create.tpl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/app/templates/dataset-simple-create.tpl b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/app/templates/dataset-simple-create.tpl
index 2611908..3819bdc 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/app/templates/dataset-simple-create.tpl
+++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/app/templates/dataset-simple-create.tpl
@@ -24,6 +24,12 @@
                   Persistent &ndash; dataset will persist across Fuseki restarts
                 </label>
               </div>
+              <div class="radio">
+                <label>
+                  <input type="radio" name="dbType" value="tdb2">
+                  Persistent (TDB2) &ndash; dataset will persist across Fuseki restarts
+                </label>
+              </div>
             </div>
           </div>
 


[2/2] jena git commit: JENA-1561: Merge commit 'refs/pull/433/head' of https://github.com/apache/jena

Posted by an...@apache.org.
JENA-1561: Merge commit 'refs/pull/433/head' of https://github.com/apache/jena

This closes #433.


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

Branch: refs/heads/master
Commit: 4db45da0c028f89fe77d5f30bf4cabf75481f01c
Parents: 146e6bd de3d637
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 12 13:05:51 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 12 13:05:51 2018 +0100

----------------------------------------------------------------------
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java | 44 ++++++++++++++++++--
 .../org/apache/jena/fuseki/build/Template.java  | 38 ++++++++++++-----
 .../org/apache/jena/fuseki/cmd/FusekiCmd.java   | 21 ++++++----
 .../apache/jena/fuseki/mgt/ActionDatasets.java  | 31 +++++++-------
 .../apache/jena/fuseki/server/FusekiSystem.java |  2 +-
 .../jena/fuseki/server/templates/config-tdb2    | 31 ++++++++++++++
 .../fuseki/server/templates/config-tdb2-dir     | 30 +++++++++++++
 .../fuseki/server/templates/config-tdb2-mem     | 30 +++++++++++++
 .../js/app/templates/dataset-simple-create.tpl  |  6 +++
 9 files changed, 195 insertions(+), 38 deletions(-)
----------------------------------------------------------------------