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/01/04 21:36:32 UTC

[3/6] jena git commit: Consolidate dataset impl registration process into one place.

Consolidate dataset impl registration process into one place.


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

Branch: refs/heads/master
Commit: 6188b08753a21d9d8e38577b6d984abbba79b86a
Parents: a29f2c7
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Jan 4 20:28:12 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Jan 4 20:28:50 2016 +0000

----------------------------------------------------------------------
 .../sparql/core/assembler/AssemblerUtils.java   | 57 +++++++++++-------
 .../assembler/TestInMemDatasetAssembler.java    |  7 +--
 .../apache/jena/tdb/assembler/AssemblerTDB.java |  2 -
 .../jena/tdb/assembler/NodeTableAssembler.java  | 61 --------------------
 .../org/apache/jena/tdb/assembler/VocabTDB.java | 35 +++--------
 5 files changed, 47 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6188b087/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
index 5d47217..0378867 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
@@ -24,6 +24,7 @@ import org.apache.jena.assembler.JA ;
 import org.apache.jena.assembler.assemblers.AssemblerGroup ;
 import org.apache.jena.query.* ;
 import org.apache.jena.rdf.model.Model ;
+import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.jena.rdf.model.ResourceFactory ;
 import org.apache.jena.riot.RDFDataMgr ;
@@ -35,6 +36,7 @@ import org.apache.jena.sparql.util.Symbol ;
 import org.apache.jena.sparql.util.TypeNotUniqueException ;
 import org.apache.jena.sparql.util.graph.GraphUtils ;
 import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.vocabulary.RDFS ;
 
 public class AssemblerUtils
 {
@@ -55,38 +57,53 @@ public class AssemblerUtils
             return ;
         initialized = true ;
         // Wire in the extension assemblers (extensions relative to the Jena assembler framework)
-        // Do NOT use Assembler.gemneral here (may not be initialized).  
-        registerWith(ConstAssembler.general()) ;
+        registerDataset(DatasetAssembler.getType(),         new DatasetAssembler()) ;
+        registerDataset(InMemDatasetAssembler.getType(),    new InMemDatasetAssembler()) ;
+        registerDataset(DatasetNullAssembler.getType(),     new DatasetNullAssembler()) ;
     }
     
