grafter-2.rdf4j.repository
added in 0.12.1
Functions for constructing and working with various RDF4j repositories.
add->repo
(add->repo repo)
custom-query-inferencer
(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)
(direct-type-inferencer notifying-sail)
A forward-chaining inferencer that infers the direct-type hierarchy
relations sesame:directSubClassOf, sesame:directSubPropertyOf and
sesame:directType.
fixture-repo
(fixture-repo)
(fixture-repo repo-or-data & data)
adds the specified data to a sparql repository. if the first
argument is a repository that object is used, otherwise the first
and remaining arguments are assumed to be
grafter-2.core/ITripleWriteable and are loaded into a sesame
memorystore sail-repo.
this function is most useful for loading fixture data from files e.g.
(fixture-repo "test-data.trig" "more-test-data.trig")
http-repo
(http-repo repo-url)
Given a URL as a String return a Sesame HTTPRepository for e.g.
interacting with the OpenRDF Workbench.
IPrepareQuery
protocol
members
prepare-query*
(prepare-query* this sparql-string restriction)
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.
IQueryEvaluator
protocol
members
evaluate
(evaluate this)
Low level protocol to evaluate a sesame RDF Query
object, and convert the results into a grafter representation.
make-restricted-dataset
(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.
memory-store
(memory-store)
Instantiate a sesame RDF MemoryStore.
native-store
(native-store datadir)
(native-store datadir indexes)
Instantiate a sesame RDF NativeStore.
notifying-repo
(notifying-repo repo)
(notifying-repo repo report-deltas)
Wrap the given repository in an RDF4j NotifyingRepositoryWrapper.
Once wrapped you can capture events on the underlying repository.
Supports two arities:
- Takes just a repo to wrap.
- Takes a repo to wrap and a boolean indicating whether to report
deltas on operations.
prepare-query
(prepare-query repo sparql-string)
(prepare-query repo sparql-string restriction)
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
(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
(query repo sparql & {:as options, :keys [prefixes]})
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...
e.g.
````
(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)
(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)))`
resource-repo
(resource-repo)
(resource-repo repo-or-data & data)
Like fixture repo but assumes all supplied data is on the java
resource path. For example:
(repo/resource-repo "grafter/rdf/sparql/sparql-data.trig"
"grafter/rdf/rdf-types.trig")
Will load the supplied RDF files from the resource path into a
single memory repository for testing.
If you want to use a custom repository the first argument can be a
repository.
sail-repo
(sail-repo)
(sail-repo sail)
Given a sesame Sail of some type, return a sesame SailRepository.
Finally you can also optionally supply a sesame sail to wrap the
repository, which can be used to configure a sesame NativeStore.
By default this function will return a repository initialised with a
Sesame MemoryStore.
shutdown
(shutdown repo)
Cleanly shutsdown the repository.
sparql-repo
(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.
throw-deprecated-exception!
(throw-deprecated-exception!)
Throw a more helpful error message alerting people to the need to
change code.
This is technically a breaking change, but it should indicate sites
which have a bug in them anyway.
ToConnection
protocol
members
->connection
(->connection repo)
Given an RDF4j repository return a connection to it.
->connection is designed to be used with the macro with-open
with-transaction
macro
(with-transaction repo & forms)
Wraps the given forms in a transaction on the supplied repository.
Exceptions are rolled back on failure.