问题标签 [pydatalog]

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.

0 投票
1 回答
934 浏览

logic-programming - 将文件中的数据记录程序加载到 pyDatalog

我正在尝试使用 pyDatalog.load() 方法来加载一个小的 pyDatalog 程序。例如,我正在从https://sites.google.com/site/pydatalog/加载阶乘样本

文件 sample_datalog_program.dl 包含以下内容:

我究竟做错了什么?当我用接下来的 4 条注释行替换 pyDatalog.load(mc) 行时,它工作正常。

我得到的错误是:

谢谢!

0 投票
1 回答
294 浏览

logic-programming - pyDatalog:处理自定义谓词中的未绑定变量

我正在编写一个 pyDatalog 程序来分析来自 Weather Underground 的天气数据(目前只是作为我自己和公司其他人的演示)。我编写了一个自定义谓词解析器,它返回开始时间和结束时间之间的读数:

这适用于 t1 和 t2 绑定到特定值的情况:

但是,如果我使用其他顺序的条件声明 goodTime 规则(即在它尝试解析 timeBetween 时 Y 和 Z 未绑定),它将返回一个空集:

这似乎是错误的——这两个查询应该返回相同的结果集。

我的问题是在 pyDatalog 中是否有处理这种情况的方法?我认为需要发生的是 timeBetween 谓词应该能够告诉引擎以某种方式退出并尝试在尝试此规则之前先解决其他规则,但我在文档中看不到任何对此的引用。

0 投票
1 回答
194 浏览

logic-programming - 使用 pyDatalog 进行约束存储

考虑以下规则:

以及找到满足的约束的问题:a(X,1)

问题是:您可以使用 pyDatalog 来提出列表 [(X==1)] 吗?或 [(X>0), (X==1)]?

谢谢,

0 投票
1 回答
326 浏览

logic-programming - PyDatalog:答案中的值列表

在 PyDatalog 中,我定义了以下断言:

我想询问数据库是否有办法从 A 到达 D。下面的代码应该可以工作,因为如果有办法,它会回答 set([()]),如果没有,它会回答 None。但这并没有给我对Z的不同评估的结果。我也想知道路线,例如:ABCD

我尝试过使用未绑定的值,但它只给了我第一次迭代的结果:

我认为问题在于它在第一次迭代中只需要 P 。或者我应该使用聚合函数?我不太明白如何使用 concat ...

提前致谢。

0 投票
1 回答
304 浏览

logic-programming - 为什么在 pyDatalog 中创建关系似乎给了我错误的答案?

我是 Datalog 概念的新手,我正在通过 pyDatalog 探索它。我正在尝试使用单位测量转换器。因此,例如,考虑到一米有多少英寸的事实,它应该能够告诉我一英寸有多少米。到目前为止,这是我的代码:

Wny 程序不能正确地将英寸转换为米吗?应该看到一米有 39.37 英寸,并应用倒数规则换算另一种方式。所以它应该打印出 0.0234,但它实际上打印出

0 投票
1 回答
743 浏览

pydatalog - 在 pyDatalog 中使用布尔运算符

我尝试使用==操作符在 pyDatalog 中创建谓词,但易燃[X] 的定义似乎无效:

我还尝试在 pyDataLog 谓词中包含比较运算符,但这也不起作用:

是否可以在 pyDatalog 谓词中包含这些比较和否定运算符?

0 投票
2 回答
361 浏览

python - PyDatalog 的逻辑析取

我似乎无法编写(伪代码):为所有 X、Y 打印 X 和 Y,其中 X==True 和 Y==True 或 Y==False

目标是编写如下内容:

相反,这会准确打印出上一个命令返回的内容。

我怎样才能做到这一点?

0 投票
1 回答
536 浏览

python - 使用 pyDatalog 解析依赖关系图

我正在努力编写更具可读性的声明性程序。所以我决定实现一个我们目前使用的简单算法。程序实现如下:

  1. 有命令和资源
  2. 每个命令可以提供和需要多个资源
  3. 该算法将遍历所有命令并安排提供所有要求的命令。
  4. 该命令提供的所有资源现在都提供给
  5. 如果所有命令都安排好了,我们就完成了
  6. 如果还有命令,我们就不能满足依赖关系,我们不能为算法的迭代安排新命令

所以我想出的数据记录变体看起来不错,但有两个问题:

  1. 这是错误的
  2. 我需要一个循环来读取结果

您可以在此处找到完整的源代码。

这取决于假设,您可以使用 pytest 轻松运行它。

下面的测试失败:如果我们需要以前的“等级”或顺序提供的资源。它找不到它。我试图使跟随递归,但即使在简单的例子中它也失败了。

我的问题:

  1. 我是否使用了错误的工具?
  2. 有人知道全面的数据记录方法吗?
  3. 您如何实际解决上述问题?

编辑:

  1. 我缺少像 all() 和 exists() 这样的量词,如何在 pyDatalog 中表达?
0 投票
1 回答
1573 浏览

python - Dealing with multiple Python versions?

I have a problem with my Pip version. I am trying out to install the pyDatalog package, which isn't supported by Anaconda.

In my Ubuntu, I have two versions of Python (2.7 and Anaconda with 3.5). For Python 2.7 I don't even know whether or not Pip is installed.

How can I have two different versions of Pip for different versions of Python on one computer? Can I use one version of Pip for both version of Python?

0 投票
1 回答
247 浏览

python - 如何在 pyDatalog 中创建动态算术事实?

我需要创建一个简单的 Datalog 机器(这意味着我的输入是 2 个文件:1.facts,2.rules。)我目前正在使用 pyDatalog 包。我需要解析事实并动态创建术语。

从 pyDatalog 的教程中,我找到了这个加载事实的示例:

在这种情况下,我只需要解析文件中的字符串。

如何动态加载算术项?(例如:SUM(X,Y,Z)-> Z = X + Y)

谢谢!