SlideShare a Scribd company logo
ナレッジグラフ推論チャレンジ2018
ミートアップ@東京
2018年12月26日
上小田中411(かみこだなか411)
0 Copyright 2018 FUJITSU LABORATORIES LIMITED
自己紹介
チーム名:上小田中411
 メンバー:
 動機:松下京群
 機会:金子貴美,吉川和
 手段:小林賢司,小柳佑介
 全体取りまとめ:鵜飼孝典,西野文人,織田充
 所属:株式会社富士通研究所
Copyright 2018 FUJITSU LABORATORIES LIMITED1
全体像
Copyright 2018 FUJITSU LABORATORIES LIMITED
kgcf:motivation_of_murder
kgcf:motivation
rdfs:subClassOf
rdf:typ
e
kdf:rancor kdf:blind_love kdf:effect_of_drug・・・
rdf:typ
e
rdf:typ
e
@prefix kgc: <http://kgc.knowledge-
graph.jp/ontology/kgc.owl#> .
@prefix kd: <http://kgc.knowledge-
graph.jp/data/SpeckledBand/> .
@prefix kgcf:
<http://kgchallenge.github.io/ontology/#> .
@prefix kdf: <http://kgchallenge.github.io/data/#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
鞭
斬殺
包丁
毒動物
殺害方法
嘔吐
毒蛇
傷跡
めまい
症状
症状症状
犯罪供用物
関連物
subClassOf
subClassOf
subClassOf
刃物
subClassOf
症状殺害方法
犯罪供用物 関連物
包丁斬殺
subCla
ssOf
犯罪供用物
毒動物殺
毒蛇殺
subClassOf
毒殺
subClassOf
犯罪供用物
犯罪供用物
※図は抜粋
症状
犯罪白書
国語辞典
「まだらの紐」KG
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott>
<http://kgchallenge.github.io/ontology/#hasMotivation>
<http://kgchallenge.github.io/ontology/#greed_for_money> ;
<http://kgchallenge.github.io/ontology/#want_to_kill>
<http://kgc.knowledge-
graph.jp/data/SpeckledBand/Julia> ,
<http://kgc.knowledgegraph.jp/data/SpeckledBand/Helen> .
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> man
can go to:
http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor
http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott>
man can go to:
http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor
http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> man
can go to:
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ns1:has_method
_:Nf4af295447484423afbb23de91bde1c9 .
_:Nf4af295447484423afbb23de91bde1c9 a ns1:毒蛇殺 .
[] a rdf:Statement ;
ns1:has_reason [
ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ;
ns1:reason_situation <http://kgc.knowledge-graph.jp/data/SpeckledBand/390>
] ;
rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ;
rdf:predicate ns1:has_method ;
rdf:object _:Nf4af295447484423afbb23de91bde1c9 .
# 動機がある人に HasM otivation のタイプを付与する
@prefix dash: <ht t p://dat ashapes.org/dash#> .
@prefix rdf: <ht t p://w w w.w3.org/1999/02/22-rdf-synt ax-ns#> .
@prefix rdfs: <ht t p://ww w.w3.org/2000/01/rdf-schema#> .
@prefix schema: <ht t p://schema.org/> .
@prefix sh: <ht t p://ww w.w3.org/ns/shacl#> .
@prefix xsd: <ht t p://ww w.w3.org/2001/XM LSchema#> .
@prefix kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#> .
@prefix kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/> .
@prefix kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#> .
@prefix kdf: <ht t p://kgchallenge.git hub.io/dat a/#> .
@prefix agrelon: <ht t p://d-nb.info/st andards/element set/agrelon#> .
# お金を得る可能性のある人
# money1
sh:Get MoneyMot ivation
a sh:NodeShape ;
sh:t arget Class kgc:Person ;
sh:order 1 ;
sh:rule [
a sh:SPARQLRule ;
sh:const ruct """
PREFIX kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#>
PREFIX kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/>
PREFIX kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#>
PREFIX kdf: <ht t p://kgchallenge.git hub.io/dat a/#>
PREFIX rdfs: <ht t p://w ww.w 3.org/2000/01/rdf-schema#>
CONSTRU CT {
# 動機ごとに 分けたい.
# その人にとっての金銭感覚や動くお金の規模等で,犯罪につながるほどのことなのか判断されるべき(以下のルールは考慮していない
$t his kgcf:hasMotivation kdf:greed_for_money ;
kgcf:w ant _t o_kill ?t at get .
} W HERE {
VALU ES ?lose_pred {kd:give kd:pay kd:lose} .
VALU ES ?get _pred {kd:have} .
?subclass_of_scene rdfs:subClassOf kgc:Scene .
{
?_ kgc:subject $t his ;
kgc:hasPredicat e ?get _pred ;
kgc:w hat kd:money ;
kgc:if ?if .
} U NION {
?__ kgc:w hom $t his ;
kgc:hasPredicat e ?lose_pred ;
kgc:w hat kd:money ;
kgc:if ?if .
}
# ?if の先がsit uat ionである
# sit uat ion が 未来の要素なら←これは何らかのsit uat ionからifで参照されていればいい?
# 誰かが死ぬことで未来のsit uat ionが起きる条件を満たさないならば
# その人がターゲット # 条件を壊すのは人とは限らないけど...
{
?if a ?subclass_of_scene ;
kgc:subject ?t arget .
} U NION {
?if a ?subclass_of_scene ;
kgc:w hom ?t arget .
}
?t arget a kgc:Person .
# FILTER($t his IN (?subject , ?object ))
# ?mot ivat ion kgc:source ?mot ivat ion_source .
# ?if kgc:source ?if_source .
# filt er(lang(?mot ivat ion_source)='ja')
# filt er(lang(?if_source)='ja')
}
""" ;
] .
PREFIX rdf: <ht t p://w ww .w3.org/1999/02/22-rdf-synt ax-ns#>
PREFIX rdfs: <ht t p://ww w.w3.org/2000/01/rdf-schema#>
PREFIX kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#>
PREFIX kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/>
PREFIX kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#>
PREFIX kdf: <ht t p://kgchallenge.git hub.io/dat a/#>
# SELECT dist inct ?x ?y ?hole ?scene
# W HERE{
CONSTRU CT{
?x kdf:haveOpenHoleTo ?y .
?y kdf:haveOpenHoleTo ?x .
} W HERE{
# ?x と ?y が穴でつながっている
?scene rdf:t ype ?scenet ype .
?scene kgc:hasPredicat e ?predexist .
?scene kgc:subject ?hole .
{
?scene kgc:from ?x . ?scene kgc:t o ?y .
} U NION {
?scene kgc:from ?y . ?scene kgc:t o ?x .
} U NION {
?scene kgc:w here ?x . ?scene kgc:w here ?y .
} U NION {
?scene kgc:w here ?x . ?scene kgc:t o ?y .
} U NION {
?scene kgc:w here ?y . ?scene kgc:t o ?x .
}
?x rdf:t ype ?xt ype .
?y rdf:t ype ?yt ype .
{?hole rdf:t ype kgcf:Hole .} UNION {?hole rdf:t ype ?holet ype . ?holet ype rdfs:subClassOf+ kgcf:Hole .}
filt er(?scenet ype in (kgc:Sit uat ion, kgc:Thought , kgc:Talk))
filt er(?predexist in (kd:go, kd:exist))
filt er(?xt ype in (kgc:Object , kgc:Place))
filt er(?yt ype in (kgc:Object , kgc:Place))
filt er(?x != ?y)
M INUS { # 人は ?hole を通れない
?scene2 rdf:t ype ?scenet ype2 .
?scene2 kgc:hasPredicat e ?prednot go .
?scene2 kgc:subject kd:man .
{
{?scene2 kgc:from ?x . ?scene2 kgc:t o ?y .} UNION {?scene2 kgc:from ?y . ?scene2 kgc:t o ?x .}
} U NION {
?scene2 kgc:w here ?hole .
}
filt er(?scenet ype2 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk))
filt er(?prednot go in (kd:cannot Go, kd:not Go))
}
M INUS { # 穴が塞がっている(内部に障害物がある)
?scene4 rdf:t ype ?scenet ype4 .
{
?scene4 kgc:hasPredicat e kd:exist .
?scene4 kgc:w here ?hole .
?scene4 kgc:subject ?obst acle .
} U NION {
?scene4 kgc:hasPredicat e kd:have .
?scene4 kgc:subject ?hole .
?scene4 kgc:w hat ?obst acle .
}
?obst acle rdf:t ype kgc:Object .
filt er(?scenet ype4 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk))
}
M INUS { # ?hole が通れないような性質をもつ(鍵がかかっている、狭い、閉まっている、小さい)
?scene3 rdf:t ype ?scenet ype3 .
?scene3 kgc:hasPropert y ?prop .
?scene3 kgc:subject ?hole .
filt er(?scenet ype3 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk))
filt er(?prop in (kd:lock, kd:narrow , kd:close, kd:small, kd:beSmall))
}
}order by (?x)
SELECT distinct ?situation ?symptom ?symptom_status ?killing
WHERE {
{
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:hasProperty / a ?symptom .
?killing rdfs:subClassOf / owl:onProperty kgcf:hasSymptom .
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
BIND("true" AS ?symptom_status)
} UNION {
BIND(kgcf:傷跡 AS ?symptom)
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:what / a ?symptom ;
kgc:hasPredicate ?pred .
FILTER(?pred = kd:notHave)
BIND("false" AS ?symptom_status)
?killing rdfs:subClassOf kgcf:殺害方法 .
?subkilling rdfs:subClassOf* ?killing .
FILTER NOT EXISTS {
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
?subkilling rdfs:subClassOf* ?killing .
}
} UNION {
BIND(kgcf:傷跡 AS ?symptom)
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:what / a kgcf:傷跡 ;
kgc:hasPredicate ?prop .
FILTER(?prop = kd:have)
BIND("true" AS ?symptom_status)
?killing rdfs:subClassOf kgcf:殺害方法 .
?subkilling rdfs:subClassOf* ?killing .
FILTER EXISTS {
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
?subkilling rdfs:subClassOf* ?killing .
}
}
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-
schema#>
PREFIX kgc: <http://kgc.knowledge-
graph.jp/ontology/kgc.owl#>
PREFIX kd: <http://kgc.knowledge-
graph.jp/data/SpeckledBand/>
SELECT
DISTINCT ?id ?source ?predicate ?subj ?where
WHERE{BIND(kd:67 as ?event)
?event kgc:when ?crime_time.
?id kgc:when ?crime_time;
kgc:source ?source;
kgc:hasPredicate ?predicate;
kgc:subject ?subj;
kgc:where ?where.
?subj a kgc:Person.
FILTER(LANG(?source) = 'ja').
MINUS{
?event kgc:then+ ?id.
}
}
{
?situation kgc:hasPredicate kd:exist .
?situation kgc:where/kgc:ofWhole ?person .
?person a kgc:Person .
?situation kgc:subject ?reason .
?reason a/(rdfs:subClassOf*) %%OBJCLASS%% .
}
{
?situation kgc:hasPredicate kd:have .
?situation kgc:subject ?person .
?person a kgc:Person .
?situation kgc:what ?reason .
?reason a/(rdfs:subClassOf*) %%OBJCLASS%% .
}
SHACL(Shape)/
SPARQLクエリ
判定結果
※動機、機会、手段それぞれの判定結果
殺害動機/殺害方法オントロジ
+
判定スクリプト
※動機、機会、手段それぞれで判定
※最後の総合判定は人手
(一部人手で追加)
(人手)
(人手)
2
次の3つの観点で推論を行う
動機 を持つか
機会 を持つか
方法 を持つか
犯人捜しの方針
Copyright 2018 FUJITSU LABORATORIES LIMITED3
動機がある人
Copyright 2018 FUJITSU LABORATORIES LIMITED4
動機がある人: 概要と基本方針
 基本方針
 殺人動機のオントロジを作成 (犯罪白書を参考に)
 殺人動機が生じる状況を記述 / 該当する人物を推論
 動機を持つ状況下の人物が,明確に殺害したい人物を持つか推論
 追加した知識,修正した知識
 殺人動機のオントロジ / 家族・友人関係のオントロジ /
登場人物の家族・友人関係 / 本文中から得られる知識
Copyright 2018 FUJITSU LABORATORIES LIMITED
殺人の 動機を持ってもおかしくない状況 かつ 対象が明確 であれば殺害の動機を持つ
5
 犯罪白書を参考に殺人動機のオントロジを作成
 殺人の動機 分類
 怨恨
 痴情
 薬物の作用等
 自己顕示
 防衛・護身(自己防衛)
 服従・迎合
 信条・信念
 生活充当(金欲)
 遊興費充当(金欲)
 その他(今回は省いた)
動機:追加した常識:殺人動機のオントロジ
kgcf:motivation_of_murder
kgcf:motivation
rdfs:subClassOf
rdf:type
kdf:rancor kdf:blind_love kdf:effect_of_drug・・・
rdf:typerdf:type
@prefix kgc: <http://kgc.knowledge-
graph.jp/ontology/kgc.owl#> .
@prefix kd: <http://kgc.knowledge-
graph.jp/data/SpeckledBand/> .
@prefix kgcf: <http://kgchallenge.github.io/ontology/#> .
@prefix kdf: <http://kgchallenge.github.io/data/#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
Copyright 2018 FUJITSU LABORATORIES LIMITED6
 犯罪白書を参考に殺人動機のオントロジを作成
 殺人の動機 分類
 怨恨
 痴情
 薬物の作用等
 自己顕示
 防衛・護身(自己防衛)
 服従・迎合
 信条・信念
 生活充当(金欲)
 遊興費充当(金欲)
 その他(今回は省いた)
動機:追加した常識:殺人動機のオントロジ
kgcf:motivation_of_murder
kgcf:motivation
rdfs:subClassOf
rdf:type
kdf:rancor kdf:blind_love kdf:effect_of_drug・・・
rdf:typerdf:type
@prefix kgc: <http://kgc.knowledge-
graph.jp/ontology/kgc.owl#> .
@prefix kd: <http://kgc.knowledge-
graph.jp/data/SpeckledBand/> .
@prefix kgcf: <http://kgchallenge.github.io/ontology/#> .
@prefix kdf: <http://kgchallenge.github.io/data/#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
Copyright 2018 FUJITSU LABORATORIES LIMITED7
動機:推論規則
 殺人の動機を持つ人は...
 何らかの事象が起きると お金を得る or 失う 可能性のある人(金欲)
 明確な誰かから恐怖や肉体的 or 精神的苦痛を与えれられている人(自己防
衛)
 親密な人が亡くなっていて,亡くなった原因となる人物の予測がついて
いる(怨恨)
CONSTRUCT {
$this kgcf:hasMotivation kgcf:rancor ;
kgcf:want_to_kill ?killer .
} WHERE {
VALUES ?pred_of_think {kd:suspect} .
?subclass_of_scene rdfs:subClassOf kgc:Scene .
# 誰かが死んだシーン
?die_situation a ?subclass_of_scene ;
kgc:hasPredicate kd:die ;
kgc:subject ?dead_person .
# 死人と近い関係にあった人
?relation_of_close_person a kgcf:relation_of_family .
$this ?relation_of_close_person ?dead_person .
# 殺人犯に当たりがついているか
?think_situatoin a ?subclass_of_scene ;
kgc:hasPredicate ?pred_of_think ;
...
...
}
【ルール:親密な人が亡くなっていて,亡くなった原因となる人物の予測がついている人】
※ 殺人の動機を持つシチュエーションは
3つ以外にも考えられるが今回は未実装
Copyright 2018 FUJITSU LABORATORIES LIMITED8
動機:推論規則
 明確な誰かから恐怖や肉体的 or 精神的苦痛を与えれられてい
る人(自己防衛)
Copyright 2018 FUJITSU LABORATORIES LIMITED
CONSTRUCT {
$this kgcf:hasMotivation kdf:self_defence ;
kgcf:want_to_kill ?target .
} WHERE {
# 関連する述語をまとめる
VALUES ?pred_of_beScare {kd:beScared kd:beCruellyUsed} .
VALUES ?pred_of_scare {kd:scared kd:cruellyUsed} .
# 恐怖を感じている人と与えている人を検索
?subclass_of_scene rdfs:subClassOf kgc:Scene .
{
?situation kgc:hasPredicate ?pred_of_beScare ; # ?pred_of_beScare ;
kgc:subject $this ;
kgc:whom ?target .
} UNION {
?situation kgc:hasPredicate ?pred_of_scare ;
kgc:subject ?target ;
kgc:whom $this .
}
$this a kgc:Person .
}
9
動機:推論規則
 何らかの事象が起きると お金を得る or 失う 可能性のある人
(金欲)
Copyright 2018 FUJITSU LABORATORIES LIMITED
CONSTRUCT {
$this kgcf:hasMotivation kdf:greed_for_money ;
kgcf:want_to_kill ?tatget .
} WHERE {
VALUES ?lose_pred {kd:give kd:pay kd:lose} .
VALUES ?get_pred {kd:have} .
# 何らかの理由でお金を失う可能性がある
?subclass_of_scene rdfs:subClassOf kgc:Scene .
{
?_ kgc:subject $this ;
kgc:hasPredicate ?get_pred ;
kgc:what kd:money ;
kgc:if ?if .
} UNION {
?__ kgc:whom $this ;
kgc:hasPredicate ?lose_pred ;
kgc:what kd:money ;
kgc:if ?if .
}
# 何らかの事象
{
?if a ?subclass_of_scene ;
kgc:subject ?target .
} UNION {
?if a ?subclass_of_scene ;
kgc:whom ?target .
}
?target a kgc:Person .
}
10
動機:追加した知識,修正した知識
 追加した知識,修正した知識
 家族・友人関係のナレッジ / 登場人物の家族・友人関係
•追加した理由:親密な関係を持つ人物を判断するため
•ex)
kd:Roylott agrelon:hasChildInlaw kd:Helen .
 本文中にある記述(オリジナルのKGになかった部分)
