Jena tdbloader汇编程序



如何通过tdbloader.bat(windows,Jena 2.7.3)通过推理加载TDB存储?

我使用了这个汇编文件:

@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#infModel> .
<#infModel>  a ja:InfModel ;
ja:baseModel <#tdbGraph>; 
ja:reasoner 
[ ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner> ].
<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:location "DB";
.

我的命令:

c:apache-jena-2.7.3bat>tdbloader --tdb=test.ttl C:apache-jena-2.7.3Lubm10*

我有一个例外:

java.lang.ClassCastException: com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph cannot be cast to com.hp.hpl.jena.tdb.store.GraphTDB

怎么了?(删除"DB"后的分号-没有帮助)

目前还不清楚您想要实现什么。tdbloader是一种在通过应用程序或SPARQL端点处理这些三元组之前将三元组加载到TDB存储中的工具。另外,从你的应用程序代码中,你可以构建一个Jena模型,该模型在TDB图的基础模型上使用推理引擎。但我不明白为什么在加载时使用推理模型。如果你看看你得到的异常:

FBRuleInfGraph cannot be cast to com.hp.hpl.jena.tdb.store.GraphTDB

它证实了在这个过程的那个阶段你不能使用推理图,我不确定你为什么会这样做。当然,除非您试图在基本模型上静态计算推理闭包,并将其存储在TDB中,从而节省运行时的推理计算需求。然而,如果正在尝试这样做,我认为目前无法通过Jena汇编程序完成。您现在必须编写自定义代码才能做到这一点。

一句话:将关注点分开。对tdbloader使用简单的图形描述,在运行时使用推理图。

最新更新