The update semantics of the RDF database follows the conventional
Prolog
logical update view. In addition, the RDF database supports
transactions and snapshots.
- [semidet]rdf_transaction(:Goal)
- Same as
rdf_transaction(Goal, user, [])
. See rdf_transaction/3.
- [semidet]rdf_transaction(:Goal,
+Id)
- Same as
rdf_transaction(Goal, Id, [])
. See rdf_transaction/3.
- [semidet]rdf_transaction(:Goal,
+Id, +Options)
- Run Goal in an RDF transaction. Compared to the ACID model,
RDF transactions have the following properties:
- Modifications inside the transactions become all atomically visible
to the outside world if Goal succeeds or remain invisible if Goal
fails or throws an exception. I.e., the atomicy property is fully
supported.
- Consistency is not guaranteed. Later versions may implement
consistency constraints that will be checked serialized just before the
actual commit of a transaction.
- Concurrently executing transactions do not infuence each other.
I.e., the isolation property is fully supported.
- Durability can be activated by loading
library(semweb/rdf_persistency)
.
Processed options are:
- snapshot(+Snapshot)
- Execute Goal using the state of the RDF store as stored in
Snapshot. See rdf_snapshot/1. Snapshot
can also be the atom
true
, which implies that an anonymous
snapshot is created at the current state of the store. Modifications due
to executing Goal are only visible to Goal.
- [det]rdf_snapshot(-Snapshot)
- Take a snapshot of the current state of the RDF store. Later, goals may
be executed in the context of the database at this moment using rdf_transaction/3
with the
snapshot
option. A snapshot created outside a
transaction exists until it is deleted. Snapshots taken inside a
transaction can only be used inside this transaction.
- [det]rdf_delete_snapshot(+Snapshot)
- Delete a snapshot as obtained from rdf_snapshot/1.
After this call, resources used for maintaining the snapshot become
subject to garbage collection.
- [nondet]rdf_active_transaction(?Id)
- True if Id is the identifier of a transaction in the context
of which this call is executed. If Id is not instantiated,
backtracking yields transaction identifiers starting with the innermost
nested transaction. Transaction identifier terms are not copied, need
not be ground and can be instantiated during the transaction.
- [nondet]rdf_current_snapshot(?Term)
- True when Term is a currently known snapshot.
- bug
- Enumeration of snapshots is slow.