非常に大きな (約 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ライブラリシンプルで使いやすいです。