0

私はinを使用SPARQLWrapperpythonて、ループ内のさまざまなクエリを使用してWebエンポイントをクエリします。

だから私はそれをこのように機能させようとしました(queriesすべての異なるクエリとresult結果を保持しましょう):

sparql = SPARQLWrapper("url")
prefix = "prefix..."
for i in arange(1:len(queries)):
    sparql.setQuery(prefix+queries[i])
    result[i] = sparql.query().convert()

しかし、これは機能しません。リストから最初に選択したクエリは想定される結果を返しますが、他のクエリは返しません。その代わりに、私は今これを使用します:

for i in arange(1:len(queries)):
    [sparql,prefix] = initializeSPARQL()
    sparql.setQuery(prefix+queries[i])
    result[i] = sparql.query().convert()

そしてまた

def initializeSPARQL():
    sparql = SPARQLWrapper("url")
    prefix = "prefix..." 
    return sparql,prefix

クエリ自体がボトルネックであるため、これは機能し、パフォーマンスの問題でもありませんしかし、より良い解決策はありますか?これはとても間違っているようです...

4

2 に答える 2

0

コードをチェックしていて、query()メソッドが完全にステートレスであるため、なぜ失敗するのかわかりません。

i> 1の場合、result [i]には何が含まれますか?

次のことを試してみることをお勧めしますか?

sparql = SPARQLWrapper("url")
prefix = "prefix..."
results = []
for i in range(0, len(queries)):
    sparql.resetQuery()
    sparql.setQuery(prefix+queries[i])
    results[i] = sparql.query().convert()
于 2013-02-06T14:45:26.083 に答える
-1

私はライブラリの開発者の 1 人です。

最初の試行でバグが発生します。そのような方法でライブラリを使用できるようにするために、以前の使用法で保持されている内部データ構造を確認します。

2番目の解決策は、たとえそれがうまくいったとしても、それを行う正しい方法ではないはずです.

私が言ったように、私はこれを修正する方法を見ていきます。

今後のために、適切なバグ レポートをプロジェクトに送信するか、メーリング リストに電子メールで送信してください。

于 2013-02-01T16:49:12.043 に答える