文章目录
一、早期知识表示简介
1、概述
人类心智区别于其它物种心智的重要特征:具有获取、表示和处理知识的能力。
知识表示 是一种为了让计算机可以接受的用于描述知识的数据结构。它是机器通往智能的基础,使得机器可以像人一样运用知识。特别是常识知识才能实现真正类人的智能
知识的特点:相对正确性、不确定性、可表示性以及可利用性。
2、知识分类
- 按作用范围分类:常识性知识、领域性知识;
- 按作用及表示分类:事实性知识、过程性知识、控制知识;
- 按确定性分类:确定性知识、不确定性知识;
- 按结构及表现形式分类:逻辑性知识、形象性知识;
3、早期知识表示方法
- 一阶谓词逻辑(First-Order Logic)
- 产生式规则(Production Rule)——专家系统
- 框架(Framework)
- 语义网络(Semantic Network)——以网络的方式来描述概念之间的语义关系
- 逻辑程序(Logic Programming)
- 缺省逻辑(Default Logic)
- 模态逻辑(Modal Logic)
(1)一阶谓词逻辑(First-Order Logic)
Horn逻辑:一阶谓词逻辑的子集
- 原子 Atom
p ( t 1 , t 2 , . . . , t n ) p(t_1,t_2,...,t_n) p(t1,t2,...,tn)
其中, p p p是谓词, n n n是目, t i t_i ti是项(变量或常量),eg:has_child(Helen, Jack)
- 规则 Rules ——由原子构建:
H : − B 1 , B 2 , . . . , B m . H:-B_1,B_2,...,B_m. H:−B1,B2,...,Bm.
H 与 B 1 , B 2 , . . . , B m H与B_1,B_2,...,B_m H与B1,B2,...,Bm是原子, H H H是头部原子, B 1 , B 2 , . . . , B m B_1,B_2,...,B_m B1,B2,...,Bm是体部原子,eg:has_child(X,Y):-has_son(X,Y)
- 事实——没有体部且没有变量的规则:
F ( v 1 , v 2 , . . . , v n ) : − h a s c h i l d ( H e l e n , J a c k ) : − F(v_1,v_2,...,v_n):- \\has_child(Helen, Jack):- F(v1,v2,...,vn):−haschild(Helen,Jack):−
描述逻辑:一阶谓词逻辑的可判定子集。用于描述概念、属性,为术语知识库的构建提供便捷的表达形式。
(2)产生式规则(Production Rule)
早起的专家系统多数是基于产生式系统的。以 IF-THEN
的形式,即产生式规则表示出来的。
产生式模型:
P
→
Q
o
r
I
F
P
T
H
E
N
Q
C
F
=
[
0
,
1
]
P→Q \ \ \ or \\ \begin{aligned} IF\quad P\quad THEN\quad Q \quad CF = [0, 1]\end{aligned}
P→Q orIFPTHENQCF=[0,1]
- 其中, P P P 是产生式的前提, Q Q Q 是一组结论或操作, C F ( C e r t a i n t y F a c t o r ) CF (Certainty Factor) CF(CertaintyFactor) 为确定性因子,也称置信度。
特点:
- 优点:自然型好,易于模块化管理、能有效表示知识、知识表示清晰等;
- 缺点:效率不高、不能表达具有结构性的知识等。
(3)框架(Framework)
基本组成:
示例:
利用上述框架在知识库中匹配得到实例(对框架进行填充可得)。
(4)语义网络(Semantic Network)
基本形式:(节点1, 弧, 节点2)
- 节点:表示各种事物、概念、情况、属性、动作、状态等,每个节点可以带有若干属性,一般用框架或元组表示。此外节点还可以是一个语义子网络,形成一个多层次的嵌套结构。
- 弧:表示各种语义联系,指明它所连接的节点间某种语义关系。
- 节点和弧都必须带有标示,来方便区分不同对象以及对象间各种不同的语义联系。
特点:
- 优点:结构性、联想性、自然性;
- 缺点:非严格性、处理上的复杂性
示例:eg:“每个学生都读过一本书”
- 谓词逻辑表示: ( ∀ s ) 学 生 ( s ) ( ∃ b ) 书 ( b ) [ 读 过 ( s , b ) ] (\forall s)学生(s)(\exists b)书(b)[读过(s,b)] (∀s)学生(s)(∃b)书(b)[读过(s,b)]
- 语义网络表示:
- 本质:将逻辑运算和逻辑项都映射为图中的元素。
- 本质:将逻辑运算和逻辑项都映射为图中的元素。
二、基于语义网的知识表示框架
1、语义网(Semantic Web)
知识图谱中最关键的技术:RDF、SPARQL
下图为W3C推荐的语义网标准栈,其中RDF和SPARQL为网络数据链接部分。与此同时,W3C还推出五星级标准,规定了RDF为标准数据格式,URI标准为事物命名等规范。
2、RDF
(1)RDF概念
RDF:Resource Description Framework(资源描述框架)
- Resource:页面、图片、视频等任何具有URI标识符;
- URI:http://mydomain.org//mypath//myresource
- Description:属性、特征和资源之间的关系;
- Framework:模型、语言和这些描述的语法。
在RDF中,知识总是以 三元组(triple)模型 形式出现的,即每一份知识可以被分解为如下形式:
(subject(主), predicate(谓), object(宾))
,同时在RDF中资源和属性都可以被URI唯一标识。
(2)基本示例
示例1:CCF ADL邀请王昊奋作为讲者,演讲主题是知识图谱。
- RDF形式:
(CCF ADL, speaker, Haofen) (CCF ADL, theme, KG)
- 图模型形式:(vertex, edge, vertex)
- 下面左图为利用URI表示的结果,右图为利用命名空间定义前缀的结果。
- 下面左图为利用URI表示的结果,右图为利用命名空间定义前缀的结果。
示例2:RDF中的属性值同时也可以是一个文字,如字符串/数值 或 XML datatype类型。(它们不是一个Resource)。
- 左图:
CCF ADL邀请王昊奋作为讲者,演讲主题是知识图谱。
,此处知识图谱为字符串。 - 右图:
CCF ADL has one speaker Haofen and last 3 hours.
,其中"3"后面为其类型约束,即整型。
(3)RDF空白节点(Black Nodes)
空白节点:
- RDF允许空白节点;
- 一个资源可以是匿名的;
- 即不被URI标识,并标识为
_:xyz
eg:Haofen是某一次KG讲座的讲者(并不关心是什么讲座)
(4)RDF是数据类型,不是序列化格式
RDF序列化格式之间的关联:
- RDF/XML格式:适合小数据的存储与交换
<rdf:RDF
xmlns:ex-schema=http://ex.org/schema#>
<rdf:Description rdf:about="http://ex.org/ccf_adl">
<ex-schema:speaker rdf:resource="http://ex.org/haofen"/>
<ex-schema:theme rdf:resource="http://ex.org/KG"/>
</rdf:Description>
</rdf:RDF>
- N-Triples格式
<http://ex.org/ccf_adl>
<http://ex.org/schema#speaker>
<http://ex.org/haofen>.
<http://ex.org/ccf_adl>
<http://ex.org/schema#theme>
<http://ex.org/KG>.
- Turtle格式
@prefix ex:<http://ex.org>.
@prefix ex-schema:<http://ex.org/schema#>
ex:ccf_adl
ex-schema:speaker ex:haofen;
ex-schema:theme ex:KG.
(5)开放世界假设
RDF 是 开放世界假设;
- 封闭世界假设:没有定义则认为不存在。
- 开放世界假设:
- eg:
(CCF ADL, speaker, Haofen)
- 封闭世界假设==》CCF ADL讲座只有一位讲者;
- 开放世界假设==》CCF ADL讲座至少有一位讲者;
(6)分布式的定义与合并知识
- RDF允许分布式地定义知识
- 分布式定义的知识可以自动合并
- 若分布式存储
ex:haofen
的URI不一致,如何融合??
- 若分布式存储
(7)变种:带标注RDF
动机:如何扩展 RDF 用来表达更多信息
- 时间、不确定性、空间、信任等
- ==》带标注 RDF(S) ==》知识库:YAGO2
YAGO2:采用 annotated RDF 表示的知识库
- 语法形式:
(
s
,
p
,
o
)
:
λ
(s, p, o):\lambda
(s,p,o):λ
- λ \lambda λ 是一个标志
- eg:
(特朗普,就职,总统):2017年1月
3、RDF Schema(RDFS)
(1)概述
RDFS在RDF基础上提供了一个术语、概念等的定义方式,以及哪些属性可以应用到哪些对象上。换句话说,RDFS为RDF模型提供了一个基本的类型系统。
示例:三元组表示用户自定义的元数据Author是Dublin Core的元数据Creator的子类。
<http://mymetadata.vocab.org/Author>
<rdfs: subClassOf >
<http://purlorg/dc/elements/1.0/Creator>.
作用:RDFS通过这样的方式来描述不同词汇集的元数据之间的关系,为网络上统一格式的元数据交换提供便利。
(2)具体
RDF定义了如下几种词汇:
- Class、subClass、type、Property、subPropertyOf、Domain、Range
示例:
- 图中,
data层
是对schema层
的实例化,是由数据驱动的。
(3)基于RDFS的推理
基于 data层
和 schema层
可进行推理,如上下位的推理(如subClass
),类别的判断等。
示例:
4、OWL和OWL2
RDF是有一定的表达缺陷,RDF不能表达复杂类。
(1)OWL简述
OWL Web Ontology Language包含三个子语言:OWL Lite、OWL DL、WOL Full。
(2)OWL词汇
- 等价性
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:equivalentClass | 类等价 | exp:运动员 owl:equivalentClass exp:体育选手 |
owl:equivalentProperty | 属性等价 | exp:获得 owl:equivalentProperty exp:取得 |
owl:sameIndividualAs | 个体等价 | exp:运动员A owl:sameIndividualAs exp:小明 |
exp
是命名空间http://www.example.org
的别称。
- 传递性
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:TransitiveProperty | 属性传递 | exp:ancestor rdf:type owl:TransitiveProperty |
exp:ancestor
是一个传递关系exp:小明 exp:ancestor exp:小林; exp:小林 exp:ancestor exp:小志
那么根据上述声明,有exp:小明 exp:ancestor exp:小志
- 属性相反
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:inverseOf | 属性相反 | exp:ancestor owl:inverseOf exp:descendant |
exp:ancestor
与exp:descendant
是互反关系
eg:exp:小明 exp:ancestor exp:小林
,那么有exp:小林 exp:descendant exp:小明
- 属性函数性
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:FunctionalProperty | 属性函数性 | exp:hasMother rdf:type owl:FunctionalProperty |
exp:hasMother
是一个具有函数性的属性(只有一个);因为每个人只有一个母亲。
- 属性对称性
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:SymmetricProperty | 属性对称性 | exp:hasMother rdf:type owl:FunctionalProperty |
exp:小明 exp:friend exp:小林
,那么有exp:小林 exp:friend exp:小明
- 属性的局部约束:全称限定
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:allValuesFrom | 全称限定 | exp:Person owl:allValuesFrom exp:Women,exp:Person owl:onProperty exp:hasMothe r |
exp:hasMother
在主语属于exp:Person类
的时候,宾语的取值只能来自exp:Women
这个类。
- 属性的局部约束:存在限定
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:someValuesFrom | 存在限定 | exp:SemanticWebPaper owl:someValuesFrom exp:AAAI,exp:SemanticWebPaper owl:onProperty exp:publishedIn |
exp:publishedIn在主语属于exp:SemanticWebPaper类的时候,宾语的取值部分来自exp:AAAI这个类。上面的三元组相当于:关于语义网的论文部分发表在AAAI上。
- 属性的局部约束:基数限定
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:cardinality | 基数限定 | exp:Person owl:cardinality “1”^^xsd:integer,exp:Person owl:onProperty exp:hasMother |
exp:hasMother在主语属于exp:Person类的时候,宾语的取值只能有一个;“1”的数据类型被声明为xsd:integer;这是基数约束,本质上属于属性的局部约束。
- 声明相交的类
OWL中的词汇 | 描述 | 示例 |
---|---|---|
owl:intersectionOf | 相交的类 | exp:Mother owl:intersectionOf _tmp,_tmp rdf:type rdfs:Collection,_tmp rdfs:member exp:Person,_tmp rdfs:member exp:HasChildren |
_tmp是临时资源;它是rdfs:Collection类型,是一个容器;它的两个成员是exp:Person,exp:HasChildren;上述三元组说明exp:Mother是exp:Person,exp:HasChildren这两个类的交集。
- OWL其他词汇
(3)OWL2
OWL2 定义了一些 OWL 的子语言,通过限制语法使用,使得这些子语句能够更方便地实现,以及服务于不同的应用。
OWL2的三大子语言:
- OWL2 RL、OWL2 QL、OWL2 EL,家族树如下:
5、SPARQL简介
SPARQL 是 RDF的查询语言(i.e.基于RDF数据模型),可以针对不同的数据集撰写复杂的连接,它支持主流的图数据库。
SPARQL查询的基本构成:
- 变量,RDF中的资源,以
?
或者$
来表示; - 三元组模板 (triple pattern), 在
WHERE子句
中列示关联的三元组模板;之所以称之为模板,因为三元组中允许变量; SELECT子句
中指示要查询的目标变量。
# prefix declarations:for abbreviating URIs
PREFIX foo: <http://example.com/resources/>
...
# dataset defintion, stating what RDF graph(s) are being queried
FROM ...
# result clause:identifying what information to return from the query
SELECT ...
# query pattern:
WHERE {
...
}
# query modifiers:slicing, ordering, and otherwise rearranging query results
ORDER BY ...
示例1:查询学生姓名、选修课程,以及他们的年龄;若有年龄,则年龄必须大于25岁。
- 涉及 OPTIONAL关键字、FILTER关键字
## 命名空间声明
PREFIX exp: http://www.example.org/
SELECT ?module ?name ?age
WHERE {
?student exp:studies ?module .
?student foaf:name ?name .
OPTIONAL {
?student exp:age ?age .
FILTER (?age > 25)}
}
示例2:查询选修课程CS328或CS909的学生姓名以及邮箱,涉及 UNION关键字。
SELECT ?student ?email
WHERE {
?student foaf:mbox ?email .
{?student exp:studies CS328}
UNION {?student exp:studies CS909}
}
注意:此处邮箱为必返回项,若没有邮箱值,则不返回该记录,注意与OPTIONAL区别。
示例3:查询选修课CS909的学生姓名以及邮箱和住址,涉及 FROM关键字,引入其他本体或可访问的知识库。
SELECT ?student ?email ?home
FROM <http://www2.warwick.ac.uk/rdf/student>
WHERE {
?student exp:studies CS909 .
OPTIONAL {?student foaf:mbox ?email .
?student foaf:homepage ?home .}
}
SPARQL查询语言与SQL很相似,定义了OPTIONAL
、FILTER
、UNION
、FROM
等关键字,同时它支持嵌套查询,基于规则的查询.
6、JSON-LD 、RDFa、 HTML5 MicroData等新型知识表示
(1)JSON-LD
JSON-LD(JavaScript Object Notation for Linked Data),是一种基于JSON表示和传输互联数据 (Linked Data) 的方法。
- JSON-LD描述了如何通过JSON表示有向图,以及如何在一个文档中混合表示互联数据及非互联数据。
- JSON-LD的语法和JSON兼容。
示例:
- 一个JSON文本
// 表示一个人,具有名字、主页、照片
{
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/",
"image": "http://manu.sporny.org/images/manu.PNG"
}
- 对应的JSON-LD文件:通过引入规范的术语表示,eg:统一化表示"name","homepage"和"image"的URI,使得数据交换和机器理解成为基础。
{
"http://schema.org/name": "Manu Sporny",
"http://schema.org/url": { "@id":"http://manu.sporny.org/" },
"http://schema.org/image": { "@id":"http://manu.sporny.org/images/manu.PNG" }
}
(2)RDFa
RDFa (Resource Description Framework in attributes)是网页标记语言,它扩充了XHTML的几个属性,网页制作者可以利用这些属性在网页中添加可供机器读取的资源,与RDF的对应关系使得RDFa可以将RDF的三元组嵌入在XHTML文档中,它也使得符合标准的使用端可以从RDFa文件中提取出这些RDF三元组来。
RDFa工作原理:
- 通过引入命名空间的方法在已有的标签中加入RDFa相应的属性来使得支持RDFa技术的浏览器或者搜索引擎可以解析到,从而达到优化的目的。
<div xmlns:dc="http://purl.org/dc/elements/1.1/" about="http://www.example.com/books/wikinomics">
<span property="dc:title">Wikinomics</span>
<span property="dc:creator">Mr right</span>
<span property="dc:date">2006-09-02</span>
</div>
分析:上面的代码示例中用到了RDFa属性中的about属性
和property属性
,这段代码示例说明了一篇文章,然后描述了和这篇文章相关的信息,比如说标题,创建者和创建日期,而这些属性就可以使得支持RDFa的机器识别。
(3)HTML5 Microdata
- Microdata微数据,是在网页标记标记语言嵌入机器可读的属性数据;
- 微数据使用可以来自自定义词汇表、带作用域的键/值对给DOM做标记;
- 用户可以自定义微数据词汇表,在自己的网页中嵌入自定义的属性;
- 微数据是给那些已经在页面上可见的数据施加额外的语义。当HTML的词汇不够用时,使用微数据可以取得较好的效果。
示例:便于浏览器从网页上提取微数据实体、属性以及属性值。
7、RDF+SPARQL
vs. ER+SQL
RDF:关系显示定义(语义存在于数据中)——数据变更较为方便(图增加边更为方便),易于推理。
ER:关系隐式声明(语义存在于人脑中)——数据变更时,需要添加新表并修改原来的SQL语句。
数据的智能性
- ER+SQL:Dumb Data->Smart Application Code
- RDF+SPARQL:Smart Data->Uniform Inference Engine
三、典型知识库项目的知识表示
1、各种知识图谱项目
2、知识表示:多元关系
名称 | 多元关系表述 |
---|---|
DBPedia | 无考虑,可通过Blank Node等用多个三元组来表示 |
Freebase | CVT 复合类型节点 |
WikiData | Qualifier 或者 Reference |
ConceptNet | 将多元关系添加为边的属性 |
3、实用的知识表示
实用的知识表示的特点:
- 接近人的自然语言:好的KG是同时为机器和人设计的;
- 够用的表达能力:够用就好,不必苛求逻辑完备;
- 易于扩展:能够非常方便的增加新的类、实体和关系。
现状:RDF/OWL只是众多知识表示框架的一种,不少商业化的KG并未采用该框架,物理存储也是直接采用关系数据库实现,但基本表达要素都可在RDF/OWL中找到对应。
四、基于本体工具的知识建模实践
基于Protege本体工具的知识建模实践