Functions for constructing and working with various Sesame repositories.


(custom-query-inferencer)(custom-query-inferencer query-text matcher-text)(custom-query-inferencer notifying-sail query-text matcher-text)

A forward-chaining inferencer that infers new statements using a SPARQL graph query.


(direct-type-inferencer)(direct-type-inferencer notifying-sail)

A forward-chaining inferencer that infers the direct-type hierarchy relations sesame:directSubClassOf, sesame:directSubPropertyOf and sesame:directType.


(http-repo repo-url)

Given a URL as a String return a Sesame HTTPRepository for e.g. interacting with the OpenRDF Workbench.





(evaluate this)

Low level protocol to evaluate a sesame RDF Query object, and convert the results into a grafter representation.


(make-restricted-dataset & {:as options})

Build a dataset to act as a graph restriction. You can specify for both :default-graph and :named-graphs. Both of which take sequences of URI strings.



Instantiate a sesame RDF MemoryStore.


(native-store datadir)(native-store datadir indexes)

Instantiate a sesame RDF NativeStore.


(prepare-query repo sparql-string)(prepare-query repo sparql-string dataset)

Low level function to prepare (parse, but not process) a sesame RDF query. Takes a repository a query string and an optional sesame Dataset to act as a query restriction.

Prepared queries still need to be evaluated with evaluate.


(prepare-update repo sparql-update-str)(prepare-update repo sparql-update-str dataset)

Prepare (parse but don’t process) a SPARQL update request.

Prepared updates still need to be evaluated with evaluate.


(query repo sparql & {:as options})

Run an arbitrary SPARQL query. Works with ASK, DESCRIBE, CONSTRUCT and SELECT queries.

You can call this on a Repository however if you do you may in some cases cause a resource leak, for example if the sequence of results isn’t fully consumed.

To use this without leaking resources it is recommended that you call ->connection on your repository, inside a with-open; and then consume all your results inside of a nested doseq/dorun/etc…


(with-open [conn (->connection repo)]
   (doseq [res (query conn "SELECT * WHERE { ?s ?p ?o .}")]
      (println res)))

Takes a repo and sparql string and an optional set of k/v argument pairs, and executes the sparql query on the repository.

Options are:

  • :default-graph a seq of URI strings representing named graphs to be set as the default union graph for the query.

  • :named-graphs a seq of URI strings representing the named graphs in to be used in the query.

If no options are passed then we use the default of no graph restrictions whilst the union graph is the union of all graphs.


(rdfs-inferencer)(rdfs-inferencer notifying-sail)

Returns a Sesame ForwardChainingRDFSInferencer using the rules from the RDF Semantics Recommendation (10 February 2004).

You can instantiate a repository with a memory store or a native store or with any SAIL that returns InferencerConnections. e.g. to instantiate a repository with a memory-store:

(repo (rdfs-inferencer (memory-store)))


(repo)(repo store)

Given a sesame Store of some type, return a sesame SailRepository.


(shutdown repo)

Cleanly shutsdown the repository.


(sparql-repo query-url)(sparql-repo query-url update-url)

Given a query-url (String or IURI) and an optional update-url String or IURI, return a Sesame SPARQLRepository for communicating with remote repositories.





(->connection repo)

Given a sesame repository return a connection to it. ->connection is designed to be used with the macro with-open



(with-transaction repo & forms)

Wraps the given forms in a transaction on the supplied repository. Exceptions are rolled back on failure.