我有一个不适合内存的大型 RDF 模型。我目前正在将整个内容加载到 TDB 中,但我想通过只关注一个子图(关于所有资源的所有属性,它们是子类或某些“根”概念的类型)来过滤它。
我尝试的是针对完整的 TDB 模型执行 DESCRIBE 语句,该模型描述了我感兴趣的图的子集({ ?x rdf:type/rdfs:subClassOf* ?type })。我遇到的问题是双重的:
在较小的 [sample] 数据集上,DESCRIBE 语句完成,但我不知道如何将生成的模型写回 TDB(我想丢弃所有其他数据)。我试图调用 tdbModel.setDefaultModel() 但它抛出异常。所以,我现在要做的是创建第二个 TDB 位置,获取默认模型,然后将 DESCRIBE 语句的结果添加到另一个模型中。有没有更好的办法?
在完整的数据集上,我认为 DESCRIBE 语句将导致超过 500k 三元组,并且它已经运行了几个小时而没有完成。有没有更有效的方法来做到这一点?