我有以下查询:
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中不起作用?感谢。
答案 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