| .cargo | ||
| .github/workflows | ||
| crates/parser | ||
| docs | ||
| editor | ||
| extract_backends | ||
| src | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| justfile | ||
| LICENSE | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
| renovate.json | ||
🦀 Qlue-ls 🦀
⚡Qlue-ls (pronounced "clueless") is a blazingly fast language server for SPARQL,
written in Rust 🦀, build for the web.
If you want to use Qlue-ls, check out the documentation.
To learn more about the origin story of this project, read the blog post.
🚀 Capabilities
Here is a quick overview what Qlue-ls can do.
A more detailed list can be found in the documentation.
📐 Formatting
Formats SPARQL queries to ensure consistent and readable syntax. Customizable options to align with preferred query styles are also implemented.
🩺 Diagnostics
Diagnostics provide feadback on the query.
Diagnostics come in severity: error, warning and info
✨ Completion
Completion provides suggestions how the query could continue.
For completion of subjects, predicates or objects the language server sends completion-queries to the backend and gets the completions from the knowledge-graph.
These completion queries have to be configured for each knowledge-graph.
🛠️ Code Actions
Code action suggest complex changes to your input.
Often in the form of a quickfix, to fix a diagnostic.
ℹ️ Hover
Get information about a token on hover.
🕳 Jump
Quickly jump to the next or previous important location in the query.
❓ operation identification
Determine if a operation is a query or update.
⚙️ Configuration
Qlue-ls can be configured through a qlue-ls.toml or qlue-ls.yml file.
Detailed exmplanations can be found in the documentation.
Here is the full default configuration
[format]
align_predicates = true
align_prefixes = true
separate_prolouge = false
capitalize_keywords = true
insert_spaces = true
tab_size = 2
where_new_line = true
filter_same_line = true
[completion]
timeout_ms = 5000
result_size_limit = 100
[prefixes]
add_missing = true
remove_unused = true
🙏 Special Thanks
- TJ DeVries for the inspiration and great tutorials
- Chris Biscardi for teaching me Rust
- Hannah Bast for the guidance.