2013-03-28 128 views
0

我想获取包含经度和纬度的国家/地区。目前,我有以下这些工作的查询,DBpedia,获取具有经纬度的网站的国家/地区

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

现在,我怎样才能得到它包含这个纬度和经度使用DBpedia的国家?

+1

您不应在'SELECT'子句中的变量之间使用逗号,如http://stackoverflow.com/questions/15680198/error-in-sparql-query中所述。 – 2013-03-29 12:21:13

回答

2

如果你已经拥有的资源(Taj_Mahal),那么你可以使用此查询:

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} . 
} 

run query

如果你只有latlog,您可以使用此查询:

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') 
} 

run query

请注意,但是,如果资源(泰姬陵在这种情况下)具有country,locationlogmapin属性设置此查询工作。这并非所有地方的情况。

+0

我很困惑,对于很多地方来说,经度和纬度属性来自不同的命名空间,例如,对于这个资源http://dbpedia.org/page/Kaaba,它没有dbpprop:latitude但是geo:lat,我们如何处理这个问题。该解决方案是否执行该属性的联合,以便选择可用的联合? – Noor 2013-03-29 12:33:48

+0

该资源具有'dbpprop:latitude'和'dbpprop:longitude'属性(尽管值不如'geo:lat'和'geo:lon'中的值)。你可以尝试'{?target geo:lat ;地理位置:lon } UNION {?target dbpprop:latitude ; dbpprop:经度}'。 – 2013-03-29 16:13:26

+0

我只是好奇一件事,为什么它是从不同的命名空间使用相同的属性? – Noor 2013-03-30 08:33:38