You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by st...@apache.org on 2018/02/13 00:33:55 UTC
[1/2] commons-rdf git commit: Adding convenient Dataset and
DatasetGraph conversions
Repository: commons-rdf
Updated Branches:
refs/heads/master ed23a05f8 -> 09ae5451e
Adding convenient Dataset and DatasetGraph conversions
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/0c9ae7e8
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/0c9ae7e8
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/0c9ae7e8
Branch: refs/heads/master
Commit: 0c9ae7e83f9253d5b9efc4b7ad8261c09e4f8e74
Parents: e893f14
Author: ajs6f <aj...@apache.org>
Authored: Mon Jan 29 13:12:36 2018 -0500
Committer: ajs6f <aj...@apache.org>
Committed: Mon Jan 29 13:14:05 2018 -0500
----------------------------------------------------------------------
.../org/apache/commons/rdf/jena/JenaRDF.java | 35 +++++++++++++
.../apache/commons/rdf/jena/JenaRDFTest.java | 54 +++++++++++++++++++-
2 files changed, 87 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/0c9ae7e8/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
----------------------------------------------------------------------
diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
index 6e41b93..62327a8 100644
--- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
+++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
@@ -39,12 +39,14 @@ import org.apache.jena.datatypes.RDFDatatype;
import org.apache.jena.datatypes.xsd.XSDDatatype;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.query.DatasetFactory;
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFLanguages;
import org.apache.jena.riot.system.StreamRDF;
import org.apache.jena.riot.system.StreamRDFBase;
import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
import org.apache.jena.sparql.graph.GraphFactory;
/**
@@ -665,6 +667,39 @@ public final class JenaRDF implements RDF {
}
/**
+ * Convert a CommonsRDF Dataset to a Jena Dataset. If the Dataset was from Jena
+ * originally, return that original object wrapped else create a copy using Jena
+ * objects.
+ *
+ * @param dataset
+ * Commons RDF {@link Dataset} to convert
+ * @return Converted Jena {@link org.apache.jena.query.Dataset}
+ */
+ public org.apache.jena.query.Dataset asJenaDataset(final Dataset dataset) {
+ return DatasetFactory.wrap(asJenaDatasetGraph(dataset));
+ }
+
+ /**
+ * Convert a CommonsRDF Dataset to a Jena DatasetGraph. If the Dataset was from Jena
+ * originally, return that original object's underlying DatasetGraph else create a
+ * copy using Jena objects.
+ *
+ * @param dataset
+ * Commons RDF {@link Dataset} to convert
+ * @return Converted Jena {@link org.apache.jena.sparql.core.DatasetGraph}
+ */
+ public DatasetGraph asJenaDatasetGraph(final Dataset dataset) {
+ final DatasetGraph dsg;
+ if (dataset instanceof JenaDataset)
+ dsg = ((JenaDataset) dataset).asJenaDatasetGraph();
+ else {
+ dsg = DatasetGraphFactory.createGeneral();
+ dataset.stream().map(this::asJenaQuad).forEach(dsg::add);
+ }
+ return dsg;
+ }
+
+ /**
* Convert a CommonsRDF Graph to a Jena Graph. If the Graph was from Jena
* originally, return that original object else create a copy using Jena
* objects.
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/0c9ae7e8/commons-rdf-jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
----------------------------------------------------------------------
diff --git a/commons-rdf-jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java b/commons-rdf-jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
index fd50421..40687ce 100644
--- a/commons-rdf-jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
+++ b/commons-rdf-jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
@@ -17,14 +17,64 @@
*/
package org.apache.commons.rdf.jena;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
import org.apache.commons.rdf.api.AbstractRDFTest;
-import org.apache.commons.rdf.api.RDF;
+import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.api.Dataset;
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.Quad;
+import org.apache.commons.rdf.simple.SimpleRDF;
+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.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.junit.Test;
public class JenaRDFTest extends AbstractRDFTest {
@Override
- public RDF createFactory() {
+ public JenaRDF createFactory() {
return new JenaRDF();
}
+ @Test
+ public void roundTripDatasetGraphShouldMaintainIdentity() {
+ DatasetGraph dsg = DatasetGraphFactory.create();
+ JenaDataset dataset = createFactory().asDataset(dsg);
+ DatasetGraph roundTrippedDSG = createFactory().asJenaDatasetGraph(dataset);
+ assertSame("Should have gotten the same DatasetGraph object from a round trip!", dsg, roundTrippedDSG);
+ }
+
+ @Test
+ public void testSimpleDatasetConversion() {
+ SimpleRDF factory = new SimpleRDF();
+ Dataset ds = factory.createDataset();
+ final BlankNode subject = factory.createBlankNode("b1");
+ final IRI predicate = factory.createIRI("http://example.com/pred");
+ final IRI object = factory.createIRI("http://example.com/obj");
+ final IRI graph = factory.createIRI("http://example.com/graph");
+ final Quad quad = factory.createQuad(graph, subject, predicate, object);
+ ds.add(quad);
+ JenaRDF jenaFactory = createFactory();
+ org.apache.jena.query.Dataset jenaDS = jenaFactory.asJenaDataset(ds);
+ assertEquals("Should have found one named graph!", 1, jenaDS.asDatasetGraph().size());
+ Model namedModel = jenaDS.getNamedModel(graph.getIRIString());
+ assertEquals("Should have found one triple in named graph!", 1, namedModel.size());
+ Statement statement = namedModel.listStatements().next();
+ Resource jenaSubject = statement.getSubject();
+ Property jenaPredicate = statement.getPredicate();
+ RDFNode jenaObject = statement.getObject();
+ assertTrue(jenaSubject.isAnon());
+ assertTrue(jenaObject.isResource());
+ assertEquals(subject.ntriplesString(), "_:" + jenaSubject.getId().getLabelString());
+ assertEquals(predicate.getIRIString(), jenaPredicate.getURI());
+ assertEquals(object.getIRIString(), jenaObject.asResource().getURI());
+ }
+
}
[2/2] commons-rdf git commit: COMMONSRDF-74: Add Dataset and
DatasetGraph conversions to JenaRDF
Posted by st...@apache.org.
COMMONSRDF-74: Add Dataset and DatasetGraph conversions to JenaRDF
Merge commit 'refs/pull/52/head' of https://github.com/apache/commons-rdf
Thanks, @ajs6f
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/09ae5451
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/09ae5451
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/09ae5451
Branch: refs/heads/master
Commit: 09ae5451eb165d00e15a52e76ba265062ab8eebf
Parents: ed23a05 0c9ae7e
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Tue Feb 13 00:32:37 2018 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue Feb 13 00:32:37 2018 +0000
----------------------------------------------------------------------
.../org/apache/commons/rdf/jena/JenaRDF.java | 35 +++++++++++++
.../apache/commons/rdf/jena/JenaRDFTest.java | 54 +++++++++++++++++++-
2 files changed, 87 insertions(+), 2 deletions(-)
----------------------------------------------------------------------