diff --git a/pom.xml b/pom.xml
index b4b9049e..eccbad94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,12 +41,10 @@
0
17
- 4.2.0
+ 5.1.0
UTF-8
17
17
-
- 2.19.0
@@ -76,38 +74,48 @@
ch.qos.logback
logback-classic
- 1.4.14
+ 1.5.6
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ 2.17.2
com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
- 2.12.5
+ 2.17.2
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
- 2.12.5
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.17.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.17.2
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.17.2
com.networknt
json-schema-validator
1.0.78
-
- com.googlecode.json-simple
- json-simple
- 1.1.1
-
org.junit.jupiter
junit-jupiter
- 5.9.2
+ 5.10.3
test
com.opencsv
opencsv
- 5.7.1
+ 5.9
org.lz4
@@ -117,7 +125,7 @@
org.apache.hbase
hbase-common
- 2.5.5
+ 2.6.0
com.beust
@@ -127,13 +135,13 @@
com.github.tomakehurst
wiremock-jre8-standalone
- 2.35.1
+ 2.35.2
test
org.apache.httpcomponents.client5
httpclient5
- 5.3
+ 5.3.1
@@ -142,7 +150,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ 3.13.0
17
@@ -159,7 +167,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.1.2
+ 3.3.1
-Xmx16384M
@@ -169,7 +177,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.4.1
+ 3.6.0
false
iguana
@@ -195,17 +203,16 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.4.0
+ 3.8.0
-html
javadoc/${revision}/
-
maven-resources-plugin
- 3.1.0
+ 3.3.1
copy-resources
@@ -239,7 +246,7 @@
org.junit.platform
junit-platform-launcher
- 1.9.2
+ 1.10.3
test
@@ -248,7 +255,7 @@
org.codehaus.mojo
exec-maven-plugin
- 1.6.0
+ 3.4.1
run-script
@@ -283,7 +290,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.1.2
+ 3.2.5
org.graalvm.buildtools
diff --git a/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlJsonResultCountingParser.java b/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlJsonResultCountingParser.java
index 94277c06..3645ec9e 100644
--- a/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlJsonResultCountingParser.java
+++ b/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlJsonResultCountingParser.java
@@ -1,20 +1,14 @@
package org.aksw.iguana.cc.lang.impl;
+import com.fasterxml.jackson.core.JsonFactory;
import org.aksw.iguana.cc.lang.LanguageProcessor;
-import org.json.simple.parser.ContentHandler;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
-import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
-import static org.json.simple.parser.ParseException.ERROR_UNEXPECTED_EXCEPTION;
/**
* SAX Parser for SPARQL JSON Results.
@@ -30,22 +24,31 @@ public class SaxSparqlJsonResultCountingParser extends LanguageProcessor {
@Override
public LanguageProcessingData process(InputStream inputStream, long hash) {
- var parser = new JSONParser();
var handler = new SaxSparqlJsonResultContentHandler();
- try {
- parser.parse(new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)), handler);
- if (handler.isAskResult())
- return new BooleanResultData(hash, handler.booleanResult(), handler.links(), null);
- return new ResultCountData(hash, handler.solutions(), handler.boundValues(), handler.variables(), handler.links(), null);
+ JsonFactory factory = new JsonFactory();
+ try (var parser = factory.createParser(inputStream)) {
+ while (parser.nextToken() != null) {
+ switch (parser.getCurrentToken()) {
+ case START_OBJECT -> handler.startObject();
+ case END_OBJECT -> handler.endObject();
+ case START_ARRAY -> handler.startArray();
+ case END_ARRAY -> handler.endArray();
+ case FIELD_NAME -> handler.startObjectEntry(parser.getCurrentName());
+ case VALUE_STRING, VALUE_NUMBER_INT, VALUE_NUMBER_FLOAT, VALUE_NULL -> handler.primitive(parser.getValueAsString());
+ case VALUE_TRUE, VALUE_FALSE -> handler.primitive(parser.getBooleanValue());
+ }
+ }
} catch (IOException e) {
- throw new RuntimeException(e);
- } catch (ParseException e) {
- LOGGER.error("Error while parsing SPARQL XML Results.", e);
+ LOGGER.error("Error while parsing SPARQL JSON Results.", e);
return new ResultCountData(hash, -1, -1, null, null, e);
}
+
+ if (handler.isAskResult())
+ return new BooleanResultData(hash, handler.booleanResult(), handler.links(), null);
+ return new ResultCountData(hash, handler.solutions(), handler.boundValues(), handler.variables(), handler.links(), null);
}
- private static class SaxSparqlJsonResultContentHandler implements ContentHandler {
+ private static class SaxSparqlJsonResultContentHandler {
// TODO: code is unnecessary complicated
private boolean headFound = false;
@@ -64,18 +67,6 @@ private static class SaxSparqlJsonResultContentHandler implements ContentHandler
private final List variables = new ArrayList<>();
private final List links = new ArrayList<>();
-
- @Override
- public void startJSON() {
- }
-
- @Override
- public void endJSON() throws ParseException {
- if (inResults || inBindings || inBindingsArray || !headFound || objectDepth != 0)
- throw new ParseException(ERROR_UNEXPECTED_EXCEPTION, "SPARQL Json Response was malformed.");
- }
-
- @Override
public boolean startObject() {
objectDepth += 1;
if (inBindingsArray) {
@@ -87,7 +78,6 @@ public boolean startObject() {
return true;
}
- @Override
public boolean endObject() {
switch (objectDepth) {
case 1:
@@ -104,7 +94,6 @@ public boolean endObject() {
return true;
}
- @Override
public boolean startArray() {
if (objectDepth == 2 && inResults && inBindings && !inBindingsArray) {
inBindingsArray = true;
@@ -112,7 +101,6 @@ public boolean startArray() {
return true;
}
- @Override
public boolean endArray() {
if (inVars)
inVars = false;
@@ -125,7 +113,6 @@ public boolean endArray() {
}
- @Override
public boolean startObjectEntry(String key) {
switch (objectDepth) {
case 1 -> {
@@ -156,11 +143,6 @@ public boolean startObjectEntry(String key) {
return true;
}
- @Override
- public boolean endObjectEntry() {
- return true;
- }
-
public boolean primitive(Object value) {
if (inVars)
variables.add(value.toString());
diff --git a/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlXmlResultCountingParser.java b/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlXmlResultCountingParser.java
index afde5513..1cff6a03 100644
--- a/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlXmlResultCountingParser.java
+++ b/src/main/java/org/aksw/iguana/cc/lang/impl/SaxSparqlXmlResultCountingParser.java
@@ -1,13 +1,6 @@
package org.aksw.iguana.cc.lang.impl;
import org.aksw.iguana.cc.lang.LanguageProcessor;
-import org.aksw.iguana.cc.storage.Storable;
-import org.aksw.iguana.commons.rdf.IPROP;
-import org.aksw.iguana.commons.rdf.IRES;
-import org.apache.jena.rdf.model.Model;
-import org.apache.jena.rdf.model.ModelFactory;
-import org.apache.jena.rdf.model.Resource;
-import org.apache.jena.rdf.model.ResourceFactory;
import org.slf4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -22,8 +15,6 @@
import java.util.List;
import java.util.Objects;
-import static org.json.simple.parser.ParseException.ERROR_UNEXPECTED_EXCEPTION;
-
/**
* SAX Parser for SPARQL XML Results.
* For correct SPARQL XML Results it returns the number of solutions, bound values, the names of the variables and links.
diff --git a/src/main/java/org/aksw/iguana/cc/metrics/impl/AvgQPS.java b/src/main/java/org/aksw/iguana/cc/metrics/impl/AvgQPS.java
index cb27e55b..3a271a20 100644
--- a/src/main/java/org/aksw/iguana/cc/metrics/impl/AvgQPS.java
+++ b/src/main/java/org/aksw/iguana/cc/metrics/impl/AvgQPS.java
@@ -22,7 +22,7 @@ public Number calculateTaskMetric(List workers, List workers, List (BigDecimal) this.calculateWorkerMetric(worker.config(), data[(int) worker.getWorkerID()]))
.reduce(BigDecimal.ZERO, BigDecimal::add);
- return sum;
+ return sum.stripTrailingZeros();
}
@Override
@@ -39,7 +39,7 @@ public Number calculateWorkerMetric(HttpWorker.Config worker, List workers, List data) {
BigDecimal tt = (new BigDecimal(BigInteger.valueOf(totalTime.toNanos()), 9));
try {
- return numberOfExecutions.divide(tt, 10, RoundingMode.HALF_UP);
+ return numberOfExecutions.divide(tt, 10, RoundingMode.HALF_UP).stripTrailingZeros();
} catch (ArithmeticException e) {
return BigDecimal.ZERO;
}
diff --git a/src/main/java/org/aksw/iguana/cc/metrics/impl/QMPH.java b/src/main/java/org/aksw/iguana/cc/metrics/impl/QMPH.java
index d2ae1914..ab60be12 100644
--- a/src/main/java/org/aksw/iguana/cc/metrics/impl/QMPH.java
+++ b/src/main/java/org/aksw/iguana/cc/metrics/impl/QMPH.java
@@ -22,7 +22,7 @@ public Number calculateTaskMetric(List workers, List (BigDecimal) this.calculateWorkerMetric(worker.config(), data[(int) worker.getWorkerID()]))
.reduce(BigDecimal.ZERO, BigDecimal::add);
- return sum;
+ return sum.stripTrailingZeros();
}
@Override
@@ -41,7 +41,7 @@ public Number calculateWorkerMetric(HttpWorker.Config worker, List data) {
}
BigDecimal tt = (new BigDecimal(BigInteger.valueOf(totalTime.toNanos()), 9));
try {
- return successes.divide(tt, 10, RoundingMode.HALF_UP);
+ return successes.divide(tt, 10, RoundingMode.HALF_UP).stripTrailingZeros();
} catch (ArithmeticException e) {
return BigDecimal.ZERO;
}
diff --git a/src/main/java/org/aksw/iguana/cc/query/handler/QueryHandler.java b/src/main/java/org/aksw/iguana/cc/query/handler/QueryHandler.java
index 6930d3f1..eca7cbf6 100644
--- a/src/main/java/org/aksw/iguana/cc/query/handler/QueryHandler.java
+++ b/src/main/java/org/aksw/iguana/cc/query/handler/QueryHandler.java
@@ -17,6 +17,10 @@
import org.aksw.iguana.cc.query.source.impl.FileSeparatorQuerySource;
import org.aksw.iguana.cc.query.source.impl.FolderQuerySource;
import org.apache.jena.query.*;
+import org.apache.jena.sparql.exec.http.QueryExecutionHTTP;
+import org.apache.jena.sparql.exec.http.QueryExecutionHTTPBuilder;
+import org.apache.jena.sparql.service.single.ServiceExecutor;
+import org.apache.jena.sparql.service.single.ServiceExecutorHttp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -358,7 +362,7 @@ private static List instantiateTemplateQueries(QuerySource querySource,
selectQueryString.setNsPrefixes(templateQuery.getPrefixMapping());
// send request to SPARQL endpoint and instantiate the template based on results
- try (QueryExecution exec = QueryExecutionFactory.createServiceRequest(config.endpoint().toString(), selectQueryString.asQuery())) {
+ try (QueryExecution exec = QueryExecutionHTTP.service(config.endpoint().toString(), selectQueryString.asQuery())) {
ResultSet resultSet = exec.execSelect();
if (!resultSet.hasNext()) {
LOGGER.warn("No results for query template: {}", templateQueryString);
diff --git a/src/main/java/org/aksw/iguana/cc/storage/impl/TriplestoreStorage.java b/src/main/java/org/aksw/iguana/cc/storage/impl/TriplestoreStorage.java
index d391d3b2..cebb01ab 100644
--- a/src/main/java/org/aksw/iguana/cc/storage/impl/TriplestoreStorage.java
+++ b/src/main/java/org/aksw/iguana/cc/storage/impl/TriplestoreStorage.java
@@ -4,25 +4,20 @@
import org.aksw.iguana.cc.config.elements.StorageConfig;
import org.aksw.iguana.cc.controller.MainController;
import org.aksw.iguana.cc.storage.Storage;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.HttpClients;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.RDFDataMgr;
-import org.apache.jena.update.UpdateExecutionFactory;
+import org.apache.jena.sparql.exec.http.UpdateExecutionHTTP;
import org.apache.jena.update.UpdateFactory;
import org.apache.jena.update.UpdateProcessor;
import org.apache.jena.update.UpdateRequest;
-import org.mortbay.jetty.Main;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.StringWriter;
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
+import java.net.http.HttpClient;
/**
@@ -79,8 +74,7 @@ public void storeResult(Model data) {
blockRequest.add(update);
//submit Block to Triple Store
- UpdateProcessor processor = UpdateExecutionFactory
- .createRemote(blockRequest, endpoint, createHttpClient());
+ UpdateProcessor processor = UpdateExecutionHTTP.service(endpoint).update(blockRequest).httpClient(createHttpClient()).build();
// If dry run is enabled, the data will not be sent to an existing triplestore,
// therefore we catch the exception and log it instead of letting the program crash.
@@ -99,15 +93,16 @@ public void storeResult(Model data) {
}
private HttpClient createHttpClient() {
- CredentialsProvider credsProvider = new BasicCredentialsProvider();
+ final var httpClient = HttpClient.newBuilder();
if(user != null && password != null){
- Credentials credentials = new UsernamePasswordCredentials(user, password);
- credsProvider.setCredentials(AuthScope.ANY, credentials);
+ httpClient.authenticator(new Authenticator() {
+ @Override
+ protected PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication(user, password.toCharArray());
+ }
+ });
}
- HttpClient httpclient = HttpClients.custom()
- .setDefaultCredentialsProvider(credsProvider)
- .build();
- return httpclient;
+ return httpClient.build();
}
@Override