Ontology来源于哲学词汇:存在论(也有翻译成本体论)。RDF是一种不错的本体描述方式,我们可以定义根据对现实世界的理解针对某个领域定义词汇来描述这个领域的知识。但RDF与RDF不能定义同义词、反义词以及描述词与词间的关系(类与类之间的关系),比如说等价性、互补排斥性、限制个数、属性的对称性等。OWL弥补了RDF的不足,运用AI中的逻辑论(逻辑论中,把人们的思维用式子来表述,并且证明这些式子的正确性)来赋予网给以语义,形成SW。在SW的定义中,吸收了很多知识的优点,如OO,逻辑论、树结构等。[@more@]

从HTML到XML

HTML是我们最常用的文档标记语言,并且已广泛应用于WEB上。HTML可用来描述资源,但其的特点限制了其生成的文档只有人可以看得懂。HTML有两大不足限制其发展:一是其结构不明显,很难被应用程序解析;二是描述的局限性,如无法描述某些科学符号。
为了让应用程序能够理解文档,就需要良好的结构,于是最简单但功能强大的树状结构就被采用了。用树状结构来描述数据就生成了XML。XML为在各种应用程序间以及meta数据的交换提供了一致的体系和解析器。但XML本身没有进行任何语义的定义(或说弱语义定义),即其描述的数据的语义机器无法理解。
理解数据的首要条件是更准备地记录数据结构与类型。预定义的最基本的数据类型不能很好地满足大多数现实生活中数据要求。我们需要更清楚地描述数据类型,即更给出数据更严格的限制。XML Schema提供了在预定义的类型上自定义数据类型,而且这种数据类型可以被解析器解析。

XML Schema

XML Schema(XML的定义机制)提供了在XML中可以利用的基本的数据类型(如date,string等,DTD中只提供了string),通过对已有的类型进行扩张或者进行制约,从而定义新的类型。和DTD文档类型不同,XML Schema不需要另外的解析器和编辑器。
但XML Schema只是对文档的结构进行了定义,仍然不能让应用程序理解数据的语义。为了实现让应用程序理解数据,就出现了RDF。

从XML到RDF

RDF(Resource Description Framework)并不是一种语言,只是一种书写规范。RDF的基本构造为陈述(或声明,Statement),表述了一个(资源,资源所具有的属性,属性值)(即主体—属性—客体)的三元组。RDF表现的是一个数据模型,简言之就是一个陈述就是一个什么事物(资源),这个事物具有什么属性,这些属性应该有什么样的属性值。XML用来做为描述这种抽象的数据模型的具体书写方式(不用XML,也可以用其他的构成来表现RDF)。同样因为现实世界的超级复杂性,预定义的词汇根本不够用,我们就使用RDF Schema来自定义词汇。
RDF描述资源的特性是:以属性为中心的思考方法。不是重在定义属性的值,而是通过定义拥有这个属性的主体(资源)的范围(定义域),以及这个属性的取值范围(值域)。这样我们就可以比较精确地定义词汇,不是精确是因为我们不可能也没必要精确定义词汇,我们更关心的是词汇者的相互关系,即我们不能想让机器理解某个词汇,还是要让其理解词汇之间的相互关系,从而能为我们提供智能的服务。

RDF Schema

RDFS翻译为资源描述框架的定义机制。其与RDF的关系不同于XML与XMLS间的关系。XMLS是用来对XML的结构(构造)进行定义,而RDFS是用来对RDF数据模型用到的词汇进行定义。

RDF+RDFS不能为我们提供描述词汇间的关系,导致OWL的出现。

OWL

是由DAML(DARPA Agent Markup Language)+OIL(Ontology Inference Layer)演变而来。
OWL是RDF的扩张,为我们提供了更广泛的定义RDFS词汇的功能,更广泛意指可以定义词汇之间的关系,类与类间的关系,属性与属性之间的关系等。

 
 

