2017-07-26 52 views
0

我试图建立与autoNumbered谓词的项目。因为它给我的错误,它预计的约束或郎。逻辑文件autoNumbered选择:下令我不能使用lang。如何创建。逻辑文件autonumbered谓词LogiQL?

所以我改写了一个.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:构造函数命令的情况下执行此操作?

编辑:

这是我试图运行代码:

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) 

对郎咸平:autoNumbered和郎咸平:构造线,当我运行磅配置& &化妆。

额外的信息:我用放浪运行logicblox和我立足于这些博客我的例子:https://developer.logicblox.com/2014/01/structuring-and-compiling-logicblox-applications/

回答

0

我不知道你原来的问题是什么,但其实这应该正常工作:)。您应该能够将逻辑放入.logic文件并使用addblock --file选项。这同样适用于执行逻辑。使用标签与单独文件基本上是等效的。这应该是相同的,就像你在那里一样。如果你想加载数据为csv文件,那么这应该工作:https://developer.logicblox.com/content/docs4/core-reference/webhelp/predicates.html#file-predicates

也许你以前试过它从命令行和back-tick造成一些问题,由于其在shell中的特殊含义?

+0

我编辑了我的问题,更详细地解释我尝试做什么和问题是什么。 –

+0

啊,明白了!我相信郎咸平:构造函数和郎咸平:autoNumbered声明需要在“条款”部分中去。 'exports'部分用于块的公共接口。您不必使用单独的编译和模块,也可以使用模块创建独立的.logic文件。对于小型项目来说,这样会很好,你不会遇到命名问题。 –