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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
190
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
190
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
2
600
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.6k
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
2
1.8k
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
120
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
140
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
220
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
160
GoCon2026 - Open Source, Open World
sanposhiho
1
130
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
850
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Amusing Abliteration
ianozsvald
1
290
BBQ
matthewcrist
89
10k
First, design no harm
axbom
PRO
2
1.3k
Navigating Weather and Climate Data
rabernat
0
510
ラッコキーワード サービス紹介資料
rakko
1
4.8M
We Are The Robots
honzajavorek
0
340
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
A Tale of Four Properties
chriscoyier
163
24k
The Curious Case for Waylosing
cassininazir
1
500
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
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