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(-)
----------------------------------------------------------------------