1

私はフクロウファイルを持っており、個体名 (Lion など) を渡し、この個体に関連するすべてのオブジェクト/データプロパティ値をフクロウから取得する Java プログラムを作成する必要があります (オブジェクトプロパティなどGoldenから)。 has_color.

最も簡単な api に基づいて Java クラスを作成しましたuk.ac.ebi.brain.core.Brainが、この API には個別の情報をリストするメソッドがありません。それで、私のニーズを満たす他の簡単な方法はありますか?

次の例では、メイン クラスのサブクラスをAnimal 取得していますが、各サブクラスの個体を取得する方法や、個体の名前を渡してこの個体のオブジェクト/データ プロパティを取得する方法さえわかりません。

import edu.stanford.smi.protegex.owl.model.OWLIndividual;
import java.util.List;
import java.util.Set;
import org.semanticweb.owlapi.model.OWLAnonymousIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import uk.ac.ebi.brain.core.Brain;
import uk.ac.ebi.brain.error.BrainException;

public class AnimalIndividuals {

    public static void main(String[] args) throws BrainException {
        Brain brain = new Brain();
        brain.learn("d:\\Animal.owl");
        List<String> subClasses = brain.getSubClasses("Animal", false);
        for (String subClass : subClasses) {
            System.out.println("Subclass of Animal: " + subClass);
        }
        brain.sleep();
    }    
}
4

1 に答える 1

1

現在 (2013 年 3 月)、Brain を使用してオブジェクト プロパティに関連付けられている個体を取得することはできません。これは、この操作を担当する根本的な推論であるELKによってまだ実装されていないためです。

ただし、モデリングをいじることはできるようです。Lion個人としてではなく、クラスとして主張することができます。Lionのサブクラスとして概念をさらに定義できますhas_color some Golden。これは、OWL ではすべてのライオンが金色であることを意味しますが、必ずしもライオンでなくても物事は金色である可能性があります。

ブレインによる実装:

public static void main(String[] args) throws BrainException {
    Brain brain = new Brain();

    //Declaration of the concepts and properties
    brain.addClass("Animal");
    brain.addClass("Lion");
    brain.addClass("Golden");
    brain.addObjectProperty("has_color");

    //Axioms assertion
    brain.subClassOf("Lion", "Animal");
    brain.subClassOf("Lion", "has_color some Golden");

    //Query
    List<String> results = brain.getSubClasses("has_color some Golden", false);
    System.out.println(results);

    brain.sleep();
}
于 2013-03-03T12:46:29.350 に答える