2017-10-23 4 views
2

Drug Ontology OWL filesのほとんどとChEBI OWL filesのほとんどを、Optimized OWL Horstの推論が有効なGraphDBの無料v8.3リポジトリにロードするのには苦労しています。GraphDBは、OWLの推論で1000万文をロードできますか?

これは可能ですか?私は「忍耐強い」以外の何かをするべきですか?

詳細:

私は週末488.0ジブと64個のvCPU

AWS r4.16xlarge instanceを移入するloadrdf offline bulk loaderを使用しています、私は別のプールバッファーで遊んのサイズ、見つかりましたこれらのファイルのほとんどは、提案された200,000の代わりに、2,000または20,000の文のプールバッファで最も速く読み込まれます。また、-Xmx470gをloadrdfスクリプトに追加しました。ほとんどのOWLファイルは、1時間未満で個別にロードされます。

昨晩午後10時頃、私は以下のファイルをすべて同時に読み込み始めました。 今は11時間後ですが、まだ何百万もの声明が残っています。負荷率は現在約70 /秒です。 RAMの30%しか使用されていないようですが、CPUの負荷は常に約60です。

  • この規模の何かをしている他の人を文書化したウェブサイトはありますか?
  • should I be using a different reasoning configuration?この構成は、週末の私の実験に基づいて、最も高速にロードするOWL構成だったので、この構成を選択しました。私は、rdfs:subClassOfを超えた関係を探す必要があると思います。

ファイルは、私が負荷にしようとしている:あなたはGraphDB 8.4.0リリースの一部であるプリロードツール、見てみることができ@MarkMiller

+-------------+------------+---------------------+ 
| bytes | statements |  file   | 
+-------------+------------+---------------------+ 
| 471,265,716 | 4,268,532 | chebi.owl   | 
| 61,529  | 451  | chebi-disjoints.owl | 
| 82,449  | 1,076  | chebi-proteins.owl | 
| 10,237,338 | 135,369 | dron-chebi.owl  | 
| 2,374  | 16   | dron-full.owl  | 
| 170,896  | 2,257  | dron-hand.owl  | 
| 140,434,070 | 1,986,609 | dron-ingredient.owl | 
| 2,391  | 16   | dron-lite.owl  | 
| 234,853,064 | 2,495,144 | dron-ndc.owl  | 
| 4,970  | 28   | dron-pro.owl  | 
| 37,198,480 | 301,031 | dron-rxnorm.owl  | 
| 137,507  | 1,228  | dron-upper.owl  | 
+-------------+------------+---------------------+ 
+0

ファイルのロード中にマテリアライゼーションが実行されていますか?それとも、すべてのトリプルがロードされた後にマテリアライズされますか?あなたが必要とする表現力によっては、実際にはあまり複雑ではない推論がパフォーマンスを大幅に向上させる可能性があります。 OWL Horstは、例えば、 RDFデータに適用する必要がある規則の固定順序を使用できるRDFS。私は分散推論に使用されているいくつかのベンチマークを知っていますが、私はあなたのデータにどれくらいの時間がかかるか推測できません。 – AKSW

+0

@AKSW私は、ロード自体の間にマテリアライゼーションが行われると信じています。私はあなたのように、より安価な推論に行くことを提案した複数の同僚を抱えています。これらのオントロジーに対するSPARQLクエリをノン・インカレンス・リポジトリに書き始めています。より複雑なルールセットを使用することで、短くて明示的でないクエリを書くことができると期待していましたが、それは私のところでは素朴です。私はすぐに例を掲載します。 –

+0

@ MarkMiller、これらのトリプルをGraphDBリポジトリに「推論なし」ルールセットでロードしようとしましたか?あなたは推論が必要だと知っていますが、結果はほぼ同じと思われます...時間がかかっていないか、コストが高くないかテストしてください! –

答えて

2

。大量のデータを一定のスピードで処理するように特別に設計されています。推論なしで動作するので、データをロードしてからルールセットを変更してステートメントを再配備する必要があります。ただ、整然とフォーマットで@Konstantinペトロフの正しい提案を入力し

http://graphdb.ontotext.com/documentation/free/loading-data-using-preload.html

+0

ありがとう。事前ロードは試していませんでしたが、推論レベルを変更しようとしました@ http://graphdb.ontotext.com/documentation/standard/configuring-a-repository.html#reconfigure-a-repository。システムレポからは、変更前と変更後のターゲットリポジトリのルーセットに関するクエリを実行しました。修正前は「空」で、その後は「rdfs-plus-optimized」でした。その後、@ http://graphdb.ontotext.com/documentation/standard/reasoning.html#reinferringを強化しました。**今の推論レベルは空白/グレーアウトされたWebインターフェイスとSPARQLクエリには新しい推論が表示されません**提案? –

+1

@ MarkMillerあなたのコメントからルールセットのスペルが間違っていると思われます。 。rulset PREFIXのSYS: INSERT DATA { _:B SYS:addRuleset "rdfsplus最適化" } 2.デフォルトとしてrulsetを設定 。 PREFIX sys: データの挿入{ _:b sys:defaultRuleset "rdfsplu最適化された " } 3.差し戻し。 接頭辞sys: データの挿入{{} []} 4.メモUIに古いルールセットが表示されることを確認します。これで結構です –

1

これらのクエリはすべて、関心のあるリポジトリで実行する必要があります。これを実行する際には、これらのクエリを実行するときにSYSTEMリポジトリに接続する必要があると思っています。

これらのクエリはすべて、これは直接OWL推論リポジトリに大規模なデータセットをロードするタイミング/パフォーマンスを扱っていませんが、それは切り替える方法を示してい次のプレフィックスの定義

prefix sys: <http://www.ontotext.com/owlim/system#>

が必要です多くのトリプルを無論(空のルールセット)リポジトリにロードした後、より高いレベルの推論に変換します。

現在の推論レベル/ルールセットを照会することから始めることができ、各挿入の後にこの同じ選択ステートメントを実行することができます。

SELECT ?state ?ruleset { ?state sys:listRulesets ?ruleset }

INSERT DATA { _:b sys:addRuleset "rdfsplus-optimized" }

事前に定義されたルールセットを追加し、デフォルトの再推論

INSERT DATA { _:b sys:defaultRuleset "rdfsplus-optimized" }

が...長い時間がかかる可能性があり、新たなルールセットを作ろう!

関連する問題