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/05/04 00:15:53 UTC

[4/9] incubator-commonsrdf git commit: Added RDFTermImplementation

Added RDFTermImplementation


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

Branch: refs/heads/rdf4j
Commit: e4a43bcfa999025e7bd13358ce3ec704450692a2
Parents: 1fb7e72
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Tue May 3 22:43:33 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue May 3 22:43:33 2016 +0100

----------------------------------------------------------------------
 .../commons/rdf/rdf4j/Rdf4JRDFTermFactory.java  | 100 +++++++++++++------
 1 file changed, 72 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/e4a43bcf/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactory.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactory.java b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactory.java
index 550eef9..730c4e8 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactory.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactory.java
@@ -43,10 +43,27 @@ import org.openrdf.model.impl.SimpleValueFactory;
 import org.openrdf.rio.turtle.TurtleUtil;
 
 public class Rdf4JRDFTermFactory implements RDFTermFactory {
+	
+	private abstract class RDFTermImplementation<T extends Value> implements RDFTerm {
+		T value;
+
+		public T asValue() { 
+			return value;
+		}
+		
+		RDFTermImplementation(T value) {
+			this.value = value;			
+		}
+	}
+	
 	private final class GraphImplementation implements org.apache.commons.rdf.api.Graph {
 		
 		private Model model;
 
+		public Model asModel() { 
+			return model;
+		}
+		
 		public GraphImplementation(Model model) {
 			this.model = model;		
 		}
@@ -73,7 +90,10 @@ public class Rdf4JRDFTermFactory implements RDFTermFactory {
 
 		@Override
 		public void remove(Triple triple) { 
-			model.remove(asStatement(triple));				
+			remove(triple.getSubject(), triple.getPredicate(), triple.getObject());
+			
+			// This however fails:
+			// model.remove(asStatement(triple));
 		}
 
 		@Override
@@ -129,6 +149,10 @@ public class Rdf4JRDFTermFactory implements RDFTermFactory {
 			this.statement = statement;
 		}
 
+		public Statement asStatement() { 
+			return statement;
+		}
+		
 		@Override
 		public BlankNodeOrIRI getSubject() {
 			return (BlankNodeOrIRI) asRDFTerm(statement.getSubject());
@@ -143,68 +167,89 @@ public class Rdf4JRDFTermFactory implements RDFTermFactory {
 		public RDFTerm getObject() {
 			return asRDFTerm(statement.getObject());
 		}
+		
+		@Override
+		public boolean equals(Object obj) {
+			if (obj instanceof Triple) {
+				Triple triple = (Triple) obj;
+				return getSubject().equals(triple.getSubject()) &&
+						getPredicate().equals(triple.getPredicate()) && 
+						getObject().equals(triple.getObject());
+			}
+			return false;
+		}
+
+		@Override
+		public int hashCode() {
+			return Objects.hash(getSubject(), getPredicate(), getObject());
+		}
+		
+		@Override
+		public String toString() {
+			return statement.toString();
+		}
 	}
 
-	private final class IRIImplementation implements org.apache.commons.rdf.api.IRI {
-		private org.openrdf.model.IRI iri;
+	private final class IRIImplementation extends RDFTermImplementation<org.openrdf.model.IRI> 
+		implements org.apache.commons.rdf.api.IRI {
 
 		public IRIImplementation(org.openrdf.model.IRI iri) {
-			this.iri = iri;			
+			super(iri);			
 		}
 		@Override
 		public String ntriplesString() {
-			return "<" + iri.toString() +  ">";
+			return "<" + value.toString() +  ">";
 		}
 
 		@Override
 		public String getIRIString() {
-			return iri.toString();
+			return value.toString();
 		}
 
 		@Override
 		public String toString() {
-			return iri.toString();
+			return value.toString();
 		}
 
 		public int hashCode() {
 			// Same definition
-			return iri.hashCode();
+			return value.hashCode();
 		}
 	}
 
-	private final class LiteralImplementation implements org.apache.commons.rdf.api.Literal {
-		
-		private org.openrdf.model.Literal literal;
+	private final class LiteralImplementation 
+		extends RDFTermImplementation<org.openrdf.model.Literal>
+		implements org.apache.commons.rdf.api.Literal {
 
 		public LiteralImplementation(org.openrdf.model.Literal literal) {
-			this.literal = literal;			
+			super(literal);			
 		}
 		@Override
 		public String ntriplesString() {
 			// TODO: Use a more efficient StringBuffer
-			String escaped = QUOTE + TurtleUtil.encodeString(literal.getLabel()) + QUOTE;
-			if (literal.getLanguage().isPresent()) {
-				return escaped + "@" + literal.getLanguage();
+			String escaped = QUOTE + TurtleUtil.encodeString(value.getLabel()) + QUOTE;
+			if (value.getLanguage().isPresent()) {
+				return escaped + "@" + value.getLanguage();
 			}
-			if (literal.getDatatype().equals(Types.XSD_STRING)) { 
+			if (value.getDatatype().equals(Types.XSD_STRING)) { 
 				return escaped;
 			}
-			return escaped + "^^" + literal.getDatatype();
+			return escaped + "^^" + value.getDatatype();
 		}
 
 		@Override
 		public String getLexicalForm() {
-			return literal.getLabel();
+			return value.getLabel();
 		}
 
 		@Override
 		public org.apache.commons.rdf.api.IRI getDatatype() {
-			return (org.apache.commons.rdf.api.IRI) asRDFTerm(literal.getDatatype());
+			return (org.apache.commons.rdf.api.IRI) asRDFTerm(value.getDatatype());
 		}
 
 		@Override
 		public Optional<String> getLanguageTag() {
-			return literal.getLanguage();
+			return value.getLanguage();
 		}
 
 		@Override
@@ -225,26 +270,25 @@ public class Rdf4JRDFTermFactory implements RDFTermFactory {
 		}
 
 		public int hashCode() {
-			return Objects.hash(literal.getLabel(), literal.getDatatype(), literal.getLanguage());
+			return Objects.hash(value.getLabel(), value.getDatatype(), value.getLanguage());
 		}
 	}
 
-	private final class BlankNodeImplementation implements BlankNode {
+	private final class BlankNodeImplementation extends RDFTermImplementation<BNode>
+		implements BlankNode {
 		
-		private BNode bNode;
-
 		public BlankNodeImplementation(BNode bNode) {
-			this.bNode = bNode;			
+			super(bNode);			
 		}
 		
 		@Override
 		public String ntriplesString() {
-			return "_:" + bNode.getID();
+			return "_:" + value.getID();
 		}
 
 		@Override
 		public String uniqueReference() {
-			return salt + bNode.getID();
+			return salt + value.getID();
 		}
 
 		@Override
@@ -363,7 +407,7 @@ public class Rdf4JRDFTermFactory implements RDFTermFactory {
 		throw new IllegalArgumentException("RDFTerm was not an IRI, Literal or BlankNode: " + object.getClass());
 	}
 
-	private org.apache.commons.rdf.api.Graph asRDFTermGraph(Model model) {
+	protected org.apache.commons.rdf.api.Graph asRDFTermGraph(Model model) {
 		return new GraphImplementation(model);
 	}