Skip to content

⚙ Configuration

Qlue-ls can be configured through a qlue-ls.toml or qlue-ls.yml file.

Here is an example configuration:

[format]
align_prefixes = false
align_predicates = true
separate_prologue = false
capitalize_keywords = true
insert_spaces = true
tab_size = 2
where_new_line = true
filter_same_line = true
line_length = 120
contract_triples = false

[completion]
timeout_ms = 5000
result_size_limit = 100
subject_completion_trigger_length = 3
object_completion_suffix = true
variable_completion_limit = 10
same_subject_semicolon = true

[prefixes]
add_missing = true
remove_unused = false

Formatt settings

format.align_prefixes

Type Default
boolean false

Indent all prefixes s.t. they align:

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

format.align_predicates

Type Default
boolean true

Indent predicates in a property list s.t. they align:

?subject rdf:type ?type .
         rdfs:label label

format.separate_prolouge

Type Default
boolean false

Separate Prolouge from query with a line break:

PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

format.capitalize_keywords

Type Default
boolean true

Capitalize all keywords.

format.insert_spaces

Type Default
boolean true

Use spaces and not tabs.

format.tab_size

Type Default
integer 2

How wide a tab is.

format.where_new_line

Type Default
boolean false

Insert newline before each WHERE:

SELECT *
WHERE {}

format.filter_same_line

Type Default
boolean true

Allow trailing filter statements:

SELECT * WHERE {
    ?a ?b ?c Filter(?a)
}

format.line_length

Type Default
integer 120

Maximum line length before SELECT clauses break across multiple lines. When a SELECT clause exceeds this length, each binding is placed on a new line with proper indentation:

SELECT ?variable1
       ?variable2
       ?variable3
WHERE {}

format.contract_triples

Type Default
boolean false

When enabled, automatically contracts consecutive triples with the same subject using semicolon notation.

# Before (contract_triples = false)
SELECT * WHERE {
  ?person <name> ?name .
  ?person <age> ?age .
}

# After (contract_triples = true)
SELECT * WHERE {
  ?person <name> ?name ;
          <age> ?age .
}

When align_predicates = true (default), the contracted predicates are aligned with the first predicate. When align_predicates = false, a fixed 2-space indentation is used.

Completion settings

completion.timeout_ms

Type Default
integer 5000

Time (in ms) a completion query is allowed to take.

completion.result_size_limit

Type Default
integer 100

The result size of a completion query.

completion.subject_completion_trigger_length

Type Default
integer 3

The amount of chars (actually bytes) required to trigger a subject completion. This concerns online completions and not variable or construct completions!

completion.object_completion_suffix

Type Default
boolean true

Automatically append .\n after object completions. This helps with writing triple patterns by automatically closing the statement.

completion.variable_completion_limit

Type Default
integer none

Maximum number of variable completions to suggest. When not set (default), all variables in the query are suggested. Set this to limit suggestions when queries have many variables.

completion.same_subject_semicolon

Type Default
boolean true

When completing a subject that matches the previous triple's subject, transform the completion to use semicolon notation instead of starting a new triple. This allows you to continue adding predicates to the same subject without repeating it.

For example, if you have:

?person rdf:type foaf:Person .

And you complete ?person as the next subject, it will transform to:

?person rdf:type foaf:Person ;
        |

Where | represents your cursor position, ready to add another predicate.

Prefix settings

prefix.add_missing

Type Default
boolean true

Define missing prefix declarations as soon as they are needed.

prefix.remove_unused

Type Default
boolean false

Remove prefix declarations if they are not used.

Warning

Turn off if you plan to define custom prefixes!!

Backend settings

Backends represent knowledge bases that the LSP can connect to in order to provide smart completions.

backend.service.name

Type Default
string REQUIRED

The name of the backend

backend.service.slug

Type Default
string REQUIRED

A short form display name for the backend, akin to a RDF prefix in length

backend.service.url

Type Default
string REQUIRED

The URL for the SPARQL service to query for completions

backend.service.healthCheckUrl

Type Default
string REQUIRED

A URL to probe to test availability of the backend for completions

backend.prefixMap

Type Default
map REQUIRED

A mapping of RDF prefixes to IRIs that will be predefined for use with this backend

backend.requestMethod

Type Default
string GET

The HTTP method to use for requests to this backend service

backend.default

Type Default
boolean false

Whether to activate this backend by default at server start. Inactive backends can be activated via an LSP request to 'qlueLs/updateDefaultBackend'.

backend.queries

This key defines the SPARQL queries used for completions by the LSP. See the Completion Queries guide for details.