•追加した理由:動機の有無を判断する上で重要な記述だと考えたため
•ex)
kdf:_023 a kgc:Situation ;
kgc:source "村の人々はすっかりおびえてしまい,"@ja ;
kgc:subject kd:villager_of_Stoke_Moran ;
kgc:hasPredicate kd:beScared;
kgc:whom kd:Roylott .
Copyright 2018 FUJITSU LABORATORIES LIMITED11
動機:処理系による実行例
$ cat output/merged.output.ttl
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott>
<http://kgchallenge.github.io/ontology/#hasMotivation>
<http://kgchallenge.github.io/data/#greed_for_money> ;
<http://kgchallenge.github.io/ontology/#want_to_kill>
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Julia> ,
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Helen> .
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Helen>
<http://kgchallenge.github.io/ontology/#hasMotivation>
<http://kgchallenge.github.io/data/#self_defence> ;
<http://kgchallenge.github.io/ontology/#want_to_kill>
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> .
<http://kgc.knowledge-graph.jp/data/SpeckledBand/villager_of_Stoke_Moran>
<http://kgchallenge.github.io/ontology/#hasMotivation>
<http://kgchallenge.github.io/data/#self_defence> ;
<http://kgchallenge.github.io/ontology/#want_to_kill>
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> .
【実行結果】
ロイロット は “金欲” のために ジュリア と ヘレン を殺す可能性がある
村人 は “自己防衛” のために ロイロット を殺す可能性がある
ヘレン は “自己防衛” のために ロイロット を殺す可能性がある
【要約】
【実行時間】 1.5s
【実行コマンド】
$ sh run_inference.sh
Copyright 2018 FUJITSU LABORATORIES LIMITED12
できていないこと・気づき
 できていないこと
 殺人の動機につながる金銭授受と一般的な支払などで生じるものとの区
別
 気づき
 明記されていないが推測したい情報のナレッジ化 をどうするか
•「ヘレンはロイロットをよく思っていない」と明記されていないが本文から
推測したい
 事実だと確定できない内容の扱い をどうするか
•発言という行為は事実だが、発言内容が事実であるかはわからない
•発言をすべて事実にすると、嘘をついている可能性を無視してしまう
 自然言語での表現の違いはどこまでナレッジ化すべきか
•受動 / 能動 で表現される状況(物理的事実)が変わらない場合、 RDF上の表現
は 受動 / 能動 の2つのパターンを表現すべきかどうか
•表現によるニュアンスやイメージの違い
•ex) 私、わたし、ワタシ / 私、僕 / わたし、あたし / 兄 姉、お兄ちゃん お姉ちゃん
Copyright 2018 FUJITSU LABORATORIES LIMITED
・ できる限り同じものには同じURIを振って別途状態(オプション)を付加する形で表現したい
・ 付加したオプションまで考える必要がないときは、意識せずに使える形にしておきたい
13
機会がある人
Copyright 2018 FUJITSU LABORATORIES LIMITED14
機会がある人
 基本方針
事件当夜,犯行現場に移動可能な場所にいた人物は機会がある
•時間の繋がり:犯行時刻(事件当夜)直前に各人が居ることを確認できた場所
•空間の繋がり:各人が居る場所から移動可能な場所
犯行現場の特定はスコープ外
•∵犯行現場は手段に依存する
•各登場人物の居場所から任意の場所への移動可否を特定できる仕組みとした
今回は、”Juliaの部屋”を犯行現場候補として実行
•正解: 犯行時にJuliaの部屋に行ける人はいない
 追加した知識,修正した知識
 穴クラス / 庭に面した窓の知識 / 記述の統一・修正
Copyright 2018 FUJITSU LABORATORIES LIMITED
真の犯行現場: Roylottの部屋
15
機会(時間)―推論規則
 前提
