0

Jena を使用して Protege で設計された .owl オントロジーをロードするプログラムがあります。実行時にいくつかのステートメントをモデルに追加すると、その一貫性をチェックできるように、ペレットを使用してそれについて推論しようとしています。たとえば、「メソッド」、「署名」、および「hasSignature」の概念があり、hasSignature はオブジェクト プロパティです。私は次の公理を持っています:

Method hasSignature exactly 1 Signature

上記の公理に違反するためにいくつかのインスタンスステートメントを追加しても、矛盾は報告されません。これが私のコードです:

List<Statement> statements = new ArrayList<>();

OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF);
FileManager.get().readModel(model, "Ontologies\\Ontology.owl");

OntClass Method = model.createClass( ns + "Method");
Individual method1 = Method.createIndividual(ns + "method1");

OntClass Signature = model.createClass( ns + "Signature");
Individual sign1 = Signature.createIndividual(ns + "sign1");
Individual sign2 = Signature.createIndividual(ns + "sign2");

Property hasSignature = model.createObjectProperty(ns + "hasSignature");

Statement st = model.createStatement(method1, hasSignature, sign1);
statements.add(st);

Statement st1 = model.createStatement(method1, hasSignature, sign2);
statements.add(st1);

Reasoner reasoner = PelletReasonerFactory.theInstance().create();
InfModel inf = ModelFactory.createInfModel(reasoner, model.add(statements));
System.out.println(inf.validate().isValid());

どうしたの?うまくいかないのはなぜですか?

4

1 に答える 1

1

あなたは、お互いに異なることを宣言sign1していません。sign2したがって、2 人がsameAsお互いである可能性があるため、推論者は、衝突しない唯一のケースであると判断しました。したがって、オントロジーは一貫しています。

于 2016-01-23T19:36:46.823 に答える