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)
結果は空でした。私は何か見落としてますか?