【问题标题】:Safe Datalog rules for the query查询的安全数据记录规则
【发布时间】:2016-09-26 13:08:57
【问题描述】:

考虑关系:边缘(X,Y),红色(X,Y),蓝色(X,Y)。这些关系表示一个图,其边缘可以被着色为红色或蓝色(或无颜色)。

为以下查询提供安全的数据记录规则(必要时进行否定)。

第一季度。找到从 X 到 Y 的路径(链接边序列)的节点 X 和 Y 对?

我的尝试:- 可达(X,Y):- 边缘(X,Y)

可达(X,Y):- 边缘(X,Z),可达(Z,Y)

第二季度。找到节点 X 和 Y 对,其中存在从 X 到 Y 的均匀长度的路径(一系列连接的边),红色和蓝色交替出现?

我的尝试:

我制作了奇偶数据记录程序和一个红/蓝程序,但不知道如何将两者结合以获得偶数长度的交替红/蓝节点

ODD(x,y):- 边(x,y)

ODD(x,y):- 边(x,z), EVEN(z,y)
EVEN(x,y):- 边(x,z), ODD(z,y)。

路径(X,Y) :- 红色(X,Y)

路径(X,Y) :- 路径(X,Z), 蓝色(Z,W), 路径(W,Y)

【问题讨论】:

    标签: database database-design relational-database datalog


    【解决方案1】:

    从您的问题中,我得到的印象是您试图在没有测试您的潜在解决方案的情况下回答这些作业。这是一种非常困难的工作方式。我强烈建议做一些小例子来测试您的解决方案是否正确并在 Datalog 引擎中运行它(最简单的是在线类似 http://www.iris-reasoner.org/demohttps://developer.logicblox.com/playground/ )。

    在这种特殊情况下,很容易看出,如果你有一条边(“a”,b“),边(“b”,c”)和边(“c”,“d”),那您的解决方案将找不到从“a”到“d”的路径。

    这个查询只能用递归来解决。这个路径查询是非常基本的递归,搜索祖先或传递闭包。

    【讨论】:

    • Martin:感谢您的指导,我将使用这些页面来测试我的解决方案。我也修改了问题并分享了我的尝试,但停留在第二季度。
    • 你能看看我的尝试吗
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多