如何通过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.3\bat>tdbloader --tdb=test.ttl C:\apache-jena-2.7.3\Lubm10\*
我有一个例外:
java.lang.ClassCastException: com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph cannot be cast to com.hp.hpl.jena.tdb.store.GraphTDB
有什么问题? (在“DB”之后删除分号 - 没有帮助)
答案 0 :(得分:2)
目前尚不清楚你想要实现的目标。在通过您的应用程序或SPARQL端点处理这些三元组之前,tdbloader
是一个用于将三元组加载到TDB存储区的工具。另外,从您的应用程序代码中,您可以构建一个Jena模型,该模型在TDB图的基础模型上使用推理引擎。但我不明白为什么你在 load 时使用推理模型。如果你看一下你得到的例外:
FBRuleInfGraph cannot be cast to com.hp.hpl.jena.tdb.store.GraphTDB
它确认您无法在流程的该阶段使用推理图,我也不确定您为什么会这样做。当然,除非你试图静态计算基础模型上的推理闭包并将其存储在TDB中,否则在运行时节省了推理计算的需要。但是,如果 试图这样做,我不相信目前可以通过Jena汇编程序完成。您现在必须编写自定义代码才能执行此操作。
底线:将问题分开。使用tdbloader
的普通图形描述,在运行时使用推理图。