2013-06-09 18 views
6

私は自分のマシンに複数のデータセットをダウンロードし、それぞれのSPARQLエンドポイントを開始できるようにします。私はJenaプロジェクトの一環であるFusekiを試しました。しかし、私はDBpediaのような大規模なデータセットを照会しようとしているのであれば、他のもの(複数のSPARQLエンドポイントを開始し、それらの上に連合クエリシステムを使用する)を行うつもりなら、あまり望ましくないデータセット全体をメモリにロードします。大きなRDFデータセットのメモリ不足の問い合わせ

私はSILKを使用して複数のデータセットをリンクし、FEDXフェデレーションクエリシステムを使用してクエリを実行するつもりです。私が使用しているシステムの変更をお勧めする場合、または私にヒントを与えることができれば、それは素晴らしいでしょう。また、このプロジェクトに適合するデータセットを提案すると助けになるでしょう。

答えて

4

JenaのFusekiはTDBをストレージメカニズムとして使用でき、TDBは物をディスクに格納します。 caching on 32 and 64 bit Java systemsのTDBドキュメントでは、ファイルの内容がメモリにマップされる方法について説明しています。私は、TDB/Fusekiがデータセット全体をメモリにロードするとは思わない。これは大規模なデータセットでは実現不可能ですが、TDBではかなり大きなデータセットを処理できます。あなたがしなければならないことは、tdbloaderを使ってTDBストアを作成することです。あなたはそれにFusekiを指すことができます。

TDBストアをthis answerに設定する例があります。そこでは、クエリがtdbqueryで行われるが、ドキュメントのRunning a Fuseki serverセクションによると、あなたは同じTDBストアと布石を開始するために実行する必要がありますすべては--loc=DIRオプションを使用している:

  • --loc=DIR
    既存のTDBデータベースを使用します。存在しない場合は空の空白を作成します。
2

As Joshua saidそれは多くのリソースを使用せずに、非常に大きなオントロジーを保存することができますので、イエナの布石は、TDBを使用しています。たとえば、Yago2 taxonomyをロードして約600MBのRAMしか使用できません。 FusekiをJavaプロジェクトにロードする必要はありません。コマンドラインから実行し、プロジェクト内でクエリを実行するだけです。 Windowsのコマンドラインで

ロード、それを次

http://localhost:3030/your_namespace/sparql?query=SELECT * { ?s ?p ?o } 

java -jar c:\your_ontology_directory\fuseki-server.jar \ 
    --file=your_ontology.rdf /your_namespace 

次に、あなたが任意のGET/POSTアプリケーション(も、あなたのブラウザーで)と、それに対してSPARQLクエリを実行することができます

結果はデフォルトでXML形式で返されます。

<?xml version="1.0"?> 
<sparql xmlns="http://www.w3.org/2005/sparql-results#"> 
    <head> 
    <variable name="s"/> 
    <variable name="p"/> 
    <variable name="o"/> 
    </head> 
    <results> 
    <result> 
     <binding name="s"> 
     <uri>http://yago-knowledge/resource/wordnet_gulag_103467887</uri> 
     </binding> 
     <binding name="p"> 
     <uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri> 
     </binding> 
     <binding name="o"> 
     <uri>http://yago-knowledge/resource/wordnet_prison_camp_104005912</uri> 
     </binding> 
    </result> 
    … 
関連する問題