2016-10-17 7 views
0

私は、Protegeを使ってオントロジを作成しました。 2つの基本クラスで構成されています。それぞれに3つのサブスケードがあります。サブクラスは、特定のオブジェクトとデータのプロパティを持つクラスです。私がインスタンスを作るとき、私はそれをクラスの個人として作成しますが、そのようなデータプロパティでインスタンスをいくつかのサブクラスに属するようにします。 ProtegeでHermitを実行すると、うまくいきます。私のインスタンスはクラスとサブクラスに属していると言います。しかしJavaとOwlapiのJfactでは、サブクラスからすべてのインスタンスを印刷しようとすると、私のインスタンスはサブクラスではなくスーパークラスにのみ属します。それはJFactか他の何かについてですか?owl api 3.4.10とjfact 1.2.1を使用してすべてのタイプを取得

for (OWLClass c : ont.getClassesInSignature()) { 
      if (c.getIRI().getFragment().equals("Baby")) { 
       NodeSet<OWLClass> subClasses = reasoner.getSubClasses(c, false); 

       for (OWLClass subClass : subClasses.getFlattened()) { 
        System.out.println(subClass.getIRI().getFragment()); 


        NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(subClass, false); 

        for (OWLNamedIndividual i : instances.getFlattened()) { 
         System.out.println(i.getIRI().getFragment()); 

         s += i.getIRI().getFragment() + " "; 
        } 
       } 
       } 
      } 
+0

問題のあるコードを共有してください。 –

+0

私はコードを共有しました。それは動作しますが、出力は私が期待したものではありません(ProtegeのHermitのように)。このBabyクラスには3つのサブクラスがあります。私はBabyインスタンスを作成しましたが、それはreasonerによってサブクラスの1つのインスタンスとして認識されるはずですが、このコードではサブクラスにはインスタンスがありません。 – melnej

答えて

0

JFactのバグのようです。あなたは、バージョンとオントロジを使ってトラッカーに問題を追加できますか?

編集:JFact 1.2.1は古く、既知のバグがあります。少なくとも1.2.4(および3.xバージョンの最新リリースであるOWLAPI 3.5.5)に更新してください。

可能であれば、OWLAPI 4(Java 7の場合)または5(Java 8の場合)およびJFactの同じメインバージョンに更新することをお勧めします。

+0

私はあなたにsourceforgeに関するメッセージを送ります。 – melnej

+0

私は試しましたが、AndroidプロジェクトでOWLAPIをインポートする際に問題があります。 JFact 1.2.4と同じ古いOWLは、与えられたインスタンスのサブクラスを推論するという私の問題を解決していません。また、私はペレットを使用しようとしている新しいAndroidプロジェクトを作成するが、いずれかをインポートすると成功していない。 – melnej

+0

失敗を説明できますか?ご希望の場合は、インポートの問題を解決できるように、GitHubで問題を提起してください。 – Ignazio

関連する問題