Slide 1

Slide 1 text

1

Slide 2

Slide 2 text

2 (WWW関連の標準化団体) が規格するRDF用クエリ言語 W3C PREFIX schema: PREFIX rdf: PREFIX imas: PREFIX rdfs: select distinct ?predicate ?object where{ ?class_iri rdf:type ?class. ?class rdfs:label ?class_label. filter(contains(?class_label,"アイドル")) ?idol_iri rdf:type imas:Idol; schema:name ?idol_name. filter(contains(?idol_name,"千早")) ?idol_iri ?predicate ?object }

Slide 3

Slide 3 text

3 Resource Description Framework あるリソースのメタデータを記述するための枠組み RDF 主語 目的語 述語

Slide 4

Slide 4 text

4 “croMisa” 名前 如月千早 担当 23 right 年齢 利き手 Resource Description Framework あるリソースのメタデータを記述するための枠組み RDF

Slide 5

Slide 5 text

5 ?? 名前 如月千早 担当 23 right 年齢 Resource Description Framework あるリソースのメタデータを記述するための枠組み RDF 利き手

Slide 6

Slide 6 text

6 “croMisa” 如月千早 担当 23 right 年齢 名前 Resource Description Framework あるリソースのメタデータを記述するための枠組み RDF 利き手 ??

Slide 7

Slide 7 text

URI 7 Uniform Resource Identifier RDFで管理されるリソースなどを示す識別子 URI URL URN 例:https://sparql.crssnky.xyz/imasrdf/RDFs/detail/Arisugawa_Natsuha

Slide 8

Slide 8 text

9

Slide 9

Slide 9 text

im@sparqlは、バンダイナムコさんの 「THE iDOLM@STER」 を基にした二次創作の作品です。 ただの一個人のファンメイドなDBで あり、アイマス公式とは一切の関係が ございません。 10

Slide 10

Slide 10 text

11 HeaderIllust by @anagoP_ims

Slide 11

Slide 11 text

• LODのエンドポイント • SPARQLで問い合わせ可能 • アイドルマスターの世界を収録 • GitHubでデータベースを管理 → 全ての人が編集に参加可能 広がるアイマスワールドをオープンデータ化 WebやアプリからSPARQLで検索・利用可能なエンドポイント 12

Slide 12

Slide 12 text

13

Slide 13

Slide 13 text

14 2005年に開始したアーケード版アイドルマスターを 始めとするアイドルマスターシリーズの総称

Slide 14

Slide 14 text

15 2005年に開始したアーケード版アイドルマスターを 始めとするアイドルマスターシリーズの総称

Slide 15

Slide 15 text

16 PVでよく見るロゴ インターメディア 芸術メディアの融合によって生まれる、 新たなメディアのこと 例 「出張オーディション」=アイマス+フィールドワーク 「MR ST@GE!!」=アイマス+VR Theater メディアミックス 複数のメディアを組み合わし、メディア間の 補完と相乗効果を生む手法 例:ゲーム・CD・漫画・アニメ・ライブ など...

Slide 16

Slide 16 text

17

Slide 17

Slide 17 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 18

Slide 18

Slide 18 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 19

Slide 19

Slide 19 text

https://sparql.crssnky.xyz/imas へアクセス 20 環境を整える

Slide 20

Slide 20 text

21

Slide 21

Slide 21 text

すでにあるクエリ

Slide 22

Slide 22 text

submit JSON形式で返ってきます

Slide 23

Slide 23 text

中身について 主語 目的語 述語 im@sparqlで使われている 述語を抜き出している

Slide 24

Slide 24 text

25

Slide 25

Slide 25 text

まとめ im@sparqlのサイトでクエリが試せる

Slide 26

Slide 26 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 27

Slide 27

Slide 27 text

28 ?? 名前 如月千早 担当 23 right 年齢 Resource Description Framework あるリソースのメタデータを記述するための枠組み RDF 利き手

Slide 28

Slide 28 text

29 名前 RDFでの「アイドル名」の表現 アイドル タイプ 如月千早 天道輝

Slide 29

Slide 29 text