事件発生時: ID67「事件当夜、ジュリアの声が聞こえた」
事件発生時の居場所
•ID67と同時刻の各シーンの主語(kgc:subject)の人物は、
事件発生時、kgc:where に書かれた場所にいる
事件発生直前のシーン
•ID67 と同じ絶対時間(kgc:time)を持つ述語(kgc:hasPredicate)は、
事件発生時点で起きたイベント、または、事件発生時点で成立している状態
•ID67 と kgc:then で後接するものは、事件発生後の出来事として除外する
Copyright 2018 FUJITSU LABORATORIES LIMITED
kd:67 事件当夜、ジュリアの声が聞こえた
kd:bedroom_of_Helen
1881-12-02T00:00:00
kd:hear
kd:Helen
kd:68
kgc:source
kgc:time
kgc:subject
kgc:hasPredicate
kgc:where
kgc:then
16
 ID67 と同じ時刻のシーンから 各人の居場所を推論
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX kgc: <http://kgc.knowledge-graph.jp/ontology/kgc.owl#>
PREFIX kd: <http://kgc.knowledge-graph.jp/data/SpeckledBand/>
SELECT DISTINCT ?id ?source ?predicate ?subj ?where
WHERE{
BIND(kd:67 as ?event)
?event kgc:when ?crime_time.
# 事件と同じ時刻のシーンとその情報
?id kgc:when ?crime_time;
kgc:subject ?subj;
kgc:where ?where;
... .
?subj a kgc:Person.
MINUS{
?event kgc:then+ ?id.
}
}
機会(時間)―実行履歴1
Copyright 2018 FUJITSU LABORATORIES LIMITED
ID67 と then で後接する,同
じ絶対時間を持つ文を除外
ID67 と同じ絶対時間を持つ文
の情報を取得
事件発生時刻
17
機会(時間)―実行履歴2
 実行結果
Copyright 2018 FUJITSU LABORATORIES LIMITED
各登場人物の居場所が以下であることがわかる
ジュリア :ジュリアの寝室(ID55, ID103)
ヘレン :ヘレンの寝室(ID67)
ロイロット:ロイロットの寝室(ID53)
ロマ :庭(ID107)
18
機会(空間)―追加した知識、修正した知識
 穴クラス
 場所と場所を繋ぎ、
人やモノが通り抜け可能なもの
 クラスとインスタンスを整理し、
実体とナレッジグラフのエンティティを
一対一対応とした
 「庭側の窓は庭に面している」知識
 「ジュリアの部屋の窓」を
「庭側の窓」「廊下側の窓」で区別
 ダミーのシーンで「庭に面している」ことを
記述
 その他、表記の統一
Copyright 2018 FUJITSU LABORATORIES LIMITED
kgcf:Hole a rdfs:Class ;
rdfs:subclassOf kgc:Object .
kgcf:Ventilator a rdfs:Class ;
rdfs:subClassOf kgcf:Hole .
kgcf:Door a rdfs:Class ;
rdfs:subClassOf kgcf:Hole .
kgcf:Window a rdfs:Class ;
rdfs:subClassOf kgcf:Hole .
kgcf:Chimney a rdfs:Class ;
rdfs:subClassOf kgcf:Hole .
kd:door_of_bedroom_of_Julia a kgcf:Door .
kd:window_of_bedroom_of_Helen a kgcf:Window .
kd:window_of_bedroom_of_Roylott a kgcf:Window .
…
kd:dummy1
rdf:type kgc:Situation;
kgc:hasPredicate kd:exist ;
kgc:subject
kdf:window_of_bedroom_of_Julia_gardenside ;
kgc:where kd:bedroom_of_Julia ;
kgc:from kd:bedroom_of_Julia ;
kgc:to kd:garden_of_Roylott.
サブクラス:
通風口、ドア、
窓、煙突
19
機会(空間)―推論規則(1)
 「通れる穴で接続した場所」の関係をSPARQLを用いて記述
1. 穴を介して隣り合う2つの場所を表現するパターン
• 前提:KGに記述の無い穴は存在しないものとする
2. 人が通れない穴を表現するパターン(候補から削除)
 上記を組み合わせて関係を定義
 観察:場所の関係はシーンを中心に記述されている
 ある場所から到達可能な場所を辿る
 プロパティー・パス・マッチング
 出力:場所sと、そこから到達できる場所tのリスト
Copyright 2018 FUJITSU LABORATORIES LIMITED
CONSTRUCT{
?x kdf:haveOpenHoleTo ?y .
} WHERE{(通れる穴のパターン)}
SELECT distinct ?s ?t WHERE { ?s kdf:haveOpenHoleTo+ ?t . }
廊下とJuliaの寝室の関係
シーン
場所1
場所2
20
機会(空間)―推論規則(2)
 穴を介して隣り合う2つの場所
2. 穴が障害物で塞がっている
 人が通れない穴
1. 人が通れない
2. あ
3. 穴の性質(鍵がかかっている、狭い、
閉まっている)
Copyright 2018 FUJITSU LABORATORIES LIMITED
SELECT distinct ?x ?y ?hole ?scene1 WHERE {
?scene1 kgc:hasPredicate ?predexist .
?scene1 kgc:subject ?hole .
?hole rdf:type kgcf:Hole .
{ ?scene1 kgc:from ?x . ?scene1 kgc:to ?y .
} UNION {
?scene1 kgc:where ?x . ?scene1 kgc:where ?y .
} UNION {
?scene1 kgc:where ?x . ?scene1 kgc:to ?y .}…}
SELECT distinct ?x ?y ?hole ?being ?scene2 WHERE
{
?scene2 kgc:subject kd:man .
?scene2 kgc:hasPredicate ?prednotgo .
{ ?scene2 kgc:from ?x . ?scene2 kgc:to ?y .
… } UNION {
?scene2 kgc:where ?hole .
?hole rdf:type kgcf:Hole . }…}
”通れない”を表す述語
SELECT distinct ?hole ?prop ?scene3 WHERE {
?scene3 kgc:hasProperty ?prop .
?scene3 kgc:subject ?hole .
?hole rdf:type kgcf:Hole .
filter(?prop in (kd:lock, kd:narrow, kd:close,
kd:small, kd:beSmall)) …}
SELECT distinct ?hole ?obstacle ?scene WHERE {
{ ?scene kgc:subject ?obstacle . ?scene
kgc:hasPredicate kd:exist . ?scene
kgc:where ?hole .
} UNION {
?scene kgc:subject ?hole . ?scene
kgc:hasPredicate kd:have . ?scene
kgc:what ?obstacle .
} ?hole rdf:type kgcf:Hole . ?obstacle
rdf:type kgc:Object . …}
通れる穴で接続した場所
SELECT distinct ?x ?y ?hole ?scene WHERE {
(穴で介して隣り合う)MINUS {人が穴を通れない}}
21
機会(空間)―処理系による実行履歴
 開始地点の設定
 ID:67時点で、Helen, Roylott, Roma のいた3地点
 各々が移動できる場所を推論
 1. 「パターン1: 人が通れない」「パターン2: 穴が障害物で塞がっている」を適用
• 各部屋から窓を通って廊下に出る可能性を排除
• 「庭側の窓が鎧戸で閉ざされている」で、庭との行き来を排除
 2. 「パターン3: 穴の性質(鍵がかかっている、狭い、閉まっている)」を適用
• Juliaの部屋のドアは閉まっており、廊下と行き来できない
• RoylottとJuliaの部屋間の通風口は小さく、人は通れない
Copyright 2018 FUJITSU LABORATORIES LIMITED
<http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> # Helen: Helen の寝室
<http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott> # Roylott: Roylott の寝室
<http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> # Roma: 屋敷の庭
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> man can go to:
http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor
http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott> man can go to:
http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor
http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen
From <http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> man can go to:
誰もJuliaの部屋に
行けない
22
機会(空間)―今後の課題
 時刻の考慮
 今回は、あるシーンで記述されている状態全てを「事件当時の状態」とみなして処
理している
 しかし、場所同士の接続関係や穴の通過可否は、
本来時間に応じて変化しうる
 例:
•Juliaは事件直前にドアを閉め、ロックした←それ以前はドアを通ることができた
•RoylottとJuliaの部屋間に通風口が空いたのは事件前である
 そのため、”犯行時刻における”接続関係を、変化や状態を示すシーンの時間
(”kgc:time”) を利用するなどして取得する必要がある
Copyright 2018 FUJITSU LABORATORIES LIMITED23
手段がある人
Copyright 2018 FUJITSU LABORATORIES LIMITED25
手段がある人
 基本方針
 事件当夜の被害者や現場の様子から絞り込まれた殺害方法に対して、そ
れら殺害方法を実現するために必要な/関連するモノを所有する人が
「手段がある人」
 推論規則
1. 殺害方法オントロジーを使用して、事件当夜の被害者や現場の様子か
ら、殺害方法を絞り込む
2. 絞り込んだ殺害方法に対して、実行可能な人物を導出
 追加した知識
 殺害方法オントロジー
•殺害方法の種類、供用物(凶器など)、被害者に与える影響(症状、傷)、
殺害方法や供用物の関連物を体系化
 殺害オントロジーのクラスと推論チャレンジKGの各オブジェクトの関
係
Copyright 2018 FUJITSU LABORATORIES LIMITED26
追加した知識(1/4)
 殺害方法オントロジー
 殺害方法の種類、供用物(凶器など)、被害者に与える症状、殺害方法
や供用物の関連物を体系化
Copyright 2018 FUJITSU LABORATORIES LIMITED
鞭
斬殺
包丁
毒動物
殺害方法
嘔吐
毒蛇
傷跡
めまい
症状
症状症状
犯罪供用物
関連物
kgcf:斬殺 rdf:type owl:Class ;
rdfs:subClassOf kgcf:殺害方法 ,
[ rdf:type owl:Restriction ;
owl:onProperty kgcf:hasOffensiveWeapon ;
owl:someValuesFrom kgcf:刃物
] ,
[ rdf:type owl:Restriction ;
owl:onProperty kgcf:hasSymptom ;
owl:someValuesFrom kgcf:傷跡
] ;
rdfs:label "SwordKilling"@en ,
"斬殺"@ja .
kgcf:包丁斬殺 rdf:type owl:Class ;
rdfs:subClassOf kgcf:斬殺 ,
[ rdf:type owl:Restriction ;
owl:onProperty kgcf:hasOffensiveWeapon ;
owl:someValuesFrom kgcf:包丁
] ;
rdfs:label "SwordKillingByKitchenKnife"@en ,
"包丁斬殺"@ja .
subClassOf
subClassOf
subClassOf
刃物
subClassOf
症状殺害方法
犯罪供用物 関連物
包丁斬殺
subClassOf
犯罪供用物
毒動物殺
毒蛇殺
subClassOf
毒殺
subClassOf
犯罪供用物
犯罪供用物
※図は抜粋
症状
27
追加した知識(2/4)
Copyright 2018 FUJITSU LABORATORIES LIMITED
 殺害方法は、Webや辞書から調査した
