; test-verbose-parse.scm - Parse with verbose logging
(use-modules (opencog) (opencog exec) (opencog lg))
(use-modules (opencog persist) (opencog persist-rocks))
(use-modules (opencog matrix) (opencog learn))
; Type aliases
(define (ParseNode name) (Anchor (string-append "parse:" name)))
(define (SentenceNode name) (Anchor (string-append "sentence:" name)))
(module-define! (resolve-module '(opencog lg)) 'ParseNode ParseNode)
(module-define! (resolve-module '(opencog lg)) 'SentenceNode SentenceNode)
; Load data
(display "Loading data...\n")
(define rsn (RocksStorageNode "rocks://data/pairs.rdb"))
(cog-open rsn)
(define ala (make-any-link-api))
(define aca (add-count-api ala))
(define pair-stars (add-pair-stars aca))
(pair-stars 'fetch-pairs)
(format #t "Loaded ~a edges\n\n" (cog-count-atoms 'Edge))
; Check if pair-predicate in dict config matches actual data
(display "=== Checking Bond/predicate match ===\n")
(define sample-edge (car (cog-get-atoms 'Edge)))
(format #t "Sample edge: ~a\n" sample-edge)
(define edge-pred (car (cog-outgoing-set sample-edge)))
(format #t "Edge predicate: ~a\n" edge-pred)
(format #t "Edge predicate type: ~a\n" (cog-type edge-pred))
(format #t "Edge predicate name: ~a\n\n" (cog-name edge-pred))
; Check what the dict config says
(display "=== Dict configuration expects ===\n")
(display " pair-predicate: (BondNode \"ANY\")\n")
(define expected-pred (Bond "ANY"))
(format #t " Created Bond: ~a\n" expected-pred)
(format #t " Bond handle: ~a\n" (cog-handle expected-pred))
(format #t " Data pred handle: ~a\n" (cog-handle edge-pred))
(format #t " Same atom? ~a\n\n" (equal? expected-pred edge-pred))
; Now parse
(display "=== Parsing with verbose ===\n")
(define parse-link
(LgParseLink
(Phrase "the cat")
(LgDict "dict-pair")
(Number 3)
(cog-atomspace)
rsn))
(format #t "Parse link: ~a\n\n" parse-link)
(display "Executing parse...\n")
(define result (cog-execute! parse-link))
(format #t "Result: ~a\n" result)
(cog-close rsn)
(display "\nDone.\n")