本体语言 OWL

article/2025/9/6 15:37:47

万维网本体语言OWL2

文章目录

  • 万维网本体语言OWL2
    • 一、引言
    • 二、本体语言的需求
    • 三、OWL2和RDF/RDFS的兼容性
      • 3.1 OWL2 Full:基于RDF的语义
      • 3.2 OWL2 DL:直接语义
    • 四、OWL语言
    • 五、OWL2 概要
    • 六、实验 OWL的构造
    • 七、总结

一、引言

通俗的讲,RDF被限定为二元闭谓词,而RDF模式被限定为子类层次和属性层次。而RDF的这些特征还不够精确,需要更具表达力的知识表述更多的特征,因此产生了OWL2,适合表达术语知识。

二、本体语言的需求

一个领域中概念的显示的形式化规约成为本体(ontology),表达本体的语言称为本体语言(ontology language)。
本体语言主要包括一下几个方面:

  • 良定语法:(well-defined syntax),使用它以一种无二义的方式写出某种语言允许你表达的所有事物。
  • 形式语义:(formal semantic),精确描绘一种语言的含义,不涉及主观想象。形式语义使得可以对表达在句子中的知识进行推理。
  • 表达能力:在基于RDF的基础上,需要有更精确的表达推理能力
    • 类成员关系: ( 属 性 , 值 ) ⇔ 类 (属性,值) \Leftrightarrow 类 (,)
    • 分类: 类 成 员 关 系 ⇒ 自 身 关 系 类成员关系 \Rightarrow 自身关系
    • 等价关系与相同性:共享所有成员
    • 不相交关系和不同性:不共享任何实例/明确不同的事物
    • 类的二元组合:并集等超出子类关系的组合
    • 属性的局部作用域:区别不同情境中的值域限制
    • 属性的特性:传递/唯一/互逆
    • 基数限制:限制属性的不同取值数目
    • 一致性:能够检测类属性之间的冲突
  • 推理支持:(reasoning support),基于形式语义,自动推理本体的正确性。其基本过程是将一个本体语言映射到一个已知的逻辑系统,利用该系统机型推理,获取本体语言的形式语义和推理支持。本体语言需要在表达能力和高效推理支持之间权衡。

三、OWL2和RDF/RDFS的兼容性

OWL2采用RDFS含义的类和属性,但是对于RDF的基础建模原语不能以简单的形式包含。
在这里插入图片描述

两种语义:OWL2分为两个不同的子语言,各自用油不同的底层语义,面向满足需求全集的不同方面。从而将高效的表达能力和完整的逻辑组合相融合。

3.1 OWL2 Full:基于RDF的语义

OWL2 Full允许以任意的方式将OWL2原语与RDF和RDF模式组合。其优点在于被映射到一个基于RDF的语义(RDF-based semantic),因此在结构和语义上能够完全向上兼容RDF;而其缺点是由于其过于强大而变得不可判定和无法推理。

3.2 OWL2 DL:直接语义

OWL2 DL被映射到描述逻辑(DL)上,限制了OWL2、RDF和RDFS的原语使用方式:不允许OWL2的原语运用于其它原语;只能定义非文字资源的类;严格区分了值域包含非文字资源的属性和关联文字值的属性。
这些限制保证该语言维护了与一个广泛理解的描述逻辑之间的直接对应,允许高效的推理支持;但与此同时,也摒弃了与RDF之间的兼容性。

四、OWL语言

  • 在OWL2中,类的成员被称为个体(individal)而非实例(instance)。
  • 当声明某个资源是一个特定类型时,称这是一个断言(assertion)。
  • 当组合类、属性和实例时,形成了表达式(expression)。
  • 如果随后将这个定义关联到某个类,就创建了公理(axiom)。

语法:OWL2建立在RDF上,通过原有的RDF,和新定义的OWL2,构造了许多OWL2语法,其各有优缺点:

  • 函数式语法:本体形式化,用于语言规范文档、本体的语义定义、与RDF语法的相互映射,以及OWL的不同概要中
