我正在与 Jena 和 Virtuoso 合作托管一些 RDF 数据。我计划将 Jena 作为接口,将 Virtuoso 作为后端存储,因为 Jena 似乎更容易扩展,而且 Virtuoso 具有一些不错的功能,例如将关系数据转换为 RDF。我的问题是,当 virtuoso 用作底层存储时,Jena 中的属性函数(在此处描述)以及我想要实现的那些似乎没有任何效果。
使用 TDB (TDBFactory.createDataset) 制作数据集但使用 Virtuoso (VirtGraph、VirtDataset 并尝试 QueryExecutionFactory.sparqlService) 时查询不工作的示例:
PREFIX apf: <java:com.hp.hpl.jena.sparql.pfunction.library.>
SELECT *
WHERE
{ ?s apf:str "Test" }
LIMIT 5
我正在寻找一种方法来使 Jena/ARQ 对发送给 Virtuoso 的查询结果进行预处理或后处理。
如果这不可能,请指出其他方向。在 Virtuoso 中实现属性功能或使用 Sesame 或其他易于扩展的系统代替是我自己的初步想法。