殺害方法 説明
斬殺(ざんさつ) 供用物:刃物、作用:斬る、殺すこと。
撲殺(ぼくさつ) 供用物:鈍器、作用:殴る、殺すこと。
絞殺(こうさつ) 供用物:紐状のもの、場所:首、作用:絞める、殺すこと。
刺殺(しさつ) 供用物:刃物、作用:刺す、殺すこと。
殴殺(おうさつ) 作用:殴る、殺すこと。撲殺の上位概念(身体の一部を使って殴ることを含む)
毒殺(どくさつ) 供用物:毒、殺すこと。
扼殺(やくさつ) 供用物:なし、利用:身体の一部、場所:首、動作:絞める、殺すこと。
轢殺(れきさつ) 供用物:車輪を有する物(車など)、作用:轢く、殺すこと。
爆殺(ばくさつ) 供用物:爆弾や爆薬、殺すこと。
圧殺(あっさつ) 作用:押し潰す、殺すこと。
焼殺(しょうさつ) 作用:焼く、殺すこと。
抉殺(けっさつ) 作用:抉る、殺すこと。
溺殺(できさつ) 作用:溺れさせる、殺すこと。
射殺(しゃさつ)
供用物:飛び道具、作用:目標に向かって射つ、殺すこと。銃殺の上位概念(矢などを含
む)。
銃殺(じゅうさつ) 供用物:銃、作用:目標に向かって射つ、殺すこと。
噛殺(かみころす) 供用物:動物など、作用:噛む、殺すこと。
電殺(でんさつ) 供用物:電気、作用:感電させる、殺すこと。
28
追加した知識(3/4)
 事件当日のジュリアの症状を絞り込むために、104シチュエー
ションに「whenプロパティ」を追加
Copyright 2018 FUJITSU LABORATORIES LIMITED
Julia death_day_of_JuliascarnotHave
104
Situation ジュリアの体には傷跡がない
subject
is-a source
when
what
body_of_Julia
where
hasPredicate
追加
29
追加した知識(4/4)
 殺害オントロジーのクラスと推論チャレンジKGの各オブジェ
クトの関係
Copyright 2018 FUJITSU LABORATORIES LIMITED
dog_whip
dog_whip_
of_Roylott
鞭
rdf:type rdf:type
whip
snake
rdf:type
poisonous_snake
the_most_terrible_
snake_of_India
sname
rdf:type
rdf:type
rdf:type
rdf:type
毒蛇
scar
rdf:type
傷跡
30
推論規則(1/2)
 事件当日の被害者の様子を検索し、殺害方法オントロジーと
照らし合わせ、殺害方法を絞り込む
Copyright 2018 FUJITSU LABORATORIES LIMITED
Juliadeath_day_of_Julia
turnPale beDizzy scar
毒殺
震え青白い
斬殺
傷跡
notHave
S S 104
when subject
hasProperty hasProperty
hasPredicate
what
✔ ✔ ✔※
小説KG
殺害方法
オントロジー
SELECT distinct ?situation ?symptom ?symptom_status ?killing
WHERE {
{
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:hasProperty / a ?symptom .
?killing rdfs:subClassOf / owl:onProperty kgcf:hasSymptom .
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
BIND("true" AS ?symptom_status)
} UNION {
BIND(kgcf:傷跡 AS ?symptom)
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:what / a kgcf:傷跡 ;
kgc:hasPredicate ?prop .
FILTER(?prop = kd:have)
BIND("true" AS ?symptom_status)
?killing rdfs:subClassOf kgcf:殺害方法 .
?subkilling rdfs:subClassOf* ?killing .
FILTER EXISTS {
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
?subkilling rdfs:subClassOf* ?killing .
}
} UNION {
BIND(kgcf:傷跡 AS ?symptom)
?situation rdf:type kgc:Situation ;
kgc:subject kd:Julia ;
kgc:when kd:death_day_of_Julia ;
kgc:what / a ?symptom ;
kgc:hasPredicate ?pred .
FILTER(?pred = kd:notHave)
BIND("false" AS ?symptom_status)
?killing rdfs:subClassOf kgcf:殺害方法 .
?subkilling rdfs:subClassOf* ?killing .
FILTER NOT EXISTS {
?killing rdfs:subClassOf / owl:someValuesFrom ?symptom .
?subkilling rdfs:subClassOf* ?killing .
}
}
}
※notHaveなので
傷跡がない殺し方
事件当日のProperty
事件当日の傷跡
(ある場合)
事件当日の傷跡
(ない場合)
31
推論規則(2/2)
 絞り込んだ殺害方法に対して、実行可能な人物を導出
Copyright 2018 FUJITSU LABORATORIES LIMITED
SELECT distinct ?person ?reason ?situation {
{
?situation kgc:hasPredicate kd:exist .
?situation kgc:where/kgc:ofWhole ?person .
?person a kgc:Person .
?situation kgc:subject ?reason .
?reason a/(rdfs:subClassOf*) %%OBJCLASS%% .
}
UNION
{
?situation kgc:hasPredicate kd:have .
?situation kgc:subject ?person .
?person a kgc:Person .
?situation kgc:what ?reason .
?reason a/(rdfs:subClassOf*) %%OBJCLASS%% .
}
}
その人の場所にある
その人が持っている
鞭毒蛇
関連物毒蛇殺
subClassOf*
毒殺
犯罪供用物
room_of_RoylottRoylott
exist
###
390
subject where
hasPredicate hasPredicate
subject
小説KG
XXX
what
whip
ofWhole
have
※(1/2)で導出
rdf:type
rdf:type
以下のクエリの「%%OBJCLASS%%」を
各殺害方法の犯罪供用物・関連物のクラスで
置換して実行
※上記のクエリは、UNION句単位で
設定ファイルで追加可能
32
処理系による実行履歴(1/2)
 コマンド
 結果
 実行時間
 1秒
Copyright 2018 FUJITSU LABORATORIES LIMITED
$ ./apache-jena-3.9.0/bin/sparql --data=data/all.ttl ¥
--query=query.txt --results=JSON
・・・
"results": {
"bindings": [
{
"situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/73" } ,
“symptom”: { “type”: “uri” , “value”: “http://kgchallenge.github.io/ontology/めまい" } ,
"symptom_status": { "type": "literal" , "value": "true" } ,
"killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" }
} ,
{
"situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/72" } ,
"symptom": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/青白い" } ,
"symptom_status": { "type": "literal" , "value": "true" } ,
"killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" }
} ,
{
"situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/104" } ,
"symptom": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/傷跡" } ,
"symptom_status": { "type": "literal" , "value": "false" } ,
"killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" }
}
]
・・・
73の「めまい」から
「毒殺」を推論
72の「青白い」から
「毒殺」を推論
104の「傷跡がない」から
「毒殺」を推論
33
処理系による実行履歴(2/2)
 コマンド
•python 3.5、rdflib:4.2.2
 結果
 実行時間
 10秒
Copyright 2018 FUJITSU LABORATORIES LIMITED
@prefix ns1: <http://kgchallenge.github.io/ontology/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ns1:has_method _:N4d22fac28dc54a74b43608c6d7d7f4b0,
_:N770af8f4248749609dca09966a72f106 .
_:N4d22fac28dc54a74b43608c6d7d7f4b0 a ns1:毒動物殺 .
_:N770af8f4248749609dca09966a72f106 a ns1:毒蛇殺 .
[] a rdf:Statement ;
ns1:has_reason [ ns1:reason_situ <http://kgc.knowledge-graph.jp/data/SpeckledBand/390> ;
ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ] ;
rdf:object _:N770af8f4248749609dca09966a72f106 ;
rdf:predicate ns1:has_method ;
rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> .
[] a rdf:Statement ;
ns1:has_reason [ ns1:reason_situ <http://kgc.knowledge-graph.jp/data/SpeckledBand/390> ;
ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ] ;
rdf:object _:N4d22fac28dc54a74b43608c6d7d7f4b0 ;
rdf:predicate ns1:has_method ;
rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> .
$ python person_detecter.py result.json output.ttl rule.conf
「ロイロット」が
「毒蛇殺」「毒動物殺」を
実行可能であることを推論
根拠が「『whip』を持っていたこと」であり、
それが390で示されている
※説明のために、全てのナレッジグラフに対する結果を記載
(390を含まないナレッジグラフでは結果は無し)
34
ナレッジグラフの使用する範囲を
段階的に変えた条件下での推論
Copyright 2018 FUJITSU LABORATORIES LIMITED35
検証結果
 ID:368 以降削除(10% 削除)
 ロイロットが毒殺の手段を持つことが推論されない
•ロイロットの部屋に鞭があることがわからないため
 ID:288 以降削除(25% 削除)
 10% 削除から変化なし
Copyright 2018 FUJITSU LABORATORIES LIMITED36
まとめ
Copyright 2018 FUJITSU LABORATORIES LIMITED37
 方針
 動機 / 機会 / 方法 の観点からそれぞれを持つ人物を推論
 結果(ロイロットのみ)
 動機のある人
•ロイロット は “金欲” のために ジュリアとヘレン を殺す可能性がある
 機会のある人
•事件が起こった時,ロイロットは以下の場所にいたと推論される
•ロイロット:ロイロットの寝室(ジュリアの想像)(ID53)
•ロイロットの寝室からジュリアの寝室に人が通っていくことはできなかった
 方法がある人
•死んだ当時のジュリアの様子,ロイロットが鞭を持っていたことなどから,
ロイロットが毒蛇や毒動物を用いて殺したと推論される
まとめ
Copyright 2018 FUJITSU LABORATORIES LIMITED38
まとめ
 できたこと
 必要そうな外部知識を示した
•追加・修正した知識 を参照
 あるべきナレッジグラフの形を示した
 推理小説の解き方を示した
 できなかったこと
 「発言」,「思ったこと」,「事実」の区別
•今回は,すべて事実と同様に扱った
•発言は嘘をついていれば,事実ではなくなる
•思ったことは,事実と異なる場合がありうる
 時間の取り扱い
•機会がある人の推論で登場人物の居場所の推論以外では,時間の流れを考慮
しなかった
•時刻が変わると事実が変化している可能性があるが,書かれた事実は時間の
流れとともに変化しないかのように扱った
Copyright 2018 FUJITSU LABORATORIES LIMITED39
ナレッジグラフ推論チャレンジ2018ミートアップ@東京

More Related Content

More from Takanori Ugai

Lodc kgrc 2020 Meeting
Lodc kgrc 2020 MeetingLodc kgrc 2020 Meeting
Lodc kgrc 2020 Meeting
Takanori Ugai
 
推論チャレンジ2019発表資料
推論チャレンジ2019発表資料推論チャレンジ2019発表資料
推論チャレンジ2019発表資料
Takanori Ugai
 
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
Takanori Ugai
 
ナレッジグラフ推論チャレンジ2019技術勉強会
ナレッジグラフ推論チャレンジ2019技術勉強会ナレッジグラフ推論チャレンジ2019技術勉強会
ナレッジグラフ推論チャレンジ2019技術勉強会
Takanori Ugai
 
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
Takanori Ugai
 
ナレッジグラフ推論チャレンジ発表資料
ナレッジグラフ推論チャレンジ発表資料ナレッジグラフ推論チャレンジ発表資料
ナレッジグラフ推論チャレンジ発表資料
Takanori Ugai
 
