首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于添加类似语句计数的PYKE规则

用于添加类似语句计数的PYKE规则
EN

Stack Overflow用户
提问于 2016-05-10 13:37:34
回答 1查看 347关注 0票数 1

我对PYKE非常陌生,我在编写PYKE规则方面有一个小问题。

我在我的kfb文件中有以下声明。

代码语言:javascript
复制
ent_rel(1, sam, helsen,2)
ent_rel(1, sam, dunkin,1)
ent_rel(1, pirate, sam,2)

ent_rel(2, van, helsen,2)
ent_rel(2, sam, helsen,2)
ent_rel(2, pirate, bay,1)
ent_rel(2, van, burger,1)

ent_rel(3, burger, house,1)
ent_rel(3, sam, helsen,1)

我想编写一条规则,生成如下所示的输出:

代码语言:javascript
复制
ent_rel1(sam, helsen,5)
ent_rel1(sam, dunkin,1)
ent_rel1(pirate, sam,2)
ent_rel1(pirate, bay,1)
ent_rel1(van, helsen,2)
ent_rel1(van, burger,1)
ent_rel1(burger, house,1)

我只是试图添加类似的语句,而不考虑ID。

我写了下面的规则,但这给出了一个不同的输出。

代码语言:javascript
复制
relationship_cnt
    foreach
        a.ent_rel($id1, $f1, $s1, $n1)
        a.ent_rel($id2, $f2, $s2, $n2)
        check $id1 != $id2
        check $f1 == $f2
        check $s1 == $s2
        $tot = $n1 + $n2
    assert
        a.ent_rel1($f1,$s1,$tot)

输出:

代码语言:javascript
复制
ent_rel1('sam', 'helsen', 4)
ent_rel1('sam', 'helsen', 3)

我理解为什么我的输出不恰当,正如我提到的$id1和$id2。它在两个不同的in中查找相同的名称"sam“和"helsen”,并添加它们。

然而,我无法写出正确的规则。我真的很感谢你的帮助。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 15:03:41

我的解决方案:

代码语言:javascript
复制
relationship_cnt
    foreach
        data.ent_rel($id1, $f1, $s1, $n1)

        python tot = $n1

        forall
            data.ent_rel($id2, $f1, $s1, $n2)
            check $id1 != $id2
            python tot = tot + $n2

        $tot = int(tot)
    assert
        data.ent_rel1($f1, $s1, $tot)

在每个元组($f1,$s1)上循环使用forall,确保check具有惟一的$id。为了完成和,使用python变量,因为$n2的值不绑定在forall前提之外;参见派克:关于“所有”和“非”前提的注释

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37140246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档