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/03 16:40:19 UTC

[23/50] incubator-commonsrdf git commit: Graph uses factory

Graph uses factory


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

Branch: refs/heads/master
Commit: dde5abac27983ace5ebbdc1b37c35d65a0df3dc0
Parents: 80ad999
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Sep 8 17:10:31 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Sep 8 17:10:31 2016 +0100

----------------------------------------------------------------------
 .../commons/rdf/jsonldjava/JsonLdGraph.java     | 79 ++++++--------------
 .../rdf/jsonldjava/JsonLdRDFTermFactory.java    |  7 +-
 2 files changed, 30 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/dde5abac/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraph.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraph.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraph.java
index c31ad71..30c13a8 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraph.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraph.java
@@ -49,21 +49,22 @@ public class JsonLdGraph implements Graph {
 	 */
 	private RDFDataset rdfDataSet;
 
-	public RDFDataset getRdfDataSet() {
-		return rdfDataSet;
-	}
-
-	private JsonLdRDFTermFactory rdfTermFactory;
-
 	/**
 	 * If true, include all Quad statements as Triples. If false, 
 	 * only Quads in the default graph (<code>null</code>) are
 	 * included.
 	 */
-	private boolean unionGraph = false;
+	private final boolean unionGraph;
+
+	/**
+	 * Prefix to use in blank node identifiers
+	 */
+	private final String bnodePrefix;
 
+	private JsonLdRDFTermFactory factory;
+	
 	public JsonLdGraph() {
-		this(new RDFDataset(), false);
+		this(new RDFDataset(), false);		
 	}
 	
 	public JsonLdGraph(RDFDataset rdfDataset) {
@@ -73,8 +74,16 @@ public class JsonLdGraph implements Graph {
 	public JsonLdGraph(RDFDataset rdfDataset, boolean unionGraph) {
 		this.rdfDataSet = rdfDataset;	
 		this.unionGraph = unionGraph;
+		this.bnodePrefix = "urn:uuid:" + SALT + "#" +  "g"+ System.identityHashCode(rdfDataSet);
+		this.factory = new JsonLdRDFTermFactory(bnodePrefix);
 	}
 
+	
+	public RDFDataset getRdfDataSet() {
+		return rdfDataSet;
+	}
+
+
 	@Override
 	public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
 		String subjectStr;
@@ -121,7 +130,7 @@ public class JsonLdGraph implements Graph {
 	@Override
 	public void close() {
 		// Drop the memory reference, but don't clear it
-		rdfDataSet = null;		
+		rdfDataSet = null;			
 	}
 	
 	@Override
@@ -134,22 +143,12 @@ public class JsonLdGraph implements Graph {
 		return stream().anyMatch(Predicate.isEqual(triple));
 	}
 
-	public RDFTermFactory getContext() {
-		// Note: This does not need to be synchronized, it's OK 
-		// if you get a few accidental copies as the
-		// same bnodePrefix() is passed to each
-		if (rdfTermFactory == null) {
-			rdfTermFactory = new JsonLdRDFTermFactory(bnodePrefix());
-		}
-		return rdfTermFactory;
-	}
-
 	@Override
 	public Stream<? extends Triple> stream() {
 		if (! unionGraph) {
-			return rdfDataSet.getQuads("@default").parallelStream().map(this::asTriple);
+			return rdfDataSet.getQuads("@default").parallelStream().map(factory::asTriple);
 		}
-		return rdfDataSet.graphNames().parallelStream().map(rdfDataSet::getQuads).flatMap(List<Quad>::parallelStream).map(this::asTriple);
+		return rdfDataSet.graphNames().parallelStream().map(rdfDataSet::getQuads).flatMap(List<Quad>::parallelStream).map(factory::asTriple);
 	}
 
 	@Override
@@ -193,41 +192,11 @@ public class JsonLdGraph implements Graph {
 			return rdfDataSet.graphNames().parallelStream().map(rdfDataSet::getQuads).collect(Collectors.summingLong(List::size));
 		}
 	}
-
-	private Node asJsonLdNode(RDFTerm term) {
-		if (term instanceof IRI) {
-			return new RDFDataset.IRI( ((IRI)term).getIRIString() );
-		}
-		if (term instanceof BlankNode) {
-			
-			String uniqueReference = ((BlankNode)term).uniqueReference();
-			if (uniqueReference.startsWith(bnodePrefix())) {
-				// one of our own
-				// TODO: Retrieve the original BlankNode
-				return new RDFDataset.BlankNode(term.ntriplesString());
-			} 
-			return new RDFDataset.BlankNode( "_:" + uniqueReference );
-		}
-		if (term instanceof Literal) {
-			Literal literal = (Literal) term;
-			return new RDFDataset.Literal(literal.getLexicalForm(), literal.getDatatype().getIRIString(), 
-					literal.getLanguageTag().orElse(null));
-		}
-		throw new IllegalArgumentException("RDFTerm not instanceof IRI, BlankNode or Literal: " + term);
-	}
-
-	private Triple asTriple(final RDFDataset.Quad quad) {
-		return new JsonLdTriple(quad, bnodePrefix());
-	}
-
-	public String bnodePrefix() {
-		return "urn:uuid:" + SALT + "#" +  "g"+ System.identityHashCode(rdfDataSet);
-	}
-
+	
 	private Predicate<? super Quad> quadFilter(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
-		Optional<Node> subjectNode = Optional.ofNullable(subject).map(this::asJsonLdNode);
-		Optional<Node> predicateNode = Optional.ofNullable(predicate).map(this::asJsonLdNode);
-		Optional<Node> objectNode = Optional.ofNullable(object).map(this::asJsonLdNode);
+		Optional<Node> subjectNode = Optional.ofNullable(subject).map(factory::asJsonLdNode);
+		Optional<Node> predicateNode = Optional.ofNullable(predicate).map(factory::asJsonLdNode);
+		Optional<Node> objectNode = Optional.ofNullable(object).map(factory::asJsonLdNode);
 		
 		return q -> {
 		    if (subjectNode.isPresent() && subjectNode.get().compareTo(q.getSubject()) != 0) {

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/dde5abac/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 5ac360a..12ab13d 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
@@ -27,6 +27,7 @@ import org.apache.commons.rdf.api.Literal;
 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;
 
@@ -74,6 +75,10 @@ final class JsonLdRDFTermFactory implements RDFTermFactory {
 		return new JsonLdTriple.JsonLdTripleImpl(asJsonLdQuad(subject, predicate, object), bnodePrefix);
 	}
 	
+	public Triple asTriple(final RDFDataset.Quad quad) {
+		return new JsonLdTriple.JsonLdTripleImpl(quad, bnodePrefix);
+	}
+
 	@Override
 	public JsonLdQuad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
 			throws IllegalArgumentException, UnsupportedOperationException {
@@ -93,7 +98,7 @@ final class JsonLdRDFTermFactory implements RDFTermFactory {
 	}
 
 
-	private Node asJsonLdNode(RDFTerm term) {
+	public Node asJsonLdNode(RDFTerm term) {
 		if (term instanceof JsonLdTerm) {
 			// Return original Node
 			return ((JsonLdTerm)term).asNode();