我需要从包含特定常量的KB中删除所有断言,同时保持常量本身不变(例如"重新创建常量")。
我可以使用哪个Cyc查询或SubL命令来实现此目的?
Cyc KB - Research Cyc 4.0q。
答案 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)))))