2017-02-24 5 views
0

私はSPARQLWrapperモジュールを使用して、巨匠のエンドポイントにクエリを起動し、その結果を取得します。python SPARQLWrapperは10000の結果しか返しません

from SPARQLWrapper import SPARQLWrapper, JSON 

queryString = """ 
SELECT DISTINCT ?s 
WHERE { 
    ?s ?p ?o . 
} 
""" 


sparql = SPARQLWrapper("http://localhost:8890/sparql") 
sparql.setQuery(queryString) 
sparql.setReturnFormat(JSON) 

res = sparql.query().convert() 

# Parse result 
parsed = [] 
for entry in res['results']['bindings']: 
    for sparql_variable in entry.keys(): 
     parsed.append({sparql_variable: entry[sparql_variable]['value']}) 

print('Query return ' + str(len(parsed)) + ' results') 

私は

SELECT count(*) AS ?count 

でクエリを出せたとき、私はトリプルの右の数を取得:

クエリは常にPythonスクリプトです。ここ10000の結果

の最大値を返します:917051.

なぜSPARQLWrapperモジュールが結果は10000になりますか?

すべての結果を取得するにはどうすればよいですか?

+0

「直接打ち上げ」とはどういう意味ですか?通常、Virtuosoには 'virtuoso.ini'ファイルに設定されているデフォルトの制限があります。まず、設定を確認してください。 – AKSW

+0

殿堂の指揮官インターフェイスに数えてクエリを起動すると、正しい番号が得られます。私は.iniファイルのパラメータを変更し、うまくいきました。 –

答えて

0

答えはを調整することです。この場合は、[SPARQL]スタンザ内のResultSetMaxRowsを増やす必要があります。

制限はSPARQLWrapperにありません。 (COUNTの代わりに、1行のみを提供する)をSPARQLエンドポイント、コンダクタ、または他のインターフェイスを通じて実行した場合、同じ制限が表示されます。

0

10000の結果は、の項目ResultSetMaxRowsを介してデータ所有者によって設定され、データを保護します。
誰も簡単なsparqlクエリselect * where {?s ?p ?o}を使用して、データ所有者に多くの時間と費用を要する可能性のあるすべてのデータを取得できます。

関連する問題