2017-02-24 2 views
0

SPARQLWrapper 모듈을 사용하여 거장 종점에 쿼리를 시작하고 그 결과를 얻습니다. 내가 트리플의 오른쪽 번호를python SPARQLWrapper는 10000 개의 결과 만 반환합니다.

SELECT count(*) AS ?count 

와 쿼리를 미사일 때

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') 

:

쿼리는 항상 파이썬 스크립트를 10,000 결과 다음

의 최대한다 반환 : 917051.

왜 SPARQLWrapper 모듈이 10000 결과?

어떻게 결과를 모두 얻을 수 있습니까?

+0

"직접 실행"이란 무엇을 의미합니까? 보통 Virtuoso는'virtuoso.ini' 파일에 설정된 기본 제한을 가지고 있습니다 - 그래서 처음에는 설정을 확인해야합니다. – AKSW

+0

거장의 지휘자 인터페이스에 카운트가있는 쿼리를 실행하면 올바른 번호를 얻습니다. .ini 파일의 매개 변수를 변경하면 효과가 있습니다! –

답변

0

답변은 Virtuoso configuration file, as documented을 조정하는 것입니다. 이 경우 특별히 [SPARQL] 절의 ResultSetMaxRows을 늘려야합니다.

한계는 SPARQLWrapper에 없습니다. (COUNT 대신 1 행만 제공함)을 SPARQL 끝점, 지휘자 또는 다른 인터페이스를 통해 수행 한 경우 동일한 제한이 표시됩니다.

0

데이터 보호를 위해 ResultSetMaxRowsvirtuoso.ini의 항목을 통해 데이터 소유자가 10000 결과를 설정합니다.
그렇지 않은 경우 누구나 간단한 sparql 쿼리 select * where {?s ?p ?o}을 사용하여 데이터 소유자에게 많은 시간과 비용을 요구하는 모든 데이터를 가져올 수 있습니다.

관련 문제