3.3 library(semweb/rdf_db): The RDF database
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • SWI-Prolog Semantic Web Library 3.0
        • Two RDF APIs
          • library(semweb/rdf_db): The RDF database
            • Query the RDF database
            • Enumerating objects
            • Modifying the RDF database
            • Update view, transactions and snapshots
              • rdf_transaction/1
              • rdf_transaction/2
              • rdf_transaction/3
              • rdf_snapshot/1
              • rdf_delete_snapshot/1
              • rdf_active_transaction/1
              • rdf_current_snapshot/1
            • Type checking predicates
            • Loading and saving to file
            • Graph manipulation
            • Literal matching and indexing
            • Predicate properties
            • Prefix Handling
            • Miscellaneous predicates
            • Memory management considerations

3.3.4 Update view, transactions and snapshots

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:

  1. 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.
  2. Consistency is not guaranteed. Later versions may implement consistency constraints that will be checked serialized just before the actual commit of a transaction.
  3. Concurrently executing transactions do not infuence each other. I.e., the isolation property is fully supported.
  4. 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.