Rdf DBpedia,获取具有纬度和经度的站点所在国家/地区

Rdf DBpedia,获取具有纬度和经度的站点所在国家/地区,rdf,latitude-longitude,sparql,dbpedia,Rdf,Latitude Longitude,Sparql,Dbpedia,我想得到包含纬度和经度的国家。目前,我有下面的查询,它可以工作 SELECT DISTINCT ?lat,?long,?place WHERE { :Taj_Mahal dbpprop:latitude ?lat . :Taj_Mahal dbpprop:longitude ?long . } 现在,如何使用dbpedia获取包含此纬度和经度的国家?如果您已经拥有资源(泰姬陵),则可以使用以下查询: SELECT DISTINCT ?lat ?long (str(?place) as ?pla

我想得到包含纬度和经度的国家。目前,我有下面的查询,它可以工作

SELECT DISTINCT ?lat,?long,?place WHERE {
:Taj_Mahal dbpprop:latitude ?lat .
:Taj_Mahal dbpprop:longitude ?long .
}

现在,如何使用dbpedia获取包含此纬度和经度的国家?

如果您已经拥有资源(泰姬陵),则可以使用以下查询:

SELECT DISTINCT ?lat ?long (str(?place) as ?place) ?country1 ?country2 
  WHERE {
  :Taj_Mahal dbpprop:latitude ?lat .
  :Taj_Mahal dbpprop:longitude ?long .
  :Taj_Mahal dbpedia2:location ?place .
  OPTIONAL {:Taj_Mahal dbpedia2:country ?country1} .
  OPTIONAL {:Taj_Mahal dbpedia2:locmapin ?country2} .
}
SELECT DISTINCT str(?what) as ?what str(?place) as ?place ?country1 ?country2   
  WHERE {
  ?target dbpprop:latitude 27 .
  ?target dbpprop:longitude 78 .
  ?target dbpedia2:location ?place .
  ?target rdfs:label ?what .
  OPTIONAL {?target dbpedia2:country ?country1} .
  OPTIONAL {?target dbpedia2:locmapin ?country2} .

  FILTER (lang(?what) = 'en')
}

如果只有
lat
log
,则可以使用此查询:

SELECT DISTINCT ?lat ?long (str(?place) as ?place) ?country1 ?country2 
  WHERE {
  :Taj_Mahal dbpprop:latitude ?lat .
  :Taj_Mahal dbpprop:longitude ?long .
  :Taj_Mahal dbpedia2:location ?place .
  OPTIONAL {:Taj_Mahal dbpedia2:country ?country1} .
  OPTIONAL {:Taj_Mahal dbpedia2:locmapin ?country2} .
}
SELECT DISTINCT str(?what) as ?what str(?place) as ?place ?country1 ?country2   
  WHERE {
  ?target dbpprop:latitude 27 .
  ?target dbpprop:longitude 78 .
  ?target dbpedia2:location ?place .
  ?target rdfs:label ?what .
  OPTIONAL {?target dbpedia2:country ?country1} .
  OPTIONAL {?target dbpedia2:locmapin ?country2} .

  FILTER (lang(?what) = 'en')
}


但是,请注意,如果资源(在本例中为泰姬陵)设置了
country
location
logmapin
属性,则此查询有效。并非所有地方都是如此。

您不应该在
SELECT
子句中的变量之间使用逗号,如中所述。我有一个困惑,对于许多地方,latitude和longitude属性来自不同的名称空间,例如,对于这个资源,它没有dbpprop:latitude,但是geo:lat,我们如何处理这个问题。解决方案是否执行属性的并集以选择可用的属性?该资源确实具有
dbpprop:latitude
dbpprop:longitude
属性(尽管这些值不如
geo:lat
geo:lon
中的值精确)。您可以尝试
{?target geo:lat;geo:lon}UNION{?target dbpprop:latitude;dbpprop:longitude}
。我只是好奇一件事,为什么在不同的命名空间中使用相同的属性???
dbpprop:…
会自动为信息框中的每个字段创建,但是
geo:lat
geo:lon
在链接数据世界中几乎无处不在。因此,为了兼容性,为纬度和经度值添加这些属性是有意义的。