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

[43/50] incubator-commonsrdf git commit: COMMONSRDF-39 Moved JsonLdParser to experimental package

COMMONSRDF-39 Moved JsonLdParser to experimental package


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

Branch: refs/heads/master
Commit: 1412edd66f24401da13a45de6d06ef68c0e19fa7
Parents: 2510a07
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Sep 28 14:32:07 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Sep 28 14:32:07 2016 +0100

----------------------------------------------------------------------
 .../rdf/jsonldjava/JsonLdParserBuilder.java     | 157 ------------------
 .../jsonldjava/experimental/JsonLdParser.java   | 160 +++++++++++++++++++
 .../jsonldjava/experimental/package-info.java   |  34 ++++
 .../rdf/jsonldjava/JsonLdParserBuilderTest.java |   7 +-
 4 files changed, 198 insertions(+), 160 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1412edd6/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
deleted file mode 100644
index e38af2c..0000000
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilder.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * 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.jsonldjava;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-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.RDFSyntax;
-import org.apache.commons.rdf.simple.AbstractRDFParserBuilder;
-
-import com.github.jsonldjava.core.JsonLdError;
-import com.github.jsonldjava.core.JsonLdOptions;
-import com.github.jsonldjava.core.JsonLdProcessor;
-import com.github.jsonldjava.core.RDFDataset;
-import com.github.jsonldjava.utils.JsonUtils;
-
-public class JsonLdParserBuilder extends AbstractRDFParserBuilder<JsonLdParserBuilder> {
-
-	@Override
-	protected JsonLdRDFTermFactory createRDFTermFactory() {
-		return new JsonLdRDFTermFactory();
-	}
-
-	@Override
-	public JsonLdParserBuilder contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
-		if (rdfSyntax != null && rdfSyntax != RDFSyntax.JSONLD) { 
-			throw new IllegalArgumentException("Unsupported contentType: " + rdfSyntax);
-		}
-		return super.contentType(rdfSyntax);
-	}
-	
-	@Override
-	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);
-		}
-		return c;		
-	}
-
-	private static URL asURL(IRI iri) throws IllegalStateException {
-		try {
-			return new URI(iri.getIRIString()).toURL();
-		} catch (MalformedURLException | URISyntaxException e) {
-			throw new IllegalStateException("Invalid URL: " + iri.getIRIString());
-		}
-	}
-	
-	@Override
-	protected void checkSource() throws IOException {
-		super.checkSource();
-		// Might throw IllegalStateException if invalid
-		getSourceIri().map(JsonLdParserBuilder::asURL);
-	}
-	
-	@Override
-	protected void parseSynchronusly() throws IOException {		
-		Object json = readSource();
-		JsonLdOptions options = new JsonLdOptions();
-		getBase().map(IRI::getIRIString).ifPresent(options::setBase);
-		// TODO: base from readSource() (after redirection and Content-Location header) 
-		// should be forwarded		
-
-		// TODO: Modify JsonLdProcessor to accept the target RDFDataset
-		RDFDataset rdfDataset;
-		try {
-			rdfDataset = (RDFDataset) JsonLdProcessor.toRDF(json, options);
-		} catch (JsonLdError e) {
-			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
-			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 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()
-		
-		if (getSourceInputStream().isPresent()) {
-			return JsonUtils.fromInputStream(getSourceInputStream().get());
-		}
-		if (getSourceIri().isPresent()) {
-			// TODO: propagate @base from content
-			return JsonUtils.fromURL(asURL(getSourceIri().get()), 
-					JsonUtils.getDefaultHttpClient());			
-		}
-		if (getSourceFile().isPresent()) {
-			try (InputStream inputStream = Files.newInputStream(getSourceFile().get())){
-				return JsonUtils.fromInputStream(inputStream);
-			} 			
-		}
-		throw new IllegalStateException("No known source found");
-	}
-
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1412edd6/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/JsonLdParser.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/JsonLdParser.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/JsonLdParser.java
new file mode 100644
index 0000000..102b2d4
--- /dev/null
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/JsonLdParser.java
@@ -0,0 +1,160 @@
+/**
+ * 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.jsonldjava.experimental;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+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.RDFSyntax;
+import org.apache.commons.rdf.jsonldjava.JsonLdDataset;
+import org.apache.commons.rdf.jsonldjava.JsonLdGraph;
+import org.apache.commons.rdf.jsonldjava.JsonLdRDFTermFactory;
+import org.apache.commons.rdf.simple.experimental.AbstractRDFParser;
+
+import com.github.jsonldjava.core.JsonLdError;
+import com.github.jsonldjava.core.JsonLdOptions;
+import com.github.jsonldjava.core.JsonLdProcessor;
+import com.github.jsonldjava.core.RDFDataset;
+import com.github.jsonldjava.utils.JsonUtils;
+
+public class JsonLdParser extends AbstractRDFParser<JsonLdParser> {
+
+	@Override
+	protected JsonLdRDFTermFactory createRDFTermFactory() {
+		return new JsonLdRDFTermFactory();
+	}
+
+	@Override
+	public JsonLdParser contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
+		if (rdfSyntax != null && rdfSyntax != RDFSyntax.JSONLD) { 
+			throw new IllegalArgumentException("Unsupported contentType: " + rdfSyntax);
+		}
+		return super.contentType(rdfSyntax);
+	}
+	
+	@Override
+	public JsonLdParser contentType(String contentType) throws IllegalArgumentException {
+		JsonLdParser c = (JsonLdParser) super.contentType(contentType);
+		if (c.getContentType().filter(Predicate.isEqual(RDFSyntax.JSONLD).negate()).isPresent()) {
+			throw new IllegalArgumentException("Unsupported contentType: " + contentType);
+		}
+		return c;		
+	}
+
+	private static URL asURL(IRI iri) throws IllegalStateException {
+		try {
+			return new URI(iri.getIRIString()).toURL();
+		} catch (MalformedURLException | URISyntaxException e) {
+			throw new IllegalStateException("Invalid URL: " + iri.getIRIString());
+		}
+	}
+	
+	@Override
+	protected void checkSource() throws IOException {
+		super.checkSource();
+		// Might throw IllegalStateException if invalid
+		getSourceIri().map(JsonLdParser::asURL);
+	}
+	
+	@Override
+	protected void parseSynchronusly() throws IOException {		
+		Object json = readSource();
+		JsonLdOptions options = new JsonLdOptions();
+		getBase().map(IRI::getIRIString).ifPresent(options::setBase);
+		// TODO: base from readSource() (after redirection and Content-Location header) 
+		// should be forwarded		
+
+		// TODO: Modify JsonLdProcessor to accept the target RDFDataset
+		RDFDataset rdfDataset;
+		try {
+			rdfDataset = (RDFDataset) JsonLdProcessor.toRDF(json, options);
+		} catch (JsonLdError e) {
+			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
+			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 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()
+		
+		if (getSourceInputStream().isPresent()) {
+			return JsonUtils.fromInputStream(getSourceInputStream().get());
+		}
+		if (getSourceIri().isPresent()) {
+			// TODO: propagate @base from content
+			return JsonUtils.fromURL(asURL(getSourceIri().get()), 
+					JsonUtils.getDefaultHttpClient());			
+		}
+		if (getSourceFile().isPresent()) {
+			try (InputStream inputStream = Files.newInputStream(getSourceFile().get())){
+				return JsonUtils.fromInputStream(inputStream);
+			} 			
+		}
+		throw new IllegalStateException("No known source found");
+	}
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1412edd6/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/package-info.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/package-info.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/package-info.java
new file mode 100644
index 0000000..fbd595e
--- /dev/null
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/experimental/package-info.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/**
+ * Experimental Commons RDF RDF4J implementations.
+ * <p>
+ * Classes in this package should be considered <strong>at
+ * risk</strong>; they might change or be removed in the next minor update of
+ * Commons RDF.
+ * <p>
+ * When a class has stabilized, it will move to the
+ * {@link org.apache.commons.rdf.rdf4j} package.
+ * <p>
+ * <ul>
+ * <li>{@link RDF4JParser} - an RDF4J-backed
+ * implementations of 
+ * {@link org.apache.commons.rdf.api.experimental.RDFParser}.</li>
+ * </ul>
+ */
+package org.apache.commons.rdf.jsonldjava.experimental;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1412edd6/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilderTest.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilderTest.java b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilderTest.java
index 37fa560..4d846ee 100644
--- a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilderTest.java
+++ b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdParserBuilderTest.java
@@ -32,6 +32,7 @@ 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.RDFSyntax;
+import org.apache.commons.rdf.jsonldjava.experimental.JsonLdParser;
 import org.apache.commons.rdf.simple.Types;
 import org.junit.Test;
 
@@ -57,7 +58,7 @@ public class JsonLdParserBuilderTest {
 		assertNotNull("Test resource not found: " + TEST_JSONLD, url);
 		IRI iri = factory.createIRI(url.toString());
 		Graph g = factory.createGraph();
-		new JsonLdParserBuilder()
+		new JsonLdParser()
 				.contentType(RDFSyntax.JSONLD)
 				.source(iri)				
 				.target(g)
@@ -75,7 +76,7 @@ public class JsonLdParserBuilderTest {
 			Files.copy(is, path, StandardCopyOption.REPLACE_EXISTING);
 		}
 		Graph g = factory.createGraph();
-		new JsonLdParserBuilder()
+		new JsonLdParser()
 				.contentType(RDFSyntax.JSONLD)
 				.source(path)
 				.target(g)
@@ -89,7 +90,7 @@ public class JsonLdParserBuilderTest {
 		Graph g = factory.createGraph();
 		try (InputStream is = getClass().getResourceAsStream(TEST_JSONLD)) {
 			assertNotNull("Test resource not found: " + TEST_JSONLD, is);	
-			new JsonLdParserBuilder()
+			new JsonLdParser()
 					.base("http://example.com/base/")
 					.contentType(RDFSyntax.JSONLD).source(is)
 					.target(g)