2016-11-29 40 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>. }