我正在尝试使用 autoNumbered 谓词建立一个项目。我无法在 .logic 文件中使用 lang:autoNumbered 选项,因为它给了我一个错误,即它需要一个约束或一个 lang:ordered。
所以我在一个 .lb 文件中重写了我的代码,这很有效。代码如下:
create --unique
addblock <doc>
node(n), node_id(n:id) -> int(id).
lang:autoNumbered(`node_id).
cons_node[] = n -> node(n).
lang:constructor(`cons_node).
node_has_label[l] = n -> string(l), node(n).
node_attribute[n, k] = v -> node(n), string(k), string(v).
node_attribute_id(id, att, val) <- node_id(n: id), node_attribute[n, att] = val.
</doc>
exec <doc>
+node(n), +cons_node[] = n,
+node_attribute[n, "label"] = "Person",
+node_attribute[n, "name"] = "Alice".
</doc>
echo --- node_att_table:
print node_attribute_id
close --destroy
现在我想把它移到一个 node.logic 和一个单独的数据文件中。如何在保留 lang:autoNumbered 和 lang:constructor 命令的同时执行此操作?
编辑:
这是我尝试运行的代码:
block(`node) {
export(`{
node(n), node_id(n:id) -> int(id).
lang:autoNumbered(`node_id).
cons_node[] = n -> node(n).
lang:constructor(`cons_node).
node_attribute(n, k; v) -> node(n), string(k), string(v).
})
} <-- .
我得到了错误
error parsing block: expected a constraint or lang:ordering pragma (Error BLOCK_PARSE)
当我运行 lb config && make 时,在 lang:autoNumbered 和 lang:constructor 行上。
额外信息:我使用 Vagrant 运行 logicblox,并将我的示例基于这些博客:https ://developer.logicblox.com/2014/01/structuring-and-compiling-logicblox-applications/