0

我有以下查询:

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 中查询它时,它会拉出一个长列表。请参阅永久链接。我只想要一个城市的个人纬度/经度。没关系,我只想要一个独特的。

另外,谁能告诉我为什么这在 Snorql 中不起作用?谢谢。

4

1 回答 1

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 结果

于 2013-06-24T02:06:02.327 回答