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

时间:2017-06-29 08:12:08

标签: java jena

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

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

2 个答案:

答案 0 :(得分:5)

使用Apache Jena TDB - 请参阅documentation here

TDB将您的数据集存储在磁盘上,但非常有效地访问它:您不应该在内存模型上遇到任何真正的性能差异。

通常,如果我正在处理大型模型或数据集,我的工作方式如下:

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

    # /tmp/DB is where TDB will store the indexed model
    $ tdbloader2 --loc /tmp/DB file.nt
    
  2. (在Windows上使用tdbloader

    1. (可选)尝试查询:

      $ tdbquery --loc /tmp/DB @query.sparql
      
    2. 像java中的任何旧模型一样访问:

      Dataset dataset = TDBFactory.createDataset("/tmp/DB") ;
      Model model = dataset.getDefaultModel() ;
      ... continue as before ...
      

答案 1 :(得分:0)

您可以创建自己的org.apache.jena.graph.Graph实现,它不适用于内存。 一个例子是d2rq,其中de.fuberlin.wiwiss.d2rq.jena.GraphD2RQ与数据库一起使用。但它是基于过时的耶拿。