计算机专业刚入坑知识图谱,我大概是这种状态:
这里主要是为了开发时看懂需求,所以不做深入了解。
不过没办法- -从概念开始慢慢来吧。。。
1. 什么是知识图谱:
知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。
个人理解就是展示复杂知识资源相互联系的一图形结构

2. RDF:资源描述框架(Resource Description Framework) (知识表示的一种方式)
知识图谱是展示资源相互联系的结构,所以首先要能描述资源,以及资源的联系。然后通过各种处理来发现其中的直接关系(我们用RDF已经存储的)和可能的隐藏关系(推导出来的)。
最简单的应用:你淘宝搜个卫生巾,然后淘宝知识图谱里:卫生巾是大姨妈的 “需要” 属性之一,大姨妈的其他 “需要” 属性还包含了:绿豆汤,卫生棉,热水壶。。。然后你第二天就发现你的淘宝主页上各种暖水壶,卫生棉,绿豆汤。。。
或者:特朗普是美国总统,特朗普是房地产商 -》 美国总统是一个房地产商 然后进一步推导出别的隐藏关系。
资源(Resource):所有以RDF表示法来描述的东西都叫做资源,它可能是一个网站,可能是一个网页,可能只是网页中的某个部分,甚至是不存在于网络的东西,如纸本文献、器物、人等。在RDF中,资源是以统一资源标识(URI,Uniform Resource Indentifiers)来命名,统一资源定位器(URL,Uniform Resource Locators)、统一资源名称(URN,Uniform Resource Names)都是URI的子集。
属性(Properties):属性是用来描述资源的特定特征或关系,每一个属性都有特定的意义,用来定义它的属性值(Value)和它所描述的资源形态,以及和其它属性的关系。RDF的(Property,Property value)在概念上和传统的(Attribute,Attribute value)是相同的。
陈述(Statements):特定的资源以一个被命名的属性与相应的属性值来描述,称为一个RDF陈述,其中资源是主词(Subject),属性是述词(Predicate),属性值则是受词(Object),陈述的受词除了可能是一个字符串,也可能是其它的资料形态或是一个资源。
先举一个例子:
用xml语法来描述一个东西:
e.g:
<Description about=http://www.dlib.org/dlib/may98/miller> <- http://www.dlib.org/dlib/may98/miller 这个唯一标识了这个资源(统一资源标识) <DC:title> <- 属性标签 An introduction to the Resource Description Framework <--属性的描述 (陈述) </DC:title> <DC:creator> Eric Miller </DC:creator> <DC:date> 1998-0501 </DC:date> </Description>这种描述一个东西的方式就是RDF(不等同于XML语法,只能说所有RDF可以用xml来描述, xml有固定格式,而rdf只是一种框架,感觉有点像jvm和hotspot,一个是一种规范,一个是这种规范的一种主要实现方式)
不过xml相对来说太过正规,所以现在不用这种方式,而是直接用三元组(“主 谓 宾” 的直接排列) (也可以理解为 资源 的xx属性是 描述)
类似于这种:
<http://www.dlib.org/dlib/may98/miller> <DC:title> "An introduction to the Resource Description Framework".
<http://www.dlib.org/dlib/may98/miller> <DC:creator> "Eric Miller".
<http://www.dlib.org/dlib/may98/miller> <DC:date> "1998-0501".
或者用turtle方式来描述:
@prefix Description: <"http://www.dlib.org/dlib/may98/miller/">. //这里要注意。。。下面那些语句的主语是这个url,不是Description,相当于java里面声明了一个变量Description指向它。。。
Description :title "An introduction to the Resource Description Framework".
Description :creator "Eric Miller". //或者表示成主谓宾: Description :的creator是 "Eric Miller".
Description :date "1998-0501".
这样可以用更少的空间,更简洁的方式来存储一个资源了。
RDF的描述方式有很多。。。总之只要是用 资源,属性,描述的方式来描述的方法就是RDF(不是这方面专业的知道这个就差不多了- -)
三元组的个人理解:这玩意类似于关系数据库中的关联查询。。。A中包含的属性B,然后B有描述C。 ((A,B),C) --> 变成RDF就成了(A,B,C),只不过默认了ABC有着固定的关系。
3元组其实就是2元组基础上外面多套了一层关系,因此再套一层就会变成4元组。。。以此类推。
3. OWL, RDFS
RDF的扩展,加了一点新功能。
4. SPARQL
RDFS查询语句(Java中有SPARQL处理器:ARQ)
貌似很常用,有需要的话准备单独写一篇。
基本语句:
PREFIX exp:http://www.baidu.com
select ?student where {
?student exp:studies exp:CS328
}
差不多等于:
var exp = http://www.baidu.com
select student from exp where studies = CS328
5.
原文:https://www.cnblogs.com/clamp7724/p/12759902.html