知识图谱是由Google公司在2012年提出来的一个新的概念。从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库”。但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图(Multi-relational Graph)。

我们可以通过一定方法把知识抽取和清洗出来,然后存入GDB中提供查询。搜索引擎只能告诉用户,查询的结果与哪些页面相关用户需要肉眼在页面里找答案,知识图谱可以直接把答案告诉用户。比如通过知识图谱我们能直接告诉用户在《权力的游戏》中坦格利安家族的伊利亚丈夫的兄妹是谁。

应用举例

假如我们现在有了《权力的游戏》里各个人物的信息和人物的相互关系(以坦格利安家族为例),如:

阿里云图数据库服务GDB目前支持的图模型是属性图,属性图将存储的基本元素分为点(Vertex)、边(Edge)和属性(Property),每个Vertex/Edge都有一个标签(Label)来代表它的类型。知识图谱三元组我们就分别以Vertex存subject 和 object,Edge存predicate。

举例

这里假设我们已经抽取到了权游的人物关系,并且存到了GDB中。

雷加的兄妹是谁?

g.V().has("name", "雷加").out("兄妹").values("name")

解析:g.V().has(“name”, “雷加”) 找到GDB中雷加这个vertex;

out(“兄妹”).vertex 把雷加这个顶点的所有出边是兄妹的终点找到并输出名字。

伊莉亚丈夫的父亲是谁?

g.V().has("name", "伊莉亚").in("妻子").in("子女").values("name")

g.V().has(“name”, “伊莉亚”).in(“妻子”) 找到伊莉亚的丈夫雷加;

in(“子女”).values(“name”) 找到雷加的双亲。