Knowledge Graph Completion Challenge
Knowledge Graph Completion ChallengeKnowledge Graph Completion Challenge
Knowledge Graph Completion Challenge
Takanori Ugai
 
Nober application
Nober applicationNober application
Nober application
Takanori Ugai
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
Takanori Ugai
 

More from Takanori Ugai (9)

Lodc kgrc 2020 Meeting
Lodc kgrc 2020 MeetingLodc kgrc 2020 Meeting
Lodc kgrc 2020 Meeting
 
推論チャレンジ2019発表資料
推論チャレンジ2019発表資料推論チャレンジ2019発表資料
推論チャレンジ2019発表資料
 
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
第2回ナレッジグラフ推論チャレンジ2019勉強会 ~ 同一事件 A CASE OF IDENTITY ~
 
ナレッジグラフ推論チャレンジ2019技術勉強会
ナレッジグラフ推論チャレンジ2019技術勉強会ナレッジグラフ推論チャレンジ2019技術勉強会
ナレッジグラフ推論チャレンジ2019技術勉強会
 
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
 
ナレッジグラフ推論チャレンジ発表資料
ナレッジグラフ推論チャレンジ発表資料ナレッジグラフ推論チャレンジ発表資料
ナレッジグラフ推論チャレンジ発表資料
 
Knowledge Graph Completion Challenge
Knowledge Graph Completion ChallengeKnowledge Graph Completion Challenge
Knowledge Graph Completion Challenge
 
Nober application
Nober applicationNober application
Nober application
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (16)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

