You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commonsrdf.apache.org by st...@apache.org on 2016/10/04 01:30:40 UTC

[19/50] incubator-commonsrdf git commit: Hide implementations - expose JsonLd* interfaces

Hide implementations - expose JsonLd* interfaces


Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/80ad999d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/80ad999d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/80ad999d

Branch: refs/heads/rdf4j
Commit: 80ad999d72217d4aeb6375bbe7a78e2427f41df5
Parents: 44031f3
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Sep 8 16:27:45 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Sep 8 16:31:12 2016 +0100

----------------------------------------------------------------------
 .../commons/rdf/jsonldjava/JsonLdBlankNode.java |  64 +++++-----
 .../commons/rdf/jsonldjava/JsonLdIRI.java       |  68 +++++-----
 .../commons/rdf/jsonldjava/JsonLdLiteral.java   | 128 ++++++++++---------
 .../commons/rdf/jsonldjava/JsonLdQuad.java      |  61 +++++----
 .../commons/rdf/jsonldjava/JsonLdQuadLike.java  |  73 ++++++-----
 .../rdf/jsonldjava/JsonLdRDFTermFactory.java    |  42 +++---
 .../commons/rdf/jsonldjava/JsonLdTerm.java      |  26 +++-
 .../commons/rdf/jsonldjava/JsonLdTriple.java    |  49 ++++---
 8 files changed, 281 insertions(+), 230 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
