3

私はイエナの初心者で、このページを読んでいます。より具体的には、図 5(iii) の「直接推定された関係」で、まさに必要なものを見つけました。基本的に、私の OntModel は次のルールを尊重する必要があります:「推論できる直接ステートメントは許可されません」。しかし残念なことに、私はこのアイデアをイエナで具体化する方法を知りません。

私のコード例は次のとおりです。

    String baseUri="http://entidades.owl";
    OntModel base = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

    OntClass studant = base.createClass(baseUri +"#Student");

    OntClass person = base.createClass(baseUri +"#Person");
    OntClass ser = base.createClass(baseUri +"#ThingLive");

    Property isA = base.createTransitiveProperty(baseUri+"#IsA", true);
    nome.addDomain(person);
    base.add(new StatementImpl(studant, isA, person));
    base.add(new StatementImpl(person, isA, ser));

    base.createIndividual(baseUri+"#JonhDoe",studant);
    base.createIndividual(baseUri+"#JonhDoe",person);
    base.createIndividual(baseUri+"#JonhDoe",ser);
    base.write(System.out);

    OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF,base);
    model.write(System.out);

良い、

  1. 「isA」プロパティを「transitiveProperty」として構築しようとしましたが、推論ツールがそれを認識しません。どうすれば修正できますか?

  2. 私が変更した場合: base.add(new StatementImpl(studant, isA, person)); base.add(新しいStatementImpl(人、isA、ser));

に:

person.addSubClass(学生); ser.addSubClass(人);

Reasoner は完全に推論できましたが、残念ながら OntModel の「ベース」と OntModel の「モデル」は同じ RDF を示しています。「モデル」は、最小限の RDF グラフを反映したものを表示する必要があると思います。

この RDF 構造の変化を確認するにはどうすればよいですか?

どうもありがとうございました!!!!!

4

1 に答える 1

1

あなたのコードは良いですが、唯一の問題は次のとおりです。

model.write(System.out);

これはOntModel.write()基本モデルのみを記述するように定義されています。これは、多くのユーザーが、モデルの読み取り、モデルの操作、モデルの保存のワークフローを持ち、保存されたバージョンが推移的なプロパティの閉鎖などで汚染されないようにしたいためです。

モデルにクエリを実行すると、クエリには、推定されたトリプルと基本モデルのトリプルが表示されます。影響を受けるのはここだけwrite()です。推定トリプルを含め、デバッグ用にモデル全体を本当に書きたい場合は、 を使用しますOntModel.writeAll()

于 2012-10-03T16:16:26.320 に答える