diff --git a/pom.xml b/pom.xml
index f3fb0bc..3cd1044 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,12 +13,12 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <scufl2.version>0.11.0</scufl2.version>
-        <jsonld.version>0.3-SNAPSHOT</jsonld.version>
+        <jsonld.version>0.2.99-mygrid</jsonld.version>
         <!-- Raven: Jena and Jackson versions must match dependencies
         from jsonld *and* scufl2 --> 
-        <jena.version>2.10.0</jena.version>
+        <jena.version>2.11.0</jena.version>
         <jackson.version>2.2.3</jackson.version>
-    </properties>
+    </properties>    
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java b/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
index 3eb0965..1fa1650 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
@@ -10,12 +10,10 @@
 import java.util.Set;
 import java.util.UUID;
 
-import com.github.jsonldjava.core.JSONLD;
-import com.github.jsonldjava.core.JSONLDProcessingError;
-import com.github.jsonldjava.core.JSONLDTripleCallback;
-import com.github.jsonldjava.core.Options;
-import com.github.jsonldjava.impl.JenaTripleCallback;
-import com.github.jsonldjava.utils.JSONUtils;
+import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.riot.RiotException;
+
+import com.github.jsonldjava.jena.JenaJSONLD;
 import com.hp.hpl.jena.ontology.DatatypeProperty;
 import com.hp.hpl.jena.ontology.Individual;
 import com.hp.hpl.jena.ontology.ObjectProperty;
@@ -84,11 +82,17 @@
     
     
     protected static Model jsonLdAsJenaModel(InputStream jsonIn, URI base) throws IOException,
-            JSONLDProcessingError {
-        Object input = JSONUtils.fromInputStream(jsonIn);
-        JSONLDTripleCallback callback = new JenaTripleCallback();        
-        Model model = (Model)JSONLD.toRDF(input, callback, new Options(base.toASCIIString()));
+            RiotException {
+        JenaJSONLD.init();
+        Model model = ModelFactory.createDefaultModel();
+        RDFDataMgr.read(model, jsonIn, base.toASCIIString(), JenaJSONLD.JSONLD);
         return model;
+        
+//        
+//        Object input = JSONUtils.fromInputStream(jsonIn);
+//        JSONLDTripleCallback callback = new JenaTripleCallback();        
+//        Model model = (Model)JSONLD.toRDF(input, callback, new Options(base.toASCIIString()));
+//        return model;
     }
     
     private void checkNotNull(Object... possiblyNulls) {
@@ -208,7 +212,7 @@
         }       
     }
 
-    public void readTo(InputStream resourceAsStream, Manifest manifest) throws IOException, JSONLDProcessingError {
+    public void readTo(InputStream resourceAsStream, Manifest manifest) throws IOException, RiotException {
         OntModel model = new RDFToManifest().getOntModel();
         URI base;
         try {
