这是我的OWL文件的一部分:
# Class: :Book (:Book)
SubClassOf(:Book ObjectSomeValuesFrom(:writtenBy owl:Thing))
SubClassOf(:Book DataSomeValuesFrom(:genre rdfs:Literal))
SubClassOf(:Book DataSomeValuesFrom(:title rdfs:Literal))
如何仅从属性中获取datasomevalues?我使用owlapi 5.1.0和Hermit作为推理机。
编辑:这是我如何解决。我不知道这是不是正确的方法,但它是有效的。
感谢@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
}
}
}
}
使用访问者以获得最佳效果(无需检查字符串类型):
// 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));
}
问题内容: 我正在开发一个应用程序(Quartz调度程序),其中有一个作业类负责实际执行工作,我们需要在Quartz调度程序中创建触发器时告知/传递作业类的名称。 我想为所有想使用该API的人提供一个扩展点(除了我将作为API的一部分提供的一些通用作业之外)。这个想法是创建一个(标记)接口,如果有人想将其类声明为调度程序作业类,那么他们要做的就是(声明)实现该接口。 我不确定如何找到合约之后的类(
下面是适当的方法签名的样子: (问题领域是扑克;列举奥马哈扑克牌中所有可能的板卡组合。是的,还有其他方法可以解决这个问题,但我正在测试这个方法,因为处理比特比大多数其他选择要快得多。)
这类似于子集和问题,只是稍有不同,不是检查集合是否有一个和为9的子集,而是我们必须找到这样的子集的个数。我在这里遵循子集和问题的解法。但是我想知道如何修改它来返回子集的计数。
问题内容: 尽管我们已部署了最新的类,但我们正在使用的是旧版本的类。要扫描应用程序服务器所有子文件夹中的所有JAR文件,我们如何编写一个小的Shell脚本来打印出找到该特定类的JARS文件的文件名? 问题答案: 就像是: 您可以这样包装: 然后将在当前目录下找到的所有jar文件中搜索该类