[期末复习]《语义网与知识图谱》期末复习(一)

上海大学《语义网与知识图谱》期末复习(一)

前言

这个课。。不太喜欢。但是不能挂呀!平常的话感觉很难听得进去,因为没有任何先导课,直接上这个确实有点难受,那个老师感觉得到他想表达很多东西,但是有些东西确实表达不够明确,每节课听得都迷迷糊糊,毕竟是一个前沿的东西,如果不是一线战斗的老师,估计很多概念都很难讲清楚吧。

以上均胡扯,万一我有哪天真的用上了呢?(见鬼了)。

下面复习主要集中在可能的考点复习上,均个人感觉哪里可能出题等等。

之前总结过rdf/rdfs、turtle和owl语法,所以这里前面复习会写的比较简单

之前总结的链接:

语义网与知识图谱入门(一)

语义网与知识图谱入门(二)

语义网概述

本体:本体是一种形式化的,对于共享概念体系的明确而又详细的说明。提供一种共享词表...。本体是对客观世界的一种分类描述。记住这个分类。

其实我们还是不知道他这个定义表达的是啥意思,我个人理解就是,本体这个东西就是一种描述方法,来描述事物之间的关系,这种关系可以是抽象关系,比如类和实例之间的关系,也可以是属性关系等等。

记一下:实现予以技术最重要的是有合适的知识表示语言。

记一下:本体的核心通常是分类体系。

RDF

RDF是一种资源描述型语言。由主语、谓语和宾语描述。

RDF对象之间的关系是图,而不是树。

RDF的要素:URI、文字、空节点。

URI就是资源的地址,文字指的是字符串类型的资源,空节点这个也很好理解。

Turtle

URI一定要放在<>中,并且每个句子要用.结束。

可以用@prefix来表示前缀,比如先定义好

@prefix book: <http://a.com>.

那么下次用的时候可以直接用book表示<http://a.com>这个URI了。

turtle语法比较简单,在rdf中的语法就不再总结了,后面关于owl的语法还会提到的。

XML

常用xml来描述RDF语法,turtle只是写起来容易,但是用的时候用xml还是比较多的。

举一个例子

<rdf:Description rdf:about="http://a.com">
    <ex:publishedBy>
        <rdf:Description rdf:about="http://b.com">
        </rdf:Description>
    </ex:publishedBy>
</rdf:Description>

这个例子是一个不完整的xml下rdf的语法,description表明这是一个节点,而rdf:about描述的就是节点的uri,内部包含的东西就是指向的下一节点以及有向边。

上面这个例子还有一种利用rdf:resource的简要写法。

<rdf:Description rdf:about="http://a.com">
    <ex:publishedBy rdf:resource="http://b.com">
    </ex:publishedBy>
</rdf:Description>

效果是一样的。

上面的两个例子是不完整的,因为没有加上命名空间,实际上xml里面是需要有命名空间的。

<rdf:RDF xmlns:rdf="http:xx.com" xmlns:ex="http://xxx.com">
    <rdf:Description rdf:about="http://a.com">
        <ex:publishedBy rdf:resource="http://b.com">
        </ex:publishedBy>
    </rdf:Description>
</rdf:RDF>

这里在外面包围了一圈rdf:RDF,并且说明了xml namespace 分别为rdf和ex,并指定了uri。

还有就是有些地方要区分语法差别,rdf:resource是rdf description代表的节点的简化版本,有时候也会用到rdf:id,这里的rdf:id="aa"其实等价与rdf:about="http://xx.com#aa"这样一个uri。

PPT上有一个我认为比较重要的例子:

@prefix ex:<http://exmaple.org> .
ex:GreenTea ex:hasIngredient "1 kg water",
                             "2 kg tea".

这种表达结构性不是很好,很明显我们认为数量应该和具体的water、tea分开对吧。

所以做了这样的修改

@prefix ex:<http://example.org> .
ex:GreenTea ex:Ingredient "water"; ex:amount:1;
            ex:Ingredient "tea"; ex:amount:2.

这样改了之后也不妥,因为数量和water、tea分开了,上面的例子表达就成了绿茶的原料是水,绿茶的数量是1,其实是有歧义的。为了解决这种歧义关系,我们引出了空节点。

引入空节点之后咋表达呢?

@prefix ex:<http://example.org> .
ex:GreenTea ex:Ingredient (
    [
        ex:name "water";
        ex:amount:1
    ],
    [
        ex:name "tea";
        ex:amount:2
    ]
).

还用了list语法。嗯。

画图的时候空节点不需要给uri,形状和普通uri一样是椭圆,文本的化要用方框。

在xml语法中,用rdf:parseType="Resource"来指定一个空节点

还剩下容器语法。我觉得不会考吧(turtle的可能会考,但是很简单)。

RDFS

基础语法

RDFS就是RDF加个Schema,具体来说就说多了面向对象的特点,就好比C和C++的升级,RDFS就是这样一个身份。

rdf:type 描述一个实例和类的关系,前者属于后者.eg book:uri rdf:type ex:TextBook.

rdfs:subClassOf,描述一个类与另一个类的包含关系,eg ex:TextBook rdfs:subClassOf ex:Book.

所有的类都subClassO一个基类,即rdf:Class,然后还有很多预定义的类,比如rdfs:Resource和rdfs:Property等。

属性约束

可以约束一个属性的定义域和值域。

ex:hasAge rdfs:range xsd:nonNegativeInteger.

这里通过限定hasAge属性的值域为非负,xsd:nonNegativeInteger为rdfs中预定义的数据约束类型。

语义

逻辑语义

开始胡扯。

逻辑程序语义包含:模型论和证明论。

语义是通过信息之间的交互产生的结果得到的,比如一个节点包含另一个节点,包含就是两个节点之间的交互,这个交互产生的结果就是一个包含关系,这也就是语义。而我们无法从一句话的表面得到他的语义,这是因为一句话的表面这个东西是没办法计算的,就是不能用数学形式表达,所以没办法表达我们定义的语义(由数学定义的语义)。

模型论语义

就是定义一个模型,由模型的数学结果来表达一种意思。比如我定义了一个模型f,f(1) = 1,f(2) = 2,我这里可以用这个函数的结果值来表达一种语义,比如说是数量等等,反正就是数学定义好的一种表达。我是这么简单理解的。

模型论语义提供的解释就是一种映射关系,其中这个映射关系是人定义的,一旦你定义好这种映射关系,那么这个解释就定了。ppt上一大坨东西不知道在干嘛。

OWL

OWL的位置是在rdfs上面,也就说是又一层升级。

我觉得进步的地方就是描述的类与类之间可以合并呀,可以互斥呀,或者实例之间、属性之间这种关系,这样做是可以把多个类合并起来,也是一大进步。

命名空间啥的就不说了,定义类变成了owl:Class,而基类是owl:Thing。

类和个体的实例:

类定义
<owl:Class rdf:ID="A">
    <owl:Class rdf:ID="B">
        <rdfs:subClassOf rdf:resource="#A">
        </rdfs:subClassOf>
    </owl:Class>
</owl:Class>

实例定义
<B rdf:ID="b">
</B> 

可以看到,可以直接拿类名去实例化对象啦!

其实我之前写过OWL的博客,就不继续写了,之前写的还是蛮详细的感觉,所以直接看之前的博客复习就OK。

猜你喜欢

转载自www.cnblogs.com/aoru45/p/11756356.html