オープンデータ時代の標準Web API SPARQL

表紙画像

RDFとSPARQLを解説する、
日本語で初めてのリファレンス
となる解説本。

オープンデータのひろがりで話題となりつつあるセマンティック・ウェブについて紹介し、標準データモデルRDFと標準問い合わせ言語SPARQLを解説する日本語では初のリファレンスとなる解説本。本書は2013年にW3Cで仕様策定されたSPARQL 1.1に準拠して解説をしています。この本を読みながら試していくことで、RDF によるデータ統合と SPARQL 検索によるアプリケーション開発のための基本が身につきます。

  • 定価:電子版/1400円(税抜) 印刷版/2300円(税抜)
  • 販売開始日:2015年11月6日
  • 出版社:株式会社インプレスR&D(Impress R&D)
  • ISBNコード:ISBN978-4-8020-9043-8
Kindle版を購入 Kobo版を購入 iBooks版を購入 Google Play版を購入 Kinoppy版を購入 紙版を予約 (Amazon)
a

目次

  • 第1章 なぜSPARQLが必要なのか?

    1. オープンデータ運動の高まり
    2. データを公開・共有するための技術Linked Data
    3. SPARQLはクエリ言語

    第2章 SPARQLを支える技術

    1. SPARQLを学ぶ前に
    2. リソースと識別子
    3. RDF
    4. Turtle形式
    5. RDFSとOWL
    6. RDFストア
    7. SPARQLエンドポイント

    第3章 SPARQLの基本

    1. 初めてのSPARQL
    2. 検索対象のRDF
    3. 複数のトリプルパターンの指定
    4. 値による絞り込み(Filter)
    5. 必須ではないパターンの指定(Optional)
    6. パターンの結果の結合(UNION)
    7. 結果セットの操作(ORDER BY、DISTINCT、REDUCED、LIMIT、OFFSET)
    8. グループ化と集約関数(GROUP BY、HAVING、SUM、GROUP_CONCAT)
    9. 値のバインディング(BIND、VALUES)
    10. プロパティパス
    11. サブクエリ
    12. 複数のエンドポイントへの一括クエリ

    第4章 SPARQLの言語仕様とクエリ

    1. SPARQL1.1概要
    2. プロローグ
    3. クエリタイプ
    4. データセット句
    5. グループグラフパターン
    6. 解修飾子・VALUES句
    7. 組み込み関数

    第5章 アプリケーション開発

    1. SPARQLの結果形式
    2. RによるSPARQL検索と可視化
    3. JavaScriptによるSPARQL検索と可視化
    4. SPARQL検索によるデータ活用

    第6章 クックブック

    1. エンドポイントを調べるときの注意点
    2. エンドポイント全体のトリプルを調べる
    3. プロパティを調べる
    4. リソースが属するクラスを調べる
    5. 特定のクラスに属するリソースについて調べる
    6. プロパティの使用の有無と個数を調べる
    7. 目的語の値を調べる
    8. 検索結果を加工して利用する

    Appendix

    1. RDFストアの選定
    2. ARQ - SPARQLエンジン -
    3. Virtuoso - RDFストア -
    4. Stardog - RDFストア -
    5. rapper - RDFファイル形式変換ツール -
    6. RDFRefine - RDF生成サポートツール -
    7. Sgvizler - SPARQL結果の可視化ツール -
    8. YASGUI - SPARQLエディタ -
    9. Sparklis - クエリビルダ -

    著者紹介

    1. 加藤 文彦(かとう ふみひろ)
    2. 川島 秀一(かわしま しゅういち)
    3. 岡別府 陽子(おかべっぷ ようこ)
    4. 山本 泰智(やまもと やすのり)
    5. 片山 俊明(かたやま としあき)
a

正誤表

  • 当書籍について、現在以下の記述ミスが発見されております。 大変ご迷惑をおかけしますが、以下をご参照いただきますよう、 よろしくお願いいたします。
  • 2016年11月11日更新
  • サンプルコード:リスト5-4

  • DBpediaのデータ変更によりクエリを修正しました。
  • 誤:
  • ?s a yago:PrefecturesOfJapan ;
  • rdfs:label ?pref ;
  • dbpedia-owl:areaTotal ?area .
  • FILTER (lang(?pref) = 'en')
  • 正:
  • ?s a yago:WikicatPrefecturesOfJapan ;
  • rdfs:label ?pref ;
  • dbpedia-owl:areaTotal ?area .
  • FILTER (lang(?pref) = 'en')
  • FILTER (str(?pref) != 'Onjuku')
  • サンプルコード:リスト5-22

  • DBpediaのデータ変更によりクエリを修正しました。
  • 誤:
  • ?s a yago:PrefecturesOfJapan ;
  • rdfs:label ?label ;
  • dbpedia-owl:populationTotal ?population .
  • dbpedia-owl:areaTotal ?area .
  • FILTER (lang(?pref) = 'en')
  • 正:
  • ?s a yago:WikicatPrefecturesOfJapan ;
  • rdfs:label ?label ;
  • dbpedia-owl:populationTotal ?population .
  • dbpedia-owl:areaTotal ?area .
  • FILTER (lang(?pref) = 'en')
  • FILTER (str(?s) != 'http://dbpedia.org/resource/Onjuku')
  • ※なお、ダウンロード用サンプルプログラムは修正済みです。
  • 2016年6月8日更新
  • 164ページのサンプルコード:リスト5-19の11行目にMINUS句を挿入

  • 2駅間でお互いに"prop-ja:次の駅"を指すデータがあった場合にJavaScriptでエラーが発生するため、そのようなデータをMINUS句で省くように修正しました。
  • 誤:
  • ?parent prop-ja:次の駅 ?child .
  • ?parent rdfs:label ?parent_label .
  • 正:
  • ?parent prop-ja:次の駅 ?child .
  • MINUS {
  •   ?child prop-ja:次の駅 ?parent .
  • }
  • ?parent rdfs:label ?parent_label .
  • ※なお、ダウンロード用サンプルプログラムは修正済みです。
  • 2016年6月8日更新
  • 156ページのjsサンプルコード:リスト5-11 render関数の15行目

  • NULLチェックを追加しました。
  • 誤:row.append($("").text(item[this].value));
  • 正:
  • if (item[this] && item[this].value) {
  •   row.append($("").text(item[this].value));
  • } else {
  •   row.append($("").text(""));
  • }
  • ※なお、ダウンロード用サンプルプログラムは修正済みです。
  • 2016年6月8日更新
  • 42ページの図3-5 3-2.rqのクエリ結果

  • DBpedia Japaneseのデータ更新によりクエリで得られる結果が変わりました。
  • ※他にも結果が変わるクエリがいくつかありますが、特に混乱を招くこの部分だけ訂正を記載しています。
  • 前:company = http://ja.dbpedia.org/resource/オフィス北野
  •      number_of_employees = 33
  • 後:company = http://ja.dbpedia.org/resource/太田プロダクション
  •      number_of_employees = 50
  • 2016年5月2日更新
  • 188ページのサンプルファイル:リスト 6-17 6-17.rqの9行目

  • 誤:HAVING (COUNT (DISTINCT ?magazine) AS ?count) <= 2
  • 正:HAVING ((COUNT (DISTINCT ?magazine) AS ?count) <= 2)
  • ※なお、ダウンロード用サンプルプログラムは修正済みです。
a

サンプルコード

お問い合わせ