我正在使用ANTLR4解析我的语法和OWLAPI来处理本体。由于我使用的是Listener类,因此无法修改返回类型。这是一个例子:
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);
}
这很糟糕,因为我唯一可以返回的是打印,但我有兴趣提供一个boolean的返回类型(在这个例子中),而不仅仅是我无法管理的打印。 没有办法修改返回类型void因为解析器崩溃,所以你有什么特别的建议来处理这种情况吗?
答案 0 :(得分:1)
您可以声明一个实例布尔变量并使用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);
}