; test-parse-success.scm - Verify parsing works
(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)
(display "=== MST Parsing Success Test ===\n\n")
; Load data
(display "Loading word-pair 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, ~a words\n\n"
(cog-count-atoms 'Edge)
(length (cog-get-atoms 'WordNode)))
; Parse a sentence
(display "Parsing 'the cat sat on the mat'...\n\n")
(define result
(cog-execute!
(LgParseLink
(Phrase "the cat sat on the mat")
(LgDict "dict-pair")
(Number 5)
(cog-atomspace)
rsn)))
; Count results
(define result-list (cog-value->list result))
(format #t "Number of parses: ~a\n\n" (length result-list))
; Show first parse structure
(when (> (length result-list) 0)
(display "First parse:\n")
(let* ((first-parse (car result-list))
(parse-parts (cog-value->list first-parse)))
(format #t " Parts: ~a\n" (length parse-parts))
; Show the linkage (part 1)
(when (>= (length parse-parts) 2)
(display "\n Linkage:\n")
(let ((linkage (list-ref parse-parts 1)))
(for-each
(lambda (edge)
(format #t " ~a\n" edge))
(cog-value->list linkage))))))
; Count sections created
(define sections (cog-get-atoms 'Section))
(format #t "\nSections created: ~a\n" (length sections))
(cog-close rsn)
(display "\n=== SUCCESS! ===\n")