Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RDF/OWLで始める人生イベントソーシング
Search
acomagu
February 22, 2019
Technology
2.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RDF/OWLで始める人生イベントソーシング
RDF/OWLの便利さについて話しました。
acomagu
February 22, 2019
More Decks by acomagu
See All by acomagu
サーバーレスから Durable Execution へ
acomagu
0
33
Payment Records API を使って地域通貨を Stripe Dashboard に統合してみた
acomagu
0
76
Restate x Stripe: 安心して眠れる決済システムを目指して
acomagu
0
19
Stripe SSoT をするべきか否か
acomagu
0
91
JP_Stripes: リコンサイル(突合処理)のテスト
acomagu
0
130
「境界付けられたコンテキスト間の関係」についてもっと語ろう
acomagu
0
190
地方 MaaS 事例: アプリの進化に伴って変化してきた Stripe 利用方法
acomagu
0
680
Stripe リコンサイルの勘所
acomagu
0
540
CDK 一発で全てのエラーログを Slack に流す
acomagu
0
2.3k
Other Decks in Technology
See All in Technology
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
150
振り返りこそエンジニアの本領
negima
0
320
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
7
7.4k
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
160
enechainの内製セルフサービスプラットフォーム
hiyosi
0
120
PfEingのアプローチで働こう
rindrics
0
180
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
730
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
160
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1k
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
280
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Agile that works and the tools we love
rasmusluckow
331
22k
The SEO Collaboration Effect
kristinabergwall1
1
550
Automating Front-end Workflow
addyosmani
1369
210k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
Code Reviewing Like a Champion
maltzj
528
40k
Being A Developer After 40
akosma
91
590k
Amusing Abliteration
ianozsvald
1
290
Building the Perfect Custom Keyboard
takai
2
860
Transcript
RDF/OWLで始める 人生イベントソーシング @acomagu
自己紹介 - 伊藤勇希 - 福島県伊達市出身 - 会津大学学部3年
自己紹介 - 伊藤勇希 - 音ゲー(CHUNITHM) - 書道 - 合唱 -
TRPG - キャンプ - Plan9 - VTuber(にじさんじ) - ポーカー
自己紹介 - 好きな言語: - Golang - Typescript - 型がある言語
自己紹介 - 好きなエディタ - (Neo)Vim
RDF/OWLで 人生イベントソーシング
今回の目的 RDF/OWLって面白いぞ! ということを伝えたい
研究でやってる わけじゃないです!!!
RDF/OWLで 人生イベントソーシング
イベントソーシングとは? 絶対にUPDATEしないぞ!! 絶対にDELETEしないぞ!! 絶対にINSERTしかしないぞ!!!
イベントソーシングとは? 絶対にUPDATEしないぞ!! 絶対にDELETEしないぞ!! 絶対にINSERTしかしないぞ!!! 出来事をどんどん 保存していく!!!
イベントソーシングとは? 絶対にUPDATEしないぞ!! 絶対にDELETEしないぞ!! 絶対にINSERTしかしないぞ!!! 人生の 出来事をどんどん 保存していく!!!
RDFとは何か?
RDFとは何か? ↓ [ - - ] 主語 述語 目的語
RDFとは何か? ↓ [ - - ] Subject Predicate Object
RDFとは何か? ↓ [ - - ] 1 2 3
RDFとは何か? ↓ [ - - ] Triple
[ - - ] Triple [ - - ] Triple
[ - - ] Triple [ - - ] Triple [ - - ] Triple
<#Yuki_Ito> foaf:age 22.
S <#Yuki_Ito> foaf:age 22. P O
S <#Yuki_Ito> foaf:age 22. P O 「伊藤勇希の年齢は22才である」
<#Yuki_Ito> a foaf:Person. <#Yuki_Ito> foaf:age 22. <#Yuki_Ito> vcard:title “王”.
<#Yuki_Ito> a foaf:Person; foaf:age 22; vcard:title “王”.
<#Yuki_Ito> a foaf:Person; foaf:age 22; vcard:title “王”.
RDFとは何か? ↓ [ - - ] Subject Predicate Object
RDFとは何か? ↓ [ - - ] URI URI URI
<#Yuki_Ito> a foaf:Person; foaf:age 22; vcard:title “王”.
<https://acomagu.me#Yuki_Ito> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>; <http://xmlns.com/foaf/0.1/age> 22; <http://www.w3.org/2006/vcard/ns#title> “王”.
<#Yuki_Ito> a foaf:Person; foaf:age 22; vcard:title “王”.
@prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix vcard: <http://www.w3.org/.../ns#>. @base <https://acomagu.me>. <#Yuki_Ito> a
foaf:Person; foaf:age 22; vcard:title “王”.
Webで公開するために生まれた データ記述言語
@prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix vcard: <http://www.w3.org/.../ns#>. @base <https://acomagu.me>. <#Yuki_Ito> a
foaf:Person; foaf:age 22; vcard:title “王”.
None
なぜこういう仕組みが必要なのか?
JSONより厳密で JSON Schemaよりゆるい「型」が 欲しかった
(ここで言う)型とは どんな形式の値が入るか(プリミティブ型) どんな意味の値なのか(抽象型)
(ここで言う)型とは どんな形式の値が入るか(プリミティブ型) どんな意味の値なのか(抽象型): RDF(Predicate)
(ここで言う)型とは どんな形式の値が入るか(プリミティブ型): RDF Schema どんな意味の値なのか(抽象型): RDF(Predicate)
None
(ここで言う)型とは どんな形式の値が入るか(プリミティブ型): RDF Schema どんな意味の値なのか(抽象型): RDF(Predicate)
RDFは何が「ゆるイイ」のか? 1. 誰でもWebで語彙(Predicateやクラス)を公開でき、誰でも使えるところ 2. 足りない語彙があれば「付け足せる」ところ 3. プログラムが認識できないものがあっても、人間の手で容易に対応させられるとこ ろ
1.「誰でも語彙を公開でき、誰でも使える」
@prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix vcard: <http://www.w3.org/.../ns#>. @base <https://acomagu.me>. <#Yuki_Ito> a
foaf:Person; foaf:age 22; vcard:title “王”.
どの語彙を使うか? - IETFやW3Cなどによって標準化されたものを使用する - FOAF, Dublin Core, schema.org, VCard... -
標準化はされていないが公開されているものを使う - 図書分類、位置情報、感情を表現するもの ... 無数にある - 自分で作る
ontology.acomagu.me/ccs
2.「足りない語彙があれば付け足せる」
例: やりたいこと - 伊藤勇希の「名前」「年齢」「職業」の3つの情報を持っておきた い
{ “name”: “Yuki Ito”, “age”: 22 } { “type”: “object”,
“properties”: { “name”: { … }, “age”: { … } } }
{ “name”: “Yuki Ito”, “age”: 22, “title”: “神” } {
“type”: “object”, “properties”: { “name”: { … }, “age”: { … } } } ERROR!!
[] a foaf:Person foaf:name “Yuki Ito” foaf:age 22 foaf:Person a
rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person
[] a foaf:Person foaf:name “Yuki Ito” foaf:age 22 vcard:title “神”
foaf:Person a rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person PASS!!
JSON Schema { “type”: “object”, “properties”: { “name”: { …
}, “age”: { … } } } RDF Schema foaf:Person a rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person スキーマを見比べてみる
JSON Schema { “type”: “object”, “properties”: { “name”: { …
}, “age”: { … } } } RDF Schema foaf:Person a rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person スキーマを見比べてみる
JSON Schema { “type”: “object”, “properties”: { “name”: { …
}, “age”: { … } } } RDF Schema foaf:Person a rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person スキーマを見比べてみる RDFでは「このクラスにはこのプロパティがあるべき」という定義はできない
JSON Schema { “type”: “object”, “properties”: { “name”: { …
}, “age”: { … } } } RDF Schema foaf:Person a rdfs:Class foaf:name a rdfs:Property rdfs:domain foaf:Person foaf:age a rdfs:Property rdfs:domain foaf:Person スキーマを見比べてみる RDF、ゆるい...!
[] a foaf:Person foaf:name “Yuki Ito” foaf:age 22 でも...
[] a foaf:Person foaf:name “Yuki Ito” vcard:age 22 ERROR!! でも...
3.「プログラムが認識できないものがあっても、人間 の手で容易に対応させられる」
OWLとは
OWLとは RDF/RDFSの拡張
[] a foaf:Person foaf:name “Yuki Ito” vcard:age 22 ERROR!! でも...
[] a foaf:Person foaf:name “Yuki Ito” vcard:agefoaf:age 22 ? でも...
[] a foaf:Person foaf:name “Yuki Ito” vcard:age 22 [] a
foaf:Person foaf:name “黄前久美子” vcard:age 22 [] a foaf:Person foaf:name “しまりん” vcard:age 22 ...
[] a foaf:Person; foaf:name “Yuki Ito”; vcard:age 22. でも...
[] a foaf:Person; foaf:name “Yuki Ito”; vcard:age 22. vcard:age owl:equivalentProperty
foaf:age. PASS!! でも...
なぜこんなことができるか? - OWLでは、「別々の名前の個体(クラスやプロパティ、リソース など)が別々のものである(単一名仮定)」という定義が存在しな い
None
1. 誰でもWebで語彙(Predicateやクラス)を公開でき、誰でも使えるところ 2. 足りない語彙があれば「付け足せる」ところ 3. プログラムが認識できないものがあっても、人間の手で容易に対応させられるとこ ろ ↓
1. 誰でもWebで語彙(Predicateやクラス)を公開でき、誰でも使えるところ 2. 足りない語彙があれば「付け足せる」ところ 3. プログラムが認識できないものがあっても、人間の手で容易に対応させられるとこ ろ ↓ 全く異なるアプリケーション間での データの交換がしやすい
どうやって人生の記録を 保存していくか?
1. なんとかしてRDFデータを作る 2. とりあえずTriplestoreに突っ込む
なんとかしてRDFデータを作る github.com/acomagu/twrdf
なんとかしてRDFデータを作る - Evernoteなどのメモを全てRDF化しておく - Slackへの投稿をRDF化するようにする - etc. (結構シェルスクリプトでできる)
とりあえずTriplestoreに突っ込む - GraphDBがおすすめ なんで? - SPARQLが使えるとすごい便利!!!
1. なんとかしてRDFデータを作る 2. とりあえずTriplestoreに突っ込む
1. なんとかしてRDFデータを作る 2. とりあえずTriplestoreに突っ込む 3. 何かに書き出して使う!
何かに書き出して使う! - 自分の見やすい形式にすればいい - HTMLで公開する? - Evernoteに書き出す?
tblog.acomagu.me
人生をRDFにすると良いところ (Evernoteに比べて) - あとからデータを楽に付け足せる - グラフ構造で俯瞰したり、位置情報のマッピングなどのツール がすでにある - SPARQLで必要な情報をすぐに取り出せる -
簡単に別の形式に変換できる
まとめ
RDF/OWLは 「異なるアプリケーション間でデータを交換 する」ことを目的に作られた
ゆるい型付きのデータ記述言語である
便利に使って 人生を豊かにしよう!!
Thanks! Follow Me! @acomagu