这是我的OWL文件的一部分:
# Class: :Book (:Book)
SubClassOf(:Book ObjectSomeValuesFrom(:writtenBy owl:Thing))
SubClassOf(:Book DataSomeValuesFrom(:genre rdfs:Literal))
SubClassOf(:Book DataSomeValuesFrom(:title rdfs:Literal))
如何仅获取DataSomeValuesFrom
属性?
我正在使用owlapi 5.1.0
和隐士作为推理者。
编辑:这就是我解决的方法。我不知道这是否是正确的方法,但是它可行。
感谢@AKSV为我提供非常有用的信息。...
for (OWLClass cls : o.getClassesInSignature()){
Set<OWLSubClassOfAxiom> set = o.getSubClassAxiomsForSubClass(cls);
for(OWLSubClassOfAxiom subcl : set){
OWLClassExpression nomeattribEXPR = subcl.getSuperClass();
if(nomeattribEXPR.getClassExpressionType().toString().equals("DataSomeValuesFrom")){
//do something
}
}
}
}
答案 0 :(得分:0)
使用访客获得最佳效果(无需检查字符串的类型)
// this is OWLAPI 5; for OWLAPI 4, use OWLObjectVisitorAdapter
OWLObjectVisitor v=new OWLObjectVisitor(){
public void visit(OWLSubClassOfAxiom ax) {
ax.getSuperClass().accept(this);
}
public void visit(OWLDataSomeValuesFrom c){
//do something
}
};
for (OWLClass cls : o.getClassesInSignature()){
o.getSubClassAxiomsForSubClass(cls).forEach(ax->ax.accept(v));
}