2012-01-21 48 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 
) 

} 

但它返回零結果。看到這裏: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有多個值時,cat?...表達式是否也可以工作?每個頁面可以有多個類別。 – Alp

+1

@Alp,是的,查詢模式將匹配至少有一個類別具有該特定值的任何頁面。 –

+0

感謝它的魅力! – Alp