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 2017/12/07 14:27:17 UTC
[1/9] jena git commit: JENA-1430: Read quads for ja:data by filename
Repository: jena
Updated Branches:
refs/heads/master e512f51b1 -> f987d61f3
JENA-1430: Read quads for ja:data by filename
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d174ec04
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d174ec04
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d174ec04
Branch: refs/heads/master
Commit: d174ec04dccb205de96e63c775e01f948380f8cc
Parents: bd58437
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Nov 20 10:57:01 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Nov 20 17:31:47 2017 +0000
----------------------------------------------------------------------
.../core/assembler/InMemDatasetAssembler.java | 35 +++++++++-----------
.../jena/sparql/util/graph/GraphUtils.java | 18 ++++++++++
.../assembler/TestInMemDatasetAssembler.java | 32 +++++++++++++++---
jena-fuseki2/examples/fuseki-in-mem-txn.ttl | 24 ++++++++++++++
4 files changed, 86 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d174ec04/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
index a79779f..b70be2a 100644
--- 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
@@ -20,12 +20,12 @@ 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.multiValueAsString;
import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueResource;
import org.apache.jena.assembler.Assembler;
@@ -33,6 +33,7 @@ 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;
+import org.apache.jena.system.Txn;
/**
* An {@link Assembler} that creates in-memory {@link Dataset}s.
@@ -49,25 +50,21 @@ public class InMemDatasetAssembler extends AssemblerBase implements Assembler {
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()));
- }
+ Txn.executeWrite(dataset, ()->{
+ // Load data into the default graph
+ // This also loads quads into the dataset.
+ multiValueAsString(root, data)
+ .forEach(dataURI -> read(dataset, dataURI));
+
+ // load data into named graphs
+ multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> {
+ final String graphName = getAsStringValue(namedGraphResource, pGraphName);
+ if (namedGraphResource.hasProperty(data)) {
+ multiValueAsString(namedGraphResource, data)
+ .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData));
+ }
+ });
});
-
- dataset.commit();
- dataset.end();
return dataset;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d174ec04/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java
index 719fe21..3d907bd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java
@@ -66,6 +66,24 @@ public class GraphUtils {
}
return values ;
}
+
+ /** Get a list of the URIs (as strings) and strings
+ * @see #getAsStringValue
+ */
+ public static List<String> multiValueAsString(Resource r, Property p) {
+ List<RDFNode> nodes = multiValue(r, p) ;
+ List<String> values = new ArrayList<>() ;
+
+ for ( RDFNode n : nodes ) {
+ if ( n.isLiteral() ) {
+ values.add(((Literal)n).getString()) ;
+ }
+ if ( n.isURIResource() ) {
+ values.add(((Resource)n).getURI());
+ }
+ }
+ return values ;
+ }
public static List<RDFNode> multiValue(Resource r, Property p) {
List<RDFNode> values = new ArrayList<>() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/d174ec04/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..6d88214 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
@@ -22,7 +22,6 @@ import static java.nio.file.Files.createTempFile;
import static org.apache.jena.assembler.JA.MemoryModel ;
import static org.apache.jena.assembler.JA.data ;
import static org.apache.jena.assembler.Mode.DEFAULT;
-import static org.apache.jena.query.DatasetFactory.createTxnMem;
import static org.apache.jena.rdf.model.ModelFactory.createDefaultModel;
import static org.apache.jena.riot.Lang.NQUADS;
import static org.apache.jena.riot.RDFDataMgr.write;
@@ -45,7 +44,10 @@ import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.sse.SSE;
+import org.apache.jena.sparql.util.IsoMatcher;
import org.junit.Assert;
import org.junit.Test;
@@ -113,7 +115,7 @@ public class TestInMemDatasetAssembler extends Assert {
}
@Test
- public void directDataLinkToQuads() throws IOException {
+ public void directDataQuadsURI() throws IOException {
// first make a file of quads to load later
final Model model = createDefaultModel();
final Path quads = createTempFile("quadExample", ".nq");
@@ -122,7 +124,7 @@ public class TestInMemDatasetAssembler extends Assert {
simpleExample.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem);
simpleExample.addProperty(data, quadsURI);
- final DatasetGraph dsg = createTxnMem().asDatasetGraph();
+ final DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
model.listStatements().mapWith(Statement::asTriple).mapWith(t -> new Quad(quadsURI.asNode(), t))
.forEachRemaining(dsg::add);
try (OutputStream out = new FileOutputStream(quads.toFile())) {
@@ -136,7 +138,29 @@ public class TestInMemDatasetAssembler extends Assert {
assertTrue(assembledNamedModel.contains(assembledNamedModel.createStatement(simpleExample, data, quadsURI)));
}
- @Test(expected = CannotConstructException.class)
+ @Test
+ public void directDataQuadsString() throws IOException {
+ // first make a file of quads to load later
+ DatasetGraph dsgData = DatasetGraphFactory.createTxnMem();
+ dsgData.add(SSE.parseQuad("(_ :s1 :p1 :o1)"));
+ dsgData.add(SSE.parseQuad("(:gn :s2 :p2 :o2)"));
+ Path quads = createTempFile("quadExample2", ".nq");
+ String dataFileName = quads.toFile().toURI().toString();
+ try (OutputStream out = new FileOutputStream(quads.toFile())) {
+ write(out, dsgData, NQUADS);
+ }
+
+ Model assemblerModel = createDefaultModel();
+ Resource simpleExample2 = assemblerModel.createResource("test:simpleExample2");
+ simpleExample2.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem) ;
+ simpleExample2.addProperty(data, dataFileName);
+
+ final Dataset dataset = assemble(simpleExample2);
+
+ assertTrue(IsoMatcher.isomorphic(dsgData, dataset.asDatasetGraph()));
+ }
+
+ @Test(expected = CannotConstructException.class)
public void wrongKindOfAssemblerDefinition() {
final Model model = createDefaultModel();
final Resource badExample = model.createResource("test:badExample");
http://git-wip-us.apache.org/repos/asf/jena/blob/d174ec04/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/fuseki-in-mem-txn.ttl b/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
new file mode 100644
index 0000000..340d53f
--- /dev/null
+++ b/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
@@ -0,0 +1,24 @@
+## 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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+
+<#serviceInMemory> rdf:type fuseki:Service;
+ rdfs:label "In-memory, trasnactioal dataset.";
+ fuseki:name "ds";
+ fuseki:serviceQuery "query";
+ fuseki:serviceQuery "sparql";
+ fuseki:serviceUpdate "update";
+ fuseki:serviceUpload "upload" ;
+ fuseki:serviceReadGraphStore "data" ;
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#dataset> ;
+.
+
+<#dataset> rdf:type ja:DatasetTxnMem;
+ ja:data <file:data.trig>;
+.
[7/9] jena git commit: Improve the message.
Posted by an...@apache.org.
Improve the message.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e3993206
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e3993206
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e3993206
Branch: refs/heads/master
Commit: e3993206f0aa90496dca6f370c1cc0087a4cdba2
Parents: a49e997
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 7 13:55:28 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 7 13:55:28 2017 +0000
----------------------------------------------------------------------
.../jena/assembler/exceptions/CannotConstructException.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/e3993206/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java b/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
index 132768a..88e1f4c 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
@@ -43,6 +43,13 @@ public class CannotConstructException extends AssemblerException
private static String constructMessage( Class<?>assemblerClass, Resource root, Resource... types )
{
+ if ( types.length == 1) {
+ return
+ "the assembler " + getClassName( assemblerClass )
+ + " cannot construct the object named " + nice( root )
+ + " because it is not of rdf:type " + nice(types[0]);
+ }
+
return
"the assembler " + getClassName( assemblerClass )
+ " cannot construct the object named " + nice( root )
[5/9] jena git commit: JENA-1340: Merge commit 'refs/pull/314/head'
of github.com:apache/jena
Posted by an...@apache.org.
JENA-1340: Merge commit 'refs/pull/314/head' of github.com:apache/jena
This closes #314.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/74cbc638
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/74cbc638
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/74cbc638
Branch: refs/heads/master
Commit: 74cbc638655a4661e13ad7a06ccd619e328c7ee7
Parents: e512f51 10ff0be
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 7 13:43:39 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 7 13:43:39 2017 +0000
----------------------------------------------------------------------
.../sparql/core/assembler/DatasetAssembler.java | 57 +++++----
.../core/assembler/DatasetAssemblerVocab.java | 2 +-
.../core/assembler/InMemDatasetAssembler.java | 45 +++----
.../jena/sparql/util/graph/GraphUtils.java | 18 +++
.../sparql/core/assembler/TS_Assembler.java | 2 +-
.../core/assembler/TestDatasetAssembler.java | 122 +++++++++++++++++++
.../assembler/TestInMemDatasetAssembler.java | 83 ++++---------
.../assembler/assemblers/AssemblerBase.java | 15 ++-
.../exceptions/CannotConstructException.java | 22 ++--
.../jena/assembler/test/AssemblerTestBase.java | 3 +-
jena-fuseki2/examples/fuseki-in-mem-txn.ttl | 24 ++++
11 files changed, 263 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/74cbc638/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphUtils.java
----------------------------------------------------------------------
[4/9] jena git commit: Better, clearer handling of mixed assembling
Posted by an...@apache.org.
Better, clearer handling of mixed assembling
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/10ff0bee
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/10ff0bee
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/10ff0bee
Branch: refs/heads/master
Commit: 10ff0beed4d44a5c61c95d280c4e6ac306c22bba
Parents: 462b5a3
Author: ajs6f <aj...@apache.org>
Authored: Wed Nov 22 11:28:13 2017 -0500
Committer: ajs6f <aj...@apache.org>
Committed: Wed Nov 22 11:28:13 2017 -0500
----------------------------------------------------------------------
.../sparql/core/assembler/DatasetAssembler.java | 19 ++++-----
.../core/assembler/InMemDatasetAssembler.java | 5 +--
.../core/assembler/TestDatasetAssembler.java | 44 ++++++++++----------
.../assembler/TestInMemDatasetAssembler.java | 10 ++++-
.../assembler/assemblers/AssemblerBase.java | 15 ++++---
.../exceptions/CannotConstructException.java | 22 +++++-----
.../jena/assembler/test/AssemblerTestBase.java | 3 +-
7 files changed, 66 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
index ec85899..407ed5b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
@@ -19,8 +19,8 @@
package org.apache.jena.sparql.core.assembler ;
import static org.apache.jena.assembler.JA.data;
-import static org.apache.jena.riot.RDFDataMgr.read;
-import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueAsString;
+import static org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.pNamedGraph;
+import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueResource;
import java.util.List ;
@@ -30,9 +30,7 @@ import org.apache.jena.assembler.assemblers.AssemblerBase ;
import org.apache.jena.atlas.logging.Log ;
import org.apache.jena.query.Dataset ;
import org.apache.jena.query.DatasetFactory ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.RDFNode ;
-import org.apache.jena.rdf.model.Resource ;
+import org.apache.jena.rdf.model.*;
import org.apache.jena.sparql.graph.GraphFactory ;
import org.apache.jena.sparql.util.FmtUtils ;
import org.apache.jena.sparql.util.graph.GraphUtils ;
@@ -51,6 +49,10 @@ public class DatasetAssembler extends AssemblerBase implements Assembler {
public Dataset createDataset(Assembler a, Resource root, Mode mode) {
checkType(root, DatasetAssemblerVocab.tDataset);
+ // use TIM if quads are loaded or if all named Graphs are loaded via data property
+ final boolean allNamedGraphsLoadViaData = multiValueResource(root, pNamedGraph).stream().allMatch(g -> g.hasProperty(data));
+ if (root.hasProperty(data) || allNamedGraphsLoadViaData) return new InMemDatasetAssembler().open(a, root, mode);
+
// -------- Default graph
// Can use ja:graph or ja:defaultGraph
Resource dftGraph = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pDefaultGraph) ;
@@ -63,12 +65,9 @@ public class DatasetAssembler extends AssemblerBase implements Assembler {
else
// Assembler description did not define one.
dftModel = GraphFactory.makeDefaultModel() ;
- Dataset ds = DatasetFactory.create(dftModel) ;
+ Dataset ds = DatasetFactory.create(dftModel);
+
Txn.executeWrite(ds, () -> {
- // Load data into the default graph or quads into the dataset.
- multiValueAsString(root, data)
- .forEach(dataURI -> read(ds, dataURI));
-
// -------- Named graphs
List<RDFNode> nodes = GraphUtils.multiValue(root, DatasetAssemblerVocab.pNamedGraph) ;
for ( RDFNode n : nodes ) {
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/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
index 792f382..83a8017 100644
--- 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
@@ -22,8 +22,7 @@ import static org.apache.jena.assembler.JA.data;
import static org.apache.jena.query.DatasetFactory.createTxnMem;
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.core.assembler.DatasetAssemblerVocab.*;
import static org.apache.jena.sparql.util.graph.GraphUtils.*;
import org.apache.jena.assembler.Assembler;
@@ -43,7 +42,7 @@ public class InMemDatasetAssembler extends DatasetAssembler {
@Override
public Dataset open(final Assembler assembler, final Resource root, final Mode mode) {
- checkType(root, DatasetAssemblerVocab.tMemoryDataset);
+ checkType(root, getType(), tDataset);
final Dataset dataset = createTxnMem();
setContext(root, dataset.getContext());
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
index c65ab54..0515f97 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
@@ -74,28 +74,28 @@ public class TestDatasetAssembler extends Assert {
@Test
public void directDataQuadsURI() throws IOException {
- // first make a file of quads to load later
- final Model model = createDefaultModel();
- 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, assemblerType());
- simpleExample.addProperty(data, quadsURI);
-
- final DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
- Txn.executeWrite(dsg, () ->
- model.listStatements().mapWith(Statement::asTriple)
- .mapWith(t -> new Quad(quadsURI.asNode(), t)).forEachRemaining(dsg::add));
-
- try (OutputStream out = new FileOutputStream(quads.toFile())) {
- write(out, dsg, NQUADS);
- }
-
- final Dataset dataset = assemble(simpleExample);
- final Model assembledDefaultModel = dataset.getDefaultModel();
- final Model assembledNamedModel = dataset.getNamedModel(quadsURI.getURI());
- assertTrue(assembledDefaultModel.isEmpty());
- assertTrue(assembledNamedModel.contains(assembledNamedModel.createStatement(simpleExample, data, quadsURI)));
+ // first make a file of quads to load later
+ final Model model = createDefaultModel();
+ 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, assemblerType());
+ simpleExample.addProperty(data, quadsURI);
+
+ final DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
+ Txn.executeWrite(dsg, () ->
+ model.listStatements().mapWith(Statement::asTriple)
+ .mapWith(t -> new Quad(quadsURI.asNode(), t)).forEachRemaining(dsg::add));
+
+ try (OutputStream out = new FileOutputStream(quads.toFile())) {
+ write(out, dsg, NQUADS);
+ }
+
+ final Dataset dataset = assemble(simpleExample);
+ final Model assembledDefaultModel = dataset.getDefaultModel();
+ final Model assembledNamedModel = dataset.getNamedModel(quadsURI.getURI());
+ assertTrue(assembledDefaultModel.isEmpty());
+ assertTrue(assembledNamedModel.contains(assembledNamedModel.createStatement(simpleExample, data, quadsURI)));
}
@Test
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/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 a4740e5..8ef7ab8 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
@@ -53,6 +53,15 @@ public class TestInMemDatasetAssembler extends TestDatasetAssembler {
protected DatasetAssembler createAssembler() {
return new InMemDatasetAssembler();
}
+
+ @Test
+ public void shouldAccept_tDataset_type() {
+ final Model model = createDefaultModel();
+ final Resource empty = model.createResource("test:empty");
+ empty.addProperty(type, DatasetAssemblerVocab.tDataset) ;
+ Dataset dataset = assemble(empty) ;
+ assertFalse(dataset.asDatasetGraph().find().hasNext()) ;
+ }
@Test
public void directDataLinkForDefaultAndNamedGraphs() throws IOException {
@@ -92,5 +101,4 @@ public class TestInMemDatasetAssembler extends TestDatasetAssembler {
assertEquals(namedGraphName.asNode(), graphNodes.next());
assertFalse(graphNodes.hasNext());
}
-
}
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
index e1f9bc7..b3ec1e4 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
@@ -63,11 +63,16 @@ public abstract class AssemblerBase implements Assembler
throw new NotUniqueException( root, property );
}
- protected void checkType( Resource root, Resource type )
- {
- if (!root.hasProperty( RDF.type, type ))
- throw new CannotConstructException( this.getClass(), root, type );
- }
+ /**
+ * Throws {@link CannotConstructException} if the offered resource isn't any of the offered types.
+ *
+ * @param root resource to check
+ * @param types types for which to check
+ */
+ protected void checkType( Resource root, Resource... types ) {
+ for (Resource type : types) if (root.hasProperty( RDF.type, type )) return;
+ throw new CannotConstructException( this.getClass(), root, types );
+ }
@Override
public Model openModel( Resource root, Mode mode )
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java b/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
index 032265a..132768a 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/exceptions/CannotConstructException.java
@@ -18,6 +18,9 @@
package org.apache.jena.assembler.exceptions;
+import static java.util.Arrays.stream;
+import static java.util.stream.Collectors.joining;
+
import org.apache.jena.assembler.Assembler ;
import org.apache.jena.rdf.model.Resource ;
@@ -28,23 +31,22 @@ import org.apache.jena.rdf.model.Resource ;
*/
public class CannotConstructException extends AssemblerException
{
- protected final Resource type;
+ protected final Resource[] types;
protected final Class<?> assemblerClass;
- public CannotConstructException( Class<?> assemblerClass, Resource root, Resource type )
+ public CannotConstructException( Class<?> assemblerClass, Resource root, Resource... types )
{
- super( root, constructMessage( assemblerClass, root, type ) );
- this.type = type;
+ super( root, constructMessage( assemblerClass, root, types ) );
+ this.types = types;
this.assemblerClass = assemblerClass;
}
- private static String constructMessage( Class<?>assemblerClass, Resource root, Resource type )
+ private static String constructMessage( Class<?>assemblerClass, Resource root, Resource... types )
{
return
"the assembler " + getClassName( assemblerClass )
+ " cannot construct the object named " + nice( root )
- + " because it is not of rdf:type " + nice( type )
- ;
+ + " because it is not any rdf:type of " + stream(types).map(AssemblerException::nice).collect(joining(", or "));
}
private static final String rootPrefix = getPackagePrefix( Assembler.class.getName() );
@@ -68,9 +70,9 @@ public class CannotConstructException extends AssemblerException
{ return assemblerClass; }
/**
- Answer the (alleged most-specific) type of the object that could not be
+ Answer the types of the object that could not be
constructed.
*/
- public Resource getType()
- { return type; }
+ public Resource[] getTypes()
+ { return types; }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/10ff0bee/jena-core/src/test/java/org/apache/jena/assembler/test/AssemblerTestBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/assembler/test/AssemblerTestBase.java b/jena-core/src/test/java/org/apache/jena/assembler/test/AssemblerTestBase.java
index a315dad..c9403fc 100644
--- a/jena-core/src/test/java/org/apache/jena/assembler/test/AssemblerTestBase.java
+++ b/jena-core/src/test/java/org/apache/jena/assembler/test/AssemblerTestBase.java
@@ -18,6 +18,7 @@
package org.apache.jena.assembler.test;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.jena.assembler.* ;
import org.apache.jena.assembler.assemblers.AssemblerBase ;
import org.apache.jena.assembler.exceptions.CannotConstructException ;
@@ -125,7 +126,7 @@ public class AssemblerTestBase extends ModelTestBase
catch (CannotConstructException e)
{
assertEquals( getAssemblerClass(), e.getAssemblerClass() );
- assertEquals( type, e.getType() );
+ assertTrue( ArrayUtils.contains(e.getTypes(), type) );
assertEquals( resource( "x" ), e.getRoot() );
}
}
[8/9] jena git commit: Use stream.
Posted by an...@apache.org.
Use stream.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f554233f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f554233f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f554233f
Branch: refs/heads/master
Commit: f554233f63d5d373e1df60284b524141b8b225aa
Parents: e399320
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 7 13:58:40 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 7 13:58:40 2017 +0000
----------------------------------------------------------------------
.../assembler/assemblers/AssemblerBase.java | 22 ++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/f554233f/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
index b3ec1e4..7045424 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
@@ -18,10 +18,22 @@
package org.apache.jena.assembler.assemblers;
+import static java.util.Arrays.stream;
import java.util.List;
-import org.apache.jena.assembler.* ;
-import org.apache.jena.assembler.exceptions.* ;
-import org.apache.jena.rdf.model.* ;
+
+import org.apache.jena.assembler.Assembler;
+import org.apache.jena.assembler.AssemblerHelp;
+import org.apache.jena.assembler.Mode;
+import org.apache.jena.assembler.exceptions.CannotConstructException;
+import org.apache.jena.assembler.exceptions.CannotLoadClassException;
+import org.apache.jena.assembler.exceptions.NotUniqueException;
+import org.apache.jena.assembler.exceptions.PropertyRequiredException;
+import org.apache.jena.rdf.model.Literal;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
import org.apache.jena.shared.JenaException ;
import org.apache.jena.system.JenaSystem ;
import org.apache.jena.vocabulary.RDF ;
@@ -70,7 +82,9 @@ public abstract class AssemblerBase implements Assembler
* @param types types for which to check
*/
protected void checkType( Resource root, Resource... types ) {
- for (Resource type : types) if (root.hasProperty( RDF.type, type )) return;
+ boolean hasType = stream(types).anyMatch(t->root.hasProperty( RDF.type, t ));
+ if ( hasType )
+ return;
throw new CannotConstructException( this.getClass(), root, types );
}
[6/9] jena git commit: Put in compatibility for ja:DatasetTxnMem.
Posted by an...@apache.org.
Put in compatibility for ja:DatasetTxnMem.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a49e997c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a49e997c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a49e997c
Branch: refs/heads/master
Commit: a49e997c6b3b2fd699d588b2ec0114337a2a0ae8
Parents: 74cbc63
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 7 13:55:11 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 7 13:55:11 2017 +0000
----------------------------------------------------------------------
.../sparql/core/assembler/AssemblerUtils.java | 8 ++--
.../core/assembler/DatasetAssemblerVocab.java | 3 ++
.../core/assembler/InMemDatasetAssembler.java | 43 ++++++++++----------
3 files changed, 30 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/a49e997c/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 5d77a36..c003500 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
@@ -51,14 +51,16 @@ public class AssemblerUtils
static { JenaSystem.init() ; }
+ @SuppressWarnings("deprecation")
static public void init()
{
if ( initialized )
return ;
initialized = true ;
- // Wire in the extension assemblers (extensions relative to the Jena assembler framework)
- registerDataset(DatasetAssembler.getType(), new DatasetAssembler()) ;
- registerDataset(InMemDatasetAssembler.getType(), new InMemDatasetAssembler()) ;
+ // Wire in the datasets assemblers
+ registerDataset(DatasetAssembler.getType(), new DatasetAssembler()) ;
+ registerDataset(InMemDatasetAssembler.getType(), new InMemDatasetAssembler()) ;
+ registerDataset(DatasetAssemblerVocab.tDatasetTxnMem, new InMemDatasetAssembler()) ;
}
private static Model modelExtras = ModelFactory.createDefaultModel() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/a49e997c/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 1a2bc0c..6122eb9 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
@@ -31,7 +31,10 @@ public class DatasetAssemblerVocab
// General dataset
public static final Resource tDataset = ResourceFactory.createResource(NS+"RDFDataset") ;
// In-memory dataset
+
public static final Resource tMemoryDataset = ResourceFactory.createResource(NS+"MemoryDataset") ;
+ /** @deprecated use {@link #tMemoryDataset} */
+ public static final Resource tDatasetTxnMem = ResourceFactory.createResource(NS+"") ;
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/a49e997c/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
index 83a8017..9e3717d 100644
--- 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
@@ -39,26 +39,27 @@ public class InMemDatasetAssembler extends DatasetAssembler {
public static Resource getType() {
return DatasetAssemblerVocab.tMemoryDataset ;
}
-
- @Override
- public Dataset open(final Assembler assembler, final Resource root, final Mode mode) {
- checkType(root, getType(), tDataset);
- final Dataset dataset = createTxnMem();
- setContext(root, dataset.getContext());
- Txn.executeWrite(dataset, ()->{
- // Load data into the default graph or quads into the dataset.
- multiValueAsString(root, data)
- .forEach(dataURI -> read(dataset, dataURI));
-
- // load data into named graphs
- multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> {
- final String graphName = getAsStringValue(namedGraphResource, pGraphName);
- if (namedGraphResource.hasProperty(data))
- multiValueAsString(namedGraphResource, data)
- .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData));
- });
- });
- return dataset;
- }
+ @SuppressWarnings("deprecation")
+ @Override
+ public Dataset open(final Assembler assembler, final Resource root, final Mode mode) {
+ checkType(root, getType(), tDataset, DatasetAssemblerVocab.tDatasetTxnMem);
+ final Dataset dataset = createTxnMem();
+ setContext(root, dataset.getContext());
+
+ Txn.executeWrite(dataset, ()->{
+ // Load data into the default graph or quads into the dataset.
+ multiValueAsString(root, data)
+ .forEach(dataURI -> read(dataset, dataURI));
+
+ // load data into named graphs
+ multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> {
+ final String graphName = getAsStringValue(namedGraphResource, pGraphName);
+ if (namedGraphResource.hasProperty(data))
+ multiValueAsString(namedGraphResource, data)
+ .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData));
+ });
+ });
+ return dataset;
+ }
}
[9/9] jena git commit: Fix URI
Posted by an...@apache.org.
Fix URI
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f987d61f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f987d61f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f987d61f
Branch: refs/heads/master
Commit: f987d61f373e7922e9e80945e7b08b34825de358
Parents: f554233
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 7 14:23:23 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 7 14:23:23 2017 +0000
----------------------------------------------------------------------
.../apache/jena/sparql/core/assembler/DatasetAssemblerVocab.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/f987d61f/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 6122eb9..d41028f 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
@@ -34,7 +34,7 @@ public class DatasetAssemblerVocab
public static final Resource tMemoryDataset = ResourceFactory.createResource(NS+"MemoryDataset") ;
/** @deprecated use {@link #tMemoryDataset} */
- public static final Resource tDatasetTxnMem = ResourceFactory.createResource(NS+"") ;
+ public static final Resource tDatasetTxnMem = ResourceFactory.createResource(NS+"DatasetTxnMem") ;
public static final Resource tDatasetNull = ResourceFactory.createResource(NS+"DatasetNull") ;
public static final Property pDefaultGraph = ResourceFactory.createProperty(NS, "defaultGraph") ;
[3/9] jena git commit: Correcting dataset type in Fuseki example
Posted by an...@apache.org.
Correcting dataset type in Fuseki example
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/462b5a3d
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/462b5a3d
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/462b5a3d
Branch: refs/heads/master
Commit: 462b5a3df0338948c3a10f873d5984b8b21d5bf8
Parents: 3e13dc6
Author: ajs6f <aj...@apache.org>
Authored: Tue Nov 21 09:04:10 2017 -0500
Committer: ajs6f <aj...@apache.org>
Committed: Tue Nov 21 09:04:10 2017 -0500
----------------------------------------------------------------------
jena-fuseki2/examples/fuseki-in-mem-txn.ttl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/462b5a3d/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/fuseki-in-mem-txn.ttl b/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
index 340d53f..1da24cb 100644
--- a/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
+++ b/jena-fuseki2/examples/fuseki-in-mem-txn.ttl
@@ -8,7 +8,7 @@
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
<#serviceInMemory> rdf:type fuseki:Service;
- rdfs:label "In-memory, trasnactioal dataset.";
+ rdfs:label "In-memory transactional dataset.";
fuseki:name "ds";
fuseki:serviceQuery "query";
fuseki:serviceQuery "sparql";
@@ -19,6 +19,6 @@
fuseki:dataset <#dataset> ;
.
-<#dataset> rdf:type ja:DatasetTxnMem;
+<#dataset> rdf:type ja:MemoryDataset;
ja:data <file:data.trig>;
.
[2/9] jena git commit: JENA-1430: Quad loading for in-memory
assemblers
Posted by an...@apache.org.
JENA-1430: Quad loading for in-memory assemblers
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/3e13dc64
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/3e13dc64
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/3e13dc64
Branch: refs/heads/master
Commit: 3e13dc64f4047eb589d9da46e50561a25290a230
Parents: d174ec0
Author: ajs6f <aj...@apache.org>
Authored: Mon Nov 20 13:47:42 2017 -0500
Committer: ajs6f <aj...@apache.org>
Committed: Mon Nov 20 13:47:42 2017 -0500
----------------------------------------------------------------------
.../sparql/core/assembler/DatasetAssembler.java | 52 +++++---
.../core/assembler/DatasetAssemblerVocab.java | 2 +-
.../core/assembler/InMemDatasetAssembler.java | 35 +++---
.../sparql/core/assembler/TS_Assembler.java | 2 +-
.../core/assembler/TestDatasetAssembler.java | 122 +++++++++++++++++++
.../assembler/TestInMemDatasetAssembler.java | 99 ++-------------
6 files changed, 184 insertions(+), 128 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/3e13dc64/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
index 82a3a91..ec85899 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/DatasetAssembler.java
@@ -18,6 +18,10 @@
package org.apache.jena.sparql.core.assembler ;
+import static org.apache.jena.assembler.JA.data;
+import static org.apache.jena.riot.RDFDataMgr.read;
+import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueAsString;
+
import java.util.List ;
import org.apache.jena.assembler.Assembler ;
@@ -32,6 +36,7 @@ import org.apache.jena.rdf.model.Resource ;
import org.apache.jena.sparql.graph.GraphFactory ;
import org.apache.jena.sparql.util.FmtUtils ;
import org.apache.jena.sparql.util.graph.GraphUtils ;
+import org.apache.jena.system.Txn;
public class DatasetAssembler extends AssemblerBase implements Assembler {
public static Resource getType() {
@@ -39,12 +44,13 @@ public class DatasetAssembler extends AssemblerBase implements Assembler {
}
@Override
- public Object open(Assembler a, Resource root, Mode mode) {
+ public Dataset open(Assembler a, Resource root, Mode mode) {
Dataset ds = createDataset(a, root, mode) ;
return ds ;
}
public Dataset createDataset(Assembler a, Resource root, Mode mode) {
+ checkType(root, DatasetAssemblerVocab.tDataset);
// -------- Default graph
// Can use ja:graph or ja:defaultGraph
Resource dftGraph = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pDefaultGraph) ;
@@ -58,27 +64,33 @@ public class DatasetAssembler extends AssemblerBase implements Assembler {
// Assembler description did not define one.
dftModel = GraphFactory.makeDefaultModel() ;
Dataset ds = DatasetFactory.create(dftModel) ;
- // -------- Named graphs
- List<RDFNode> nodes = GraphUtils.multiValue(root, DatasetAssemblerVocab.pNamedGraph) ;
- for ( RDFNode n : nodes ) {
- if ( !(n instanceof Resource) )
- throw new DatasetAssemblerException(root, "Not a resource: " + FmtUtils.stringForRDFNode(n));
- Resource r = (Resource)n;
-
- String gName = GraphUtils.getAsStringValue(r, DatasetAssemblerVocab.pGraphName);
- Resource g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraph);
- if ( g == null ) {
- g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraphAlt);
- if ( g != null ) {
- Log.warn(this, "Use of old vocabulary: use :graph not :graphData");
- } else {
- throw new DatasetAssemblerException(root, "no graph for: " + gName);
+ Txn.executeWrite(ds, () -> {
+ // Load data into the default graph or quads into the dataset.
+ multiValueAsString(root, data)
+ .forEach(dataURI -> read(ds, dataURI));
+
+ // -------- Named graphs
+ List<RDFNode> nodes = GraphUtils.multiValue(root, DatasetAssemblerVocab.pNamedGraph) ;
+ for ( RDFNode n : nodes ) {
+ if ( !(n instanceof Resource) )
+ throw new DatasetAssemblerException(root, "Not a resource: " + FmtUtils.stringForRDFNode(n));
+ Resource r = (Resource)n;
+
+ String gName = GraphUtils.getAsStringValue(r, DatasetAssemblerVocab.pGraphName);
+ Resource g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraph);
+ if ( g == null ) {
+ g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraphAlt);
+ if ( g != null ) {
+ Log.warn(this, "Use of old vocabulary: use :graph not :graphData");
+ } else {
+ throw new DatasetAssemblerException(root, "no graph for: " + gName);
+ }
}
+
+ Model m = a.openModel(g);
+ ds.addNamedModel(gName, m);
}
-
- Model m = a.openModel(g);
- ds.addNamedModel(gName, m);
- }
+ });
AssemblerUtils.setContext(root, ds.getContext()) ;
return ds ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/3e13dc64/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..1a2bc0c 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
@@ -31,7 +31,7 @@ public class DatasetAssemblerVocab
// General dataset
public static final Resource tDataset = ResourceFactory.createResource(NS+"RDFDataset") ;
// In-memory dataset
- public static final Resource tDatasetTxnMem = ResourceFactory.createResource(NS+"DatasetTxnMem") ;
+ public static final Resource tMemoryDataset = ResourceFactory.createResource(NS+"MemoryDataset") ;
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/3e13dc64/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
index b70be2a..792f382 100644
--- 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
@@ -24,13 +24,10 @@ 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.multiValueAsString;
-import static org.apache.jena.sparql.util.graph.GraphUtils.multiValueResource;
+import static org.apache.jena.sparql.util.graph.GraphUtils.*;
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;
import org.apache.jena.system.Txn;
@@ -38,32 +35,30 @@ import org.apache.jena.system.Txn;
/**
* An {@link Assembler} that creates in-memory {@link Dataset}s.
*/
-public class InMemDatasetAssembler extends AssemblerBase implements Assembler {
+public class InMemDatasetAssembler extends DatasetAssembler {
public static Resource getType() {
- return DatasetAssemblerVocab.tDatasetTxnMem ;
+ return DatasetAssemblerVocab.tMemoryDataset ;
}
@Override
public Dataset open(final Assembler assembler, final Resource root, final Mode mode) {
- checkType(root, DatasetAssemblerVocab.tDatasetTxnMem);
+ checkType(root, DatasetAssemblerVocab.tMemoryDataset);
final Dataset dataset = createTxnMem();
setContext(root, dataset.getContext());
Txn.executeWrite(dataset, ()->{
- // Load data into the default graph
- // This also loads quads into the dataset.
- multiValueAsString(root, data)
- .forEach(dataURI -> read(dataset, dataURI));
-
- // load data into named graphs
- multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> {
- final String graphName = getAsStringValue(namedGraphResource, pGraphName);
- if (namedGraphResource.hasProperty(data)) {
- multiValueAsString(namedGraphResource, data)
- .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData));
- }
- });
+ // Load data into the default graph or quads into the dataset.
+ multiValueAsString(root, data)
+ .forEach(dataURI -> read(dataset, dataURI));
+
+ // load data into named graphs
+ multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> {
+ final String graphName = getAsStringValue(namedGraphResource, pGraphName);
+ if (namedGraphResource.hasProperty(data))
+ multiValueAsString(namedGraphResource, data)
+ .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData));
+ });
});
return dataset;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/3e13dc64/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TS_Assembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TS_Assembler.java b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TS_Assembler.java
index 3dbe1bd..9a92f6c 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TS_Assembler.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TS_Assembler.java
@@ -23,5 +23,5 @@ import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-@SuiteClasses({ TestInMemDatasetAssembler.class })
+@SuiteClasses({ TestInMemDatasetAssembler.class, TestDatasetAssembler.class })
public class TS_Assembler {}
http://git-wip-us.apache.org/repos/asf/jena/blob/3e13dc64/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
new file mode 100644
index 0000000..c65ab54
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/core/assembler/TestDatasetAssembler.java
@@ -0,0 +1,122 @@
+/*
+ * 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 java.nio.file.Files.createTempFile;
+import static org.apache.jena.assembler.JA.data;
+import static org.apache.jena.assembler.Mode.DEFAULT;
+import static org.apache.jena.rdf.model.ModelFactory.createDefaultModel;
+import static org.apache.jena.riot.Lang.NQUADS;
+import static org.apache.jena.riot.RDFDataMgr.write;
+import static org.apache.jena.vocabulary.RDF.type;
+
+import java.io.*;
+import java.nio.file.Path;
+
+import org.apache.jena.assembler.JA;
+import org.apache.jena.assembler.exceptions.CannotConstructException;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.rdf.model.*;
+import org.apache.jena.sparql.core.*;
+import org.apache.jena.sparql.sse.SSE;
+import org.apache.jena.sparql.util.IsoMatcher;
+import org.apache.jena.system.Txn;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestDatasetAssembler extends Assert {
+
+ protected Resource assemblerType() {
+ return DatasetAssemblerVocab.tDataset;
+ };
+
+ protected DatasetAssembler createAssembler() {
+ return new DatasetAssembler();
+ }
+
+ Dataset assemble(final Resource example) {
+ Model model = example.getModel() ;
+ model.setNsPrefix("ja", JA.getURI()) ;
+ final DatasetAssembler testAssembler = createAssembler();
+ return testAssembler.open(testAssembler, example, DEFAULT);
+ }
+
+ @Test
+ public void emptyDataset() {
+ final Model model = createDefaultModel();
+ final Resource empty = model.createResource("test:empty");
+ empty.addProperty(type, assemblerType()) ;
+ Dataset dataset = assemble(empty) ;
+ assertFalse(dataset.asDatasetGraph().find().hasNext()) ;
+ }
+
+ @Test(expected = CannotConstructException.class)
+ public void wrongKindOfAssemblerDefinition() {
+ final Model model = createDefaultModel();
+ final Resource badExample = model.createResource("test:badExample");
+ assemble(badExample);
+ }
+
+ @Test
+ public void directDataQuadsURI() throws IOException {
+ // first make a file of quads to load later
+ final Model model = createDefaultModel();
+ 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, assemblerType());
+ simpleExample.addProperty(data, quadsURI);
+
+ final DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
+ Txn.executeWrite(dsg, () ->
+ model.listStatements().mapWith(Statement::asTriple)
+ .mapWith(t -> new Quad(quadsURI.asNode(), t)).forEachRemaining(dsg::add));
+
+ try (OutputStream out = new FileOutputStream(quads.toFile())) {
+ write(out, dsg, NQUADS);
+ }
+
+ final Dataset dataset = assemble(simpleExample);
+ final Model assembledDefaultModel = dataset.getDefaultModel();
+ final Model assembledNamedModel = dataset.getNamedModel(quadsURI.getURI());
+ assertTrue(assembledDefaultModel.isEmpty());
+ assertTrue(assembledNamedModel.contains(assembledNamedModel.createStatement(simpleExample, data, quadsURI)));
+ }
+
+ @Test
+ public void directDataQuadsString() throws IOException {
+ // first make a file of quads to load later
+ DatasetGraph dsgData = DatasetGraphFactory.createTxnMem();
+ dsgData.add(SSE.parseQuad("(_ :s1 :p1 :o1)"));
+ dsgData.add(SSE.parseQuad("(:gn :s2 :p2 :o2)"));
+ Path quads = createTempFile("quadExample2", ".nq");
+ String dataFileName = quads.toFile().toURI().toString();
+ try (OutputStream out = new FileOutputStream(quads.toFile())) {
+ write(out, dsgData, NQUADS);
+ }
+
+ Model assemblerModel = createDefaultModel();
+ Resource simpleExample2 = assemblerModel.createResource("test:simpleExample2");
+ simpleExample2.addProperty(type, assemblerType()) ;
+ simpleExample2.addProperty(data, dataFileName);
+
+ final Dataset dataset = assemble(simpleExample2);
+
+ assertTrue(IsoMatcher.isomorphic(dsgData, dataset.asDatasetGraph()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/3e13dc64/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 6d88214..a4740e5 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
@@ -21,59 +21,38 @@ package org.apache.jena.sparql.core.assembler;
import static java.nio.file.Files.createTempFile;
import static org.apache.jena.assembler.JA.MemoryModel ;
import static org.apache.jena.assembler.JA.data ;
-import static org.apache.jena.assembler.Mode.DEFAULT;
import static org.apache.jena.rdf.model.ModelFactory.createDefaultModel;
-import static org.apache.jena.riot.Lang.NQUADS;
import static org.apache.jena.riot.RDFDataMgr.write;
import static org.apache.jena.riot.RDFFormat.NTRIPLES;
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.vocabulary.RDF.type;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
import java.nio.file.Path;
import java.util.Iterator;
-import org.apache.jena.assembler.JA ;
-import org.apache.jena.assembler.exceptions.CannotConstructException;
import org.apache.jena.graph.Node;
import org.apache.jena.query.Dataset;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
-import org.apache.jena.rdf.model.Statement;
-import org.apache.jena.sparql.core.DatasetGraph;
-import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sparql.core.Quad;
-import org.apache.jena.sparql.sse.SSE;
-import org.apache.jena.sparql.util.IsoMatcher;
-import org.junit.Assert;
import org.junit.Test;
/**
* Tests for {@link InMemDatasetAssembler}
*
*/
-public class TestInMemDatasetAssembler extends Assert {
-
- private Dataset assemble(final Resource example) {
- Model model = example.getModel() ;
- model.setNsPrefix("ja", JA.getURI()) ;
-// System.out.println("-------------");
-// RDFDataMgr.write(System.out, model, Lang.TTL) ;
- final InMemDatasetAssembler testAssembler = new InMemDatasetAssembler();
- return testAssembler.open(testAssembler, example, DEFAULT);
- }
-
- @Test
- public void emptyDataset() {
- final Model model = createDefaultModel();
- final Resource empty = model.createResource("test:empty");
- empty.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem) ;
- Dataset dataset = assemble(empty) ;
- assertFalse(dataset.asDatasetGraph().find().hasNext()) ;
- }
+public class TestInMemDatasetAssembler extends TestDatasetAssembler {
+
+ @Override
+ protected Resource assemblerType() {
+ return DatasetAssemblerVocab.tMemoryDataset;
+ };
+
+ @Override
+ protected DatasetAssembler createAssembler() {
+ return new InMemDatasetAssembler();
+ }
@Test
public void directDataLinkForDefaultAndNamedGraphs() throws IOException {
@@ -82,7 +61,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, DatasetAssemblerVocab.tDatasetTxnMem);
+ simpleExample.addProperty(type, assemblerType());
// add a default graph
simpleExample.addProperty(data, triplesURI);
// add a named graph
@@ -114,56 +93,4 @@ public class TestInMemDatasetAssembler extends Assert {
assertFalse(graphNodes.hasNext());
}
- @Test
- public void directDataQuadsURI() throws IOException {
- // first make a file of quads to load later
- final Model model = createDefaultModel();
- 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, DatasetAssemblerVocab.tDatasetTxnMem);
- simpleExample.addProperty(data, quadsURI);
-
- final DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
- model.listStatements().mapWith(Statement::asTriple).mapWith(t -> new Quad(quadsURI.asNode(), t))
- .forEachRemaining(dsg::add);
- try (OutputStream out = new FileOutputStream(quads.toFile())) {
- write(out, dsg, NQUADS);
- }
-
- final Dataset dataset = assemble(simpleExample);
- final Model assembledDefaultModel = dataset.getDefaultModel();
- final Model assembledNamedModel = dataset.getNamedModel(quadsURI.getURI());
- assertTrue(assembledDefaultModel.isEmpty());
- assertTrue(assembledNamedModel.contains(assembledNamedModel.createStatement(simpleExample, data, quadsURI)));
- }
-
- @Test
- public void directDataQuadsString() throws IOException {
- // first make a file of quads to load later
- DatasetGraph dsgData = DatasetGraphFactory.createTxnMem();
- dsgData.add(SSE.parseQuad("(_ :s1 :p1 :o1)"));
- dsgData.add(SSE.parseQuad("(:gn :s2 :p2 :o2)"));
- Path quads = createTempFile("quadExample2", ".nq");
- String dataFileName = quads.toFile().toURI().toString();
- try (OutputStream out = new FileOutputStream(quads.toFile())) {
- write(out, dsgData, NQUADS);
- }
-
- Model assemblerModel = createDefaultModel();
- Resource simpleExample2 = assemblerModel.createResource("test:simpleExample2");
- simpleExample2.addProperty(type, DatasetAssemblerVocab.tDatasetTxnMem) ;
- simpleExample2.addProperty(data, dataFileName);
-
- final Dataset dataset = assemble(simpleExample2);
-
- assertTrue(IsoMatcher.isomorphic(dsgData, dataset.asDatasetGraph()));
- }
-
- @Test(expected = CannotConstructException.class)
- public void wrongKindOfAssemblerDefinition() {
- final Model model = createDefaultModel();
- final Resource badExample = model.createResource("test:badExample");
- assemble(badExample);
- }
}