-    static public void registerWith(AssemblerGroup g)
-    {
-        // Wire in the extension assemblers (extensions relative to the Jena assembler framework)
-        g.implementWith(DatasetAssembler.getType(), new DatasetAssembler()) ;
-        g.implementWith(DatasetNullAssembler.getType(), new DatasetNullAssembler()) ;
+    private static Model modelExtras = ModelFactory.createDefaultModel() ;
+    
+    /** Register an assembler that creates a dataset */
+    static public void registerDataset(Resource r, Assembler a) {
+        register(ConstAssembler.general(), r, a, DatasetAssembler.getType()) ;
+    }
+
+    /** Register an addition assembler */  
+    static public void register(AssemblerGroup g, Resource r, Assembler a, Resource superType) {
+        registerAssembler(g, r, a) ;
+        if ( superType != null && ! superType.equals(r) ) 
+            modelExtras.add(r, RDFS.subClassOf, DatasetAssembler.getType()) ;
     }
     
-    private static void assemblerClass(AssemblerGroup g, Resource r, Assembler a)
-    {
-        g.implementWith(r, a) ;
+    /** register */ 
+    public static void registerAssembler(AssemblerGroup group, Resource r, Assembler a) {
+        if ( group == null )
+            group = ConstAssembler.general();
+        group.implementWith(r, a);
+        // assemblerAssertions.add(r, RDFS.subClassOf, JA.Object) ;
+    }
+
+    public static Model readAssemblerFile(String assemblerFile) {
+        Model spec = null ;
+        try {
+            spec = RDFDataMgr.loadModel(assemblerFile) ;
+        } catch (Exception ex)
+        { throw new ARQException("Failed reading assembler description: "+ex.getMessage()) ; }
+        spec.add(modelExtras) ;
+        return spec ;
     }
     
-    public static Object build(String assemblerFile, String typeURI)
-    {
+    public static Object build(String assemblerFile, String typeURI) {
         Resource type = ResourceFactory.createResource(typeURI) ;
         return build(assemblerFile, type) ; 
     }
     
-    public static Object build(String assemblerFile, Resource type)
-    {
+    public static Object build(String assemblerFile, Resource type) {
         if ( assemblerFile == null )
             throw new ARQException("No assembler file") ;
-        Model spec = null ;
-        try {
-            spec = RDFDataMgr.loadModel(assemblerFile) ;
-        } catch (Exception ex)
-        { throw new ARQException("Failed reading assembler description: "+ex.getMessage()) ; }
-
+        Model spec = readAssemblerFile(assemblerFile) ;
+        
         Resource root = null ;
         try {
             root = GraphUtils.findRootByType(spec, type) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6188b087/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestInMemDatasetAssembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestInMemDatasetAssembler.java b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestInMemDatasetAssembler.java
index 245b252..29644b6 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestInMemDatasetAssembler.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestInMemDatasetAssembler.java
@@ -19,7 +19,6 @@
 package org.apache.jena.sparql.core.assembler;
 
 import static java.nio.file.Files.createTempFile;
-import static org.apache.jena.assembler.JA.MemoryDataset ;
 import static org.apache.jena.assembler.JA.MemoryModel ;
 import static org.apache.jena.assembler.JA.data ;
 import static org.apache.jena.assembler.Mode.DEFAULT;
@@ -69,7 +68,7 @@ public class TestInMemDatasetAssembler extends Assert {
 	public void emptyDataset() {
 	    final Model model = createDefaultModel();
 	    final Resource empty = model.createResource("test:empty");
-	    empty.addProperty(type, MemoryDataset);
+	    empty.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem) ;
 	    Dataset dataset = assemble(empty) ;
 	    assertFalse(dataset.asDatasetGraph().find().hasNext()) ;
 	}
@@ -81,7 +80,7 @@ public class TestInMemDatasetAssembler extends Assert {
 		final Path triples = createTempFile("simpleExample", ".nt");
 		final Resource triplesURI = model.createResource(triples.toFile().toURI().toString());
 		final Resource simpleExample = model.createResource("test:simpleExample");
-		simpleExample.addProperty(type, MemoryDataset);
+		simpleExample.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem);
 		// add a default graph
 		simpleExample.addProperty(data, triplesURI);
 		// add a named graph
@@ -120,7 +119,7 @@ public class TestInMemDatasetAssembler extends Assert {
 		final Path quads = createTempFile("quadExample", ".nq");
 		final Resource quadsURI = model.createResource(quads.toFile().toURI().toString());
 		final Resource simpleExample = model.createResource("test:simpleExample");
-		simpleExample.addProperty(type, MemoryDataset);
+		simpleExample.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem);
 		simpleExample.addProperty(data, quadsURI);
 
 		final DatasetGraph dsg = createTxnMem().asDatasetGraph();

http://git-wip-us.apache.org/repos/asf/jena/blob/6188b087/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/AssemblerTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/AssemblerTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/AssemblerTDB.java
index de1e6f6..b8778bf 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/AssemblerTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/AssemblerTDB.java
@@ -23,7 +23,5 @@ public class AssemblerTDB
     public static void init()
     {
         VocabTDB.init();
-        //tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
-        //tdb:GraphTDB    rdfs:subClassOf  ja:Model .
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6188b087/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/NodeTableAssembler.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/NodeTableAssembler.java b/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/NodeTableAssembler.java
deleted file mode 100644
index 5e4fed2..0000000
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/NodeTableAssembler.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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 org.apache.jena.tdb.assembler;
-
-import static org.apache.jena.sparql.util.graph.GraphUtils.getAsStringValue ;
-import static org.apache.jena.tdb.assembler.VocabTDB.pNodeIndex ;
-import org.apache.jena.assembler.Assembler ;
-import org.apache.jena.assembler.Mode ;
-import org.apache.jena.assembler.assemblers.AssemblerBase ;
-import org.apache.jena.assembler.exceptions.AssemblerException ;
-import org.apache.jena.rdf.model.Resource ;
-import org.apache.jena.tdb.store.nodetable.NodeTable ;
-
-public class NodeTableAssembler extends AssemblerBase //implements Assembler
-{
-    // ???
-    /* 
-     * [ :location "...." ] 
-     * or (TBD)
-     * [ :nodeIndex "..." ;
-     *   :nodeData "..." ;
-     * ]
-     */
-    
-
-    //private Location location = null ;
-    
-    //public NodeTableAssembler()                     { this.location = Location.create(".") ; }
-    //public NodeTableAssembler(Location location)    { this.location = location ; }
-    
-    public NodeTableAssembler()                     { }
-    
-    @Override
-    public NodeTable open(Assembler a, Resource root, Mode mode)
-    {
-        String location = getAsStringValue(root, pNodeIndex) ;
-//        if ( location != null )
-//            return NodeTableFactory.create(IndexBuilder.get(), Location.create(location)) ;
-//        
-//        String nodeIndex = getAsStringValue(root, pNodeIndex) ;
-//        String nodeData = getAsStringValue(root, pNodeData) ;
-//        
-        throw new AssemblerException(root, "Split location index/data file not yet implemented") ; 
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6188b087/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/VocabTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/VocabTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/VocabTDB.java
index 52444f2..d24b263 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/VocabTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/assembler/VocabTDB.java
@@ -19,11 +19,11 @@
 package org.apache.jena.tdb.assembler;
 
 
-import org.apache.jena.assembler.Assembler ;
 import org.apache.jena.assembler.ConstAssembler ;
-import org.apache.jena.assembler.assemblers.AssemblerGroup ;
+import org.apache.jena.assembler.JA ;
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Resource ;
+import org.apache.jena.sparql.core.assembler.AssemblerUtils ;
 import org.apache.jena.tdb.TDB ;
 
 public class VocabTDB
@@ -66,32 +66,11 @@ public class VocabTDB
     
     static { init() ; }
     
-    static synchronized public void init()
-    {
+    static synchronized public void init() {
         if ( initialized )
-            return ;
-        initialized = true ;
-        // Do NOT use Assembler.gemneral here (may not be initialized).  
-        registerWith(ConstAssembler.general()) ;
-    }
-    
-    static void registerWith(AssemblerGroup g)
-    {
-        // Wire in the extension assemblers (extensions relative to the Jena assembler framework)
-        // Domain and range for properties.
-        // Separated and use ja:imports
-        assemblerClass(g, tDatasetTDB,            new DatasetAssemblerTDB()) ;
-        
-        assemblerClass(g, tGraphTDB,          new TDBGraphAssembler()) ;
-        //assemblerClass(g, typeGraphBDB,          ?????) ;
-        assemblerClass(g, tNodeTable,         new NodeTableAssembler()) ;
-    }
-    
-    public static void assemblerClass(AssemblerGroup group, Resource r, Assembler a)
-    {
-        if ( group == null )
-            group = ConstAssembler.general() ;
-        group.implementWith(r, a) ;
-        //assemblerAssertions.add(r, RDFS.subClassOf, JA.Object) ;
+            return;
+        initialized = true;
+        AssemblerUtils.registerDataset(tDatasetTDB, new DatasetAssemblerTDB());
+        AssemblerUtils.register(ConstAssembler.general(), tGraphTDB, new TDBGraphAssembler(), JA.Model);
     }
 }