TownBlogLODとSPARQL入門(1)この記事は1年以上前に書かれました。内容が古くなっている可能性がありますのでご注意下さい。ビジュアライゼーション(1)で使用したオープンデータはExcel形式のファイルだったため、CSV形式に変換する必要がありました。ExcelやCSVでは、データは表形式で表現されます。Framework)グラフと呼ばれる、主語(subject)と目的語(object)を述語(predicate)でリンクしたトリプル(triple)で表現します。吾輩は猫である「夏目漱石」が主語、「作品」が述語、「吾輩は猫である」が目的語です。1905というようなグラフができます。1つめのグラフでは、作品名は目的語でしたが、2つめのグラフでは主語になっています。1905というように、RDFグラフをリンクさせることができます。LODのデータ取得には、SPARQL(スパークル)というクエリ言語を使用します。関係モデルを対象とするSQLとは似て非なるものと考えた方が良さそうです。SPARQLクエリを受け付けるURIを、SPARQLエンドポイントと呼びます。SPARQLエンドポイントによっては、SPARQLクエリを入力するフォームが用意されていることがあります。Japaneseでは、http://ja.dbpedia.org/sparqlの入力フォームからSPARQLクエリを発行することができます。それでは、DBpediaのフォームを使ってSPARQLクエリを試してみましょう。10は、すべてのトリプルから、データを10件だけ取得します。*は、重複しないすべての結果を返します。.}WHERE節には、データを取得する際の条件を記述します。すべてが変数になっていますので、すべてのトリプルがヒットします。10で取得するデータを10件に制限しています(そうしないと、大変なことになってしまいます)。10とすると、主語だけを10件取得することができます。次に、主語が「フクジュソウ」のすべてのトリプルを取得してみましょう。WikipediaのリソースのURIは、DBpediaでは<http://ja.dbpedia.org/resource/リソース名>になりますので、フクジュソウは<http://ja.dbpedia.org/resource/フクジュソウ>です。今回は、件数を制限しなくても大丈夫です。フクジュソウを主語とするトリプルの、重複しないすべての述語と目的語のペアを取得できました。http://ja.dbpedia.org/resource/キンポウゲ科というデータがあり、フクジュソウがキンポウゲ科の植物であることが分かります。そこで、この述語と目的語を使用して、Wikipediaに掲載されているキンポウゲ科のすべての植物を調べてみることにします。今度は、主語だけが変数となります。.}クエリを実行すると、以下のような結果が得られます。残念なことに、植物名だけではなく「キンポウゲ科」や「オダマキ属」などの分類名まで取得してしまいました。ramosa”@jaという述語と目的語のペアがあります。そこで、http://ja.dbpedia.org/property/種を述語とするトリプルを持っていることを条件に加えれば良さそうです。今度は、キンポウゲ科の植物名のみを取得することができました。PREFIX句を用いると、URIの接頭辞をあらかじめ宣言しておくことにより、クエリの本体を簡潔に記述することができます。.}WHERE節で同じ主語が続くときは、行末をピリオドではなくセミコロンにすることで、次の行の主語を省略することができます。.}WHERE節が読みやすくなったと思います。