2

OWL ファイルに存在するすべてのオブジェクト プロパティを読み取りたいと考えています。Protege ツールを使用してその OWL ファイルを作成しました。モデルもロードしましたが、オブジェクトのプロパティを取得できません。

例: Ontology に Car という名前のクラスがあり、hasColor、hasAudioSystem、hasGps など、いくつかの Object プロパティと Data プロパティがリンクされているとします。

ドメインと範囲を介して、またはクラスの名前のみを介して、その特定のクラスにリンクされたすべてのオブジェクト プロパティを取得したいと考えています。助けてください..

4

2 に答える 2

1

ドメインまたは範囲として宣言されたタイプを持つオブジェクト プロパティのリストを取得する場合、Jena を使用してそれを行う 1 つの方法は次のとおりです。

public void objectPropertiesForType(Model m, final Resource type) {
    StmtIterator i = m.listStatements(new SimpleSelector() {
        @Override
        public boolean test(Statement s) {
            if (s.getPredicate().equals(RDFS.domain)
                    || s.getPredicate().equals(RDFS.range)) {
                return (s.getObject().equals(type));
            }
            return false;
        }
    });
    while (i.hasNext()) {
        Statement s = i.next();
        System.out.println("Property: " + s.getSubject().getURI());
    }
}
于 2015-05-05T11:24:42.000 に答える
0

Jena では、クラスの OntClass のインスタンスを取得してから、次のような listDeclaredPropertiesメソッドを使用することをお勧めします。

このクラスのフレームのようなビューに関連付けられたプロパティの反復子を返します。これにより、クラスのプロパティの直感的な概念が得られます。これは、たとえば、クラスのインスタンスをインスタンス化するためのフォームを自動的に構築することによって、ユーザー インターフェイスでオントロジー クラスを提示するのに役立ちます。クラスのフレームのようなビューのプロパティは、このクラスの OntModel のプロパティのドメインをクラス自体と比較することによって決定されます。

于 2015-05-05T11:37:01.217 に答える