“dbpedia_2014.owl”是一个组织不同概念的猫头鹰文件,其中不包含任何个人。 它可以通过http://data.dws.informatik.uni-mannheim.de/dbpedia/2014/dbpedia_2014.owl.bz2
下载当我在Jena中使用listIndividual()方法时,处理这么小的(2MB)文件花了超过15分钟。代码如下:
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;
public class OntModelTest
{
public static void main(String[] args)
{
String fileName1 = new String("owl_qiwang_test/vc-db-1.rdf");
String fileName2 = new String("owl_qiwang_test/dbpedia_2014.owl");
OntModel ontModel = ModelFactory.createOntologyModel();
ontModel.read(fileName2);
long startMil = System.currentTimeMillis();
System.out.println("Start: " + startMil);
ontModel.listIndividuals();
long endMil = System.currentTimeMillis();
System.out.println("Duration: " + (endMil - startMil));
}
}
我想知道为什么需要这么长时间才能做到这一点。有什么想法吗?
答案 0 :(得分:0)
您正在使用的方法的javadoc表示它提供了一些推理功能。这可能是性能问题的根源,因为推理的复杂性与规模没有很大关联:较大的本体通常比较小的本体更难以推理,但是小型本体很可能难以推理。 / p>
public static OntModel createOntologyModel()
回答一个新的本体模型,该模型将处理表示默认本体语言(OWL)的本体的内存模型。默认文档管理器将用于加载本体包含的文档。
注意:为OWL和RDFS选择的默认模型包括一个弱推理器,其中包含一些蕴涵(例如子类和子属性层次结构上的传递闭包)。想要完全没有推理或者更完整推理的用户应该使用其他createOntologyModel方法之一来允许声明首选的OntModel规范。
答案 1 :(得分:0)
我有一个类似的问题here
如果您想使用listIndividuals()
方法而不使用推理程序,则可以执行以下操作:
Model _model = model.getRawModel();
OntModel newModel = new OntModelImpl(OntModelSpec.OWL_MEM, _model);