我正在使用antlr4来解析我的语法和owlapi来研究本体。由于我正在使用侦听器类,因此无法修改返回类型。这里一个示例:
public void exitSubConcept(Parser.SubConceptContext ctx) {
OWLClassExpression first = stack.pop();
OWLClassExpression second = stack.pop();
OWLSubClassOfAxiom s = factory.getOWLSubClassOfAxiom(second, first);
if(reasoner.isEntailed(s))
{
System.out.println(s.toString() + "is entailed");
}
else
{
System.out.println(s.toString() + "is NOT entailed");
}
super.exitSubConcept(ctx);
}
这很糟糕,因为我唯一可以返回的是打印,但是我有兴趣提供一个布尔值的返回类型(在此示例中),而不仅仅是我无法管理的打印。无法修改返回类型void,因为解析器崩溃,所以您有任何特定建议可以处理这种情况吗?
您可以声明一个实例布尔值变量并使用 hasEntailed()
获取布尔值(我正在使用hasentails来区分现有的isentailed()方法)
private boolean entailed = false;
public boolean hasEntailed(){
return entailed;
}
public void exitSubConcept(Parser.SubConceptContext ctx) {
OWLClassExpression first = stack.pop();
OWLClassExpression second = stack.pop();
OWLSubClassOfAxiom s = factory.getOWLSubClassOfAxiom(second, first);
if(reasoner.isEntailed(s))
{
System.out.println(s.toString() + "is entailed");
entailed = true;
}
else
{
System.out.println(s.toString() + "is NOT entailed");
entailed = false;
}
super.exitSubConcept(ctx);
}