2012-07-06 55 views
3

我想獲得的列表:查詢DBpedia的要求兩類的發源地在SPARQL

人A,A的發源地,人B,B

的發源地,其中的發源地是一個城市。

用戶A和用戶B之間的關係是,人是一個「影響」的人B.到目前爲止我的代碼如下:

SELECT ?person ?birthplace ?influenced ?birthplace2 
WHERE { 
?person a <http://dbpedia.org/ontology/Person> . 
?person dbpedia2:placeOfBirth ?birthplace . 
?person <http://dbpedia.org/ontology/influenced> ?influenced. 
?person dbpedia2:placeOfBirth ?birthplace2 . 
?influenced a <http://dbpedia.org/ontology/Person>. 
?country rdf:type dbpedia-owl:Country . 
FILTER (str(?birthplace2) = str(?country)) 
FILTER (str(?birthplace) = str(?country)) 
} 

在我做全國的時刻,因爲這是唯一的這作品。

目前,這只是給了我兩列與相同的出生地。它沒有顯示受影響的人的出生地。

理想我希望每個出生的城市的緯度和經度爲好,如:

人A,A,緯度,經度的發源地,人B,B,緯度的發源地,龍

但是這可能太多要問。對不起,我是SPARQL的新手。

回答

3

在你的查詢您有:

?person dbpedia2:placeOfBirth ?birthplace . 
?person <http://dbpedia.org/ontology/influenced> ?influenced. 
?person dbpedia2:placeOfBirth ?birthplace2 . 

它說,?person出生在兩個?birthplace?birthplace2。我想你的意思是:

?person dbpedia2:placeOfBirth ?birthplace . 
?person <http://dbpedia.org/ontology/influenced> ?influenced. 
?influenced dbpedia2:placeOfBirth ?birthplace2 . 

至於得到lat和長各城市的,現在DBpedia的下跌,所以我可以不看城市資源,看看他們是如何映射到地理座標。但是,一旦dbpedia備份完畢,您可以執行SPARQL描述查詢:

describe <http://dbpedia.org/... rest of resource URI> 

並查看返回的內容。這將告訴你哪些謂詞需要使用拔出的位置。要注意的是,如果經/緯度信息丟失,你不會看到這個城市的結果,除非你把一個SPARQL optional條款選擇了位置查詢模式的一部分。

更新

OK,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 . 

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

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

更新2

查詢工作對我來說在dbpedia/iSparql(這裏有一個perma-link):

iSparql results

更新3

限制只有城市:

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

感謝。我可以得到一份城市名單,並將其填入谷歌地圖,以便拉出我認爲的經度和緯度。這可能會得到更完整的清單。 – Griff 2012-07-07 06:05:12

+0

這不行,很抱歉。 – Griff 2012-07-07 06:15:56

+0

我在http://dbpedia.org/snorql/中試過,但沒有奏效。你在哪找到相應的請求是否可用? – Griff 2012-07-07 16:33:47