diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml
new file mode 100644
index 00000000000..78cd10c4988
--- /dev/null
+++ b/.github/workflows/hugo.yml
@@ -0,0 +1,74 @@
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ env:
+ HUGO_VERSION: 0.128.0
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+ - name: Install Dart Sass
+ run: sudo snap install dart-sass
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v5
+ - name: Install Node.js dependencies
+ run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+ - name: Build with Hugo
+ env:
+ HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
+ HUGO_ENVIRONMENT: production
+ run: |
+ hugo --source site \
+ --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./site/public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/assembly-descriptors/pom.xml b/assembly-descriptors/pom.xml
index adb16157dc8..2fbb6b00055 100644
--- a/assembly-descriptors/pom.xml
+++ b/assembly-descriptors/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-assembly-descriptors
RDF4J: Assembly Descriptors
diff --git a/assembly/pom.xml b/assembly/pom.xml
index a88d567f0e5..1358dc49ae1 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-assembly
pom
diff --git a/bom/pom.xml b/bom/pom.xml
index f9a2a634d30..e7576dd0f63 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-bom
pom
@@ -413,7 +413,13 @@
org.lwjgl
lwjgl-lmdb
- natives-macos-arm64
+ natives-linux-arm64
+ ${lwjgl.version}
+
+
+ org.lwjgl
+ lwjgl-lmdb
+ natives-linux-ppc64le
${lwjgl.version}
@@ -422,18 +428,42 @@
natives-macos
${lwjgl.version}
+
+ org.lwjgl
+ lwjgl-lmdb
+ natives-macos-arm64
+ ${lwjgl.version}
+
org.lwjgl
lwjgl-lmdb
natives-windows
${lwjgl.version}
+
+ org.lwjgl
+ lwjgl-lmdb
+ natives-windows-arm64
+ ${lwjgl.version}
+
org.lwjgl
lwjgl
natives-linux
${lwjgl.version}
+
+ org.lwjgl
+ lwjgl
+ natives-linux-arm64
+ ${lwjgl.version}
+
+
+ org.lwjgl
+ lwjgl
+ natives-linux-ppc64le
+ ${lwjgl.version}
+
org.lwjgl
lwjgl
@@ -452,6 +482,12 @@
natives-windows
${lwjgl.version}
+
+ org.lwjgl
+ lwjgl
+ natives-windows-arm64
+ ${lwjgl.version}
+
diff --git a/compliance/elasticsearch/pom.xml b/compliance/elasticsearch/pom.xml
index 794dacb7bd7..0d0d0f1d423 100644
--- a/compliance/elasticsearch/pom.xml
+++ b/compliance/elasticsearch/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-elasticsearch-compliance
RDF4J: Elasticsearch Sail Tests
diff --git a/compliance/geosparql/pom.xml b/compliance/geosparql/pom.xml
index 41e8785595b..5ca63a92a92 100644
--- a/compliance/geosparql/pom.xml
+++ b/compliance/geosparql/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-geosparql-compliance
RDF4J: GeoSPARQL compliance tests
diff --git a/compliance/lucene/pom.xml b/compliance/lucene/pom.xml
index dcf84054c6d..a8ba5050a29 100644
--- a/compliance/lucene/pom.xml
+++ b/compliance/lucene/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-lucene-compliance
RDF4J: Lucene Sail Tests
diff --git a/compliance/model/pom.xml b/compliance/model/pom.xml
index 3d3ac105fa9..d79740b4095 100644
--- a/compliance/model/pom.xml
+++ b/compliance/model/pom.xml
@@ -3,7 +3,7 @@
rdf4j-compliance
org.eclipse.rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
4.0.0
rdf4j-model-compliance
diff --git a/compliance/pom.xml b/compliance/pom.xml
index 7a3f7a3e7ff..37a94c5c17f 100644
--- a/compliance/pom.xml
+++ b/compliance/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-compliance
pom
diff --git a/compliance/repository/pom.xml b/compliance/repository/pom.xml
index 069ade53eec..a06214fbca3 100644
--- a/compliance/repository/pom.xml
+++ b/compliance/repository/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-compliance
war
diff --git a/compliance/rio/pom.xml b/compliance/rio/pom.xml
index 850062bf2f4..e5e4f7762a3 100644
--- a/compliance/rio/pom.xml
+++ b/compliance/rio/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-compliance
RDF4J: Rio compliance tests
diff --git a/compliance/solr/pom.xml b/compliance/solr/pom.xml
index 454f5295ca6..288f56f3ea8 100644
--- a/compliance/solr/pom.xml
+++ b/compliance/solr/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-solr-compliance
RDF4J: Solr Sail Tests
diff --git a/compliance/sparql/pom.xml b/compliance/sparql/pom.xml
index 3340661c18d..967c04284e3 100644
--- a/compliance/sparql/pom.xml
+++ b/compliance/sparql/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-compliance
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sparql-compliance
war
diff --git a/core/client/pom.xml b/core/client/pom.xml
index 845360a26cc..754202c6af5 100644
--- a/core/client/pom.xml
+++ b/core/client/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-client
RDF4J: Client Libraries
diff --git a/core/collection-factory/api/pom.xml b/core/collection-factory/api/pom.xml
index 5ba6df646b7..52c8d8ddb4a 100644
--- a/core/collection-factory/api/pom.xml
+++ b/core/collection-factory/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-collection-factory
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-collection-factory-api
RDF4J: Collection Factory - API
diff --git a/core/collection-factory/mapdb/pom.xml b/core/collection-factory/mapdb/pom.xml
index c8e843b984e..021ede2ae0a 100644
--- a/core/collection-factory/mapdb/pom.xml
+++ b/core/collection-factory/mapdb/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-collection-factory
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-collection-factory-mapdb
RDF4J: Collection Factory - Map DB backed
diff --git a/core/collection-factory/mapdb3/pom.xml b/core/collection-factory/mapdb3/pom.xml
index a00d4c8e811..c7e19c660d1 100644
--- a/core/collection-factory/mapdb3/pom.xml
+++ b/core/collection-factory/mapdb3/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-collection-factory
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-collection-factory-mapdb3
RDF4J: Collection Factory - Map DB v3 backed
diff --git a/core/collection-factory/pom.xml b/core/collection-factory/pom.xml
index bb1df7bb226..921b427e139 100644
--- a/core/collection-factory/pom.xml
+++ b/core/collection-factory/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-collection-factory
pom
diff --git a/core/common/annotation/pom.xml b/core/common/annotation/pom.xml
index f5f53a65e21..9db7a775bbc 100644
--- a/core/common/annotation/pom.xml
+++ b/core/common/annotation/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-annotation
RDF4J: common annotation
diff --git a/core/common/exception/pom.xml b/core/common/exception/pom.xml
index bbd533f1adf..32343327681 100644
--- a/core/common/exception/pom.xml
+++ b/core/common/exception/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-exception
RDF4J: common exception
diff --git a/core/common/io/pom.xml b/core/common/io/pom.xml
index f99f7f2af4e..ab867a77557 100644
--- a/core/common/io/pom.xml
+++ b/core/common/io/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-io
RDF4J: common IO
diff --git a/core/common/iterator/pom.xml b/core/common/iterator/pom.xml
index c8b62012574..8944d6c580d 100644
--- a/core/common/iterator/pom.xml
+++ b/core/common/iterator/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-iterator
RDF4J: common iterators
diff --git a/core/common/order/pom.xml b/core/common/order/pom.xml
index 5228081fc0e..31b5d67cb71 100644
--- a/core/common/order/pom.xml
+++ b/core/common/order/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-order
RDF4J: common order
diff --git a/core/common/pom.xml b/core/common/pom.xml
index fc821867500..b8a4c182f01 100644
--- a/core/common/pom.xml
+++ b/core/common/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common
pom
diff --git a/core/common/text/pom.xml b/core/common/text/pom.xml
index f26391a3d11..f1b254c8b84 100644
--- a/core/common/text/pom.xml
+++ b/core/common/text/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-text
RDF4J: common text
diff --git a/core/common/transaction/pom.xml b/core/common/transaction/pom.xml
index 2a327eba54c..fe83ae7ebe5 100644
--- a/core/common/transaction/pom.xml
+++ b/core/common/transaction/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-transaction
RDF4J: common transaction
diff --git a/core/common/xml/pom.xml b/core/common/xml/pom.xml
index 76184d6e127..f17d0c61e27 100644
--- a/core/common/xml/pom.xml
+++ b/core/common/xml/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-common
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-common-xml
RDF4J: common XML
diff --git a/core/http/client/pom.xml b/core/http/client/pom.xml
index 8e26e6c8d3f..9fb3abea679 100644
--- a/core/http/client/pom.xml
+++ b/core/http/client/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-http
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-http-client
RDF4J: HTTP client
diff --git a/core/http/pom.xml b/core/http/pom.xml
index ee3e0261ad0..01f9cebdf42 100644
--- a/core/http/pom.xml
+++ b/core/http/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-http
pom
diff --git a/core/http/protocol/pom.xml b/core/http/protocol/pom.xml
index a5d66a693e0..99208cdb401 100644
--- a/core/http/protocol/pom.xml
+++ b/core/http/protocol/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-http
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-http-protocol
RDF4J: HTTP protocol
diff --git a/core/model-api/pom.xml b/core/model-api/pom.xml
index cf07e38798c..dffa76212f4 100644
--- a/core/model-api/pom.xml
+++ b/core/model-api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-model-api
RDF4J: Model API
diff --git a/core/model-vocabulary/pom.xml b/core/model-vocabulary/pom.xml
index bd27791c1d8..72f384c8fe5 100644
--- a/core/model-vocabulary/pom.xml
+++ b/core/model-vocabulary/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-model-vocabulary
RDF4J: RDF Vocabularies
diff --git a/core/model/pom.xml b/core/model/pom.xml
index 17a4deb868b..e72b78585a7 100644
--- a/core/model/pom.xml
+++ b/core/model/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-model
RDF4J: Model
diff --git a/core/model/src/main/java/org/eclipse/rdf4j/model/util/URIUtil.java b/core/model/src/main/java/org/eclipse/rdf4j/model/util/URIUtil.java
index e3495f23d43..8fb9789c0df 100644
--- a/core/model/src/main/java/org/eclipse/rdf4j/model/util/URIUtil.java
+++ b/core/model/src/main/java/org/eclipse/rdf4j/model/util/URIUtil.java
@@ -228,6 +228,19 @@ public static boolean isValidLocalName(String name) {
for (int i = 1; i < name.length(); i++) {
if (!isNameChar(name.charAt(i))) {
+
+ // PLX
+ if (name.charAt(i) == '%') {
+ continue;
+ } else if (name.charAt(i) == '\\') {
+ if (i + 1 < name.length() && isPN_LOCAL_ESC(name.substring(i, i + 2))) {
+ i++;
+ continue;
+ } else {
+ return false;
+ }
+ }
+
return false;
}
@@ -341,7 +354,7 @@ private static boolean isNameStartChar(int codePoint) {
* @return true
if the supplied code point represents a valid name char, false
otherwise.
*/
private static boolean isNameChar(int codePoint) {
- return isPN_CHARS(codePoint) || codePoint == '.' || codePoint == ':' | codePoint == '\\' || codePoint == '%';
+ return isPN_CHARS(codePoint) || codePoint == '.' || codePoint == ':';
}
/**
diff --git a/core/model/src/test/java/org/eclipse/rdf4j/model/util/URIUtilTest.java b/core/model/src/test/java/org/eclipse/rdf4j/model/util/URIUtilTest.java
index 767ef29ae09..f8ade38b236 100644
--- a/core/model/src/test/java/org/eclipse/rdf4j/model/util/URIUtilTest.java
+++ b/core/model/src/test/java/org/eclipse/rdf4j/model/util/URIUtilTest.java
@@ -108,5 +108,6 @@ public void isValidLocalName() {
assertFalse(URIUtil.isValidLocalName("foo\tbar"));
assertFalse(URIUtil.isValidLocalName("foo\nbar"));
assertFalse(URIUtil.isValidLocalName("*foobar"));
+ assertTrue(URIUtil.isValidLocalName("fo\\'obar"));
}
}
diff --git a/core/pom.xml b/core/pom.xml
index ed94faedcde..d5c5715feb3 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-core
pom
diff --git a/core/query/pom.xml b/core/query/pom.xml
index 6600bd51a4e..b26d97633a1 100644
--- a/core/query/pom.xml
+++ b/core/query/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-query
RDF4J: Query
diff --git a/core/queryalgebra/evaluation/pom.xml b/core/queryalgebra/evaluation/pom.xml
index a29c5f1ab29..7221c1c612b 100644
--- a/core/queryalgebra/evaluation/pom.xml
+++ b/core/queryalgebra/evaluation/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryalgebra
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryalgebra-evaluation
RDF4J: Query algebra - evaluation
diff --git a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/impl/evaluationsteps/RegexValueEvaluationStepSupplier.java b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/impl/evaluationsteps/RegexValueEvaluationStepSupplier.java
index 5fead2eab96..0d2fa5c7b52 100644
--- a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/impl/evaluationsteps/RegexValueEvaluationStepSupplier.java
+++ b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/impl/evaluationsteps/RegexValueEvaluationStepSupplier.java
@@ -38,6 +38,9 @@ public class RegexValueEvaluationStepSupplier {
private static final class ChangingRegexQueryValueEvaluationStep implements QueryValueEvaluationStep {
private final Regex node;
private final EvaluationStrategy strategy;
+ private Value parg;
+ private Value farg;
+ private Pattern pattern;
private ChangingRegexQueryValueEvaluationStep(Regex node, EvaluationStrategy strategy) {
this.node = node;
@@ -56,16 +59,33 @@ public Value evaluate(BindingSet bindings) throws QueryEvaluationException {
if (QueryEvaluationUtility.isStringLiteral(arg) && QueryEvaluationUtility.isSimpleLiteral(parg)
&& (farg == null || QueryEvaluationUtility.isSimpleLiteral(farg))) {
+
+ Pattern pattern = getPattern((Literal) parg, farg);
+
String text = ((Literal) arg).getLabel();
- String ptn = ((Literal) parg).getLabel();
- // TODO should this Pattern be cached?
- int f = extractRegexFlags(farg);
- Pattern pattern = Pattern.compile(ptn, f);
boolean result = pattern.matcher(text).find();
return BooleanLiteral.valueOf(result);
}
throw new ValueExprEvaluationException();
}
+
+ private Pattern getPattern(Literal parg, Value farg) {
+ if (this.parg == parg && this.farg == farg) {
+ return pattern;
+ }
+
+ String ptn = parg.getLabel();
+ int f = extractRegexFlags(farg);
+ Pattern pattern = Pattern.compile(ptn, f);
+
+ // cache the pattern object and the current parg and farg so that we can reuse it if the parg and farg are
+ // reused or somehow constant
+ this.parg = parg;
+ this.farg = farg;
+ this.pattern = pattern;
+
+ return pattern;
+ }
}
public static QueryValueEvaluationStep make(EvaluationStrategy strategy, Regex node,
diff --git a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/iterator/LeftJoinIterator.java b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/iterator/LeftJoinIterator.java
index 45022b5f59b..adae64942aa 100644
--- a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/iterator/LeftJoinIterator.java
+++ b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/iterator/LeftJoinIterator.java
@@ -175,8 +175,6 @@ protected BindingSet getNextElement() throws QueryEvaluationException {
// Join failed, return left arg's bindings
return leftBindings;
}
-
- return null;
}
} catch (NoSuchElementException ignore) {
// probably, one of the iterations has been closed concurrently in
diff --git a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/ConjunctiveConstraintSplitterOptimizer.java b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/ConjunctiveConstraintSplitterOptimizer.java
index 18f503e9dd7..b9a0f78765f 100644
--- a/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/ConjunctiveConstraintSplitterOptimizer.java
+++ b/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/ConjunctiveConstraintSplitterOptimizer.java
@@ -69,7 +69,7 @@ public void meet(LeftJoin node) {
super.meet(node);
if (node.getCondition() != null) {
- List conjunctiveConstraints = new ArrayList<>(16);
+ List conjunctiveConstraints = new ArrayList<>();
getConjunctiveConstraints(node.getCondition(), conjunctiveConstraints);
TupleExpr arg = node.getRightArg();
diff --git a/core/queryalgebra/geosparql/pom.xml b/core/queryalgebra/geosparql/pom.xml
index 10fcbc837ce..c2bd3c9d5ee 100644
--- a/core/queryalgebra/geosparql/pom.xml
+++ b/core/queryalgebra/geosparql/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryalgebra
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryalgebra-geosparql
RDF4J: Query algebra - GeoSPARQL
diff --git a/core/queryalgebra/model/pom.xml b/core/queryalgebra/model/pom.xml
index c561441a066..22b0ef499fc 100644
--- a/core/queryalgebra/model/pom.xml
+++ b/core/queryalgebra/model/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryalgebra
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryalgebra-model
RDF4J: Query algebra - model
diff --git a/core/queryalgebra/pom.xml b/core/queryalgebra/pom.xml
index fb04d8339cd..51b27bfecb8 100644
--- a/core/queryalgebra/pom.xml
+++ b/core/queryalgebra/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryalgebra
pom
diff --git a/core/queryparser/api/pom.xml b/core/queryparser/api/pom.xml
index 6450c375f42..96ce143d209 100644
--- a/core/queryparser/api/pom.xml
+++ b/core/queryparser/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryparser
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryparser-api
RDF4J: Query parser - API
diff --git a/core/queryparser/pom.xml b/core/queryparser/pom.xml
index 0dfcb8573d3..4a2fb7ff244 100644
--- a/core/queryparser/pom.xml
+++ b/core/queryparser/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryparser
pom
diff --git a/core/queryparser/sparql/pom.xml b/core/queryparser/sparql/pom.xml
index d21ecf2b1b2..df76f81bd38 100644
--- a/core/queryparser/sparql/pom.xml
+++ b/core/queryparser/sparql/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryparser
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryparser-sparql
RDF4J: Query parser - SPARQL
diff --git a/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/SyntaxTreeBuilderTokenManager.java b/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/SyntaxTreeBuilderTokenManager.java
index 7844df6e4b5..4e48ce7b458 100644
--- a/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/SyntaxTreeBuilderTokenManager.java
+++ b/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/SyntaxTreeBuilderTokenManager.java
@@ -2296,7 +2296,7 @@ private int jjMoveNfa_0_curCharLessThan64(int startsAt, int i, int kind) {
}
break;
case 82:
- if ((0xa800ff7e00000000L & l) != 0L) {
+ if ((0xa800fffa00000000L & l) != 0L) {
jjCheckNAddStates(44, 47);
}
break;
@@ -2326,12 +2326,12 @@ private int jjMoveNfa_0_curCharLessThan64(int startsAt, int i, int kind) {
}
break;
case 88:
- if ((0xa800ff7e00000000L & l) != 0L && kind > 146) {
+ if ((0xa800fffa00000000L & l) != 0L && kind > 146) {
kind = 146;
}
break;
case 90:
- if ((0xa800ff7e00000000L & l) == 0L) {
+ if ((0xa800fffa00000000L & l) == 0L) {
break;
}
if (kind > 146) {
diff --git a/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/sparql.jjt b/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/sparql.jjt
index 1c1fc5eaf65..83f93871829 100644
--- a/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/sparql.jjt
+++ b/core/queryparser/sparql/src/main/java/org/eclipse/rdf4j/query/parser/sparql/ast/sparql.jjt
@@ -345,7 +345,7 @@ TOKEN:
| <#PN_LOCAL: ( | ":" | | ) ( ( | "." | ":" | )* ( | ":" | ) )?>
| <#PLX: | >
| <#PERCENT: "%" >
-| <#PN_LOCAL_ESC: "\\" [ "_", "~", ".", "-", "!", "$", "&", "\"", "(", ")", "*", "+", ",", ";", "=", "/", "?", "#", "@", "%" ]>
+| <#PN_LOCAL_ESC: "\\" [ "_", "~", ".", "-", "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "=", "/", "?", "#", "@", "%" ]>
| <#VARNAME: ( | ) ()*>
|
| >">
diff --git a/core/queryparser/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/SPARQLParserTest.java b/core/queryparser/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/SPARQLParserTest.java
index 81912e2b320..fa963633783 100644
--- a/core/queryparser/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/SPARQLParserTest.java
+++ b/core/queryparser/sparql/src/test/java/org/eclipse/rdf4j/query/parser/sparql/SPARQLParserTest.java
@@ -976,6 +976,32 @@ public void testGroupByProjectionHandling_function() {
verifySerializable(parsedQuery.getTupleExpr());
}
+ @Test
+ public void testApostrophe() {
+ String query = "PREFIX rdf: \n" +
+ "select * where { \n" +
+ " rdf:Test\\'s ?p1 ?o1\n" +
+ "}";
+
+ HashSet customPrefixes = new HashSet<>();
+ SPARQLParser parser = new SPARQLParser(customPrefixes);
+
+ parser.parseQuery(query, null);
+ }
+
+ @Test
+ public void testApostropheInsertData() {
+ String query = "PREFIX rdf: \n" +
+ "INSERT DATA { \n" +
+ " rdf:Test\\'s a .\n" +
+ "}";
+
+ HashSet customPrefixes = new HashSet<>();
+ SPARQLParser parser = new SPARQLParser(customPrefixes);
+
+ parser.parseUpdate(query, null);
+ }
+
private AggregateFunctionFactory buildDummyFactory() {
return new AggregateFunctionFactory() {
@Override
diff --git a/core/queryrender/pom.xml b/core/queryrender/pom.xml
index 8db12169a80..3f564ba28f4 100644
--- a/core/queryrender/pom.xml
+++ b/core/queryrender/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryrender
RDF4J: Query Rendering
diff --git a/core/queryresultio/api/pom.xml b/core/queryresultio/api/pom.xml
index 273fe3b9801..0bc1bb4cdee 100644
--- a/core/queryresultio/api/pom.xml
+++ b/core/queryresultio/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryresultio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio-api
RDF4J: Query result IO - API
diff --git a/core/queryresultio/binary/pom.xml b/core/queryresultio/binary/pom.xml
index 34df6c0b64f..1980bd8146f 100644
--- a/core/queryresultio/binary/pom.xml
+++ b/core/queryresultio/binary/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryresultio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio-binary
RDF4J: Query result IO - binary
diff --git a/core/queryresultio/pom.xml b/core/queryresultio/pom.xml
index c1ba95a8c53..b1f7d9c7c67 100644
--- a/core/queryresultio/pom.xml
+++ b/core/queryresultio/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio
pom
diff --git a/core/queryresultio/sparqljson/pom.xml b/core/queryresultio/sparqljson/pom.xml
index c5f589b6457..fb430470942 100644
--- a/core/queryresultio/sparqljson/pom.xml
+++ b/core/queryresultio/sparqljson/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryresultio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio-sparqljson
RDF4J: Query result IO - SPARQL/JSON
diff --git a/core/queryresultio/sparqlxml/pom.xml b/core/queryresultio/sparqlxml/pom.xml
index 8d7bee2745b..c5e3e084e61 100644
--- a/core/queryresultio/sparqlxml/pom.xml
+++ b/core/queryresultio/sparqlxml/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryresultio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio-sparqlxml
RDF4J: Query result IO - SPARQL/XML
diff --git a/core/queryresultio/text/pom.xml b/core/queryresultio/text/pom.xml
index e5f67e0b32e..a65e35756e2 100644
--- a/core/queryresultio/text/pom.xml
+++ b/core/queryresultio/text/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-queryresultio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-queryresultio-text
RDF4J: Query result IO - plain text booleans
diff --git a/core/repository/api/pom.xml b/core/repository/api/pom.xml
index 48fdeecfad7..c927da7ef81 100644
--- a/core/repository/api/pom.xml
+++ b/core/repository/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-api
RDF4J: Repository - API
diff --git a/core/repository/contextaware/pom.xml b/core/repository/contextaware/pom.xml
index 39bcbf0668c..49cd4bf9a57 100644
--- a/core/repository/contextaware/pom.xml
+++ b/core/repository/contextaware/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-contextaware
RDF4J: Repository - context aware (wrapper)
diff --git a/core/repository/dataset/pom.xml b/core/repository/dataset/pom.xml
index c843dccda42..ab3e4dcf21c 100644
--- a/core/repository/dataset/pom.xml
+++ b/core/repository/dataset/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-dataset
RDF4J: DatasetRepository (wrapper)
diff --git a/core/repository/event/pom.xml b/core/repository/event/pom.xml
index 3a3109cf967..703e26bd376 100644
--- a/core/repository/event/pom.xml
+++ b/core/repository/event/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-event
RDF4J: Repository - event (wrapper)
diff --git a/core/repository/http/pom.xml b/core/repository/http/pom.xml
index 4fc07dc06e9..7e8c280892a 100644
--- a/core/repository/http/pom.xml
+++ b/core/repository/http/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-http
RDF4J: HTTPRepository
diff --git a/core/repository/manager/pom.xml b/core/repository/manager/pom.xml
index bad53d7101e..941107914b9 100644
--- a/core/repository/manager/pom.xml
+++ b/core/repository/manager/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-manager
RDF4J: Repository manager
diff --git a/core/repository/pom.xml b/core/repository/pom.xml
index 873757a9580..d2ce3b841b9 100644
--- a/core/repository/pom.xml
+++ b/core/repository/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository
pom
diff --git a/core/repository/sail/pom.xml b/core/repository/sail/pom.xml
index fb8fc483b2b..7f04e4d7115 100644
--- a/core/repository/sail/pom.xml
+++ b/core/repository/sail/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-sail
RDF4J: SailRepository
diff --git a/core/repository/sail/src/main/java/org/eclipse/rdf4j/repository/sail/helpers/SailUpdateExecutor.java b/core/repository/sail/src/main/java/org/eclipse/rdf4j/repository/sail/helpers/SailUpdateExecutor.java
index 06fcf840f25..edd0f0a812c 100644
--- a/core/repository/sail/src/main/java/org/eclipse/rdf4j/repository/sail/helpers/SailUpdateExecutor.java
+++ b/core/repository/sail/src/main/java/org/eclipse/rdf4j/repository/sail/helpers/SailUpdateExecutor.java
@@ -447,8 +447,8 @@ protected void executeModify(Modify modify, UpdateContext uc, int maxExecutionTi
whereClause, uc, maxExecutionTime)) {
while (sourceBindings.hasNext()) {
BindingSet sourceBinding = sourceBindings.next();
- deleteBoundTriples(sourceBinding, modify.getDeleteExpr(), uc);
+ deleteBoundTriples(sourceBinding, modify.getDeleteExpr(), uc);
insertBoundTriples(sourceBinding, modify.getInsertExpr(), uc);
}
}
diff --git a/core/repository/sparql/pom.xml b/core/repository/sparql/pom.xml
index 66d5ee263ce..73657f7033f 100644
--- a/core/repository/sparql/pom.xml
+++ b/core/repository/sparql/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-repository
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-repository-sparql
RDF4J: SPARQL Repository
diff --git a/core/rio/api/pom.xml b/core/rio/api/pom.xml
index 3733b074423..5eccc28ef51 100644
--- a/core/rio/api/pom.xml
+++ b/core/rio/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-api
RDF4J: Rio - API
diff --git a/core/rio/binary/pom.xml b/core/rio/binary/pom.xml
index 4ff5469eddf..1c9b4507e77 100644
--- a/core/rio/binary/pom.xml
+++ b/core/rio/binary/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-binary
RDF4J: Rio - Binary
diff --git a/core/rio/datatypes/pom.xml b/core/rio/datatypes/pom.xml
index b9d9dcadcfb..3d6c72e588c 100644
--- a/core/rio/datatypes/pom.xml
+++ b/core/rio/datatypes/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-datatypes
RDF4J: Rio - Datatypes
diff --git a/core/rio/hdt/pom.xml b/core/rio/hdt/pom.xml
index f3647663a65..f9a0edf0ff0 100644
--- a/core/rio/hdt/pom.xml
+++ b/core/rio/hdt/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-hdt
jar
diff --git a/core/rio/jsonld-legacy/pom.xml b/core/rio/jsonld-legacy/pom.xml
index 7509ef4b834..3fdc57c06f0 100644
--- a/core/rio/jsonld-legacy/pom.xml
+++ b/core/rio/jsonld-legacy/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-jsonld-legacy
RDF4J: Rio - JSON-LD 1.0 (legacy)
diff --git a/core/rio/jsonld/pom.xml b/core/rio/jsonld/pom.xml
index c817e4db0af..89bd05c6c67 100644
--- a/core/rio/jsonld/pom.xml
+++ b/core/rio/jsonld/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-jsonld
RDF4J: Rio - JSON-LD
diff --git a/core/rio/languages/pom.xml b/core/rio/languages/pom.xml
index b35931702bb..cecc03dd5b2 100644
--- a/core/rio/languages/pom.xml
+++ b/core/rio/languages/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-languages
RDF4J: Rio - Languages
diff --git a/core/rio/n3/pom.xml b/core/rio/n3/pom.xml
index 54ae5fe573c..df944373b46 100644
--- a/core/rio/n3/pom.xml
+++ b/core/rio/n3/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-n3
RDF4J: Rio - N3 (writer-only)
diff --git a/core/rio/nquads/pom.xml b/core/rio/nquads/pom.xml
index 044216524fb..8709008c291 100644
--- a/core/rio/nquads/pom.xml
+++ b/core/rio/nquads/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-nquads
RDF4J: Rio - N-Quads
diff --git a/core/rio/ntriples/pom.xml b/core/rio/ntriples/pom.xml
index 37553504ed5..43a40303103 100644
--- a/core/rio/ntriples/pom.xml
+++ b/core/rio/ntriples/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-ntriples
RDF4J: Rio - N-Triples
diff --git a/core/rio/pom.xml b/core/rio/pom.xml
index 77fc1cee292..8fb737bb122 100644
--- a/core/rio/pom.xml
+++ b/core/rio/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio
pom
diff --git a/core/rio/rdfjson/pom.xml b/core/rio/rdfjson/pom.xml
index 55a3e3ad374..6a7f3231661 100644
--- a/core/rio/rdfjson/pom.xml
+++ b/core/rio/rdfjson/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-rdfjson
RDF4J: Rio - RDF/JSON
diff --git a/core/rio/rdfxml/pom.xml b/core/rio/rdfxml/pom.xml
index 08a1e0f6eb3..e818e3c28f9 100644
--- a/core/rio/rdfxml/pom.xml
+++ b/core/rio/rdfxml/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-rdfxml
RDF4J: Rio - RDF/XML
diff --git a/core/rio/trig/pom.xml b/core/rio/trig/pom.xml
index 2736b12a916..8dbb8fe6b5e 100644
--- a/core/rio/trig/pom.xml
+++ b/core/rio/trig/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-trig
RDF4J: Rio - TriG
diff --git a/core/rio/trig/src/test/resources/testcases/trig/trig-syntax-minimal-whitespace-01.trig b/core/rio/trig/src/test/resources/testcases/trig/trig-syntax-minimal-whitespace-01.trig
index f53451f8759..b7f3f441d14 100644
--- a/core/rio/trig/src/test/resources/testcases/trig/trig-syntax-minimal-whitespace-01.trig
+++ b/core/rio/trig/src/test/resources/testcases/trig/trig-syntax-minimal-whitespace-01.trig
@@ -19,3 +19,5 @@ d:.
_:s{:s :p :o .:s :p"Alice".:s :p _:o.}
:{: : :}{: : :}:{: : :}
:{():()}{():[]}:{[]:[]}
+{b:a\'s a :Foo}
+
diff --git a/core/rio/trix/pom.xml b/core/rio/trix/pom.xml
index a8b99df7634..e43437a9337 100644
--- a/core/rio/trix/pom.xml
+++ b/core/rio/trix/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-trix
RDF4J: Rio - TriX
diff --git a/core/rio/turtle/pom.xml b/core/rio/turtle/pom.xml
index 087f4221601..0f8bce287fe 100644
--- a/core/rio/turtle/pom.xml
+++ b/core/rio/turtle/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-rio
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-rio-turtle
RDF4J: Rio - Turtle
diff --git a/core/rio/turtle/src/main/java/org/eclipse/rdf4j/rio/turtle/TurtleUtil.java b/core/rio/turtle/src/main/java/org/eclipse/rdf4j/rio/turtle/TurtleUtil.java
index b7b9985449f..9ce214265e3 100644
--- a/core/rio/turtle/src/main/java/org/eclipse/rdf4j/rio/turtle/TurtleUtil.java
+++ b/core/rio/turtle/src/main/java/org/eclipse/rdf4j/rio/turtle/TurtleUtil.java
@@ -13,6 +13,7 @@
import java.util.Arrays;
import org.eclipse.rdf4j.common.text.ASCIIUtil;
+import org.eclipse.rdf4j.model.util.URIUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -366,41 +367,7 @@ public static boolean isPN_LOCAL_ESC(String name) {
}
public static boolean isPN_LOCAL(String name) {
- // Empty names are legal
- if (name.isEmpty()) {
- return true;
- }
-
- if (!isPN_CHARS_U(name.charAt(0)) && name.charAt(0) != ':' && !ASCIIUtil.isNumber(name.charAt(0))
- && !isPLX_START(name)) {
- logger.debug("PN_LOCAL was not valid (start characters invalid) i=" + 0 + " nextchar="
- + name.charAt(0) + " name=" + name);
- return false;
- }
-
- if (!isNameStartChar(name.charAt(0))) {
- logger.debug("name was not valid (start character invalid) i=" + 0 + " nextchar=" + name.charAt(0)
- + " name=" + name);
- return false;
- }
-
- for (int i = 1; i < name.length(); i++) {
- if (!isNameChar(name.charAt(i))) {
- logger.debug("name was not valid (intermediate character invalid) i=" + i + " nextchar="
- + name.charAt(i) + " name=" + name);
- return false;
- }
-
- // Check if the percent encoding was less than two characters from the
- // end of the prefix, in which case it is invalid
- if (name.charAt(i) == '%' && (name.length() - i) < 3) {
- logger.debug("name was not valid (short percent escape) i=" + i + " nextchar=" + name.charAt(i)
- + " name=" + name);
- return false;
- }
- }
-
- return true;
+ return URIUtil.isValidLocalName(name);
}
// public static boolean isLegalName(String name) {
diff --git a/core/rio/turtle/src/test/java/org/eclipse/rdf4j/rio/turtle/TurtleUtilTest.java b/core/rio/turtle/src/test/java/org/eclipse/rdf4j/rio/turtle/TurtleUtilTest.java
index d884ca41496..279bf5b5e77 100644
--- a/core/rio/turtle/src/test/java/org/eclipse/rdf4j/rio/turtle/TurtleUtilTest.java
+++ b/core/rio/turtle/src/test/java/org/eclipse/rdf4j/rio/turtle/TurtleUtilTest.java
@@ -229,6 +229,7 @@ public final void testIsPN_LOCAL() {
assertFalse(TurtleUtil.isPN_LOCAL("foo\tbar"));
assertFalse(TurtleUtil.isPN_LOCAL("foo\nbar"));
assertFalse(TurtleUtil.isPN_LOCAL("*foobar"));
+ assertTrue(TurtleUtil.isPN_LOCAL("foo\\'bar"));
}
/**
diff --git a/core/rio/turtle/src/test/resources/test-newlines.ttl b/core/rio/turtle/src/test/resources/test-newlines.ttl
index 677f2d33622..86b88ace9e5 100644
--- a/core/rio/turtle/src/test/resources/test-newlines.ttl
+++ b/core/rio/turtle/src/test/resources/test-newlines.ttl
@@ -5,7 +5,8 @@
ex:a a ex:Foo .
ex:b a ex:Foo .
ex:b ex:value '''^M'''.
-ex:c
+ex:c
:foo ex:Foo .
+rdf:Test\'s a ex:Foo .
ex:a ex:value 1.0 .
ex:a ex:value 3.0 .
diff --git a/core/sail/api/pom.xml b/core/sail/api/pom.xml
index 94ba13deba0..9ddc2f76dd2 100644
--- a/core/sail/api/pom.xml
+++ b/core/sail/api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-api
RDF4J: Sail API
diff --git a/core/sail/base/pom.xml b/core/sail/base/pom.xml
index 37f440d24a5..71d9a30f8bb 100644
--- a/core/sail/base/pom.xml
+++ b/core/sail/base/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-base
RDF4J: Sail base implementations
diff --git a/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/Changeset.java b/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/Changeset.java
index 9dbeeeaf5ca..2283a3e1c96 100644
--- a/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/Changeset.java
+++ b/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/Changeset.java
@@ -29,6 +29,7 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.eclipse.rdf4j.common.annotation.Experimental;
import org.eclipse.rdf4j.common.annotation.InternalUseOnly;
import org.eclipse.rdf4j.common.transaction.IsolationLevels;
import org.eclipse.rdf4j.model.IRI;
@@ -175,7 +176,8 @@ boolean hasApproved(Resource subj, IRI pred, Value obj, Resource[] contexts) {
}
}
- boolean hasDeprecated(Resource subj, IRI pred, Value obj, Resource[] contexts) {
+ @Experimental
+ public boolean hasDeprecated(Resource subj, IRI pred, Value obj, Resource[] contexts) {
assert !closed;
if ((deprecated == null || deprecatedEmpty) && deprecatedContexts == null) {
return false;
diff --git a/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/SailSourceConnection.java b/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/SailSourceConnection.java
index 7020c983396..7942984593a 100644
--- a/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/SailSourceConnection.java
+++ b/core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/SailSourceConnection.java
@@ -763,8 +763,13 @@ private void add(Resource subj, IRI pred, Value obj, SailDataset dataset, SailSi
if (hasConnectionListeners()) {
if (!hasStatement(dataset, subj, pred, obj, NULL_CTX)) {
notifyStatementAdded(vf.createStatement(subj, pred, obj));
- sink.approve(subj, pred, obj, null);
+ } else if (sink instanceof Changeset && ((Changeset) sink).hasDeprecated(subj, pred, obj, NULL_CTX)) {
+ notifyStatementAdded(vf.createStatement(subj, pred, obj));
}
+
+ // always approve the statement, even if it already exists
+ sink.approve(subj, pred, obj, null);
+
} else {
sink.approve(subj, pred, obj, null);
}
@@ -784,8 +789,11 @@ private void add(Resource subj, IRI pred, Value obj, SailDataset dataset, SailSi
if (hasConnectionListeners()) {
if (!hasStatement(dataset, subj, pred, obj, contextsToCheck)) {
notifyStatementAdded(vf.createStatement(subj, pred, obj, ctx));
- sink.approve(subj, pred, obj, ctx);
+ } else if (sink instanceof Changeset
+ && ((Changeset) sink).hasDeprecated(subj, pred, obj, contextsToCheck)) {
+ notifyStatementAdded(vf.createStatement(subj, pred, obj));
}
+ sink.approve(subj, pred, obj, ctx);
} else {
sink.approve(subj, pred, obj, ctx);
}
@@ -830,7 +838,6 @@ private boolean remove(Resource subj, IRI pred, Value obj, SailDataset dataset,
while (iter.hasNext()) {
Statement st = iter.next();
sink.deprecate(st);
-
statementsRemoved = true;
notifyStatementRemoved(st);
}
diff --git a/core/sail/elasticsearch-store/pom.xml b/core/sail/elasticsearch-store/pom.xml
index 8542f4a1aaa..cea5704f074 100644
--- a/core/sail/elasticsearch-store/pom.xml
+++ b/core/sail/elasticsearch-store/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-elasticsearch-store
RDF4J: Elasticsearch Store
diff --git a/core/sail/elasticsearch/pom.xml b/core/sail/elasticsearch/pom.xml
index 022319c4697..b0bbb5eac74 100644
--- a/core/sail/elasticsearch/pom.xml
+++ b/core/sail/elasticsearch/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-elasticsearch
RDF4J: Elastic Search Sail Index
diff --git a/core/sail/extensible-store/pom.xml b/core/sail/extensible-store/pom.xml
index e8d6a1af491..5d1ae0ac7b8 100644
--- a/core/sail/extensible-store/pom.xml
+++ b/core/sail/extensible-store/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-extensible-store
RDF4J: Extensible Store
diff --git a/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/ReadCommittedWrapper.java b/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/ReadCommittedWrapper.java
index 20ddfd0dc6b..4e211848902 100644
--- a/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/ReadCommittedWrapper.java
+++ b/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/ReadCommittedWrapper.java
@@ -50,14 +50,18 @@ class ReadCommittedWrapper implements DataStructureInterface {
@Override
public void addStatement(ExtensibleStatement statement) {
- internalAdded.put(statement, statement);
- internalRemoved.remove(statement);
-
+ ExtensibleStatement put = internalAdded.put(statement, statement);
+ if (put == null) {
+ internalRemoved.remove(statement);
+ }
}
@Override
public void removeStatement(ExtensibleStatement statement) {
- internalRemoved.put(statement, statement);
+ ExtensibleStatement put = internalRemoved.put(statement, statement);
+ if (put == null) {
+ internalAdded.remove(statement);
+ }
}
diff --git a/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/valuefactory/ExtensibleStatementImpl.java b/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/valuefactory/ExtensibleStatementImpl.java
index b3f8ac04eb7..1e564ac837f 100644
--- a/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/valuefactory/ExtensibleStatementImpl.java
+++ b/core/sail/extensible-store/src/main/java/org/eclipse/rdf4j/sail/extensiblestore/valuefactory/ExtensibleStatementImpl.java
@@ -14,6 +14,7 @@
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Resource;
+import org.eclipse.rdf4j.model.Statement;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.model.impl.GenericStatement;
@@ -45,19 +46,17 @@ public boolean equals(Object o) {
if (this == o) {
return true;
}
- if (!(o instanceof ExtensibleStatementImpl)) {
+ if (!(o instanceof Statement)) {
return false;
}
+ if (!(o instanceof ExtensibleStatement)) {
+ return super.equals(o);
+ }
if (!super.equals(o)) {
return false;
}
- ExtensibleStatementImpl that = (ExtensibleStatementImpl) o;
- return inferred == that.inferred;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(super.hashCode(), inferred);
+ ExtensibleStatement that = (ExtensibleStatement) o;
+ return inferred == that.isInferred();
}
}
diff --git a/core/sail/inferencer/pom.xml b/core/sail/inferencer/pom.xml
index 45babf4a3e2..6708bd33947 100644
--- a/core/sail/inferencer/pom.xml
+++ b/core/sail/inferencer/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-inferencer
RDF4J: Inferencer Sails
diff --git a/core/sail/lmdb/pom.xml b/core/sail/lmdb/pom.xml
index 9a494fe3521..2571ee37d44 100644
--- a/core/sail/lmdb/pom.xml
+++ b/core/sail/lmdb/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-lmdb
RDF4J: LmdbStore
@@ -29,6 +29,13 @@
${lwjgl.version}
runtime
+
+ org.lwjgl
+ lwjgl-lmdb
+ natives-linux-ppc64le
+ ${lwjgl.version}
+ runtime
+
org.lwjgl
lwjgl-lmdb
@@ -71,6 +78,13 @@
${lwjgl.version}
runtime
+
+ org.lwjgl
+ lwjgl
+ natives-linux-ppc64le
+ ${lwjgl.version}
+ runtime
+
org.lwjgl
lwjgl
diff --git a/core/sail/lucene-api/pom.xml b/core/sail/lucene-api/pom.xml
index a52d440fc00..282be11d0b7 100644
--- a/core/sail/lucene-api/pom.xml
+++ b/core/sail/lucene-api/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-lucene-api
RDF4J: Lucene Sail API
diff --git a/core/sail/lucene/pom.xml b/core/sail/lucene/pom.xml
index 530c6ac3c5d..3958efec38a 100644
--- a/core/sail/lucene/pom.xml
+++ b/core/sail/lucene/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-lucene
RDF4J: Lucene Sail Index
diff --git a/core/sail/memory/pom.xml b/core/sail/memory/pom.xml
index ae81a8c5531..0cbe06812f8 100644
--- a/core/sail/memory/pom.xml
+++ b/core/sail/memory/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-memory
RDF4J: MemoryStore
diff --git a/core/sail/model/pom.xml b/core/sail/model/pom.xml
index 531c473d10a..f1e35605c59 100644
--- a/core/sail/model/pom.xml
+++ b/core/sail/model/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-model
RDF4J: Sail Model
diff --git a/core/sail/nativerdf/pom.xml b/core/sail/nativerdf/pom.xml
index 17dbcc1c962..d8025689e1f 100644
--- a/core/sail/nativerdf/pom.xml
+++ b/core/sail/nativerdf/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-nativerdf
RDF4J: NativeStore
diff --git a/core/sail/pom.xml b/core/sail/pom.xml
index cbce9f38bc7..c161069a761 100644
--- a/core/sail/pom.xml
+++ b/core/sail/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail
pom
diff --git a/core/sail/shacl/pom.xml b/core/sail/shacl/pom.xml
index 9cae94fe046..bc713aa0fa3 100644
--- a/core/sail/shacl/pom.xml
+++ b/core/sail/shacl/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-shacl
RDF4J: SHACL
diff --git a/core/sail/solr/pom.xml b/core/sail/solr/pom.xml
index c79bfa393e7..e235b2e08ff 100644
--- a/core/sail/solr/pom.xml
+++ b/core/sail/solr/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-sail
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sail-solr
RDF4J: Solr Sail Index
diff --git a/core/sparqlbuilder/pom.xml b/core/sparqlbuilder/pom.xml
index 2e589196e67..5c29d1c364a 100644
--- a/core/sparqlbuilder/pom.xml
+++ b/core/sparqlbuilder/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-sparqlbuilder
RDF4J: SparqlBuilder
diff --git a/core/spin/pom.xml b/core/spin/pom.xml
index b80e9d40e04..4846134d7f9 100644
--- a/core/spin/pom.xml
+++ b/core/spin/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-spin
RDF4J: SPIN
diff --git a/core/storage/pom.xml b/core/storage/pom.xml
index 6775e4bf837..8d26426058e 100644
--- a/core/storage/pom.xml
+++ b/core/storage/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.rdf4j
rdf4j-core
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
rdf4j-storage
RDF4J: Storage Libraries
diff --git a/e2e/package-lock.json b/e2e/package-lock.json
index 4f552816923..69bda428af6 100644
--- a/e2e/package-lock.json
+++ b/e2e/package-lock.json
@@ -9,32 +9,34 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
- "@playwright/test": "^1.39.0",
- "@types/node": "^20.8.7"
+ "@playwright/test": "^1.49.0",
+ "@types/node": "^22.10.1"
}
},
"node_modules/@playwright/test": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz",
- "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.49.0.tgz",
+ "integrity": "sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright": "1.39.0"
+ "playwright": "1.49.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/@types/node": {
- "version": "20.8.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz",
- "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==",
+ "version": "22.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
+ "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "undici-types": "~5.25.1"
+ "undici-types": "~6.20.0"
}
},
"node_modules/fsevents": {
@@ -43,6 +45,7 @@
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -52,59 +55,62 @@
}
},
"node_modules/playwright": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz",
- "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.0.tgz",
+ "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.39.0"
+ "playwright-core": "1.49.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz",
- "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.0.tgz",
+ "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
- "dev": true
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "dev": true,
+ "license": "MIT"
}
},
"dependencies": {
"@playwright/test": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz",
- "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.49.0.tgz",
+ "integrity": "sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==",
"dev": true,
"requires": {
- "playwright": "1.39.0"
+ "playwright": "1.49.0"
}
},
"@types/node": {
- "version": "20.8.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz",
- "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==",
+ "version": "22.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
+ "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
"dev": true,
"requires": {
- "undici-types": "~5.25.1"
+ "undici-types": "~6.20.0"
}
},
"fsevents": {
@@ -115,25 +121,25 @@
"optional": true
},
"playwright": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz",
- "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.0.tgz",
+ "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==",
"dev": true,
"requires": {
"fsevents": "2.3.2",
- "playwright-core": "1.39.0"
+ "playwright-core": "1.49.0"
}
},
"playwright-core": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz",
- "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==",
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.0.tgz",
+ "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==",
"dev": true
},
"undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"dev": true
}
}
diff --git a/e2e/package.json b/e2e/package.json
index 5d2cea305d4..0665994aef6 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -8,7 +8,7 @@
"author": "",
"license": "ISC",
"devDependencies": {
- "@playwright/test": "^1.39.0",
- "@types/node": "^20.8.7"
+ "@playwright/test": "^1.49.0",
+ "@types/node": "^22.10.1"
}
}
diff --git a/e2e/run.sh b/e2e/run.sh
index 8fb93afce7e..f5a1b35f54e 100755
--- a/e2e/run.sh
+++ b/e2e/run.sh
@@ -12,9 +12,11 @@
set -e
+npm install
+
for APP_SERVER in tomcat jetty; do
export APP_SERVER
-
+
cd ..
cd docker
./run.sh
@@ -38,16 +40,16 @@ for APP_SERVER in tomcat jetty; do
cd ..
cd docker
- ./shutdown.sh
+ ./shutdown.sh
# test for error code
if [ $status_npx -ne 0 ] ; then
echo "Error in E2E test for $APP_SERVER"
exit $status_npx
fi
-
+
echo "E2E test for $APP_SERVER OK"
-
+
# don't redo the whole build process just for making another docker image
export SKIP_BUILD="skip"
done
diff --git a/examples/pom.xml b/examples/pom.xml
index 5610e589454..b5364742438 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -7,7 +7,7 @@
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 76b87b2bb27..329ca303ff9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.eclipse.rdf4j
rdf4j
- 5.1.0-SNAPSHOT
+ 5.1.2-SNAPSHOT
pom
Eclipse RDF4J
An extensible Java framework for RDF and SPARQL
@@ -367,7 +367,7 @@
0.13.4
5.0.0
2.3.8
- 3.3.3
+ 3.3.6
8.9.0
8.9.0
7.15.2
diff --git a/site/content/about.md b/site/content/about.md
index 49d3f15dda7..948c6c9c07d 100644
--- a/site/content/about.md
+++ b/site/content/about.md
@@ -107,3 +107,5 @@ The metaphactory platform is developed by [metaphacts GmbH](https://www.metaphac
an RDF service backend for Knowledge Management, used by thesaurus management platform [VocBench](http://vocbench.uniroma2.it/).
- [Sesame Tools](https://github.com/joshsh/sesametools)
a collection of utility classes for use with Sesame/RDF4J.
+- [Jelly](https://w3id.org/jelly/jelly-jvm)
+ a high-performance binary RDF serialization format with an implementation for RDF4J. Can be used as a JAR plugin.
diff --git a/site/content/download.md b/site/content/download.md
index 1c2a5c6ec73..a7e49a1db8a 100644
--- a/site/content/download.md
+++ b/site/content/download.md
@@ -5,15 +5,15 @@ toc: true
You can either retrieve RDF4J via Apache Maven, or download the SDK or onejar directly.
-## RDF4J 5.0.2 (latest)
+## RDF4J 5.1.0 (latest)
-RDF4J 5.0.2 is our latest stable release. It requires Java 11 minimally.
-For details on what’s new and how to upgrade, see the [release and upgrade notes](/release-notes/5.0.2).
+RDF4J 5.1.0 is our latest stable release. It requires Java 11 minimally.
+For details on what’s new and how to upgrade, see the [release and upgrade notes](/release-notes/5.1.0).
-- [RDF4J 5.0.2 SDK (zip)](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.0.2-sdk.zip)
+- [RDF4J 5.1.0 SDK (zip)](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.1.0-sdk.zip)
Full Eclipse RDF4J SDK, containing all libraries, RDF4J Server, Workbench, and Console applications, and Javadoc API.
-- [RDF4J 5.0.2 onejar](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.0.2-onejar.jar)
+- [RDF4J 5.1.0 onejar](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.1.0-onejar.jar)
Single jar file for easy inclusion of the full RDF4J toolkit in your Java project.
- [RDF4J artifacts](https://search.maven.org/search?q=org.eclipse.rdf4j) on the [Maven Central Repository](http://search.maven.org/)
@@ -28,7 +28,7 @@ You can include RDF4J as a Maven dependency in your Java project by including th
org.eclipse.rdf4j
rdf4j-bom
- 5.0.2
+ 5.1.0
pom
import
@@ -52,6 +52,12 @@ which artifacts RDF4J provides.
## Older releases
+### RDF4J 5.0
+
+- [RDF4J 5.0.3 SDK (zip)](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.0.3-sdk.zip)
+- [RDF4J 5.0.3 onejar](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-5.0.3-onejar.jar)
+
+
### RDF4J 4.3
- [RDF4J 4.3.15 SDK (zip)](http://www.eclipse.org/downloads/download.php?file=/rdf4j/eclipse-rdf4j-4.3.15-sdk.zip)
diff --git a/site/content/news/rdf4j-503.md b/site/content/news/rdf4j-503.md
new file mode 100644
index 00000000000..0f3a7675648
--- /dev/null
+++ b/site/content/news/rdf4j-503.md
@@ -0,0 +1,14 @@
+---
+title: "RDF4J 5.0.3 released"
+date: 2024-11-10T14:15:45+0100
+layout: "single"
+categories: ["news"]
+---
+RDF4J 5.0.3 is now available. This is a patch release fixing 11 bugs.
+
+For more details, have a look at the [release notes](/release-notes/5.0.3).
+
+### Links
+
+- [Download RDF4J](/download/)
+- [release notes](/release-notes/5.0.3).
diff --git a/site/content/news/rdf4j-510-M1.md b/site/content/news/rdf4j-510-M1.md
new file mode 100644
index 00000000000..03d90cf2bb0
--- /dev/null
+++ b/site/content/news/rdf4j-510-M1.md
@@ -0,0 +1,20 @@
+---
+title: "RDF4J 5.1.0 Milestone 1"
+date: 2024-11-10T14:05:43+0100
+layout: "single"
+categories: ["news"]
+---
+Milestone number 1 of the upcoming 5.1.0 release of RDF4J is now available for download.
+
+RDF4J 5.1.0 is a minor release focusing on ... .
+
+This milestone build is not yet feature-complete, but we are putting it out to receive early feedback on all the improvements we have put in.
+
+
+
+ - [issues fixed in 5.1.0 Milestone 1](https://github.com/eclipse/rdf4j/issues?q=is%3Aissue+label%3AM1+is%3Aclosed+milestone%3A5.1.0)
+ - [issues planned for 5.1.0](https://github.com/eclipse/rdf4j/milestone/107)
+
+### Links
+
+- [Download RDF4J](/download/)
diff --git a/site/content/news/rdf4j-510.md b/site/content/news/rdf4j-510.md
new file mode 100644
index 00000000000..c9671127482
--- /dev/null
+++ b/site/content/news/rdf4j-510.md
@@ -0,0 +1,14 @@
+---
+title: "RDF4J 5.1.0 released"
+date: 2024-11-21T22:02:32+0100
+layout: "single"
+categories: ["news"]
+---
+RDF4J 5.1.0 is now available.
+
+For more details, have a look at the [release notes](/release-notes/5.1.0).
+
+### Links
+
+- [Download RDF4J](/download/)
+- [release notes](/release-notes/5.1.0).
diff --git a/site/content/release-notes/5.0.3.md b/site/content/release-notes/5.0.3.md
new file mode 100644
index 00000000000..3f294c15f41
--- /dev/null
+++ b/site/content/release-notes/5.0.3.md
@@ -0,0 +1,11 @@
+---
+title: "5.0.3"
+toc: true
+---
+RDF4J 5.0.3 is a patch release that fixes 11 issues.
+
+For a complete overview, see [all issues fixed in 5.0.3](https://github.com/eclipse/rdf4j/milestone/111?closed=1).
+
+### Acknowledgements
+
+This release was made possible by contributions from Hannes Ebner, Håvard M. Ottestad, Frens Jan Rumph and Andreas Schwarte.
diff --git a/site/content/release-notes/5.1.0.md b/site/content/release-notes/5.1.0.md
new file mode 100644
index 00000000000..d4031b8a064
--- /dev/null
+++ b/site/content/release-notes/5.1.0.md
@@ -0,0 +1,25 @@
+---
+title: "5.1.0"
+toc: true
+---
+
+RDF4J 5.1.0 is a minor release of the Eclipse RDF4J framework. Some highlights:
+
+- Stability and performance improvements in the FedX federation engine, including refinements to the bind join implementation for regular and OPTIONAL joins
+- Support for specifying the [lucene document threshold at query time](https://github.com/eclipse-rdf4j/rdf4j/issues/5149)
+- VALUES for SparqlBuilder
+- [Enable UpdateWithModelBuilder to delete triples](https://github.com/eclipse-rdf4j/rdf4j/issues/4999)
+- [HttpClient timeout and pooling options](https://github.com/eclipse-rdf4j/rdf4j/pull/5125)
+- [DOCUMENT_LOADER support for JSON-LD 1.1 parser](https://github.com/eclipse-rdf4j/rdf4j/pull/5162)
+- Upgrade to Tomcat 9 in docker image
+- Add support for Jetty 9 in docker image
+- Improve performance of SPARQLConnection#size() method
+- Adjust how SHACL validation of minCount and maxCount is handled for union graphs with duplicates
+- Support for DCAT v3
+
+
+For a complete overview, see [all issues fixed in 5.1.0](https://github.com/eclipse/rdf4j/milestone/107?closed=1).
+
+### Acknowledgements
+
+This release was made possible by contributions from Bart Hanssens, Antoine Willerval, Håvard M. Ottestad, Florian Kleedorfer, Andreas Schwarte and Jerven Bolleman.
diff --git a/site/layouts/partials/head_suffix.html b/site/layouts/partials/head_suffix.html
index 9c64e27ed69..82bed5273b8 100644
--- a/site/layouts/partials/head_suffix.html
+++ b/site/layouts/partials/head_suffix.html
@@ -1,4 +1,4 @@
-