问题标签 [logiql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
logicblox - 如何在 LogiQL 的 .logic 文件中创建自动编号的谓词?
我正在尝试使用 autoNumbered 谓词建立一个项目。我无法在 .logic 文件中使用 lang:autoNumbered 选项,因为它给了我一个错误,即它需要一个约束或一个 lang:ordered。
所以我在一个 .lb 文件中重写了我的代码,这很有效。代码如下:
现在我想把它移到一个 node.logic 和一个单独的数据文件中。如何在保留 lang:autoNumbered 和 lang:constructor 命令的同时执行此操作?
编辑:
这是我尝试运行的代码:
我得到了错误
当我运行 lb config && make 时,在 lang:autoNumbered 和 lang:constructor 行上。
额外信息:我使用 Vagrant 运行 logicblox,并将我的示例基于这些博客:https ://developer.logicblox.com/2014/01/structuring-and-compiling-logicblox-applications/
logiql - 使用 logiQL 进行逻辑数据建模
我正在学习 Terry Halpin 的名为逻辑数据建模的教程(链接如下),但无法插入数据。 https://www.brcommunity.com/articles.php?id=b760
这是代码:
错误信息:
谁能帮我理解什么是错的?
logicblox - 如何避免在 logicblox/logiQL 中实现递归逻辑谓词?
我正在尝试使用 LogicBlox 作为 Datalog 求解器的功能。我有性能问题,我认为我使用 LB 是错误的,因为它表现得好像它正在实现所有关系(具有例如魔术集的 Datalog 求解器不会这样做)。
正如我所说,我可能没有按预期使用 LB,但这是我的测试。我想创建一些二元关系 e(x,y) 的传递闭包 c(x,y)。出于测试的目的,我将 e 创建为一个简单的循环,即我将 e(i,(i+1)%1000) 添加到 LB 为 0 ≤ i < 1000。
当我只对 from0(x) <- c(0,x) 感兴趣时,不需要实际实现 c 并且魔法集方法将创建一个谓词 c_{bound,free}(x,y) 并计算 from0 (0) 然后从 0(1) 等推导出来。整个操作大约需要 1000 步。
如果我用程序做我的例子:
然后,显然,我正在生成 c 的物化版本,并且 c 将包含所有元素对;因此总操作大约需要 1000^2 的时间(当我运行查询时,我发现它实际上需要一些时间来计算)。
从文档中,LogicBlox 允许将谓词定义为“派生”,但对于 c 来说,它似乎不可能作为 c 自身递归。
现在,我还尝试在查询或 exec 块中使用“本地谓词”定义此传递闭包,但没有成功。我试过的例子:
显然,在这个例子中,我可以手动优化查询并定义一个块:
但如果我正确理解 LB,应该有办法将优化留给 LB。