概要
data.world というクラウド型データカタログサービスがあるのですが、その特徴の1つである SPARQL によりクエリを発行できる機能を検証した内容を記事にします。data.world アカウントの申し込み方法から初めて、提供されているチュートリアルとドキュメントに記載されている SPARQL の紹介をしたうえで、既存のデータセットに手動で追加したデータを組み合わせてクエリを実行する方法を紹介します。
引用元:The Data Catalog Platform | data.world
既存のデータセットに手動で追加したデータを組み合わせてクエリを実行する方法では、既存のデータセットデータに日本語の名称を追加した結果を取得します。
SPARQL の基本的な実行方法について下記の記事で紹介しています。
data.world の申し込み方法
Community Platform と Enterprise Data Catalog
data.world には、Community Platform と Enterprise Data Catalogがあります。
data.world offers two primary environments: the Enterprise Data Catalog and the Community platform.
引用元:Exploring data.world: Community and Enterprise Offerings
今回は、Community Platform の Individual を利用するため、無償で利用できます。
引用元:Community Pricing | data.world
Enterprise Data Catalog については下記のサイトから申し込めるようですが、利用前のユースケースインタビューがあるようなので日本では手軽に試せない可能性があります。
引用元:Get Started: Select Your Pricing Plan and We'll be in Touch | data.world
2 つの提供方法の差異が整理されているページを確認できませんでしたが、ドキュメントを確認するとどちらの提供方法で利用できる機能であるかが明示されています。
引用元:Supported sources (data.world)
Community Platform の Individual 版の申し込み方法
1. data.world のサインアップページ( https://data.world/sign-up )にて必要事項を記入、あるいは、Join with Google
を選択
私はJoin with Google
を選択しました。
2. ユーザー名を入力
3. data.world にログインできることを確認
data.world の SPAQL チュートリアル
コンテンツ概要
data.world の製品ドキュメントではなく、 Gitbook 形式で下記のサイトにてコンテンツが提供されています。
引用元:Welcome! · GitBook (data.world)
コンテンツの構成としては、下記の 3 ページがテーマごとにあり、 7 テーマあります。
- 特定テーマの説明がされているページがあり
- 自分で課題を解く Exercise のページ
- Exercise の解決策が提示されているページ
引用元:Welcome! · GitBook (data.world)
data.world にログインしている場合には、コンテンツのページで SPAQL を実行できます。
引用元:Your First SPARQL Query · GitBook (data.world)
data.world のページ上で実行したい場合には、SPARQL_Tutorial データセットのページ ( https://data.world/tutorial/sparqltutorial )にアクセス後、右側にあるLaunch workspace
を選択して表示されたページにクエリを発行できます。
コンテンツのテーマ
2024年9月24日時点で下記のテーマがあります。
# | タイトル | コンテンツ概要 |
---|---|---|
1 | Your First SPARQL Query | SPARQLの基本構文を学び、初めてのクエリを実行する方法を説明します。PREFIX 、SELECT 、WHERE 句の使い方を紹介します。 |
2 | Matching Exact Values In Queries | クエリで特定の値を正確にマッチングする方法を学びます。特定の値に一致するデータをフィルタリングする方法を説明します。 |
3 | Sorting and Summary Statistics | クエリ結果をソートする方法と、集計統計(MIN 、MAX など)を取得する方法を学びます。ORDER BY やLIMIT 句の使い方も含まれます。 |
4 | Grouping Your Data | データをグループ化し、各グループの集計を行う方法を学びます。GROUP BY 句と集計関数の活用方法を紹介します。 |
5 | Filtering Your Data | データを様々な条件でフィルタリングする方法を学びます。特に、フィルタリング条件の指定方法や日付によるフィルタリングについて説明します。 |
6 | Introduction to Data Munging | データの前処理(データマンジング)の基本を学びます。BIND を使った新しい変数の作成や、FILTER を使ったデータ操作方法を紹介します。 |
7 | Linking Datasets Together | 複数のデータセットをリンクさせてクエリを実行する方法を学びます。SPARQLを使ったデータ統合と連携の基本的なテクニックを説明します。 |
data.world における SPARQL に関するドキュメント
コンテンツ概要
data.world のドキュメントにて、 SPARQL の利用方法が紹介されています。
サンプルデータとして下記が提供されているようです。
上記ページにて、Name
の項目を選択することで、そのプロジェクト、あるいは、データセットに移動できます。
ドキュメントに記載されている以下のようなコードを実行することで、data.worldでのSPARQLに対する理解を深めることができます。下記では CSV ファイル(Tabular files)からデータ取得する方法が紹介されています。実行できるサンプルコードの場合にはRun the query
という文言があり、そこをクリックするとクエリを実行できるプロジェクト、あるいは、データセットに移動します。
引用元:Tabular files (data.world)
移動先のページにて、クエリを実行できます。
既存のデータセットに手動で追加したデータを組み合わせてクエリを実行する方法
実施内容概要
SPARQL_Tutorialに含まれる GOT.csv といるファイルのデータの日本語の名称のカラムを追加した結果を取得する手順を紹介します。
ベースとなる GOT.csv には、下記のようなデータを保持しています。
日本語の名称を保持させた CSV ファイルをアップロードし、そのデータと上記データを組み合わせます。
最終的には下記のようなクエリを発行して、その結果を取得します。英語をベースにした製品であることから日本語が適切に表示されていませんが、データをダウンロードすると想定通りの結果であることを確認できました。
実施手順
1. 右上の+ New
を選択
2. Create new project
を選択
3. 適切な Project name を入力後、Create project
を選択
4. プロジェクトのページにて、+ Add
-> Dataset
を選択
5. SPARQL_Tutorial
と検索してSPARQL_Tutorial
のConnect
を選択して、Connected
に変更されたことを確認後にDone
を選択
6. 下記のデータをもつGOT_JAPANESE_NAME.csv
というファイルをローカル環境で作成して、プロジェクトの画面にドロップ
ID,FName__JA_JP,LName__JA_JP
1,ティリオン,ラニスター
2,ジェイミー,ラニスター
3,サーセイ,ラニスター
4,ロブ,スターク
5,ジョン,スターク
6,サンサ,スターク
7,アリア,スターク
8,ブラン,スターク
9,リコン,スターク
10,レイガー,ターガリエン
11,ヴィセーリス,ターガリエン
12,デナーリス,ターガリエン
7. GOT_JAPANESE_NAME.csv
というファイルが追加されたことを確認
8. + Add
-> SPARQL Query
を選択
9. 既存のデータセットのデータであるGOT.csv
のデータを表示
PREFIX GOT_JAJP: <https://{user_name}.linked.data.world/d/{project_name}/>
SELECT ?ID ?fname_ja_jp ?lname_ja_jp
WHERE {
?person GOT_JAJP:col-got_japanese_name-id ?ID ;
GOT_JAJP:col-got_japanese_name-fname_ja_jp ?fname_ja_jp ;
GOT_JAJP:col-got_japanese_name-lname_ja_jp ?lname_ja_jp ;
}
10. 追加したデータであるGOT_JAPANESE_NAME.csv
ファイルのデータを表示
下記のクエリにて、{user_name}
と{project_name}
の箇所を修正してクエリを実行します。
PREFIX GOT_JAJP: <https://{user_name}.linked.data.world/d/{project_name}/>
SELECT ?ID ?fname_ja_jp ?lname_ja_jp
WHERE {
?person GOT_JAJP:col-got_japanese_name-id ?ID ;
GOT_JAJP:col-got_japanese_name-fname_ja_jp ?fname_ja_jp ;
GOT_JAJP:col-got_japanese_name-lname_ja_jp ?lname_ja_jp ;
}
私のプロジェクトでは下記のようなクエリを実行します。
PREFIX GOT_JAJP: <https://manabian.linked.data.world/d/querywithotherpj/>
SELECT ?ID ?fname_ja_jp ?lname_ja_jp
WHERE {
?person GOT_JAJP:col-got_japanese_name-id ?ID ;
GOT_JAJP:col-got_japanese_name-fname_ja_jp ?fname_ja_jp ;
GOT_JAJP:col-got_japanese_name-lname_ja_jp ?lname_ja_jp ;
}
11. GOT_JAPANESE_NAME.csv
というファイルのデータを表示
下記のクエリにて、{user_name}
と{project_name}
の箇所を修正してクエリを実行します。
PREFIX GOT: <https://tutorial.linked.data.world/d/sparqltutorial/>
PREFIX GOT_JAJP: <https://{user_name}.linked.data.world/d/{project_name}/>
SELECT ?ID ?fname ?fname_ja_jp ?lname ?lname_ja_jp
WHERE {
?person GOT:col-got-id ?ID ;
GOT:col-got-fname ?fname ;
GOT:col-got-lname ?lname .
?person2 GOT_JAJP:col-got_japanese_name-id ?ID ;
GOT_JAJP:col-got_japanese_name-fname_ja_jp ?fname_ja_jp ;
GOT_JAJP:col-got_japanese_name-lname_ja_jp ?lname_ja_jp ;
}
私のプロジェクトでは下記のようなクエリを実行します。
PREFIX GOT: <https://tutorial.linked.data.world/d/sparqltutorial/>
PREFIX GOT_JAJP: <https://manabian.linked.data.world/d/querywithotherpj/>
SELECT ?ID ?fname ?fname_ja_jp ?lname ?lname_ja_jp
WHERE {
?person GOT:col-got-id ?ID ;
GOT:col-got-fname ?fname ;
GOT:col-got-lname ?lname .
?person2 GOT_JAJP:col-got_japanese_name-id ?ID ;
GOT_JAJP:col-got_japanese_name-fname_ja_jp ?fname_ja_jp ;
GOT_JAJP:col-got_japanese_name-lname_ja_jp ?lname_ja_jp ;
}
Next Challenge
Challenge 概要
次にチャレンジしたいこと
-
Enhancements to data
機能の理解 - 有料サブスクリプションで実施できる内容の調査
- AI Context Engine に関する調査
1. Enhancements to data
機能の理解
Enhancements to data
機能として紹介されている下記機能の有用性について調査します。
2. 有料サブスクリプションで実施できる内容の調査
Community Platform にて契約できる下記の有料サブスクリプションについて調査します。
- Enterprise Team
- Team Professional
Enterprise Team
は、サイトに下記のプランとして記載されています。
右上のSetting
-> Biling
の画面から契約を変更できそうでした。
Team Professional
はサイトにて紹介されていませんが、右上のSetting
-> Oraganizations
-> Create organiation
を選択すると、組織の作成時にサブスクリプションを選べました。
3. AI Context Engine に関する調査
質問内容に対してセマンティックモデルに基づき回答を実施できる AI Context Engine という機能の技術的な背景を調査します。どのような機能であるかのイメージがつかない方は、操作できるデモ画面になっておりますので動作確認をしてみてください。この機能にて、オントロジーなどを利用している点がユニークです。
引用元:Key terms and roles (data.world)
Thought process を確認すると下記の処理を実施しており、オントロジーなどを利用してデータ取得するクエリを生成しているようです。
# | ステージ | 処理内容(推測) |
---|---|---|
1 | 🔍 Starting... | 処理の開始と初期化 |
2 | 🗂️ plan-classes-to-use-state | 使用するクラスやモジュールの計画 |
3 | 🤔 Evaluating the ontology | オントロジーを評価し、処理の計画を立てる |
4 | 🗂️ build-date-string-state | 日付に関するデータを整形し、クエリに使える形式に変換 |
5 | 🗂️ question-to-query-state | 自然言語の質問をシステムクエリに変換 |
6 | 🤔 Generating and reviewing queries | クエリを生成し、適切なものかどうか確認 |
7 | 🤔 Query looks like it ran correctly | クエリが正しく実行され、必要に応じて微修正が行われる |
8 | 🗂️ query-to-answer-state | クエリ結果を元に回答を生成 |
9 | 🗂️ Packaging up results | 結果をフォーマットし、ユーザーに返す準備 |
10 | 🤔 Processing results... | 最終的な結果の処理とパッケージング |
引用元:Key terms and roles (data.world)
利用されている3つのファイルがドキュメントにて紹介されています。
引用元:Key terms and roles (data.world)
残念ながら Community Platform での利用はできない旨の記載があるため、現時点では機能を推測するしかない状況です。
Contact the data.world support team or your Customer Success Director to get the AI Context Engine API access enabled in the data.world organization for which you want to set up AI Context Engine.