我是否必须定义规则或查询才能从 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 环境中,所以这就是省略号的原因。
我的实例名称为 (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 环境中,所以这就是省略号的原因。