Repository: incubator-commonsrdf
Updated Branches:
  refs/heads/jena 7dd08a24f -> 4528e695f


Added JsonLdLiteral


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

Branch: refs/heads/jena
Commit: 286813cc9ff98c7c926f4e3740124e503be89c15
Parents: fe7ed27
Author: Stian Soiland-Reyes <[email protected]>
Authored: Mon Apr 4 16:58:18 2016 +0100
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Mon Apr 4 16:58:18 2016 +0100

----------------------------------------------------------------------
 .../commons/rdf/jsonldjava/JsonLdBlankNode.java |  8 +-
 .../commons/rdf/jsonldjava/JsonLdIRI.java       | 13 +++-
 .../commons/rdf/jsonldjava/JsonLdLiteral.java   | 80 ++++++++++++++++++++
 .../rdf/jsonldjava/JsonLdRDFTermFactory.java    | 38 +++++++---
 .../commons/rdf/jsonldjava/JsonLdTerm.java      | 14 ++++
 5 files changed, 137 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/286813cc/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
----------------------------------------------------------------------
diff --git 
a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
index 383bb94..f93d3b4 100644
--- 
a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
+++ 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdBlankNode.java
@@ -21,13 +21,15 @@ import org.apache.commons.rdf.api.BlankNode;
 
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-final class JsonLdBlankNode implements BlankNode {
-       private final Node node;
+final class JsonLdBlankNode extends JsonLdTerm implements BlankNode {
        private String blankNodePrefix;
 
        JsonLdBlankNode(Node node, String blankNodePrefix) {
+               super(node);
                this.blankNodePrefix = blankNodePrefix;
-               this.node = node;
+               if (! node.isBlankNode()) {
+                       throw new IllegalArgumentException("Node is not a 
BlankNode:" + node);
+               }
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/286813cc/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
----------------------------------------------------------------------
diff --git 
a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
index 3e14ad5..e21f55c 100644
--- a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
+++ b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdIRI.java
@@ -19,13 +19,20 @@ package org.apache.commons.rdf.jsonldjava;
 
 import org.apache.commons.rdf.api.IRI;
 
+import com.github.jsonldjava.core.RDFDataset;
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-final class JsonLdIRI implements IRI {
-       private final Node node;
+final class JsonLdIRI extends JsonLdTerm implements IRI {
 
        JsonLdIRI(Node node) {
-               this.node = node;
+               super(node);
+               if (! node.isIRI()) {
+                       throw new IllegalArgumentException("Node is not an 
IRI:" + node);
+               }
+       }
+
+       public JsonLdIRI(String iri) {
+               super(new RDFDataset.IRI(iri));
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/286813cc/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
----------------------------------------------------------------------
diff --git 
a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
new file mode 100644
index 0000000..87e688a
--- /dev/null
+++ 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdLiteral.java
@@ -0,0 +1,80 @@
+package org.apache.commons.rdf.jsonldjava;
+
+import java.util.Objects;
+import java.util.Optional;
+
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.Literal;
+import org.apache.commons.rdf.simple.Types;
+
+import com.github.jsonldjava.core.RDFDataset.Node;
+
+public class JsonLdLiteral extends JsonLdTerm implements Literal {
+
+       JsonLdLiteral(Node node) {
+               super(node);
+               if (! node.isLiteral()) {
+                       throw new IllegalArgumentException("Node is not a 
Literal:" + node);
+               }
+       }
+
+       @Override
+       public String ntriplesString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append('"');
+        // Escape special characters
+        sb.append(getLexicalForm().replace("\\", "\\\\"). // escaped to \\
+                replace("\"", "\\\""). // escaped to \"
+                replace("\r", "\\r"). // escaped to \r
+                replace("\n", "\\n")); // escaped to \n
+        sb.append('"');
+
+        if (getLanguageTag().isPresent()) {
+            sb.append("@");
+            sb.append(getLanguageTag().get());
+        } else if (!getDatatype().equals(Types.XSD_STRING)) {
+            sb.append("^^");
+            sb.append(getDatatype().ntriplesString());
+        }
+        return sb.toString();
+    }
+
+       @Override
+       public String getLexicalForm() {
+               return node.getValue();
+       }
+
+       @Override
+       public IRI getDatatype() {
+               return new JsonLdIRI(node.getDatatype());
+       }
+
+       @Override
+       public Optional<String> getLanguageTag() {
+               return Optional.ofNullable(node.getLanguage());
+       }
+
+       @Override
+       public int hashCode() {
+               // Should be the same as 
+               // Objects.hash(getLexicalForm(), getDatatype(), 
getLanguageTag());
+               return Objects.hash(node.getValue(), node.getDatatype(), 
node.getLanguage());
+       }
+       
+       @Override
+       public boolean equals(Object obj) {
+               if (obj instanceof JsonLdLiteral) {
+                       JsonLdLiteral other = (JsonLdLiteral) obj;
+                       return asNode().compareTo(other.asNode()) == 0;
+               }
+               if (obj instanceof Literal) {
+                       Literal other = (Literal) obj;
+                       return getLexicalForm().equals(other.getLexicalForm()) 
&&
+                                       
getDatatype().equals(other.getDatatype()) &&
+                                       
getLanguageTag().equals(other.getLanguageTag());
+               }
+               return false;
+               
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/286813cc/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 99927ad..1d9f6d7 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
@@ -25,13 +25,13 @@ 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.SimpleRDFTermFactory;
 
 import com.github.jsonldjava.core.RDFDataset;
 import com.github.jsonldjava.core.RDFDataset.Node;
 
-final class JsonLdRDFTermFactory extends SimpleRDFTermFactory {
+final class JsonLdRDFTermFactory implements RDFTermFactory {
        
        public JsonLdRDFTermFactory() {
                // An "outside Graph" bnodePrefix
@@ -51,7 +51,7 @@ final class JsonLdRDFTermFactory extends SimpleRDFTermFactory 
{
        
        @Override
        public IRI createIRI(String iri) {
-               return new JsonLdIRI(new RDFDataset.IRI(iri));
+               return new JsonLdIRI(iri);
        }
        
        @Override
@@ -69,11 +69,27 @@ final class JsonLdRDFTermFactory extends 
SimpleRDFTermFactory {
        
        @Override
        public Triple createTriple(BlankNodeOrIRI subject, IRI predicate, 
RDFTerm object) {
-               return super.createTriple(subject, predicate, object);
+               return new JsonLdTriple(asJsonLdQuad(subject, predicate, 
object), bnodePrefix);
+       }
+       
+       @Override
+       public Literal createLiteral(String literal) {          
+               return new JsonLdLiteral(new RDFDataset.Literal(literal, null, 
null));
+       }
+       @Override
+       public Literal createLiteral(String literal, IRI dataType) {
+               return new JsonLdLiteral(new RDFDataset.Literal(literal, 
dataType.getIRIString(), null));       }
+       @Override
+       public Literal createLiteral(String literal, String language) {
+               return new JsonLdLiteral(new RDFDataset.Literal(literal, null, 
language));              
        }
 
 
        private Node asJsonLdNode(RDFTerm term) {
+               if (term instanceof JsonLdTerm) {
+                       // Return original Node
+                       return ((JsonLdTerm)term).asNode();
+               }
                if (term instanceof IRI) {
                        return new RDFDataset.IRI( ((IRI)term).getIRIString() );
                }
@@ -96,19 +112,21 @@ final class JsonLdRDFTermFactory extends 
SimpleRDFTermFactory {
        }
        
 
-       public RDFDataset.Quad asJsonLdQuad(Triple triple) {
-               Node subject = asJsonLdNode(triple.getSubject());
-               Node predicate = asJsonLdNode(triple.getPredicate());
-               Node object = asJsonLdNode(triple.getObject());
+       public RDFDataset.Quad asJsonLdQuad(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
                String graph = null;
                // TODO: Add Quad to commons-rdf
 //             if (triple instanceof Quad) {
 //                     String graph = triple.getGraph().getIRIString();
 //             }
-               return new RDFDataset.Quad(subject, predicate, object, graph);
-               
+               return new RDFDataset.Quad(asJsonLdNode(subject), 
asJsonLdNode(predicate), asJsonLdNode(object), graph);
        }
+
+
        
+       public RDFDataset.Quad asJsonLdQuad(Triple triple) {
+               return asJsonLdQuad(triple.getSubject(), triple.getPredicate(), 
triple.getObject());
+       }
+
        RDFTerm asTerm(final Node node, String blankNodePrefix) {               
                if (node.isIRI()) {
                        return new JsonLdIRI(node);

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/286813cc/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
----------------------------------------------------------------------
diff --git 
a/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
new file mode 100644
index 0000000..f1c4718
--- /dev/null
+++ 
b/jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdTerm.java
@@ -0,0 +1,14 @@
+package org.apache.commons.rdf.jsonldjava;
+
+import com.github.jsonldjava.core.RDFDataset.Node;
+
+public abstract class JsonLdTerm {
+       final Node node;
+       JsonLdTerm(Node node) {
+               this.node = node;
+       }
+       public Node asNode() {
+               return node;
+       }
+       
+}

Reply via email to