Cyc查询或SubL命令在Cyc KB中重新创建常量

时间:2017-06-15 05:46:05

标签: nlp artificial-intelligence opencyc

我需要从包含特定常量的KB中删除所有断言,同时保持常量本身不变(例如"重新创建常量")。

我可以使用哪个Cyc查询或SubL命令来实现此目的?

Cyc KB - Research Cyc 4.0q。

1 个答案:

答案 0 :(得分:1)

有一个SubL功能:

(ke-recreate-now CONSTANT)

它实际上会完全删除常量,但然后使用相同的名称和guid重新创建它。

如果您真正想要删除大多数(但不是全部)关于CONSTANT的断言,您需要以某种方式决定要保留哪些断言。如果你有一组想要保留的谓词,你可以这样做:

(with-all-mts (do-gaf-arg-index (assert #$GeorgeWashington) 
  (clet ((*the-cyclist* #$CycAdministrator) 
         (keep? nil))
    (cdolist (pred '(#$isa #$argIsa #$genls))
      (pwhen (expression-find pred assert t)
        (csetq keep? t)))
    (punless keep? (ke-unassert-assertion-now assert)))))