1

オントロジーを操作するために OWL API を使用しています。OWLObjects (OWLEntity、OWLClass など) に対応する独自の Java オブジェクトを作成したいと考えています。これどうやってするの?

これを実現するには、OWLEntity オブジェクトの名前 (文字列) を取得する方法を知る必要があると思います。しかし、どのように?OWL API Javadoc とチュートリアルを検索しましたが、方法がわかりません。

public class Arg {
    private String name;
    private String defaultValue;
    private boolean isEssential = false;
    private Set<String> preArgNames;

    public Arg(String name, String defaultValue, boolean isEssential,
            Set<String> preArgNames) {
        this.name = name;
        this.defaultValue = defaultValue;
        this.isEssential = isEssential;
        this.preArgNames = preArgNames;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isEssential() {
        return isEssential;
    }

    public void setEssential(boolean isEssential) {
        this.isEssential = isEssential;
    }

    public Set<String> getPreArgNames() {
        return preArgNames;
    }

    public void setPreArgNames(Set<String> preArgNames) {
        this.preArgNames = preArgNames;
    }

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }
}

アプリケーションのデータ構造があります。そして、データはオントロジーに格納されます。上記のコード例を追加しました。

その Arg オブジェクトのメンバー変数は、オントロジー データで埋められる必要があります。たとえば、Class SomeArg1、SomeArg2、... オントロジーに子クラスと制限があり、エンティティ名と関連する制限などを取得して、Arg オブジェクトの適切な変数を埋めたいと考えています。

4

2 に答える 2

3

OWLEntity には、オブジェクトの IRI を提供するメソッド getIRI() があります。IRI は CharSequence であり、従来の toString() メソッドを使用して String に変換できます。

mikrohelen が上で述べたように、最新の OWL API では、名前空間と IRI のフラグメント (URI の単なる拡張、つまりhttp://example.comや urn:testuri のようなもの) にもアクセスできます。

これは、すべての OWLEntity サブインターフェース、つまり、OWLClass、OWLDataProperty、OWLObjectProperty、OWLDatatype、OWLNamedIndividual、および OWLAnnotationProperty に有効です。

Anthony のコメントにはまだお答えできませんが、ここで引用します。

Blockquote すべてのフクロウのエンティティ (クラス、個体...) に名前があるわけではありません。名前は、rdf:id として使用される URI を意味していると思います。Protege には、オントロジー内のフクロウ クラスの Java ラッパー クラスを自動的に生成する機能があります。– アンソニー 9 月 5 日 15:04

厳密に言えば、それは正しくありません。すべての OWLEntity インスタンスには IRI があります。IRI を持たないクラスと個体はエンティティではありません。クラスは修飾された制限などの OWLClassExpression インスタンスであり、IRI を持たない個体は OWLAnonymousIndividual インスタンスです。プロパティにも同じことが当てはまります。匿名のものは、プロパティ チェーンなどの単なる式ですが、OWLEntity インスタンスではありません。

于 2013-09-17T17:36:21.783 に答える