タンゴ探査器を構築する
Wikidataには,音楽を含む実に多様なテーマについての情報が保存されており,このデータのクエリのためのSPARQLエンドポイントが提供されている.
SPARQLを使ってタンゴの楽曲についての情報を取り出し,クエリが行えるDatasetを構築する.
GraphStoreをロードし,Wikidata vocabularyを使うためのユーティリティを導入する.
関連する実体(「タンゴ」の下の楽曲リスト)と取り出すデータ(作曲者,作詞者,録音)を定義するさまざまなサブクエリを導入する.
存在しないかもしれない部分(例えば歌詞がない曲もある)を任意的なものとして,クエリの各部分を組み合せる.
曲によっては,作曲者,作詞者,あるいは録音が複数あるものもある.つまり,作曲者,作詞者,録音のさまざまな組合せで同じ曲が複数行に渡ることもあるのである.次の要領でアグリゲーション (SPARQLAggregate) を使って結果を折りたたむ.まず,「楽曲」または「録音」でグループ化する.ほとんどの場合は1曲につき解は1つになるが,1曲に複数の録音がある場合は別々の結果としてリストされる.集約関数group_concatを使って作曲家と作詞家を組み合せる.セパレータには「;」を使う.
アグリゲーションを使ってクエリを構築し,実行する.
Datasetを作成する(言語のタグは関係ないのでRDFStringラッパーを削除する).
Datasetには豊かなクエリ言語がある.連続する引数に適用されると,各引数が対応するレベルで適用される「クエリ演算子」とみなされる.最初の例では,最初のレベル(All)では「何もしない」で,2番目のレベルで「songLabel」(楽曲ラベル)と「composers」(作曲者)を抽出する.
Selectは「composers」(作曲者)にGardelが含まれているものを選択し,「songLabel」(楽曲ラベル)と「lyricists」(作詞者)を表示する.
「audio」(録音)がある曲を探してブラウザで曲が開けるような列を追加する.