2016-11-29 106 views
0

對於我的申請,我想獲得以色列大部分住區(特拉維夫,哈弗等)的名稱和地理座標。從DBpedia獲取以色列的所有住區座標

我的想法是從DBpedia中獲取它(查詢英文頁面對我來說是足夠的)。

我嘗試此查詢:

SELECT distinct ?subject AS ?mainSubject ?o1 AS ?name ?o2 AS ?point ?o3 AS ?country 
WHERE {?subject ?property <http://dbpedia.org/ontology/PopulatedPlace>. 
?subject <http://xmlns.com/foaf/0.1/name> ?o1. 
?subject <http://www.georss.org/georss/point> ?o2. 
?subject <http://dbpedia.org/ontology/country> ?o3. 
filter (contains(str(?o3),"Israel")) } 

,但我只得到了幾個結果。

例如我不明白:

更好的查詢任何想法?

謝謝。

回答

2

您無法得到您想要的結果,因爲它們沒有您請求的georss信息。你可以通過OPTIONAL從句來完成。

SELECT distinct ?subject AS ?mainSubject ?o1 AS ?name ?o2 AS ?point ?o3 AS ?country WHERE { 
    ?subject ?property <http://dbpedia.org/ontology/PopulatedPlace>. 
    ?subject <http://xmlns.com/foaf/0.1/name> ?o1. 
    OPTIONAL{?subject <http://www.georss.org/georss/point> ?o2.} 
    ?subject <http://dbpedia.org/ontology/country> ?o3. 
    filter (contains(str(?o3),"Israel")) } 

。另一方面,代替過濾器,你可以直接把以色列的資源:

SELECT distinct ?subject AS ?mainSubject ?o1 AS ?name ?o2 AS ?point WHERE { 
    ?subject ?property <http://dbpedia.org/ontology/PopulatedPlace>. 
    ?subject <http://xmlns.com/foaf/0.1/name ?o1. 
    OPTIONAL{?subject <http://www.georss.org/georss/point> ?o2.} 
    ?subject <http://dbpedia.org/ontology/country> <http://dbpedia.org/resource/Israel>. }