EquivalentClasses(:Person ObjectUnionOf(:Man :Woman))
  • OWL/XML:适用于OWL2的XML语法,不遵从RDF习惯,但是便于现成的XML编辑器与本体交互。
<EquivalentClasses><Class abbreviatedIRI=":Person"/><ObjectUnionOf><Class IRI="#Man"/><Class IRI="#Woman"/></ObjectUnionOf>
</EquivalentClasses>
  • 曼彻斯特语法:贴近于人类阅读,最常用的本体编辑器在用户界面中使用的语法。
Class: PersonEquivalentTo: Man or Woman

本体文档:(使用Turtle语法)OWL2本体文档最少包含下面几个命名空间:

@prefix owl: <http://www.w3g.org/2002/07/owl#>.
@prefix rdf: <http://www.w3g.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3g.org/2000/01/rdf-schema#>.
@prefix xsd: <http://www.w3g.org/2001/XMLSchema#>.  

只有一个断言会影响本体的逻辑含义:owl:imports指向其他本体。命名空间用来消歧,而被导入的本体提供了可以被使用的定义。

属性类型:在RDF的基础上,OWL还提供了额外的类型。

  • 对象属性:将个体与个体关联,:rents、:livesIn
:rents  rdf:type    owl :ObjectProperty;rdf:domain      :Person;rdf:range       :Apartment.
  • 数据类型属性:将个体与数据类型文字值关联,:name、:age
:age    rdf:type            owl:DatatypeProperty;rdf:range           xsd:nonNegativeInteger;rdfs:subPropertyOf  rdf:label
  • 标注属性:不携带OWL2 DL直接语义含义的属性。通常标注属性拥有文字值,但也可以关联非文字资源。
:label  rdf :type    owl:AnnotationProperty
:Apartment  :label   "Apartment"@en,"Appartement"@nl.
  • 顶层和底层属性:owl:topObjectProperty是顶层属性,owl:bottomObjectProperty不关联任何个体,owl:topDataProperty关联任何可能的文字值,owl:bottomDataProperty不关联任何个体到任何值。

  • 传递属性:传递属性是复合属性,可以通过多步被声明。

:isPartOf   rdf:type    owl:ObjectProperty;rdf:type    owl:TransitiveProperty.
  • 对称和非对称属性:与自身的逆等价的是对称属性,比如:isAdjacentTo;反之是非对称属性。
  • 函数型和反函数型属性:属性只对应一个相关个体的是函数型属性,如:hasNumberOfRooms;反之如:hasRoom是反函数型属性。
  • 自反和反自反属性:自反性意味着个体通过该属性关联到自身。

属性公理:根据属性与类及其他属性如何关联来指定属性的额外特性。包括定义域和值域,逆属性,等价属性,不相交属性,属性链等等。

  • 属性链:指定关联各种个体的属性的图的捷径
    在这里插入图片描述

类公理:类通过断言某个资源的类型时owl:Class来定义。owl:Thing是最一般的类,每个可能的OWL2个体都是该类成员。owl:Nothing类是空类,没有成员。

  • 子类关系:rdfs:subClassOf
  • 类等价:owl:EquivalentClass
  • 枚举:owl:oneOf
  • 不相交类:owl:disjointWith
  • 并集:owl:unionOf;不相交并集:owl:disjointUnionWith
  • 交集:owl:intersectionOf

属性上的类公理:指定额外的类公理来约束个体的集合,类限制公理通过关联到一个特别类型的匿名类(在Turtle中,一个owl:Restriction)被连接到一个owl:Class,它将满足限制的个体聚在一起。

  • 全称限制:owl:allValuesFrom
  • 存在限制:owl:someValuesFrom
  • 充分必要条件:owl:equivalentClass
  • 基数限制:owl:cardinality
  • 数据类型:owl:onDataType
  • 数据值域限制:owl:withRestrictions
  • 自限制:ex
  • 键:ex:Dwelling

