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 ストアにロードするためのツールです。アプリ コードとは別に、TDB グラフの基本モデルに対して推論エンジンを使用する Jena モデルを構築できます。しかし、読み込み時に推論モデルを使用している理由がわかりません。あなたが得ている例外を見ると:

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

プロセスのその段階では推論グラフを使用できないことが確認されていますが、なぜ使用するのかわかりません。もちろん、基本モデルの推論クロージャを静的に計算し、それを TDB に格納して、実行時の推論計算の必要性を省こうとしている場合を除きます。ただし、それを行おうとしている場合現在 Jena アセンブラーを介して実行できるとは思いません。現時点では、これを行うにはカスタム コードを作成する必要があります。

結論: 懸念事項を分離します。の単純なグラフ記述をtdbloader使用し、実行時に推論グラフを使用します。

于 2012-10-11T22:32:32.967 に答える