方法listIndividual()需要超过15分钟,而#34; DBPedia_2014.owl" (2MB大小的文件)

时间:2014-12-25 07:24:08

标签: java jena owl dbpedia

“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));

    }
}

我想知道为什么需要这么长时间才能做到这一点。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您正在使用的方法的javadoc表示它提供了一些推理功能。这可能是性能问题的根源,因为推理的复杂性与规模没有很大关联:较大的本体通常比较小的本体更难以推理,但是小型本体很可能难以推理。 / p>

https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/ModelFactory.html#createOntologyModel--

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);