2

クラス階層と、それ自体でうまく機能するいくつかのルールを持つ TopBraidComposer でオントロジーを構築しています。私のオントロジーでは、クラス レベルで作業しているため、作成するすべての定義は、個人ではなくクラスにのみ関連しています。ここで、次のようなサブクラス定義を推論したいと思います。

匿名サブクラス

仕事をしているように見える次のSPARQLクエリを試しました:

SPARQL テスト

次に、このクエリを SPIN ルールとして owl:Thing クラスに次のように追加しました。

スピン ルール 1

Enter キーを押すと、次の形式に自動的に変換されます。

スピン ルール 2

合理的に見えますが、推論プロセスを開始すると、テスト ルールを追加する前のように終了しなくなりました。推論を強制停止すると、目的のトリプルが Test クラスに何度も追加されていることがわかります。

SPIN で匿名スーパークラスを推論するにはどうすればよいですか?

編集:

回避策は、制限をクラスにバインドすることです。ロジックは機能しているように見えますが、匿名のスーパークラスのようには表示されません。TBCでもProtegeでもありません。

4

1 に答える 1

3

長い間検索した結果、解決策は非常に簡単であることがわかりました。

既存の関係を簡単にチェックするだけで、無限ループを防ぐことができます。

FILTER NOT EXISTS {
  ?test rdfs:subClassOf _:b0 .
} .

これは TBC によって自動修正されます。

FILTER NOT EXISTS {
  ?test rdfs:subClassOf _:0 .
} .

それだけです、ルールは機能します。

于 2014-03-28T11:44:44.263 に答える