Formats SPARQL 1.2 queries and updates (.rq, .ru, .sparql) and keeps your comments where you put them.
It uses @matdata/sparql-formatter, the formatter of
MatGUI.
Features
- Format Document (Shift+Alt+F) and format on save for SPARQL files.
- Supports SPARQL 1.0, 1.1 and 1.2:
VERSION, triple terms, reified triples, annotations and more.
- Comments stay in place, also inside empty groups and between predicates.
- Formatting never changes the meaning of a query.
- Syntax errors are shown in the Problems panel as you type.
Indentation follows the editor settings (editor.tabSize, editor.insertSpaces).
To format on save:
"[sparql]": {
"editor.defaultFormatter": "matdata.sparql-formatter",
"editor.formatOnSave": true
}
Settings
| Setting |
Default |
Description |
sparqlFormatter.keywordCase |
"upper" |
Case of keywords (SELECT, WHERE, ...): "upper", "lower" or "preserve". |
sparqlFormatter.functionCase |
"preserve" |
Case of built-in function names (regex, STR, ...): "upper", "lower", "preserve". |
sparqlFormatter.alignPredicates |
true |
Align the predicates of a subject under its first predicate. When off, indent them. |
sparqlFormatter.preserveBlankLines |
true |
Keep (at most one) blank line where the query has blank lines between statements. |
sparqlFormatter.compact |
false |
Put group patterns with a single triple on one line: OPTIONAL { ?s :p ?o }. |
sparqlFormatter.lineWidth |
100 |
Line width used by compact and to wrap long object and VALUES lists. |
sparqlFormatter.insertWhere |
true |
Write the optional WHERE keyword of SELECT, CONSTRUCT and DESCRIBE queries. |
sparqlFormatter.validate |
true |
Show syntax errors in the Problems panel while you type. |
This extension does not include syntax highlighting. It works together with extensions that do, such as
Stardog RDF Grammars.
Development
The extension bundles the formatter sources from ../src, so it always uses the formatter in this repository.
cd vscode
npm install
npm run typecheck
npm run build # dist/extension.js
npm run package # sparql-formatter-<version>.vsix
code --install-extension sparql-formatter-1.0.0.vsix
To debug, open the vscode folder in VS Code and press F5 (Run Extension).
Releasing
The publish workflow publishes the extension whenever a GitHub
release is published, together with the npm package, so both always have the same version. The version comes
from the release tag (v1.2.3 → 1.2.3). The Marketplace only accepts major.minor.patch versions, so releases
with a pre-release version (v1.3.0-beta.1) only go to npm.
One-time setup:
- Visual Studio Marketplace: create the publisher
matdata at
marketplace.visualstudio.com/manage, then create an
Azure DevOps personal access token
with organization All accessible organizations and scope Marketplace → Manage. Store it as the
repository secret VSCE_PAT.
- Open VSX (optional, for VSCodium, Cursor, ...): sign in at open-vsx.org, sign the
publisher agreement, create an access token, run
npx ovsx create-namespace matdata -p <token> once and store
the token as the repository secret OVSX_PAT. Without it, the Open VSX step is skipped.
The workflow also attaches the .vsix to the GitHub release.
To publish by hand, run vsce from this folder (from the repository root it would pick up the npm package and
fail with Invalid extension name '@matdata/sparql-formatter'):
cd vscode
npm install
npx vsce login matdata # asks for the Marketplace token
npm run publish