Provide an assembler for WPG dataset

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

Branch: refs/heads/ThreadPerGraphDataset
Commit: a3ac0f201640250c036e192e2a85095963469e7e
Parents: b02feca
Author: ajs6f <[email protected]>
Authored: Sat Jan 7 16:42:13 2017 -0500
Committer: ajs6f <[email protected]>
Committed: Tue Feb 14 09:39:03 2017 -0500

----------------------------------------------------------------------
 .../sparql/core/assembler/AssemblerUtils.java   |  5 +-
 .../core/assembler/DatasetAssemblerVocab.java   |  5 +-
 .../core/assembler/InMemDatasetAssembler.java   | 73 --------------------
 .../TransactionalInMemDatasetAssembler.java     | 66 ++++++++++++++++++
 .../assembler/TxnInMemDatasetAssembler.java     | 41 +++++++++++
 .../WriterPerGraphDatasetAssembler.java         | 41 +++++++++++
 .../assembler/TestInMemDatasetAssembler.java    |  4 +-
 .../core/pergraph/MultithreadingTest.java       |  2 -
 8 files changed, 158 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/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 bb504ab..d124393 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
@@ -58,7 +58,10 @@ public class AssemblerUtils
         initialized = true ;
         // Wire in the extension assemblers (extensions relative to the Jena 
assembler framework)
         registerDataset(DatasetAssembler.getType(),         new 
DatasetAssembler()) ;
-        registerDataset(InMemDatasetAssembler.getType(),    new 
InMemDatasetAssembler()) ;
+        TxnInMemDatasetAssembler txnInMemDatasetAssembler = new 
TxnInMemDatasetAssembler();
+        registerDataset(txnInMemDatasetAssembler.getType(), 
txnInMemDatasetAssembler);
+        WriterPerGraphDatasetAssembler writerPerGraphDatasetAssembler = new 
WriterPerGraphDatasetAssembler();
+        registerDataset(writerPerGraphDatasetAssembler.getType(), 
writerPerGraphDatasetAssembler);
     }
     
     private static Model modelExtras = ModelFactory.createDefaultModel() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java
index f5bbe65..1c234d1 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java
@@ -30,8 +30,11 @@ public class DatasetAssemblerVocab
     
     // General dataset
     public static final Resource tDataset            = 
ResourceFactory.createResource(NS+"RDFDataset") ;
-    // In-memory dataset
+    // Basic txn in-memory dataset
     public static final Resource tDatasetTxnMem      = 
ResourceFactory.createResource(NS+"DatasetTxnMem") ;
+    // Writer-per-graph txn in-memory dataset
+    public static final Resource tDatasetPGraphWriter = 
ResourceFactory.createResource(NS+"DatasetMemWriterPerGraph");
+    
     public static final Resource tDatasetNull        = 
ResourceFactory.createResource(NS+"DatasetNull") ;
     
     public static final Property pDefaultGraph       = 
