关于知识图谱的复习

简单了解

基于关键词匹配的传统搜索引擎,是将匹配到关键词后再把信息展现出来。
如果把信息的形式进行转换,例如将里面的人物、地点、时间等信息抽取出来,构建一个知识图谱的结构,就可以将“詹姆斯瓦特的校友是谁?”等问题的答案推理出来。知识图谱实现了从原来的关键字匹配、内容匹配的方式,转变为对信息的推理、对信息的追溯这种方式。
知识图谱本质上是基于图的语义网络,表示实体与实体之间的关系。

与传统数据库相比,Neo4j的数据结构更加自由

Node(结点):

含有:Perpority Label
用于通过属性存储数据,
alt text
就比如简单的社交图
name:Emil这个键值对就存储了这个人的名字,
from: Sweden存储了来自那里
Lable: Person表明了这个节点的实体是一个人可以通过Label表明属于同一个群体
alt text
每一个实体可以包含相同的属性,也可以光有单独的属性

Relations(关系):

alt text

  • Emil knows Johan and Ian.
  • Johan knows Ian and Rik.
  • Rik and Ian know Allison.
    关系必有方向也可以有值
    alt text
  • Emil has known Johan since 2001.
  • Emil rates Ian 5 (out of 5).
  • Everyone else can have similar relationship properties.

Cypher(Neo4j使用的类SQL语言)

创建结点

CREATE (ee:Person {name: 'Emil', from: 'Sweden', kloutScore: 99})

返回结点

MATCH (ee:Person) WHERE ee.name = 'Emil' RETURN ee;

创建图谱

MATCH (ee:Person) WHERE ee.name = 'Emil'
CREATE (js:Person { name: 'Johan', from: 'Sweden', learn: 'surfing' }),
(ir:Person { name: 'Ian', from: 'England', title: 'author' }),
(rvb:Person { name: 'Rik', from: 'Belgium', pet: 'Orval' }),
(ally:Person { name: 'Allison', from: 'California', hobby: 'surfing' }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)

创建约束使得电影标签的所有节点的title保证唯一

CREATE CONSTRAINT FOR (n:Movie) REQUIRE (n.title) IS UNIQUE
CREATE CONSTRAINT FOR (d:Department) REQUIRE (d.title) IS UNIQUE

表示为具有标签为"Movie"的所有节点的"released"属性创建索引。这意味着要为所有电影节点的发布日期属性创建一个索引,以提高对这个属性的查询性能。

CREATE INDEX FOR (m:Movie) ON (m.released)