1

如何通过 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”后的分号 - 无济于事)

4

1 回答 1

2

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

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

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

底线:分离关注点。对 使用简单的图描述tdbloader,在运行时使用推理图。

于 2012-10-11T22:32:32.967 回答