---
name: "4s-query"
section: "1"
platform: "linux"
package: "4store"
version: "1.1.4-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/4s-query"
---

# 4s-query(1)

Run SPARQL queries on a 4store storage backend

## NAME

**4s-query** – Run SPARQL queries on a 4store storage backend

## SYNOPSIS

**4s-query** kb-name \[**-f** *format*\] \[**-O** *optimisation-level*\] \[**-I** *insert-mode*\] \[**-r**\] \[**-s** *soft-limit*\] \[**-b** *base-URI*\] \[**-e**\] \[**-P**\] \[query\]

- **-f**

  Set the format to output results it, options are "sparql", "text", "json", and "testcase"

- **-O, --opt-level**

  Set the optimisation level of the query engine, in the range 0-3.

- **-I, --insert**

  Treat CONSTRUCT statements as INSERT statements. This feature is highly experimental and largly untested.

- **-r, --restricted**

  Enable query complexity restriction mode

- **-s, --soft-limit**

  Override default soft limit on search breadth

- **-d, --default-graph**

  Enable SPARQL default graph support

- **-b, --base**

  Set base URI for queries

- **-e, --explain**

  Return an explanation of the query planner's descisions

- **-P**

  Enable programatic IO mode

## INTERACTIVE MODE

If \[query\] is ommited then **4s-query** goes into interactive mode, suitable for trying queries from the command line.

**-P** enables programatic interactive mode, suitable for infacing with processes via stdin and stdout. Queries are sent as UTF-8 bytes, terminated with "#EOQ" on a line of it's own, results are returned, ending with "#EOR". Interacting with 4store in this way is more efficient than using the SPARQL protocol, but non-standard.

## SEE ALSO

4s-import(1), 4s-httpd(1), 4s-backend(1), 4s-delete-model(1)

## STANDARDS

**4s-query** implements the SPARQL Query Language specification (aka. SPARQL/Query 1.0) and the SPARQL Result Format specification (aka. SPARQL/Results 1.0).

Default graph support is no normally enabled, the --default-graph turns it on, as does speicfying FROM \<default:\> in the query. Data loaded with

$ 4s-import *kb* **--add** **-m** default: *uri/filename*

will be added to the default graph.

## EXAMPLES

$ **4s-query** **-f** *sparql* demo 'SELECT \* WHERE { ?s ?p ?s } LIMIT 10'

Return 10 random triples from the knowledgebase "demo" in the SPARQL XML result format.

$ **4s-query** **-P** demo \< query.rq

Run the query in query.rq and output the result to stdout
