如何在没有警告消息的情况下从 logicblox 中删除数据

How can I delete data from logicblox without warning message

在logicblox新版本中(4.2.1以后的任何版本),如果有谓词"Person(p), hasPNr(p:n) -> int(n)." 然后我插入一个数据“+Person(p),+hasPNr[p]=1”。 然后,如果我想通过“-Person(1)”删除数据。 将出现一条警告消息“警告:表达式‘1’的类型为 'int',但需要一个类型为 'Person' 的值。编译器插入了谓词 'hasPNr' 的用法以允许要编译的代码。” 如何在没有此消息的情况下删除数据?

您可以通过以下方式删除:

-Person(n) <- Person:hasPNr@prev(n, 1).

您可能还应该修改插入的方式。编译器中将“1”转换为 "Person" 的功能称为 "refmode conversion"。该功能实际上已被删除,因为它经常引起混淆(因为它已经在您的情况下:))所以要在没有 refmode 转换的情况下插入:

+Person(n), +Person:hasPnr(n, 1).