杰西的奇怪行为

  • 本文关键字: ontology rules jess
  • 更新时间 :
  • 英文 :


我想使用杰西(Jess)在家庭本体中找到鲍勃孩子。以下规则应该这样做:

(defrule FindBobChildren
    (object (is-a https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#Person) 
            (OBJECT ?oi)
            (https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#hasParent 
            ?b&:(eq (instance-name ?b) (instance-name https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#Bob)))
    )
=>
    (printout t "Bob children:" (instance-name ?oi) crlf)   
)

但是,不幸的是,它只会打印出只有鲍勃作为他/她父母的孩子。例如,如果一个人将鲍勃(Bob)和玛丽(Mary)作为他/她的父母,那么该规则将不匹配。

不知道#person的模板是如何定义的,这使它变得困难,但是从您描述的行为中,我推断出#hasparent是多islot。因此,使用此:

(defrule FindBobChildren
    (object (is-a #Person) 
        (OBJECT ?oi)
        (#hasParent $? ?b&:(eq (instance-name ?b)(instance-name #Bob)) $?
        )
    )
=>
    (printout t "Bob children:" (instance-name ?oi) crlf)   
)

相关内容

  • 没有找到相关文章

最新更新