如何在一个模型中加载两个本体

时间:2013-10-05 11:48:14

标签: java jena ontology dbpedia tdb

我发布了有关此问题的其他问题......但我认为我接近解决方案。我有这个代码只适用于加载“dbpedia.owl”。当我添加其他本体“yago.nt”时出现问题...我有“java.lang.OutOfMemoryError:Java堆空间”之类的错误...我试图修改Xmx值(我将其增加到2048m)。但是我没有结果......我不知道我要做什么......请帮帮我..如果你知道如何使用TDB,你可以发布应用于我的代码的代码吗?

    OntModel ont=ModelFactory.createOntologyModel();
    InputStream in=FileManager.get().open("dbpedia.owl");
    InputStream i =FileManager.get().open("yago.nt");  
    ont.read(in,""); 
    Model schemaModel = FileManager.get().loadModel("yago.nt");
    ont.add(schemaModel); // <---THE ERROR IS HERE

    Reasoner r = ReasonerRegistry.getOWLReasoner();
    r=r.bindSchema(ont);
    OntModelSpec p= OntModelSpec.OWL_DL_MEM;
    p.setReasoner(r);

    OntModel model=ModelFactory.createOntologyModel(p,ont);
    ExtendedIterator s=model.listClasses();

    while (s.hasNext())
    {
    OntClass thisClass = (OntClass) s.next();
    System.out.println("Found class: " + thisClass.toString());
    }

1 个答案:

答案 0 :(得分:0)

您可以使用TD数据集和getNamedModel直接读入数据库。

但正好你正在建立一个持久性数据库,为什么不这样做:

tdbloader --loc=DB dbpedia.owl yago.nt

(如果.owl给你带来问题,首先转换为NT或使用TDB 0.10.X)。