我是否必须定义规则或查询以从本体(在变量中)获取实例的名称?

时间:2016-05-22 03:27:13

标签: java ontology jess

我的实例的名称为(screenshot of the said names in Protégé),插槽为(image here)

我需要做的是:了解插槽的价值" DESCRIPTION",获取实例的名称,以便我可以在我的Java程序中使用它。

我想到了defrule,但它是否允许我将结果放在全局变量中?你可以指导我这样做吗?

1 个答案:

答案 0 :(得分:0)

您确实可以将规则与全局结合使用:

(defglobal ?*desc* = "")

写一条规则:

(defrule getDescription
    (SystemEauDeRefroidissement
       (http..#description ?d))
=>
    (bind ?*desc* ?d))

如果您只有SystemEauDeRefroidissement的单个实例,则可能会有效。您可以使用Jess API检索全局值:

Context ctxt = rete.getContext();
Variable var = ctxt.getVariable( "desc" );
String desc = var.stringValue( ctxt );

我没有测试任何这个。

编辑如果您有说明,则可以编写规则(现在更多采用Protégé风格:

(object
   (is-a http..#SystemEauDeRefroidissement) 
   (OBJECT ?sedr)
   (http..#description ...)
=>
    (bind ?*sedr* ?sedr))

我不知道你是如何将描述值插入Jess环境的,所以这就是省略号的原因。