Repository navigation
Releases: SPARQL-Anything/sparql.anything
Release list
v1.3.0
SPARQL Anything 1.3.0 brings the engine in line with the Façade-X specification (v0.1). It supports the new Façade-X namespaces, renames fx:root to fx:Root while keeping backward compatibility, and adds a test suite that keeps the implementation aligned with the spec.
New in this release: xml:lang support for XML, automatic delimiter detection for TSV, preservation of base on output, and JSON numbers that keep their lexical form (exponent values are now typed xsd:double). The CLI also gains a --help option.
Most of the work went into hardening, driven by acceptance testing of the release candidates. Highlights:
- CLI: correct handling of multiple
-vbinding sets, proper non-zero exit codes on errors, acceptance of all documented RDF format names in-f, and-l <URL>now loads into the default graph. - Formats:
.jsonldfiles are read correctly, JSON slicing works withslice.size> 1,.svgzis decompressed, and archive and HTTP options behave as documented. - Data model: containers from different data sources no longer share blank nodes.
Documentation grows with new guides on slicing, the --profile option, parametric queries, and contributing as a developer. Releases are also leaner on Maven Central from now on: release candidates go to the snapshots repository, and published artifacts carry only the required checksums.
As part of this release we had 46 issues closed.
Bugs
- #663 Fix failing S3 integration test due to inaccessible MinIO image in CI
- #675 [CLI] -o with multiple -v binding sets overwrites output (only first gets a suffix)
- #677 [CLI] With multiple -v binding sets and no -o, only the first result is printed
- #684 [v1.3.0-RC2]
queryoption: NPE when the referenced query is not a classpath resource - #685 [v1.3.0-RC2] JSON slicing breaks with
slice.size> 1 (parse errors, NPE, silent data loss) - #687 [v1.3.0-RC2]
-vfails with NPE for JSON and XML result-set files - #688 [v1.3.0-RC2] CLI cannot read
.jsonldfiles: the custom JSON language overrides JSON-LD - #689 [v1.3.0-RC2]
archive-formatoption is ignored when the archive URL has an extension - #690 [v1.3.0-RC2]
-frejects documented RDF format names (TURTLE, NTRIPLES, NQUADS, JSONLD, JSONLD11) - #692 [v1.3.0-RC2] CLI exits with code 0 on syntax errors, unknown options and failed slices
- #695 Java 21 Windows build fails since cd88d28
- #696 [v1.3.0-RC2] RDF triplifier ignores
content,commandandread-from-std-in - #697 [v1.3.0-RC2] Containers of different data sources share blank nodes (archive.matches merges files under one root)
- #698 [v1.3.0-RC2] HTTP options:
.Nsuffixes not stripped, payload sent chunked,http.redirect falseignored - #699 [v1.3.0-RC2]
.svgzfiles are not decompressed - #700 [v1.3.0-RC2]
-l <URL>: remote RDF is loaded in a named graph, not the default graph
Documentations
- #336 [Documentation] Add section on slicing
- #579 [Documentation] add tutorial for parametric queries / Basil variables
- #604 Add documentation on
--profileoption - #638 [doc] "working-with-graph-nodes" is a bad grouping
- #645 [Documentation] Guide for developers
- #668 [Documentation] Automatically translate #N references to GH links
- !673 [Documentation] Add section on slicing (#336)
- !674 [Documentation] Add documentation on --profile option (#604)
- #678 [Documentation] Improve documentation workflow (remove redundant files...)
- #693 [v1.3.0-RC2] Documentation inconsistencies found by the acceptance tests (1.3.0)
Features
- #571 preserve
baseon output - #657 Automatically set delimiter for TSV
- #659 Support new Facade-X namespaces from the specification
- #667 [XML] Support for xml:lang
Improvements
- #357 Review Lang mappings between JSON and JSONLD when the expected content is RDF
- #606 Refactor
fx:rootintofx:Root - !653 Bump pymdown-extensions from 10.21.3 to 11.0.1 in /docs
- #658 Keep current development aligned with FX specifications (v0.1) via tests
- #662 [JSON] Keep the lexical form of numbers; type exponent numbers xsd:double
- #664 SLF4J warning on tests
- #665 Multiple XML comments in pom
- #681 fx:root vs fx:Root backward compatibility in v1.3.0
- #694 [v1.3.0-RC2] Add CLI option --help
v1.3.0-RC3
Third release candidate for SPARQL Anything v1.3.0. Please test it on your queries and report problems as GitHub issues before the final release.
RC3 fixes the problems found by the new acceptance test suite (#686), which checks the documented behaviour of the CLI, the options and the formats.
⚠️ Changes that may affect existing scripts and queries
-lloads into named graphs (#700). Each source (a file, a URL, or each file of a folder) is loaded into a named graph named after its URI. The default graph is the union of all loaded graphs. Queries withoutGRAPHstill match all the data;GRAPH ?gnow also works for a single file.- CLI exit status (#692). The CLI exits with
1on SPARQL syntax errors, missing query or input files, and execution errors (including failed slices, unless the SERVICE isSILENT). It exits with2on an invalid command line. Before, it exited with0. - HTTP options (#698).
- Repeated parameters
http.query.<name>.N/http.form.<name>.Nare sent as<name>, in numeric order. http.payloadis sent with aContent-Lengthand no default content type; set it withhttp.header.Content-Type.http.redirect=falseis now honoured: a 3xx response makes the query fail.
- Repeated parameters
--profilehas no short form.
New
-h,--helpprints the usage (#694).- The RDF triplifier accepts
content,commandandread-from-std-in, withmedia-typeset (#696). .svgz(gzipped SVG) and other gzipped XML input is decompressed (#699).
Bug fixes
queryoption: the referenced query is resolved as a URL, then as a file path, then as a classpath resource. Before, a file path failed with an NPE (#684). Windows paths are supported (#695).- JSON slicing with
slice.size> 1: no more parse errors, NPEs or lost data (#685). -vreads JSON and XML result-set files (#687).-lreads.jsonldfiles (#688, #357).archive-formattakes precedence over the archive's file extension (#689).-faccepts all documented format names, case-insensitively:TURTLE,NTRIPLES,NQUADS,JSONLD,JSONLD11, … (#690).- Containers from different data sources no longer share blank nodes, e.g. files matched by
archive.matches(#697). - Remote RDF with
-l <URL>is visible in the default graph (#700).
Documentation
Many corrections found by the acceptance tests (#693):
- root IRIs;
- JSON numbers as
xsd:decimalin all examples; - the
queryresolution order and Windows paths; - variables as option values;
- HTTP options;
- CLI formats and exit status.
Known issues (planned for 1.4.0)
- Option values bound outside the SERVICE clause (outer
BIND/VALUES) are ignored; bind them inside the SERVICE (#701). - Parametrised queries:
$_name_prefix_typebinds a plain string instead of the prefixed datatype (#xxx).
What to test
- Scripts that rely on the CLI exit status, or on
-lwithGRAPH. - Queries using the
queryoption with file paths, especially on Windows. - HTTP sources with repeated parameters, payloads or
http.redirect=false. - JSON with
slice=trueandslice.size.
Install
- CLI: download
sparql-anything-v1.3.0-RC3.jarfrom the assets below, then
java -jar sparql-anything-v1.3.0-RC3.jar -q query.sparql - Server:
sparql-anything-server-v1.3.0-RC3.jar, then
java -jar sparql-anything-server-v1.3.0-RC3.jar(port 3000) - GeoSPARQL variants of both jars are also attached (
-geosparql). - Maven:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-engine</artifactId>
<version>1.3.0-RC3</version>
</dependency>Nightly Snapshot (v1.4-DEV) - 20261025-071719
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261025-071719
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.4-DEV) - 20261024-065258
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261024-065258
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.4-DEV) - 20261023-065933
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261023-065933
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.4-DEV) - 20261022-070727
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261022-070727
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.4-DEV) - 20261021-070534
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261021-070534
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.4-DEV) - 20261020-071139
🌙 Nightly Snapshot Build
Branch: v1.4-DEV
Commit: 57dffef
Build Date: 20261020-071139
Maven Version: 1.4.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.4.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.4.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.4.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
Nightly Snapshot (v1.3-DEV) - 20261019-154524
🌙 Nightly Snapshot Build
Branch: v1.3-DEV
Commit: f1a99ee
Build Date: 20261019-154524
Maven Version: 1.3.0-NIGHTLY-SNAPSHOT
This is an automated snapshot build for testing purposes.
Installation
Option 1: Download JAR
Download the JAR file and run:
java -jar sparql-anything-1.3.0-NIGHTLY-SNAPSHOT.jaror run the server version
java -jar sparql-anything-server-1.3.0-NIGHTLY-SNAPSHOT.jarOption 2: Maven Dependency
Add to your pom.xml:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-libs</artifactId>
<version>1.3.0-NIGHTLY-SNAPSHOT</version>
</dependency>And add the snapshot repository:
<repositories>
<repository>
<id>central</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>Latest Changes
See commit history for details.
v1.3.0-RC2
Second release candidate for SPARQL Anything v1.3.0. Please test it on your queries and report problems as GitHub issues before the final release.
This release aligns SPARQL Anything with the first release (v0.1) of the W3C Data Façades Community Group specifications (#658).
Changes since RC1
fx:rootas the type of the root container is accepted again: queries using it are rewritten tofx:Root, with a deprecation warning (#681). In RC1 such queries returned an empty result silently. Therootoption (fxe:root, or the deprecatedfx:rootonfx:properties) is unchanged.
⚠️ Changes that may affect existing queries
fx:root→fx:Root(#606). The root type now follows the Façade-X Schema vocabulary. Queries usingfx:rootstill work, being rewritten tofx:Rootwith a deprecation warning (#681); please update them, as this will be removed in a future release.- Engine namespace (#659). Engine options and
fx:propertiesmove tofxe:(PREFIX fxe: <http://sparql.xyz/facade-x/engine/>), e.g.fxe:properties fxe:location "file.csv". The oldfx:forms still work but are deprecated and log a warning. - JSON numbers (#662). Numbers keep their lexical form as written (
-0→"-0"^^xsd:decimal). Numerals with an exponent (1.5e3) are nowxsd:double; before, they were ill-typedxsd:decimal. Withjson.paththe lexical form cannot be kept, but literals are well-typed, and big integers no longer fail. - XML language tags (#667). Text and attribute values in the scope of
xml:langare now language-tagged. Setxml.lang-tags=falseto get plain strings, as before. Thexml:langattribute is kept either way. - BASE in RDF output (#571). When the query declares a
BASE(or-bis given), Turtle/TriG output is written with that base and IRIs under it are relativised. Use--no-write-basefor the previous behaviour. - CSV delimiter (#657). When
csv.delimiteris not given, the delimiter comes fromcsv.formatif set, otherwise tab for.tsv/.tabortext/tab-separated-values, otherwise comma. An explicitcsv.format(e.g.TDF) now keeps its own delimiter.
Bug fixes
- CLI: with several
-vbinding sets and-o, every set now gets its own numbered file (out-1.csv,out-2.csv, …); before, results were overwritten (#675). - CLI: with several
-vbinding sets and no-o, all results are printed to STDOUT, not only the first (#677). - Build/CI: S3 integration test fixed (#663); SLF4J warnings in tests (#664); duplicated XML comments in pom (#665).
- Dependency updates: jsoup 1.23.2, jackson 2.18.11 (#652, #666, #669, #670, #671).
Documentation
- New sections on slicing (#336), the
--profileoption (#604), and parametric queries / Basil variables (#579). - A guide for developers (#645), including the release process.
- Reorganised "working with graph nodes" (#638);
#Nreferences now link to GitHub issues (#668); a simpler documentation workflow (#678).
What to test
- Queries that use
fx:root(check the deprecation warning and that results are returned), orfx:engine options. - JSON sources with exponent or negative-zero numbers.
- XML sources with
xml:lang. - TSV files without
csv.delimiter. - CLI runs with multiple
-vbinding sets, with and without-o. - Turtle output from queries that declare a
BASE.
Install
- CLI: download
sparql-anything-v1.3.0-RC2.jarfrom the assets below, then
java -jar sparql-anything-v1.3.0-RC2.jar -q query.sparql - Server:
sparql-anything-server-v1.3.0-RC2.jar, then
java -jar sparql-anything-server-v1.3.0-RC2.jar(port 3000) - GeoSPARQL variants of both jars are also attached (
-geosparql). - Maven:
<dependency>
<groupId>io.github.sparql-anything</groupId>
<artifactId>sparql-anything-engine</artifactId>
<version>1.3.0-RC2</version>
</dependency>- Docker:
docker pull facadex/sparql-anything:v1.3.0-RC2
Full list: milestone v1.3.0