对于我的申请,我想获得以色列(特拉维夫,海地等)大部分定居点的名称和地理坐标。
我的想法是从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")) }
但我只得到了一些结果。
例如我没有得到:
任何更好查询的想法?
感谢。
答案 0 :(得分: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")) }
另一方面,您可以直接放置以色列的资源而不是FILTER:
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>. }