个体事实:通过类公理,可以从实体的知识来推导其额外信息,关于个体的声明称为断言。

  • 类和属性断言:类似于RDF中的声明方式
  • 同一性断言:显示地声明两个个体是同一个实体,owl:sameAs;相反不同的有owl:differentFrom
  • 负断言:显式排除不成立的事物,owl:NegativePropertyAssertion

五、OWL2 概要

OWL2 规范包括一组称为概要的内容,它们中的一些是OWL2 DL规范中的著名的子集,而另一些更具有表达能力,但是不含OWL2 Full的完整语义。这些概要包括:

  • 通过语法限制。一个概要语法的语义由OWL2 DL提供。
  • 通过逻辑定义,使其能够在多项式时间内处理一些有趣的推理服务。

OWL2中定义的概要及其典型应用领域:

  • OWL2 EL:EL概要是EL描述逻辑的扩展。主要优势在于可以用多项式时间推理拥有大量类公理的本体,适用于实例较多的情况,如医学领域。
  • OWL2 QL:QL为类公理的推理而优化,当处理拥有相对不复杂的类定义但包含大量个体断言的本体时则相对低效。 OWL2 QL概要被开发用于高效低处理对这些本体的查询应答,适用于概念多的情况。
    OWL2 RL:RL概要基于称为描述逻辑编程的语言,使得描述逻辑和规则能够交互:它是使用规则能够实现的OWL2 DL的最大语法部分。因为规则可以高效地并行执行,允许实现最大规模推理。

六、实验 OWL的构造

采用之前构造RDF文件类似的方式,添加一些OWL2的属性,可以构造出一个OWL的文件。同样使用的是rdflib库。

  类似的读取json文件,并根据其结构分析数据。通过rdflib构造Graph模型,并将json数据写入到模型中,最后用.ttl格式的文件存储,最终的输出方式为Turtle格式的内容。

首先构造自定义的命名空间,并通过命名空间构造subject。

BASE = rdflib.Namespace("http://cnschema.org/")
mygraph = rdflib.Graph()subdata = data["@graph"]
for item in subdata:s = rdflib.URIRef(BASE[item['name'].replace(' ', '-').replace('\\', '')])mygraph.add((s, rdflib.RDF.type, rdflib.OWL.Class))for key in item:···

根据不同的predicate,采用不同的构造方法:

for key in item:try:txt = item[key]if key == '@type':p = rdflib.RDFS.subClassOffor object in txt:o = rdflib.URIRef(BASE[object])gg.add((s, p, o))elif key == 'address':p = rdflib.RDF.abouto = rdflib.URIRef(BASE[txt["addressCountry"].replace(' ', '-')])gg.add((s, p, o))elif key == 'geo':p = rdflib.OWL.unionOfo = rdflib.Literal('LAT: ' + txt["latitude"] + ', LON: ' + txt["longitude"])gg.add((s, p, o))

构造完成后,以Turtle格式输出:

@prefix base: <http://cnschema.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .base:7-Novembre a owl:Class ;rdf:about base:Tunisia ;rdfs:subClassOf base:Airport,base:CivicStructure,base:Place,base:Thing ;owl:unionOf "LAT: 36.978333, LON: 8.876389" .base:A-511 a owl:Class ;rdf:about base:South-Korea ;rdfs:subClassOf base:Airport,base:CivicStructure,base:Place,base:Thing ;owl:unionOf "LAT: 36.962214, LON: 127.031072" .

七、总结

  • OWL2扩展了RDF和RDF模式,引入了一组表达能力更强的语言特征,例如基数约束、类的等价性、交集和并集。
  • 通过OWL与逻辑之间的对应关系提供了形式语义和推理支持。
  • OWL2分为两类。OWL2 DL在OWL2和RDFS语言元素的组合上施加某些限制来保留可判定性;OWL2 Full则是RDF模式的完全兼容扩展,拥有所有的OWL2语言特征,但是它被证明是不可判定的。
  • 3个概要:OWL2 EL、OWL2 QL和OWL2 RL,是满足计算性质要求的语法子集。特别地,OWL2 RL可以使用基于规则的技术实现,并且已经成为在语义网上表示推理的事实标准。
  • OWL2有4种标准:RDF/XML、曼彻斯特语法、OWL/XML和函数式语法。

