Pythonで大きなRDFを解析する 質問する

Pythonで大きなRDFを解析する 質問する

非常に大きな (約 200 MB) RDF ファイルを Python で解析したいと思います。Sax または他のライブラリを使用する必要がありますか? タグを取得するなど、構築できる非常に基本的なコードがあれば幸いです。

前もって感謝します。

ベストアンサー1

高速なパフォーマンスを求めるなら、ラプターとともにレッドランド Python バインディングC で書かれた Raptor のパフォーマンスは RDFLib よりもはるかに優れています。また、C を扱いたくない場合は、Python バインディングを使用できます。

パフォーマンスを向上させるためのもう1つのアドバイスは、RDF/XMLの解析を忘れて、Turtleなどの他のRDFフレーバーを使用することです。Nトリプル特に、ntriples の解析は RDF/XML の解析よりもはるかに高速です。これは、ntriples 構文がより単純であるためです。

raptor に付属するツールである rapper を使用して、RDF/XML を ntriples に変換できます。

rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples

ntriples ファイルには次のようなトリプルが含まれます。

<s1> <p> <o> .
<s2> <p2> "literal" .

パーサーはこの構造を非常に効率的に処理する傾向があります。さらに、ご覧のとおり、このデータ構造は小さいため、メモリの面でも RDF/XML より効率的です。

以下のコードは、redland python バインディングを使用した簡単な例です。

import RDF
parser=RDF.Parser(name="ntriples") #as name for parser you can use ntriples, turtle, rdfxml, ...
model=RDF.Model()
stream=parser.parse_into_model(model,"file://file_path","http://your_base_uri.org")
for triple in model:
    print triple.subject, triple.predicate, triple.object

ベースURIは、RDF文書内で相対URIを使用する場合のプレフィックス付きURIです。Python RedlandバインディングAPIに関するドキュメントは、ここ

パフォーマンスをあまり気にしないならRDFライブラリシンプルで使いやすいです。

おすすめ記事