【问题标题】:How to create autonumbered predicates in .logic files in LogiQL?如何在 LogiQL 的 .logic 文件中创建自动编号的谓词?
【发布时间】:2017-07-26 11:40:50
【问题描述】:

我正在尝试使用自动编号谓词设置项目。我无法在 .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/

【问题讨论】:

    标签: logicblox logiql


    【解决方案1】:

    我不确定您最初的问题是什么,但这实际上应该可以正常工作:)。您应该能够将逻辑放在 .logic 文件中并使用 addblock --file 选项。这同样适用于 exec 逻辑。使用标签与单独的文件基本上是等效的。这应该与您在那里所做的那样将其包含在内。如果您想将数据加载为 csv 文件,那么这应该可以:https://developer.logicblox.com/content/docs4/core-reference/webhelp/predicates.html#file-predicates

    也许您之前从命令行尝试过,但由于它在 shell 中的特殊含义,反引号引起了一些问题?

    【讨论】:

    • 我已经编辑了我的问题,以更详细地解释我尝试做什么以及问题是什么。
    • 啊,明白了!我相信 lang:constructor 和 lang:autoNumbered 声明需要放在“子句”部分。 'exports' 部分用于块的公共接口。顺便说一句,您不需要使用单独的编译和模块,您也可以只创建带有模块的独立 .logic 文件。对于小型项目,这很好,您不会真正遇到命名问题。
    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多