如何在一个城市中为多个选项选择唯一的纬度和经度?

时间:2012-07-09 04:17:06

标签: latitude-longitude geo dbpedia

我有以下查询:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>

SELECT DISTINCT ?person1 ?birthplace1 ?person2 ?birthplace2 
                ?lat1 ?long1 ?lat2 ?long2
WHERE 
{
  ?person1 a dbpedia-owl:Person ;
           dbpedia-owl:birthPlace ?birthplace1 ;
           dbpedia-owl:influenced ?person2 .
  ?person2 dbpedia-owl:birthPlace ?birthplace2 .

  ?birthplace1 a dbpedia-owl:City .
  ?birthplace2 a dbpedia-owl:City .

  optional {
    ?birthplace1 geo:lat ?lat1 .
    ?birthplace1 geo:long ?long1 .

    ?birthplace2 geo:lat ?lat2 .
    ?birthplace2 geo:long ?long2 .
   }
}

当我在iSparql中查询它时,它会拉出一个长列表。见Perma-Link。我只想要一个城市的单独纬度/长度。无论哪一个,我只想要一个独特的。

此外,任何人都可以告诉我为什么这在Snorql中不起作用?感谢。

1 个答案:

答案 0 :(得分:0)

您需要GROUP您的结果BY人员和出生地,然后对经度和纬度值进行抽样。这只需要对您的SPARQL查询稍作更改。现在有

GROUP BY ?person1 ?birthplace1 ?person2 ?birthplace2

位于底部,纬度和经度的投影形式包括SAMPLE

SELECT DISTINCT ?person1 ?birthplace1 ?person2 ?birthplace2 
                (SAMPLE(?lat1) as ?lat1) (SAMPLE(?long1) as ?long1)
                (SAMPLE(?lat2) as ?lat2) (SAMPLE(?long2) as ?long2)

以下是整个查询:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>

SELECT DISTINCT ?person1 ?birthplace1 ?person2 ?birthplace2 
                (SAMPLE(?lat1) as ?lat1) (SAMPLE(?long1) as ?long1)
                (SAMPLE(?lat2) as ?lat2) (SAMPLE(?long2) as ?long2)
WHERE 
{
  ?person1 a dbpedia-owl:Person ;
           dbpedia-owl:birthPlace ?birthplace1 ;
           dbpedia-owl:influenced ?person2 .
  ?person2 dbpedia-owl:birthPlace ?birthplace2 .

  ?birthplace1 a dbpedia-owl:City .
  ?birthplace2 a dbpedia-owl:City .

  optional {
    ?birthplace1 geo:lat ?lat1 ;
                 geo:long ?long1 .

    ?birthplace2 geo:lat ?lat2 ;
                 geo:long ?long2 .
   }
}
GROUP BY ?person1 ?birthplace1 ?person2 ?birthplace2

SPARQL results