Look at the sources for the difference predicate calls.
The output should look like:
άμÏελοÏ;lib/db% swipl -f none ?- uniprot. Running on :date(2012,10,17) Using database at: uniprot.sqlite table:secondary_accessions table:identifier_mapping secondary_accessions/secondary_accession secondary_accessions/primary_accession identifier_mapping/uniprot_accession identifier_mapping/identifier_type identifier_mapping/target_identifier secondary_accessions:286525 identifier_mapping:3044651 secondary_accessions+286525 identifier_mapping+3044651 [A0A111,Q10706]-_G309 rows_for(_G309):[row(A0A111),row(Q10706)] by_findall(P64943,[A0A111,Q10706]) Caution! Deleting db entries for-P64943 Affected rows:row(2) now(P64943,[]) Not to worry! Adding back the db entries for-P64943 affected_two(row(1),row(1)) finally(P64943,[A0A111,Q10706]) v:0:1:0 vd:date(2012,10,17) citation Exploring file based databases via an Sqlite interface. Canisius Sander, Nicos Angelopoulos and Lodewyk Wessels In the ICLP Workshop on Logic-based methods in Programming Environments (WLPE'12), p.2-9, 2012. Budapest, Hungary. true. ?-