http://chatgpt.dhexx.cn/article/T0Yb53wG.shtml

相关文章

本体概述

目录1.定义2.本体的目标和作用3.本体构成要素4.领域本体与上层本体5.本体语言6. 构造Ontology 的规则 7.本体在信息检索的应用 1.定义 – 1991/Neches 等&#xff1a;给出构成相关领域词汇的基本术语和关系&#xff0c;以及利用这些术语和关系构成的规定这些词汇外延的规则…

本体 摘抄笔记

一、本体的一些介绍 &#xff08;来源&#xff1a;https://blog.csdn.net/shendeguang/article/details/8241164&#xff09; 1. 本体论语义学的特点&#xff1a; 本体论语义学与其他人工智能理论、自然语言加工系统相比有自己的一些鲜明特点。 其一&#xff0c;它强调对意义…

图构建:领域本体设计原则与动态本体

图构建&#xff1a;领域本体设计原则与动态本体 前文《思考总结&#xff1a;领域知识图谱平台构建与业务应用》中提到&#xff1a;“本体设计是图应用中的重中之重&#xff0c;一切的图展示、图计算、图分析、图挖掘、图模式匹配…的基础在图构建&#xff0c;而图构建的核心是…

常用本体建模工具

常用本体建模工具&#xff1a; Apollo、OntoStudio、TopBraid Composer、Semantic Turkey、Knoodl、Chimaera、OliEd、WebODE、Kmgen和DOME Protg Protg[1]是一款由斯坦福大学编写并维护的开源本体建模和编辑工具&#xff0c;其支持Web版本和PC版本&#xff0c;使用OWL语言…

本体(Ontology)

我是在撰写毕业论文中接触到知识表示方面的内容&#xff0c;有时需要理论与实践相结合&#xff0c;关于这方面的理论知识学习&#xff0c;除了网页资料、书籍、另外推荐一个网站&#xff1a;熊猫学术(https://sc.panda321.com/)&#xff0c;可以查阅很多相关的学术论文&#xf…

知识图谱初步学习(一)——本体+Protege新手学习

文章目录 前言&#xff08;本体详解&#xff09;1.本体概念2.本体分类3.本体组成4.本体构建方法5.本体构建的原则6.本体应用 一、protege简介二、软件使用步骤1.安装2.使用3.案例 三、问题解决方案汇总 前言&#xff08;本体详解&#xff09; 在开始学习知识图谱的过程中&…

本体调研

1.1本体概念 本体是用于描述一个领域的术语集合&#xff0c;其组织结构是层次结构化的&#xff0c;可以作为一个知识库的骨架和基础。 本体不等同于个体&#xff0c;它是相应领域内公认的概念集合。 1.2 本体分类 依照领域依赖程度: &#xff08;1&#xff09;顶层本体&…

知识图谱初步学习(零)——本体是什么

知识图谱初步学习&#xff08;零&#xff09;——本体是什么 文章目录 知识图谱初步学习&#xff08;零&#xff09;——本体是什么前言一、 哲学层面理解二、 引申到语义层面理解三、学术层面四、其他层面- 术语- 语义网 五、本体与类、本源、实体、符号的区别六、用语义三角形…

本体(Ontology)概述

认识本体 本体&#xff08;Ontology&#xff09;的概念源自于哲学领域&#xff0c;在哲学中的定义为“对世界上客观事物的系统描述&#xff0c;即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域&#xff0c;本体可以在语义层次上描述知识&#xff0c;可以看…

区块链 Vs. 互联网,创新在哪里?

