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