PublicShow sourcerdf_edit.pl -- RDF edit layer

This library provides a number of functions on top of the rdf_db module:

See also
- rdf_persistency.pl provides reliable persistency, but without changes boardcasting and undo/redo.
To be done
- This library must be rewritten using rdf_monitor/3. This allows using edit layer without having to choose between rdf_ and rdfe_ predicates.
Source rdfe_update(+Subject, +Predicate, +Object, +Action)
Update an existing triple. Possible actions are:

! subject(+Subject) ! predicate(+Predicate) ! object(+Object) ! source(+Source)

Source rdfe_delete(+Subject)
Delete a subject and all we know about it. This is a bit tricky. If we are involved in transitive relations, should we re-joint these in this module?
Source rdfe_load(+File) is det
Source rdfe_load(+File, +Options) is det
Load an RDF file and record this action including version information to facilitate reliable reload.
Source rdfe_snapshot_file(-File)
Enumerate the MD5 snapshot files required to restore the current journal file. Using this call we can write a routine that packages the journal file with all required snapshots to restore the journal on another computer.
Source rdfe_register_ns(Id, URI)
Encapsulation of rdf_register_ns(Id, URI)
Source rdfe_transaction(:Goal)
Run Goal, recording all modifications as a single transaction. If Goal raises an exception or fails, all changes are rolled-back.
Source rdfe_undo
Undo a (toplevel) transaction. More calls do further undo. The `Undone' actions are re-added to the undo log, so the user can redo them. Fails if there are no more undo/redo transactions.
Source rdfe_redo
Start a redo-session
Source rdfe_can_redo(-TID) is semidet
Source rdfe_can_undo(-TID) is semidet
Check if we can undo and if so return the id of the transaction that will be un/re-done. A subsequent call to rdfe_transaction_name can be used to give a hint in the UI.
Source rdfe_transaction_name(+TID, -Name)
Return name if the transaction is named.
Source rdfe_set_transaction_name(+Name)
Set name of the current transaction
Source rdfe_transaction_member(+TID, -Action)
Query actions inside a transaction to allow for quick update of visualisers.
Source rdfe_set_file_property(+File, +Options)
Set properties on the file. Options is one of
Source rdfe_get_file_property(+FileOrURL, ?Option)
rdfe_get_file_property(-URL, ?Option)
Fetch file properties set with rdfe_set_file_property/2.
Source rdfe_is_modified(?Source)
True if facts have been added, deleted or updated that have Source as `payload'.
Source rdfe_clear_modified(+Graph) is det
Consider the current state of Graph as unmodified.
Source rdfe_set_watermark(Name)
Create a watermark for undo and replay journal upto this point. The rest of the logic needs to be written later.
Source rdfe_reset
Clear database, undo, namespaces and journalling info.
Source rdfe_open_journal(+File, +Mode) is det
Open a journal writing to File in Mode. Mode is one of
read
Open and replay the journal
write
Delete current journal and create a fresh one
append
Read and replay the existing journal and append new modifications to the File.
Source rdfe_close_journal
Close the journal. Automatically called from at program termination from at_halt/1.
Source rdfe_current_journal(-Path)
Query the currently open journal
Source rdfe_replay_journal(+File)
Replay a journal file. For now this is our cheap way to deal with save/load. Future versions may be more clever when dealing with the version information stored in the journal.

Re-exported predicates

The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.

Source rdfe_can_redo(-TID) is semidet
Source rdfe_can_undo(-TID) is semidet
Check if we can undo and if so return the id of the transaction that will be un/re-done. A subsequent call to rdfe_transaction_name can be used to give a hint in the UI.
Source rdfe_load(+File) is det
Source rdfe_load(+File, +Options) is det
Load an RDF file and record this action including version information to facilitate reliable reload.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

Source rdfe_assert(Arg1, Arg2, Arg3, Arg4)
Source rdfe_retractall(Arg1, Arg2, Arg3)
Source rdfe_assert(Arg1, Arg2, Arg3)
Source rdfe_retractall(Arg1, Arg2, Arg3, Arg4)
Source rdfe_update(Arg1, Arg2, Arg3, Arg4, Arg5)
Source rdfe_transaction(Arg1, Arg2)
Source rdfe_unregister_ns(Arg1, Arg2)