ナレッジグラフ推論チャレンジ2018ミートアップ@東京

  • 2. 自己紹介 チーム名:上小田中411  メンバー:  動機:松下京群  機会:金子貴美,吉川和  手段:小林賢司,小柳佑介  全体取りまとめ:鵜飼孝典,西野文人,織田充  所属:株式会社富士通研究所 Copyright 2018 FUJITSU LABORATORIES LIMITED1
  • 3. 全体像 Copyright 2018 FUJITSU LABORATORIES LIMITED kgcf:motivation_of_murder kgcf:motivation rdfs:subClassOf rdf:typ e kdf:rancor kdf:blind_love kdf:effect_of_drug・・・ rdf:typ e rdf:typ e @prefix kgc: <http://kgc.knowledge- graph.jp/ontology/kgc.owl#> . @prefix kd: <http://kgc.knowledge- graph.jp/data/SpeckledBand/> . @prefix kgcf: <http://kgchallenge.github.io/ontology/#> . @prefix kdf: <http://kgchallenge.github.io/data/#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 鞭 斬殺 包丁 毒動物 殺害方法 嘔吐 毒蛇 傷跡 めまい 症状 症状症状 犯罪供用物 関連物 subClassOf subClassOf subClassOf 刃物 subClassOf 症状殺害方法 犯罪供用物 関連物 包丁斬殺 subCla ssOf 犯罪供用物 毒動物殺 毒蛇殺 subClassOf 毒殺 subClassOf 犯罪供用物 犯罪供用物 ※図は抜粋 症状 犯罪白書 国語辞典 「まだらの紐」KG <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> <http://kgchallenge.github.io/ontology/#hasMotivation> <http://kgchallenge.github.io/ontology/#greed_for_money> ; <http://kgchallenge.github.io/ontology/#want_to_kill> <http://kgc.knowledge- graph.jp/data/SpeckledBand/Julia> , <http://kgc.knowledgegraph.jp/data/SpeckledBand/Helen> . From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> man can go to: http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott> man can go to: http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen From <http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> man can go to: <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ns1:has_method _:Nf4af295447484423afbb23de91bde1c9 . _:Nf4af295447484423afbb23de91bde1c9 a ns1:毒蛇殺 . [] a rdf:Statement ; ns1:has_reason [ ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ; ns1:reason_situation <http://kgc.knowledge-graph.jp/data/SpeckledBand/390> ] ; rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ; rdf:predicate ns1:has_method ; rdf:object _:Nf4af295447484423afbb23de91bde1c9 . # 動機がある人に HasM otivation のタイプを付与する @prefix dash: <ht t p://dat ashapes.org/dash#> . @prefix rdf: <ht t p://w w w.w3.org/1999/02/22-rdf-synt ax-ns#> . @prefix rdfs: <ht t p://ww w.w3.org/2000/01/rdf-schema#> . @prefix schema: <ht t p://schema.org/> . @prefix sh: <ht t p://ww w.w3.org/ns/shacl#> . @prefix xsd: <ht t p://ww w.w3.org/2001/XM LSchema#> . @prefix kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#> . @prefix kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/> . @prefix kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#> . @prefix kdf: <ht t p://kgchallenge.git hub.io/dat a/#> . @prefix agrelon: <ht t p://d-nb.info/st andards/element set/agrelon#> . # お金を得る可能性のある人 # money1 sh:Get MoneyMot ivation a sh:NodeShape ; sh:t arget Class kgc:Person ; sh:order 1 ; sh:rule [ a sh:SPARQLRule ; sh:const ruct """ PREFIX kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#> PREFIX kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/> PREFIX kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#> PREFIX kdf: <ht t p://kgchallenge.git hub.io/dat a/#> PREFIX rdfs: <ht t p://w ww.w 3.org/2000/01/rdf-schema#> CONSTRU CT { # 動機ごとに 分けたい. # その人にとっての金銭感覚や動くお金の規模等で,犯罪につながるほどのことなのか判断されるべき(以下のルールは考慮していない $t his kgcf:hasMotivation kdf:greed_for_money ; kgcf:w ant _t o_kill ?t at get . } W HERE { VALU ES ?lose_pred {kd:give kd:pay kd:lose} . VALU ES ?get _pred {kd:have} . ?subclass_of_scene rdfs:subClassOf kgc:Scene . { ?_ kgc:subject $t his ; kgc:hasPredicat e ?get _pred ; kgc:w hat kd:money ; kgc:if ?if . } U NION { ?__ kgc:w hom $t his ; kgc:hasPredicat e ?lose_pred ; kgc:w hat kd:money ; kgc:if ?if . } # ?if の先がsit uat ionである # sit uat ion が 未来の要素なら←これは何らかのsit uat ionからifで参照されていればいい? # 誰かが死ぬことで未来のsit uat ionが起きる条件を満たさないならば # その人がターゲット # 条件を壊すのは人とは限らないけど... { ?if a ?subclass_of_scene ; kgc:subject ?t arget . } U NION { ?if a ?subclass_of_scene ; kgc:w hom ?t arget . } ?t arget a kgc:Person . # FILTER($t his IN (?subject , ?object )) # ?mot ivat ion kgc:source ?mot ivat ion_source . # ?if kgc:source ?if_source . # filt er(lang(?mot ivat ion_source)='ja') # filt er(lang(?if_source)='ja') } """ ; ] . PREFIX rdf: <ht t p://w ww .w3.org/1999/02/22-rdf-synt ax-ns#> PREFIX rdfs: <ht t p://ww w.w3.org/2000/01/rdf-schema#> PREFIX kgc: <ht t p://kgc.know ledge-graph.jp/ont ology/kgc.ow l#> PREFIX kd: <ht t p://kgc.know ledge-graph.jp/dat a/SpeckledBand/> PREFIX kgcf: <ht t p://kgchallenge.git hub.io/ont ology/#> PREFIX kdf: <ht t p://kgchallenge.git hub.io/dat a/#> # SELECT dist inct ?x ?y ?hole ?scene # W HERE{ CONSTRU CT{ ?x kdf:haveOpenHoleTo ?y . ?y kdf:haveOpenHoleTo ?x . } W HERE{ # ?x と ?y が穴でつながっている ?scene rdf:t ype ?scenet ype . ?scene kgc:hasPredicat e ?predexist . ?scene kgc:subject ?hole . { ?scene kgc:from ?x . ?scene kgc:t o ?y . } U NION { ?scene kgc:from ?y . ?scene kgc:t o ?x . } U NION { ?scene kgc:w here ?x . ?scene kgc:w here ?y . } U NION { ?scene kgc:w here ?x . ?scene kgc:t o ?y . } U NION { ?scene kgc:w here ?y . ?scene kgc:t o ?x . } ?x rdf:t ype ?xt ype . ?y rdf:t ype ?yt ype . {?hole rdf:t ype kgcf:Hole .} UNION {?hole rdf:t ype ?holet ype . ?holet ype rdfs:subClassOf+ kgcf:Hole .} filt er(?scenet ype in (kgc:Sit uat ion, kgc:Thought , kgc:Talk)) filt er(?predexist in (kd:go, kd:exist)) filt er(?xt ype in (kgc:Object , kgc:Place)) filt er(?yt ype in (kgc:Object , kgc:Place)) filt er(?x != ?y) M INUS { # 人は ?hole を通れない ?scene2 rdf:t ype ?scenet ype2 . ?scene2 kgc:hasPredicat e ?prednot go . ?scene2 kgc:subject kd:man . { {?scene2 kgc:from ?x . ?scene2 kgc:t o ?y .} UNION {?scene2 kgc:from ?y . ?scene2 kgc:t o ?x .} } U NION { ?scene2 kgc:w here ?hole . } filt er(?scenet ype2 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk)) filt er(?prednot go in (kd:cannot Go, kd:not Go)) } M INUS { # 穴が塞がっている(内部に障害物がある) ?scene4 rdf:t ype ?scenet ype4 . { ?scene4 kgc:hasPredicat e kd:exist . ?scene4 kgc:w here ?hole . ?scene4 kgc:subject ?obst acle . } U NION { ?scene4 kgc:hasPredicat e kd:have . ?scene4 kgc:subject ?hole . ?scene4 kgc:w hat ?obst acle . } ?obst acle rdf:t ype kgc:Object . filt er(?scenet ype4 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk)) } M INUS { # ?hole が通れないような性質をもつ(鍵がかかっている、狭い、閉まっている、小さい) ?scene3 rdf:t ype ?scenet ype3 . ?scene3 kgc:hasPropert y ?prop . ?scene3 kgc:subject ?hole . filt er(?scenet ype3 in (kgc:Sit uat ion, kgc:Thought , kgc:Talk)) filt er(?prop in (kd:lock, kd:narrow , kd:close, kd:small, kd:beSmall)) } }order by (?x) SELECT distinct ?situation ?symptom ?symptom_status ?killing WHERE { { ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:hasProperty / a ?symptom . ?killing rdfs:subClassOf / owl:onProperty kgcf:hasSymptom . ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . BIND("true" AS ?symptom_status) } UNION { BIND(kgcf:傷跡 AS ?symptom) ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:what / a ?symptom ; kgc:hasPredicate ?pred . FILTER(?pred = kd:notHave) BIND("false" AS ?symptom_status) ?killing rdfs:subClassOf kgcf:殺害方法 . ?subkilling rdfs:subClassOf* ?killing . FILTER NOT EXISTS { ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . ?subkilling rdfs:subClassOf* ?killing . } } UNION { BIND(kgcf:傷跡 AS ?symptom) ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:what / a kgcf:傷跡 ; kgc:hasPredicate ?prop . FILTER(?prop = kd:have) BIND("true" AS ?symptom_status) ?killing rdfs:subClassOf kgcf:殺害方法 . ?subkilling rdfs:subClassOf* ?killing . FILTER EXISTS { ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . ?subkilling rdfs:subClassOf* ?killing . } } } PREFIX rdfs: <http://www.w3.org/2000/01/rdf- schema#> PREFIX kgc: <http://kgc.knowledge- graph.jp/ontology/kgc.owl#> PREFIX kd: <http://kgc.knowledge- graph.jp/data/SpeckledBand/> SELECT DISTINCT ?id ?source ?predicate ?subj ?where WHERE{BIND(kd:67 as ?event) ?event kgc:when ?crime_time. ?id kgc:when ?crime_time; kgc:source ?source; kgc:hasPredicate ?predicate; kgc:subject ?subj; kgc:where ?where. ?subj a kgc:Person. FILTER(LANG(?source) = 'ja'). MINUS{ ?event kgc:then+ ?id. } } { ?situation kgc:hasPredicate kd:exist . ?situation kgc:where/kgc:ofWhole ?person . ?person a kgc:Person . ?situation kgc:subject ?reason . ?reason a/(rdfs:subClassOf*) %%OBJCLASS%% . } { ?situation kgc:hasPredicate kd:have . ?situation kgc:subject ?person . ?person a kgc:Person . ?situation kgc:what ?reason . ?reason a/(rdfs:subClassOf*) %%OBJCLASS%% . } SHACL(Shape)/ SPARQLクエリ 判定結果 ※動機、機会、手段それぞれの判定結果 殺害動機/殺害方法オントロジ + 判定スクリプト ※動機、機会、手段それぞれで判定 ※最後の総合判定は人手 (一部人手で追加) (人手) (人手) 2
  • 4. 次の3つの観点で推論を行う 動機 を持つか 機会 を持つか 方法 を持つか 犯人捜しの方針 Copyright 2018 FUJITSU LABORATORIES LIMITED3
  • 6. 動機がある人: 概要と基本方針  基本方針  殺人動機のオントロジを作成 (犯罪白書を参考に)  殺人動機が生じる状況を記述 / 該当する人物を推論  動機を持つ状況下の人物が,明確に殺害したい人物を持つか推論  追加した知識,修正した知識  殺人動機のオントロジ / 家族・友人関係のオントロジ / 登場人物の家族・友人関係 / 本文中から得られる知識 Copyright 2018 FUJITSU LABORATORIES LIMITED 殺人の 動機を持ってもおかしくない状況 かつ 対象が明確 であれば殺害の動機を持つ 5
  • 7.  犯罪白書を参考に殺人動機のオントロジを作成  殺人の動機 分類  怨恨  痴情  薬物の作用等  自己顕示  防衛・護身(自己防衛)  服従・迎合  信条・信念  生活充当(金欲)  遊興費充当(金欲)  その他(今回は省いた) 動機:追加した常識:殺人動機のオントロジ kgcf:motivation_of_murder kgcf:motivation rdfs:subClassOf rdf:type kdf:rancor kdf:blind_love kdf:effect_of_drug・・・ rdf:typerdf:type @prefix kgc: <http://kgc.knowledge- graph.jp/ontology/kgc.owl#> . @prefix kd: <http://kgc.knowledge- graph.jp/data/SpeckledBand/> . @prefix kgcf: <http://kgchallenge.github.io/ontology/#> . @prefix kdf: <http://kgchallenge.github.io/data/#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . Copyright 2018 FUJITSU LABORATORIES LIMITED6
  • 8.  犯罪白書を参考に殺人動機のオントロジを作成  殺人の動機 分類  怨恨  痴情  薬物の作用等  自己顕示  防衛・護身(自己防衛)  服従・迎合  信条・信念  生活充当(金欲)  遊興費充当(金欲)  その他(今回は省いた) 動機:追加した常識:殺人動機のオントロジ kgcf:motivation_of_murder kgcf:motivation rdfs:subClassOf rdf:type kdf:rancor kdf:blind_love kdf:effect_of_drug・・・ rdf:typerdf:type @prefix kgc: <http://kgc.knowledge- graph.jp/ontology/kgc.owl#> . @prefix kd: <http://kgc.knowledge- graph.jp/data/SpeckledBand/> . @prefix kgcf: <http://kgchallenge.github.io/ontology/#> . @prefix kdf: <http://kgchallenge.github.io/data/#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . Copyright 2018 FUJITSU LABORATORIES LIMITED7
  • 9. 動機:推論規則  殺人の動機を持つ人は...  何らかの事象が起きると お金を得る or 失う 可能性のある人(金欲)  明確な誰かから恐怖や肉体的 or 精神的苦痛を与えれられている人(自己防 衛)  親密な人が亡くなっていて,亡くなった原因となる人物の予測がついて いる(怨恨) CONSTRUCT { $this kgcf:hasMotivation kgcf:rancor ; kgcf:want_to_kill ?killer . } WHERE { VALUES ?pred_of_think {kd:suspect} . ?subclass_of_scene rdfs:subClassOf kgc:Scene . # 誰かが死んだシーン ?die_situation a ?subclass_of_scene ; kgc:hasPredicate kd:die ; kgc:subject ?dead_person . # 死人と近い関係にあった人 ?relation_of_close_person a kgcf:relation_of_family . $this ?relation_of_close_person ?dead_person . # 殺人犯に当たりがついているか ?think_situatoin a ?subclass_of_scene ; kgc:hasPredicate ?pred_of_think ; ... ... } 【ルール:親密な人が亡くなっていて,亡くなった原因となる人物の予測がついている人】 ※ 殺人の動機を持つシチュエーションは 3つ以外にも考えられるが今回は未実装 Copyright 2018 FUJITSU LABORATORIES LIMITED8
  • 10. 動機:推論規則  明確な誰かから恐怖や肉体的 or 精神的苦痛を与えれられてい る人(自己防衛) Copyright 2018 FUJITSU LABORATORIES LIMITED CONSTRUCT { $this kgcf:hasMotivation kdf:self_defence ; kgcf:want_to_kill ?target . } WHERE { # 関連する述語をまとめる VALUES ?pred_of_beScare {kd:beScared kd:beCruellyUsed} . VALUES ?pred_of_scare {kd:scared kd:cruellyUsed} . # 恐怖を感じている人と与えている人を検索 ?subclass_of_scene rdfs:subClassOf kgc:Scene . { ?situation kgc:hasPredicate ?pred_of_beScare ; # ?pred_of_beScare ; kgc:subject $this ; kgc:whom ?target . } UNION { ?situation kgc:hasPredicate ?pred_of_scare ; kgc:subject ?target ; kgc:whom $this . } $this a kgc:Person . } 9
  • 11. 動機:推論規則  何らかの事象が起きると お金を得る or 失う 可能性のある人 (金欲) Copyright 2018 FUJITSU LABORATORIES LIMITED CONSTRUCT { $this kgcf:hasMotivation kdf:greed_for_money ; kgcf:want_to_kill ?tatget . } WHERE { VALUES ?lose_pred {kd:give kd:pay kd:lose} . VALUES ?get_pred {kd:have} . # 何らかの理由でお金を失う可能性がある ?subclass_of_scene rdfs:subClassOf kgc:Scene . { ?_ kgc:subject $this ; kgc:hasPredicate ?get_pred ; kgc:what kd:money ; kgc:if ?if . } UNION { ?__ kgc:whom $this ; kgc:hasPredicate ?lose_pred ; kgc:what kd:money ; kgc:if ?if . } # 何らかの事象 { ?if a ?subclass_of_scene ; kgc:subject ?target . } UNION { ?if a ?subclass_of_scene ; kgc:whom ?target . } ?target a kgc:Person . } 10
  • 12. 動機:追加した知識,修正した知識  追加した知識,修正した知識  家族・友人関係のナレッジ / 登場人物の家族・友人関係 •追加した理由:親密な関係を持つ人物を判断するため •ex) kd:Roylott agrelon:hasChildInlaw kd:Helen .  本文中にある記述(オリジナルのKGになかった部分) •追加した理由:動機の有無を判断する上で重要な記述だと考えたため •ex) kdf:_023 a kgc:Situation ; kgc:source "村の人々はすっかりおびえてしまい,"@ja ; kgc:subject kd:villager_of_Stoke_Moran ; kgc:hasPredicate kd:beScared; kgc:whom kd:Roylott . Copyright 2018 FUJITSU LABORATORIES LIMITED11
  • 13. 動機:処理系による実行例 $ cat output/merged.output.ttl <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> <http://kgchallenge.github.io/ontology/#hasMotivation> <http://kgchallenge.github.io/data/#greed_for_money> ; <http://kgchallenge.github.io/ontology/#want_to_kill> <http://kgc.knowledge-graph.jp/data/SpeckledBand/Julia> , <http://kgc.knowledge-graph.jp/data/SpeckledBand/Helen> . <http://kgc.knowledge-graph.jp/data/SpeckledBand/Helen> <http://kgchallenge.github.io/ontology/#hasMotivation> <http://kgchallenge.github.io/data/#self_defence> ; <http://kgchallenge.github.io/ontology/#want_to_kill> <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> . <http://kgc.knowledge-graph.jp/data/SpeckledBand/villager_of_Stoke_Moran> <http://kgchallenge.github.io/ontology/#hasMotivation> <http://kgchallenge.github.io/data/#self_defence> ; <http://kgchallenge.github.io/ontology/#want_to_kill> <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> . 【実行結果】 ロイロット は “金欲” のために ジュリア と ヘレン を殺す可能性がある 村人 は “自己防衛” のために ロイロット を殺す可能性がある ヘレン は “自己防衛” のために ロイロット を殺す可能性がある 【要約】 【実行時間】 1.5s 【実行コマンド】 $ sh run_inference.sh Copyright 2018 FUJITSU LABORATORIES LIMITED12
  • 14. できていないこと・気づき  できていないこと  殺人の動機につながる金銭授受と一般的な支払などで生じるものとの区 別  気づき  明記されていないが推測したい情報のナレッジ化 をどうするか •「ヘレンはロイロットをよく思っていない」と明記されていないが本文から 推測したい  事実だと確定できない内容の扱い をどうするか •発言という行為は事実だが、発言内容が事実であるかはわからない •発言をすべて事実にすると、嘘をついている可能性を無視してしまう  自然言語での表現の違いはどこまでナレッジ化すべきか •受動 / 能動 で表現される状況(物理的事実)が変わらない場合、 RDF上の表現 は 受動 / 能動 の2つのパターンを表現すべきかどうか •表現によるニュアンスやイメージの違い •ex) 私、わたし、ワタシ / 私、僕 / わたし、あたし / 兄 姉、お兄ちゃん お姉ちゃん Copyright 2018 FUJITSU LABORATORIES LIMITED ・ できる限り同じものには同じURIを振って別途状態(オプション)を付加する形で表現したい ・ 付加したオプションまで考える必要がないときは、意識せずに使える形にしておきたい 13
  • 16. 機会がある人  基本方針 事件当夜,犯行現場に移動可能な場所にいた人物は機会がある •時間の繋がり:犯行時刻(事件当夜)直前に各人が居ることを確認できた場所 •空間の繋がり:各人が居る場所から移動可能な場所 犯行現場の特定はスコープ外 •∵犯行現場は手段に依存する •各登場人物の居場所から任意の場所への移動可否を特定できる仕組みとした 今回は、”Juliaの部屋”を犯行現場候補として実行 •正解: 犯行時にJuliaの部屋に行ける人はいない  追加した知識,修正した知識  穴クラス / 庭に面した窓の知識 / 記述の統一・修正 Copyright 2018 FUJITSU LABORATORIES LIMITED 真の犯行現場: Roylottの部屋 15
  • 17. 機会(時間)―推論規則  前提 事件発生時: ID67「事件当夜、ジュリアの声が聞こえた」 事件発生時の居場所 •ID67と同時刻の各シーンの主語(kgc:subject)の人物は、 事件発生時、kgc:where に書かれた場所にいる 事件発生直前のシーン •ID67 と同じ絶対時間(kgc:time)を持つ述語(kgc:hasPredicate)は、 事件発生時点で起きたイベント、または、事件発生時点で成立している状態 •ID67 と kgc:then で後接するものは、事件発生後の出来事として除外する Copyright 2018 FUJITSU LABORATORIES LIMITED kd:67 事件当夜、ジュリアの声が聞こえた kd:bedroom_of_Helen 1881-12-02T00:00:00 kd:hear kd:Helen kd:68 kgc:source kgc:time kgc:subject kgc:hasPredicate kgc:where kgc:then 16
  • 18.  ID67 と同じ時刻のシーンから 各人の居場所を推論 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX kgc: <http://kgc.knowledge-graph.jp/ontology/kgc.owl#> PREFIX kd: <http://kgc.knowledge-graph.jp/data/SpeckledBand/> SELECT DISTINCT ?id ?source ?predicate ?subj ?where WHERE{ BIND(kd:67 as ?event) ?event kgc:when ?crime_time. # 事件と同じ時刻のシーンとその情報 ?id kgc:when ?crime_time; kgc:subject ?subj; kgc:where ?where; ... . ?subj a kgc:Person. MINUS{ ?event kgc:then+ ?id. } } 機会(時間)―実行履歴1 Copyright 2018 FUJITSU LABORATORIES LIMITED ID67 と then で後接する,同 じ絶対時間を持つ文を除外 ID67 と同じ絶対時間を持つ文 の情報を取得 事件発生時刻 17
  • 19. 機会(時間)―実行履歴2  実行結果 Copyright 2018 FUJITSU LABORATORIES LIMITED 各登場人物の居場所が以下であることがわかる ジュリア :ジュリアの寝室(ID55, ID103) ヘレン :ヘレンの寝室(ID67) ロイロット:ロイロットの寝室(ID53) ロマ :庭(ID107) 18
  • 20. 機会(空間)―追加した知識、修正した知識  穴クラス  場所と場所を繋ぎ、 人やモノが通り抜け可能なもの  クラスとインスタンスを整理し、 実体とナレッジグラフのエンティティを 一対一対応とした  「庭側の窓は庭に面している」知識  「ジュリアの部屋の窓」を 「庭側の窓」「廊下側の窓」で区別  ダミーのシーンで「庭に面している」ことを 記述  その他、表記の統一 Copyright 2018 FUJITSU LABORATORIES LIMITED kgcf:Hole a rdfs:Class ; rdfs:subclassOf kgc:Object . kgcf:Ventilator a rdfs:Class ; rdfs:subClassOf kgcf:Hole . kgcf:Door a rdfs:Class ; rdfs:subClassOf kgcf:Hole . kgcf:Window a rdfs:Class ; rdfs:subClassOf kgcf:Hole . kgcf:Chimney a rdfs:Class ; rdfs:subClassOf kgcf:Hole . kd:door_of_bedroom_of_Julia a kgcf:Door . kd:window_of_bedroom_of_Helen a kgcf:Window . kd:window_of_bedroom_of_Roylott a kgcf:Window . … kd:dummy1 rdf:type kgc:Situation; kgc:hasPredicate kd:exist ; kgc:subject kdf:window_of_bedroom_of_Julia_gardenside ; kgc:where kd:bedroom_of_Julia ; kgc:from kd:bedroom_of_Julia ; kgc:to kd:garden_of_Roylott. サブクラス: 通風口、ドア、 窓、煙突 19
  • 21. 機会(空間)―推論規則(1)  「通れる穴で接続した場所」の関係をSPARQLを用いて記述 1. 穴を介して隣り合う2つの場所を表現するパターン • 前提:KGに記述の無い穴は存在しないものとする 2. 人が通れない穴を表現するパターン(候補から削除)  上記を組み合わせて関係を定義  観察:場所の関係はシーンを中心に記述されている  ある場所から到達可能な場所を辿る  プロパティー・パス・マッチング  出力:場所sと、そこから到達できる場所tのリスト Copyright 2018 FUJITSU LABORATORIES LIMITED CONSTRUCT{ ?x kdf:haveOpenHoleTo ?y . } WHERE{(通れる穴のパターン)} SELECT distinct ?s ?t WHERE { ?s kdf:haveOpenHoleTo+ ?t . } 廊下とJuliaの寝室の関係 シーン 場所1 場所2 20
  • 22. 機会(空間)―推論規則(2)  穴を介して隣り合う2つの場所 2. 穴が障害物で塞がっている  人が通れない穴 1. 人が通れない 2. あ 3. 穴の性質(鍵がかかっている、狭い、 閉まっている) Copyright 2018 FUJITSU LABORATORIES LIMITED SELECT distinct ?x ?y ?hole ?scene1 WHERE { ?scene1 kgc:hasPredicate ?predexist . ?scene1 kgc:subject ?hole . ?hole rdf:type kgcf:Hole . { ?scene1 kgc:from ?x . ?scene1 kgc:to ?y . } UNION { ?scene1 kgc:where ?x . ?scene1 kgc:where ?y . } UNION { ?scene1 kgc:where ?x . ?scene1 kgc:to ?y .}…} SELECT distinct ?x ?y ?hole ?being ?scene2 WHERE { ?scene2 kgc:subject kd:man . ?scene2 kgc:hasPredicate ?prednotgo . { ?scene2 kgc:from ?x . ?scene2 kgc:to ?y . … } UNION { ?scene2 kgc:where ?hole . ?hole rdf:type kgcf:Hole . }…} ”通れない”を表す述語 SELECT distinct ?hole ?prop ?scene3 WHERE { ?scene3 kgc:hasProperty ?prop . ?scene3 kgc:subject ?hole . ?hole rdf:type kgcf:Hole . filter(?prop in (kd:lock, kd:narrow, kd:close, kd:small, kd:beSmall)) …} SELECT distinct ?hole ?obstacle ?scene WHERE { { ?scene kgc:subject ?obstacle . ?scene kgc:hasPredicate kd:exist . ?scene kgc:where ?hole . } UNION { ?scene kgc:subject ?hole . ?scene kgc:hasPredicate kd:have . ?scene kgc:what ?obstacle . } ?hole rdf:type kgcf:Hole . ?obstacle rdf:type kgc:Object . …} 通れる穴で接続した場所 SELECT distinct ?x ?y ?hole ?scene WHERE { (穴で介して隣り合う)MINUS {人が穴を通れない}} 21
  • 23. 機会(空間)―処理系による実行履歴  開始地点の設定  ID:67時点で、Helen, Roylott, Roma のいた3地点  各々が移動できる場所を推論  1. 「パターン1: 人が通れない」「パターン2: 穴が障害物で塞がっている」を適用 • 各部屋から窓を通って廊下に出る可能性を排除 • 「庭側の窓が鎧戸で閉ざされている」で、庭との行き来を排除  2. 「パターン3: 穴の性質(鍵がかかっている、狭い、閉まっている)」を適用 • Juliaの部屋のドアは閉まっており、廊下と行き来できない • RoylottとJuliaの部屋間の通風口は小さく、人は通れない Copyright 2018 FUJITSU LABORATORIES LIMITED <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> # Helen: Helen の寝室 <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott> # Roylott: Roylott の寝室 <http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> # Roma: 屋敷の庭 From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen> man can go to: http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott From <http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Roylott> man can go to: http://kgc.knowledge-graph.jp/data/SpeckledBand/corridor http://kgc.knowledge-graph.jp/data/SpeckledBand/bedroom_of_Helen From <http://kgc.knowledge-graph.jp/data/SpeckledBand/garden_of_Roylott> man can go to: 誰もJuliaの部屋に 行けない 22
  • 24. 機会(空間)―今後の課題  時刻の考慮  今回は、あるシーンで記述されている状態全てを「事件当時の状態」とみなして処 理している  しかし、場所同士の接続関係や穴の通過可否は、 本来時間に応じて変化しうる  例: •Juliaは事件直前にドアを閉め、ロックした←それ以前はドアを通ることができた •RoylottとJuliaの部屋間に通風口が空いたのは事件前である  そのため、”犯行時刻における”接続関係を、変化や状態を示すシーンの時間 (”kgc:time”) を利用するなどして取得する必要がある Copyright 2018 FUJITSU LABORATORIES LIMITED23
  • 26. 手段がある人  基本方針  事件当夜の被害者や現場の様子から絞り込まれた殺害方法に対して、そ れら殺害方法を実現するために必要な/関連するモノを所有する人が 「手段がある人」  推論規則 1. 殺害方法オントロジーを使用して、事件当夜の被害者や現場の様子か ら、殺害方法を絞り込む 2. 絞り込んだ殺害方法に対して、実行可能な人物を導出  追加した知識  殺害方法オントロジー •殺害方法の種類、供用物(凶器など)、被害者に与える影響(症状、傷)、 殺害方法や供用物の関連物を体系化  殺害オントロジーのクラスと推論チャレンジKGの各オブジェクトの関 係 Copyright 2018 FUJITSU LABORATORIES LIMITED26
  • 27. 追加した知識(1/4)  殺害方法オントロジー  殺害方法の種類、供用物(凶器など)、被害者に与える症状、殺害方法 や供用物の関連物を体系化 Copyright 2018 FUJITSU LABORATORIES LIMITED 鞭 斬殺 包丁 毒動物 殺害方法 嘔吐 毒蛇 傷跡 めまい 症状 症状症状 犯罪供用物 関連物 kgcf:斬殺 rdf:type owl:Class ; rdfs:subClassOf kgcf:殺害方法 , [ rdf:type owl:Restriction ; owl:onProperty kgcf:hasOffensiveWeapon ; owl:someValuesFrom kgcf:刃物 ] , [ rdf:type owl:Restriction ; owl:onProperty kgcf:hasSymptom ; owl:someValuesFrom kgcf:傷跡 ] ; rdfs:label "SwordKilling"@en , "斬殺"@ja . kgcf:包丁斬殺 rdf:type owl:Class ; rdfs:subClassOf kgcf:斬殺 , [ rdf:type owl:Restriction ; owl:onProperty kgcf:hasOffensiveWeapon ; owl:someValuesFrom kgcf:包丁 ] ; rdfs:label "SwordKillingByKitchenKnife"@en , "包丁斬殺"@ja . subClassOf subClassOf subClassOf 刃物 subClassOf 症状殺害方法 犯罪供用物 関連物 包丁斬殺 subClassOf 犯罪供用物 毒動物殺 毒蛇殺 subClassOf 毒殺 subClassOf 犯罪供用物 犯罪供用物 ※図は抜粋 症状 27
  • 28. 追加した知識(2/4) Copyright 2018 FUJITSU LABORATORIES LIMITED  殺害方法は、Webや辞書から調査した 殺害方法 説明 斬殺(ざんさつ) 供用物:刃物、作用:斬る、殺すこと。 撲殺(ぼくさつ) 供用物:鈍器、作用:殴る、殺すこと。 絞殺(こうさつ) 供用物:紐状のもの、場所:首、作用:絞める、殺すこと。 刺殺(しさつ) 供用物:刃物、作用:刺す、殺すこと。 殴殺(おうさつ) 作用:殴る、殺すこと。撲殺の上位概念(身体の一部を使って殴ることを含む) 毒殺(どくさつ) 供用物:毒、殺すこと。 扼殺(やくさつ) 供用物:なし、利用:身体の一部、場所:首、動作:絞める、殺すこと。 轢殺(れきさつ) 供用物:車輪を有する物(車など)、作用:轢く、殺すこと。 爆殺(ばくさつ) 供用物:爆弾や爆薬、殺すこと。 圧殺(あっさつ) 作用:押し潰す、殺すこと。 焼殺(しょうさつ) 作用:焼く、殺すこと。 抉殺(けっさつ) 作用:抉る、殺すこと。 溺殺(できさつ) 作用:溺れさせる、殺すこと。 射殺(しゃさつ) 供用物:飛び道具、作用:目標に向かって射つ、殺すこと。銃殺の上位概念(矢などを含 む)。 銃殺(じゅうさつ) 供用物:銃、作用:目標に向かって射つ、殺すこと。 噛殺(かみころす) 供用物:動物など、作用:噛む、殺すこと。 電殺(でんさつ) 供用物:電気、作用:感電させる、殺すこと。 28
  • 29. 追加した知識(3/4)  事件当日のジュリアの症状を絞り込むために、104シチュエー ションに「whenプロパティ」を追加 Copyright 2018 FUJITSU LABORATORIES LIMITED Julia death_day_of_JuliascarnotHave 104 Situation ジュリアの体には傷跡がない subject is-a source when what body_of_Julia where hasPredicate 追加 29
  • 30. 追加した知識(4/4)  殺害オントロジーのクラスと推論チャレンジKGの各オブジェ クトの関係 Copyright 2018 FUJITSU LABORATORIES LIMITED dog_whip dog_whip_ of_Roylott 鞭 rdf:type rdf:type whip snake rdf:type poisonous_snake the_most_terrible_ snake_of_India sname rdf:type rdf:type rdf:type rdf:type 毒蛇 scar rdf:type 傷跡 30
  • 31. 推論規則(1/2)  事件当日の被害者の様子を検索し、殺害方法オントロジーと 照らし合わせ、殺害方法を絞り込む Copyright 2018 FUJITSU LABORATORIES LIMITED Juliadeath_day_of_Julia turnPale beDizzy scar 毒殺 震え青白い 斬殺 傷跡 notHave S S 104 when subject hasProperty hasProperty hasPredicate what ✔ ✔ ✔※ 小説KG 殺害方法 オントロジー SELECT distinct ?situation ?symptom ?symptom_status ?killing WHERE { { ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:hasProperty / a ?symptom . ?killing rdfs:subClassOf / owl:onProperty kgcf:hasSymptom . ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . BIND("true" AS ?symptom_status) } UNION { BIND(kgcf:傷跡 AS ?symptom) ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:what / a kgcf:傷跡 ; kgc:hasPredicate ?prop . FILTER(?prop = kd:have) BIND("true" AS ?symptom_status) ?killing rdfs:subClassOf kgcf:殺害方法 . ?subkilling rdfs:subClassOf* ?killing . FILTER EXISTS { ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . ?subkilling rdfs:subClassOf* ?killing . } } UNION { BIND(kgcf:傷跡 AS ?symptom) ?situation rdf:type kgc:Situation ; kgc:subject kd:Julia ; kgc:when kd:death_day_of_Julia ; kgc:what / a ?symptom ; kgc:hasPredicate ?pred . FILTER(?pred = kd:notHave) BIND("false" AS ?symptom_status) ?killing rdfs:subClassOf kgcf:殺害方法 . ?subkilling rdfs:subClassOf* ?killing . FILTER NOT EXISTS { ?killing rdfs:subClassOf / owl:someValuesFrom ?symptom . ?subkilling rdfs:subClassOf* ?killing . } } } ※notHaveなので 傷跡がない殺し方 事件当日のProperty 事件当日の傷跡 (ある場合) 事件当日の傷跡 (ない場合) 31
  • 32. 推論規則(2/2)  絞り込んだ殺害方法に対して、実行可能な人物を導出 Copyright 2018 FUJITSU LABORATORIES LIMITED SELECT distinct ?person ?reason ?situation { { ?situation kgc:hasPredicate kd:exist . ?situation kgc:where/kgc:ofWhole ?person . ?person a kgc:Person . ?situation kgc:subject ?reason . ?reason a/(rdfs:subClassOf*) %%OBJCLASS%% . } UNION { ?situation kgc:hasPredicate kd:have . ?situation kgc:subject ?person . ?person a kgc:Person . ?situation kgc:what ?reason . ?reason a/(rdfs:subClassOf*) %%OBJCLASS%% . } } その人の場所にある その人が持っている 鞭毒蛇 関連物毒蛇殺 subClassOf* 毒殺 犯罪供用物 room_of_RoylottRoylott exist ### 390 subject where hasPredicate hasPredicate subject 小説KG XXX what whip ofWhole have ※(1/2)で導出 rdf:type rdf:type 以下のクエリの「%%OBJCLASS%%」を 各殺害方法の犯罪供用物・関連物のクラスで 置換して実行 ※上記のクエリは、UNION句単位で 設定ファイルで追加可能 32
  • 33. 処理系による実行履歴(1/2)  コマンド  結果  実行時間  1秒 Copyright 2018 FUJITSU LABORATORIES LIMITED $ ./apache-jena-3.9.0/bin/sparql --data=data/all.ttl ¥ --query=query.txt --results=JSON ・・・ "results": { "bindings": [ { "situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/73" } , “symptom”: { “type”: “uri” , “value”: “http://kgchallenge.github.io/ontology/めまい" } , "symptom_status": { "type": "literal" , "value": "true" } , "killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" } } , { "situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/72" } , "symptom": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/青白い" } , "symptom_status": { "type": "literal" , "value": "true" } , "killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" } } , { "situation": { "type": "uri" , "value": "http://kgc.knowledge-graph.jp/data/SpeckledBand/104" } , "symptom": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/傷跡" } , "symptom_status": { "type": "literal" , "value": "false" } , "killing": { "type": "uri" , "value": "http://kgchallenge.github.io/ontology/毒殺" } } ] ・・・ 73の「めまい」から 「毒殺」を推論 72の「青白い」から 「毒殺」を推論 104の「傷跡がない」から 「毒殺」を推論 33
  • 34. 処理系による実行履歴(2/2)  コマンド •python 3.5、rdflib:4.2.2  結果  実行時間  10秒 Copyright 2018 FUJITSU LABORATORIES LIMITED @prefix ns1: <http://kgchallenge.github.io/ontology/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xml: <http://www.w3.org/XML/1998/namespace> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> ns1:has_method _:N4d22fac28dc54a74b43608c6d7d7f4b0, _:N770af8f4248749609dca09966a72f106 . _:N4d22fac28dc54a74b43608c6d7d7f4b0 a ns1:毒動物殺 . _:N770af8f4248749609dca09966a72f106 a ns1:毒蛇殺 . [] a rdf:Statement ; ns1:has_reason [ ns1:reason_situ <http://kgc.knowledge-graph.jp/data/SpeckledBand/390> ; ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ] ; rdf:object _:N770af8f4248749609dca09966a72f106 ; rdf:predicate ns1:has_method ; rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> . [] a rdf:Statement ; ns1:has_reason [ ns1:reason_situ <http://kgc.knowledge-graph.jp/data/SpeckledBand/390> ; ns1:related_reason <http://kgc.knowledge-graph.jp/data/SpeckledBand/whip> ] ; rdf:object _:N4d22fac28dc54a74b43608c6d7d7f4b0 ; rdf:predicate ns1:has_method ; rdf:subject <http://kgc.knowledge-graph.jp/data/SpeckledBand/Roylott> . $ python person_detecter.py result.json output.ttl rule.conf 「ロイロット」が 「毒蛇殺」「毒動物殺」を 実行可能であることを推論 根拠が「『whip』を持っていたこと」であり、 それが390で示されている ※説明のために、全てのナレッジグラフに対する結果を記載 (390を含まないナレッジグラフでは結果は無し) 34
  • 36. 検証結果  ID:368 以降削除(10% 削除)  ロイロットが毒殺の手段を持つことが推論されない •ロイロットの部屋に鞭があることがわからないため  ID:288 以降削除(25% 削除)  10% 削除から変化なし Copyright 2018 FUJITSU LABORATORIES LIMITED36
  • 37. まとめ Copyright 2018 FUJITSU LABORATORIES LIMITED37
  • 38.  方針  動機 / 機会 / 方法 の観点からそれぞれを持つ人物を推論  結果(ロイロットのみ)  動機のある人 •ロイロット は “金欲” のために ジュリアとヘレン を殺す可能性がある  機会のある人 •事件が起こった時,ロイロットは以下の場所にいたと推論される •ロイロット:ロイロットの寝室(ジュリアの想像)(ID53) •ロイロットの寝室からジュリアの寝室に人が通っていくことはできなかった  方法がある人 •死んだ当時のジュリアの様子,ロイロットが鞭を持っていたことなどから, ロイロットが毒蛇や毒動物を用いて殺したと推論される まとめ Copyright 2018 FUJITSU LABORATORIES LIMITED38
  • 39. まとめ  できたこと  必要そうな外部知識を示した •追加・修正した知識 を参照  あるべきナレッジグラフの形を示した  推理小説の解き方を示した  できなかったこと  「発言」,「思ったこと」,「事実」の区別 •今回は,すべて事実と同様に扱った •発言は嘘をついていれば,事実ではなくなる •思ったことは,事実と異なる場合がありうる  時間の取り扱い •機会がある人の推論で登場人物の居場所の推論以外では,時間の流れを考慮 しなかった •時刻が変わると事実が変化している可能性があるが,書かれた事実は時間の 流れとともに変化しないかのように扱った Copyright 2018 FUJITSU LABORATORIES LIMITED39