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 @@ -