0

我发布了关于这个问题的其他问题......但我认为我已经接近解决方案了。我有这个代码只适用于“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());
    }
4

1 回答 1

0

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

但是既然你正在设置一个持久性数据库,为什么不这样做:

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

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

于 2013-10-05T12:53:03.183 回答