LV2ドキュメント生成ツールはRDFLibを使用します。これはおそらくPythonで最も人気のあるRDFインターフェースですが、Turtleを解析するだけではありません。パフォーマンスが問題にならない場合は良い選択ですが、残念ながら本当に遅いです。
プラグインを実際にインスタンス化して使用する必要がある場合は、既存のLV2実装を使用することをお勧めします。スティーブが言ったように、Lilvはこれのためです。静的なデフォルトの場所に限定されませんが、LV2_PATH内のすべての場所を調べます。Lilvを呼び出す前に、この環境変数を任意に設定でき、それらの場所でのみ検索されます。または、一度に1つのバンドルのみを具体的にロードする場合は、そのための関数lilv_world_load_bundle()があります。
LilvにはSWIGベースのPythonバインディングが含まれていますが、実際にデータを処理できるようになるまでには至っていません。ただし、scipy配列を使用してオーディオを処理できるようにするLilvをラップするプロジェクトがあります:http://pyslv2.sourceforge.net/(名前にもかかわらず、それらは実際にはLilvバインディングであり、その前身のSLV2のバインディングではありません)
とは言うものの、Turtleファイルから静的な情報を取得するだけでよい場合、Cライブラリを使用することはおそらくそれが価値があるよりも厄介です。標準データファイルを使用することの大きな利点の1つは、既存のツールでの使いやすさです。プラグインのポート数を取得するには、パターン(plugin、lv2:port、*)に一致するトリプルの数を数える必要があります。読み取るファイルとコマンドライン引数としてプラグインURIを指定して、プラグインのポート数を出力するPythonスクリプトの例を次に示します。
#!/usr/bin/env python
import rdflib
import sys
lv2 = rdflib.Namespace('http://lv2plug.in/ns/lv2core#')
path = sys.argv[1]
plugin = rdflib.URIRef(sys.argv[2])
model = rdflib.ConjunctiveGraph()
model.parse(path, format='n3')
num_ports = 0
for i in model.triples(plugin, lv2.port, None]):
num_ports += 1
print('%s has %u ports' % (plugin, num_ports))