述語 目的語 タイプ アイドル 名前 [アイドル名] 名前 アイドル 要約すると... タイプ 如月千早 タイプが「アイドル」のインスタンスの名前 が「アイドル名」を表す 主語はなんでもよい

Slide 30

Slide 30 text

アイドル名を取得するには ワイルド カード アイドル タイプ [変数] 名前 これをSPARQLで表現する (主語) (目的語) (述語)

Slide 31

Slide 31 text

クエリ例 ワイルド カード アイドル タイプ [変数] 名前 SELECT ?名前 WHERE { ?主語 . ?主語 ?名前. } im@sparqlのウワサ 日本語を混ぜても 使えるらしい 条件 取得する変数

Slide 32

Slide 32 text

クエリ例 ワイルド カード アイドル タイプ [変数] 名前 SELECT ?名前 WHERE { ?主語 . ?主語 ?名前. } 「“?主語”のタイプはアイドル」 「“?主語”の名前は”?名前”」 SPARQLでは“?○○”は変数を表す! 任意の型を入れられ、ワイルドカードとしても使える

Slide 33

Slide 33 text

submit 全アイドルの名前が取得できる

Slide 34

Slide 34 text

見方 取得したい変数の情報が取れる

Slide 35

Slide 35 text

取得したいものを増やす 取得したい変数を増やせば 取得できるものが増える

Slide 36

Slide 36 text

まとめ • “SELECT”の後ろに取得したい変数を全て挙げる • “WHERE”の後ろに条件を書く • 主語,述語,目的語を並べて書く • 取得したい部分やワイルドカードは変数にする • 決まっているものはそれを書く • 主語と述語はURIの形で表される

Slide 37

Slide 37 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 38

Slide 38

Slide 38 text

アイドルのプロフィール例

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

アイドルのプロフィール例 述語 目的語 タイプ アイドル 名前 有栖川 夏葉 名前(かな) ありすがわ なつは 誕生日 8月16日 身長 168cm 体重 49kg スリーサイズ 85/58/84 血液型 B型 出身地 愛知県 イメージカラー #90E667 (主語)

Slide 41

Slide 41 text

アイドルのプロフィール例 述語 目的語 タイプ アイドル 名前 有栖川 夏葉 名前(かな) ありすがわ なつは 誕生日 8月16日 身長 168cm 体重 49kg スリーサイズ 85/58/84 血液型 B型 出身地 愛知県 イメージカラー #90E667 (主語) (主語) これが得られるクエリを 書いていきます https://sparql.crssnky.xyz/imasrdf/RD Fs/detail/Arisugawa_Natsuha

Slide 42

Slide 42 text

クエリ例 SELECT ?タイプ ?名前 ?かな ?誕生日・・・・・・・ WHERE { ?タイプ. ?名前. ?かな. ?誕生日. ・・・・・・・・・・・ } 述語 タイプ 名前 名前(かな) 誕生日 身長 体重 スリーサイズ 血液型 出身地 イメージカラー

Slide 43

Slide 43 text

44

Slide 44

Slide 44 text

救世主① • “Prefix”(接頭辞)宣言によるURIの省略 “PREFIX [接頭辞] [省略したいURIの一部]” と書いて宣言することで、長ったらしい部分を省略できる。 ⇨

Slide 45

Slide 45 text

救世主② • “;”(セミコロン)による主語の省略 SELECT ?名前 WHERE { ?主語 ; ?名前. } SELECT ?名前 WHERE { ?主語 . ?主語 ?名前. } “.”の代わりに”;”を書くことで 同じ主語を続ける意味になり、 次の文で主語を省略できる。 上下どちらも同じ文章。

Slide 46

Slide 46 text

救世主①,②の反映 PREFIX rdf: PREFIX imas: PREFIX schema: SELECT ?名前 WHERE { ?主語 rdf:type imas:Idol; schema:name ?名前. } SELECT ?名前 WHERE { ?主語 . ?主語 ?名前. } 新 旧

Slide 47

Slide 47 text

im@sparqlの接頭辞 内部で利用されているURIの接頭辞は、予め全て入力されています。 バンバン省略していきましょう!!

Slide 48

Slide 48 text

