Я пытаюсь научиться правильно использовать OWLAPI, но у меня возникают некоторые проблемы: у меня есть онтология, которая структурирует деятельность (например, индивидуальную и социальную деятельность); моя цель — создать простой пример несоответствия, чтобы привыкнуть к этому API: я хочу заявить, что футбол — это отдельная деятельность. IndividualActivity
определяется в Protegè как Equivalent to (Activity and (hasActor exactly 1 Person))
.
/// PIECE OF CODE ///
OWLDataFactory df = Singleton_Ontologia.getFactory();
IRI soccerIRI=IRI.create(Singleton_Ontologia.getIribase(),"Soccer");
IRI paoloIRI = IRI.create(Singleton_Ontologia.getIribase(),"Paolo");
IRI marcoIRI = IRI.create(Singleton_Ontologia.getIribase(),"Marco");
OWLNamedIndividual soccer = df.getOWLNamedIndividual(soccerIRI);
OWLNamedIndividual paolo = df.getOWLNamedIndividual(paoloIRI);
OWLNamedIndividual marco = df.getOWLNamedIndividual(marcoIRI);
OWLClass person = df.getOWLClass(
IRI.create(Singleton_Ontologia.getIribase()+"Person"));
OWLClass individual_activity = df.getOWLClass(
IRI.create(Singleton_Ontologia.getIribase()+"IndividualActivity"));
OWLObjectProperty hasActor = df.getOWLObjectProperty(
IRI.create(Singleton_Ontologia.getIribase()+"hasActor"));
OWLClassAssertionAxiom assertionAxiom = df.getOWLClassAssertionAxiom(individual_activity, soccer);
OWLClassAssertionAxiom assertionAxiom2 = df.getOWLClassAssertionAxiom(person, paolo);
OWLClassAssertionAxiom assertionAxiom3 = df.getOWLClassAssertionAxiom(person, marco);
OWLObjectPropertyAssertionAxiom assertionAxiom4 = df.getOWLObjectPropertyAssertionAxiom(hasActor, soccer, paolo);
OWLObjectPropertyAssertionAxiom assertionAxiom5 = df.getOWLObjectPropertyAssertionAxiom(hasActor, soccer, marco);
Singleton_Ontologia.getManager().addAxiom(ontologiaattuale,assertionAxiom);
Singleton_Ontologia.getManager().addAxiom(ontologiaattuale,assertionAxiom2);
Singleton_Ontologia.getManager().addAxiom(ontologiaattuale,assertionAxiom3);
Singleton_Ontologia.getManager().addAxiom(ontologiaattuale,assertionAxiom4);
Singleton_Ontologia.getManager().addAxiom(ontologiaattuale,assertionAxiom5);
/// CONSISTENCY CHECK ///
System.out.println("Consistency:"+Singleton_Ontologia.getReasoner().isConsistent());
а вот конфигурация резонера-отшельника:
public static void configReasoner() {
iribase = "http://webmind.dico.unimi.it/CARE/locont.owl#";
Configuration config=new Configuration();
config.ignoreUnsupportedDatatypes=true;
factory = manager.getOWLDataFactory();
reasonerFactory = new ReasonerFactory();
reasoner = reasonerFactory.createReasoner(ont,config);
}
Я создал людей Паоло и Марко, чтобы создать более 1 Person
, являющихся Actors
из Soccer
, но метод isConsistent()
по-прежнему возвращает значение true, в то время как я ожидал ложного значения. Кроме того, я распечатал содержимое ABOX:
___________ABOX___________
/////////////////////// OBJECT number 1 ///////////////////////
ClassAssertion(<http://webmind.dico.unimi.it/CARE/locont.owl#IndividualActivity> <http://webmind.dico.unimi.it/CARE/locont.owl#Soccer>)
/////////////////////// OBJECT number 2 ///////////////////////
ClassAssertion(<http://webmind.dico.unimi.it/CARE/locont.owl#Person> <http://webmind.dico.unimi.it/CARE/locont.owl#Paolo>)
/////////////////////// OBJECT number 3 ///////////////////////
ObjectPropertyAssertion(<http://webmind.dico.unimi.it/CARE/locont.owl#hasActor> <http://webmind.dico.unimi.it/CARE/locont.owl#Soccer> <http://webmind.dico.unimi.it/CARE/locont.owl#Paolo>)
/////////////////////// OBJECT number 4 ///////////////////////
ObjectPropertyAssertion(<http://webmind.dico.unimi.it/CARE/locont.owl#hasActor > <http://webmind.dico.unimi.it/CARE/locont.owl#Soccer> <http://webmind.dico.unimi.it/CARE/locont.owl#Marco>)
/////////////////////// OBJECT number 5 ///////////////////////
ClassAssertion(<http://webmind.dico.unimi.it/CARE/locont.owl#Person> <http://webmind.dico.unimi.it/CARE/locont.owl#Marco>)
___________END_ABOX___________
Честно говоря, я не могу понять, где моя ошибка, может ли кто-нибудь мне помочь?
sameAs
друг друга, и ограничениеexactly 1
будет выполняться. - person Ignazio   schedule 08.02.2018OWLDifferentIndividualsAxiom
недостаточно для решения проблемы - person Giovanni Laganà   schedule 08.02.2018