ResourceFactory.createProperty(NS, "defaultGraph") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/InMemDatasetAssembler.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/InMemDatasetAssembler.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/InMemDatasetAssembler.java
deleted file mode 100644
index a79779f..0000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/InMemDatasetAssembler.java
+++ /dev/null
@@ -1,73 +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.sparql.core.assembler;
-
-import static org.apache.jena.assembler.JA.data;
-import static org.apache.jena.query.DatasetFactory.createTxnMem;
-import static org.apache.jena.query.ReadWrite.WRITE;
-import static org.apache.jena.riot.RDFDataMgr.read;
-import static org.apache.jena.sparql.core.assembler.AssemblerUtils.setContext;
-import static 
org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.pGraphName;
-import static 
org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.pNamedGraph;
-import static org.apache.jena.sparql.util.graph.GraphUtils.getAsStringValue;
-import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueResource;
-
-import org.apache.jena.assembler.Assembler;
-import org.apache.jena.assembler.Mode;
-import org.apache.jena.assembler.assemblers.AssemblerBase;
-import org.apache.jena.query.Dataset;
-import org.apache.jena.rdf.model.Resource;
-
-/**
- * An {@link Assembler} that creates in-memory {@link Dataset}s.
- */
-public class InMemDatasetAssembler extends AssemblerBase implements Assembler {
-
-    public static Resource getType() {
-        return DatasetAssemblerVocab.tDatasetTxnMem ;
-    }
-    
-       @Override
-       public Dataset open(final Assembler assembler, final Resource root, 
final Mode mode) {
-               checkType(root, DatasetAssemblerVocab.tDatasetTxnMem);
-               final Dataset dataset = createTxnMem();
-               setContext(root, dataset.getContext());
-
-               dataset.begin(WRITE);
-
-               // load data into the default graph
-               if (root.hasProperty(data)) {
-                   multiValueResource(root, data)
-                               .forEach(defaultGraphDocument -> read(dataset, 
defaultGraphDocument.getURI()));
-               }
-
-               // load data into named graphs
-               multiValueResource(root, 
pNamedGraph).forEach(namedGraphResource -> {
-                       final String graphName = 
getAsStringValue(namedGraphResource, pGraphName);
-                       if (namedGraphResource.hasProperty(data)) {
-                           multiValueResource(namedGraphResource, data)
-                               .forEach(namedGraphData -> 
read(dataset.getNamedModel(graphName), namedGraphData.getURI()));
-                       }
-               });
-
-               dataset.commit();
-               dataset.end();
-               return dataset;
-       }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TransactionalInMemDatasetAssembler.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TransactionalInMemDatasetAssembler.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TransactionalInMemDatasetAssembler.java
new file mode 100644
index 0000000..12fc1fc
--- /dev/null
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TransactionalInMemDatasetAssembler.java
@@ -0,0 +1,66 @@
+/*
+ * 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.sparql.core.assembler;
+
+import static org.apache.jena.assembler.JA.data;
+import static org.apache.jena.query.ReadWrite.WRITE;
+import static org.apache.jena.riot.RDFDataMgr.read;
+import static org.apache.jena.sparql.core.assembler.AssemblerUtils.setContext;
+import static 
org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.pGraphName;
+import static 
org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.pNamedGraph;
+import static org.apache.jena.sparql.util.graph.GraphUtils.getAsStringValue;
+import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueResource;
+
+import org.apache.jena.assembler.Assembler;
+import org.apache.jena.assembler.Mode;
+import org.apache.jena.assembler.assemblers.AssemblerBase;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.rdf.model.Resource;
+
+/**
+ * An {@link Assembler} that creates transactional in-memory {@link Dataset}s.
+ */
+public abstract class TransactionalInMemDatasetAssembler extends AssemblerBase 
{
+
+    public abstract Resource getType();
+
+    public abstract Dataset createDataset();
+
+    @Override
+    public Dataset open(final Assembler assembler, final Resource root, final 
Mode mode) {
+        checkType(root, getType());
+        final Dataset dataset = createDataset();
+        setContext(root, dataset.getContext());
+
+        dataset.begin(WRITE);
+        try {
+            // load data into the default graph
+            if (root.hasProperty(data))
+                multiValueResource(root, data)
+                    .forEach(defaultGraphDocument -> read(dataset, 
defaultGraphDocument.getURI()));
+
+            // load data into named graphs
+            multiValueResource(root, pNamedGraph).forEach(namedGraphResource 
-> {
+                final String graphName = getAsStringValue(namedGraphResource, 
pGraphName);
+                if (namedGraphResource.hasProperty(data))
+                    multiValueResource(namedGraphResource, data)
+                            .forEach(namedGraphData -> 
read(dataset.getNamedModel(graphName), namedGraphData.getURI()));
+            });
+            dataset.commit();
+        } finally {
+            dataset.end();
+        }
+        return dataset;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TxnInMemDatasetAssembler.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TxnInMemDatasetAssembler.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TxnInMemDatasetAssembler.java
new file mode 100644
index 0000000..faa5926
--- /dev/null
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/TxnInMemDatasetAssembler.java
@@ -0,0 +1,41 @@
+/*
+ * 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.sparql.core.assembler;
+
+import static org.apache.jena.query.DatasetFactory.createTxnMem;
+
+import org.apache.jena.assembler.Assembler;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.rdf.model.Resource;
+
+/**
+ * An {@link Assembler} for basic transactional in-memory {@link Dataset}s.
+ */
+public class TxnInMemDatasetAssembler extends 
TransactionalInMemDatasetAssembler {
+
+    @Override
+    public Resource getType() {
+        return DatasetAssemblerVocab.tDatasetTxnMem ;
+    }
+    
+    @Override
+    public Dataset createDataset() {
+        return createTxnMem();
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/WriterPerGraphDatasetAssembler.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/WriterPerGraphDatasetAssembler.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/WriterPerGraphDatasetAssembler.java
new file mode 100644
index 0000000..2ebefd9
--- /dev/null
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/WriterPerGraphDatasetAssembler.java
@@ -0,0 +1,41 @@
+/*
+ * 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.sparql.core.assembler;
+
+import org.apache.jena.assembler.Assembler;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.DatasetFactory;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.sparql.core.DatasetGraphPerGraphLocking;
+
+/**
+ * An {@link Assembler} that creates writer-per-graph in-memory {@link 
Dataset}s.
+ */
+public class WriterPerGraphDatasetAssembler extends 
TransactionalInMemDatasetAssembler {
+
+    @Override
+    public Resource getType() {
+        return DatasetAssemblerVocab.tDatasetPGraphWriter ;
+    }
+    
+    @Override
+    public Dataset createDataset() {
+        return DatasetFactory.wrap(new DatasetGraphPerGraphLocking()) ;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/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 29644b6..ad4114c 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
@@ -50,7 +50,7 @@ import org.junit.Assert;
 import org.junit.Test;
 
 /**
- * Tests for {@link InMemDatasetAssembler}
+ * Tests for {@link TxnInMemDatasetAssembler}
  *
  */
 public class TestInMemDatasetAssembler extends Assert {
@@ -60,7 +60,7 @@ public class TestInMemDatasetAssembler extends Assert {
            model.setNsPrefix("ja", JA.getURI()) ;
 //         System.out.println("-------------");
 //         RDFDataMgr.write(System.out, model, Lang.TTL) ;
-           final InMemDatasetAssembler testAssembler = new 
InMemDatasetAssembler();
+           final TxnInMemDatasetAssembler testAssembler = new 
TxnInMemDatasetAssembler();
                return testAssembler.open(testAssembler, example, DEFAULT);
        }
        

http://git-wip-us.apache.org/repos/asf/jena/blob/a3ac0f20/jena-arq/src/test/java/org/apache/jena/sparql/core/pergraph/MultithreadingTest.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/pergraph/MultithreadingTest.java
 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/pergraph/MultithreadingTest.java
index d2b8552..99eb8f6 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/pergraph/MultithreadingTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/pergraph/MultithreadingTest.java
@@ -19,7 +19,6 @@ import static org.apache.jena.graph.NodeFactory.createLiteral;
 import static org.apache.jena.graph.NodeFactory.createURI;
 import static org.apache.jena.query.ReadWrite.READ;
 import static org.apache.jena.query.ReadWrite.WRITE;
-import static org.slf4j.LoggerFactory.getLogger;
 
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -27,7 +26,6 @@ import org.apache.jena.atlas.junit.BaseTest;
 import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.DatasetGraphPerGraphLocking;
 import org.junit.Test;
-import org.slf4j.Logger;
 
 public class MultithreadingTest extends BaseTest {
 

Reply via email to