如何创建一个不在内存中的耶拿模型?

ori*_*rab 1 java jena

我正在尝试创建一个Model不会将整个数据加载到内存中,而是从文件系统读取的in jena。

我发现了很多可用的配置,但是它们似乎都在内存中(例如OntModelSpec)。

use*_*512 5

使用Apache Jena TDB-请参阅此处的文档。

TDB将数据集存储在磁盘上,但是访问效率很高:您不应该在内存模型上遇到任何实际的性能差异。

通常,如果我要处理大型模型或数据集,则应像这样工作:

  1. 在命令行上加载模型:

    # /tmp/DB is where TDB will store the indexed model
    $ tdbloader2 --loc /tmp/DB file.nt
    
    Run Code Online (Sandbox Code Playgroud)

(tdbloader在Windows上使用)

  1. (可选)尝试查询:

    $ tdbquery --loc /tmp/DB @query.sparql
    
    Run Code Online (Sandbox Code Playgroud)
  2. 像从Java中访问任何旧模型一样进行访问:

    Dataset dataset = TDBFactory.createDataset("/tmp/DB") ;
    Model model = dataset.getDefaultModel() ;
    ... continue as before ...
    
    Run Code Online (Sandbox Code Playgroud)