我是否必须定义规则或查询才能从 ontology(在变量中)获取实例名称?

Do I have to define a rule or a query to get the name of the instance from the ontology (in a variable)?

我的实例名称为 (screenshot of the said names in Protégé) and slots (image here)。

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

我想到了一个defrule,但是它允许我在一个全局变量中得到结果吗?你能指导我这样做吗?

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

(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 环境中,所以这就是省略号的原因。