本書の目的
SPARQL(スパークル)は、RDF(Resource Description Framework)で記述されたデータを検索・取得するためのクエリ言語です。W3Cによって標準化されており、Linked Open Data(LOD)の世界における「共通語」ともいえる存在です。
Linked Open Dataは、Web上で構造化されたデータを相互にリンクさせ、機械的に処理可能な形で公開する仕組みです。Wikidata、DBpedia、ジャパンサーチ、国立国会図書館をはじめ、世界中の文化機関や公共機関がLinked Open Dataとしてデータを公開しており、SPARQLを使うことでこれらの膨大なデータに自由にアクセスできます。
しかし、SPARQLやLinked Open Dataに関する体系的な日本語の技術書はまだ十分ではありません。W3Cの仕様書は英語で書かれており、初学者がRDFの概念からSPARQLの実践的なクエリ作成までを一貫して学べる資料は限られています。
本書は、筆者がこれまでに実際のプロジェクトや研究活動を通じて蓄積してきた知見をもとに、Linked Open Dataの概念理解からRDFのデータモデル、SPARQLクエリの基礎と応用、Wikidataやジャパンサーチといった実在するSPARQLエンドポイントの活用、さらにはデータのモデリングと公開までを体系的に学べる実践入門ガイドです。各章では、筆者がZenn等で公開してきた記事で紹介した具体的な事例や知見を織り交ぜながら解説を進めます。読者が本書を通じて、LODを「知っている」状態から「使いこなせる」状態へとステップアップすることを目指しています。
対象読者
本書は、以下のような方々を主な対象読者として想定しています。
デジタルヒューマニティーズ研究者
人文学研究においてデータ駆動型のアプローチを取り入れたい方。筆者自身、「教科書の中の源氏物語LOD」や学習指導要領LODなど、人文学データのLinked Data活用に取り組んできました。複数の知識ベースを横断的に検索し、研究データをLinked Dataとして構造化・公開したい方に向けて、具体的な手法と実例を示します。
図書館・博物館・文書館の専門職員
所蔵資料のメタデータをLinked Open Dataとして公開することを検討している方。既存のメタデータをRDFに変換し、SPARQLエンドポイントを通じて提供するための技術的な基礎を学びたい方に、その方法論と実装手順を解説します。筆者はOmeka Sへの語彙登録やVirtuoso・Dydraを用いたRDFストア構築など、実務的なノウハウも蓄積しています。
Webエンジニア・開発者
セマンティックWebやナレッジグラフに興味がある方。SPARQLを用いたデータ取得やアプリケーション開発に携わりたい方に向けて、クエリの書き方からAPIとしての活用まで、技術的な実装を具体的に説明します。筆者が開発・公開しているSnorqlなどのSPARQLクライアントの実装経験も踏まえています。
オープンデータに関心のある方
行政データや学術データのオープン化に関わる方。データの相互運用性を高めるためのLinked Data化の意義と具体的な手法を理解したい方に、基礎から応用までを体系的に提供します。
データサイエンスを学ぶ学生
情報学、図書館情報学、デジタルヒューマニティーズなどを学ぶ学生の方。SPARQLとLinked Open Dataの基礎を体系的に学ぶことで、卒業研究やプロジェクトに活用できるようになります。
本書で学べること
本書を読み終えた時点で、読者は以下のことができるようになります。
- Linked Open Dataの概念と意義を説明し、5つ星オープンデータの各段階を理解できる
- RDFのトリプルモデルを理解し、Turtle構文でデータを記述できる
- SPARQLの基本構文を習得し、SELECT・FILTER・OPTIONALなどを用いたクエリを書ける
- サブクエリ、プロパティパス、連合クエリなどの高度なSPARQL機能を活用できる
- Wikidata Query Serviceを用いて実践的なデータ取得・分析ができる
- ジャパンサーチのSPARQLエンドポイントからデジタルアーカイブのメタデータを取得できる
- 既存語彙を再利用した適切なデータモデリングができる
- トリプルストアを構築し、自身のデータをLinked Open Dataとして公開できる
- SPARQLクエリの結果をグラフや地図で可視化できる
本書の構成
本書は全12章で構成されており、基礎から応用へと段階的に進む構成になっています。
第I部: 基礎編(第1章〜第4章)
Linked Open Dataとは何か、その概念と全体像を把握するところから始めます。RDFのデータモデルを理解し、Turtle構文でデータを記述する方法を学びます。
- 第1章「Linked Open Dataとは」: LODの定義、5つ星オープンデータ、セマンティックWeb
- 第2章「RDFの基礎」: トリプルモデル、URI、リテラル、語彙
- 第3章「Turtle構文入門」: Turtleの書き方、各シリアライゼーション形式の比較
第II部: SPARQLクエリ編(第5章〜第6章)
SPARQLの基本構文から高度なクエリテクニックまでを習得します。実際のエンドポイントで動作するクエリ例を豊富に掲載しています。
- 第4章「SPARQL基礎」: SELECT, WHERE, FILTER, OPTIONAL等の基本構文
- 第5章「SPARQL応用」: サブクエリ、プロパティパス、連合クエリ等の高度な機能
第III部: 実践活用編(第7章〜第8章)
Wikidataやジャパンサーチなど、実在するSPARQLエンドポイントを活用した実践的なデータ取得の方法を学びます。
- 第6章「Wikidataの活用」: Wikidata Query Serviceを用いた実践クエリ
- 第7章「ジャパンサーチSPARQL」: ジャパンサーチのデータモデルとクエリ
第IV部: データ設計・公開編(第9章〜第10章)
自身のデータをLinked Open Dataとしてモデリングし、公開するための知識を学びます。
- 第8章「データモデリング」: オントロジー設計、既存語彙の再利用
- 第9章「LODの公開」: トリプルストアの構築とSPARQLエンドポイントの運用
第V部: 応用編(第11章〜第12章)
SPARQLクエリ結果の可視化手法と、さらなる学習のためのリソース集を提供します。
- 第10章「データの可視化」: グラフ、地図、タイムラインでの可視化
- 第11章「リソース集」: 学習リソース、ツール、エンドポイント一覧
筆者の関連記事について
本書の各章では、筆者がこれまでに公開してきたSPARQL・RDF・LOD関連の記事を随所で参照しています。記事では、本書で解説する内容をさらに掘り下げた具体的な手順やトラブルシューティングの知見を共有しています。各章末の「関連記事」セクションにまとめていますので、興味のあるトピックについてはぜひ記事も合わせてお読みください。
前提知識
本書を効果的に読み進めるために、以下の基礎知識があることを前提としています。
- HTMLの基礎: Webページの基本的な構造を理解していること
- URIの概念: URLの構造とWebリソースの識別方法について基本的な理解があること
- JSONの読み書き: JSON-LDの理解にJSONの構造を把握できることが望ましい
- データベースの基本概念: SQLの基本的な知識があると、SPARQLの理解がスムーズになるが必須ではない
プログラミングの経験は必須ではありません。SPARQLは宣言的なクエリ言語であり、SQLに似た構文を持つため、プログラミング未経験の方でも十分に取り組むことができます。
本書の読み方
各章は基本的に独立して読めるように構成していますが、RDFやSPARQLが初めての方は第1章から順に読み進めることをお勧めします。SPARQLの基礎知識がある方は、第6章のWikidata活用や第7章のジャパンサーチから読み始めても構いません。
各章では、概念の説明に加えて、実際のSPARQLエンドポイントで動作するクエリ例を豊富に掲載しています。ぜひ、Wikidata Query Service(https://query.wikidata.org/)やジャパンサーチSPARQLエンドポイントにアクセスして、手を動かしながら読み進めてください。また、筆者が以前紹介したように、Google Colabを使えば環境構築なしでSPARQLクエリをPythonから実行できます。詳細はGoogle Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例をご覧ください。
それでは、Linked Open Dataの世界を一緒に探求していきましょう。