2016-03-29 8 views
0

私はOWL API 3/Pellet/SPARQL-DLスタックを使用しており、特定のクラスのアサーションされたTBox公理をオントロジから読みたいと思っています。OWL APIを使ってTBoxの公理を取得する

OWL APIで公理に簡単にアクセスできます。しかし、OWLClassAxiomは、接続なしで署名にアクセスする機能を提供するだけです。私。 ObjectPropertyがどのClassに割り当てられているかを知りたい。私が取り出すことができるのは、署名なしのすべての要素のセットです。

OWL APIは、クラスレベルで与えられた公理での作業を実際にサポートしていないようです(追加しないで、読んでください)。どのようにそれを達成するための他のアイデア? (どんなツールでも)

具体例:ピザhasPaseはいくつかのPizzaToppingを持っています。ピザとhasBaseを指定して "PizzaTopping"という値を取得したいと思います。

答えて

4

ピザがクラスであれば、

               ピザhasBase一部PizzaTopping

が法的公理ではありません。あなたは、おそらく実際に持っていることは

               ピザのsubClassOf hasBaseはピザのすべてのインスタンスがhasBaseプロパティによってPizzaToppingの一部インスタンスに関連していることを意味することにいくつかのPizzaTopping

です。公理はサブクラスの公理なので、OWLSubClassOfAxiomのインスタンス(OWLClassAxiomのサブクラス)を取得したいと思うでしょう。

この場合、ピザのOWLClassへの参照がある場合は、OWLClass#getSuperclasses()を使用してスーパークラス式のリストを取得できます。そのうちの1つは、(hasBase some PizzaTopping)OWLObjectSomeValuesFromの式です。あなたはそのタイプのものを探して、それが制限であるというプロパティを調べなければなりません。 、OBJECTPROPERTYを

に割り当てられているクラスはかなりOWLモデルと一致しないために知っているあなたの定められた目標

を言っ

。オブジェクトプロパティ(およびデータプロパティ)は、OWLのクラスには属しません。上記のようなサブクラスの公理とプロパティの制限を使用すると、クラスのメンバーに特定のプロパティの値が必要であると言うことができます。

+2

あなたが簡単にできることは、興味のあるすべての公理シグネチャのプロパティでは、公理の型に応じて、これはあなたが望むものではないかもしれません。 'OWLAxiomVisitor'は行く方法かもしれません... – AKSW

+0

私の論理、偉大な答えの欠陥を指摘してくれてありがとう。私はそれを働かせた。しかし、私はまだ公理部分のアクセスが気に入らない。そこにあるのは「getXInSignature」だけですが、これはセットを返します。あなたが構成(例えば2つの値の交差点から)を持っているなら、これは役に立たない - 私は手動で下位層を通過する必要がある。たぶん、私のユースケースは非常に具体的なものであるか、それでも完全には得られなかったでしょう。しかし、とにかく、それは今働く!@AKSWは、特定のクラスの公理のためだけにビジターを使用することは可能ですか、それともオントロジ全体を通過するのでしょうか? – nick

+1

@nick AxiomからのOWLオブジェクトのいくつかの値に 'getProperty()'があります。 getXInSignatureメソッドを使用する必要はありません。それは公理訪問者を調べるAKSWの提案がおそらく多くの助けになるだろうと言った。 –