index f93d3b4..e54c894 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
@@ -21,38 +21,42 @@ import org.apache.commons.rdf.api.BlankNode;
 
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-final class JsonLdBlankNode extends JsonLdTerm implements BlankNode {
-	private String blankNodePrefix;
-
-	JsonLdBlankNode(Node node, String blankNodePrefix) {
-		super(node);
-		this.blankNodePrefix = blankNodePrefix;
-		if (! node.isBlankNode()) {
-			throw new IllegalArgumentException("Node is not a BlankNode:" + node);
+public interface JsonLdBlankNode extends JsonLdTerm, BlankNode {
+	
+	final class JsonLdBlankNodeImpl extends JsonLdTermImpl implements JsonLdBlankNode {
+		private String blankNodePrefix;
+	
+		JsonLdBlankNodeImpl(Node node, String blankNodePrefix) {
+			super(node);
+			this.blankNodePrefix = blankNodePrefix;
+			if (! node.isBlankNode()) {
+				throw new IllegalArgumentException("Node is not a BlankNode:" + node);
+			}
 		}
-	}
-
-	@Override
-	public String ntriplesString() {
-		return node.getValue();
-	}
-
-	@Override
-	public String uniqueReference() {					
-		return blankNodePrefix + node.getValue();
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (! ( obj instanceof BlankNode)) {
-			return false;
+	
+		@Override
+		public String ntriplesString() {
+			return node.getValue();
+		}
+	
+		@Override
+		public String uniqueReference() {					
+			return blankNodePrefix + node.getValue();
+		}
+	
+		@Override
+		public boolean equals(Object obj) {
+			if (! ( obj instanceof BlankNode)) {
+				return false;
+			}
+			BlankNode other = (BlankNode) obj;
+			return uniqueReference().equals(other.uniqueReference());
+		}
+	
+		@Override
+		public int hashCode() {
+			return uniqueReference().hashCode();
 		}
-		BlankNode other = (BlankNode) obj;
-		return uniqueReference().equals(other.uniqueReference());
 	}
 
-	@Override
-	public int hashCode() {
-		return uniqueReference().hashCode();
-	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
index e21f55c..aac13e6 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
@@ -22,40 +22,44 @@ import org.apache.commons.rdf.api.IRI;
 import com.github.jsonldjava.core.RDFDataset;
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-final class JsonLdIRI extends JsonLdTerm implements IRI {
+public interface JsonLdIRI extends JsonLdTerm, IRI {
 
-	JsonLdIRI(Node node) {
-		super(node);
-		if (! node.isIRI()) {
-			throw new IllegalArgumentException("Node is not an IRI:" + node);
+	final class JsonLdIRIImpl extends JsonLdTermImpl implements JsonLdIRI {
+	
+		JsonLdIRIImpl(Node node) {
+			super(node);
+			if (! node.isIRI()) {
+				throw new IllegalArgumentException("Node is not an IRI:" + node);
+			}
+		}
+	
+		JsonLdIRIImpl(String iri) {
+			super(new RDFDataset.IRI(iri));
+		}
+	
+		@Override
+		public String ntriplesString() {
+			return "<" + node.getValue() + ">";
+		}
+	
+		@Override
+		public String getIRIString() {
+			return node.getValue();
+		}
+	
+		@Override
+		public int hashCode() {
+			return node.getValue().hashCode();
+		}
+	
+		@Override
+		public boolean equals(Object obj) {
+			if (! (obj instanceof IRI)) {
+				return false;
+			} 
+			IRI other = (IRI) obj;
+			return node.getValue().equals(other.getIRIString());
 		}
 	}
 
-	public JsonLdIRI(String iri) {
-		super(new RDFDataset.IRI(iri));
-	}
-
-	@Override
-	public String ntriplesString() {
-		return "<" + node.getValue() + ">";
-	}
-
-	@Override
-	public String getIRIString() {
-		return node.getValue();
-	}
-
-	@Override
-	public int hashCode() {
-		return node.getValue().hashCode();
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (! (obj instanceof IRI)) {
-			return false;
-		} 
-		IRI other = (IRI) obj;
-		return node.getValue().equals(other.getIRIString());
-	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
index e492486..025128e 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
@@ -26,72 +26,74 @@ import org.apache.commons.rdf.simple.Types;
 
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-public class JsonLdLiteral extends JsonLdTerm implements Literal {
-
-	JsonLdLiteral(Node node) {
-		super(node);
-		if (! node.isLiteral()) {
-			throw new IllegalArgumentException("Node is not a Literal:" + node);
+public interface JsonLdLiteral extends JsonLdTerm, Literal {
+	
+	class JsonLdLiteralImpl extends JsonLdTermImpl implements JsonLdLiteral {
+	
+		JsonLdLiteralImpl(Node node) {
+			super(node);
+			if (! node.isLiteral()) {
+				throw new IllegalArgumentException("Node is not a Literal:" + node);
+			}
 		}
-	}
-
-	@Override
-	public String ntriplesString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append('"');
-        // Escape special characters
-        sb.append(getLexicalForm().replace("\\", "\\\\"). // escaped to \\
-                replace("\"", "\\\""). // escaped to \"
-                replace("\r", "\\r"). // escaped to \r
-                replace("\n", "\\n")); // escaped to \n
-        sb.append('"');
-
-        if (getLanguageTag().isPresent()) {
-            sb.append("@");
-            sb.append(getLanguageTag().get());
-        } else if (!getDatatype().equals(Types.XSD_STRING)) {
-            sb.append("^^");
-            sb.append(getDatatype().ntriplesString());
-        }
-        return sb.toString();
-    }
-
-	@Override
-	public String getLexicalForm() {
-		return node.getValue();
-	}
-
-	@Override
-	public IRI getDatatype() {
-		return new JsonLdIRI(node.getDatatype());
-	}
-
-	@Override
-	public Optional<String> getLanguageTag() {
-		return Optional.ofNullable(node.getLanguage());
-	}
-
-	@Override
-	public int hashCode() {
-		// Should be the same as 
-		// Objects.hash(getLexicalForm(), getDatatype(), getLanguageTag());
-		return Objects.hash(node.getValue(), node.getDatatype(), node.getLanguage());
-	}
 	
-	@Override
-	public boolean equals(Object obj) {
-		if (obj instanceof JsonLdLiteral) {
-			JsonLdLiteral other = (JsonLdLiteral) obj;
-			return asNode().compareTo(other.asNode()) == 0;
+		@Override
+		public String ntriplesString() {
+	        StringBuilder sb = new StringBuilder();
+	        sb.append('"');
+	        // Escape special characters
+	        sb.append(getLexicalForm().replace("\\", "\\\\"). // escaped to \\
+	                replace("\"", "\\\""). // escaped to \"
+	                replace("\r", "\\r"). // escaped to \r
+	                replace("\n", "\\n")); // escaped to \n
+	        sb.append('"');
+	
+	        if (getLanguageTag().isPresent()) {
+	            sb.append("@");
+	            sb.append(getLanguageTag().get());
+	        } else if (!getDatatype().equals(Types.XSD_STRING)) {
+	            sb.append("^^");
+	            sb.append(getDatatype().ntriplesString());
+	        }
+	        return sb.toString();
+	    }
+	
+		@Override
+		public String getLexicalForm() {
+			return node.getValue();
 		}
-		if (obj instanceof Literal) {
-			Literal other = (Literal) obj;
-			return getLexicalForm().equals(other.getLexicalForm()) &&
-					getDatatype().equals(other.getDatatype()) &&
-					getLanguageTag().equals(other.getLanguageTag());
+	
+		@Override
+		public IRI getDatatype() {
+			return new JsonLdIRI.JsonLdIRIImpl(node.getDatatype());
+		}
+	
+		@Override
+		public Optional<String> getLanguageTag() {
+			return Optional.ofNullable(node.getLanguage());
+		}
+	
+		@Override
+		public int hashCode() {
+			// Should be the same as 
+			// Objects.hash(getLexicalForm(), getDatatype(), getLanguageTag());
+			return Objects.hash(node.getValue(), node.getDatatype(), node.getLanguage());
 		}
-		return false;
 		
+		@Override
+		public boolean equals(Object obj) {
+			if (obj instanceof JsonLdLiteral) {
+				JsonLdLiteral other = (JsonLdLiteral) obj;
+				return asNode().compareTo(other.asNode()) == 0;
+			}
+			if (obj instanceof Literal) {
+				Literal other = (Literal) obj;
+				return getLexicalForm().equals(other.getLexicalForm()) &&
+						getDatatype().equals(other.getDatatype()) &&
+						getLanguageTag().equals(other.getLanguageTag());
+			}
+			return false;
+			
+		}	
 	}
-	
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuad.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuad.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuad.java
index ce2cb09..524f43c 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuad.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuad.java
@@ -21,34 +21,45 @@ import java.util.Objects;
 
 import org.apache.commons.rdf.api.BlankNodeOrIRI;
 import org.apache.commons.rdf.api.IRI;
-import org.apache.commons.rdf.api.Quad;
 import org.apache.commons.rdf.api.RDFTerm;
+// Note: To avoid confusion - don't import either Quad
+import org.apache.commons.rdf.jsonldjava.JsonLdQuadLike.JsonLdQuadLikeImpl;
 
-final class JsonLdQuad	extends JsonLdQuadLike<BlankNodeOrIRI,IRI,RDFTerm,BlankNodeOrIRI> 
-	implements org.apache.commons.rdf.api.Quad {
-	
-	JsonLdQuad(com.github.jsonldjava.core.RDFDataset.Quad quad, String blankNodePrefix) {
-		super(quad, blankNodePrefix);			
-	}
+public interface JsonLdQuad extends org.apache.commons.rdf.api.Quad {
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
+	/**
+	 * Return the underlying JsonLD {@link com.github.jsonldjava.core.RDFDataset.Quad}
+	 * 
+	 * @return The JsonLD {@link com.github.jsonldjava.core.RDFDataset.Quad}
+	 */
+	public com.github.jsonldjava.core.RDFDataset.Quad asJsonLdQuad();
+	
+	final class JsonLdQuadImpl extends JsonLdQuadLikeImpl<BlankNodeOrIRI,IRI,RDFTerm,BlankNodeOrIRI> 
+		implements JsonLdQuad {
+		
+		JsonLdQuadImpl(com.github.jsonldjava.core.RDFDataset.Quad quad, String blankNodePrefix) {
+			super(quad, blankNodePrefix);			
 		}
-		if (! (obj instanceof Quad)) {
-			return false;
+	
+		@Override
+		public boolean equals(Object obj) {
+			if (obj == this) {
+				return true;
+			}
+			if (! (obj instanceof org.apache.commons.rdf.api.Quad)) {
+				return false;
+			}
+			org.apache.commons.rdf.api.Quad other = (org.apache.commons.rdf.api.Quad) obj;
+			return getGraphName().equals(other.getGraphName()) &&
+					getSubject().equals(other.getSubject()) && 
+					getPredicate().equals(other.getPredicate()) && 
+					getObject().equals(other.getObject());
 		}
-		Quad other = (Quad) obj;
-		return getGraphName().equals(other.getGraphName()) &&
-				getSubject().equals(other.getSubject()) && 
-				getPredicate().equals(other.getPredicate()) && 
-				getObject().equals(other.getObject());
-	}
-
-	@Override
-	public int hashCode() {
-		return Objects.hash(getGraphName(), getSubject(), getPredicate(), getObject());
-	}
-
+	
+		@Override
+		public int hashCode() {
+			return Objects.hash(getGraphName(), getSubject(), getPredicate(), getObject());
+		}	
+	}	
+		
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuadLike.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuadLike.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuadLike.java
index 6290812..753e332 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuadLike.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdQuadLike.java
@@ -24,41 +24,50 @@ import org.apache.commons.rdf.api.RDFTerm;
 
 import com.github.jsonldjava.core.RDFDataset.Quad;
 
-class JsonLdQuadLike<S extends RDFTerm, P extends RDFTerm, O extends RDFTerm, G extends RDFTerm> implements QuadLike<S,P,O,G> {
+public interface JsonLdQuadLike<S extends RDFTerm, P extends RDFTerm, O extends RDFTerm, G extends RDFTerm> extends QuadLike<S,P,O,G> {
 	
-	private final Quad quad;
-	private String blankNodePrefix;
-
-	private static JsonLdRDFTermFactory rdfTermFactory = new JsonLdRDFTermFactory();
+	public Quad asJsonLdQuad();
 	
-	JsonLdQuadLike(Quad jsonldQuad, String blankNodePrefix) {
-		this.quad = jsonldQuad;
-		this.blankNodePrefix = blankNodePrefix;			
-	}
-
-	@SuppressWarnings("unchecked")	
-	@Override
-	public Optional<G> getGraphName() {
-		G g = (G) rdfTermFactory.asTerm(quad.getGraph(), blankNodePrefix);
-		return Optional.ofNullable(g);
-	}
+	class JsonLdQuadLikeImpl<S extends RDFTerm, P extends RDFTerm, O extends RDFTerm, G extends RDFTerm> implements JsonLdQuadLike<S,P,O,G> {
+		
+		private static JsonLdRDFTermFactory rdfTermFactory = new JsonLdRDFTermFactory();
+		
+		private final Quad quad;
+		private String blankNodePrefix;
+		
+		JsonLdQuadLikeImpl(Quad jsonldQuad, String blankNodePrefix) {
+			this.quad = jsonldQuad;
+			this.blankNodePrefix = blankNodePrefix;			
+		}
 	
-	@SuppressWarnings("unchecked")
-	@Override
-	public S getSubject() {
-		return (S) rdfTermFactory.asTerm(quad.getSubject(), blankNodePrefix);
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public P getPredicate() {
-		return (P) rdfTermFactory.asTerm(quad.getPredicate(), blankNodePrefix);
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public O getObject() {
-		return (O) rdfTermFactory.asTerm(quad.getObject(), blankNodePrefix);
+		@SuppressWarnings("unchecked")	
+		@Override
+		public Optional<G> getGraphName() {
+			G g = (G) rdfTermFactory.asTerm(quad.getGraph(), blankNodePrefix);
+			return Optional.ofNullable(g);
+		}
+		
+		@SuppressWarnings("unchecked")
+		@Override
+		public S getSubject() {
+			return (S) rdfTermFactory.asTerm(quad.getSubject(), blankNodePrefix);
+		}
+	
+		@SuppressWarnings("unchecked")
+		@Override
+		public P getPredicate() {
+			return (P) rdfTermFactory.asTerm(quad.getPredicate(), blankNodePrefix);
+		}
+	
+		@SuppressWarnings("unchecked")
+		@Override
+		public O getObject() {
+			return (O) rdfTermFactory.asTerm(quad.getObject(), blankNodePrefix);
+		}
+	
+		public Quad asJsonLdQuad() {
+			return quad;
+		}
 	}
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java
index f57eb86..5ac360a 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java
@@ -24,11 +24,9 @@ import org.apache.commons.rdf.api.BlankNodeOrIRI;
 import org.apache.commons.rdf.api.Graph;
 import org.apache.commons.rdf.api.IRI;
 import org.apache.commons.rdf.api.Literal;
-import org.apache.commons.rdf.api.Quad;
 import org.apache.commons.rdf.api.QuadLike;
 import org.apache.commons.rdf.api.RDFTerm;
 import org.apache.commons.rdf.api.RDFTermFactory;
-import org.apache.commons.rdf.api.Triple;
 import org.apache.commons.rdf.api.TripleLike;
 import org.apache.commons.rdf.simple.Types;
 
@@ -54,44 +52,44 @@ final class JsonLdRDFTermFactory implements RDFTermFactory {
 	}
 	
 	@Override
-	public IRI createIRI(String iri) {
-		return new JsonLdIRI(iri);
+	public JsonLdIRI createIRI(String iri) {
+		return new JsonLdIRI.JsonLdIRIImpl(iri);
 	}
 	
 	@Override
-	public BlankNode createBlankNode() {
+	public JsonLdBlankNode createBlankNode() {
 		String id = "_:" + UUID.randomUUID().toString();
-		return new JsonLdBlankNode(new RDFDataset.BlankNode(id), bnodePrefix);
+		return new JsonLdBlankNode.JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
 	}
 	
 	@Override
-	public BlankNode createBlankNode(String name) {
+	public JsonLdBlankNode createBlankNode(String name) {
 		String id = "_:" + name;
 		// TODO: Check if name is valid JSON-LD BlankNode identifier
-		return new JsonLdBlankNode(new RDFDataset.BlankNode(id), bnodePrefix);
+		return new JsonLdBlankNode.JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
 	}
 	
 	@Override
-	public Triple createTriple(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
-		return new JsonLdTriple(asJsonLdQuad(subject, predicate, object), bnodePrefix);
+	public JsonLdTriple createTriple(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+		return new JsonLdTriple.JsonLdTripleImpl(asJsonLdQuad(subject, predicate, object), bnodePrefix);
 	}
 	
 	@Override
-	public Quad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
+	public JsonLdQuad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
 			throws IllegalArgumentException, UnsupportedOperationException {
-		return new JsonLdQuad(asJsonLdQuad(graphName, subject, predicate, object), bnodePrefix);
+		return new JsonLdQuad.JsonLdQuadImpl(asJsonLdQuad(graphName, subject, predicate, object), bnodePrefix);
 	}
 	
 	@Override
-	public Literal createLiteral(String literal) {		
-		return new JsonLdLiteral(new RDFDataset.Literal(literal, null, null));
+	public JsonLdLiteral createLiteral(String literal) {		
+		return new JsonLdLiteral.JsonLdLiteralImpl(new RDFDataset.Literal(literal, null, null));
 	}
 	@Override
-	public Literal createLiteral(String literal, IRI dataType) {
-		return new JsonLdLiteral(new RDFDataset.Literal(literal, dataType.getIRIString(), null));	}
+	public JsonLdLiteral createLiteral(String literal, IRI dataType) {
+		return new JsonLdLiteral.JsonLdLiteralImpl(new RDFDataset.Literal(literal, dataType.getIRIString(), null));	}
 	@Override
-	public Literal createLiteral(String literal, String language) {
-		return new JsonLdLiteral(new RDFDataset.Literal(literal, Types.RDF_LANGSTRING.getIRIString(), language));		
+	public JsonLdLiteral createLiteral(String literal, String language) {
+		return new JsonLdLiteral.JsonLdLiteralImpl(new RDFDataset.Literal(literal, Types.RDF_LANGSTRING.getIRIString(), language));		
 	}
 
 
@@ -131,7 +129,7 @@ final class JsonLdRDFTermFactory implements RDFTermFactory {
 		return new RDFDataset.Quad(asJsonLdNode(subject), asJsonLdNode(predicate), asJsonLdNode(object), graph);
 	}
 	
-	@SuppressWarnings("rawtypes")
+	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public RDFDataset.Quad asJsonLdQuad(TripleLike tripleOrQuad) {
 		RDFTerm g = null;	
 		if (tripleOrQuad instanceof QuadLike) {
@@ -141,14 +139,14 @@ final class JsonLdRDFTermFactory implements RDFTermFactory {
 		return asJsonLdQuad(g, tripleOrQuad.getSubject(), tripleOrQuad.getPredicate(), tripleOrQuad.getObject());
 	}
 	
-	RDFTerm asTerm(final Node node, String blankNodePrefix) {	
+	JsonLdTerm asTerm(final Node node, String blankNodePrefix) {	
 		if (node == null) {
 			return null; // e.g. default graph
 		}
 		if (node.isIRI()) {
-			return new JsonLdIRI(node);
+			return new JsonLdIRI.JsonLdIRIImpl(node);
 		} else if (node.isBlankNode()) {
-			return new JsonLdBlankNode(node, blankNodePrefix);
+			return new JsonLdBlankNode.JsonLdBlankNodeImpl(node, blankNodePrefix);
 		} else if (node.isLiteral()) {
 			// TODO: Our own JsonLdLiteral
 			if (node.getLanguage() != null) {

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
index 39ef1a6..80a7b56 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
@@ -17,15 +17,27 @@
  */
 package org.apache.commons.rdf.jsonldjava;
 
+import org.apache.commons.rdf.api.RDFTerm;
+
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-public abstract class JsonLdTerm {
-	final Node node;
-	JsonLdTerm(Node node) {
-		this.node = node;
-	}
-	public Node asNode() {
-		return node;
+public interface JsonLdTerm extends RDFTerm {
+	
+	/**
+	 * Return the underlying JsonLd {@link Node}.
+	 *  
+	 * @return JsonLd {@link Node}
+	 */
+	Node asNode();
+	
+	abstract class JsonLdTermImpl implements JsonLdTerm {
+		final Node node;
+		JsonLdTermImpl(Node node) {
+			this.node = node;
+		}
+		public Node asNode() {
+			return node;
+		}
 	}
 	
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/80ad999d/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTriple.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTriple.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTriple.java
index a14dbb4..18e271c 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTriple.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTriple.java
@@ -23,29 +23,40 @@ import org.apache.commons.rdf.api.BlankNodeOrIRI;
 import org.apache.commons.rdf.api.IRI;
 import org.apache.commons.rdf.api.RDFTerm;
 import org.apache.commons.rdf.api.Triple;
+import org.apache.commons.rdf.jsonldjava.JsonLdQuadLike.JsonLdQuadLikeImpl;
 
 import com.github.jsonldjava.core.RDFDataset.Quad;
 
-final class JsonLdTriple extends JsonLdQuadLike<BlankNodeOrIRI, IRI, RDFTerm, RDFTerm>
-	implements Triple {
-	
-	JsonLdTriple(Quad quad, String blankNodePrefix) {
-		super(quad, blankNodePrefix);
-	}
+public interface JsonLdTriple extends Triple {
 
-	@Override
-	public boolean equals(Object obj) {
-		if (! (obj instanceof Triple)) {
-			return false;
-		}
-		Triple other = (Triple) obj;
-		return getSubject().equals(other.getSubject()) && 
-				getPredicate().equals(other.getPredicate()) && 
-				getObject().equals(other.getObject());
-	}
+	/**
+	 * Return the underlying JsonLD {@link com.github.jsonldjava.core.RDFDataset.Quad}
+	 * 
+	 * @return The JsonLD {@link com.github.jsonldjava.core.RDFDataset.Quad}
+	 */
+	public com.github.jsonldjava.core.RDFDataset.Quad asJsonLdQuad();
 
-	@Override
-	public int hashCode() {
-		return Objects.hash(getSubject(), getPredicate(), getObject());
+	final class JsonLdTripleImpl extends JsonLdQuadLikeImpl<BlankNodeOrIRI, IRI, RDFTerm, RDFTerm>
+		implements JsonLdTriple {
+		
+		JsonLdTripleImpl(Quad quad, String blankNodePrefix) {
+			super(quad, blankNodePrefix);
+		}
+	
+		@Override
+		public boolean equals(Object obj) {
+			if (! (obj instanceof Triple)) {
+				return false;
+			}
+			Triple other = (Triple) obj;
+			return getSubject().equals(other.getSubject()) && 
+					getPredicate().equals(other.getPredicate()) && 
+					getObject().equals(other.getObject());
+		}
+	
+		@Override
+		public int hashCode() {
+			return Objects.hash(getSubject(), getPredicate(), getObject());
+		}
 	}
 }
\ No newline at end of file