Interface DataStoreConnection
- All Superinterfaces:
java.lang.AutoCloseable
public interface DataStoreConnection
extends java.lang.AutoCloseable
Encapsulates a connection to an RDFox data store. All instances of this
class are single-threaded — that is, no method should be called simultaneously on several threads. However, please note that there is no
thread affinity — that is, methods on one connection can be called from different threads as long as the calls are serialised externally.
The
interrupt()
, duplicate()
, and checkPassword(String password)
methods are exceptions: they can be invoked in
parallel with any other method apart from close()
. Calling close()
in parallel with any other method will almost certainly
crash the JVM. Multiple connections to the same data store should be used to access a data store concurrently. A data store connection uses
transactions to coordinate how concurrent accesses interact. A connection must be closed after use to release the resources associated with it.-
Field Summary
Fields Modifier and Type Field Description static long
WAIT_FOREVER
Specifies that the system should wait forever when it needs to acquire a lock on a data store (seesetLockTimeout(long)
). -
Method Summary
Modifier and Type Method Description long
addRule(Rule rule)
Adds a rule to the data store.long
addRules(java.util.Collection<Rule> datalogProgram)
Adds a collection of rules to the data store.void
beginTransaction(TransactionType transactionType)
Starts a new transaction on this connection.void
checkPassword(java.lang.String password)
Checks whether the supplied password is valid for the role associated with this connection.void
clear()
Clears the content of this data store -- that is, it clears all data and rules so the logical state of the data store is the same as after initialisation.void
clearRulesAxiomsExplicateFacts()
Clears all rules and turns all facts in the data store into EDB facts.void
close()
Closes the data store connection by freeing all resources associated with it.void
commitTransaction()
Commits the transaction associated with this connection.void
compact(boolean deleteRedundantFiles)
Compact the data in the data store.boolean
containsDataSource(java.lang.String dataSourceName)
Checks whether the data store contains a data source with the specified name.boolean
containsDataSourceTable(java.lang.String dataSourceName, java.lang.String dataSourceTableName)
Checks whether the specified data source in the data store contains a data source table with the specified name.boolean
containsStatistics(java.lang.String statisticsName)
Checks whether the data store contains the statistics with the specified name.boolean
containsTupleTable(java.lang.String tupleTableName)
Checks whether the data store contains a tuple table with the specified name.Cursor
createCursor(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters)
Creates a cursor over the results of the given query with the default fetch window size of 100.Cursor
createCursor(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, int fetchWindowSize)
Creates a cursor over the results of the given query.Cursor
createCursor(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters)
Creates a cursor over the results of the given query with the default fetch window size of 100.Cursor
createCursor(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters, int fetchWindowSize)
Creates a cursor over the results of the given query.void
createExplanation(java.lang.String factText, int maxDistanceFromRoot, int maxRuleInstancesPerFact, ExplanationType explanationType, java.io.OutputStream outputStream)
Computes an explanation for a given fact and saves it in JSON format to the given output stream.void
createExplanation(TupleTableAtom fact, int maxDistanceFromRoot, int maxRuleInstancesPerFact, ExplanationType explanationType, java.io.OutputStream outputStream)
Computes an explanation for a given fact and saves it in JSON format to the given output stream.void
createStatistics(java.lang.String statisticsName, java.util.Map<java.lang.String,java.lang.String> statisticsParameters)
Creates the statistics in a data store.void
createTupleTable(java.lang.String tupleTableName, java.util.Map<java.lang.String,java.lang.String> tupleTableParameters)
Creates a tuple table in a data store.long
deleteRule(Rule rule)
Deletes a rule to the data store.long
deleteRules(java.util.Collection<Rule> datalogProgram)
Deletes a collection of rules to the data store.void
deleteStatistics(java.lang.String statisticsName)
Deletes the data store statistics with the specified name from the data store.void
deleteTupleTable(java.lang.String tupleTableName)
Deletes the tuple table with the specified name from the data store.void
deregisterDataSource(java.lang.String dataSourceName)
Deregisters the data source table with the specified name from the data store.DataSourceInfo
describeDataSource(java.lang.String dataSourceName)
Returns information about the data source with the given name.DataSourceTableInfo
describeDataSourceTable(java.lang.String dataSourceName, java.lang.String dataSourceTableName)
Returns information about the data source table of the specified data source in the data store.StatisticsInfo
describeStatistics(java.lang.String statisticsName)
Returns information about the specific statistics of the data store.TupleTableInfo
describeTupleTable(java.lang.String tupleTableName)
Returns information about the tuple table with the given name.DataStoreConnection
duplicate()
Creates a new connection to the same data store.StatementResult
evaluateQuery(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, QueryAnswerMonitor queryAnswerMonitor)
Evaluates a query and calls the suppliedQueryAnswerMonitor
instance for each tuple in the result.StatementResult
evaluateQuery(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters, QueryAnswerMonitor queryAnswerMonitor)
Evaluates a query and calls the suppliedQueryAnswerMonitor
instance for each tuple in the result.StatementResult
evaluateStatement(java.lang.String statementText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.File file, java.lang.String queryAnswerFormatName)
Evaluates a statement and serialises the result to the supplied file using the specified format.StatementResult
evaluateStatement(java.lang.String statementText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.OutputStream outputStream, java.lang.String queryAnswerFormatName)
Evaluates a statement and serialises the result to the supplied output stream using the specified format.StatementResult
evaluateStatement(Statement statement, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.File file, java.lang.String queryAnswerFormatName)
Evaluates a statement and serialises the result to the supplied file using the specified format.StatementResult
evaluateStatement(Statement statement, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.OutputStream outputStream, java.lang.String queryAnswerFormatName)
Evaluates a statement and serialises the result to the supplied output stream using the specified format.StatementResult
evaluateUpdate(java.lang.String updateText, java.util.Map<java.lang.String,java.lang.String> compilationParameters)
Evaluates an update.StatementResult
evaluateUpdate(Update update, java.util.Map<java.lang.String,java.lang.String> compilationParameters)
Evaluates an update.StatementResult
evaluateUpdates(java.util.List<Update> updates, java.util.Map<java.lang.String,java.lang.String> compilationParameters)
Evaluates a list of updates.void
exportData(java.io.File file, java.lang.String formatName, java.util.Map<java.lang.String,java.lang.String> parameters)
Exports the data in the data store using the given format.void
exportData(java.io.OutputStream outputStream, java.lang.String formatName, java.util.Map<java.lang.String,java.lang.String> parameters)
Exports the data in the data store using the given format.java.lang.String
getBaseIRI()
Returns the base IRI of the data store.ComponentInfo
getComponentInfo(boolean extended)
Returns diagnostic information about the data store as a tree of objects each providing detailed information about the data store.ResourceValue[][]
getDataSourceTableData(java.lang.String dataSourceName, java.lang.String dataSourceTableName, int numberOfRows)
Returns a sample of the data from the specified data source table.long
getDataStoreVersion()
If a transaction is active, the data store version associated with the transaction is returned; otherwise, the last committed data store version is returned.long
getDataStoreVersionAfterLastOperation()
Returns the version that the data store had after the last operation on this connection.long
getEndResourceID()
Returns the one plus the maximum resource ID that can be stored in tuple tables of this data store.EqualityAxiomatization
getEqualityAxiomatization()
Returns a flag that determines how the data store deals with equality reasoning.InvalidLiteralPolicy
getInvalidLiteralPolicy()
Returns a flag that determines how the data store deals with invalid literals in input data, queries, and updates.long
getLockTimeout()
Returns the time in milliseconds that the system will wait for when it needs to acquire a lock on a data store.java.lang.String
getName()
Returns the name of the data store inside the server.long
getNextOperationMustMatchDataStoreVersion()
Returns the data store version that the next operation on this connection should expect.long
getNextOperationMustNotMatchDataStoreVersion()
Returns the data store version that the next operation on this connection should not expect.java.util.Map<java.lang.String,java.lang.String>
getParameters()
Returns the parameters that the data store was created with.Prefixes
getPrefixes()
Returns the prefixes of the data store.java.lang.String
getRoleName()
Returns the name of the role currently associated with this connection.TransactionState
getTransactionState()
Returns the state of the transaction associated with this connection.java.lang.String
getUniqueID()
Returns a string that uniquely identifies the data store.ImportResult
importAxiomsFromTriples(ResourceValue sourceGraph, boolean translateAssertions, ResourceValue destinationGraph, UpdateType updateType)
Parses the given source graph into OWL axioms, and imports the axioms into the destination graph.ImportResult
importAxiomsFromTriples(ResourceValue sourceGraph, boolean translateAssertions, ResourceValue destinationGraph, UpdateType updateType, ImportNotificationMonitor importNotificationMonitor)
Parses the given source graph into OWL axioms, and imports the axioms into the destination graph.ImportResult
importData(ResourceValue defaultGraph, UpdateType updateType, java.io.File file)
Imports the data from the given file into the current data store.ImportResult
importData(ResourceValue defaultGraph, UpdateType updateType, java.io.InputStream inputStream)
Imports the data from the given input stream into the current data store.ImportResult
importData(ResourceValue defaultGraph, UpdateType updateType, java.lang.String content)
Imports the data from the given string into the current data store.ImportResult
importData(ResourceValue defaultGraph, UpdateType updateType, java.util.Collection<InputSourceFactory> inputSourceFactories, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor)
Imports the data described by the given input source factories into the current data store.ImportResult
importData(ResourceValue defaultGraph, UpdateType updateType, InputSourceFactory inputSourceFactory, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor)
Imports the data described by the given input source factory into the current data store Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter.ImportResult
importData(UpdateType updateType, java.io.File file)
Imports the data from the given file into the current data store.ImportResult
importData(UpdateType updateType, java.io.InputStream inputStream)
Imports the data from the given input stream into the current data store.ImportResult
importData(UpdateType updateType, java.lang.String content)
Imports the data from the given string into the current data store.ImportResult
importData(UpdateType updateType, java.util.Collection<InputSourceFactory> inputSourceFactories, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor)
Imports the data described by the given input source factories into the current data store.ImportResult
importData(UpdateType updateType, InputSourceFactory inputSourceFactory, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor)
Imports the data described by the given input source factory into the current data store.void
interrupt()
Tries to interrupt an operation that is running in parallel on this connection.boolean
isConcurrent()
Returnstrue
if the data store supports concurrent access.boolean
isPersistent()
Returnstrue
if the data store is persistent.java.util.List<DataSourceInfo>
listDataSources()
Returns information about the data sources currently present in the data store.java.util.List<DataSourceTableInfo>
listDataSourceTables(java.lang.String dataSourceName)
Returns information about the data source tables of the specified data source in the data store.java.util.List<RuleInfo>
listRules()
Returns the information about the rules currently loaded into the data store.java.util.List<StatisticsInfo>
listStatistics()
Returns information about all statistics currently managed by the data store.java.util.List<TupleTableInfo>
listTupleTables()
Returns information about the tuple tables currently present in the data store.void
recompileRules()
Recompiles the rules using the currently available statistics.void
recomputeMaterialization()
Recomputes the materialization from scratch — that is, deletes all derived facts and applies all rules as if the data had just been freshly imported.void
registerDataSource(java.lang.String dataSourceName, java.util.Map<java.lang.String,java.lang.String> dataSourceParameters)
Registers a data source with a data store.boolean
requiresIncrementalReasoning()
Returnstrue
if the next data store update must be performed using incremental reasoning (rather than standard using the standard datalog materialization "from scratch" algorithm).void
rollbackTransaction()
Rolls back the transaction associated with this connection.void
setBaseIRI(java.lang.String baseIRI)
Sets the base IRI of the data store.void
setLockTimeout(long timeout)
Sets the time in milliseconds that the system will wait for when it needs to acquire a lock on a data store.void
setNextOperationMustMatchDataStoreVersion(long dataStoreVersion)
Configures this connection so that the next operation is accepted only if the data store has the given version before the operation commences.void
setNextOperationMustNotMatchDataStoreVersion(long dataStoreVersion)
Configures this connection so that the next operation is accepted only if the data store does not have the given version before the operation commences.boolean
setPrefix(java.lang.String prefixName, java.lang.String prefixIRI)
Sets the given prefix name to the given prefix IRI in the collection of the data store prefixes.void
setPrefixes(Prefixes prefixes)
Replaces all mappings of the prefix names to IRIs maintained by the data store to the collection given in the argument.boolean
transactionRequiresRollback()
Returnstrue
if a transaction is active on this connection and this transaction must be rolled back (i.e., it cannot be committed).boolean
unsetPrefix(java.lang.String prefixName)
Removes the mapping of the given prefix name in the collection of the data store prefixes.void
updateMaterialization()
Updates the materialization so that all and only the consequences of the explicitly stated facts and the rules are derived.void
updateStatistics()
Updates all statistics that the data store uses to plan queries and rules.void
updateStatistics(java.lang.String statisticsName)
Updates the statistics with the given name that the data store uses to plan queries and rules.
-
Field Details
-
WAIT_FOREVER
static final long WAIT_FOREVERSpecifies that the system should wait forever when it needs to acquire a lock on a data store (seesetLockTimeout(long)
).- See Also:
- Constant Field Values
-
-
Method Details
-
close
void close()Closes the data store connection by freeing all resources associated with it. Once a connection is closed, it cannot be used any further. Calling this method in parallel with any other method runs a very high risk of crashing the JVM.- Specified by:
close
in interfacejava.lang.AutoCloseable
-
getLockTimeout
Returns the time in milliseconds that the system will wait for when it needs to acquire a lock on a data store. SeesetLockTimeout(long)
for more detail.- Returns:
- the current timeout value
- Throws:
JRDFoxException
- thrown if an error is encountered
-
setLockTimeout
Sets the time in milliseconds that the system will wait for when it needs to acquire a lock on a data store. The value ofWAIT_FOREVER
specifies that the system should wait indefinitely. When successful completion of an operation (e.g., adding data to a data store) requires locking a store and the lock cannot be acquired within the timeout period, aLockTimeoutException
is thrown.- Parameters:
timeout
- the new timeout value- Throws:
JRDFoxException
- thrown if an error is encountered
-
duplicate
Creates a new connection to the same data store. The new connection inherits the role name and the lock timeout from this one. Regardless of whether a transaction is active on this connection, the new connection will not have an active transaction. The main use of this method is to avoid having to specify the user credentials again.- Returns:
- a new connection to the same data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
interrupt
Tries to interrupt an operation that is running in parallel on this connection. RDFox will make a best effort to interrupt an operation, but there are no guarantees that the operation will indeed be interrupted. An operation will throw anOperationInterruptedException
exception. This method can be called concurrently with any other method apart fromclose()
.- Throws:
JRDFoxException
- thrown if an error is encountered
-
getRoleName
Returns the name of the role currently associated with this connection.- Returns:
- the name of the role currently associated with this connection
- Throws:
JRDFoxException
- thrown if there is an error
-
checkPassword
Checks whether the supplied password is valid for the role associated with this connection. On failure, an exception is thrown and the connection remains valid.- Parameters:
password
- the password of the new user- Throws:
JRDFoxException
- thrown if there is an error
-
getName
Returns the name of the data store inside the server.- Returns:
- the name of the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getUniqueID
Returns a string that uniquely identifies the data store. Each time a data store is created, a fresh random string is associated to the data store. This string aims to be unique across servers and data stores.- Returns:
- a string that uniquely identifies this data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getParameters
Returns the parameters that the data store was created with.- Returns:
- the parameters of the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getEndResourceID
Returns the one plus the maximum resource ID that can be stored in tuple tables of this data store. In some data stores this number can be larger than 263 - 1, in which case this method returns 263 - 1 (i.e., the maximum signed long integer).- Returns:
- the maximum resource ID that can be stored in tuple tables of this data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
isConcurrent
Returnstrue
if the data store supports concurrent access. If not, then all access to the data store will be serialised.- Returns:
true
if the data store supports concurrent access- Throws:
JRDFoxException
- thrown if an error is encountered
-
isPersistent
Returnstrue
if the data store is persistent.- Returns:
true
if the data store is persistent- Throws:
JRDFoxException
- thrown if an error is encountered
-
getEqualityAxiomatization
Returns a flag that determines how the data store deals with equality reasoning.- Returns:
- determines the way in which equality is handled by the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getInvalidLiteralPolicy
Returns a flag that determines how the data store deals with invalid literals in input data, queries, and updates.- Returns:
- determines the way in which invalid literals are handled by the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getComponentInfo
Returns diagnostic information about the data store as a tree of objects each providing detailed information about the data store. Note: This information should be used for diagnostics purposes only. The content ofComponentInfo
is subject to change in future version. Callers should not rely on named property or a specific subcomponent being present.- Parameters:
extended
- iftrue
, returns extensive information about various subcomponents about the data store (mainly used for troubleshooting)- Returns:
- information about the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getBaseIRI
Returns the base IRI of the data store.- Returns:
- the base IRI of the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
setBaseIRI
Sets the base IRI of the data store.- Parameters:
baseIRI
- the base IRI of the data store- Throws:
JRDFoxException
- thrown if an error is encountered
-
getPrefixes
Returns the prefixes of the data store.- Returns:
- the prefixes of the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
setPrefixes
Replaces all mappings of the prefix names to IRIs maintained by the data store to the collection given in the argument.- Parameters:
prefixes
- the new prefixes- Throws:
JRDFoxException
- thrown if an error is encountered
-
setPrefix
Sets the given prefix name to the given prefix IRI in the collection of the data store prefixes.- Parameters:
prefixName
- the prefix name to setprefixIRI
- the IRI to which the prefix name is set- Returns:
true
if the collection of prefixes changed- Throws:
JRDFoxException
- thrown if an error is encountered
-
unsetPrefix
Removes the mapping of the given prefix name in the collection of the data store prefixes.- Parameters:
prefixName
- the prefix name whose mapping is to be removed- Returns:
true
if the collection of prefixes changed- Throws:
JRDFoxException
- thrown if an error is encountered
-
listDataSources
Returns information about the data sources currently present in the data store.- Returns:
- information about the tuple tables currently present in the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
containsDataSource
Checks whether the data store contains a data source with the specified name.- Parameters:
dataSourceName
- the name of the data source to be checked- Returns:
true
if the data store contains a data source with the given name- Throws:
JRDFoxException
- thrown if an error is encountered
-
registerDataSource
void registerDataSource(java.lang.String dataSourceName, java.util.Map<java.lang.String,java.lang.String> dataSourceParameters) throws JRDFoxExceptionRegisters a data source with a data store. The new data source is described using the supplied key-value pairs. This operation can be invoked only if no transaction is active on the connection.- Parameters:
dataSourceName
- the name of the data source to be createddataSourceParameters
- the key-value pairs that describe the data source to be created- Throws:
JRDFoxException
- thrown if an error is encountered
-
deregisterDataSource
Deregisters the data source table with the specified name from the data store. This operation can be invoked only if no transaction is active on the connection.- Parameters:
dataSourceName
- the name of the data source to be deleted- Throws:
JRDFoxException
- thrown if an error is encountered
-
describeDataSource
Returns information about the data source with the given name.- Parameters:
dataSourceName
- the name of the data source whose information is to be returned- Returns:
- information about the data source
- Throws:
JRDFoxException
- thrown if an error is encountered
-
listDataSourceTables
java.util.List<DataSourceTableInfo> listDataSourceTables(java.lang.String dataSourceName) throws JRDFoxExceptionReturns information about the data source tables of the specified data source in the data store.- Parameters:
dataSourceName
- the name of the data source whose tables are to be listed- Returns:
- information about the data source tables of the specified data source
- Throws:
JRDFoxException
- thrown if an error is encountered
-
containsDataSourceTable
boolean containsDataSourceTable(java.lang.String dataSourceName, java.lang.String dataSourceTableName) throws JRDFoxExceptionChecks whether the specified data source in the data store contains a data source table with the specified name.- Parameters:
dataSourceName
- the name of the data sourcedataSourceTableName
- the name of the data source table- Returns:
true
if the specified data source contains the specified data source table- Throws:
JRDFoxException
- thrown if an error is encountered
-
describeDataSourceTable
DataSourceTableInfo describeDataSourceTable(java.lang.String dataSourceName, java.lang.String dataSourceTableName) throws JRDFoxExceptionReturns information about the data source table of the specified data source in the data store.- Parameters:
dataSourceName
- the name of the data sourcedataSourceTableName
- the name of the data source table- Returns:
- information about the data source table
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getDataSourceTableData
ResourceValue[][] getDataSourceTableData(java.lang.String dataSourceName, java.lang.String dataSourceTableName, int numberOfRows) throws JRDFoxExceptionReturns a sample of the data from the specified data source table. This method is not designed for efficient importation of data from a data source. Rather, its main purpose is to allow applications to view the data in the source before mounting an appropriate tuple table.- Parameters:
dataSourceName
- the name of the data sourcedataSourceTableName
- the name of the data source tablenumberOfRows
- the maximum number of rows to be returned- Returns:
- a sample of the data from the data source table
- Throws:
JRDFoxException
- thrown if an error is encountered
-
listTupleTables
Returns information about the tuple tables currently present in the data store.- Returns:
- information about the tuple tables currently present in the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
containsTupleTable
Checks whether the data store contains a tuple table with the specified name.- Parameters:
tupleTableName
- the name of the tuple table to be checked- Returns:
true
if the data store contains a tuple table with the given name- Throws:
JRDFoxException
- thrown if an error is encountered
-
createTupleTable
void createTupleTable(java.lang.String tupleTableName, java.util.Map<java.lang.String,java.lang.String> tupleTableParameters) throws JRDFoxExceptionCreates a tuple table in a data store. The type of the tuple table is described by the supplied parameters. By using appropriate parameters, this method can be used to mount a tuple table from a data source. This operation can be invoked only if no transaction is active on the connection.- Parameters:
tupleTableName
- the name of the tuple table to be createdtupleTableParameters
- the key-value pairs that describe the tuple table to be created- Throws:
JRDFoxException
- thrown if an error is encountered
-
deleteTupleTable
Deletes the tuple table with the specified name from the data store. A tuple table can be deleted only if it is not used in the body or head of any rule currently loaded in the data store. This operation can be invoked only if no transaction is active on the connection.- Parameters:
tupleTableName
- the name of the tuple table to be deleted- Throws:
JRDFoxException
- thrown if an error is encountered
-
describeTupleTable
Returns information about the tuple table with the given name.- Parameters:
tupleTableName
- the name of the tuple table whose information is to be returned- Returns:
- information about the tuple table
- Throws:
JRDFoxException
- thrown if an error is encountered
-
listStatistics
Returns information about all statistics currently managed by the data store.- Returns:
- information about all statistics that the data store currently manages
- Throws:
JRDFoxException
- thrown if an error is encountered
-
containsStatistics
Checks whether the data store contains the statistics with the specified name.- Parameters:
statisticsName
- the name of the statistics- Returns:
true
if the data store contains the specified statistics- Throws:
JRDFoxException
- thrown if an error is encountered
-
createStatistics
void createStatistics(java.lang.String statisticsName, java.util.Map<java.lang.String,java.lang.String> statisticsParameters) throws JRDFoxExceptionCreates the statistics in a data store. The name of the statistics determines their type; thus, a data store can contain at most one statistics of a particular type, and the type corresponds to the statistics name. The way in which the statistics are gathered is influenced by the the supplied key-value pairs. This operation can be invoked only if no transaction is active on the connection.- Parameters:
statisticsName
- the name of the data source to be createdstatisticsParameters
- the key-value pairs that describe the statistics to be created- Throws:
JRDFoxException
- thrown if an error is encountered
-
deleteStatistics
Deletes the data store statistics with the specified name from the data store. This operation can be invoked only if no transaction is active on the connection.- Parameters:
statisticsName
- the name of the data store statistics to be deleted- Throws:
JRDFoxException
- thrown if an error is encountered
-
describeStatistics
Returns information about the specific statistics of the data store.- Parameters:
statisticsName
- the name of the statistics whose information should be returned- Returns:
- information about the statistics
- Throws:
JRDFoxException
- thrown if an error is encountered
-
updateStatistics
Updates all statistics that the data store uses to plan queries and rules. This operation should be invoked after large additions to the data store, or after a large number of facts has been derived. This operation can be invoked if either no transaction is active, or a read/write transaction is active. In the latter case, rolling back a transaction does not restore the statistics to their original state.- Throws:
JRDFoxException
- thrown if an error is encountered
-
setNextOperationMustMatchDataStoreVersion
Configures this connection so that the next operation is accepted only if the data store has the given version before the operation commences. If the data store version does not match when the operation is invoked, the operation will throwDataStoreVersionDoesNotMatchException
. Note that the version is not checked during this operation: this simply sets up the connection so that the next operation is checked. This mechanism can be used to make sure that each operation uses an expected version of the data.- Parameters:
dataStoreVersion
- the desired version (or 0 to not expect any specific data store version)- Throws:
JRDFoxException
- thrown if an error is encountered
-
getNextOperationMustMatchDataStoreVersion
Returns the data store version that the next operation on this connection should expect.- Returns:
- the desired data store version for the next operation (or 0 if any version can be accepted)
- Throws:
JRDFoxException
- thrown if an error is encountered
-
setNextOperationMustNotMatchDataStoreVersion
Configures this connection so that the next operation is accepted only if the data store does not have the given version before the operation commences. If the data store version matches when the operation is invoked, the operation will throwDataStoreVersionMatchesException
. Note that the version is not checked during this operation: this simply sets up the connection so that the next operation is checked. This mechanism can be used to make sure that the next operation succeeds only if the data store has changed.- Parameters:
dataStoreVersion
- the desired version (or 0 to not expect any specific data store version)- Throws:
JRDFoxException
- thrown if an error is encountered
-
getNextOperationMustNotMatchDataStoreVersion
Returns the data store version that the next operation on this connection should not expect.- Returns:
- the undesired data store version for the next operation (or 0 if any version can be accepted)
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getDataStoreVersionAfterLastOperation
Returns the version that the data store had after the last operation on this connection. If a transaction is active, the current data store version is returned. Note that rolling back a transaction does not restore the data store version.- Returns:
- the version that the data store had after the last transaction on this connection (or 0 if no transaction was performed on this connection)
- Throws:
JRDFoxException
- thrown if an error is encountered
-
getDataStoreVersion
If a transaction is active, the data store version associated with the transaction is returned; otherwise, the last committed data store version is returned.- Returns:
- the version of the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
updateStatistics
Updates the statistics with the given name that the data store uses to plan queries and rules. This operation should be invoked after large additions to the data store, or after a large number of facts has been derived. This operation can be invoked if either no transaction is active, or a read/write transaction is active. In the latter case, rolling back a transaction does not restore the statistics to their original state.- Parameters:
statisticsName
- the name of the statistics that should be updated- Throws:
JRDFoxException
- thrown if an error is encountered
-
getTransactionState
Returns the state of the transaction associated with this connection.- Returns:
- the state of the transaction
- Throws:
JRDFoxException
- thrown if an error is encountered
-
transactionRequiresRollback
Returnstrue
if a transaction is active on this connection and this transaction must be rolled back (i.e., it cannot be committed). This happens when certain operations invoked in a transaction result in an error.- Returns:
true
if the currently active transaction must be committed- Throws:
JRDFoxException
- thrown if an error is encountered
-
beginTransaction
Starts a new transaction on this connection.- Parameters:
transactionType
- determines the type of the transaction (i.e., whether a read-only or a read/write transaction is requested)- Throws:
JRDFoxException
- thrown if an error is encountered
-
commitTransaction
Commits the transaction associated with this connection. If an exception is thrown during a commit operation,transactionRequiresRollback()
will returntrue
, and the transaction should be explicitly rolled back usingrollbackTransaction()
.- Throws:
JRDFoxException
- thrown if an error is encountered
-
rollbackTransaction
Rolls back the transaction associated with this connection.- Throws:
JRDFoxException
- thrown if an error is encountered
-
clear
Clears the content of this data store -- that is, it clears all data and rules so the logical state of the data store is the same as after initialisation. This operation, however, does not clear the data store dictionary, so clients that have cached any resource IDs can still use them. This operation can be called inside a transaction, but, depending on the circumstances,requiresIncrementalReasoning()
can subsequently returntrue
, — that is, subsequent materialization will not be performed using the standard "from scratch" algorithm, which can affect efficiency. In contrast, if this operation is performed outside a transaction, then subsequent materialization will necessarily be performed using the standard "from scratch" algorithm.- Throws:
JRDFoxException
- thrown if an error is encountered
-
clearRulesAxiomsExplicateFacts
Clears all rules and turns all facts in the data store into EDB facts. After this operation, the data store is in the same state as if all derived facts have been imported from a file. This operation can be invoked only if no transaction is active.- Throws:
JRDFoxException
- thrown if an error is encountered
-
compact
Compact the data in the data store. This involves removing all deleted triples, and possibly sorting the data in order to facilitate faster access. This may result in reduced memory usage and/or disk usage for persisted data stores. This operation can be invoked only if no transaction is active.- Parameters:
deleteRedundantFiles
- any files made redundant by the operation are deleted if this parameter is set totrue
- Throws:
JRDFoxException
- thrown if an error is encountered
-
exportData
void exportData(java.io.OutputStream outputStream, java.lang.String formatName, java.util.Map<java.lang.String,java.lang.String> parameters) throws JRDFoxExceptionExports the data in the data store using the given format. The format determines which subset of the store data is to be exported; for example, the Turtle format can store triples, but not facts in other tuple tables or the rules.- Parameters:
outputStream
- receives the exported dataformatName
- the name of the output formatparameters
- key-value pairs that, depending on the format, customise the export process- Throws:
JRDFoxException
- thrown if an error is encountered
-
exportData
void exportData(java.io.File file, java.lang.String formatName, java.util.Map<java.lang.String,java.lang.String> parameters) throws JRDFoxExceptionExports the data in the data store using the given format. The format determines which subset of the store data is to be exported; for example, the Turtle format can store triples, but not facts in other tuple tables or the rules.- Parameters:
file
- receives the exported dataformatName
- the name of the output formatparameters
- key-value pairs that, depending on the format, customise the export process- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(UpdateType updateType, InputSourceFactory inputSourceFactory, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor) throws JRDFoxExceptionImports the data described by the given input source factory into the current data store.- Parameters:
updateType
- specifies whether the imported data should be added or removed from the data storeinputSourceFactory
- the content being importedformatName
- the name of the format of the dataimportNotificationMonitor
- receives errors/warnings encountered during import- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(UpdateType updateType, java.util.Collection<InputSourceFactory> inputSourceFactories, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor) throws JRDFoxExceptionImports the data described by the given input source factories into the current data store. If this server is configured to use more than one thread, then sources are parsed and imported in parallel.- Parameters:
updateType
- specifies whether the imported data should be added or removed from the data storeinputSourceFactories
- the content being importedformatName
- the name of the format of the dataimportNotificationMonitor
- receives errors/warnings encountered during import- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
Imports the data from the given file into the current data store.- Parameters:
updateType
- specifies whether the imported data should be added or removed from the data storefile
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
Imports the data from the given string into the current data store.- Parameters:
updateType
- specifies whether the imported data should be added or removed from the data storecontent
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(UpdateType updateType, java.io.InputStream inputStream) throws JRDFoxExceptionImports the data from the given input stream into the current data store.- Parameters:
updateType
- specifies whether the imported data should be added or removed from the data storeinputStream
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(ResourceValue defaultGraph, UpdateType updateType, InputSourceFactory inputSourceFactory, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor) throws JRDFoxExceptionImports the data described by the given input source factory into the current data store Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter.- Parameters:
defaultGraph
- the resource identifying the default graphupdateType
- specifies whether the imported data should be added or removed from the data storeinputSourceFactory
- the content being importedformatName
- the name of the format of the dataimportNotificationMonitor
- receives errors/warnings encountered during import- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(ResourceValue defaultGraph, UpdateType updateType, java.util.Collection<InputSourceFactory> inputSourceFactories, java.lang.String formatName, ImportNotificationMonitor importNotificationMonitor) throws JRDFoxExceptionImports the data described by the given input source factories into the current data store. Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter. If this server is configured to use more than one thread, then sources are parsed and imported in parallel.- Parameters:
defaultGraph
- the resource identifying the default graphupdateType
- specifies whether the imported data should be added or removed from the data storeinputSourceFactories
- the content being importedformatName
- the name of the format of the dataimportNotificationMonitor
- receives errors/warnings encountered during import- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(ResourceValue defaultGraph, UpdateType updateType, java.io.File file) throws JRDFoxExceptionImports the data from the given file into the current data store. Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter.- Parameters:
defaultGraph
- the resource identifying the default graphupdateType
- specifies whether the imported data should be added or removed from the data storefile
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(ResourceValue defaultGraph, UpdateType updateType, java.lang.String content) throws JRDFoxExceptionImports the data from the given string into the current data store. Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter.- Parameters:
defaultGraph
- the resource identifying the default graphupdateType
- specifies whether the imported data should be added or removed from the data storecontent
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importData
ImportResult importData(ResourceValue defaultGraph, UpdateType updateType, java.io.InputStream inputStream) throws JRDFoxExceptionImports the data from the given input stream into the current data store. Triples in the default graph will be put into the named graph specified using thedefaultGraph
parameter.- Parameters:
defaultGraph
- the resource identifying the default graphupdateType
- specifies whether the imported data should be added or removed from the data storeinputStream
- the content being imported- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importAxiomsFromTriples
ImportResult importAxiomsFromTriples(ResourceValue sourceGraph, boolean translateAssertions, ResourceValue destinationGraph, UpdateType updateType, ImportNotificationMonitor importNotificationMonitor) throws JRDFoxExceptionParses the given source graph into OWL axioms, and imports the axioms into the destination graph.- Parameters:
sourceGraph
- the resource identifying the source graphtranslateAssertions
- assertions are translated if this parameter istrue
destinationGraph
- the resource identifying the destination graphupdateType
- specifies whether the imported data should be added or removed from the data storeimportNotificationMonitor
- receives errors/warnings encountered during import- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
importAxiomsFromTriples
ImportResult importAxiomsFromTriples(ResourceValue sourceGraph, boolean translateAssertions, ResourceValue destinationGraph, UpdateType updateType) throws JRDFoxExceptionParses the given source graph into OWL axioms, and imports the axioms into the destination graph.- Parameters:
sourceGraph
- the resource identifying the source graphtranslateAssertions
- assertions are translated if this parameter istrue
destinationGraph
- the resource identifying the destination graphupdateType
- specifies whether the imported data should be added or removed from the data store- Returns:
- provides information about the importation process
- Throws:
JRDFoxException
- thrown if an error is encountered
-
listRules
Returns the information about the rules currently loaded into the data store.- Returns:
- information about the rules currently loaded into the data store
- Throws:
JRDFoxException
- thrown if an error is encountered
-
addRule
Adds a rule to the data store.- Parameters:
rule
- the rule to be added- Returns:
- the number of rules that were changed
- Throws:
JRDFoxException
- thrown if an error is encountered
-
addRules
Adds a collection of rules to the data store.- Parameters:
datalogProgram
- the rules to be added- Returns:
- the number of rules that were changed
- Throws:
JRDFoxException
- thrown if an error is encountered
-
deleteRule
Deletes a rule to the data store.- Parameters:
rule
- the rule to be deleted- Returns:
- the number of rules that were changed
- Throws:
JRDFoxException
- thrown if an error is encountered
-
deleteRules
Deletes a collection of rules to the data store.- Parameters:
datalogProgram
- the rules to be deleted- Returns:
- the number of rules that were changed
- Throws:
JRDFoxException
- thrown if an error is encountered
-
recompileRules
Recompiles the rules using the currently available statistics. This method should be called after bulk updates to a data store in order to ensure that the rules are evaluated using efficient query plans. TThis operation can be invoked if either no transaction is active, or a read/write transaction is active.- Throws:
JRDFoxException
- thrown if an error is encountered
-
requiresIncrementalReasoning
Returnstrue
if the next data store update must be performed using incremental reasoning (rather than standard using the standard datalog materialization "from scratch" algorithm).- Returns:
true
if the next data store update must be performed using incremental reasoning- Throws:
JRDFoxException
- thrown if an error is encountered
-
updateMaterialization
Updates the materialization so that all and only the consequences of the explicitly stated facts and the rules are derived. This operation is automatically applied internally so that all queries are always evaluated with respect to the updated materialization. However, requesting an update explicitly can be beneficial in some cases (e.g., when benchmarking reasoning algorithms). This operation can be invoked only if a read/write transaction is active.- Throws:
JRDFoxException
- thrown if an error is encountered
-
recomputeMaterialization
Recomputes the materialization from scratch — that is, deletes all derived facts and applies all rules as if the data had just been freshly imported. This operation can be used when the data in a data source attached to a data store changes: since there is no way for an external data source to notify the data store of data changes, the only option is to recompute everything afresh. This operation can be invoked only if no transaction is active.- Throws:
JRDFoxException
- thrown if an error is encountered
-
createExplanation
void createExplanation(java.lang.String factText, int maxDistanceFromRoot, int maxRuleInstancesPerFact, ExplanationType explanationType, java.io.OutputStream outputStream) throws JRDFoxExceptionComputes an explanation for a given fact and saves it in JSON format to the given output stream.- Parameters:
factText
- the fact to be explainedmaxDistanceFromRoot
- specifies how far in the proof tree to lookmaxRuleInstancesPerFact
- specifies the maximum number of rule instances deriving a particular fact to considerexplanationType
- determines the type of explanation that should be producedoutputStream
- receives the explanation- Throws:
JRDFoxException
- thrown if an error is encountered
-
createExplanation
void createExplanation(TupleTableAtom fact, int maxDistanceFromRoot, int maxRuleInstancesPerFact, ExplanationType explanationType, java.io.OutputStream outputStream) throws JRDFoxExceptionComputes an explanation for a given fact and saves it in JSON format to the given output stream.- Parameters:
maxDistanceFromRoot
- specifies how far in the proof tree to lookmaxRuleInstancesPerFact
- specifies the maximum number of rule instances deriving a particular fact to considerexplanationType
- determines the type of explanation that should be producedoutputStream
- receives the explanation- Throws:
JRDFoxException
- thrown if an error is encountered
-
createCursor
Cursor createCursor(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, int fetchWindowSize) throws JRDFoxExceptionCreates a cursor over the results of the given query. Since calling C++ from Java is expensive, JRDFox cursors have the option to retrieve answers in batches, and the batch size is governed by thefetchWindowSize
parameter. Please note that data store version checking is performed only on each access to the C++ cursor; thus, if the batch size is different from one, then a JRDFox cursor might detect a data store change with a delay.- Parameters:
queryText
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilationfetchWindowSize
- the number of answers that will be retrieved from C++ in each cursor operation- Returns:
- the cursor over the query results
- Throws:
JRDFoxException
- thrown if an error is encountered
-
createCursor
Cursor createCursor(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters) throws JRDFoxExceptionCreates a cursor over the results of the given query with the default fetch window size of 100.- Parameters:
queryText
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilation- Returns:
- the cursor over the query results
- Throws:
JRDFoxException
- thrown if an error is encountered
-
createCursor
Cursor createCursor(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters, int fetchWindowSize) throws JRDFoxExceptionCreates a cursor over the results of the given query. Since calling C++ from Java is expensive, JRDFox cursors have the option to retrieve answers in batches, and the batch size is governed by thefetchWindowSize
parameter. Please note that data store version checking is performed only on each access to the C++ cursor; thus, if the batch size is different from one, then a JRDFox cursor might detect a data store change with a delay.- Parameters:
query
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilationfetchWindowSize
- the number of answers that will be retrieved from C++ in each cursor operation- Returns:
- the cursor over the query results
- Throws:
JRDFoxException
- thrown if an error is encountered
-
createCursor
Cursor createCursor(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters) throws JRDFoxExceptionCreates a cursor over the results of the given query with the default fetch window size of 100.- Parameters:
query
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilation- Returns:
- the cursor over the query results
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateQuery
StatementResult evaluateQuery(java.lang.String queryText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, QueryAnswerMonitor queryAnswerMonitor) throws JRDFoxExceptionEvaluates a query and calls the suppliedQueryAnswerMonitor
instance for each tuple in the result.- Parameters:
queryText
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilationqueryAnswerMonitor
- an interface containing a callback method that is called for each tuple in the result- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateQuery
StatementResult evaluateQuery(Query query, java.util.Map<java.lang.String,java.lang.String> compilationParameters, QueryAnswerMonitor queryAnswerMonitor) throws JRDFoxExceptionEvaluates a query and calls the suppliedQueryAnswerMonitor
instance for each tuple in the result.- Parameters:
query
- the query to be evaluatedcompilationParameters
- the key-value pairs guiding query compilationqueryAnswerMonitor
- an interface containing a callback method that is called for each tuple in the result- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateUpdate
StatementResult evaluateUpdate(java.lang.String updateText, java.util.Map<java.lang.String,java.lang.String> compilationParameters) throws JRDFoxExceptionEvaluates an update.- Parameters:
updateText
- the update to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilation- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateUpdate
StatementResult evaluateUpdate(Update update, java.util.Map<java.lang.String,java.lang.String> compilationParameters) throws JRDFoxExceptionEvaluates an update.- Parameters:
update
- the update to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilation- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateUpdates
StatementResult evaluateUpdates(java.util.List<Update> updates, java.util.Map<java.lang.String,java.lang.String> compilationParameters) throws JRDFoxExceptionEvaluates a list of updates.- Parameters:
updates
- the list of updates to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilation- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateStatement
StatementResult evaluateStatement(java.lang.String statementText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.OutputStream outputStream, java.lang.String queryAnswerFormatName) throws JRDFoxExceptionEvaluates a statement and serialises the result to the supplied output stream using the specified format.- Parameters:
statementText
- the statement to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilationoutputStream
- receives the statement resultqueryAnswerFormatName
- specifies the name of the answer format in case of a query- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateStatement
StatementResult evaluateStatement(Statement statement, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.OutputStream outputStream, java.lang.String queryAnswerFormatName) throws JRDFoxExceptionEvaluates a statement and serialises the result to the supplied output stream using the specified format.- Parameters:
statement
- the statement to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilationoutputStream
- receives the query resultqueryAnswerFormatName
- specifies the name of the answer format in case of a query- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateStatement
StatementResult evaluateStatement(java.lang.String statementText, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.File file, java.lang.String queryAnswerFormatName) throws JRDFoxExceptionEvaluates a statement and serialises the result to the supplied file using the specified format.- Parameters:
statementText
- the statement to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilationfile
- receives the query resultqueryAnswerFormatName
- specifies the name of the answer format in case of a query- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-
evaluateStatement
StatementResult evaluateStatement(Statement statement, java.util.Map<java.lang.String,java.lang.String> compilationParameters, java.io.File file, java.lang.String queryAnswerFormatName) throws JRDFoxExceptionEvaluates a statement and serialises the result to the supplied file using the specified format.- Parameters:
statement
- the statement to be evaluatedcompilationParameters
- the key-value pairs guiding statement compilationfile
- receives the query resultqueryAnswerFormatName
- specifies the name of the answer format in case of a query- Returns:
- provides information about the number of results produced
- Throws:
JRDFoxException
- thrown if an error is encountered
-