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:33 UTC

[37/50] incubator-commonsrdf git commit: Updated for latest RDFPArserBuilder

Updated for latest RDFPArserBuilder


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

Branch: refs/heads/master
Commit: 3d63a0e0fdd50843c342e516514a528bc3316874
Parents: 7010541
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Sep 9 17:14:26 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Sep 9 17:14:26 2016 +0100

----------------------------------------------------------------------
 .../rdf/jsonldjava/JsonLdParserBuilder.java     | 66 ++++++++++++++------
 .../rdf/jsonldjava/JsonLdRDFTermFactory.java    |  2 +-
 2 files changed, 47 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/3d63a0e0/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java
index d609aa8..e38af2c 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java
@@ -26,11 +26,10 @@ import java.net.URL;
 import java.nio.file.Files;
 import java.util.function.Predicate;
 
+import org.apache.commons.rdf.api.Dataset;
 import org.apache.commons.rdf.api.Graph;
 import org.apache.commons.rdf.api.IRI;
-import org.apache.commons.rdf.api.RDFParserBuilder;
 import org.apache.commons.rdf.api.RDFSyntax;
-import org.apache.commons.rdf.api.RDFTermFactory;
 import org.apache.commons.rdf.simple.AbstractRDFParserBuilder;
 
 import com.github.jsonldjava.core.JsonLdError;
@@ -39,15 +38,15 @@ import com.github.jsonldjava.core.JsonLdProcessor;
 import com.github.jsonldjava.core.RDFDataset;
 import com.github.jsonldjava.utils.JsonUtils;
 
-public class JsonLdParserBuilder extends AbstractRDFParserBuilder {
+public class JsonLdParserBuilder extends AbstractRDFParserBuilder<JsonLdParserBuilder> {
 
 	@Override
-	protected RDFTermFactory createRDFTermFactory() {
+	protected JsonLdRDFTermFactory createRDFTermFactory() {
 		return new JsonLdRDFTermFactory();
 	}
 
 	@Override
-	public RDFParserBuilder contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
+	public JsonLdParserBuilder contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
 		if (rdfSyntax != null && rdfSyntax != RDFSyntax.JSONLD) { 
 			throw new IllegalArgumentException("Unsupported contentType: " + rdfSyntax);
 		}
@@ -55,7 +54,7 @@ public class JsonLdParserBuilder extends AbstractRDFParserBuilder {
 	}
 	
 	@Override
-	public RDFParserBuilder contentType(String contentType) throws IllegalArgumentException {
+	public JsonLdParserBuilder contentType(String contentType) throws IllegalArgumentException {
 		JsonLdParserBuilder c = (JsonLdParserBuilder) super.contentType(contentType);
 		if (c.getContentType().filter(Predicate.isEqual(RDFSyntax.JSONLD).negate()).isPresent()) {
 			throw new IllegalArgumentException("Unsupported contentType: " + contentType);
@@ -79,7 +78,7 @@ public class JsonLdParserBuilder extends AbstractRDFParserBuilder {
 	}
 	
 	@Override
-	protected void parseSynchronusly() throws IOException, RDFParseException {		
+	protected void parseSynchronusly() throws IOException {		
 		Object json = readSource();
 		JsonLdOptions options = new JsonLdOptions();
 		getBase().map(IRI::getIRIString).ifPresent(options::setBase);
@@ -91,23 +90,50 @@ public class JsonLdParserBuilder extends AbstractRDFParserBuilder {
 		try {
 			rdfDataset = (RDFDataset) JsonLdProcessor.toRDF(json, options);
 		} catch (JsonLdError e) {
-			throw new RDFParseException(e);
-		}		
-		Graph intoGraph = getIntoGraph().get();
-		if (intoGraph instanceof JsonLdGraph && ! intoGraph.contains(null, null, null)) {
-			// Empty graph, we can just move over the map content directly:
-			JsonLdGraph jsonLdGraph = (JsonLdGraph) intoGraph;
-			jsonLdGraph.getRdfDataSet().putAll(rdfDataset);				
-		} else {
+			throw new IOException("Could not parse Json-LD", e);
+		}
+		if (getTargetGraph().isPresent()) {		
+			Graph intoGraph = getTargetGraph().get();
+			if (intoGraph instanceof JsonLdGraph && ! intoGraph.contains(null, null, null)) {
+				// Empty graph, we can just move over the map content directly:
+				JsonLdGraph jsonLdGraph = (JsonLdGraph) intoGraph;
+				jsonLdGraph.getRdfDataSet().putAll(rdfDataset);
+				return;
+				// otherwise we have to merge as normal
+			} 			
 			// TODO: Modify JsonLdProcessor to have an actual triple callback
-			try (JsonLdGraph parsedGraph = new JsonLdGraph(rdfDataset)) {
-				// sequential() as we don't know if intoGraph is thread safe :-/
-				parsedGraph.stream().sequential().forEach(intoGraph::add);
-			}
+			Graph parsedGraph = getJsonLdRDFTermFactory().asGraph(rdfDataset);			
+			// sequential() as we don't know if destination is thread safe :-/
+			parsedGraph.stream().sequential().forEach(intoGraph::add);
+		} else if (getTargetDataset().isPresent()) {
+			Dataset intoDataset = getTargetDataset().get();
+			if (intoDataset instanceof JsonLdDataset && 
+					! intoDataset.contains(null, null, null, null)) {				
+				JsonLdDataset jsonLdDataset = (JsonLdDataset) intoDataset;
+				// Empty - we can just do a brave replace!
+				jsonLdDataset.getRdfDataSet().putAll(rdfDataset);
+				return;				
+				// otherwise we have to merge.. but also avoid duplicate triples, 
+				// map blank nodes etc, so we'll fall back to normal Dataset appending.
+			}	
+			Dataset fromDataset = getJsonLdRDFTermFactory().asDataset(rdfDataset);
+			// .sequential() as we don't know if destination is thread-safe :-/			
+			fromDataset.stream().sequential().forEach(intoDataset::add);
+		} else {	
+			Dataset fromDataset = getJsonLdRDFTermFactory().asDataset(rdfDataset);
+			// No need for .sequential() here
+			fromDataset.stream().forEach(getTarget());
 		}
 	}
 	
-	private Object readSource() throws IOException, RDFParseException {
+	private JsonLdRDFTermFactory getJsonLdRDFTermFactory() {
+		if (getRdfTermFactory().isPresent() && getRdfTermFactory().get() instanceof JsonLdRDFTermFactory) {
+			return (JsonLdRDFTermFactory) getRdfTermFactory().get();
+		}
+		return createRDFTermFactory();		
+	}
+
+	private Object readSource() throws IOException {
 		// Due to checked IOException we can't easily 
 		// do this with .map and .orElseGet()
 		

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/3d63a0e0/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 fa60213..4a05724 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
@@ -41,7 +41,7 @@ import com.github.jsonldjava.core.RDFDataset.Node;
 
 public final class JsonLdRDFTermFactory implements RDFTermFactory {
 
-	private final String bnodePrefix;
+	final String bnodePrefix;
 
 	public JsonLdRDFTermFactory() {
 		// An "outside Graph" bnodePrefix