在 Cyc KB 中重新创建常量的 Cyc 查询或 SubL 命令
Cyc query or SubL command to recreate constant in Cyc KB
我需要从 KB 中删除涉及特定常量的所有断言,同时保持常量本身不变(例如 "recreate constant")。
我可以为此目的使用哪个 Cyc 查询或 SubL 命令?
Cyc KB - 研究 Cyc 4.0q.
有一个 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)))))
我需要从 KB 中删除涉及特定常量的所有断言,同时保持常量本身不变(例如 "recreate constant")。
我可以为此目的使用哪个 Cyc 查询或 SubL 命令?
Cyc KB - 研究 Cyc 4.0q.
有一个 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)))))