改めてクエリ例 SELECT * WHERE { imasrdf:Arisugawa_Natsuha rdf:type ?タイプ; schema:name ?名前; imas:nameKana ?かな; schema:height ?身長; schema:weight ?体重; imas:Bust ?バスト; imas:Waist ?ウエスト; imas:Hip ?ヒップ; imas:BloodType ?血液型; schema:birthPlace ?出身地; imas:Color ?イメージカラー; } 述語 タイプ 名前 名前(かな) 誕生日 身長 体重 スリーサイズ 血液型 出身地 イメージカラー (接頭辞宣言は省略)

Slide 49

Slide 49 text

改めてクエリ例 SELECT * WHERE { imasrdf:Arisugawa_Natsuha rdf:type ?タイプ; schema:name ?名前; imas:nameKana ?かな; schema:height ?身長; schema:weight ?体重; imas:Bust ?バスト; imas:Waist ?ウエスト; imas:Hip ?ヒップ; imas:BloodType ?血液型; schema:birthPlace ?出身地; imas:Color ?イメージカラー; } 述語 タイプ 名前 名前(かな) 誕生日 身長 体重 スリーサイズ 血液型 出身地 イメージカラー (接頭辞宣言は省略) ⇐SQLと同じ意味「全てを取得」 主語は省略!!

Slide 50

Slide 50 text

submit

Slide 51

Slide 51 text

submit ↓取得した変数群 ↑変数の情報 • type →URI か リテラル(直値) • datatype→変数の型 • xml:lang→言語 • value →取得した値 メタデータ

Slide 52

Slide 52 text

まとめ • URIは”Prefix”(接頭辞)で省略できる • 主語は”;”(セミコロン)で省略できる • “SELECT *”で全ての変数を取得する(SQLと同じ) • 変数の中にはメタデータも含まれる

Slide 53

Slide 53 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 54

Slide 54

Slide 54 text

アイマスのユニット DRAMATIC STARS • 天道輝 • 桜庭薫 • 柏木翼 Cleasky • 宮尾美也 • 島原エレナ 竜宮小町 • 水瀬伊織 • 三浦あずさ • 双海亜美 P.C.S • 島村卯月 • 五十嵐響子 • 小日向美穂 illumination STARS • 櫻木真乃 • 風野灯織 • 八宮めぐる

Slide 55

Slide 55 text

RDFでの「ユニット」の表現 ユニット タイプ メンバー メンバー Cleasky 名前

Slide 56

Slide 56 text

ユニットの例 述語 目的語 タイプ ユニット 名前 Cleasky メンバー 宮尾美也 メンバー 島原エレナ (主語) 同じ述語を繰り返してOK!

Slide 57

Slide 57 text

クエリを書いてみましょう! 役割 値 意味 主語 imasrdf:Cleasky Cleaskyの主語 述語 rdf:type タイプ 述語 schema:name 名前 述語 schema:member メンバー

Slide 58

Slide 58 text

SELECT * WHERE { imasrdf:Cleasky rdf:type ?type; schema:name ?name; schema:member ?member. } (接頭辞宣言は省略) クエリを書いてみた

Slide 59

Slide 59 text

submit

Slide 60

Slide 60 text

まとめ • 同じ述語を複数持つものがある • ↑その場合、クエリ結果は組み合わせの数だけ取れる

Slide 61

Slide 61 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 62

Slide 62

Slide 62 text

さきほどの「submit」 メンバーのアイドルがURIで取得されている

Slide 63

Slide 63 text

アイドルのURI https://sparql.crssnky.xyz/imasrdf/RDFs/detail/Miyao_Miya PREFIX imasrdf: imasrdf:Miyao_Miya さっき見かけたような形式だなぁ...

Slide 64

Slide 64 text

アイドルのURI https://sparql.crssnky.xyz/imasrdf/RDFs/detail/Miyao_Miya PREFIX imasrdf: imasrdf:Miyao_Miya さっき見かけたような形式だなぁ... ⇐ imasrdf:Arisugawa_Natsuha

Slide 65

Slide 65 text

66

Slide 66

Slide 66 text

