OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / query / absent-pets.scm

59 lines · scm ref:

(use-modules (opencog))

; Unit test for Issue #1596
;
; Initial data
(Inheritance (Concept "American") (Concept "person"))
(Inheritance (Concept "German") (Concept "person"))
(Inheritance (Concept "cat") (Concept "pet"))
(Inheritance (Concept "dog") (Concept "pet"))

(Edge (Predicate "keep-pet")
   (List (Concept "German") (Concept "dog")))

; Find potential, hypothetical pet-keepers.
(define pet-keepers
 (let ((kp (Predicate "keep-pet"))
       (vA (Variable "$A"))        
       (vX (Variable "$X")) )

  (QueryLink
     (VariableList
        (TypedVariable vA (Type "ConceptNode"))
        (TypedVariable vX (Type "ConceptNode")) )
     (And
        (Inheritance vA (Concept "person"))
        (Inheritance vX (Concept "pet"))

        ;; Reject those we know about
        (Absent (Edge kp (List vA vX)))
     )     
     (List kp vA vX))))

; This:
; (cog-execute! pet-keepers)
; should return German-cat, German-dog and American-dog
; It must NOT return German-dog.

(define expected-result
(SetLink
   (ListLink
      (PredicateNode "keep-pet")
      (ConceptNode "German")
      (ConceptNode "cat")
   )
   (ListLink
      (PredicateNode "keep-pet")
      (ConceptNode "American")
      (ConceptNode "cat")
   )
   (ListLink
      (PredicateNode "keep-pet")
      (ConceptNode "American")
      (ConceptNode "dog")
   )
))

*unspecified*