Class LuceneSailConnection
java.lang.Object
org.eclipse.rdf4j.sail.helpers.SailConnectionWrapper
org.eclipse.rdf4j.sail.helpers.NotifyingSailConnectionWrapper
org.eclipse.rdf4j.sail.lucene.LuceneSailConnection
- All Implemented Interfaces:
AutoCloseable, FederatedServiceResolverClient, ThreadSafetyAware, NotifyingSailConnection, SailConnection
Sail Connection Listener instead of implementing add/remove
Using SailConnectionListener, see above The LuceneIndex is adapted based on events coming from the wrapped Sail, rather than by overriding the addStatement and removeStatements methods. This approach has two benefits: (1) when the wrapped Sail only reports statements that were not stored before, the LuceneIndex does not have to do the check on the skipped statemements and (2) the method for removing Statements from the Lucene index does not have to take wildcards into account, making its implementation simpler.Synchronized Methods
LuceneSailConnection uses a listener to collect removed statements. The listener should not be active during the removal of contexts, as this is not needed (context removal is implemented differently). To realize this, all methods that can do changes are synchronized and during context removal, the listener is disabled. Thus, all methods of this connection that can change data are synchronized.Evaluating Queries - possible optimizations
Arjohn has answered this question in the sesame-dev mailinglist on 13.8.2007: Is there a QueryModelNode that can contain a fixed (perhaps very long) list of Query result bindings? There is currently no such node, but there are two options to get similar behaviour: 1) Include the result bindings as OR-ed constraints in the query model. E.g. if you have a result binding like {{x=1,y=1},{x=2,y=2}}, this translates to the constraints (x=1 and y=1) or (x=2 and y=2). 2) The LuceneSail could iterate over the LuceneQueryResult and supply the various results as query input parameters to the underlying Sail. This is similar to using PreparedStatement's in JDBC.- Author:
- sauermann, christian.huetter
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final SailConnectionListenerThe listener that listens to the underlying connection. -
Constructor Summary
ConstructorsConstructorDescriptionLuceneSailConnection(NotifyingSailConnection wrappedConnection, SearchIndex luceneIndex, LuceneSail sail) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddStatement(Resource subj, IRI pred, Value obj, Resource... contexts) Adds a statement to the store.voidbegin()Begins a transaction requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction.voidRemoves all statements from the specified/all contexts.voidclose()Closes the connection.voidcommit()Commits any updates that have been performed since the last timeSailConnection.commit()orSailConnection.rollback()was called.CloseableIteration<? extends BindingSet> evaluate(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred) Evaluates the supplied TupleExpr on the data contained in this Sail object, using the (optional) dataset and supplied bindings as input parameters.voidremoveStatements(Resource subj, IRI pred, Value obj, Resource... contexts) Removes all statements matching the specified subject, predicate and object from the repository.voidrollback()Rolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.Methods inherited from class NotifyingSailConnectionWrapper
addConnectionListener, getWrappedConnection, removeConnectionListenerModifier and TypeMethodDescriptionvoidaddConnectionListener(SailConnectionListener listener) Adds the given listener to the wrapped connection.Gets the connection that is wrapped by this object.voidRemoves the given listener from the wrapped connection.Methods inherited from class SailConnectionWrapper
addStatement, begin, clearNamespaces, endUpdate, explain, flush, getComparator, getContextIDs, getFederatedServiceResolver, getNamespace, getNamespaces, getStatements, getStatements, getSupportedOrders, hasStatement, isActive, isOpen, prepare, prepareQuery, removeNamespace, removeStatement, setFederatedServiceResolver, setNamespace, setTransactionSettings, size, size, startUpdate, supportsConcurrentReadsModifier and TypeMethodDescriptionvoidaddStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts) Adds a statement to the store.voidbegin(IsolationLevel level) Begins a transaction with the specifiedIsolationLevellevel, requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction.voidRemoves all namespace declarations from the repository.voidendUpdate(UpdateContext modify) Indicates that the givenopwill not be used in any call again.explain(Explanation.Level level, TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred, int timeoutSeconds) Explain how the TupleExpr will be (or has been) executed/evaluated by returning a TupleExpr (which may or may not be the provided TupleExpr) that has gone through zero or more of the stages prior to and also including execution as specified by the provided level.voidflush()Flushes any pending updates and notify changes to listeners as appropriate.Different underlying datastructures may have different ways of ordering statements.CloseableIteration<? extends Resource> Returns the set of all unique context identifiers that are used to store statements.Gets theFederatedServiceResolverused by this client.getNamespace(String prefix) Gets the namespace that is associated with the specified prefix, if any.CloseableIteration<? extends Namespace> Gets the namespaces relevant to the data contained in this Sail object.CloseableIteration<? extends Statement> getStatements(StatementOrder statementOrder, Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) Gets all statements from the specified contexts that have a specific subject, predicate and/or object.CloseableIteration<? extends Statement> getStatements(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) Gets all statements from the specified contexts that have a specific subject, predicate and/or object.getSupportedOrders(Resource subj, IRI pred, Value obj, Resource... contexts) The underlying store may support some, but not all, statement orders based on the statement pattern.booleanhasStatement(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) Determines if the store contains any statements from the specified contexts that have a specific subject, predicate and/or object.booleanisActive()Indicates if a transaction is currently active on the connection.booleanisOpen()Checks whether this SailConnection is open.voidprepare()Checks for an error state in the active transaction that would force the transaction to be rolled back.prepareQuery(QueryLanguage ql, Query.QueryType type, String query, String baseURI) Allows the SailConnection to bypass the standard query parser and provide its own internalTupleExprimplementation.voidremoveNamespace(String prefix) Removes a namespace declaration by removing the association between a prefix and a namespace name.voidremoveStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts) Removes all statements matching the specified subject, predicate and object from the repository.voidSets theFederatedServiceResolverto use for this client.voidsetNamespace(String prefix, String name) Sets the prefix for a namespace.voidsetTransactionSettings(TransactionSetting... settings) Pass any transaction-specific settings to the SailConnection.longlongReturns the number of (explicit) statements in the store, or in specific contexts.voidstartUpdate(UpdateContext modify) Signals the start of an update operation.booleanA class may support concurrent reads from multiple threads against the same object.
-
Field Details
-
connectionListener
The listener that listens to the underlying connection. It is disabled during clearContext operations.
-
-
Constructor Details
-
LuceneSailConnection
public LuceneSailConnection(NotifyingSailConnection wrappedConnection, SearchIndex luceneIndex, LuceneSail sail)
-
-
Method Details
-
addStatement
public void addStatement(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException Description copied from interface:SailConnectionAdds a statement to the store.- Specified by:
addStatementin interfaceSailConnection- Overrides:
addStatementin classSailConnectionWrapper- Parameters:
subj- The subject of the statement to add.pred- The predicate of the statement to add.obj- The object of the statement to add.contexts- The context(s) to add the statement to. Note that this parameter is a vararg and as such is optional. If no contexts are specified, a context-less statement will be added.- Throws:
SailException- If the statement could not be added, for example because no transaction is active.
-
close
Description copied from interface:SailConnectionCloses the connection. Any updates that haven't been committed yet will be rolled back. The connection can no longer be used once it is closed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSailConnection- Overrides:
closein classSailConnectionWrapper- Throws:
SailException
-
clear
Description copied from interface:SailConnectionRemoves all statements from the specified/all contexts. If no contexts are specified the method operates on the entire repository.- Specified by:
clearin interfaceSailConnection- Overrides:
clearin classSailConnectionWrapper- Parameters:
contexts- The context(s) from which to remove the statements. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Throws:
SailException- If the statements could not be removed.
-
begin
Description copied from interface:SailConnectionBegins a transaction requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction. The transaction will use the defaultIsolationLevellevel for the SAIL, as returned bySail.getDefaultIsolationLevel().- Specified by:
beginin interfaceSailConnection- Overrides:
beginin classSailConnectionWrapper- Throws:
SailException- If the connection could not start a transaction or if a transaction is already active on this connection.
-
commit
Description copied from interface:SailConnectionCommits any updates that have been performed since the last timeSailConnection.commit()orSailConnection.rollback()was called.- Specified by:
commitin interfaceSailConnection- Overrides:
commitin classSailConnectionWrapper- Throws:
SailException- If the SailConnection could not be committed.
-
evaluate
public CloseableIteration<? extends BindingSet> evaluate(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred) throws SailException Description copied from interface:SailConnectionEvaluates the supplied TupleExpr on the data contained in this Sail object, using the (optional) dataset and supplied bindings as input parameters.- Specified by:
evaluatein interfaceSailConnection- Overrides:
evaluatein classSailConnectionWrapper- Parameters:
tupleExpr- The tuple expression to evaluate.dataset- The dataset to use for evaluating the query, null to use the Sail's default dataset.bindings- A set of input parameters for the query evaluation. The keys reference variable names that should be bound to the value they map to.includeInferred- Indicates whether inferred triples are to be considered in the query result. If false, no inferred statements are returned; if true, inferred statements are returned if available- Returns:
- The TupleQueryResult.
- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
removeStatements
public void removeStatements(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException Description copied from interface:SailConnectionRemoves all statements matching the specified subject, predicate and object from the repository. All three parameters may be null to indicate wildcards.- Specified by:
removeStatementsin interfaceSailConnection- Overrides:
removeStatementsin classSailConnectionWrapper- Parameters:
subj- The subject of the statement that should be removed, or null to indicate a wildcard.pred- The predicate of the statement that should be removed, or null to indicate a wildcard.obj- The object of the statement that should be removed , or null to indicate a wildcard. *contexts- The context(s) from which to remove the statement. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Throws:
SailException- If the statement could not be removed, for example because no transaction is active.
-
rollback
Description copied from interface:SailConnectionRolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.- Specified by:
rollbackin interfaceSailConnection- Overrides:
rollbackin classSailConnectionWrapper- Throws:
SailException- If the SailConnection could not be rolled back.
-