1

protege 4.x のドキュメントによると、プロパティ チェーンはオブジェクト プロパティ用に存在しますが、私の場合は次のようにデータ プロパティを含める必要があります。

if builds(B, A) o has_name(A, "Holly wood") -> has_name(B, "Holly wood")

少し説明するために、「ハリウッド」という名前の通りがあると想像してください。この通りはいくつかのセグメント (セグメントとはジャンクションまでの間の道路の一部) で構成されており、その名前は通りの名前 "Holly wood" と同じでなければなりません。ストリートの概念はセグメントとは異なるため、サブクラスではありませんが、上記の関係 (ビルド) を持っていることに注意してください。

1 つの解決策は、has_name を Object プロパティにすることです。その場合、各名前はオブジェクト (インスタンス) にする必要があります。

 if is_name_of(name, A) o is_built_of(A, B) -> is_name_of(name, B)

データ型を使用する方が良いと思うので、これは私にはまったく問題ないようです。

他の解決策は、以下のように SWRL を使用することです。

Thing(?p), Thing(?q), builds(?q, ?p), has_name(?p, ?name) -> has_name(?q, ?name)

これは動作しません!!!!理由を突き止めたり、適切な解決策を見つけたりするのを手伝ってもらえますか?

4

1 に答える 1