Exception in thread "main" java.lang.NullPointerException
at org.semanticweb.HermiT.Reasoner.<init>(Reasoner.java:210)
at org.semanticweb.HermiT.Reasoner.<init>(Reasoner.java:187)
at OntologyManager.retrieve_property_class(OntologyManager.java:105)
Reasoner hermit = new Reasoner(null, ontologia);
public void retrieve_property_class(OWLOntology ontology) {
//creo il reasoner per svolgere recupero informazioni
Reasoner hermit = new Reasoner(null, ontologia);
//richiesta del nome della classe di cui si vogliono le proprietà
String classe;
System.out.print("Inserire il nome della classe di cui si vogliono le proprietà: ");
classe = scannerNome.nextLine();
//check per vedere se la classe esiste
Set<OWLClass> classi = ontology.getClassesInSignature();
for (OWLClass e : classi) { //scorro le classe OWL del set comparandone l'IRI con il nome della classe desiderata
if(e.getIRI().getFragment().equals(classe)) { //se una classe soddisfa l'uguaglianza ne vengono stampate le proprietà
System.out.println("Le informazioni della classe sono le seguenti: ");
//nome classe
System.out.println("Nome classe: \n"
+ "\t"+ classe);
//display superclassi
System.out.println("Superclassi:");
for(Node<OWLClass> superclasse: hermit.getSuperClasses(e)) {
System.out.println("\t"+ superclasse.getRepresentativeElement().getIRI().getFragment());
}
//display sottoclassi
System.out.println("Sottoclassi:");
for(Node<OWLClass> sottoclasse : hermit.getSubClasses(e)) {
System.out.println("\t"+ sottoclasse.getRepresentativeElement().getIRI().getFragment());
}
//display classi disgiunte
System.out.println("Classi disgiunte:");
for(Node<OWLClass> disgiunta : hermit.getDisjointClasses(e)) {
System.out.println("\t"+ disgiunta.getRepresentativeElement().getIRI().getFragment());
}
//display istanze della classe
System.out.println("Istanze:");
for(Node<OWLNamedIndividual> individuo : hermit.getInstances(e)) {
System.out.println("\t"+ individuo);
}
}
}
hermit.dispose();
}
您必须使用ReasonerFactory
,即对于HermiT,您必须导入以下内容:
import org.semanticweb.owlapi.reasoner.OWLReasoner;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
import org.semanticweb.HermiT.ReasonerFactory;
下面的代码将创建一个隐士推理器。
OWLReasonerFactory reasonerFactory = new ReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontology);
您的pom.xml需要包括:
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>owlapi-distribution</artifactId>
<version>5.1.8</version>
</dependency>
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>org.semanticweb.hermit</artifactId>
<version>1.4.3.517</version>
</dependency>
我想创建新的推理器(隐士)。 2)使用构造函数:[org.semanticweb.hermit.reasoner]
我将OWLAPI与HermiT一起使用,除非在创建了推理器之后尝试修改本体,否则它是有效的。
如何使用HERMIT reasoner 1.3.8在Java中执行SPARQL查询?我使用的是owlapi 4.2,我使用以下方法加载了HERMIT reasoner: 不幸的是,我找不到任何关于如何使用此推理器执行SPARQL查询的解释?!这可能吗?如果没有,我使用owlapi和SPARQL还有什么其他的可能性(其他原因)? 编辑: 我现在知道我需要一个SPARQL引擎。这就是我这样使用SPAR
我想从reasoner[隐士]那里得到推断出的公理,以及它的适当解释。我在Protege中创建了以下本体论。 A.OWL 以下是我的Java代码:- 门生形象:-
我通过Protege创建了以下本体。 本体: 我想运行HermiT reasoner获得推断的类层次结构及其解释。 1)[在Ontology中提供] 2)[在Ontology中提供] 我想像Protege一样获取数据。Protege分别显示推断出的公理及其解释。那么如何得到它们呢?(我添加了一些protege的截图供参考) 我的本体: 承担说明:
我试图学习如何正确地使用OWLAPI,但我遇到了一些麻烦:我有一个本体来构造活动(例如个人和社会活动);我的目标是创建一个简单的不一致性示例,以便使用这个API:我想声明足球是一个单独的活动。在Protegé中定义为。 下面是Hermit Reasoner的配置: 我创建个人Paolo和Marco是为了创建一个以上的作为的,但是方法仍然返回true,而我需要一个false值。另外,我打印了ABOX