属性功能在Virtuoso中



我正在与Jena和Virtuoso合作以托管一些RDF数据。我打算将Jena作为接口和Virtuoso作为后端存储,因为Jena似乎更容易扩展,并且Virtuoso具有一些不错的功能,例如将关系数据转换为RDF。我的问题是,耶拿中的属性功能(此处描述),以及我要实现的属性功能,当使用Virtuoso用作基础存储时,似乎没有任何效果。

使用TDB(TDBFACTORY.CREATEDATASET)来制作数据集但使用virtuoso(virtgraph,firtgraph,firtdataset,又尝试queryexecution -factory.sparqlservice)时,查询工作的示例不起作用。

PREFIX  apf:  <java:com.hp.hpl.jena.sparql.pfunction.library.>
SELECT  *
WHERE
    { ?s apf:str "Test" }
LIMIT   5

我正在寻找一种使jena/arq前或后处理发送给Virtuoso的结果的方法。

如果不可能,请指向其他方向。在Virtuoso中实现属性功能或使用芝麻或其他易于扩展的系统是我自己的初始想法。

如果您想要jena功能,则可以向Virtuoso发出查询并返回图形,然后在该图上本地执行查询。否则,您需要服务器中的功能,而不是客户端。

(如今,apf:str功能更好地完成为FILTERBINDSTR()

我认为,您也可以针对Virtuoso服务器执行此查询,而无需重写。尝试下一个:

Model m = VirtModel.openDatabaseModel(...);
Query query = QueryFactory.create(
    "PREFIX  apf:  <java:com.hp.hpl.jena.sparql.pfunction.library.> "+
    "SELECT  * WHERE { ?s apf:str "Test" } LIMIT   5") ;
QueryExecution qexec = com.hp.hpl.jena.query.QueryExecutionFactory.create(query, m) ;
ResultSet rs = qexec.execSelect() ;

上面的示例将通过jena arq执行查询(在客户端,但图形数据将通过Virtuoso通过Virtosograph API调用加载)。它的工作速度比服务器端执行较慢,但是您将能够使用所有ARQ功能。

最新更新