SPARQL
dbpedia
競馬
有馬記念

DBpediaを使って、過去の有馬記念勝ち馬の毛色を調べる

はじめに

授業で、Linked Open Dataについての課題があり、DBpediaを使えばスクレイピングなどしなくてもそこそこのデータを持ってこれるのでは、とのことで、来たる有馬記念に向けて、過去の有馬記念の勝ち馬の毛色を調べて見ました。

DBpediaとは

Wikipediaの情報をRDFという、コンピュータが識別しやすい形で抽出するプロジェクトのこと。

夏目漱石を例に、DBpediaをみてみると 夏目漱石 -dbpedia
このように、

Property value
prop-ja:birthDate --02-09
dbpedia-owl:birthPlace dbpedia-ja:武蔵国

出生地、誕生日などが扱いやすいように抽出されています。

さて、これを使って、過去の有馬記念の勝ち馬の毛色を調べて見ました。

投げたクエリー

select distinct ?color_name (count(?color_name) AS ?color) where {
  {
    ?name prop-ja:wikiPageUsesTemplate template-ja:有馬記念勝ち馬.
  }

  ?name rdfs:label ?label ;
    prop-ja:色 ?color_name.
} ORDER BY DESC(?color)

結果

color_name color
http://ja.dbpedia.org/resource/鹿毛 27
http://ja.dbpedia.org/resource/黒鹿毛 11
http://ja.dbpedia.org/resource/栗毛 10
http://ja.dbpedia.org/resource/芦毛 2
http://ja.dbpedia.org/resource/青鹿毛 2
http://ja.dbpedia.org/resource/青毛 1
http://ja.dbpedia.org/resource/栃栗毛 1

なるほど、鹿毛が多い...っと、となるのですが、そもそも競走馬の毛色は何色が多いの?鹿毛が多いのでは?と思って調べて見ました。

select distinct ?color_name (count(?color_name) AS ?color) where {
  {
    ?name dbpedia-owl:wikiPageWikiLink category-ja:日本生産の競走馬.
  } union {
     ?name dbpedia-owl:wikiPageWikiLink category-ja:日本調教の競走馬.
  }

  ?name rdfs:label ?label ;
    prop-ja:色 ?color_name.
} ORDER BY DESC(?color)
color_name color
http://ja.dbpedia.org/resource/鹿毛 1575
http://ja.dbpedia.org/resource/栗毛 717
http://ja.dbpedia.org/resource/黒鹿毛 631
http://ja.dbpedia.org/resource/芦毛 185
http://ja.dbpedia.org/resource/青鹿毛 132
http://ja.dbpedia.org/resource/青毛 58
http://ja.dbpedia.org/resource/栃栗毛 37
http://ja.dbpedia.org/resource/白毛 14
http://ja.dbpedia.org/resource/馬の毛色 6
"鹿毛"@ja 2
"不明"@ja 1
"赤毛(鹿毛)"@ja 1

はい、推測の通り、そもそも鹿毛が多いようでした。

MySQLでこうやりたいけど、SPARQLだとどうやるの...となってちょっとイライラしてしまいますが、スクレイピングなどしなくても興味のあるデータがさらっととってこれるので割と面白いのでは、と思いました:slight_smile: