2012-01-29 85 views
1

我正在學習如何創建SPARQL查詢。目前,我正在使用Dbpedia數據集。我的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 skos: <http://www.w3.org/2004/02/skos/core#> 

SELECT ?name ?country WHERE { 
?name rdf:type <http://dbpedia.org/ontology/Airport>; 
?name rdf:type <http://dbpedia.org/ontology/Country> 
} 
LIMIT 20 

我仍然感到困惑的建設SPARQL查詢尤其是資源和RDF圖。

我需要什麼是上述查詢的錯誤?

感謝

回答

6

你正在尋找的查詢是這樣的:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 

SELECT DISTINCT ?airport ?label WHERE { 
?airport rdf:type <http://dbpedia.org/ontology/Airport>; 
     rdfs:label ?label; 
     dbpedia-owl:location <http://dbpedia.org/resource/Canada> . 
} 

此查詢但不會返回太多結果,你會是更好的東西,如:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 

SELECT DISTINCT ?airport ?label WHERE { 
?airport rdf:type <http://dbpedia.org/class/yago/AirportsInOntario> ; 
rdfs:label ?label . 
} 

您的初始查詢中存在各種錯誤,這意味着您應該更好地理解SPARQL。你需要修改你構建三重模式的方式。我建議你看看下面的教程:

http://www.cambridgesemantics.com/2008/09/sparql-by-example/

而且你會發現探索SPARQL查詢極大幫助:

exploratory SPARQL queries?

0

您的查詢,目前要求的對象(資源)有類型的機場和有類型的國家。不用說,沒有結果。

您查詢也要求?國家這是完全未定義的。

查看msalvadores的答案是一個正確的例子...