ナレッジグラフ
名探偵コナンの複雑な人間関係をどう表現するかでぶち当たった
RDFとプロパティグラフ:ナレッジグラフ実装の適切なアプローチの選び方 #rdf - Qiita
ナレッジグラフ
RDF
W3C標準
トリプル(主語-述語-目的語)という基本単位でデータを表現
URIを使用してリソースを識別
SPARQL言語を使用してクエリを実行
オントロジーを活用して推論が可能
プロパティグラフ
ノード、リレーションシップ、プロパティを使用して情報を整理
ノードにラベルとプロパティを付与可能
リレーションシップは方向性を持ち、プロパティを付与可能
Cypherなどの宣言的言語を使用してパターンマッチングが可能
多対多関係や同じタイプの複数のリレーションシップを柔軟に表現可能
RDF(Resource Description Framework)は、世界を「事実の集合」として記述するClaude.icon
code:田中さんは東京に住んでいる
ex:Tanaka ex:livesIn ex:Tokyo .
ex:Tanaka ex:age 35 .
ex:Tanaka rdf:type ex:Person .
RDFはエッジ自体には属性を持たせられない
「田中さんが2020年から東京に住んでいる」と表現したければ、その関係を独立したノード(リソース)として表現し直す必要があります(これをreificationやn-ary relationと呼びます)
code:田中さんが2020年から東京に住んでいる
ex:Tanaka ex:hasResidence ex:Residence001 .
ex:Residence001 ex:place ex:Tokyo .
ex:Residence001 ex:since "2020-01-01" .
セマンティックウェブ・Linked Open Dataの思想
すべてがURIで識別されるグローバルな名前空間を前提にしているため、異なるデータセット同士を機械的に結合できる
プロパティグラフ(Neo4j、Amazon Neptune の一部、TigerGraphなどが採用)は、もっと実装寄り・エンジニア寄りのモデルClaude.icon
code:田中さんは2020年から東京に住んでいる
(Tanaka:Person {name: "田中", age: 35})
-:LIVES_IN {since: 2020}->
(Tokyo:City {country: "Japan"})
ノードにラベルとプロパティを直接持たせる
エッジ(関係)にもラベルとプロパティを直接持たせられる
エッジの向きがあり、エッジ自体が識別可能