You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2022/07/20 22:32:56 UTC
[jena] branch main updated: GH-1451: Set base when parsing JSON-LD 1.1
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/main by this push:
new 99cf635191 GH-1451: Set base when parsing JSON-LD 1.1
new 4a69791217 Merge pull request #1452 from afs/jsonld-base
99cf635191 is described below
commit 99cf63519196081781d803b3fadb0913a31d4a6f
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Wed Jul 20 22:09:32 2022 +0100
GH-1451: Set base when parsing JSON-LD 1.1
---
.../org/apache/jena/riot/lang/LangJSONLD11.java | 8 ++++----
.../org/apache/jena/riot/TestJsonLDReader.java | 22 ++++++++++++++++++++++
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
index 1c79c9f4a8..1b98cd7e24 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
@@ -62,7 +62,7 @@ public class LangJSONLD11 implements ReaderRIOT {
public void read(InputStream input, String baseURI, ContentType ct, StreamRDF output, Context context) {
try {
Document document = JsonDocument.of(input);
- read(document, output, context);
+ read(document, baseURI, output, context);
} catch (JsonLdError ex) {
handleJsonLdError(ex);
} catch (Exception ex) {
@@ -86,7 +86,7 @@ public class LangJSONLD11 implements ReaderRIOT {
public void read(Reader in, String baseURI, ContentType ct, StreamRDF output, Context context) {
try {
Document document = JsonDocument.of(in);
- read(document, output, context);
+ read(document, baseURI, output, context);
} catch (JsonLdError ex) {
ex.printStackTrace();
handleJsonLdError(ex);
@@ -96,9 +96,9 @@ public class LangJSONLD11 implements ReaderRIOT {
}
}
- private void read(Document document, StreamRDF output, Context context) throws JsonLdError {
+ private void read(Document document, String baseURI, StreamRDF output, Context context) throws JsonLdError {
// JSON-LD to RDF
- RdfDataset dataset = JsonLd.toRdf(document).get();
+ RdfDataset dataset = JsonLd.toRdf(document).base(baseURI).get();
extractPrefixes(document, output::prefix);
JenaTitanium.convert(dataset, output);
}
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/TestJsonLDReader.java b/jena-arq/src/test/java/org/apache/jena/riot/TestJsonLDReader.java
index 3875497c16..e1b6966628 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/TestJsonLDReader.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/TestJsonLDReader.java
@@ -18,6 +18,7 @@
package org.apache.jena.riot;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@@ -26,6 +27,8 @@ import com.fasterxml.jackson.core.JsonGenerationException;
import com.github.jsonldjava.core.DocumentLoader;
import com.github.jsonldjava.core.JsonLdOptions;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.Triple;
import org.apache.jena.query.Dataset;
import org.apache.jena.query.DatasetFactory;
import org.apache.jena.rdf.model.Model;
@@ -33,6 +36,7 @@ import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.riot.system.ErrorHandlerFactory;
+import org.apache.jena.sparql.sse.SSE;
import org.apache.jena.sparql.util.Context;
import org.apache.jena.vocabulary.RDF;
import org.junit.Test;
@@ -92,6 +96,24 @@ public class TestJsonLDReader {
assertJohnDoeIsOK(ds.getDefaultModel());
}
+ // JSONLD 1.1 : Titanium-json-ld
+
+ @Test
+ public void testJsonLdBase() {
+ // GH-1451
+ // {
+ // "@id": "./relative",
+ // "@type": "RelType",
+ // "http://example/p": { "@id" : "#frag" }
+ // }
+ String jsonld = "{ '@id': './relative', '@type': 'RelType', 'http://example/p': { '@id' : '#frag' } }";
+ jsonld = jsonld.replaceAll("'", "\"");
+ Graph g = RDFParser.fromString(jsonld).lang(Lang.JSONLD).base("http://base/abc").toGraph();
+ assertNotNull(g);
+ Triple t = SSE.parseTriple("( <http://base/relative> <http://example/p> <http://base/abc#frag> )");
+ assertTrue(g.contains(t));
+ }
+
/**
* Reading some jsonld String, using a Context
* @return a new Dataset