本章について
本章では、SPARQL・Linked Open Dataの学習をさらに深めるためのリソースをまとめます。主要なSPARQLエンドポイント、学習教材、ツール、コミュニティ情報を紹介するとともに、筆者のこれまでの関連記事を体系的に整理します。
主要なSPARQLエンドポイント一覧
国際的なエンドポイント
| データセット | SPARQLエンドポイント | 概要 |
|---|---|---|
| Wikidata | https://query.wikidata.org/sparql | ウィキメディアの自由な知識ベース |
| DBpedia | https://dbpedia.org/sparql | Wikipediaから抽出した構造化データ |
| DBpedia Japanese | https://ja.dbpedia.org/sparql | 日本語版DBpedia |
| Europeana | https://sparql.europeana.eu/ | 欧州デジタル文化遺産ポータル |
| Getty Vocabularies | http://vocab.getty.edu/sparql | ゲティ美術用語シソーラス |
| British Museum | https://collection.britishmuseum.org/sparql | 大英博物館コレクション |
| UniProt | https://sparql.uniprot.org/sparql | タンパク質配列データベース |
日本国内のエンドポイント
| データセット | SPARQLエンドポイント | 概要 |
|---|---|---|
| ジャパンサーチ | https://jpsearch.go.jp/rdf/sparql/ | 日本の文化資源統合ポータル |
| 国立国会図書館 | https://id.ndl.go.jp/auth/ndla | NDL典拠データ |
| CiNii Research | https://cir.nii.ac.jp/sparql | 学術情報データベース |
| DBpedia Japanese | https://ja.dbpedia.org/sparql | 日本語Wikipedia構造化データ |
筆者は、これらのエンドポイントの多くを実際に利用してきました。Snorqlを使えば複数のエンドポイントを素早く切り替えて探索できます。詳しくはSnorql — 複数の SPARQL エンドポイントを手軽に探索できるブラウザ UI を公開しましたをご覧ください。
エンドポイントの利用上の注意
SPARQLエンドポイントを利用する際は、以下の点に注意してください。
- レート制限: 短時間に大量のクエリを送信するとアクセスが制限される場合がある
- タイムアウト: 複雑なクエリは
LIMITを適切に設定する - 利用規約: 各エンドポイントの利用規約を事前に確認する
- 安定性: 実験的に公開されているエンドポイントは予告なく停止する場合がある
ツール
SPARQLエディタ・クライアント
| ツール | 種別 | 概要 |
|---|---|---|
| Wikidata Query Service | Web | Wikidata公式のクエリエディタ。可視化機能が充実 |
| YASGUI | Web/ライブラリ | SPARQLエディタのWebコンポーネント。多くのエンドポイントで採用 |
| Snorql | Web | 複数のSPARQLエンドポイントを切り替えて探索できるUI |
| SPARQLWrapper | Pythonライブラリ | PythonからSPARQLエンドポイントにアクセスするためのライブラリ |
筆者は以下の記事でこれらのツールの活用方法を紹介しています。
- ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる
- メディア芸術データベースのSPARQLエンドポイントをYasguiで使ってみる
- Snorql for Japan Searchのカスタマイズ方法の調査
- Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例
トリプルストア
| ツール | ライセンス | 概要 |
|---|---|---|
| Apache Jena Fuseki | Apache 2.0 | Javaベース。入門・中規模に適する |
| OpenLink Virtuoso | GPLv2(OSE版) | 高性能。DBpediaで採用 |
| GraphDB | Free版あり | 推論エンジン搭載。企業向け |
| Dydra | クラウドサービス | サーバ構築不要のクラウド型 |
| AllegroGraph | 商用(Free版あり) | 大規模データ対応 |
筆者の各トリプルストアに関する記事は以下のとおりです。
- Virtuoso: AWS EC2を用いたVirtuoso RDFストアの構築、[備忘録]Virtuosoの使い方、Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法
- Dydra: Pythonを使ってRDFデータをDydraに登録する、DydraへのAPI経由でのRDFデータ登録ガイド
- Fuseki: SPARQL クライアントを Apache Jena Fuseki に対応させるときにハマった 3 つのこと
- GraphDB: Ontotext GraphDBのデスクトップ版を使用した際の空きディスク容量不足への対処
- AllegroGraph: AllegroGraphを使ってみる
RDFデータ処理ツール
| ツール | 概要 |
|---|---|
| rdflib(Python) | PythonでRDFデータを操作するための標準ライブラリ |
| Apache Jena | Javaベースの RDFフレームワーク |
| EASY RDF | RDFフォーマットの変換ライブラリ |
| rapper(Raptor) | RDFフォーマットの変換ツール |
| JSON-LD Playground | JSON-LDの記述をインタラクティブに検証 |
筆者はEASY RDFを用いてJSON-LDのデータをRDF/XMLやTurtleに変換してみるで、EASY RDFを使った形式変換を紹介しています。
データ変換・作成ツール
| ツール/手法 | 概要 |
|---|---|
| OpenRefine + RDF Extension | CSVやExcelデータをRDFに変換するGUIツール |
| rdflib + Python | PythonスクリプトでCSV/ExcelからRDFを生成 |
| grlc | SPARQLクエリをGitHub経由でREST APIとして公開 |
| vsdx2rdf | VisioファイルからRDFを生成するライブラリ |
筆者の関連記事は以下のとおりです。
- ExcelからRDFを作成する
- Microsoft Visioを使ってRDFデータを作成する
- vsdxファイルからrdfファイルを作成するライブラリ
- grlc (git repository linked data API constructor)を試す
可視化ツール
| ツール | 概要 |
|---|---|
| Wikidata Query Service | 組み込みの可視化機能 |
| D3.js | JavaScriptのデータ可視化ライブラリ |
| Leaflet | JavaScriptの地図ライブラリ |
| Peripleo | Linked Dataの地理空間可視化 |
| matplotlib / folium | Pythonの可視化ライブラリ |
筆者はPeripleoを試すで地理空間データの可視化を、「ARC2によるRDFグラフの視覚化」をPythonで利用するでRDFグラフの構造可視化を紹介しています。
バリデーションツール
| ツール | 概要 |
|---|---|
| pySHACL | PythonのSHACLバリデーションライブラリ |
| Apache Jena SHACL | JenaのSHACLバリデーター |
筆者は以下の記事でバリデーションに関する知見を共有しています。
語彙・プラットフォーム関連
Omeka S
Omeka Sはデジタルアーカイブ構築プラットフォームであり、RDFの語彙に基づいたメタデータ管理が可能です。筆者は以下の記事でOmeka Sの活用方法を紹介しています。
- 【Omeka S Tips】既存の標準語彙の追加方法
- Omeka SにDC-NDL(国立国会図書館ダブリンコアメタデータ記述)を語彙として登録する
- Omeka SにPROV-Oオントロジーを登録する方法
- Omeka SにICA RiC-Oの語彙を登録する
- 【Omeka S モジュール紹介】Data Type RDF
- 【Omeka S モジュール紹介】Numeric Data Types:日付データに対する範囲検索を可能にする、など
Wikibase
Wikidataと同じソフトウェア基盤を使って自前のナレッジベースを構築できるWikibaseに関する記事は以下のとおりです。
学習リソース
公式仕様書・ドキュメント
| リソース | URL | 概要 |
|---|---|---|
| SPARQL 1.1 Query Language | https://www.w3.org/TR/sparql11-query/ | W3C標準SPARQLクエリ言語仕様 |
| RDF 1.1 Concepts | https://www.w3.org/TR/rdf11-concepts/ | RDFの概念と抽象構文 |
| RDF 1.1 Turtle | https://www.w3.org/TR/turtle/ | Turtle構文の仕様 |
| JSON-LD 1.1 | https://www.w3.org/TR/json-ld11/ | JSON-LDの仕様 |
| SHACL | https://www.w3.org/TR/shacl/ | シェイプ制約言語の仕様 |
| Wikidata SPARQL Tutorial | https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial | Wikidata公式SPARQLチュートリアル |
Wikidata Query Serviceの例題集
Wikidata Query Serviceには、コミュニティが作成した豊富な例題が用意されています。
主要な語彙・オントロジー一覧
| 語彙 | プレフィックス | URI | 用途 |
|---|---|---|---|
| RDF | rdf: | http://www.w3.org/1999/02/22-rdf-syntax-ns# | RDFの基本語彙 |
| RDFS | rdfs: | http://www.w3.org/2000/01/rdf-schema# | RDFスキーマ |
| OWL | owl: | http://www.w3.org/2002/07/owl# | Web Ontology Language |
| XSD | xsd: | http://www.w3.org/2001/XMLSchema# | データ型定義 |
| Dublin Core Terms | dcterms: | http://purl.org/dc/terms/ | メタデータ記述 |
| FOAF | foaf: | http://xmlns.com/foaf/0.1/ | 人物・関係の記述 |
| Schema.org | schema: | http://schema.org/ | Web全般の構造化データ |
| SKOS | skos: | http://www.w3.org/2004/02/skos/core# | 知識組織化体系 |
| SHACL | sh: | http://www.w3.org/ns/shacl# | データバリデーション |
| VoID | void: | http://rdfs.org/ns/void# | データセット記述 |
| PROV-O | prov: | http://www.w3.org/ns/prov# | 来歴(Provenance)記述 |
| BIBO | bibo: | http://purl.org/ontology/bibo/ | 書誌情報 |
| DCAT | dcat: | http://www.w3.org/ns/dcat# | データカタログ |
プレフィックスの検索にはprefix.ccを利用するで紹介しているprefix.ccが便利です。
コミュニティ
国際コミュニティ
- W3C: Web標準の策定元。RDF、SPARQL、OWL等の仕様を管理
- Wikidata コミュニティ: Wikidataのデータ品質向上やツール開発に取り組む国際コミュニティ
- LOD Cloud: LODデータセットの登録・管理を行うプロジェクト
日本国内のコミュニティ
- LODチャレンジ: 日本のLinked Open Dataの普及・推進を目的としたコンテスト
- Code4Lib JAPAN: 図書館とテクノロジーのコミュニティ
- デジタルアーカイブ学会: デジタルアーカイブの研究・実践に関する学会
- ジャパンサーチ利活用スキーマ: ジャパンサーチのデータ利活用に関する技術情報
筆者の全関連記事一覧
最後に、本書で参照した筆者の記事を分野別に整理します。
SPARQL・クエリ関連
- RDFストアのトリプル数を数える
- RDFストアのトリプル数を数える2: 共起頻度
- Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例
- grlc (git repository linked data API constructor)を試す
- Cultural JapanのRDFストアに格納されている展覧会情報の活用
RDF・データ変換関連
- ExcelからRDFを作成する
- Microsoft Visioを使ってRDFデータを作成する
- vsdxファイルからrdfファイルを作成するライブラリ
- EASY RDFを用いてJSON-LDのデータをRDF/XMLやTurtleに変換してみる
- Content Negotiationを使って、PythonでURIからRDFを取得する
- RDF、TurtleやJSON-LD、およびIIIFマニフェストファイルなどの関係を理解する
- RDFデータの追加と可視化に関する備忘録
- ORCIDのRDFを確認する
- prefix.ccを利用する
Wikidata関連
- Wikidataから人物の生没年を取得する
- https://wikidata.reconci.link/の一部を試す
- cwrcのwikidata-entity-lookupを試す
- wikibase.cloudでQuickStatementsを試す
- WikibaseSyncを試す
ジャパンサーチ関連
- ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる
- ジャパンサーチ利活用スキーマについて、最新の更新年ごとのアイテム数を視覚化する
- Japan Search利活用スキーマを使ったentity-lookupの試作
- Snorql for Japan Searchのカスタマイズ方法の調査
トリプルストア関連
- AWS EC2を用いたVirtuoso RDFストアの構築
- [備忘録]Virtuosoの使い方
- Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法
- Virtuosoが停止した際の再起動のためのコマンド
- コマンドラインから virtuoso を手動で再起動または停止する方法
- Amazon EC2に立てたVirtuosoのヘルスチェックを行う
- [RDF] URIにアクセスしたらSnorqlの画面にリダイレクトさせる設定
- Pythonを使ってRDFデータをDydraに登録する
- DydraへのAPI経由でのRDFデータ登録ガイド
- Dydra JSON-LDシリアライゼーションの挙動と回避策
- GakuNin RDMとDydraを連携したRDFメタデータ管理システムの開発
- SPARQL クライアントを Apache Jena Fuseki に対応させるときにハマった 3 つのこと
- Ontotext GraphDBのデスクトップ版を使用した際の空きディスク容量不足への対処
- AllegroGraphを使ってみる
データモデリング・バリデーション関連
- ShExとSHACLの違い
- ShExファイルを作成してみる
- ShExCとShExJの違い
- RDFSとSHACLの使い分け:rangeとpropertyShapeの関係を理解する
- w3id.orgを用いた永続識別子の取得とSnorqlへのリダイレクト
- Linked Dataを使ったデータ記述の応用例
可視化関連
- Snorql — 複数の SPARQL エンドポイントを手軽に探索できるブラウザ UI を公開しました
- 「ARC2によるRDFグラフの視覚化」をPythonで利用する
- Peripleoを試す
- メディア芸術データベースのSPARQLエンドポイントをYasguiで使ってみる
LODデータセット活用
- 「教科書の中の源氏物語LOD」を使ってみる
- 学習指導要領LODを使う
- Odeuropa:歴史的文献から匂いを抽出するLinked Dataの世界
- Odeuropa Visualization: SKOS語彙とSPARQLを活用した香りデータの可視化プラットフォーム
- Odeuropa Explorer の語彙階層構造を調査する
- Cultural Japanで集約したIIIFマニフェストをまとめたIIIFコレクションのご紹介
- Recogitoを用いたテキストアノテーションを試す
- rico-converterを試す
Omeka S関連
- 【Omeka S Tips】既存の標準語彙の追加方法
- Omeka SにDC-NDL(国立国会図書館ダブリンコアメタデータ記述)を語彙として登録する
- Omeka SにPROV-Oオントロジーを登録する方法
- Omeka SにICA RiC-Oの語彙を登録する
- 【Omeka S モジュール紹介】Data Type RDF
- 【Omeka S モジュール紹介】Numeric Data Types:日付データに対する範囲検索を可能にする、など
おわりに
本書では、Linked Open Dataの概念からRDFのデータモデル、SPARQLクエリの基礎と応用、Wikidataやジャパンサーチの実践的な活用、データモデリングとLOD公開、そしてデータの可視化まで、幅広いトピックを体系的に学んできました。
各章で紹介した筆者の記事は、本書の内容をさらに掘り下げた具体的な手順やトラブルシューティングの知見を提供しています。本書で基礎を身につけた上で、関心のあるトピックについては各記事もぜひ参照してください。
SPARQLとLinked Open Dataは、Web上に分散する膨大なデータを統合的に活用するための強力な基盤技術です。Wikidataだけでも1億を超えるアイテムが登録されており、ジャパンサーチを通じて日本の文化資源にもSPARQLでアクセスできます。
本書で学んだ知識と技術を活用して、データの検索・分析・可視化・公開に取り組んでいただければ幸いです。Linked Open Dataの世界は日々拡大しており、新しいデータセットやツールが次々と登場しています。ぜひコミュニティにも参加し、LODエコシステムの発展に貢献していきましょう。