2017-03-21 76 views
0

我剛學SPARQL和我有以下表格:如何將一些查詢從sql轉換爲sparql?

國家,歐洲國家,城市和首都

我想知道如何使下面的查詢,因爲我不明白他們...

1)哪個國家有城市「巴黎」作爲首都。 2)打印所有歐洲國家 3)打印所有國家和theis首都。

非常感謝您提前。

+0

在RDF的,你沒有表! RDF數據集由一組三元組構成。請閱讀RDF教程和SPARQL教程。然後您可以考慮RDF數據集的模式,最後可以根據您的模式進行SPARQL查詢。 – AKSW

+0

如果您來自SQl世界,除了@AKSW的建議之外,瞭解RDF的一種可能的好方法是查看[R2RML規範](https://www.w3.org/TR/r2rml/) 。 –

回答

1

這就是說,DBpedia提供了類似於描述的信息,並且是一個很好的操場。要查詢它,http://yasgui.org(這是一個更好的sparql編輯器)或http://factforge.net/sparql(這是我們自己的集成,幾個月前,但有一些額外的好東西)。

哪個國家的城市 「巴黎」 作爲資本

select * { 
    ?x a dbo:Country; dbo:capital dbr:Paris 
} 

yasgui結果會讓你大吃一驚:

dbr:Bourbon_Restoration 
dbr:France 
dbr:Francia 
dbr:French_Fifth_Republic 
dbr:Kingdom_of_France 
dbr:Office_International_d'Hygiène_Publique 
dbr:Second_French_Empire 
dbr:West_Francia 

我瞭解所有的歷史演義,但DBR:Office_International_d'Hygiène_Publique有點震驚。其原因是,它是一個國際組織(uses Infobox Former International Organization,它redirects tohttps://en.wikipedia.org/wiki/Template:Infobox_former_country,其中「目前正在與模板合併:信息框的國家。」見http://mappings.dbpedia.org/index.php/Cleaning_up_Countries

factforge回報甚至鏈接數據集的結果(所有這些的意思只是法國) :

geodata:3017382/ 
http://ontologi.es/place/FR 
http://psi.oasis-open.org/iso/3166/#250 
leaks:country-FRA 
wfr:fr 

所有歐洲國家

這是更好,因爲剛好有一個維基百科類別:

select * { 
    ?x a dbo:Country; dct:subject dbc:Countries_in_Europe 
} 

yasgui

所有國家及其首都

select * { 
    ?x a dbo:Country; dbo:capital ?capital 
} 

這將返回一串歷史的國家和首都,再次一些國際組織,例如

League_of_Nations 
International_Authority_for_the_Ruhr 
Japanese_occupation_of_British_Borneo 

SO那麼,你可能會有更好的運氣與維基數據(https://query.wikidata.org/)。在https://twitter.com/search?q=wikidatafacts%20country你可以找到一些有趣的查詢與國家有關。

國家和首都對維基數據

select ?country ?countryLabel ?city ?cityLabel { 
    ?country wdt:P36 ?city 
    filter exists {?country wdt:P31/wdt:P279* wd:Q6256} 
    SERVICE wikibase:label { 
     bd:serviceParam wikibase:language "en,pl,ru,es" . 
    } 
} order by ?countryLabel 

它使用了一系列的QnnPnn,但你可以將它們解碼,當你鼠標懸停。

  • 我怎麼會發現wdt:P36的意思是「資本」? Search for property:capital
  • 爲什麼filter exists?因爲一個國家可能有幾個wd:Q6256「國家」的子類型,如果我在主查詢中使用它,它會在每個國家返回幾個結果。這樣它只返回一個。

地圖

你也可以很容易地display it on a map

#defaultView:Map 
select ?country ?countryLabel ?city ?cityLabel ?coords { 
    ?country wdt:P36 ?city 
    filter exists {?country wdt:P31/wdt:P279* wd:Q6256} 
    ?city wdt:P625 ?coords 
    SERVICE wikibase:label {bd:serviceParam wikibase:language "en,pl,ru,es"} 
} 

看到一對夫婦的鏡頭https://twitter.com/valexiev1/status/844870994942603264