2012-02-07 1 views
1

다음과 같은 간단한 쿼리를 위해 dbpedia sparql 끝점에서 "SR171 : 트랜잭션 시간 초과"가 발생합니다. 왜이 오류가 발생합니까? 나는 어떤 시간 제한을 설정하지 않음 - DBPedia 엔드 포인트에 악영향 서비스의 다른 사용자에게 영향을주지 않고 대답하는 쿼리가 너무 어렵 때문입니다 0간단한 sparql 쿼리가 작동하지 않습니다. 날짜 비교

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX : <http://dbpedia.org/resource/> 
PREFIX dbpedia2: <http://dbpedia.org/property/> 
PREFIX dbpedia: <http://dbpedia.org/> 

PREFIX ont: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
SELECT ?name ?date (bif:substring(STR(?date), 1, 4) AS ?year) WHERE { 
    ?person ont:birthDate ?date . 
    ?person foaf:name ?name 

    . FILTER ((fn:string-length(STR(?date)) = 10) && (bif:substring(STR(?date), 9, 2) = '05') && (bif:substring(STR(?date), 6, 2) = '02') && (?date > "1868-01-01"^^xsd:date) && (?date < "2005-01-01"^^xsd:date)) 

답변

7

에입니다.

DBPedia는 잘 알려진 공용 SPARQL 끝점이므로 호스트하는 사람들은 쿼리를 실행할 수있는 기간에 엄격한 제한을 두도록 구성되어 있기 때문에 불량 사용자가 서비스를 사용할 수 없도록 만들지 않습니다 다른 사람들을 위해.

처음 결과가 많은 항목 (정확히 592299)을 묻어서 FILTER을 적용하면 쿼리에 시간이 오래 걸릴 수 있습니다. FILTER은 특히 문자열 조작과 날짜 비교를 할 때 SPARQL에서 상당히 비쌉니다. AFAIK DBPedia 시간 초과는 몇 초 정도로 상당히 낮으며 종단점은 FILTER을 적용하는 데 너무 오래 걸리므로 그 시간 내에 쿼리를 완료 할 수 없습니다. 그래서 내가 할 수있는 아무것도

PREFIX ont: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 

SELECT COUNT(*) 
WHERE 
{ 
    ?person ont:birthDate ?date . 
    ?person foaf:name ?name 
} 
+0

없습니다 : -

다음은 내가 당신의 쿼리의 첫 번째 부분은 반환 된 얼마나 많은 결과를 참조하는 데 사용되는 쿼리입니다. 이른 아침과 밤늦게까지 일합니다. 흥미로운 점은 쿼리를 실행하는 데 1-2 초가 걸리지 않으며 오류가 발생한다는 것입니다. 따라서 정상적인 시간에는 작동하지 않습니다. 평상시와 같이 시스템에서 작동합니까? –

+0

최대 사용 시간대가 사용자의 표준 시간대와 관련이있을 때 사용중인 표준 시간대에 따라 달라질 수 있습니다. 나는 미국 서부 해안에있어 (PST) 오전 9시에 쿼리를 실행하려고 시도했고 시간이 초과되었습니다. – RobV

+0

나는 동유럽에 있으며 위에서 말했듯이 발생합니다. 웹 응용 프로그램에서는 허용되지 않습니다. 궁극적으로 매개 변수가있는 PHP 스크립트에서 쿼리를 사용하고 싶습니다. DB Pedia의 제한 사항이라고 생각합니다. DB Pedia의 다른 API 나 계약 형태 (심지어 유료)와 같이 개발자가 "KEY"를 신청할 수있는 옵션이 있습니까? 쿼리 시간이 늘어납니다. –