首页 文章

查询Datalog的唯一性?

提问于
浏览
0

对于其中一个变量只有一个值的事实,对于其他变量的每个可能值,是否有可能在Datalog中编写查询?

例如找到所有 X ,这样 expr(X, Y) 中每个 Y 只有一个 X

1 回答

  • 1

    在简单的Datalog中,您可以通过首先计算具有多个X的Y,然后使用它来计算Y的1 X来表达这一点 .

    problem(y) <- expr(x1, y), expr(x2, y), x1 != x2.
      exactly_one_opt1(y) <- expr(_, y), !problem(y).
    

    大多数系统还支持可能是更有效的解决方案的聚合,但聚合语法不是标准的Datalog . 我在这里使用LogiQL(LogicBlox Datalog)语法:

    count[y] = c <- agg<<c = count()>> expr(_, y).
      exactly_one_opt2(y) <- count[y] = 1.
    

相关问题