私は、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() + " ";
}
}
}
}
問題のあるコードを共有してください。 –
私はコードを共有しました。それは動作しますが、出力は私が期待したものではありません(ProtegeのHermitのように)。このBabyクラスには3つのサブクラスがあります。私はBabyインスタンスを作成しましたが、それはreasonerによってサブクラスの1つのインスタンスとして認識されるはずですが、このコードではサブクラスにはインスタンスがありません。 – melnej