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 2017/02/08 14:42:10 UTC
[1/9] commons-rdf git commit: COMMONSRDF-55: Handle Jena's
urn:x-arq:DefaultGraph and friends
Repository: commons-rdf
Updated Branches:
refs/heads/master 5e2430ff9 -> 6d4e333d9
COMMONSRDF-55: Handle Jena's urn:x-arq:DefaultGraph and friends
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/bb264738
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/bb264738
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/bb264738
Branch: refs/heads/master
Commit: bb264738aa0e3c3a8e9ae8bba0d7109cfb59adaa
Parents: 5e2430f
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Jan 27 17:26:59 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Jan 27 17:26:59 2017 +0000
----------------------------------------------------------------------
.../commons/rdf/api/AbstractDatasetTest.java | 45 +++++++++++
.../commons/rdf/jena/impl/AbstractQuadLike.java | 39 +++++++--
.../rdf/jena/impl/InternalJenaFactory.java | 2 +-
.../rdf/jena/DefaultGraphInQuadTest.java | 85 ++++++++++++++++++++
.../apache/commons/rdf/jena/JenaRDFTest.java | 1 -
5 files changed, 165 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/bb264738/api/src/test/java/org/apache/commons/rdf/api/AbstractDatasetTest.java
----------------------------------------------------------------------
diff --git a/api/src/test/java/org/apache/commons/rdf/api/AbstractDatasetTest.java b/api/src/test/java/org/apache/commons/rdf/api/AbstractDatasetTest.java
index 505994f..edde127 100644
--- a/api/src/test/java/org/apache/commons/rdf/api/AbstractDatasetTest.java
+++ b/api/src/test/java/org/apache/commons/rdf/api/AbstractDatasetTest.java
@@ -158,8 +158,53 @@ public abstract class AbstractDatasetTest {
count++;
}
assertEquals(dataset.size(), count);
+
+ // Pattern iteration which should cover multiple graphs.
+
+ Set<Quad> aliceQuads = new HashSet<>();
+ for (Quad aliceQ : dataset.iterate(null, alice, null, null)) {
+ aliceQuads.add(aliceQ);
+ }
+ assertTrue(aliceQuads.contains(factory.createQuad(graph1, alice, name, aliceName)));
+ assertTrue(aliceQuads.contains(factory.createQuad(graph1, alice, knows, bob)));
+ // We can't test this by Quad equality, as bnode1 might become mapped by the
+ // dataset
+ //assertTrue(aliceQuads.contains(factory.createQuad(graph1, alice, member, bnode1)));
+ assertTrue(aliceQuads.contains(factory.createQuad(null, alice, isPrimaryTopicOf, graph1)));
+ assertEquals(4, aliceQuads.size());
+
+ // Check the isPrimaryTopicOf statements in the default graph
+ int topics = 0;
+ for (Quad topic : dataset.iterate(null, null, isPrimaryTopicOf, null)) {
+ topics++;
+ // COMMONSRDF-55: should not be <urn:x-arq:defaultgraph> or similar
+ assertFalse(topic.getGraphName().isPresent());
+ }
+ assertEquals(2, topics);
}
+ @Test
+ public void streamDefaultGraphNameAlice() throws Exception {
+ // null below would match in ANY graph (including default graph)
+ Optional<? extends Quad> aliceTopic = dataset.stream(null, alice, isPrimaryTopicOf, null).findAny();
+ assertTrue(aliceTopic.isPresent());
+ // COMMONSRDF-55: should not be <urn:x-arq:defaultgraph> or similar
+ assertNull(aliceTopic.get().getGraphName().orElse(null));
+ assertFalse(aliceTopic.get().getGraphName().isPresent());
+ }
+
+
+ @Test
+ public void streamDefaultGraphNameByPattern() throws Exception {
+ // Explicitly select in only the default graph Optional.empty()
+ Optional<? extends Quad> aliceTopic = dataset.stream(Optional.empty(), null, null, null).findAny();
+ assertTrue(aliceTopic.isPresent());
+ // COMMONSRDF-55: should not be <urn:x-arq:defaultgraph> or similar
+ assertNull(aliceTopic.get().getGraphName().orElse(null));
+ assertFalse(aliceTopic.get().getGraphName().isPresent());
+ }
+
+
/**
* Special quad closing for RDF4J.
*/
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/bb264738/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
index 9a4c94b..3100ae6 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
@@ -22,12 +22,15 @@ import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
+import org.apache.commons.rdf.api.BlankNodeOrIRI;
+import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.QuadLike;
import org.apache.commons.rdf.api.RDFTerm;
import org.apache.commons.rdf.jena.JenaQuad;
import org.apache.commons.rdf.jena.JenaQuadLike;
import org.apache.commons.rdf.jena.JenaRDF;
import org.apache.commons.rdf.jena.JenaTriple;
+import org.apache.jena.graph.Factory;
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.core.Quad;
@@ -52,6 +55,22 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
private static InternalJenaFactory internalJenaFactory = new InternalJenaFactory() {
};
+ /**
+ * COMMONSRDF-55 - special handling of urn:x-arq:DefaultGraph and friends
+ */
+ private static class DefaultGraphChecker {
+ // Fixed UUID for comparison of defaultGraphNodeGenerated
+ private UUID salt = UUID.fromString("aaa6bf96-ea58-4a55-9485-3733403a1f24");
+ private RDFTerm defaultGraph = internalJenaFactory.createRDFTerm(Quad.defaultGraphIRI, salt);
+ private RDFTerm defaultGraphNodeGenerated = internalJenaFactory.createRDFTerm(Quad.defaultGraphNodeGenerated, salt);
+
+ public boolean isNotDefaultGraph(RDFTerm graphName) {
+ return !(graphName.equals(defaultGraph) || graphName.equals(defaultGraphNodeGenerated));
+ }
+ }
+
+ private static DefaultGraphChecker defaultGraphChecker = new DefaultGraphChecker();
+
final Optional<G> graphName;
final S subject;
final P predicate;
@@ -59,11 +78,12 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
org.apache.jena.sparql.core.Quad quad = null;
org.apache.jena.graph.Triple triple = null;
+
AbstractQuadLike(final S subject, final P predicate, final O object, final Optional<G> graphName) {
this.subject = Objects.requireNonNull(subject);
this.predicate = Objects.requireNonNull(predicate);
this.object = Objects.requireNonNull(object);
- this.graphName = Objects.requireNonNull(graphName);
+ this.graphName = Objects.requireNonNull(graphName).filter(defaultGraphChecker::isNotDefaultGraph);
}
AbstractQuadLike(final S subject, final P predicate, final O object) {
@@ -76,7 +96,11 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
this.subject = (S) internalJenaFactory.createRDFTerm(quad.getSubject(), salt);
this.predicate = (P) internalJenaFactory.createRDFTerm(quad.getPredicate(), salt);
this.object = (O) internalJenaFactory.createRDFTerm(quad.getObject(), salt);
- this.graphName = Optional.of((G) internalJenaFactory.createRDFTerm(quad.getGraph(), salt));
+ if (quad.isDefaultGraph()) {
+ this.graphName = Optional.empty();
+ } else {
+ this.graphName = Optional.of((G) internalJenaFactory.createRDFTerm(quad.getGraph(), salt));
+ }
}
@SuppressWarnings("unchecked")
@@ -92,8 +116,11 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
public org.apache.jena.sparql.core.Quad asJenaQuad() {
final JenaRDF factory = new JenaRDF();
if (quad == null) {
- quad = org.apache.jena.sparql.core.Quad.create(factory.asJenaNode(graphName.orElse(null)),
- factory.asJenaNode(subject), factory.asJenaNode(predicate), factory.asJenaNode(object));
+ quad = org.apache.jena.sparql.core.Quad.create(
+ graphName.map(factory::asJenaNode).orElse(Quad.defaultGraphIRI),
+ factory.asJenaNode(subject),
+ factory.asJenaNode(predicate),
+ factory.asJenaNode(object));
}
return quad;
}
@@ -102,7 +129,9 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
public org.apache.jena.graph.Triple asJenaTriple() {
final JenaRDF factory = new JenaRDF();
if (triple == null) {
- triple = org.apache.jena.graph.Triple.create(factory.asJenaNode(subject), factory.asJenaNode(predicate),
+ triple = org.apache.jena.graph.Triple.create(
+ factory.asJenaNode(subject),
+ factory.asJenaNode(predicate),
factory.asJenaNode(object));
}
return triple;
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/bb264738/jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java
index 031ba7c..3e186a2 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java
@@ -159,7 +159,7 @@ public abstract class InternalJenaFactory {
}
throw new ConversionException("Unrecognized node type: " + node);
}
-
+
public JenaTriple createTriple(final BlankNodeOrIRI subject, final IRI predicate, final RDFTerm object) {
return new JenaTripleImpl(subject, predicate, object);
}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/bb264738/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
new file mode 100644
index 0000000..739d7a4
--- /dev/null
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
@@ -0,0 +1,85 @@
+/**
+ * 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.commons.rdf.jena;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.commons.rdf.api.IRI;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.sparql.core.Quad;
+import org.junit.Test;
+
+/**
+ * COMMONSRDF-55: Ensure correct handling of
+ * Jena's default graph IRI urn:x-arq:DefaultGraph
+ */
+public class DefaultGraphInQuadTest {
+
+ JenaRDF rdf = new JenaRDF();
+ IRI example = rdf.createIRI("http://example.com/");
+ Node exampleJena = NodeFactory.createURI("http://example.com/");
+
+ @Test
+ public void createFromNull() throws Exception {
+ JenaQuad q = rdf.createQuad(null, example, example, example);
+ assertFalse(q.getGraphName().isPresent());
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
+ }
+
+ @Test
+ public void createFromDefaultGraphIRI() throws Exception {
+ JenaIRI defaultGraph = (JenaIRI) rdf.asRDFTerm(Quad.defaultGraphIRI);
+ JenaQuad q = rdf.createQuad(defaultGraph, example, example, example);
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
+ assertFalse(q.getGraphName().isPresent());
+ }
+
+ @Test
+ public void defaultGraphIRI() throws Exception {
+ Quad jenaQuad = Quad.create(Quad.defaultGraphIRI, exampleJena, exampleJena, exampleJena);
+ JenaQuad q = rdf.asQuad(jenaQuad);
+ assertFalse(q.getGraphName().isPresent());
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ }
+
+ @Test
+ public void defaultGraphNodeGenerated() throws Exception {
+ // defaultGraphNodeGenerated might appear in parser output
+ Quad jenaQuad = Quad.create(Quad.defaultGraphNodeGenerated, exampleJena, exampleJena, exampleJena);
+ JenaQuad q = rdf.asQuad(jenaQuad);
+ assertFalse(q.getGraphName().isPresent());
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ }
+
+ @Test
+ public void unionGraph() throws Exception {
+ // unionGraph shouldn't really appear as a quad except
+ // in a pattern
+ Quad jenaQuad = Quad.create(Quad.unionGraph, exampleJena, exampleJena, exampleJena);
+ JenaQuad q = rdf.asQuad(jenaQuad);
+ // But at least we can agree it is NOT (necessarily) in the
+ // default graph
+ assertFalse(q.asJenaQuad().isDefaultGraph());
+ assertTrue(q.getGraphName().isPresent());
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/bb264738/jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
index 72986d0..fd50421 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/JenaRDFTest.java
@@ -15,7 +15,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.commons.rdf.jena;
import org.apache.commons.rdf.api.AbstractRDFTest;
[2/9] commons-rdf git commit: COMMONSRDF-55: More tests
Posted by st...@apache.org.
COMMONSRDF-55: More tests
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/98da22af
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/98da22af
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/98da22af
Branch: refs/heads/master
Commit: 98da22af438a1c0eaadf3cac7cd5e80f285fea4b
Parents: bb26473
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 1 15:06:16 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 1 15:06:16 2017 +0000
----------------------------------------------------------------------
.../commons/rdf/jena/impl/AbstractQuadLike.java | 9 +++--
.../rdf/jena/DefaultGraphInQuadTest.java | 41 +++++++++++++++++++-
2 files changed, 46 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/98da22af/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
index 3100ae6..6127ee6 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
@@ -22,15 +22,12 @@ import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
-import org.apache.commons.rdf.api.BlankNodeOrIRI;
-import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.QuadLike;
import org.apache.commons.rdf.api.RDFTerm;
import org.apache.commons.rdf.jena.JenaQuad;
import org.apache.commons.rdf.jena.JenaQuadLike;
import org.apache.commons.rdf.jena.JenaRDF;
import org.apache.commons.rdf.jena.JenaTriple;
-import org.apache.jena.graph.Factory;
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.core.Quad;
@@ -57,6 +54,12 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
/**
* COMMONSRDF-55 - special handling of urn:x-arq:DefaultGraph and friends
+ * <p>
+ * This can recognize <urn:x-arq:DefaultGraph> and
+ * <urn:x-arq:DefaultGraphNode> from any IRI instance, so they can be
+ * replaced with Optional.empty(). Note that this code does not hardcode the
+ * internal Jena IRIs but uses Jena's constants {@link Quad#defaultGraphIRI}
+ * and {@link Quad#defaultGraphNodeGenerated}.
*/
private static class DefaultGraphChecker {
// Fixed UUID for comparison of defaultGraphNodeGenerated
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/98da22af/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
index 739d7a4..477f460 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.simple.SimpleRDF;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.NodeFactory;
import org.apache.jena.sparql.core.Quad;
@@ -53,6 +54,42 @@ public class DefaultGraphInQuadTest {
assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
assertFalse(q.getGraphName().isPresent());
}
+
+ @Test
+ public void createFromForeignDefaultGraph() throws Exception {
+ // What if <urn:x-arq:DefaultGraph> appear in a non-Jena IRI?
+ IRI foreignDefaultGraph = new SimpleRDF().createIRI(Quad.defaultGraphIRI.getURI());
+ JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
+ assertFalse(q.getGraphName().isPresent());
+ }
+
+
+ @Test
+ public void createFromDefaultGraphNodeGeneratedIRINode() throws Exception {
+ // What if <urn:x-arq:DefaultGraphNode> appear as an IRI instance?
+ IRI foreignDefaultGraph = rdf.createIRI(Quad.defaultGraphNodeGenerated.getURI());
+ JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertFalse(q.getGraphName().isPresent());
+ // Unfortunately Quad.defaultGraphNodeGenerated is not preserved
+ // within JenaQuad
+ //assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
+ }
+
+ @Test
+ public void createFromDefaultGraphNodeGeneratedIRIString() throws Exception {
+ // What if <urn:x-arq:DefaultGraphNode> appear in a non-Jena IRI?
+ IRI foreignDefaultGraph = (IRI) rdf.asRDFTerm((Quad.defaultGraphNodeGenerated));
+ JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertFalse(q.getGraphName().isPresent());
+ // Unfortunately Quad.defaultGraphNodeGenerated is not preserved
+ // within JenaQuad
+ assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
+ }
+
@Test
public void defaultGraphIRI() throws Exception {
@@ -64,11 +101,13 @@ public class DefaultGraphInQuadTest {
@Test
public void defaultGraphNodeGenerated() throws Exception {
- // defaultGraphNodeGenerated might appear in parser output
+ // <urn:x-arq:DefaultGraphNode> might appear in parser output
Quad jenaQuad = Quad.create(Quad.defaultGraphNodeGenerated, exampleJena, exampleJena, exampleJena);
JenaQuad q = rdf.asQuad(jenaQuad);
assertFalse(q.getGraphName().isPresent());
assertTrue(q.asJenaQuad().isDefaultGraph());
+ // Preserves <urn:x-arq:DefaultGraphNode>
+ assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
}
@Test
[8/9] commons-rdf git commit: Test asGeneralizedTriple
Posted by st...@apache.org.
Test asGeneralizedTriple
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/71833695
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/71833695
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/71833695
Branch: refs/heads/master
Commit: 71833695488bec404b433bd4e2f817021232855d
Parents: 8dd1c43
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:38:25 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:38:36 2017 +0000
----------------------------------------------------------------------
.../rdf/jena/GeneralizedRDFTripleTest.java | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/71833695/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
index 82ccb81..97abbe5 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
@@ -17,9 +17,13 @@
*/
package org.apache.commons.rdf.jena;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import org.apache.commons.rdf.api.BlankNode;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
import org.junit.Test;
public class GeneralizedRDFTripleTest {
@@ -66,7 +70,16 @@ public class GeneralizedRDFTripleTest {
assertTrue(t.asJenaTriple().getSubject().isLiteral());
}
-
-
+ @Test
+ public void asGeneralizedTriple() throws Exception {
+ Node s = NodeFactory.createLiteral("Hello");
+ Node p = NodeFactory.createBlankNode();
+ Node o = NodeFactory.createURI("http://example.com/ex");
+ Triple jt = Triple.create(s, p, o);
+ JenaTripleLike t = jena.asGeneralizedTriple(jt);
+ assertEquals(jena.createLiteral("Hello"), t.getSubject());
+ assertEquals(jena.asRDFTerm(p), t.getPredicate());
+ assertEquals(jena.createIRI("http://example.com/ex"), t.getObject());
+ }
}
[6/9] commons-rdf git commit: COMMONSRDF-55: recognize default graph
Node for generalizedQuad
Posted by st...@apache.org.
COMMONSRDF-55: recognize default graph Node for generalizedQuad
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/c90bafec
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/c90bafec
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/c90bafec
Branch: refs/heads/master
Commit: c90bafec0df0b156493c61a1f41e71007fc1ad5e
Parents: d0ae2d8
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:32:49 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:32:49 2017 +0000
----------------------------------------------------------------------
.../rdf/jena/GeneralizedRDFQuadTest.java | 68 +++++++++++++-------
1 file changed, 45 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/c90bafec/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
index e5b26a4..1e183d3 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
@@ -17,9 +17,12 @@
*/
package org.apache.commons.rdf.jena;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import org.apache.commons.rdf.api.BlankNode;
+import org.apache.jena.sparql.core.Quad;
import org.junit.Test;
public class GeneralizedRDFQuadTest {
@@ -33,11 +36,12 @@ public class GeneralizedRDFQuadTest {
JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
- JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, b1, ex2, ex3);
- assertEquals(ex1, t.getSubject());
- assertEquals(ex2, t.getObject());
- assertEquals(b1, t.getPredicate()); // it's a bnode!
- assertTrue(t.asJenaQuad().getPredicate().isBlank());
+ JenaGeneralizedQuadLike q = jena.createGeneralizedQuad(ex1, b1, ex2, ex3);
+ assertEquals(ex1, q.getSubject());
+ assertEquals(ex2, q.getObject());
+ assertEquals(b1, q.getPredicate()); // it's a bnode!
+ assertEquals(ex3, q.getGraphName().get());
+ assertTrue(q.asJenaQuad().getPredicate().isBlank());
}
@Test
@@ -47,11 +51,12 @@ public class GeneralizedRDFQuadTest {
JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
JenaLiteral lit = jena.createLiteral("Hello");
- JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, lit, ex2, ex3);
- assertEquals(ex1, t.getSubject());
- assertEquals(ex2, t.getObject());
- assertEquals(lit, t.getPredicate()); // it's a literal!
- assertTrue(t.asJenaQuad().getPredicate().isLiteral());
+ JenaGeneralizedQuadLike q = jena.createGeneralizedQuad(ex1, lit, ex2, ex3);
+ assertEquals(ex1, q.getSubject());
+ assertEquals(ex2, q.getObject());
+ assertEquals(lit, q.getPredicate()); // it's a literal!
+ assertEquals(ex3, q.getGraphName().get());
+ assertTrue(q.asJenaQuad().getPredicate().isLiteral());
}
@@ -62,14 +67,32 @@ public class GeneralizedRDFQuadTest {
JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
JenaLiteral lit = jena.createLiteral("Hello");
- JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(lit, ex1, ex2, ex3);
- assertEquals(lit, t.getSubject()); // it's a literal!
- assertEquals(ex1, t.getPredicate());
- assertEquals(ex2, t.getObject());
- assertTrue(t.asJenaQuad().getSubject().isLiteral());
+ JenaGeneralizedQuadLike q = jena.createGeneralizedQuad(lit, ex1, ex2, ex3);
+ assertEquals(lit, q.getSubject()); // it's a literal!
+ assertEquals(ex1, q.getPredicate());
+ assertEquals(ex2, q.getObject());
+ assertEquals(ex3, q.getGraphName().get());
+ assertTrue(q.asJenaQuad().getSubject().isLiteral());
}
+ @Test
+ public void literalSubjectDefaultGraphGen() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ // No need to cast to JenaIRI
+ JenaRDFTerm defG = jena.asRDFTerm(Quad.defaultGraphNodeGenerated);
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedQuadLike q = jena.createGeneralizedQuad(lit, ex1, ex2, defG);
+ assertEquals(lit, q.getSubject()); // it's a literal!
+ assertEquals(ex1, q.getPredicate());
+ assertEquals(ex2, q.getObject());
+ assertTrue(q.asJenaQuad().getSubject().isLiteral());
+ assertFalse(q.getGraphName().isPresent());
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ }
+
@Test
public void literalGraph() throws Exception {
JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
@@ -77,13 +100,12 @@ public class GeneralizedRDFQuadTest {
JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
JenaLiteral lit = jena.createLiteral("Hello");
- JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, ex2, ex3, lit);
- assertEquals(ex1, t.getSubject());
- assertEquals(ex2, t.getPredicate());
- assertEquals(ex3, t.getObject());
- assertTrue(t.getGraphName().isPresent());
- assertEquals(lit, t.getGraphName().get());
- assertTrue(t.asJenaQuad().getGraph().isLiteral());
+ JenaGeneralizedQuadLike q = jena.createGeneralizedQuad(ex1, ex2, ex3, lit);
+ assertEquals(ex1, q.getSubject());
+ assertEquals(ex2, q.getPredicate());
+ assertEquals(ex3, q.getObject());
+ assertEquals(lit, q.getGraphName().get()); // it's a literal!
+ assertTrue(q.asJenaQuad().getGraph().isLiteral());
}
[9/9] commons-rdf git commit: COMMONSRDF-55: Support Jena's
urn:x-arq:DefaultGraph and friends
Posted by st...@apache.org.
COMMONSRDF-55: Support Jena's urn:x-arq:DefaultGraph and friends
Jena uses the IRIs <urn:x-arq:DefaultGraph> and
<urn:x-arq:DefaultGraphNode> to represent the default graph, not null.
This code recognize these specially so they appear in
Commons RDF land as quad.getGraphName() == Optional.empty()
rather than as IRIs (but only if adapted from a JenaIRI or Jena Quad)
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/6d4e333d
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/6d4e333d
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/6d4e333d
Branch: refs/heads/master
Commit: 6d4e333d9398c1f7533a4e20a5768eada97a4ea6
Parents: 5e2430f 7183369
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:40:03 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:40:03 2017 +0000
----------------------------------------------------------------------
.../commons/rdf/api/AbstractDatasetTest.java | 45 ++++++
.../org/apache/commons/rdf/jena/JenaRDF.java | 32 +++++
.../commons/rdf/jena/impl/AbstractQuadLike.java | 70 +++++++++-
.../rdf/jena/impl/InternalJenaFactory.java | 2 +-
.../rdf/jena/DefaultGraphInQuadTest.java | 136 +++++++++++++++++++
.../rdf/jena/GeneralizedRDFQuadTest.java | 127 +++++++++++++++++
.../rdf/jena/GeneralizedRDFTripleTest.java | 85 ++++++++++++
.../apache/commons/rdf/jena/JenaRDFTest.java | 1 -
8 files changed, 491 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
[4/9] commons-rdf git commit: COMMONSRDF-55: JavaDoc of
isDefaultGraph() recognition
Posted by st...@apache.org.
COMMONSRDF-55: JavaDoc of isDefaultGraph() recognition
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/7bbff257
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/7bbff257
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/7bbff257
Branch: refs/heads/master
Commit: 7bbff2573cb1567cd1c414fa9824cbdb8264aa0b
Parents: a383e1f
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:17:20 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:17:20 2017 +0000
----------------------------------------------------------------------
.../org/apache/commons/rdf/jena/JenaRDF.java | 32 ++++++++++++++++++++
1 file changed, 32 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/7bbff257/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
index 92c0adb..d10d16d 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
@@ -151,6 +151,18 @@ public final class JenaRDF implements RDF {
return internalJenaFactory.createTriple(subject, predicate, object);
}
+ /**
+ * {@inheritDoc}
+ * <p>
+ * In addition to supporting a <code>graphName</code> of <code>null</code>
+ * for representing a triple in the <em>default graph</em>, this method also
+ * recognize a {@link JenaIRI} which {@link JenaRDFTerm#asJenaNode()}
+ * represent the default graph according to
+ * {@link org.apache.jena.sparql.core.Quad#isDefaultGraph(Node)}, in which
+ * case the returned JenaQuad will have a {@link Quad#getGraphName()} of
+ * {@link Optional#empty()} rather than the provided IRI.
+ *
+ */
@Override
public JenaQuad createQuad(final BlankNodeOrIRI graphName, final BlankNodeOrIRI subject, final IRI predicate, final RDFTerm object)
throws IllegalArgumentException, UnsupportedOperationException {
@@ -187,6 +199,14 @@ public final class JenaRDF implements RDF {
* The <em>generalized quad</em> supports any {@link RDFTerm} as its
* {@link QuadLike#getSubject()} {@link QuadLike#getPredicate()},
* {@link QuadLike#getObject()} or {@link QuadLike#getObject()}.
+ * <p>
+ * In addition to supporting a <code>graphName</code> of <code>null</code>
+ * for representing a triple in the <em>default graph</em>, this method also
+ * recognize a {@link JenaIRI} which {@link JenaRDFTerm#asJenaNode()}
+ * represent the default graph according to
+ * {@link org.apache.jena.sparql.core.Quad#isDefaultGraph(Node)}, in which
+ * case the returned JenaQuad will have a {@link Quad#getGraphName()} of
+ * {@link Optional#empty()} rather than the provided IRI.
*
* @see #createQuad(BlankNodeOrIRI, BlankNodeOrIRI, IRI, RDFTerm)
* @see #createGeneralizedTriple(RDFTerm, RDFTerm, RDFTerm)
@@ -345,6 +365,10 @@ public final class JenaRDF implements RDF {
* {@link JenaRDF} instance in combination with
* {@link Node#getBlankNodeId()} for the purpose of its
* {@link BlankNode#uniqueReference()}.
+ * <p>
+ * If the provided quad {@link org.apache.jena.sparql.core.Quad#isDefaultGraph()},
+ * the returned {@link JenaQuadLike} has a {@link JenaQuadLike#getGraphName()}
+ * of {@link Optional#empty()}.
*
* @see #asQuad(org.apache.jena.sparql.core.Quad)
* @see #asGeneralizedTriple(org.apache.jena.graph.Triple)
@@ -407,6 +431,10 @@ public final class JenaRDF implements RDF {
* {@link BlankNode} will use a {@link UUID} salt from this {@link JenaRDF}
* instance in combination with {@link Node#getBlankNodeId()} for the
* purpose of its {@link BlankNode#uniqueReference()}.
+ * <p>
+ * If the provided quad {@link org.apache.jena.sparql.core.Quad#isDefaultGraph()},
+ * the returned {@link JenaQuad} has a {@link Quad#getGraphName()}
+ * of {@link Optional#empty()}.
*
* @param quad
* Jena quad
@@ -510,6 +538,10 @@ public final class JenaRDF implements RDF {
* factory's {@link RDF#createBlankNode(String)} will be used, meaning that
* care should be taken if reusing an {@link RDF} instance for multiple
* conversion sessions.
+ * <p>
+ * If the provided quad {@link org.apache.jena.sparql.core.Quad#isDefaultGraph()},
+ * the returned {@link JenaQuadLike} has a {@link JenaQuadLike#getGraphName()}
+ * of {@link Optional#empty()}.
*
* @see #asQuad(org.apache.jena.sparql.core.Quad)
* @see #asGeneralizedQuad(org.apache.jena.sparql.core.Quad)
[5/9] commons-rdf git commit: Test generalized quad creation
Posted by st...@apache.org.
Test generalized quad creation
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/d0ae2d8f
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/d0ae2d8f
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/d0ae2d8f
Branch: refs/heads/master
Commit: d0ae2d8fa6d0ae902319cbe35f93fbefdc0a536e
Parents: 7bbff25
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:26:07 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:27:47 2017 +0000
----------------------------------------------------------------------
.../rdf/jena/GeneralizedRDFQuadTest.java | 90 ++++++++++++++++++++
.../rdf/jena/GeneralizedRDFTripleTest.java | 72 ++++++++++++++++
2 files changed, 162 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/d0ae2d8f/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
new file mode 100644
index 0000000..e5b26a4
--- /dev/null
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
@@ -0,0 +1,90 @@
+/**
+ * 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.commons.rdf.jena;
+
+import static org.junit.Assert.*;
+
+import org.apache.commons.rdf.api.BlankNode;
+import org.junit.Test;
+
+public class GeneralizedRDFQuadTest {
+
+ private JenaRDF jena = new JenaRDF();
+
+ @Test
+ public void bnodeProperty() throws Exception {
+ BlankNode b1 = jena.createBlankNode("b1");
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
+
+ JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, b1, ex2, ex3);
+ assertEquals(ex1, t.getSubject());
+ assertEquals(ex2, t.getObject());
+ assertEquals(b1, t.getPredicate()); // it's a bnode!
+ assertTrue(t.asJenaQuad().getPredicate().isBlank());
+ }
+
+ @Test
+ public void literalPredicate() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, lit, ex2, ex3);
+ assertEquals(ex1, t.getSubject());
+ assertEquals(ex2, t.getObject());
+ assertEquals(lit, t.getPredicate()); // it's a literal!
+ assertTrue(t.asJenaQuad().getPredicate().isLiteral());
+ }
+
+
+ @Test
+ public void literalSubject() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(lit, ex1, ex2, ex3);
+ assertEquals(lit, t.getSubject()); // it's a literal!
+ assertEquals(ex1, t.getPredicate());
+ assertEquals(ex2, t.getObject());
+ assertTrue(t.asJenaQuad().getSubject().isLiteral());
+ }
+
+
+ @Test
+ public void literalGraph() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaIRI ex3 = jena.createIRI("http://example.com/ex3");
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedQuadLike t = jena.createGeneralizedQuad(ex1, ex2, ex3, lit);
+ assertEquals(ex1, t.getSubject());
+ assertEquals(ex2, t.getPredicate());
+ assertEquals(ex3, t.getObject());
+ assertTrue(t.getGraphName().isPresent());
+ assertEquals(lit, t.getGraphName().get());
+ assertTrue(t.asJenaQuad().getGraph().isLiteral());
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/d0ae2d8f/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
new file mode 100644
index 0000000..82ccb81
--- /dev/null
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFTripleTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.commons.rdf.jena;
+
+import static org.junit.Assert.*;
+
+import org.apache.commons.rdf.api.BlankNode;
+import org.junit.Test;
+
+public class GeneralizedRDFTripleTest {
+
+ private JenaRDF jena = new JenaRDF();
+
+ @Test
+ public void bnodeProperty() throws Exception {
+ BlankNode b1 = jena.createBlankNode("b1");
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+
+ JenaGeneralizedTripleLike t = jena.createGeneralizedTriple(ex1, b1, ex2);
+ assertEquals(ex1, t.getSubject());
+ assertEquals(ex2, t.getObject());
+ assertEquals(b1, t.getPredicate()); // it's a bnode!
+ assertTrue(t.asJenaTriple().getPredicate().isBlank());
+ }
+
+ @Test
+ public void literalPredicate() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedTripleLike t = jena.createGeneralizedTriple(ex1, lit, ex2);
+ assertEquals(ex1, t.getSubject());
+ assertEquals(ex2, t.getObject());
+ assertEquals(lit, t.getPredicate()); // it's a literal!
+ assertTrue(t.asJenaTriple().getPredicate().isLiteral());
+ }
+
+
+ @Test
+ public void literalSubject() throws Exception {
+ JenaIRI ex1 = jena.createIRI("http://example.com/ex1");
+ JenaIRI ex2 = jena.createIRI("http://example.com/ex2");
+ JenaLiteral lit = jena.createLiteral("Hello");
+
+ JenaGeneralizedTripleLike t = jena.createGeneralizedTriple(lit, ex1, ex2);
+ assertEquals(lit, t.getSubject()); // it's a literal!
+ assertEquals(ex1, t.getPredicate());
+ assertEquals(ex2, t.getObject());
+ assertTrue(t.asJenaTriple().getSubject().isLiteral());
+ }
+
+
+
+
+}
[3/9] commons-rdf git commit: COMMONSRDF-55: only adapt our "own"
JenaIRI instances
Posted by st...@apache.org.
COMMONSRDF-55: only adapt our "own" JenaIRI instances
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/a383e1f2
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/a383e1f2
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/a383e1f2
Branch: refs/heads/master
Commit: a383e1f2ec18249cab42f73e734cbf742d48fa05
Parents: 98da22a
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Feb 6 15:35:17 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Feb 6 15:35:17 2017 +0000
----------------------------------------------------------------------
.../commons/rdf/jena/impl/AbstractQuadLike.java | 30 +++++++++++++++-
.../rdf/jena/DefaultGraphInQuadTest.java | 36 +++++++++++++-------
2 files changed, 53 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/a383e1f2/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
index 6127ee6..fbe4085 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java
@@ -27,6 +27,7 @@ import org.apache.commons.rdf.api.RDFTerm;
import org.apache.commons.rdf.jena.JenaQuad;
import org.apache.commons.rdf.jena.JenaQuadLike;
import org.apache.commons.rdf.jena.JenaRDF;
+import org.apache.commons.rdf.jena.JenaRDFTerm;
import org.apache.commons.rdf.jena.JenaTriple;
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.core.Quad;
@@ -67,9 +68,35 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
private RDFTerm defaultGraph = internalJenaFactory.createRDFTerm(Quad.defaultGraphIRI, salt);
private RDFTerm defaultGraphNodeGenerated = internalJenaFactory.createRDFTerm(Quad.defaultGraphNodeGenerated, salt);
+ /**
+ * Check if RDFTerm is an IRI that matches the two Jena default graph
+ * constants (Even if they are from another RDF implementation).
+ * <p>
+ * This checker is "softer" than {@link #isNotDefaultGraphJenaNode(RDFTerm)}
+ *
+ * @param graphName
+ * potential graph name IRI or BlankNode
+ * @return <code>true</code> if the RDFTerm does not indicate a default
+ * graph in Jena
+ */
public boolean isNotDefaultGraph(RDFTerm graphName) {
return !(graphName.equals(defaultGraph) || graphName.equals(defaultGraphNodeGenerated));
}
+
+ /**
+ * Check if RDFTerm has an IRI that matches the two Jena default graph
+ * constants (but only if it is an JenaRDFTerm instance)
+ *
+ * @param graphName
+ * potential graph name IRI or BlankNode
+ * @return <code>true</code> if the RDFTerm does not indicate a default
+ * graph in Jena
+ */
+ public boolean isNotDefaultGraphJenaNode(RDFTerm graphName) {
+ return ! (graphName instanceof JenaRDFTerm) ||
+ ! Quad.isDefaultGraph(((JenaRDFTerm)graphName).asJenaNode());
+
+ }
}
private static DefaultGraphChecker defaultGraphChecker = new DefaultGraphChecker();
@@ -86,7 +113,8 @@ abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends
this.subject = Objects.requireNonNull(subject);
this.predicate = Objects.requireNonNull(predicate);
this.object = Objects.requireNonNull(object);
- this.graphName = Objects.requireNonNull(graphName).filter(defaultGraphChecker::isNotDefaultGraph);
+ // Enforce
+ this.graphName = Objects.requireNonNull(graphName).filter(defaultGraphChecker::isNotDefaultGraphJenaNode);
}
AbstractQuadLike(final S subject, final P predicate, final O object) {
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/a383e1f2/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
index 477f460..1665d25 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/DefaultGraphInQuadTest.java
@@ -29,12 +29,13 @@ import org.apache.jena.sparql.core.Quad;
import org.junit.Test;
/**
- * COMMONSRDF-55: Ensure correct handling of
+ * COMMONSRDF-55: Handling of
* Jena's default graph IRI urn:x-arq:DefaultGraph
*/
public class DefaultGraphInQuadTest {
JenaRDF rdf = new JenaRDF();
+ SimpleRDF simpleRDF = new SimpleRDF();
IRI example = rdf.createIRI("http://example.com/");
Node exampleJena = NodeFactory.createURI("http://example.com/");
@@ -50,19 +51,28 @@ public class DefaultGraphInQuadTest {
public void createFromDefaultGraphIRI() throws Exception {
JenaIRI defaultGraph = (JenaIRI) rdf.asRDFTerm(Quad.defaultGraphIRI);
JenaQuad q = rdf.createQuad(defaultGraph, example, example, example);
+ // NOTE: JenaRDF specially recognize this JenaIRI constant,
+ // even if this breaks the SHOULD of RDF.createQuad()
assertTrue(q.asJenaQuad().isDefaultGraph());
assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
assertFalse(q.getGraphName().isPresent());
+ // thus we can't require
+ //assertEquals(defaultGraph, q.getGraphName().get());
}
@Test
public void createFromForeignDefaultGraph() throws Exception {
// What if <urn:x-arq:DefaultGraph> appear in a non-Jena IRI?
- IRI foreignDefaultGraph = new SimpleRDF().createIRI(Quad.defaultGraphIRI.getURI());
+ IRI foreignDefaultGraph = simpleRDF.createIRI(Quad.defaultGraphIRI.getURI());
JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
+ // As the IRI was NOT a JenaIRI we preserve it as-is,
+ // rather than replacing it with Optional.empty()
assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertTrue(q.getGraphName().isPresent()); // INCONSISTENT with above
assertEquals(Quad.defaultGraphIRI, q.asJenaQuad().getGraph());
- assertFalse(q.getGraphName().isPresent());
+ assertEquals(foreignDefaultGraph, q.getGraphName().get());
+ // Note that adding such a quad to a Dataset would still "convert" it to
+ // Optional.empty()
}
@@ -71,23 +81,25 @@ public class DefaultGraphInQuadTest {
// What if <urn:x-arq:DefaultGraphNode> appear as an IRI instance?
IRI foreignDefaultGraph = rdf.createIRI(Quad.defaultGraphNodeGenerated.getURI());
JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
+ // NOTE: JenaRDF specially recognize this JenaIRI constant,
+ // even if this breaks the SHOULD of RDF.createQuad()
assertTrue(q.asJenaQuad().isDefaultGraph());
- assertFalse(q.getGraphName().isPresent());
- // Unfortunately Quad.defaultGraphNodeGenerated is not preserved
- // within JenaQuad
+ assertFalse(q.getGraphName().isPresent()); // CONSISTENT with above
+ // Unfortunately Quad.defaultGraphNodeGenerated is not preserved:
//assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
}
@Test
public void createFromDefaultGraphNodeGeneratedIRIString() throws Exception {
// What if <urn:x-arq:DefaultGraphNode> appear in a non-Jena IRI?
- IRI foreignDefaultGraph = (IRI) rdf.asRDFTerm((Quad.defaultGraphNodeGenerated));
+ IRI foreignDefaultGraph = (IRI) simpleRDF.createIRI(Quad.defaultGraphNodeGenerated.getURI());
JenaQuad q = rdf.createQuad(foreignDefaultGraph, example, example, example);
- assertTrue(q.asJenaQuad().isDefaultGraph());
- assertFalse(q.getGraphName().isPresent());
- // Unfortunately Quad.defaultGraphNodeGenerated is not preserved
- // within JenaQuad
- assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
+ // We'll expect JenaRDF to preserve the graph IRI as-is
+ assertTrue(q.asJenaQuad().isDefaultGraph());
+ assertTrue(q.getGraphName().isPresent()); // INCONSISTENT WITH above
+ // Now Quad.defaultGraphNodeGenerated is preserved at both ends
+ assertEquals(Quad.defaultGraphNodeGenerated, q.asJenaQuad().getGraph());
+ assertEquals(foreignDefaultGraph, q.getGraphName().get());
}
[7/9] commons-rdf git commit: COMMONSRDF-55: Test asGeneralizedQuad()
with default graph
Posted by st...@apache.org.
COMMONSRDF-55: Test asGeneralizedQuad() with default graph
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/8dd1c430
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/8dd1c430
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/8dd1c430
Branch: refs/heads/master
Commit: 8dd1c4302c088abac74855a84b180e85d84f7410
Parents: c90bafe
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Feb 8 14:37:19 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Feb 8 14:37:19 2017 +0000
----------------------------------------------------------------------
.../rdf/jena/GeneralizedRDFQuadTest.java | 21 +++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/8dd1c430/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
----------------------------------------------------------------------
diff --git a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
index 1e183d3..aa81cf5 100644
--- a/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
+++ b/jena/src/test/java/org/apache/commons/rdf/jena/GeneralizedRDFQuadTest.java
@@ -17,11 +17,12 @@
*/
package org.apache.commons.rdf.jena;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.api.RDFTerm;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
import org.apache.jena.sparql.core.Quad;
import org.junit.Test;
@@ -92,6 +93,19 @@ public class GeneralizedRDFQuadTest {
assertTrue(q.asJenaQuad().isDefaultGraph());
}
+ @Test
+ public void asGeneralizedQuad() throws Exception {
+ Node s = NodeFactory.createLiteral("Hello");
+ Node p = NodeFactory.createBlankNode();
+ Node o = NodeFactory.createURI("http://example.com/ex");
+ Node g = Quad.defaultGraphIRI;
+ Quad jq = Quad.create(g, s, p, o);
+ JenaQuadLike<RDFTerm> q = jena.asGeneralizedQuad(jq);
+ assertEquals(jena.createLiteral("Hello"), q.getSubject());
+ assertEquals(jena.asRDFTerm(p), q.getPredicate());
+ assertEquals(jena.createIRI("http://example.com/ex"), q.getObject());
+ assertFalse(q.getGraphName().isPresent());
+ }
@Test
public void literalGraph() throws Exception {
@@ -109,4 +123,5 @@ public class GeneralizedRDFQuadTest {
}
+
}