0

Protege 4.3 を使用して、いくつかの SWRL ルールを作成しています。

「name」というプロパティを持つ「Person」というクラスが 1 つあります。

クラスから異なる名前の個人を作成しましたが、一部の名前は同じです。

「sameName」というプロパティのインスタンスを作成して、同じ名前を持つ人々をバインドするルールを書きたいと思います。そこで、次のルールを書きました。

Person(?p1), Person(?p2), name(?p1, ?n1), name(?p2, ?n2), equal(?n1, ?n2) -> sameName(?p1, ?p2)

ルールは正しい結果をもたらしましたが、すべての人を自分自身と比較することを意味しますが、すべての人を自分自身と比較することを意味します。

Person(?p1), Person(?p2), name(?p1, ?n1), name(?p2, ?n2), equal(?n1, ?n2), notEqual(?p1, ?p2) -> sameName(?p1, ?p2)

結果は空でした。私は何か見落としてますか?

4

1 に答える 1

1

すべての個人を異なるように設定する必要があると思います。そうしないと、推論者は 2 つの個体が同一かどうかを判断できなくなり、あなたが作成した SWRL ルールはまったく機能しませんでした。

于 2015-03-02T07:02:54.237 に答える