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 2015/10/03 19:11:55 UTC
[1/5] jena git commit: Clean imports
Repository: jena
Updated Branches:
refs/heads/master a9e1fae23 -> 48f5e0be6
Clean imports
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4c9cda41
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4c9cda41
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4c9cda41
Branch: refs/heads/master
Commit: 4c9cda41ad1de908539a922cbae76c19b5556c78
Parents: a9e1fae
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Oct 3 10:33:00 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 3 10:33:00 2015 +0100
----------------------------------------------------------------------
.../src/test/java/org/apache/jena/sparql/algebra/TestClassify.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/4c9cda41/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
index d3819c4..2bd6b0c 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
@@ -22,8 +22,6 @@ import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.query.Query ;
import org.apache.jena.query.QueryFactory ;
import org.apache.jena.query.Syntax ;
-import org.apache.jena.sparql.algebra.Algebra ;
-import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.algebra.op.OpJoin ;
import org.apache.jena.sparql.algebra.op.OpLeftJoin ;
import org.apache.jena.sparql.engine.main.JoinClassifier ;
[5/5] jena git commit: JENA-1042: Exclude
org.xenei:contract-test-maven-plugin in m2e
Posted by an...@apache.org.
JENA-1042: Exclude org.xenei:contract-test-maven-plugin in m2e
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/48f5e0be
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/48f5e0be
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/48f5e0be
Branch: refs/heads/master
Commit: 48f5e0be683caf6b5744749f9b6a29efae4aa53c
Parents: 6a9f4d1
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Oct 3 17:48:32 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 3 17:48:32 2015 +0100
----------------------------------------------------------------------
jena-parent/pom.xml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/48f5e0be/jena-parent/pom.xml
----------------------------------------------------------------------
diff --git a/jena-parent/pom.xml b/jena-parent/pom.xml
index 220683f..0144565 100644
--- a/jena-parent/pom.xml
+++ b/jena-parent/pom.xml
@@ -601,6 +601,20 @@
</action>
</pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.xenei</groupId>
+ <artifactId>contract-test-maven-plugin</artifactId>
+ <versionRange>[0.1.5,)</versionRange>
+ <goals>
+ <goal>contract-test</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
[4/5] jena git commit: JENA-1038: Put back the Jena sequence for
processing JSON-LD.
Posted by an...@apache.org.
JENA-1038: Put back the Jena sequence for processing JSON-LD.
The Jena code has a slightly different behaviour in the presence of
junk content after the JSON object.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6a9f4d11
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6a9f4d11
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6a9f4d11
Branch: refs/heads/master
Commit: 6a9f4d11a9cc7b4adf8141560fd05091e93ea178
Parents: d214459
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Oct 3 17:17:33 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 3 17:17:33 2015 +0100
----------------------------------------------------------------------
.../org/apache/jena/riot/lang/JsonLDReader.java | 208 ++++++++++---------
1 file changed, 110 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/6a9f4d11/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
index cca0f77..0f44248 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
@@ -25,11 +25,11 @@ import java.util.List ;
import java.util.Map ;
import java.util.Map.Entry;
import java.util.Objects;
+import java.util.function.Consumer ;
-import com.fasterxml.jackson.core.JsonLocation ;
-import com.fasterxml.jackson.core.JsonProcessingException ;
+import com.fasterxml.jackson.core.* ;
+import com.fasterxml.jackson.databind.ObjectMapper ;
import com.github.jsonldjava.core.* ;
-import com.github.jsonldjava.utils.JsonUtils ;
import org.apache.jena.atlas.io.IO ;
import org.apache.jena.atlas.lib.InternalErrorException ;
@@ -45,6 +45,7 @@ import org.apache.jena.riot.RiotException ;
import org.apache.jena.riot.system.* ;
import org.apache.jena.sparql.core.Quad ;
import org.apache.jena.sparql.util.Context ;
+import org.apache.jena.util.FileUtils ;
public class JsonLDReader implements ReaderRIOT
{
@@ -57,56 +58,11 @@ public class JsonLDReader implements ReaderRIOT
@Override public ParserProfile getParserProfile() { return parserProfile ; }
@Override public void setParserProfile(ParserProfile parserProfile) { this.parserProfile = parserProfile ; }
- @Override
- public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {
- try {
- Object jsonObject = JsonUtils.fromReader(reader) ;
- read$(jsonObject, baseURI, ct, output, context) ;
- }
- catch (JsonProcessingException ex) {
- // includes JsonParseException
- // The Jackson JSON parser, or addition JSON-level check, throws up something.
- JsonLocation loc = ex.getLocation() ;
- errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
- throw new RiotException(ex.getOriginalMessage()) ;
- }
- catch (IOException e) {
- IO.exception(e) ;
- }
- }
-
- @Override
- public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
- try {
- Object jsonObject = JsonUtils.fromInputStream(in) ;
- read$(jsonObject, baseURI, ct, output, context) ;
- }
- catch (JsonProcessingException ex) {
- // includes JsonParseException
- // The Jackson JSON parser, or addition JSON-level check, throws up something.
- JsonLocation loc = ex.getLocation() ;
- errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
- throw new RiotException(ex.getOriginalMessage()) ;
- }
- catch (IOException e) {
- IO.exception(e) ;
- }
- }
-
- // This addresses jsonld-java issue #144 prior to jsonld-java release 0.6.0 in
- // Jena code so that we get triples/quads out then there is a parse error.
- // Even if it is fixed in jsonld-java, it would mean that no triples would
- // be produced - all the JSON parsing is done before JSON-LD processing.
- // Here we process the first JSON object, which causes triples to be
- // generated then decide whether to throw a parse error. This is more in the
- // style of other syntaxes and stream parsing.
- // This fix is in jsonld-java itself release 0.6.0 and later.
-
// @Override
// public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {
// try {
-// readProcess(reader,
-// (jsonObject)->read$(jsonObject, baseURI, ct, output, context)) ;
+// Object jsonObject = JsonUtils.fromReader(reader) ;
+// read$(jsonObject, baseURI, ct, output, context) ;
// }
// catch (JsonProcessingException ex) {
// // includes JsonParseException
@@ -123,58 +79,114 @@ public class JsonLDReader implements ReaderRIOT
//
// @Override
// public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
-// Reader r = FileUtils.asBufferedUTF8(in) ;
-// read(r, baseURI, ct, output, context) ;
-// }
-//
-// // From JsonUtils.fromReader in the jsonld-java codebase.
-// // Note that jsonld-java always uses a reader.
-// private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
-// private static final JsonFactory JSON_FACTORY = new JsonFactory(JSON_MAPPER);
-//
-// /** Read a JSON object from the reader, acall the prcoessing function, then
-// * check for trailing content. For Jena, this means tripes/quads are generated
-// * from a valid JSON object, then there is a parse error for trailing junk.
-// * @param reader
-// * @param function
-// * @throws IOException
-// */
-// private static void readProcess(Reader reader, Consumer<Object> function) throws IOException {
-// final JsonParser jp = JSON_FACTORY.createParser(reader);
-// Object rval ;
-// final JsonToken initialToken = jp.nextToken();
-//
-// if (initialToken == JsonToken.START_ARRAY) {
-// rval = jp.readValueAs(List.class);
-// } else if (initialToken == JsonToken.START_OBJECT) {
-// rval = jp.readValueAs(Map.class);
-// } else if (initialToken == JsonToken.VALUE_STRING) {
-// rval = jp.readValueAs(String.class);
-// } else if (initialToken == JsonToken.VALUE_FALSE || initialToken == JsonToken.VALUE_TRUE) {
-// rval = jp.readValueAs(Boolean.class);
-// } else if (initialToken == JsonToken.VALUE_NUMBER_FLOAT
-// || initialToken == JsonToken.VALUE_NUMBER_INT) {
-// rval = jp.readValueAs(Number.class);
-// } else if (initialToken == JsonToken.VALUE_NULL) {
-// rval = null;
-// } else {
-// throw new JsonParseException("document doesn't start with a valid json element : "
-// + initialToken, jp.getCurrentLocation());
+// try {
+// Object jsonObject = JsonUtils.fromInputStream(in) ;
+// read$(jsonObject, baseURI, ct, output, context) ;
// }
-//
-// function.accept(rval);
-//
-// JsonToken t ;
-// try { t = jp.nextToken(); }
-// catch (JsonParseException ex) {
-// throw new JsonParseException("Document contains more content after json-ld element - (possible mismatched {}?)",
-// jp.getCurrentLocation());
+// catch (JsonProcessingException ex) {
+// // includes JsonParseException
+// // The Jackson JSON parser, or addition JSON-level check, throws up something.
+// JsonLocation loc = ex.getLocation() ;
+// errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
+// throw new RiotException(ex.getOriginalMessage()) ;
+// }
+// catch (IOException e) {
+// errorHandler.error(e.getMessage(), -1, -1);
+// IO.exception(e) ;
// }
-// if ( t != null )
-// throw new JsonParseException("Document contains possible json content after the json-ld element - (possible mismatched {}?)",
-// jp.getCurrentLocation());
// }
+ // This addresses jsonld-java issue #144 prior to jsonld-java release 0.6.0 in
+ // Jena code so that we get triples/quads out then there is a parse error.
+ // Even if it is fixed in jsonld-java, it would mean that no triples would
+ // be produced - all the JSON parsing is done before JSON-LD processing.
+ // Here we process the first JSON object, which causes triples to be
+ // generated then decide whether to throw a parse error. This is more in the
+ // style of other syntaxes and stream parsing.
+ //
+ // This fix is in jsonld-java itself release 0.6.0 and later.
+ // But.
+ // The fix in jsonld-java is the "readProcess" code JsonUtils.fromReader
+ // without the Consumer. It parses all the JSON, checks for trailing junk,
+ // then returns an object that is converted to RDF objects. All bad JSON
+ // causes no triples or quads.
+ //
+ // The code here extracts the JSON object, generates RDF, then checks for
+ // trailing junk so produces triples/quads then an exception.
+
+ @Override
+ public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {
+ try {
+ readProcess(reader,
+ (jsonObject)->read$(jsonObject, baseURI, ct, output, context)) ;
+ }
+ catch (JsonProcessingException ex) {
+ // includes JsonParseException
+ // The Jackson JSON parser, or addition JSON-level check, throws up something.
+ JsonLocation loc = ex.getLocation() ;
+ errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
+ throw new RiotException(ex.getOriginalMessage()) ;
+ }
+ catch (IOException e) {
+ errorHandler.error(e.getMessage(), -1, -1);
+ IO.exception(e) ;
+ }
+ }
+
+ @Override
+ public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
+ Reader r = FileUtils.asBufferedUTF8(in) ;
+ read(r, baseURI, ct, output, context) ;
+ }
+
+ // From JsonUtils.fromReader in the jsonld-java codebase.
+ // Note that jsonld-java always uses a reader.
+ private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
+ private static final JsonFactory JSON_FACTORY = new JsonFactory(JSON_MAPPER);
+
+ /** Read a JSON object from the reader, acall the prcoessing function, then
+ * check for trailing content. For Jena, this means tripes/quads are generated
+ * from a valid JSON object, then there is a parse error for trailing junk.
+ * @param reader
+ * @param function
+ * @throws IOException
+ */
+ private static void readProcess(Reader reader, Consumer<Object> function) throws IOException {
+ final JsonParser jp = JSON_FACTORY.createParser(reader);
+ Object rval ;
+ final JsonToken initialToken = jp.nextToken();
+
+ if (initialToken == JsonToken.START_ARRAY) {
+ rval = jp.readValueAs(List.class);
+ } else if (initialToken == JsonToken.START_OBJECT) {
+ rval = jp.readValueAs(Map.class);
+ } else if (initialToken == JsonToken.VALUE_STRING) {
+ rval = jp.readValueAs(String.class);
+ } else if (initialToken == JsonToken.VALUE_FALSE || initialToken == JsonToken.VALUE_TRUE) {
+ rval = jp.readValueAs(Boolean.class);
+ } else if (initialToken == JsonToken.VALUE_NUMBER_FLOAT
+ || initialToken == JsonToken.VALUE_NUMBER_INT) {
+ rval = jp.readValueAs(Number.class);
+ } else if (initialToken == JsonToken.VALUE_NULL) {
+ rval = null;
+ } else {
+ throw new JsonParseException("document doesn't start with a valid json element : "
+ + initialToken, jp.getCurrentLocation());
+ }
+
+ function.accept(rval);
+
+ JsonToken t ;
+ try { t = jp.nextToken(); }
+ catch (JsonParseException ex) {
+ throw new JsonParseException("Document contains more content after json-ld element - (possible mismatched {}?)",
+ jp.getCurrentLocation());
+ }
+ if ( t != null )
+ throw new JsonParseException("Document contains possible json content after the json-ld element - (possible mismatched {}?)",
+ jp.getCurrentLocation());
+ }
+
private void read$(Object jsonObject, String baseURI, ContentType ct, final StreamRDF output, Context context) {
if ( parserProfile == null )
parserProfile = RiotLib.profile(RDFLanguages.JSONLD, baseURI, errorHandler) ;
[2/5] jena git commit: JENA-1049: Implement remaining Ops
Posted by an...@apache.org.
JENA-1049: Implement remaining Ops
Because of inner selects, all optimziation ops can also be present in
the form being classified, and hence passed to VarFinder.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4dbae033
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4dbae033
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4dbae033
Branch: refs/heads/master
Commit: 4dbae033d54c15c12a9ce389ff20ec097e8416ef
Parents: 4c9cda4
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Oct 3 10:33:59 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 3 10:33:59 2015 +0100
----------------------------------------------------------------------
.../jena/sparql/engine/main/VarFinder.java | 44 ++++++++++--------
.../sparql/algebra/optimize/TestOptimizer.java | 49 +++++++++++++++++++-
2 files changed, 71 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/4dbae033/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
index 9e60fae..a65b73c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
@@ -30,7 +30,6 @@ import java.util.Map ;
import java.util.Map.Entry ;
import java.util.Set ;
-import org.apache.jena.atlas.lib.NotImplemented ;
import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.algebra.OpVisitor ;
import org.apache.jena.sparql.algebra.op.* ;
@@ -164,15 +163,24 @@ public class VarFinder
@Override
public void visit(OpMinus opMinus) {
- mergeVars(opMinus.getLeft()) ;
- VarUsageVisitor usage = VarUsageVisitor.apply(opMinus.getRight());
+ mergeMinusDiff(opMinus.getLeft(), opMinus.getRight()) ;
+ }
+
+ @Override
+ public void visit(OpDiff opDiff) {
+ mergeMinusDiff(opDiff.getLeft(), opDiff.getRight()) ;
+ }
+
+ private void mergeMinusDiff(Op left, Op right) {
+ mergeVars(left) ;
+ VarUsageVisitor usage = VarUsageVisitor.apply(right);
// Everything in the right side is really a filter.
filterMentions.addAll(usage.defines) ;
filterMentions.addAll(usage.optDefines) ;
filterMentions.addAll(usage.filterMentions) ;
filterMentions.addAll(usage.assignMentions) ;
}
-
+
@Override
public void visit(OpConditional opLeftJoin) {
leftJoin(opLeftJoin.getLeft(), opLeftJoin.getRight(), null);
@@ -292,6 +300,12 @@ public class VarFinder
public void visit(OpList opList) { mergeVars(opList.getSubOp()) ; }
@Override
+ public void visit(OpService opService) { mergeVars(opService.getSubOp()) ; }
+
+ @Override
+ public void visit(OpTopN opTop) { mergeVars(opTop.getSubOp()) ; }
+
+ @Override
public void visit(OpOrder opOrder) {
mergeVars(opOrder.getSubOp()) ;
opOrder.getConditions().forEach(sc-> {
@@ -314,22 +328,12 @@ public class VarFinder
addVar(defines, dsNames.getGraphNode()) ;
}
- // Not implemented: with checking.
-
- private void no() {
- throw new NotImplemented() ;
- }
-
@Override
- public void visit(OpProcedure opProc) { no() ; }
-
- @Override
- public void visit(OpService opService) { no(); }
-
- @Override
- public void visit(OpDiff opDiff) { no(); }
-
- @Override
- public void visit(OpTopN opTop) { no(); }
+ public void visit(OpProcedure opProc) {
+ for ( Expr expr : opProc.getArgs() ) {
+ Set<Var> vars = expr.getVarsMentioned() ;
+ defines.addAll(vars) ;
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/4dbae033/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
index 947bbe4..b8656d0 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
@@ -24,7 +24,6 @@ import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.algebra.op.OpAssign ;
import org.apache.jena.sparql.algebra.op.OpExtend ;
import org.apache.jena.sparql.algebra.op.OpTable ;
-import org.apache.jena.sparql.algebra.optimize.TransformExtendCombine ;
import org.apache.jena.sparql.core.Var ;
import org.apache.jena.sparql.core.VarExprList ;
import org.apache.jena.sparql.expr.ExprVar ;
@@ -292,7 +291,7 @@ public class TestOptimizer extends AbstractTestTransform
// JENA-809 : check no changes to input.
String x = "(project (?x) (extend ((?bar 2)) (extend ((?foo 1)) (table unit))))" ;
String y = "(project (?x) (extend ((?foo 1) (?bar 2)) (table unit)))" ;
- AbstractTestTransform.checkAlgebra(x, new TransformExtendCombine(), y);
+ checkAlgebra(x, new TransformExtendCombine(), y);
}
@@ -362,5 +361,51 @@ public class TestOptimizer extends AbstractTestTransform
AbstractTestTransform.checkAlgebra(x, new TransformExtendCombine(), y);
}
+ // Nested
+/*
+ * String qs = StrUtils.strjoinNL
+ ("select *",
+ "where {",
+ " { select * { ?id ?p ?label } order by ?label limit 5 }",
+ " OPTIONAL { OPTIONAL { ?s ?p ?label }}",
+ "}"
+ );
+ */
+ // Derived from JENA-1041 (inner TopN)
+ @Test public void subselect_01() {
+ String qs = StrUtils.strjoinNL
+ ("select *",
+ "where {",
+ " { select * { ?id ?p ?label } order by ?label limit 5 }",
+ " ?s ?p ?label",
+ "}"
+ );
+ String expected = StrUtils.strjoinNL
+ ("(sequence"
+ ," (top (5 ?label)"
+ ," (bgp (triple ?id ?p ?label)))"
+ ," (bgp (triple ?s ?p ?label)))") ;
+ check(qs, expected) ;
+ }
+
+ // Derived from JENA-1041 (inner TopN)
+ @Test public void subselect_02() {
+ // Has a blocking optional pattern for the join strategy.
+ String qs = StrUtils.strjoinNL
+ ("select *",
+ "where {",
+ " { select * { ?id ?p ?label } order by ?label limit 5 }",
+ " OPTIONAL { OPTIONAL { ?s ?p ?label }}",
+ "}"
+ );
+ String expected = StrUtils.strjoinNL
+ ("(leftjoin"
+ ," (top (5 ?label)"
+ ," (bgp (triple ?id ?p ?label)))"
+ ," (conditional"
+ ," (table unit)"
+ ," (bgp (triple ?s ?p ?label))))") ;
+ check(qs, expected) ;
+ }
}
[3/5] jena git commit: JENA-1038: Convert Jackson JSON parsing
exceptions to RiotException.
Posted by an...@apache.org.
JENA-1038: Convert Jackson JSON parsing exceptions to RiotException.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d2144592
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d2144592
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d2144592
Branch: refs/heads/master
Commit: d21445922b371f9a56cb20df72cd3dae50db0306
Parents: 4dbae03
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Oct 3 11:28:18 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 3 11:28:18 2015 +0100
----------------------------------------------------------------------
.../org/apache/jena/riot/lang/JsonLDReader.java | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d2144592/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
index 367e7fd..cca0f77 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
@@ -25,6 +25,9 @@ import java.util.List ;
import java.util.Map ;
import java.util.Map.Entry;
import java.util.Objects;
+
+import com.fasterxml.jackson.core.JsonLocation ;
+import com.fasterxml.jackson.core.JsonProcessingException ;
import com.github.jsonldjava.core.* ;
import com.github.jsonldjava.utils.JsonUtils ;
@@ -60,6 +63,13 @@ public class JsonLDReader implements ReaderRIOT
Object jsonObject = JsonUtils.fromReader(reader) ;
read$(jsonObject, baseURI, ct, output, context) ;
}
+ catch (JsonProcessingException ex) {
+ // includes JsonParseException
+ // The Jackson JSON parser, or addition JSON-level check, throws up something.
+ JsonLocation loc = ex.getLocation() ;
+ errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
+ throw new RiotException(ex.getOriginalMessage()) ;
+ }
catch (IOException e) {
IO.exception(e) ;
}
@@ -71,18 +81,26 @@ public class JsonLDReader implements ReaderRIOT
Object jsonObject = JsonUtils.fromInputStream(in) ;
read$(jsonObject, baseURI, ct, output, context) ;
}
+ catch (JsonProcessingException ex) {
+ // includes JsonParseException
+ // The Jackson JSON parser, or addition JSON-level check, throws up something.
+ JsonLocation loc = ex.getLocation() ;
+ errorHandler.error(ex.getOriginalMessage(), loc.getLineNr(), loc.getColumnNr());
+ throw new RiotException(ex.getOriginalMessage()) ;
+ }
catch (IOException e) {
IO.exception(e) ;
}
}
- // This addresses jsonld-java issue #144 pre jsonld-java relase 0.6.0 in
+ // This addresses jsonld-java issue #144 prior to jsonld-java release 0.6.0 in
// Jena code so that we get triples/quads out then there is a parse error.
// Even if it is fixed in jsonld-java, it would mean that no triples would
// be produced - all the JSON parsing is done before JSON-LD processing.
// Here we process the first JSON object, which causes triples to be
// generated then decide whether to throw a parse error. This is more in the
// style of other syntaxes and stream parsing.
+ // This fix is in jsonld-java itself release 0.6.0 and later.
// @Override
// public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {