for (OWLClass clazz1 : ontology.getClassesInSignature()) {
for (OWLClass clazz2 : ontology.getClassesInSignature()) {
OWLAxiom axiom = MyModel.factory.getOWLDisjointClassesAxiom(clazz2, clazz1);
if( !(ontology.containsAxiom(axiom)) && reasoner.isEntailed(axiom))
{
System.out.println(clazz2.toString() + " disjoint with " + clazz1.toString());
}
问题是:执行时间非常慢,我会说是永恒的。即使我减少了一些if语句的比较数,情况还是一样的。
Protege似乎非常快地计算出这些推断的公理,并且它基于我正在使用的相同API(OWLAPI)。那么,我是不是走错了路?
分析代码很可能会发现慢的部分是
reasoner.isEntailed(axiom)
此表单要求推理器重新计算每个类对的蕴涵,包括Clazz1
和Clazz2
相等的对(您可能想跳过它)。
或者,您可以对signature中的类进行一次迭代,并使用reasoner获取所有不相交的类:
Set<OWLClass> visited=new HashSet<>();
for (OWLClass c: ontology.getClassesInSignature()) {
if (visited.add(c)) {
NodeSet set = reasoner.getDisjointClasses(c);
for (Node node: set.getNodes()) {
System.out.println("Disjoint with "+c+": "+node);
visited.addAll(node.getEntities());
}
}
}
正如您所看到的,瓶颈是由3个循环给出的,这些循环使应用程序变慢;此外,对本体的每一类都执行计算分离过程。 是否有更有效的方法来获得不交点,并检查公理是否被断言或派生?
我遇到了java在SSL上使用时速度较慢的问题。解决方案是添加 现在,java.security文件已经包含 “/dev/urandom”与“/dev/./urandom”不同的原因和方式。为什么java不接受“/dev/urandom” 对于我正在运行的JVM,如何判断它们是否使用了正确的urandmon设备(vs random)
我有一张大表,上面有很多公式,它们之间有一个依赖层次结构。它以具有日期值的单元格开始。然后,单元格x:y(和其他单元格)有依赖于该日期的公式。那么单元格w:z(和其他单元格)有一个依赖于单元格x:y的公式。诸如此类... 这个带有日期值的主单元格使用apache POI填充。 现在我的问题是:当我打开生成的excel文件时,日期在那里,但没有一个公式被计算出来。它们都存在错误“”。似乎当公式试图自
本文向大家介绍AUC的计算公式相关面试题,主要包含被问及AUC的计算公式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: M为正样本数,N为负样本数。Rank的值代表能够产生前大后小这样的组合数,但是其中包含了(正,正)的情况,所以要减去正例的个数所以可得上述公式。
本文向大家介绍Python计算公交发车时间的完整代码,包括了Python计算公交发车时间的完整代码的使用技巧和注意事项,需要的朋友参考一下 问题描述 公交车每天会按照一定间隔发车 , 由于不同时间段经过拥堵路段的用时不 - 样,所以给定路线下公交车每趟 ( 每车次 ) 行驶时间差异也很大,现在给出某路线某天各车次公交车离开始发站和到达终点站的时间,请求出该天耗时最长车次的行驶时间。输入说明 : 第
问题内容: 我正在使用NLTK在语料库中搜索n- gram,但是在某些情况下会花费很长时间。我已经注意到,计算n元语法在其他软件包中并不罕见(显然,Haystack具有某些功能)。如果我放弃NLTK,这是否意味着可以以更快的方式在语料库中查找n- gram?如果是这样,我可以使用什么来加快速度? 问题答案: 由于您没有指明是想要单词级还是字符级的n-gram,因此我将假设前者,而不会失去一般性