本文转载自共识未来公众号 引言&#xff1a;最近关于区块链革命的提法少了很多&#xff0c;我们很少再听到“区块链即将颠覆互联网”的提法&#xff0c;这似乎也寓意着区块链技术&#xff08;加密技术&#xff09;正在进入一个理性发展的阶段&#xff0c;如果按照Gartner的技术…

js提交form表单

【背景】 前段时间将边用边学javascript.pdf书看完了,其中之前最不熟悉的也是这次印象最深刻的就是提交form表单,所以在这里总结一下js提交form表单,以及表单中对应的一些扩展知识O(∩_∩)O~ 【概念】 表单在网页中主要负责数据采集功能;一个表单偶三个基本组成部分&am…

JavaScript笔记-点击button提交form表单

功能如下&#xff1a; 点击购买后&#xff0c;点击确定。 确定调用了一个js函数&#xff0c;提交form表达给后端 代码如下&#xff1a; <div class"modal-footer"><button type"button" class"btn text-white border bg-dark" data-b…

yeild函数

1、把函数变成一个生成器 2、起到延迟的作用&#xff0c;在需要的时候产生结果&#xff0c;节省资源 3、声明一个序列不同的是生成器在不使用的情况下&#xff0c;是不占内存的 def getNum(n):i 0while i < n:print(i)i 1getNum(5)def getNum(n):i 0while i < n:retu…

Python关键字------yeild

文章目录 yeild例子 在阅读python程序源码的时候&#xff0c;发现yeild关键字&#xff0c;产生了疑惑&#xff0c;看了很多博客感觉没有能够讲清楚的。 yeild yeild其实可以理解成return&#xff0c;不够有点区别的是return是不会执行下面的语句&#xff0c;而yeild在满足一定…

join(),sleep() 和 yeild() 方法的区别

目录 1、join() 方法&#xff1a;释放锁 2、sleep() 方法&#xff1a;不释放锁 3、yeild() 方法&#xff1a;不释放锁 1、join() 方法&#xff1a;释放锁 使用场景&#xff1a; 等待调用 join() 方法的线程结束之后&#xff0c;程序再继续执行&#xff0c;一般用于等待异步…

C#中关于Task.Yeild()的探究

在与同事讨论async/await内部实现的时候&#xff0c;突然想到Task.Yeild()这个函数&#xff0c;为什么呢&#xff0c;了解一点C#async/await内部机制的都知道&#xff0c;在await一个异步任务&#xff08;函数&#xff09;的时候&#xff0c;它会先判断该Task是否已经完成&…

python yeild next使用注意事项

关于得带的基本使用方法&#xff0c;可以往上查一下。这里主要记录下在编码中可能遇到的报错&#xff0c;和处理方式。 import timedef func3():for i in range(5):yield iwhile True:a next(func3())print(a)time.sleep(1) 如果使用上面这种取值方式&#xff0c;你会发现会…

Java多线程礼让yeild()和插队join()方法案例

一. yeild()和join()方法 1.yeild():线程礼让&#xff0c;让当前正在执行的线程可能暂停&#xff0c;但不阻塞 2.yeild():当前正在执行的线程可能暂停&#xff0c;也可能不暂停。 3.yeild():是静态方法&#xff0c;而join()是非静态方法 4.join():能…

gitlab artifacts too large

gitlab在打包artifacts遇到&#xff1a; Uploading artifacts as “archive” to coordinator… too large archive 413 error 网上看了很多方案&#xff0c;一般都是说在admin账户的setting下找到CI/CD&#xff0c;把Maximum artifacts size (MB)改大点 当然这是其中一个点哈…

IDEA 解决 artifacts not found 问题

目录 1. 问题2. 解答方法一方法二 1. 问题 部署 Tomcat 时&#xff0c;选择 Edit Configuration 无 Artifact 选项。 2. 解答 方法一 选择 Fix 直接修复即可。 方法二 打开 Project Structure&#xff1b;选择 Aritfacts 选项&#xff1b;点击 号&#xff0c;选择 Web …