标签:基础语 source 实例化 语义网 字符 类型 c++ 另一个 命名
这个课。。不太喜欢。但是不能挂呀!平常的话感觉很难听得进去,因为没有任何先导课,直接上这个确实有点难受,那个老师感觉得到他想表达很多东西,但是有些东西确实表达不够明确,每节课听得都迷迷糊糊,毕竟是一个前沿的东西,如果不是一线战斗的老师,估计很多概念都很难讲清楚吧。
以上均胡扯,万一我有哪天真的用上了呢?(见鬼了)。
下面复习主要集中在可能的考点复习上,均个人感觉哪里可能出题等等。
之前总结过rdf/rdfs、turtle和owl语法,所以这里前面复习会写的比较简单
之前总结的链接:
本体:本体是一种形式化的,对于共享概念体系的明确而又详细的说明。提供一种共享词表...。本体是对客观世界的一种分类描述。记住这个分类。
其实我们还是不知道他这个定义表达的是啥意思,我个人理解就是,本体这个东西就是一种描述方法,来描述事物之间的关系,这种关系可以是抽象关系,比如类和实例之间的关系,也可以是属性关系等等。
记一下:实现予以技术最重要的是有合适的知识表示语言。
记一下:本体的核心通常是分类体系。
RDF是一种资源描述型语言。由主语、谓语和宾语描述。
RDF对象之间的关系是图,而不是树。
RDF的要素:URI、文字、空节点。
URI就是资源的地址,文字指的是字符串类型的资源,空节点这个也很好理解。
URI一定要放在<>中,并且每个句子要用.结束。
可以用@prefix来表示前缀,比如先定义好
@prefix book: <http://a.com>.
那么下次用的时候可以直接用book表示<http://a.com>这个URI了。
turtle语法比较简单,在rdf中的语法就不再总结了,后面关于owl的语法还会提到的。
常用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就是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的位置是在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。
标签:基础语 source 实例化 语义网 字符 类型 c++ 另一个 命名
原文地址:https://www.cnblogs.com/aoru45/p/11756356.html