OWL,以及XML,RDF的更多相关文章

  1. 知识图谱基础之RDF,RDFS与OWL

    https://blog.csdn.net/u011801161/article/details/78833958 https://blog.csdn.net/baidu_15113429/artic ...

  2. 知识图谱基础之RDF,RDFS与OWL 2

    https://zhuanlan.zhihu.com/p/32122644 看过之前两篇文章([1](为什么需要知识图谱?什么是知识图谱?——KG的前世今生), [2](语义网络,语义网,链接数据和知 ...

  3. RDF/RDFS/OWL

    RDF(Resource Description Framework 资源描述框架) 知识总是以三元组形式出现: (subject, predicate, object) 即 (主,谓,宾) 资源和属 ...

  4. Jena将owl文件持久化到数据库中

    package cn.edu.shu.db; import java.io.File; import java.io.FileInputStream; import java.io.IOExcepti ...

  5. virtuoso装载大的rdf文件的方法

    本文详细介绍了将一个比较大的rdf文件装载到virtuoso数据库的过程.参考virtuoso网站的文档说明,通过实践,将一个大约4.6G左右的nt文件装载到virtuoso数据库中,用了大概6个多小 ...

  6. Python: xml转json

    1,引言 GooSeeker早在9年前就开始了Semantic Web领域的产品化,MS谋数台和DS打数机是其中两个产品.对web内容做结构化转换和语义处理的主要路线是 XML -> RDF - ...

  7. 【odoo14】第十六章、odoo web库(OWL)

    odoo14引入了名为OWL(Odoo Web Library)的JavaScript框架.OWL是以组件为基础的UI框架,通过QWeb模板作为架构.OWL与传统的组件系统相比更快,并引入了一些新的特 ...

  8. odoo14--odoo前端框架owl【odoo web library】

    原文链接:https://www.alanhou.org/odoo-14-owl-todolist/ 1.组件树 Root         /   \        A     B       / \ ...

  9. Jena语义Web开发101

    2015/05/28更新 代码在 https://github.com/zhoujiagen/semanticWebTutorialUsingJena 前言 该手册参考和扩展“Hebeler J, F ...

随机推荐

  1. [课程设计]Scrum 2.5 多鱼点餐系统开发进度(下单一览页面-菜式添加框架设计)

    Scrum 2.5 多鱼点餐系统开发进度  (下单一览页面-菜式添加框架设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...

  2. PHP计算时间差,并返回什么时间之前发表的内容

    <?php header("Content-type: text/html; charset=utf-8"); function time2Units ($time){ $y ...

  3. IOS开发数据库篇—SQLite模糊查询

    IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...

  4. cordova环境搭建,搭建项目,以及拍照功能的实现

    一.配置环境 1.配置java环境: 下载对应系统环境的jdk:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-13 ...

  5. 数组的sort方法

    今天在看<JavaScript高级程序设计第三版>时,学到了数组的sort方法.知道这个方法,但是一直没仔细研究过,这次发现,它是把数组内的值用toSting()变为字符串再进行比较,这样 ...

  6. NGUI Camera's raycast hit through the UI Layer issue

    Raycast into GUI?http://forum.unity3d.com/threads/raycast-into-gui.263397/ << ; Ray myray = UI ...

  7. Visual Studio 如何恢复默认设置

    我们在使用 Visual Studio 的时候,常常有一些窗口不见了又弄不回来的情况,如何恢复默认设置呢? 1.点击“开始-->程序-->Microsoft Visual Studio20 ...

  8. C#窗体 WinForm 对话框,流

    一.对话框 ColorDialog:颜色选择控件 private void button1_Click(object sender, EventArgs e) { //显示颜色选择器 colorDia ...

  9. State(状态)

    props和state.props是在父组件中指定,而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state.般来说,你需要在constructor中初始化st ...

  10. guava学习--FluentIterable

    public class FluentIterableTest { public static void main(String[] args) { Man man1 = new Man(" ...