У меня есть программа, которая использует Jena для загрузки Ontology .owl, разработанной в Protege. Я пытаюсь сделать это с использованием Pellet таким образом, что, если я добавлю некоторые операторы во время выполнения модели, вы сможете проверить ее согласованность. Например, у меня есть понятия «метод», «подпись» и «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());
Что случилось? Почему это не работает?
Моя проблема решена. Так полезно, спасибо большое. – Kourosh