イメージ ユニット タイプ Cleasky 名前 メンバー アイドル タイプ 宮尾美也 名前 • 「imasrdf:Cleaskyの名前は”Cleasky”であり、 メンバーにはimasrdf:Miyao_Miyaがいる。」 • 「imasrdf:Miyao_Miyaの名前は”宮尾美也”である」

Slide 67

Slide 67 text

クエリ例 SELECT * WHERE { imasrdf:Cleasky rdf:type ?type; schema:name ?unit_name; schema:member ?member. ?member schema:name ?idol_name. } (接頭辞宣言は省略) 取得した目的語を主語に配置して、 また述語と目的語を記述すればOK!

Slide 68

Slide 68 text

submit

Slide 69

Slide 69 text

イメージ ユニット タイプ Cleasky 名前 メンバー アイドル タイプ 宮尾美也 名前 • 「imasrdf:Cleaskyの名前は”Cleasky”であり、 メンバーにはimasrdf:Miyao_Miyaがいる。」 • 「imasrdf:Miyao_Miyaの名前は”宮尾美也”である」

Slide 70

Slide 70 text

submit 共通してる部分あるし、まとめたいなぁ...

Slide 71

Slide 71 text

希望 • Cleaskyというユニットに所属する宮尾美也 • Cleaskyというユニットに所属する島原エレナ Cleaskyというユニットに所属する宮尾美也、島原エレナ という感じで一つにまとめたいなぁ

Slide 72

Slide 72 text

救世主③ • “Group by”句と”Group_Concat”句による集約 SELECT ?unit_name Group_Concat(?idol_name;separator=", ") WHERE { imasrdf:Cleasky rdf:type ?type; schema:name ?unit_name; schema:member ?member. ?member schema:name ?idol_name. }Group by ?unit_name ① 集約したい変数を”Group by”句の後ろに書く ② 集約されたグループから、結合して表示したい変数を “Group_Concat”句に渡す。 また、区切り文字(separator)を指定する

Slide 73

Slide 73 text

submit

Slide 74

Slide 74 text

submit 取得した名前を、指定した区切り文字で並べてくれた! けど....変数名が知らない名前になってる........

Slide 75

Slide 75 text

救世主④ • “as”句による変数名の変更 SELECT (?unit_name as ?ユニット名) (Group_Concat(?idol_name;separator=", ")as ?メンバー名) WHERE { imasrdf:Cleasky rdf:type ?type; schema:name ?unit_name; schema:member ?member. ?member schema:name ?idol_name. }Group by ?unit_name ( [既存の変数や関数] as [新しい変数名] )

Slide 76

Slide 76 text

submit

Slide 77

Slide 77 text

submit+ • ユニット取得の主語を変数化(ワイルドカード)

Slide 78

Slide 78 text

まとめ • 目的語を主語にし、また新しい文が書ける • 連鎖的に文を組んでいくことで、 複雑な条件を検索することができる • “Group by”句を使い、条件による集約ができる • “Group_Concat”句を使い、グループ内で異なる 変数を一つにまとめられる

Slide 79

Slide 79 text

これこそLinked Open Data Cleasky 宮尾美也 メンバー タウラス メンバー Shiny Trinity 所持 衣装 タイプ 春日未来 メンバー ja.DBpedia 「桐谷蝶々」 C.V. 156cm 秋月律子 身長 身長

Slide 80

Slide 80 text

1. なにかクエリ打つ 2. アイドル名を取得する 3. アイドルのプロフィールを一部取得する 4. ユニット名とメンバーのURIを取得する 5. ユニット名とメンバー名を取得する 6. [余裕あれば]可視化 81

Slide 81

Slide 81 text

82

Slide 82

Slide 82 text

83

Slide 83

Slide 83 text

84 IM@Studyによる、アイマス技術本 「週刊IM@Study」 が今週末の”技術書典”にて頒布されます。 im@sparqlだけでなく、様々なIT技術を用いて アイマスへContributeしているのでぜひ!! im@sparql ~応用編~ UnrealEngine4で クエリ結果を可視化する

Slide 84

Slide 84 text

アイマスハッカソン2019 in 名古屋 名古屋でもハッカソンですよ、ハッカソン! テーマ:How to Visualize? 2019/04/21 in 名工大ラーニングコモンズ