2012-01-21 2 views
4

지정된 범주와 지정된 키가있는 모든 페이지를 가져 오려고합니다. 내 검색어 :DBPedia SPARQL 쿼리는 결과를 반환해야하지만 비어 있습니다.

PREFIX dbpedia: <http://dbpedia.org/> 
PREFIX dbpedia2: <http://dbpedia.org/property/> 
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX dcterms: <http://dublincore.org/2010/10/11/dcterms.rdf#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX grs: <http://www.georss.org/georss/point> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?page ?cat ?key ?value (lang(?value) as ?language) WHERE { 

    ?page dcterms:subject ?cat . 
    ?page ?key ?value . 

    FILTER(
    regex(?cat, "category:Amusement_parks_in_the_Netherlands") && 
    ?key = foaf:depiction 
) 

} 

하지만 결과는 0입니다. 여기를 참조하십시오 : SNORQL query

최소한이 페이지를 반환해야합니다 : http://dbpedia.org/page/Duinrell (조건과 일치하기 때문입니다).

아이디어가 있으십니까?

답변

6

검색어에 몇 가지 문제가 있습니다. 우선, URI를 비교할 때 정규 표현식을 사용하지 마십시오. 대신에 :

regex(?cat, "category:Amusement_parks_in_the_Netherlands") 

사용 :

?cat = <http://dbpedia.org/resource/category:Amusement_parks_in_the_Netherlands> 

둘째 : 더블린 코어 네임 스페이스 접두사가 잘못된 것 같습니다. 속성 dcterms:subject을 쿼리하고 쿼리에서 접두사 dcterms이 네임 스페이스 http://dublincore.org/2010/10/11/dcterms.rdf#에 매핑됩니다. 그러나 DBPedia의 실제 속성은 http://purl.org/dc/terms/subject이므로 네임 스페이스 접두사는 http://purl.org/dc/terms/으로 매핑되어야합니다.

+0

감사합니다. ? cat = ... expression은? cat에 여러 값이있는 경우에도 작동합니까? 각 페이지는 둘 이상의 범주를 가질 수 있습니다. – Alp

+1

@Alp, 예, 쿼리 패턴은 범주 중 적어도 하나가 특정 값을 갖는 페이지와 일치합니다. –

+0

감사합니다 그것은 매력처럼 작동합니다! – Alp

관련 문제