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/19 08:54:30 UTC
[3/3] incubator-commonsrdf git commit: JenaJLdRDFTermFactory ->
JsonLdFactory
JenaJLdRDFTermFactory -> JsonLdFactory
Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/0bb93696
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/0bb93696
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/0bb93696
Branch: refs/heads/master
Commit: 0bb936968b865c1499d8af1cf3ae4ef46ab9b5bc
Parents: ec8a4ac
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Oct 19 09:51:30 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Oct 19 09:51:30 2016 +0100
----------------------------------------------------------------------
.../commons/rdf/jsonldjava/JsonLdFactory.java | 306 +++++++++++++++++++
.../commons/rdf/jsonldjava/JsonLdGraphLike.java | 8 +-
.../commons/rdf/jsonldjava/JsonLdQuadLike.java | 2 +-
.../rdf/jsonldjava/JsonLdRDFTermFactory.java | 306 -------------------
.../jsonldjava/experimental/JsonLdParser.java | 18 +-
.../commons/rdf/jsonldjava/package-info.java | 2 +-
.../org.apache.commons.rdf.api.RDFTermFactory | 2 +-
.../rdf/jsonldjava/JsonLdFactoryTest.java | 54 ++++
.../commons/rdf/jsonldjava/JsonLdGraphTest.java | 2 +-
.../rdf/jsonldjava/JsonLdParserBuilderTest.java | 2 +-
.../jsonldjava/JsonLdRDFTermFactoryTest.java | 54 ----
src/site/markdown/implementations.md | 4 +-
12 files changed, 380 insertions(+), 380 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdFactory.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdFactory.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdFactory.java
new file mode 100644
index 0000000..a66fd3d
--- /dev/null
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdFactory.java
@@ -0,0 +1,306 @@
+/**
+ * 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.nio.charset.StandardCharsets;
+import java.util.Objects;
+import java.util.UUID;
+
+import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.api.BlankNodeOrIRI;
+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.Literal;
+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.simple.Types;
+
+import com.github.jsonldjava.core.RDFDataset;
+import com.github.jsonldjava.core.RDFDataset.Node;
+
+public final class JsonLdFactory implements RDFTermFactory {
+
+ final String bnodePrefix;
+
+ public JsonLdFactory() {
+ // An "outside Graph" bnodePrefix
+ this("urn:uuid:" + UUID.randomUUID() + "#b");
+ }
+
+ JsonLdFactory(String bnodePrefix) {
+ this.bnodePrefix = Objects.requireNonNull(bnodePrefix);
+ }
+
+ /**
+ * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Dataset}.
+ * <p>
+ * Changes to the Commons RDF {@link Dataset} are reflected in the JsonLd
+ * {@link RDFDataset} and vice versa.
+ *
+ * @see #asGraph(RDFDataset)
+ * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
+ * @return Adapted {@link Dataset}
+ */
+ public JsonLdDataset asDataset(RDFDataset rdfDataSet) {
+ return new JsonLdDatasetImpl(rdfDataSet);
+ }
+
+ /**
+ * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Graph}.
+ * <p>
+ * Only triples in the <em>default graph</em> are included. To retrieve
+ * any other graph, {@link #asDataset(RDFDataset)} together with
+ * {@link Dataset#getGraph(BlankNodeOrIRI)}.
+ * <p>
+ * Changes to the Commons RDF {@link Graph} are reflected in the JsonLd
+ * {@link RDFDataset} and vice versa.
+ *
+ * @see #asDataset(RDFDataset)
+ * @see #asUnionGraph(RDFDataset)
+ * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
+ * @return Adapted {@link Graph} covering the <em>default graph</em>
+ */
+ public JsonLdGraph asGraph(RDFDataset rdfDataSet) {
+ return new JsonLdGraphImpl(rdfDataSet);
+ }
+
+ public Node asJsonLdNode(RDFTerm term) {
+ if (term instanceof JsonLdBlankNode) {
+ JsonLdBlankNode jsonLdBlankNode = (JsonLdBlankNode) term;
+ if (jsonLdBlankNode.uniqueReference().startsWith(bnodePrefix)) {
+ // Only return blank nodes 'as is' if they have the same prefix
+ return jsonLdBlankNode.asJsonLdNode();
+ }
+ } else if (term instanceof JsonLdTerm) {
+ // non-Bnodes can always be return as-is
+ return ((JsonLdTerm) term).asJsonLdNode();
+ }
+ if (term instanceof IRI) {
+ return new RDFDataset.IRI(((IRI) term).getIRIString());
+ }
+ if (term instanceof BlankNode) {
+ String ref = ((BlankNode) term).uniqueReference();
+ if (ref.startsWith(bnodePrefix)) {
+ // one of our own (but no longer a JsonLdBlankNode),
+ // we can recover the label after our unique prefix
+ return new RDFDataset.BlankNode(ref.replace(bnodePrefix, ""));
+ }
+ // The "foreign" unique reference might not be a valid bnode string,
+ // we'll convert to a UUID
+ UUID uuid = UUID.nameUUIDFromBytes(ref.getBytes(StandardCharsets.UTF_8));
+ return new RDFDataset.BlankNode("_:" + uuid);
+ }
+ 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);
+ }
+
+ /**
+ * Adapt a Commons RDF {@link org.apache.commons.rdf.api.Quad} as a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}.
+ *
+ * @param quad Commons RDF {@link org.apache.commons.rdf.api.Quad} to adapt
+ * @return Adapted JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}
+ */
+ public RDFDataset.Quad asJsonLdQuad(org.apache.commons.rdf.api.Quad quad) {
+ BlankNodeOrIRI g = quad.getGraphName().orElse(null);
+ return createJsonLdQuad(g, quad.getSubject(), quad.getPredicate(), quad.getObject());
+ }
+
+ /**
+ * Adapt a Commons RDF {@link Triple} as a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}.
+ *
+ * @param triple Commons RDF {@link Triple} to adapt
+ * @return Adapted JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}
+ */
+ public RDFDataset.Quad asJsonLdQuad(Triple triple) {
+ return createJsonLdQuad(null, triple.getSubject(), triple.getPredicate(), triple.getObject());
+ }
+
+ /**
+ * Adapt a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} as a Commons RDF
+ * {@link org.apache.commons.rdf.api.Quad}.
+ * <p>
+ * The underlying JsonLd quad can be retrieved with
+ * {@link JsonLdQuad#asJsonLdQuad()}.
+ *
+ * @param quad
+ * A JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} to adapt
+ * @return Adapted {@link JsonLdQuad}
+ */
+ public JsonLdQuad asQuad(final RDFDataset.Quad quad) {
+ return new JsonLdQuadImpl(quad, bnodePrefix);
+ }
+
+ /**
+ * Adapt a JsonLd {@link Node} as a Commons RDF {@link RDFTerm}.
+ * <p>
+ * The underlying node can be retrieved with
+ * {@link JsonLdTerm#asJsonLdNode()}.
+ *
+ * @param node
+ * A JsonLd {@link Node} to adapt
+ * @return Adapted {@link JsonLdTerm}
+ */
+ public JsonLdTerm asRDFTerm(final Node node) {
+ return asRDFTerm(node, bnodePrefix);
+ }
+
+ /**
+ * Adapt a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} as a Commons RDF
+ * {@link org.apache.commons.rdf.api.Triple}.
+ * <p>
+ * The underlying JsonLd quad can be retrieved with
+ * {@link JsonLdTriple#asJsonLdQuad()}.
+ *
+ * @param quad
+ * A JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} to adapt
+ * @return Adapted {@link JsonLdTriple}
+ */
+ public JsonLdTriple asTriple(final RDFDataset.Quad quad) {
+ return new JsonLdTripleImpl(quad, bnodePrefix);
+ }
+
+ /**
+ * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Graph}.
+ * <p>
+ * The graph can be seen as a <em>union graph</em> as it will contains all the
+ * triples across all the graphs of the underlying {@link RDFDataset}.
+ * <p>
+ * Note that some triple operations on a union graph
+ * can be inefficient as they need to remove any duplicate
+ * triples across the graphs.
+ * <p>
+ * Changes to the Commons RDF {@link Graph} are reflected in the JsonLd
+ * {@link RDFDataset} and vice versa. Triples removed from the graph are
+ * removed from <strong>all</strong> graphs, while triples added
+ * are added to the <em>default graph</em>.
+ *
+ * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
+ * @return Adapted {@link Dataset}
+ */
+ public JsonLdUnionGraph asUnionGraph(RDFDataset rdfDataSet) {
+ return new JsonLdUnionGraphImpl(rdfDataSet);
+ }
+
+ @Override
+ public JsonLdBlankNode createBlankNode() {
+ String id = "_:" + UUID.randomUUID().toString();
+ return new JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
+ }
+
+ @Override
+ public JsonLdBlankNode createBlankNode(String name) {
+ String id = "_:" + name;
+ // TODO: Check if name is valid JSON-LD BlankNode identifier
+ return new JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
+ }
+
+ @Override
+ public JsonLdDataset createDataset() {
+ return new JsonLdDatasetImpl(bnodePrefix);
+ }
+
+ @Override
+ public JsonLdGraph createGraph() {
+ return new JsonLdGraphImpl(bnodePrefix);
+ }
+
+ @Override
+ public JsonLdIRI createIRI(String iri) {
+ return new JsonLdIRIImpl(iri);
+ }
+
+ @Override
+ public JsonLdLiteral createLiteral(String literal) {
+ return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, null, null));
+ }
+
+ @Override
+ public JsonLdLiteral createLiteral(String literal, IRI dataType) {
+ return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, dataType.getIRIString(), null));
+ }
+
+ @Override
+ public JsonLdLiteral createLiteral(String literal, String language) {
+ return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, Types.RDF_LANGSTRING.getIRIString(), language));
+ }
+
+ @Override
+ public JsonLdQuad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
+ throws IllegalArgumentException, UnsupportedOperationException {
+ return new JsonLdQuadImpl(createJsonLdQuad(graphName, subject, predicate, object), bnodePrefix);
+ }
+
+ @Override
+ public JsonLdTriple createTriple(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ return new JsonLdTripleImpl(createJsonLdQuad(null, subject, predicate, object), bnodePrefix);
+ }
+
+ String asJsonLdString(BlankNodeOrIRI blankNodeOrIRI) {
+ if (blankNodeOrIRI == null) {
+ return null;
+ }
+ if (blankNodeOrIRI instanceof IRI) {
+ return ((IRI)blankNodeOrIRI).getIRIString();
+ } else if (blankNodeOrIRI instanceof BlankNode) {
+ BlankNode blankNode = (BlankNode) blankNodeOrIRI;
+ String ref = blankNode.uniqueReference();
+ if (ref.startsWith(bnodePrefix)) {
+ // One of ours (but possibly not a JsonLdBlankNode) -
+ // we can use the suffix directly
+ return ref.replace(bnodePrefix, "_:");
+ } else {
+ // Map to unique bnode identifier, e.g. _:0dbd92ee-ab1a-45e7-bba2-7ade54f87ec5
+ UUID uuid = UUID.nameUUIDFromBytes(ref.getBytes(StandardCharsets.UTF_8));
+ return "_:"+ uuid;
+ }
+ } else {
+ throw new IllegalArgumentException("Expected a BlankNode or IRI, not: " + blankNodeOrIRI);
+ }
+ }
+
+ JsonLdTerm asRDFTerm(final Node node, String blankNodePrefix) {
+ if (node == null) {
+ return null; // e.g. default graph
+ }
+ if (node.isIRI()) {
+ return new JsonLdIRIImpl(node);
+ } else if (node.isBlankNode()) {
+ return new JsonLdBlankNodeImpl(node, blankNodePrefix);
+ } else if (node.isLiteral()) {
+ // TODO: Our own JsonLdLiteral
+ if (node.getLanguage() != null) {
+ return createLiteral(node.getValue(), node.getLanguage());
+ } else {
+ return createLiteral(node.getValue(), createIRI(node.getDatatype()));
+ }
+ } else {
+ throw new IllegalArgumentException("Node is neither IRI, BlankNode nor Literal: " + node);
+ }
+ }
+
+ RDFDataset.Quad createJsonLdQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ return new RDFDataset.Quad(asJsonLdNode(subject), asJsonLdNode(predicate), asJsonLdNode(object), asJsonLdString(graphName));
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphLike.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphLike.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphLike.java
index 579a03a..401de1f 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphLike.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphLike.java
@@ -72,7 +72,7 @@ abstract class AbstractJsonLdGraphLike<T extends TripleLike>
*/
final String bnodePrefix;
- final JsonLdRDFTermFactory factory;
+ final JsonLdFactory factory;
/**
* The underlying JSON-LD {@link RDFDataset}.
@@ -89,7 +89,7 @@ abstract class AbstractJsonLdGraphLike<T extends TripleLike>
AbstractJsonLdGraphLike(RDFDataset rdfDataSet, String bnodePrefix) {
this.rdfDataSet = Objects.requireNonNull(rdfDataSet);
this.bnodePrefix = Objects.requireNonNull(bnodePrefix);
- this.factory = new JsonLdRDFTermFactory(bnodePrefix);
+ this.factory = new JsonLdFactory(bnodePrefix);
}
AbstractJsonLdGraphLike(String bnodePrefix) {
@@ -161,8 +161,8 @@ abstract class AbstractJsonLdGraphLike<T extends TripleLike>
* Convert JsonLd Quad to a Commons RDF {@link Triple} or {@link org.apache.commons.rdf.api.Quad}
*
*
- * @see JsonLdRDFTermFactory#asTriple(Quad)
- * @see JsonLdRDFTermFactory#asQuad(Quad)
+ * @see JsonLdFactory#asTriple(Quad)
+ * @see JsonLdFactory#asQuad(Quad)
* @param jsonldQuad jsonld quad to convert
* @return converted {@link TripleLike}
*/
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/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 bd9d472..acb429a 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
@@ -32,7 +32,7 @@ public interface JsonLdQuadLike<G extends RDFTerm> extends QuadLike<G>, JsonLdTr
// Note: We always pass the blankNodePrefix and don't rely on the internal
// blankNodePrefix in this static factory
- private static JsonLdRDFTermFactory rdfTermFactory = new JsonLdRDFTermFactory();
+ private static JsonLdFactory rdfTermFactory = new JsonLdFactory();
private final Quad quad;
private String blankNodePrefix;
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/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
deleted file mode 100644
index 2e586f9..0000000
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactory.java
+++ /dev/null
@@ -1,306 +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.nio.charset.StandardCharsets;
-import java.util.Objects;
-import java.util.UUID;
-
-import org.apache.commons.rdf.api.BlankNode;
-import org.apache.commons.rdf.api.BlankNodeOrIRI;
-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.Literal;
-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.simple.Types;
-
-import com.github.jsonldjava.core.RDFDataset;
-import com.github.jsonldjava.core.RDFDataset.Node;
-
-public final class JsonLdRDFTermFactory implements RDFTermFactory {
-
- final String bnodePrefix;
-
- public JsonLdRDFTermFactory() {
- // An "outside Graph" bnodePrefix
- this("urn:uuid:" + UUID.randomUUID() + "#b");
- }
-
- JsonLdRDFTermFactory(String bnodePrefix) {
- this.bnodePrefix = Objects.requireNonNull(bnodePrefix);
- }
-
- /**
- * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Dataset}.
- * <p>
- * Changes to the Commons RDF {@link Dataset} are reflected in the JsonLd
- * {@link RDFDataset} and vice versa.
- *
- * @see #asGraph(RDFDataset)
- * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
- * @return Adapted {@link Dataset}
- */
- public JsonLdDataset asDataset(RDFDataset rdfDataSet) {
- return new JsonLdDatasetImpl(rdfDataSet);
- }
-
- /**
- * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Graph}.
- * <p>
- * Only triples in the <em>default graph</em> are included. To retrieve
- * any other graph, {@link #asDataset(RDFDataset)} together with
- * {@link Dataset#getGraph(BlankNodeOrIRI)}.
- * <p>
- * Changes to the Commons RDF {@link Graph} are reflected in the JsonLd
- * {@link RDFDataset} and vice versa.
- *
- * @see #asDataset(RDFDataset)
- * @see #asUnionGraph(RDFDataset)
- * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
- * @return Adapted {@link Graph} covering the <em>default graph</em>
- */
- public JsonLdGraph asGraph(RDFDataset rdfDataSet) {
- return new JsonLdGraphImpl(rdfDataSet);
- }
-
- public Node asJsonLdNode(RDFTerm term) {
- if (term instanceof JsonLdBlankNode) {
- JsonLdBlankNode jsonLdBlankNode = (JsonLdBlankNode) term;
- if (jsonLdBlankNode.uniqueReference().startsWith(bnodePrefix)) {
- // Only return blank nodes 'as is' if they have the same prefix
- return jsonLdBlankNode.asJsonLdNode();
- }
- } else if (term instanceof JsonLdTerm) {
- // non-Bnodes can always be return as-is
- return ((JsonLdTerm) term).asJsonLdNode();
- }
- if (term instanceof IRI) {
- return new RDFDataset.IRI(((IRI) term).getIRIString());
- }
- if (term instanceof BlankNode) {
- String ref = ((BlankNode) term).uniqueReference();
- if (ref.startsWith(bnodePrefix)) {
- // one of our own (but no longer a JsonLdBlankNode),
- // we can recover the label after our unique prefix
- return new RDFDataset.BlankNode(ref.replace(bnodePrefix, ""));
- }
- // The "foreign" unique reference might not be a valid bnode string,
- // we'll convert to a UUID
- UUID uuid = UUID.nameUUIDFromBytes(ref.getBytes(StandardCharsets.UTF_8));
- return new RDFDataset.BlankNode("_:" + uuid);
- }
- 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);
- }
-
- /**
- * Adapt a Commons RDF {@link org.apache.commons.rdf.api.Quad} as a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}.
- *
- * @param quad Commons RDF {@link org.apache.commons.rdf.api.Quad} to adapt
- * @return Adapted JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}
- */
- public RDFDataset.Quad asJsonLdQuad(org.apache.commons.rdf.api.Quad quad) {
- BlankNodeOrIRI g = quad.getGraphName().orElse(null);
- return createJsonLdQuad(g, quad.getSubject(), quad.getPredicate(), quad.getObject());
- }
-
- /**
- * Adapt a Commons RDF {@link Triple} as a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}.
- *
- * @param triple Commons RDF {@link Triple} to adapt
- * @return Adapted JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad}
- */
- public RDFDataset.Quad asJsonLdQuad(Triple triple) {
- return createJsonLdQuad(null, triple.getSubject(), triple.getPredicate(), triple.getObject());
- }
-
- /**
- * Adapt a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} as a Commons RDF
- * {@link org.apache.commons.rdf.api.Quad}.
- * <p>
- * The underlying JsonLd quad can be retrieved with
- * {@link JsonLdQuad#asJsonLdQuad()}.
- *
- * @param quad
- * A JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} to adapt
- * @return Adapted {@link JsonLdQuad}
- */
- public JsonLdQuad asQuad(final RDFDataset.Quad quad) {
- return new JsonLdQuadImpl(quad, bnodePrefix);
- }
-
- /**
- * Adapt a JsonLd {@link Node} as a Commons RDF {@link RDFTerm}.
- * <p>
- * The underlying node can be retrieved with
- * {@link JsonLdTerm#asJsonLdNode()}.
- *
- * @param node
- * A JsonLd {@link Node} to adapt
- * @return Adapted {@link JsonLdTerm}
- */
- public JsonLdTerm asRDFTerm(final Node node) {
- return asRDFTerm(node, bnodePrefix);
- }
-
- /**
- * Adapt a JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} as a Commons RDF
- * {@link org.apache.commons.rdf.api.Triple}.
- * <p>
- * The underlying JsonLd quad can be retrieved with
- * {@link JsonLdTriple#asJsonLdQuad()}.
- *
- * @param quad
- * A JsonLd {@link com.github.jsonldjava.core.RDFDataset.Quad} to adapt
- * @return Adapted {@link JsonLdTriple}
- */
- public JsonLdTriple asTriple(final RDFDataset.Quad quad) {
- return new JsonLdTripleImpl(quad, bnodePrefix);
- }
-
- /**
- * Adapt a JsonLd {@link RDFDataset} as a Commons RDF {@link Graph}.
- * <p>
- * The graph can be seen as a <em>union graph</em> as it will contains all the
- * triples across all the graphs of the underlying {@link RDFDataset}.
- * <p>
- * Note that some triple operations on a union graph
- * can be inefficient as they need to remove any duplicate
- * triples across the graphs.
- * <p>
- * Changes to the Commons RDF {@link Graph} are reflected in the JsonLd
- * {@link RDFDataset} and vice versa. Triples removed from the graph are
- * removed from <strong>all</strong> graphs, while triples added
- * are added to the <em>default graph</em>.
- *
- * @param rdfDataSet JsonLd {@link RDFDataset} to adapt
- * @return Adapted {@link Dataset}
- */
- public JsonLdUnionGraph asUnionGraph(RDFDataset rdfDataSet) {
- return new JsonLdUnionGraphImpl(rdfDataSet);
- }
-
- @Override
- public JsonLdBlankNode createBlankNode() {
- String id = "_:" + UUID.randomUUID().toString();
- return new JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
- }
-
- @Override
- public JsonLdBlankNode createBlankNode(String name) {
- String id = "_:" + name;
- // TODO: Check if name is valid JSON-LD BlankNode identifier
- return new JsonLdBlankNodeImpl(new RDFDataset.BlankNode(id), bnodePrefix);
- }
-
- @Override
- public JsonLdDataset createDataset() {
- return new JsonLdDatasetImpl(bnodePrefix);
- }
-
- @Override
- public JsonLdGraph createGraph() {
- return new JsonLdGraphImpl(bnodePrefix);
- }
-
- @Override
- public JsonLdIRI createIRI(String iri) {
- return new JsonLdIRIImpl(iri);
- }
-
- @Override
- public JsonLdLiteral createLiteral(String literal) {
- return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, null, null));
- }
-
- @Override
- public JsonLdLiteral createLiteral(String literal, IRI dataType) {
- return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, dataType.getIRIString(), null));
- }
-
- @Override
- public JsonLdLiteral createLiteral(String literal, String language) {
- return new JsonLdLiteralImpl(new RDFDataset.Literal(literal, Types.RDF_LANGSTRING.getIRIString(), language));
- }
-
- @Override
- public JsonLdQuad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
- throws IllegalArgumentException, UnsupportedOperationException {
- return new JsonLdQuadImpl(createJsonLdQuad(graphName, subject, predicate, object), bnodePrefix);
- }
-
- @Override
- public JsonLdTriple createTriple(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
- return new JsonLdTripleImpl(createJsonLdQuad(null, subject, predicate, object), bnodePrefix);
- }
-
- String asJsonLdString(BlankNodeOrIRI blankNodeOrIRI) {
- if (blankNodeOrIRI == null) {
- return null;
- }
- if (blankNodeOrIRI instanceof IRI) {
- return ((IRI)blankNodeOrIRI).getIRIString();
- } else if (blankNodeOrIRI instanceof BlankNode) {
- BlankNode blankNode = (BlankNode) blankNodeOrIRI;
- String ref = blankNode.uniqueReference();
- if (ref.startsWith(bnodePrefix)) {
- // One of ours (but possibly not a JsonLdBlankNode) -
- // we can use the suffix directly
- return ref.replace(bnodePrefix, "_:");
- } else {
- // Map to unique bnode identifier, e.g. _:0dbd92ee-ab1a-45e7-bba2-7ade54f87ec5
- UUID uuid = UUID.nameUUIDFromBytes(ref.getBytes(StandardCharsets.UTF_8));
- return "_:"+ uuid;
- }
- } else {
- throw new IllegalArgumentException("Expected a BlankNode or IRI, not: " + blankNodeOrIRI);
- }
- }
-
- JsonLdTerm asRDFTerm(final Node node, String blankNodePrefix) {
- if (node == null) {
- return null; // e.g. default graph
- }
- if (node.isIRI()) {
- return new JsonLdIRIImpl(node);
- } else if (node.isBlankNode()) {
- return new JsonLdBlankNodeImpl(node, blankNodePrefix);
- } else if (node.isLiteral()) {
- // TODO: Our own JsonLdLiteral
- if (node.getLanguage() != null) {
- return createLiteral(node.getValue(), node.getLanguage());
- } else {
- return createLiteral(node.getValue(), createIRI(node.getDatatype()));
- }
- } else {
- throw new IllegalArgumentException("Node is neither IRI, BlankNode nor Literal: " + node);
- }
- }
-
- RDFDataset.Quad createJsonLdQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
- return new RDFDataset.Quad(asJsonLdNode(subject), asJsonLdNode(predicate), asJsonLdNode(object), asJsonLdString(graphName));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/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
index 102b2d4..464015f 100644
--- 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
@@ -32,7 +32,7 @@ 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.jsonldjava.JsonLdFactory;
import org.apache.commons.rdf.simple.experimental.AbstractRDFParser;
import com.github.jsonldjava.core.JsonLdError;
@@ -44,8 +44,8 @@ import com.github.jsonldjava.utils.JsonUtils;
public class JsonLdParser extends AbstractRDFParser<JsonLdParser> {
@Override
- protected JsonLdRDFTermFactory createRDFTermFactory() {
- return new JsonLdRDFTermFactory();
+ protected JsonLdFactory createRDFTermFactory() {
+ return new JsonLdFactory();
}
@Override
@@ -105,7 +105,7 @@ public class JsonLdParser extends AbstractRDFParser<JsonLdParser> {
// otherwise we have to merge as normal
}
// TODO: Modify JsonLdProcessor to have an actual triple callback
- Graph parsedGraph = getJsonLdRDFTermFactory().asGraph(rdfDataset);
+ Graph parsedGraph = getJsonLdFactory().asGraph(rdfDataset);
// sequential() as we don't know if destination is thread safe :-/
parsedGraph.stream().sequential().forEach(intoGraph::add);
} else if (getTargetDataset().isPresent()) {
@@ -119,19 +119,19 @@ public class JsonLdParser extends AbstractRDFParser<JsonLdParser> {
// 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);
+ Dataset fromDataset = getJsonLdFactory().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);
+ Dataset fromDataset = getJsonLdFactory().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();
+ private JsonLdFactory getJsonLdFactory() {
+ if (getRdfTermFactory().isPresent() && getRdfTermFactory().get() instanceof JsonLdFactory) {
+ return (JsonLdFactory) getRdfTermFactory().get();
}
return createRDFTermFactory();
}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/package-info.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/package-info.java b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/package-info.java
index b9b4acb..1cb5c77 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/package-info.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/package-info.java
@@ -18,7 +18,7 @@
/**
* Integration with jsonld-java
*
- * @see org.apache.commons.rdf.jsonldjava.JsonLdRDFTermFactory
+ * @see org.apache.commons.rdf.jsonldjava.JsonLdFactory
* @see org.apache.commons.rdf.jsonldjava.JsonLdGraph
* @see org.apache.commons.rdf.jsonldjava.JsonLdUnionGraph
* @see org.apache.commons.rdf.jsonldjava.JsonLdDataset
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/main/resources/META-INF/services/org.apache.commons.rdf.api.RDFTermFactory
----------------------------------------------------------------------
diff --git a/jsonld-java/src/main/resources/META-INF/services/org.apache.commons.rdf.api.RDFTermFactory b/jsonld-java/src/main/resources/META-INF/services/org.apache.commons.rdf.api.RDFTermFactory
index 690fba4..9bf95f8 100644
--- a/jsonld-java/src/main/resources/META-INF/services/org.apache.commons.rdf.api.RDFTermFactory
+++ b/jsonld-java/src/main/resources/META-INF/services/org.apache.commons.rdf.api.RDFTermFactory
@@ -1 +1 @@
-org.apache.commons.rdf.jsonldjava.JsonLdRDFTermFactory
\ No newline at end of file
+org.apache.commons.rdf.jsonldjava.JsonLdFactory
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
new file mode 100644
index 0000000..e7c68ea
--- /dev/null
+++ b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
@@ -0,0 +1,54 @@
+/**
+ * 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 org.apache.commons.rdf.api.AbstractRDFTermFactoryTest;
+import org.apache.commons.rdf.api.RDFTermFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class JsonLdFactoryTest extends AbstractRDFTermFactoryTest {
+
+ @Override
+ public RDFTermFactory createFactory() {
+ return new JsonLdFactory();
+ }
+
+ // TODO: Add support for checking for invalid lang/iri/blanknode IDs
+
+ @Ignore
+ @Test
+ @Override
+ public void testInvalidLiteralLang() throws Exception {
+ super.testInvalidLiteralLang();
+ }
+
+ @Ignore
+ @Test
+ @Override
+ public void testInvalidIRI() throws Exception {
+ super.testInvalidIRI();
+ }
+
+ @Ignore
+ @Test
+ @Override
+ public void testPossiblyInvalidBlankNode() throws Exception {
+ super.testPossiblyInvalidBlankNode();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphTest.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphTest.java b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphTest.java
index 5b8d28c..46bc73e 100644
--- a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphTest.java
+++ b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdGraphTest.java
@@ -24,7 +24,7 @@ public class JsonLdGraphTest extends AbstractGraphTest {
@Override
public RDFTermFactory createFactory() {
- return new JsonLdRDFTermFactory();
+ return new JsonLdFactory();
}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/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 4d846ee..bd3c6bb 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
@@ -39,7 +39,7 @@ import org.junit.Test;
public class JsonLdParserBuilderTest {
private static final String TEST_JSONLD = "/test.jsonld";
- static JsonLdRDFTermFactory factory = new JsonLdRDFTermFactory();
+ static JsonLdFactory factory = new JsonLdFactory();
IRI test = factory.createIRI("http://example.com/test");
IRI Type = factory.createIRI("http://example.com/Type");
IRI type = factory.createIRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactoryTest.java
----------------------------------------------------------------------
diff --git a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactoryTest.java b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactoryTest.java
deleted file mode 100644
index 0e86b33..0000000
--- a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdRDFTermFactoryTest.java
+++ /dev/null
@@ -1,54 +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 org.apache.commons.rdf.api.AbstractRDFTermFactoryTest;
-import org.apache.commons.rdf.api.RDFTermFactory;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class JsonLdRDFTermFactoryTest extends AbstractRDFTermFactoryTest {
-
- @Override
- public RDFTermFactory createFactory() {
- return new JsonLdRDFTermFactory();
- }
-
- // TODO: Add support for checking for invalid lang/iri/blanknode IDs
-
- @Ignore
- @Test
- @Override
- public void testInvalidLiteralLang() throws Exception {
- super.testInvalidLiteralLang();
- }
-
- @Ignore
- @Test
- @Override
- public void testInvalidIRI() throws Exception {
- super.testInvalidIRI();
- }
-
- @Ignore
- @Test
- @Override
- public void testPossiblyInvalidBlankNode() throws Exception {
- super.testPossiblyInvalidBlankNode();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/0bb93696/src/site/markdown/implementations.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/implementations.md b/src/site/markdown/implementations.md
index f518861..51679fd 100644
--- a/src/site/markdown/implementations.md
+++ b/src/site/markdown/implementations.md
@@ -194,9 +194,9 @@ This is primarily intended to support [JSON-LD](http://json-ld.org/) parsing and
```java
import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdf.api.RDFTermFactory;
-import org.apache.commons.rdf.jsonld.JsonLdRDFTermFactory;
+import org.apache.commons.rdf.jsonld.JsonLdFactory;
-RDFTermFactory rdfTermFactory = new JsonLdRDFTermFactory();
+RDFTermFactory rdfTermFactory = new JsonLdFactory();
Graph graph = rdfTermFactory.createGraph();
```