# $Id: checking.n3,v 1.4 2004/03/31 20:06:02 connolly Exp $
#
# a papertrail bank.
# cf http://www.w3.org/DesignIssues/PaperTrail.html
#
# USAGE:
#  python ../cwm.py checking.n3 bankSW.n3 --think --data >,statement.n3
#

@prefix bk: <banking#>.
@prefix ck: <checking#>.
@prefix : <checking#>.

@prefix math: <http://www.w3.org/2000/10/swap/math#>.
@prefix  log: <http://www.w3.org/2000/10/swap/log#>.
@prefix  lst: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

this log:forAll :B0, :DOC, :ACCT, :A1.

{
  :ACCT
    bk:statements [ lst:first ?LAST_ST ];
    bk:transAfter [ :amt ?TT; :more () ].

  ?LAST_ST log:semantics [ log:includes
        { :ACCT :balance :B0 }
      ].

  ( :B0 ?TT ) math:sum ?TOT.
}
  => { :ACCT :balance ?TOT }.

{ ?ACCT bk:transactions ?L }
  => {
    ?ACCT bk:transAfter [ :amt 0; :more ?L ]
  }.

{
  ?ACCT bk:transAfter [ :amt :B0; :more [ lst:first :DOC; lst:rest ?L ]].
  :DOC log:semantics [
    log:includes { :DOC a ck:Check; ck:amount :A1; :account :ACCT. }
  ].
  (8 5) math:difference 3.
  (:B0 :A1) math:difference ?TOT.
 }
  => { :ACCT bk:transAfter [ :amt ?TOT; :more ?L ] }.

