知乎问答
回答
我借 @SimmerChan 的回答评论里的例子延伸一下:
首先,北京
作为城市
这个类的实例,接下来考虑:
-
首都
作为北京
的属性admin_level
的属性值 -
首都
作为行政区划
这个类的实例,再通过关系is_admin_level
与北京
连接
这两种表示方法到底会有什么区别?本质上二者都没有丢失信息,但是从应用上来讲在支持某些运算时会有性能/逻辑简洁性上的差异。
比如我想要查询:北京有哪些政府机构?那我可能需要同时知道城市-行政区划
+行政区划-政府机构
这两个mapping,这时第2种表达要拿到这两个mapping就会比第1种更容易,速度更快。
进一步可以说,属性或关系,或者各位所说的内在和外在关联的划分,并不需要是一个绝对的、本体论上的划分,而是可以(其实是最好)根据图谱的具体应用需求进行设计的。
另:事实上表达之所以有多种,是因为面向应用的知识图谱在逻辑上分得还不够细。比如我们考虑:类-实例,类-属性,实例-属性值,属性-属性值之间其实都存在mapping。建模语言RDF中,实体和属性都是节点,而关系则分为实体-实体关系和实体-属性关系,这种设计下也就只有第2种表达了,表达能力更强的语言还有RDFS和OWL(这里有篇简介:知识图谱技术体系总结)。
网友评论